@owlmeans/viable-common 0.0.43 → 0.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/agent-presentation/SKILL.md +4 -4
- package/agent-meta/skills/viable-common/SKILL.md +59 -36
- package/build/agent/consts.d.ts +58 -0
- package/build/agent/consts.d.ts.map +1 -0
- package/build/agent/consts.js +63 -0
- package/build/agent/consts.js.map +1 -0
- package/build/agent/consts.local.d.ts +21 -0
- package/build/agent/consts.local.d.ts.map +1 -0
- package/build/agent/consts.local.js +44 -0
- package/build/agent/consts.local.js.map +1 -0
- package/build/agent/index.d.ts +2 -0
- package/build/agent/index.d.ts.map +1 -1
- package/build/agent/index.js +1 -0
- package/build/agent/index.js.map +1 -1
- package/build/agent/presentation/types.d.ts +21 -0
- package/build/agent/presentation/types.d.ts.map +1 -0
- package/build/agent/presentation/types.js.map +1 -0
- package/build/agent/presentation.d.ts +12 -94
- package/build/agent/presentation.d.ts.map +1 -1
- package/build/agent/presentation.js +218 -299
- package/build/agent/presentation.js.map +1 -1
- package/build/agent/types.d.ts +30 -0
- package/build/agent/types.d.ts.map +1 -1
- package/build/agent/types.local.d.ts +4 -0
- package/build/agent/types.local.d.ts.map +1 -0
- package/build/agent/types.local.js +2 -0
- package/build/agent/types.local.js.map +1 -0
- package/build/areas/consts.d.ts +5 -0
- package/build/areas/consts.d.ts.map +1 -1
- package/build/areas/consts.js +4 -0
- package/build/areas/consts.js.map +1 -1
- package/build/areas/index.d.ts +1 -0
- package/build/areas/index.d.ts.map +1 -1
- package/build/areas/index.js.map +1 -1
- package/build/areas/tenancy/types.d.ts +23 -0
- package/build/areas/tenancy/types.d.ts.map +1 -0
- package/build/areas/tenancy/types.js +2 -0
- package/build/areas/tenancy/types.js.map +1 -0
- package/build/areas/tenancy.d.ts +6 -50
- package/build/areas/tenancy.d.ts.map +1 -1
- package/build/areas/tenancy.js +21 -31
- package/build/areas/tenancy.js.map +1 -1
- package/build/areas/types.d.ts +32 -0
- package/build/areas/types.d.ts.map +1 -1
- package/build/ba/connecting/types.d.ts +45 -0
- package/build/ba/connecting/types.d.ts.map +1 -0
- package/build/ba/connecting/types.js +2 -0
- package/build/ba/connecting/types.js.map +1 -0
- package/build/ba/connecting.d.ts +4 -0
- package/build/ba/connecting.d.ts.map +1 -0
- package/build/ba/connecting.js +47 -0
- package/build/ba/connecting.js.map +1 -0
- package/build/ba/helpers.d.ts +4 -39
- package/build/ba/helpers.d.ts.map +1 -1
- package/build/ba/helpers.js +5 -79
- package/build/ba/helpers.js.map +1 -1
- package/build/ba/index.d.ts +2 -0
- package/build/ba/index.d.ts.map +1 -1
- package/build/ba/index.js +1 -0
- package/build/ba/index.js.map +1 -1
- package/build/ba/types.d.ts +1 -1
- package/build/ba/types.d.ts.map +1 -1
- package/build/blueprint/consts.d.ts +41 -0
- package/build/blueprint/consts.d.ts.map +1 -1
- package/build/blueprint/consts.js +51 -0
- package/build/blueprint/consts.js.map +1 -1
- package/build/blueprint/consts.local.d.ts +2 -0
- package/build/blueprint/consts.local.d.ts.map +1 -0
- package/build/blueprint/consts.local.js +3 -0
- package/build/blueprint/consts.local.js.map +1 -0
- package/build/blueprint/index.d.ts +1 -0
- package/build/blueprint/index.d.ts.map +1 -1
- package/build/blueprint/index.js +1 -0
- package/build/blueprint/index.js.map +1 -1
- package/build/blueprint/types.d.ts +3 -52
- package/build/blueprint/types.d.ts.map +1 -1
- package/build/blueprint/types.js +1 -65
- package/build/blueprint/types.js.map +1 -1
- package/build/blueprint/utils.d.ts +11 -0
- package/build/blueprint/utils.d.ts.map +1 -0
- package/build/blueprint/utils.js +16 -0
- package/build/blueprint/utils.js.map +1 -0
- package/build/branding.d.ts +0 -8
- package/build/branding.d.ts.map +1 -1
- package/build/branding.js +0 -16
- package/build/branding.js.map +1 -1
- package/build/connect/branding/types.d.ts +28 -0
- package/build/connect/branding/types.d.ts.map +1 -0
- package/build/connect/branding/types.js +2 -0
- package/build/connect/branding/types.js.map +1 -0
- package/build/connect/consts.d.ts +2 -10
- package/build/connect/consts.d.ts.map +1 -1
- package/build/connect/consts.js +2 -23
- package/build/connect/consts.js.map +1 -1
- package/build/connect/conversion/types.d.ts +93 -0
- package/build/connect/conversion/types.d.ts.map +1 -0
- package/build/connect/conversion/types.js +2 -0
- package/build/connect/conversion/types.js.map +1 -0
- package/build/connect/entrypoints/types.d.ts +30 -0
- package/build/connect/entrypoints/types.d.ts.map +1 -0
- package/build/connect/entrypoints/types.js +2 -0
- package/build/connect/entrypoints/types.js.map +1 -0
- package/build/connect/entrypoints.d.ts +61 -92
- package/build/connect/entrypoints.d.ts.map +1 -1
- package/build/connect/entrypoints.js +5 -2
- package/build/connect/entrypoints.js.map +1 -1
- package/build/connect/errors/types.d.ts +20 -0
- package/build/connect/errors/types.d.ts.map +1 -0
- package/build/connect/errors/types.js +2 -0
- package/build/connect/errors/types.js.map +1 -0
- package/build/connect/errors.d.ts +32 -0
- package/build/connect/errors.d.ts.map +1 -1
- package/build/connect/errors.js +65 -0
- package/build/connect/errors.js.map +1 -1
- package/build/connect/index.d.ts +13 -2
- package/build/connect/index.d.ts.map +1 -1
- package/build/connect/index.js +1 -0
- package/build/connect/index.js.map +1 -1
- package/build/connect/kit/types.d.ts +52 -0
- package/build/connect/kit/types.d.ts.map +1 -0
- package/build/connect/kit/types.js +2 -0
- package/build/connect/{types.js.map → kit/types.js.map} +1 -1
- package/build/connect/model-tier/types.d.ts +16 -0
- package/build/connect/model-tier/types.d.ts.map +1 -0
- package/build/connect/model-tier/types.js +2 -0
- package/build/connect/model-tier/types.js.map +1 -0
- package/build/connect/model-tier.d.ts +4 -0
- package/build/connect/model-tier.d.ts.map +1 -0
- package/build/connect/model-tier.js +21 -0
- package/build/connect/model-tier.js.map +1 -0
- package/build/connect/{ops.d.ts → ops/types.d.ts} +13 -4
- package/build/connect/ops/types.d.ts.map +1 -0
- package/build/connect/ops/types.js +2 -0
- package/build/connect/ops/types.js.map +1 -0
- package/build/connect/pipeline/types.d.ts +39 -0
- package/build/connect/pipeline/types.d.ts.map +1 -0
- package/build/connect/pipeline/types.js +2 -0
- package/build/connect/pipeline/types.js.map +1 -0
- package/build/connect/project/types.d.ts +127 -0
- package/build/connect/project/types.d.ts.map +1 -0
- package/build/connect/project/types.js +2 -0
- package/build/connect/project/types.js.map +1 -0
- package/build/connect/references/types.d.ts +157 -0
- package/build/connect/references/types.d.ts.map +1 -0
- package/build/connect/references/types.js +2 -0
- package/build/connect/references/types.js.map +1 -0
- package/build/connect/references/types.local.d.ts +5 -0
- package/build/connect/references/types.local.d.ts.map +1 -0
- package/build/connect/references/types.local.js +2 -0
- package/build/connect/references/types.local.js.map +1 -0
- package/build/connect/references.d.ts +1 -153
- package/build/connect/references.d.ts.map +1 -1
- package/build/connect/references.js.map +1 -1
- package/build/connect/schemas.d.ts +9 -5
- package/build/connect/schemas.d.ts.map +1 -1
- package/build/connect/schemas.js +10 -3
- package/build/connect/schemas.js.map +1 -1
- package/build/connect/session/types.d.ts +73 -0
- package/build/connect/session/types.d.ts.map +1 -0
- package/build/connect/session/types.js +2 -0
- package/build/connect/session/types.js.map +1 -0
- package/build/connect/settings/types.d.ts +48 -0
- package/build/connect/settings/types.d.ts.map +1 -0
- package/build/connect/settings/types.js +2 -0
- package/build/connect/settings/types.js.map +1 -0
- package/build/consts.d.ts +8 -0
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +16 -0
- package/build/consts.js.map +1 -1
- package/build/convert/analysis/types.d.ts +93 -0
- package/build/convert/analysis/types.d.ts.map +1 -0
- package/build/convert/analysis/types.js +2 -0
- package/build/convert/analysis/types.js.map +1 -0
- package/build/convert/census/consts.local.d.ts +55 -0
- package/build/convert/census/consts.local.d.ts.map +1 -0
- package/build/convert/census/consts.local.js +104 -0
- package/build/convert/census/consts.local.js.map +1 -0
- package/build/convert/census/types.d.ts +176 -0
- package/build/convert/census/types.d.ts.map +1 -0
- package/build/convert/census/types.js +2 -0
- package/build/convert/census/types.js.map +1 -0
- package/build/convert/census.d.ts +4 -0
- package/build/convert/census.d.ts.map +1 -0
- package/build/convert/census.js +83 -0
- package/build/convert/census.js.map +1 -0
- package/build/convert/consts.d.ts +4 -12
- package/build/convert/consts.d.ts.map +1 -1
- package/build/convert/consts.js +4 -3
- package/build/convert/consts.js.map +1 -1
- package/build/convert/detection/types.d.ts +67 -0
- package/build/convert/detection/types.d.ts.map +1 -0
- package/build/convert/detection/types.js +2 -0
- package/build/convert/detection/types.js.map +1 -0
- package/build/convert/docs/types.d.ts +129 -0
- package/build/convert/docs/types.d.ts.map +1 -0
- package/build/convert/docs/types.js +2 -0
- package/build/convert/docs/types.js.map +1 -0
- package/build/convert/docs.d.ts +4 -0
- package/build/convert/docs.d.ts.map +1 -0
- package/build/convert/docs.js +9 -0
- package/build/convert/docs.js.map +1 -0
- package/build/convert/estimate/types.d.ts +77 -0
- package/build/convert/estimate/types.d.ts.map +1 -0
- package/build/convert/estimate/types.js +2 -0
- package/build/convert/estimate/types.js.map +1 -0
- package/build/convert/estimate.d.ts +11 -0
- package/build/convert/estimate.d.ts.map +1 -0
- package/build/convert/estimate.js +18 -0
- package/build/convert/estimate.js.map +1 -0
- package/build/convert/helpers.d.ts +14 -78
- package/build/convert/helpers.d.ts.map +1 -1
- package/build/convert/helpers.js +27 -300
- package/build/convert/helpers.js.map +1 -1
- package/build/convert/index.d.ts +15 -0
- package/build/convert/index.d.ts.map +1 -1
- package/build/convert/index.js +6 -0
- package/build/convert/index.js.map +1 -1
- package/build/convert/origin/types.d.ts +41 -0
- package/build/convert/origin/types.d.ts.map +1 -0
- package/build/convert/origin/types.js +2 -0
- package/build/convert/origin/types.js.map +1 -0
- package/build/convert/origin.d.ts +4 -0
- package/build/convert/origin.d.ts.map +1 -0
- package/build/convert/origin.js +25 -0
- package/build/convert/origin.js.map +1 -0
- package/build/convert/record/types.d.ts +98 -0
- package/build/convert/record/types.d.ts.map +1 -0
- package/build/convert/record/types.js +2 -0
- package/build/convert/record/types.js.map +1 -0
- package/build/convert/schemas.d.ts +7 -6
- package/build/convert/schemas.d.ts.map +1 -1
- package/build/convert/schemas.js +1 -5
- package/build/convert/schemas.js.map +1 -1
- package/build/convert/stage/types.d.ts +27 -0
- package/build/convert/stage/types.d.ts.map +1 -0
- package/build/convert/stage/types.js +2 -0
- package/build/convert/stage/types.js.map +1 -0
- package/build/convert/stage.d.ts +4 -0
- package/build/convert/stage.d.ts.map +1 -0
- package/build/convert/stage.js +25 -0
- package/build/convert/stage.js.map +1 -0
- package/build/convert/taxonomy/types.d.ts +71 -0
- package/build/convert/taxonomy/types.d.ts.map +1 -0
- package/build/convert/taxonomy/types.js +2 -0
- package/build/convert/taxonomy/types.js.map +1 -0
- package/build/convert/types.d.ts +1 -648
- package/build/convert/types.d.ts.map +1 -1
- package/build/convert/utils.d.ts +5 -0
- package/build/convert/utils.d.ts.map +1 -0
- package/build/convert/utils.js +6 -0
- package/build/convert/utils.js.map +1 -0
- package/build/design/consts.d.ts +37 -0
- package/build/design/consts.d.ts.map +1 -1
- package/build/design/consts.js +44 -8
- package/build/design/consts.js.map +1 -1
- package/build/design/helpers.d.ts +9 -49
- package/build/design/helpers.d.ts.map +1 -1
- package/build/design/helpers.js +17 -224
- package/build/design/helpers.js.map +1 -1
- package/build/design/index.d.ts +3 -0
- package/build/design/index.d.ts.map +1 -1
- package/build/design/index.js +1 -0
- package/build/design/index.js.map +1 -1
- package/build/design/runtime/types.d.ts +16 -0
- package/build/design/runtime/types.d.ts.map +1 -0
- package/build/design/runtime/types.js +2 -0
- package/build/design/runtime/types.js.map +1 -0
- package/build/design/runtime.d.ts +8 -105
- package/build/design/runtime.d.ts.map +1 -1
- package/build/design/runtime.js +13 -48
- package/build/design/runtime.js.map +1 -1
- package/build/design/schemas.d.ts +1 -9
- package/build/design/schemas.d.ts.map +1 -1
- package/build/design/schemas.js +1 -1
- package/build/design/schemas.js.map +1 -1
- package/build/design/story/types.d.ts +67 -0
- package/build/design/story/types.d.ts.map +1 -0
- package/build/design/story/types.js +2 -0
- package/build/design/story/types.js.map +1 -0
- package/build/design/story.d.ts +4 -0
- package/build/design/story.d.ts.map +1 -0
- package/build/design/story.js +184 -0
- package/build/design/story.js.map +1 -0
- package/build/design/types.d.ts +75 -1
- package/build/design/types.d.ts.map +1 -1
- package/build/dev/schemas.d.ts.map +1 -1
- package/build/dev/schemas.js.map +1 -1
- package/build/dev/types.local.d.ts +5 -0
- package/build/dev/types.local.d.ts.map +1 -0
- package/build/dev/types.local.js +2 -0
- package/build/dev/types.local.js.map +1 -0
- package/build/integrity/consts.d.ts +0 -117
- package/build/integrity/consts.d.ts.map +1 -1
- package/build/integrity/consts.js +0 -281
- package/build/integrity/consts.js.map +1 -1
- package/build/integrity/consts.local.d.ts +5 -0
- package/build/integrity/consts.local.d.ts.map +1 -0
- package/build/integrity/consts.local.js +5 -0
- package/build/integrity/consts.local.js.map +1 -0
- package/build/integrity/index.d.ts +5 -0
- package/build/integrity/index.d.ts.map +1 -1
- package/build/integrity/index.js +3 -0
- package/build/integrity/index.js.map +1 -1
- package/build/integrity/layout/consts.d.ts +59 -0
- package/build/integrity/layout/consts.d.ts.map +1 -0
- package/build/integrity/layout/consts.js +66 -0
- package/build/integrity/layout/consts.js.map +1 -0
- package/build/integrity/layout/consts.local.d.ts +18 -0
- package/build/integrity/layout/consts.local.d.ts.map +1 -0
- package/build/integrity/layout/consts.local.js +176 -0
- package/build/integrity/layout/consts.local.js.map +1 -0
- package/build/integrity/layout/types.d.ts +35 -0
- package/build/integrity/layout/types.d.ts.map +1 -0
- package/build/integrity/layout/types.js +2 -0
- package/build/integrity/layout/types.js.map +1 -0
- package/build/integrity/layout.d.ts +4 -0
- package/build/integrity/layout.d.ts.map +1 -0
- package/build/integrity/layout.js +25 -0
- package/build/integrity/layout.js.map +1 -0
- package/build/integrity/types.d.ts +36 -2
- package/build/integrity/types.d.ts.map +1 -1
- package/build/integrity/utils.d.ts +13 -0
- package/build/integrity/utils.d.ts.map +1 -0
- package/build/integrity/utils.js +12 -0
- package/build/integrity/utils.js.map +1 -0
- package/build/integrity/verify/types.d.ts +26 -0
- package/build/integrity/verify/types.d.ts.map +1 -0
- package/build/integrity/verify/types.js +2 -0
- package/build/integrity/verify/types.js.map +1 -0
- package/build/integrity/verify.d.ts +5 -19
- package/build/integrity/verify.d.ts.map +1 -1
- package/build/integrity/verify.js +165 -175
- package/build/integrity/verify.js.map +1 -1
- package/build/intent/consts.d.ts +16 -0
- package/build/intent/consts.d.ts.map +1 -1
- package/build/intent/consts.js +63 -0
- package/build/intent/consts.js.map +1 -1
- package/build/intent/entrypoints.d.ts +2 -12
- package/build/intent/entrypoints.d.ts.map +1 -1
- package/build/intent/entrypoints.js.map +1 -1
- package/build/intent/index.d.ts +0 -1
- package/build/intent/index.d.ts.map +1 -1
- package/build/intent/index.js +0 -1
- package/build/intent/index.js.map +1 -1
- package/build/intent/types.d.ts +13 -0
- package/build/intent/types.d.ts.map +1 -1
- package/build/metadata/consts.d.ts +33 -0
- package/build/metadata/consts.d.ts.map +1 -1
- package/build/metadata/consts.js +37 -0
- package/build/metadata/consts.js.map +1 -1
- package/build/metadata/types.d.ts +1 -33
- package/build/metadata/types.d.ts.map +1 -1
- package/build/metadata/types.js +1 -38
- package/build/metadata/types.js.map +1 -1
- package/build/moderation/index.d.ts +2 -0
- package/build/moderation/index.d.ts.map +1 -1
- package/build/moderation/index.js +1 -0
- package/build/moderation/index.js.map +1 -1
- package/build/moderation/utils.d.ts +3 -15
- package/build/moderation/utils.d.ts.map +1 -1
- package/build/moderation/utils.js +5 -30
- package/build/moderation/utils.js.map +1 -1
- package/build/moderation/verdict/types.d.ts +24 -0
- package/build/moderation/verdict/types.d.ts.map +1 -0
- package/build/moderation/verdict/types.js +2 -0
- package/build/moderation/verdict/types.js.map +1 -0
- package/build/moderation/verdict.d.ts +4 -0
- package/build/moderation/verdict.d.ts.map +1 -0
- package/build/moderation/verdict.js +21 -0
- package/build/moderation/verdict.js.map +1 -0
- package/build/planning/card/types.d.ts +42 -0
- package/build/planning/card/types.d.ts.map +1 -0
- package/build/planning/card/types.js +2 -0
- package/build/planning/card/types.js.map +1 -0
- package/build/planning/card.d.ts +4 -0
- package/build/planning/card.d.ts.map +1 -0
- package/build/planning/card.js +51 -0
- package/build/planning/card.js.map +1 -0
- package/build/planning/consts.d.ts +13 -1
- package/build/planning/consts.d.ts.map +1 -1
- package/build/planning/consts.js +13 -0
- package/build/planning/consts.js.map +1 -1
- package/build/planning/helpers.d.ts +11 -37
- package/build/planning/helpers.d.ts.map +1 -1
- package/build/planning/helpers.js +24 -103
- package/build/planning/helpers.js.map +1 -1
- package/build/planning/index.d.ts +5 -1
- package/build/planning/index.d.ts.map +1 -1
- package/build/planning/index.js +2 -1
- package/build/planning/index.js.map +1 -1
- package/build/planning/landing/types.d.ts +16 -0
- package/build/planning/landing/types.d.ts.map +1 -0
- package/build/planning/landing/types.js +2 -0
- package/build/planning/landing/types.js.map +1 -0
- package/build/planning/landing.d.ts +5 -22
- package/build/planning/landing.d.ts.map +1 -1
- package/build/planning/landing.js +21 -35
- package/build/planning/landing.js.map +1 -1
- package/build/planning/schemas.d.ts +33 -0
- package/build/planning/schemas.d.ts.map +1 -1
- package/build/planning/schemas.js +173 -4
- package/build/planning/schemas.js.map +1 -1
- package/build/planning/spec/types.d.ts +22 -0
- package/build/planning/spec/types.d.ts.map +1 -0
- package/build/planning/spec/types.js +2 -0
- package/build/planning/spec/types.js.map +1 -0
- package/build/planning/spec.d.ts +4 -0
- package/build/planning/spec.d.ts.map +1 -0
- package/build/planning/spec.js +30 -0
- package/build/planning/spec.js.map +1 -0
- package/build/planning/types.d.ts +6 -5
- package/build/planning/types.d.ts.map +1 -1
- package/build/preview/consts.d.ts +3 -1
- package/build/preview/consts.d.ts.map +1 -1
- package/build/preview/consts.js +2 -0
- package/build/preview/consts.js.map +1 -1
- package/build/preview/types.d.ts +17 -2
- package/build/preview/types.d.ts.map +1 -1
- package/build/scaffold/consts.d.ts +40 -1
- package/build/scaffold/consts.d.ts.map +1 -1
- package/build/scaffold/consts.js +52 -0
- package/build/scaffold/consts.js.map +1 -1
- package/build/scaffold/helpers.d.ts +5 -30
- package/build/scaffold/helpers.d.ts.map +1 -1
- package/build/scaffold/helpers.js +9 -53
- package/build/scaffold/helpers.js.map +1 -1
- package/build/scaffold/index.d.ts +4 -0
- package/build/scaffold/index.d.ts.map +1 -1
- package/build/scaffold/index.js +2 -0
- package/build/scaffold/index.js.map +1 -1
- package/build/scaffold/landing/types.d.ts +48 -0
- package/build/scaffold/landing/types.d.ts.map +1 -0
- package/build/scaffold/landing/types.js +2 -0
- package/build/scaffold/landing/types.js.map +1 -0
- package/build/scaffold/landing.d.ts +4 -0
- package/build/scaffold/landing.d.ts.map +1 -0
- package/build/scaffold/landing.js +95 -0
- package/build/scaffold/landing.js.map +1 -0
- package/build/scaffold/schemas.d.ts +3 -2
- package/build/scaffold/schemas.d.ts.map +1 -1
- package/build/scaffold/schemas.js +177 -7
- package/build/scaffold/schemas.js.map +1 -1
- package/build/scaffold/share/types.d.ts +35 -0
- package/build/scaffold/share/types.d.ts.map +1 -0
- package/build/scaffold/share/types.js +2 -0
- package/build/scaffold/share/types.js.map +1 -0
- package/build/scaffold/share.d.ts +4 -0
- package/build/scaffold/share.d.ts.map +1 -0
- package/build/scaffold/share.js +42 -0
- package/build/scaffold/share.js.map +1 -0
- package/build/scaffold/types.d.ts +114 -2
- package/build/scaffold/types.d.ts.map +1 -1
- package/build/skills/consts.d.ts +42 -0
- package/build/skills/consts.d.ts.map +1 -1
- package/build/skills/consts.js +43 -0
- package/build/skills/consts.js.map +1 -1
- package/build/skills/index.d.ts +0 -1
- package/build/skills/index.d.ts.map +1 -1
- package/build/skills/index.js +0 -1
- package/build/skills/index.js.map +1 -1
- package/build/slot/command/types.d.ts +21 -0
- package/build/slot/command/types.d.ts.map +1 -0
- package/build/slot/command/types.js +2 -0
- package/build/slot/command/types.js.map +1 -0
- package/build/slot/command.d.ts +4 -0
- package/build/slot/command.d.ts.map +1 -0
- package/build/slot/command.js +31 -0
- package/build/slot/command.js.map +1 -0
- package/build/slot/consts.d.ts +7 -13
- package/build/slot/consts.d.ts.map +1 -1
- package/build/slot/consts.js +10 -36
- package/build/slot/consts.js.map +1 -1
- package/build/slot/helpers.d.ts +3 -22
- package/build/slot/helpers.d.ts.map +1 -1
- package/build/slot/helpers.js +5 -26
- package/build/slot/helpers.js.map +1 -1
- package/build/slot/index.d.ts +6 -0
- package/build/slot/index.d.ts.map +1 -1
- package/build/slot/index.js +3 -0
- package/build/slot/index.js.map +1 -1
- package/build/slot/layout/types.d.ts +17 -0
- package/build/slot/layout/types.d.ts.map +1 -0
- package/build/slot/layout/types.js +2 -0
- package/build/slot/layout/types.js.map +1 -0
- package/build/slot/layout.d.ts +5 -66
- package/build/slot/layout.d.ts.map +1 -1
- package/build/slot/layout.js +13 -27
- package/build/slot/layout.js.map +1 -1
- package/build/slot/origin/types.d.ts +23 -0
- package/build/slot/origin/types.d.ts.map +1 -0
- package/build/slot/origin/types.js +2 -0
- package/build/slot/origin/types.js.map +1 -0
- package/build/slot/origin.d.ts +4 -0
- package/build/slot/origin.d.ts.map +1 -0
- package/build/slot/origin.js +15 -0
- package/build/slot/origin.js.map +1 -0
- package/build/slot/types.d.ts +55 -1
- package/build/slot/types.d.ts.map +1 -1
- package/build/slot/utils.d.ts +6 -0
- package/build/slot/utils.d.ts.map +1 -0
- package/build/slot/utils.js +6 -0
- package/build/slot/utils.js.map +1 -0
- package/build/topology/card/types.d.ts +21 -0
- package/build/topology/card/types.d.ts.map +1 -0
- package/build/topology/card/types.js +2 -0
- package/build/topology/card/types.js.map +1 -0
- package/build/topology/card.d.ts +7 -19
- package/build/topology/card.d.ts.map +1 -1
- package/build/topology/card.js +84 -89
- package/build/topology/card.js.map +1 -1
- package/build/topology/consts.local.d.ts +4 -0
- package/build/topology/consts.local.d.ts.map +1 -0
- package/build/topology/consts.local.js +4 -0
- package/build/topology/consts.local.js.map +1 -0
- package/build/topology/helpers.d.ts +7 -33
- package/build/topology/helpers.d.ts.map +1 -1
- package/build/topology/helpers.js +15 -111
- package/build/topology/helpers.js.map +1 -1
- package/build/topology/index.d.ts +3 -0
- package/build/topology/index.d.ts.map +1 -1
- package/build/topology/index.js +1 -0
- package/build/topology/index.js.map +1 -1
- package/build/topology/resolve/types.d.ts +47 -0
- package/build/topology/resolve/types.d.ts.map +1 -0
- package/build/topology/resolve/types.js +2 -0
- package/build/topology/resolve/types.js.map +1 -0
- package/build/topology/resolve.d.ts +4 -0
- package/build/topology/resolve.d.ts.map +1 -0
- package/build/topology/resolve.js +89 -0
- package/build/topology/resolve.js.map +1 -0
- package/build/topology/types.d.ts +5 -0
- package/build/topology/types.d.ts.map +1 -1
- package/package.json +13 -13
- package/src/agent/consts.local.ts +47 -0
- package/src/agent/consts.ts +61 -0
- package/src/agent/index.ts +2 -0
- package/src/agent/presentation/types.ts +21 -0
- package/src/agent/presentation.ts +200 -309
- package/src/agent/types.local.ts +3 -0
- package/src/agent/types.ts +40 -0
- package/src/areas/consts.ts +7 -0
- package/src/areas/index.ts +1 -0
- package/src/areas/tenancy/types.ts +23 -0
- package/src/areas/tenancy.ts +26 -61
- package/src/areas/types.ts +31 -0
- package/src/ba/connecting/types.ts +45 -0
- package/src/ba/connecting.ts +64 -0
- package/src/ba/helpers.ts +8 -92
- package/src/ba/index.ts +2 -0
- package/src/ba/types.ts +1 -1
- package/src/blueprint/consts.local.ts +3 -0
- package/src/blueprint/consts.ts +52 -0
- package/src/blueprint/index.ts +1 -0
- package/src/blueprint/types.ts +4 -74
- package/src/blueprint/utils.ts +20 -0
- package/src/branding.ts +0 -17
- package/src/connect/branding/types.ts +29 -0
- package/src/connect/consts.ts +3 -22
- package/src/connect/conversion/types.ts +96 -0
- package/src/connect/entrypoints/types.ts +25 -0
- package/src/connect/entrypoints.ts +18 -35
- package/src/connect/errors/types.ts +22 -0
- package/src/connect/errors.ts +75 -0
- package/src/connect/index.ts +13 -2
- package/src/connect/kit/types.ts +56 -0
- package/src/connect/model-tier/types.ts +16 -0
- package/src/connect/model-tier.ts +22 -0
- package/src/connect/{ops.ts → ops/types.ts} +13 -3
- package/src/connect/pipeline/types.ts +41 -0
- package/src/connect/project/types.ts +127 -0
- package/src/connect/references/types.local.ts +5 -0
- package/src/connect/references/types.ts +73 -0
- package/src/connect/references.ts +15 -75
- package/src/connect/schemas.ts +19 -12
- package/src/connect/session/types.ts +81 -0
- package/src/connect/settings/types.ts +52 -0
- package/src/consts.ts +17 -0
- package/src/convert/analysis/types.ts +89 -0
- package/src/convert/census/consts.local.ts +120 -0
- package/src/convert/census/types.ts +181 -0
- package/src/convert/census.ts +95 -0
- package/src/convert/consts.ts +5 -14
- package/src/convert/detection/types.ts +74 -0
- package/src/convert/docs/types.ts +151 -0
- package/src/convert/docs.ts +15 -0
- package/src/convert/estimate/types.ts +75 -0
- package/src/convert/estimate.ts +19 -0
- package/src/convert/helpers.ts +29 -328
- package/src/convert/index.ts +15 -0
- package/src/convert/origin/types.ts +43 -0
- package/src/convert/origin.ts +33 -0
- package/src/convert/record/types.ts +105 -0
- package/src/convert/schemas.ts +13 -12
- package/src/convert/stage/types.ts +27 -0
- package/src/convert/stage.ts +31 -0
- package/src/convert/taxonomy/types.ts +74 -0
- package/src/convert/types.ts +5 -703
- package/src/convert/utils.ts +7 -0
- package/src/design/consts.ts +48 -0
- package/src/design/helpers.ts +20 -245
- package/src/design/index.ts +3 -0
- package/src/design/runtime/types.ts +14 -0
- package/src/design/runtime.ts +18 -116
- package/src/design/schemas.ts +2 -10
- package/src/design/story/types.ts +67 -0
- package/src/design/story.ts +221 -0
- package/src/design/types.ts +81 -1
- package/src/dev/schemas.ts +1 -3
- package/src/dev/types.local.ts +4 -0
- package/src/integrity/consts.local.ts +5 -0
- package/src/integrity/consts.ts +0 -348
- package/src/integrity/index.ts +5 -0
- package/src/integrity/layout/consts.local.ts +188 -0
- package/src/integrity/layout/consts.ts +79 -0
- package/src/integrity/layout/types.ts +35 -0
- package/src/integrity/layout.ts +39 -0
- package/src/integrity/types.ts +37 -2
- package/src/integrity/utils.ts +21 -0
- package/src/integrity/verify/types.ts +26 -0
- package/src/integrity/verify.ts +178 -184
- package/src/intent/consts.ts +67 -0
- package/src/intent/entrypoints.ts +2 -3
- package/src/intent/index.ts +0 -1
- package/src/intent/types.ts +10 -0
- package/src/metadata/consts.ts +37 -0
- package/src/metadata/types.ts +1 -37
- package/src/moderation/index.ts +2 -0
- package/src/moderation/utils.ts +7 -30
- package/src/moderation/verdict/types.ts +22 -0
- package/src/moderation/verdict.ts +28 -0
- package/src/planning/card/types.ts +44 -0
- package/src/planning/card.ts +77 -0
- package/src/planning/consts.ts +15 -2
- package/src/planning/helpers.ts +28 -116
- package/src/planning/index.ts +5 -1
- package/src/planning/landing/types.ts +15 -0
- package/src/planning/landing.ts +28 -38
- package/src/planning/schemas.ts +191 -4
- package/src/planning/spec/types.ts +22 -0
- package/src/planning/spec.ts +41 -0
- package/src/planning/types.ts +6 -6
- package/src/preview/consts.ts +2 -0
- package/src/preview/types.ts +19 -0
- package/src/scaffold/consts.ts +65 -1
- package/src/scaffold/helpers.ts +14 -80
- package/src/scaffold/index.ts +4 -0
- package/src/scaffold/landing/types.ts +48 -0
- package/src/scaffold/landing.ts +120 -0
- package/src/scaffold/schemas.ts +183 -7
- package/src/scaffold/share/types.ts +35 -0
- package/src/scaffold/share.ts +60 -0
- package/src/scaffold/types.ts +123 -1
- package/src/skills/consts.ts +46 -0
- package/src/skills/index.ts +0 -1
- package/src/slot/command/types.ts +21 -0
- package/src/slot/command.ts +38 -0
- package/src/slot/consts.ts +11 -40
- package/src/slot/helpers.ts +6 -31
- package/src/slot/index.ts +6 -0
- package/src/slot/layout/types.ts +17 -0
- package/src/slot/layout.ts +19 -77
- package/src/slot/origin/types.ts +23 -0
- package/src/slot/origin.ts +20 -0
- package/src/slot/types.ts +58 -1
- package/src/slot/utils.ts +10 -0
- package/src/topology/card/types.ts +21 -0
- package/src/topology/card.ts +85 -90
- package/src/topology/consts.local.ts +6 -0
- package/src/topology/helpers.ts +20 -125
- package/src/topology/index.ts +3 -0
- package/src/topology/resolve/types.ts +47 -0
- package/src/topology/resolve.ts +118 -0
- package/src/topology/types.ts +6 -0
- package/tests/blueprint.spec.ts +1 -2
- package/tests/branding.spec.ts +2 -2
- package/tests/connect-convert.spec.ts +21 -1
- package/tests/connect-errors.spec.ts +34 -1
- package/tests/convert.spec.ts +51 -52
- package/tests/design.spec.ts +13 -16
- package/tests/error-status.spec.ts +7 -1
- package/tests/planning.spec.ts +58 -75
- package/tests/presentation.spec.ts +21 -23
- package/tests/scaffold.spec.ts +286 -6
- package/tests/tenancy.spec.ts +21 -21
- package/build/connect/ops.d.ts.map +0 -1
- package/build/connect/ops.js +0 -2
- package/build/connect/ops.js.map +0 -1
- package/build/connect/types.d.ts +0 -437
- package/build/connect/types.d.ts.map +0 -1
- package/build/intent/flow.d.ts +0 -17
- package/build/intent/flow.d.ts.map +0 -1
- package/build/intent/flow.js +0 -65
- package/build/intent/flow.js.map +0 -1
- package/build/planning/flows.d.ts +0 -34
- package/build/planning/flows.d.ts.map +0 -1
- package/build/planning/flows.js +0 -174
- package/build/planning/flows.js.map +0 -1
- package/build/skills/roles.d.ts +0 -43
- package/build/skills/roles.d.ts.map +0 -1
- package/build/skills/roles.js +0 -44
- package/build/skills/roles.js.map +0 -1
- package/src/connect/types.ts +0 -466
- package/src/intent/flow.ts +0 -67
- package/src/planning/flows.ts +0 -204
- package/src/skills/roles.ts +0 -46
- /package/build/{connect → agent/presentation}/types.js +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { conversionDocHelper } from './docs.js'
|
|
2
|
+
|
|
3
|
+
/** @deprecated compat:factory-refactor — use `conversionDocHelper.conversionStoryDoc(…)` */
|
|
4
|
+
export const conversionStoryDoc = (code: string): string => conversionDocHelper.conversionStoryDoc(code)
|
|
5
|
+
|
|
6
|
+
/** @deprecated compat:factory-refactor — use `conversionDocHelper.conversionSeedDoc(…)` */
|
|
7
|
+
export const conversionSeedDoc = (name: string): string => conversionDocHelper.conversionSeedDoc(name)
|
package/src/design/consts.ts
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* the fields it is missing were absent because they had not been designed and which because the
|
|
7
7
|
* shape did not have them yet. Those are different questions with different answers.
|
|
8
8
|
*/
|
|
9
|
+
import type { StoryDesignRuntime } from './types.js'
|
|
10
|
+
|
|
9
11
|
export const STORY_DESIGN_VERSION = 1
|
|
10
12
|
|
|
11
13
|
/** How far a design may drift from the project it was written against before it is stale. */
|
|
@@ -21,3 +23,49 @@ export enum DesignStaleness {
|
|
|
21
23
|
/** The generated tree moved under it. Re-run the stages that read the tree. */
|
|
22
24
|
Tree = 'tree',
|
|
23
25
|
}
|
|
26
|
+
|
|
27
|
+
/** Who acts in a story. */
|
|
28
|
+
export enum StoryActor {
|
|
29
|
+
/** A person, in one of the four areas. Every story until something says otherwise. */
|
|
30
|
+
Human = 'human',
|
|
31
|
+
/**
|
|
32
|
+
* The application's own LLM agent.
|
|
33
|
+
*
|
|
34
|
+
* An EPHEMERAL role: it holds no permissions and has no area of its own, because there is nobody
|
|
35
|
+
* to sign in as it. A story belongs to it when the work is the agent's — the human half is a
|
|
36
|
+
* separate, paired story that starts the work and watches it.
|
|
37
|
+
*/
|
|
38
|
+
Agent = 'agent',
|
|
39
|
+
/** A queue consumer. Ephemeral in exactly the same sense. */
|
|
40
|
+
Worker = 'worker',
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** The ephemeral actors — those a permission may never be granted to. */
|
|
44
|
+
export const EPHEMERAL_ACTORS: StoryActor[] = [StoryActor.Agent, StoryActor.Worker]
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The three shapes that can perform work with a model, cheapest first.
|
|
48
|
+
*
|
|
49
|
+
* They are not interchangeable and the difference is who decides the order. A CALL is one prompt
|
|
50
|
+
* and one answer; a PIPELINE runs steps this application named in advance; an AGENT is handed
|
|
51
|
+
* tools and works out its own path. Each step up buys capability with latency, money and a
|
|
52
|
+
* failure mode, so the right answer is the simplest shape that does the job — and for most work
|
|
53
|
+
* that asks for a model at all, it is a call.
|
|
54
|
+
*/
|
|
55
|
+
export enum StoryAgentKind {
|
|
56
|
+
/** One prompt, one answer, optionally schema-shaped. The default. */
|
|
57
|
+
Call = 'call',
|
|
58
|
+
/** Ordered steps decided by the application, not by the model. */
|
|
59
|
+
Pipeline = 'pipeline',
|
|
60
|
+
/** The model chooses its own path through the tools it was given. */
|
|
61
|
+
Agent = 'agent',
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** What a design carries when nobody has asked the question — and when the answer was "no". */
|
|
65
|
+
export const NO_RUNTIME: StoryDesignRuntime = {
|
|
66
|
+
actor: StoryActor.Human,
|
|
67
|
+
worker: false,
|
|
68
|
+
jobs: [],
|
|
69
|
+
agents: [],
|
|
70
|
+
kv: false,
|
|
71
|
+
}
|
package/src/design/helpers.ts
CHANGED
|
@@ -1,259 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
1
|
+
import type { UserStory } from '../ba/types.js'
|
|
2
|
+
import type { DesignStaleness } from './consts.js'
|
|
3
|
+
import { storyDesignHelper } from './story.js'
|
|
4
4
|
import type { StoryDesign } from './types.js'
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
|
|
8
|
-
*
|
|
9
|
-
* Derived rather than stored, and derived HERE rather than at the platform: the aggregate is what
|
|
10
|
-
* every generation helper reads, and a second place that assembles it is a second place that can
|
|
11
|
-
* assemble it differently. The `code` in particular is load-bearing - the scaffold stamps every
|
|
12
|
-
* placeholder it draws with it, so a run keyed by anything else cannot recognise its own
|
|
13
|
-
* reservation.
|
|
14
|
-
*
|
|
15
|
-
* For a context with no card behind it. Where a story card exists, `userStoryOf(card, design)` is
|
|
16
|
-
* the reader: the card wins on the narrative, code, area and actor, which a person may have
|
|
17
|
-
* changed since the design was written.
|
|
18
|
-
*/
|
|
19
|
-
export const userStoryOfDesign = (design: StoryDesign): UserStory => {
|
|
20
|
-
const componentOf = (name: string): StoryComponent | null => {
|
|
21
|
-
const component = design.components.find(entry => entry.name === name)
|
|
22
|
-
if (component == null) {
|
|
23
|
-
return null
|
|
24
|
-
}
|
|
6
|
+
/** @deprecated compat:factory-refactor — use `storyDesignHelper.userStoryOfDesign(…)` */
|
|
7
|
+
export const userStoryOfDesign = (design: StoryDesign): UserStory => storyDesignHelper.userStoryOfDesign(design)
|
|
25
8
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
description: '',
|
|
29
|
-
specs: {
|
|
30
|
-
[SpecCategory.UX]: component.specs.ux,
|
|
31
|
-
[SpecCategory.UI]: component.specs.ui,
|
|
32
|
-
} as Record<SpecCategory, string>,
|
|
33
|
-
entities: component.entities.map(entity => ({
|
|
34
|
-
name: entity, description: '', attributes: [],
|
|
35
|
-
} satisfies Entity)),
|
|
36
|
-
}
|
|
37
|
-
}
|
|
9
|
+
/** @deprecated compat:factory-refactor — use `storyDesignHelper.screenMapOf(…)` */
|
|
10
|
+
export const screenMapOf = (design: StoryDesign): Record<string, string[]> => storyDesignHelper.screenMapOf(design)
|
|
38
11
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
description: '',
|
|
42
|
-
...(screen.section != null ? { section: screen.section } : {}),
|
|
43
|
-
specs: {
|
|
44
|
-
[SpecCategory.UX]: screen.specs.ux,
|
|
45
|
-
[SpecCategory.UI]: screen.specs.ui,
|
|
46
|
-
} as Record<SpecCategory, string>,
|
|
47
|
-
components: screen.components
|
|
48
|
-
.map(componentOf)
|
|
49
|
-
.filter((component): component is StoryComponent => component != null),
|
|
50
|
-
}))
|
|
12
|
+
/** @deprecated compat:factory-refactor — use `storyDesignHelper.designPaths(…)` */
|
|
13
|
+
export const designPaths = (design: StoryDesign): string[] => storyDesignHelper.designPaths(design)
|
|
51
14
|
|
|
52
|
-
|
|
53
|
-
story: design.narrative,
|
|
54
|
-
code: design.code,
|
|
55
|
-
area: design.area,
|
|
56
|
-
entity: null as unknown as string,
|
|
57
|
-
entities: design.entities.map(entity => ({
|
|
58
|
-
name: entity.name, description: entity.description, attributes: [],
|
|
59
|
-
} satisfies Entity)),
|
|
60
|
-
screens,
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/** Screen name to component names - the shape every UX and UI prompt takes. */
|
|
65
|
-
export const screenMapOf = (design: StoryDesign): Record<string, string[]> =>
|
|
66
|
-
design.screens.reduce<Record<string, string[]>>((map, screen) => {
|
|
67
|
-
map[screen.name] = [...screen.components]
|
|
68
|
-
|
|
69
|
-
return map
|
|
70
|
-
}, {})
|
|
71
|
-
|
|
72
|
-
/** Every path the design names, in the order the implementation stage visits them. */
|
|
73
|
-
export const designPaths = (design: StoryDesign): string[] => [
|
|
74
|
-
...design.types.map(entry => entry.path),
|
|
75
|
-
...design.resources.map(entry => entry.path),
|
|
76
|
-
...design.models.map(entry => entry.path),
|
|
77
|
-
...design.api.map(entry => entry.path),
|
|
78
|
-
...design.stores.map(entry => entry.path),
|
|
79
|
-
...design.components.flatMap(entry => [entry.viewModelPath, entry.path]),
|
|
80
|
-
...design.screens.map(entry => entry.path),
|
|
81
|
-
]
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* How far the world has moved since the design was written.
|
|
85
|
-
*
|
|
86
|
-
* Ordered by severity, and each answer has one correct reaction: a version mismatch REFUSES, a
|
|
87
|
-
* changed narrative re-designs, a changed project warns and continues, a moved tree re-runs only
|
|
88
|
-
* the stages that read the tree. Collapsing them into a boolean would make every one of those the
|
|
89
|
-
* most expensive of the four.
|
|
90
|
-
*/
|
|
15
|
+
/** @deprecated compat:factory-refactor — use `storyDesignHelper.designStaleness(…)` */
|
|
91
16
|
export const designStaleness = (
|
|
92
17
|
design: StoryDesign,
|
|
93
18
|
now: { narrativeHash: string, projectHash: string, registryHash: string },
|
|
94
|
-
): DesignStaleness =>
|
|
95
|
-
if (design.version !== STORY_DESIGN_VERSION) {
|
|
96
|
-
return DesignStaleness.Version
|
|
97
|
-
}
|
|
98
|
-
if (design.provenance.narrativeHash !== now.narrativeHash) {
|
|
99
|
-
return DesignStaleness.Narrative
|
|
100
|
-
}
|
|
101
|
-
if (design.provenance.projectHash !== now.projectHash) {
|
|
102
|
-
return DesignStaleness.Project
|
|
103
|
-
}
|
|
104
|
-
if (design.provenance.registryHash !== now.registryHash) {
|
|
105
|
-
return DesignStaleness.Tree
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return DesignStaleness.Fresh
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* A stable, dependency-free hash of arbitrary text.
|
|
113
|
-
*
|
|
114
|
-
* FNV-1a, because what is being detected is "did this change", not "is this authentic" - and a
|
|
115
|
-
* design record must be readable by a browser bundle, a worker and a test with no crypto import
|
|
116
|
-
* between them.
|
|
117
|
-
*/
|
|
118
|
-
export const designHash = (...parts: Array<string | undefined>): string => {
|
|
119
|
-
const text = parts.filter(part => part != null).join(' ')
|
|
120
|
-
let hash = 0x811c9dc5
|
|
121
|
-
for (let at = 0; at < text.length; at += 1) {
|
|
122
|
-
hash ^= text.charCodeAt(at)
|
|
123
|
-
hash = Math.imul(hash, 0x01000193) >>> 0
|
|
124
|
-
}
|
|
19
|
+
): DesignStaleness => storyDesignHelper.designStaleness(design, now)
|
|
125
20
|
|
|
126
|
-
|
|
127
|
-
|
|
21
|
+
/** @deprecated compat:factory-refactor — use `storyDesignHelper.designHash(…)` */
|
|
22
|
+
export const designHash = (...parts: Array<string | undefined>): string => storyDesignHelper.designHash(...parts)
|
|
128
23
|
|
|
129
|
-
/**
|
|
24
|
+
/** @deprecated compat:factory-refactor — use `storyDesignHelper.emptyStoryDesign(…)` */
|
|
130
25
|
export const emptyStoryDesign = (
|
|
131
26
|
input: Pick<StoryDesign, 'code' | 'narrative' | 'area'> & Partial<StoryDesign>,
|
|
132
|
-
): StoryDesign => (
|
|
133
|
-
version: STORY_DESIGN_VERSION,
|
|
134
|
-
reserved: {},
|
|
135
|
-
entities: [],
|
|
136
|
-
screens: [],
|
|
137
|
-
components: [],
|
|
138
|
-
types: [],
|
|
139
|
-
resources: [],
|
|
140
|
-
models: [],
|
|
141
|
-
api: [],
|
|
142
|
-
stores: [],
|
|
143
|
-
transitions: [],
|
|
144
|
-
access: { list: {}, resolvedAt: {} },
|
|
145
|
-
provenance: {
|
|
146
|
-
designedAt: new Date().toISOString(),
|
|
147
|
-
narrativeHash: '',
|
|
148
|
-
projectHash: '',
|
|
149
|
-
registryHash: '',
|
|
150
|
-
paths: [],
|
|
151
|
-
},
|
|
152
|
-
...input,
|
|
153
|
-
})
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* The design, small enough to hand a model, complete enough to act on.
|
|
157
|
-
*
|
|
158
|
-
* What a free-flight agent needs is names and counts: which screens exist, what is on them, which
|
|
159
|
-
* types and endpoints the story implies. The UX and UI prose is the bulk of a design and none of
|
|
160
|
-
* it helps an agent decide what to do next, so it is deliberately left out.
|
|
161
|
-
*/
|
|
162
|
-
export const designDigest = (design: StoryDesign): string => {
|
|
163
|
-
const lines: string[] = [
|
|
164
|
-
`Story ${design.code} (${design.area}): ${design.narrative}`,
|
|
165
|
-
]
|
|
166
|
-
if (design.reserved.section != null || design.reserved.screen != null) {
|
|
167
|
-
lines.push(`Reserved: section=${design.reserved.section ?? '-'} screen=${design.reserved.screen ?? '-'}`)
|
|
168
|
-
}
|
|
169
|
-
lines.push('', 'Screens:')
|
|
170
|
-
for (const screen of design.screens) {
|
|
171
|
-
lines.push(
|
|
172
|
-
`- ${screen.name} -> ${screen.path} (alias ${screen.alias}`
|
|
173
|
-
+ `${screen.section != null ? `, section ${screen.section}` : ''}`
|
|
174
|
-
+ `${screen.adopted ? ', existing' : ''}) renders ${screen.components.join(', ') || '-'}`,
|
|
175
|
-
)
|
|
176
|
-
}
|
|
177
|
-
lines.push('', 'Components:')
|
|
178
|
-
for (const component of design.components) {
|
|
179
|
-
lines.push(
|
|
180
|
-
`- ${component.name} -> ${component.path} (+ ${component.viewModelPath})`
|
|
181
|
-
+ `${component.entities.length > 0 ? ` about ${component.entities.join(', ')}` : ''}`,
|
|
182
|
-
)
|
|
183
|
-
}
|
|
184
|
-
lines.push('', 'Data layer:')
|
|
185
|
-
for (const type of design.types) {
|
|
186
|
-
lines.push(`- type ${type.path} (${type.entity})`)
|
|
187
|
-
}
|
|
188
|
-
for (const resource of design.resources) {
|
|
189
|
-
lines.push(`- resource ${resource.path} (${resource.entity})`)
|
|
190
|
-
}
|
|
191
|
-
for (const model of design.models) {
|
|
192
|
-
lines.push(`- model ${model.path} (${model.entities.join(', ')})`)
|
|
193
|
-
}
|
|
194
|
-
for (const api of design.api) {
|
|
195
|
-
lines.push(
|
|
196
|
-
`- api ${api.path} (${api.entity})`
|
|
197
|
-
+ `${api.endpoints.length > 0 ? `: ${api.endpoints.map(e => e.alias).join(', ')}` : ''}`,
|
|
198
|
-
)
|
|
199
|
-
}
|
|
200
|
-
for (const store of design.stores) {
|
|
201
|
-
lines.push(`- store ${store.path} (${store.entity})`)
|
|
202
|
-
}
|
|
203
|
-
if (design.transitions.length > 0) {
|
|
204
|
-
lines.push('', 'Transitions:')
|
|
205
|
-
for (const transition of design.transitions) {
|
|
206
|
-
lines.push(`- ${transition.from} -> ${transition.to} (${transition.action})`)
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
const guarded = Object.keys(design.access.list)
|
|
210
|
-
if (guarded.length > 0) {
|
|
211
|
-
lines.push('', `Access declared on: ${guarded.join(', ')}`)
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
return lines.join('\n')
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Apply a patch to a design, refusing anything that would rename an allocated artifact.
|
|
219
|
-
*
|
|
220
|
-
* A path or an alias is registry-owned. Changing one behind the registry's back leaves two
|
|
221
|
-
* spellings of the same thing in a project, and no number of fix attempts repairs that — the
|
|
222
|
-
* compiler sees a missing module and the fixer, reasonably, renames the reference to match
|
|
223
|
-
* whichever spelling it found first.
|
|
224
|
-
*
|
|
225
|
-
* Returns the reason as a STRING when it refuses, so a model can read it and take the other route.
|
|
226
|
-
*/
|
|
227
|
-
export const amendStoryDesign = (
|
|
228
|
-
design: StoryDesign, patch: Record<string, unknown>,
|
|
229
|
-
): StoryDesign | string => {
|
|
230
|
-
const forbidden: string[] = []
|
|
231
|
-
|
|
232
|
-
const checkList = <T extends { path?: string, alias?: string, name?: string }>(
|
|
233
|
-
key: string, current: T[], next: unknown,
|
|
234
|
-
): void => {
|
|
235
|
-
if (!Array.isArray(next)) return
|
|
236
|
-
for (const entry of next as T[]) {
|
|
237
|
-
const known = current.find(item => item.name === entry.name)
|
|
238
|
-
if (known == null) continue
|
|
239
|
-
if (entry.path != null && known.path != null && entry.path !== known.path) {
|
|
240
|
-
forbidden.push(`${key}.${String(entry.name)}.path`)
|
|
241
|
-
}
|
|
242
|
-
if (entry.alias != null && known.alias != null && entry.alias !== known.alias) {
|
|
243
|
-
forbidden.push(`${key}.${String(entry.name)}.alias`)
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
checkList('screens', design.screens, patch.screens)
|
|
249
|
-
checkList('components', design.components, patch.components)
|
|
27
|
+
): StoryDesign => storyDesignHelper.emptyStoryDesign(input)
|
|
250
28
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
+ 'A design may change what a screen or a component DOES - its UX, its UI, its section, its '
|
|
254
|
-
+ 'endpoints - but never where it lives or what it is called. Rename through the registry, '
|
|
255
|
-
+ 'or leave the name alone and change the behaviour.'
|
|
256
|
-
}
|
|
29
|
+
/** @deprecated compat:factory-refactor — use `storyDesignHelper.designDigest(…)` */
|
|
30
|
+
export const designDigest = (design: StoryDesign): string => storyDesignHelper.designDigest(design)
|
|
257
31
|
|
|
258
|
-
|
|
259
|
-
|
|
32
|
+
/** @deprecated compat:factory-refactor — use `storyDesignHelper.amendStoryDesign(…)` */
|
|
33
|
+
export const amendStoryDesign = (design: StoryDesign, patch: Record<string, unknown>): StoryDesign | string =>
|
|
34
|
+
storyDesignHelper.amendStoryDesign(design, patch)
|
package/src/design/index.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { StoryActor } from '../consts.js'
|
|
2
|
+
import type { StoryDesignRuntime } from '../types.js'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* What a story needs BEYOND a screen, an endpoint and a table — and the standing answer is
|
|
6
|
+
* "nothing". See `design/runtime.ts`.
|
|
7
|
+
*/
|
|
8
|
+
export interface StoryRuntimeHelper {
|
|
9
|
+
isEphemeralActor: (actor?: StoryActor) => boolean
|
|
10
|
+
/** Read the gate off a design, total over a design that predates it. */
|
|
11
|
+
runtimeOf: (design?: { runtime?: StoryDesignRuntime }) => StoryDesignRuntime
|
|
12
|
+
/** Whether anything at all was asked for — the one check every new step is gated on. */
|
|
13
|
+
needsRuntime: (runtime: StoryDesignRuntime) => boolean
|
|
14
|
+
}
|
package/src/design/runtime.ts
CHANGED
|
@@ -14,129 +14,31 @@
|
|
|
14
14
|
* emits exactly the tree it emitted before any of this existed.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
Human = 'human',
|
|
21
|
-
/**
|
|
22
|
-
* The application's own LLM agent.
|
|
23
|
-
*
|
|
24
|
-
* An EPHEMERAL role: it holds no permissions and has no area of its own, because there is nobody
|
|
25
|
-
* to sign in as it. A story belongs to it when the work is the agent's — the human half is a
|
|
26
|
-
* separate, paired story that starts the work and watches it.
|
|
27
|
-
*/
|
|
28
|
-
Agent = 'agent',
|
|
29
|
-
/** A queue consumer. Ephemeral in exactly the same sense. */
|
|
30
|
-
Worker = 'worker',
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/** The ephemeral actors — those a permission may never be granted to. */
|
|
34
|
-
export const EPHEMERAL_ACTORS: StoryActor[] = [StoryActor.Agent, StoryActor.Worker]
|
|
17
|
+
import { EPHEMERAL_ACTORS, NO_RUNTIME, StoryActor } from './consts.js'
|
|
18
|
+
import type { StoryDesignRuntime } from './types.js'
|
|
19
|
+
import type { StoryRuntimeHelper } from './runtime/types.js'
|
|
35
20
|
|
|
36
|
-
export const
|
|
37
|
-
|
|
21
|
+
export const createStoryRuntimeHelper = (): StoryRuntimeHelper => {
|
|
22
|
+
const isEphemeralActor = (actor?: StoryActor): boolean =>
|
|
23
|
+
actor != null && EPHEMERAL_ACTORS.includes(actor)
|
|
38
24
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
/** The queue it is enqueued onto. */
|
|
42
|
-
queue: string
|
|
43
|
-
/** The job name, which becomes the backend-only `job:<name>` protocol alias. */
|
|
44
|
-
name: string
|
|
45
|
-
/** The processor module, relative to the worker package's `src`. */
|
|
46
|
-
path: string
|
|
47
|
-
/** What it does, in one sentence, for the coder that writes the processor. */
|
|
48
|
-
purpose: string
|
|
49
|
-
/**
|
|
50
|
-
* Why it may not run on the request path.
|
|
51
|
-
*
|
|
52
|
-
* Recorded because it is the thing a later run has to be able to disagree with. "It might be
|
|
53
|
-
* slow" is not a reason; "it calls a model" and "it walks every row of a table the user owns"
|
|
54
|
-
* are.
|
|
55
|
-
*/
|
|
56
|
-
reason: string
|
|
57
|
-
/**
|
|
58
|
-
* Whether running it twice is safe, and how it was made so.
|
|
59
|
-
*
|
|
60
|
-
* A worker can die mid-job; the lock expires and the step re-runs. There is no way to make that
|
|
61
|
-
* automatic, so the answer is written down where the processor's author has to read it.
|
|
62
|
-
*/
|
|
63
|
-
idempotency: string
|
|
64
|
-
}
|
|
25
|
+
const runtimeOf = (design?: { runtime?: StoryDesignRuntime }): StoryDesignRuntime =>
|
|
26
|
+
design?.runtime ?? NO_RUNTIME
|
|
65
27
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
/** Its alias in the target's own agent registry. */
|
|
69
|
-
alias: string
|
|
70
|
-
/** The module, relative to the shared backend package's `src`. */
|
|
71
|
-
path: string
|
|
72
|
-
/** What it is for. */
|
|
73
|
-
purpose: string
|
|
74
|
-
/** Which of the three shapes this is — a call, a pipeline, or a tool-using agent. */
|
|
75
|
-
kind: StoryAgentKind
|
|
76
|
-
/** The job that runs it — an agent is never invoked on the request path. */
|
|
77
|
-
job?: string
|
|
78
|
-
}
|
|
28
|
+
const needsRuntime = (runtime: StoryDesignRuntime): boolean =>
|
|
29
|
+
runtime.worker || runtime.jobs.length > 0 || runtime.agents.length > 0
|
|
79
30
|
|
|
80
|
-
|
|
81
|
-
* The three shapes that can perform work with a model, cheapest first.
|
|
82
|
-
*
|
|
83
|
-
* They are not interchangeable and the difference is who decides the order. A CALL is one prompt
|
|
84
|
-
* and one answer; a PIPELINE runs steps this application named in advance; an AGENT is handed
|
|
85
|
-
* tools and works out its own path. Each step up buys capability with latency, money and a
|
|
86
|
-
* failure mode, so the right answer is the simplest shape that does the job — and for most work
|
|
87
|
-
* that asks for a model at all, it is a call.
|
|
88
|
-
*/
|
|
89
|
-
export enum StoryAgentKind {
|
|
90
|
-
/** One prompt, one answer, optionally schema-shaped. The default. */
|
|
91
|
-
Call = 'call',
|
|
92
|
-
/** Ordered steps decided by the application, not by the model. */
|
|
93
|
-
Pipeline = 'pipeline',
|
|
94
|
-
/** The model chooses its own path through the tools it was given. */
|
|
95
|
-
Agent = 'agent',
|
|
31
|
+
return { isEphemeralActor, runtimeOf, needsRuntime }
|
|
96
32
|
}
|
|
97
33
|
|
|
98
|
-
|
|
99
|
-
* The gate, as the design stage recorded it.
|
|
100
|
-
*
|
|
101
|
-
* Absent on a design written before this existed, and read as "none of it" everywhere — which is
|
|
102
|
-
* both the safe answer and the true one for every story developed until now.
|
|
103
|
-
*/
|
|
104
|
-
export interface StoryDesignRuntime {
|
|
105
|
-
actor: StoryActor
|
|
106
|
-
/** Whether this story puts work on the queue at all. */
|
|
107
|
-
worker: boolean
|
|
108
|
-
jobs: StoryDesignJob[]
|
|
109
|
-
agents: StoryDesignAgent[]
|
|
110
|
-
/**
|
|
111
|
-
* Whether this story's data belongs in the key/value store rather than in Postgres.
|
|
112
|
-
*
|
|
113
|
-
* Postgres is the default and being wrong with it is cheap. This is true only for data with an
|
|
114
|
-
* expiry, a lock, a counter or a fan-out, and a bounded, namespaced key set.
|
|
115
|
-
*/
|
|
116
|
-
kv: boolean
|
|
117
|
-
/**
|
|
118
|
-
* Which HUMAN story shows the progress of this story's queued work.
|
|
119
|
-
*
|
|
120
|
-
* An ephemeral actor cannot report to anybody: there is no screen it owns and no session it runs
|
|
121
|
-
* in. A story that enqueues work therefore names the story whose screen carries the job feed, and
|
|
122
|
-
* the permission to enqueue and to watch is granted to that area's role.
|
|
123
|
-
*/
|
|
124
|
-
feedback?: string
|
|
125
|
-
}
|
|
34
|
+
export const storyRuntimeHelper = createStoryRuntimeHelper()
|
|
126
35
|
|
|
127
|
-
/**
|
|
128
|
-
export const
|
|
129
|
-
actor: StoryActor.Human,
|
|
130
|
-
worker: false,
|
|
131
|
-
jobs: [],
|
|
132
|
-
agents: [],
|
|
133
|
-
kv: false,
|
|
134
|
-
}
|
|
36
|
+
/** @deprecated compat:factory-refactor — use `storyRuntimeHelper.isEphemeralActor(…)` */
|
|
37
|
+
export const isEphemeralActor = (actor?: StoryActor): boolean => storyRuntimeHelper.isEphemeralActor(actor)
|
|
135
38
|
|
|
136
|
-
/**
|
|
39
|
+
/** @deprecated compat:factory-refactor — use `storyRuntimeHelper.runtimeOf(…)` */
|
|
137
40
|
export const runtimeOf = (design?: { runtime?: StoryDesignRuntime }): StoryDesignRuntime =>
|
|
138
|
-
design
|
|
41
|
+
storyRuntimeHelper.runtimeOf(design)
|
|
139
42
|
|
|
140
|
-
/**
|
|
141
|
-
export const needsRuntime = (runtime: StoryDesignRuntime): boolean =>
|
|
142
|
-
runtime.worker || runtime.jobs.length > 0 || runtime.agents.length > 0
|
|
43
|
+
/** @deprecated compat:factory-refactor — use `storyRuntimeHelper.needsRuntime(…)` */
|
|
44
|
+
export const needsRuntime = (runtime: StoryDesignRuntime): boolean => storyRuntimeHelper.needsRuntime(runtime)
|
package/src/design/schemas.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { JSONSchemaType } from 'ajv'
|
|
2
2
|
|
|
3
3
|
import { ProjectArea } from '../areas/consts.js'
|
|
4
|
-
import { StoryActor, StoryAgentKind } from './
|
|
5
|
-
import type {
|
|
6
|
-
import type { StoryDesign } from './types.js'
|
|
4
|
+
import { StoryActor, StoryAgentKind } from './consts.js'
|
|
5
|
+
import type { StoryDesign, RuntimeDecision } from './types.js'
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* The design shape, validated where the shape is DEFINED.
|
|
@@ -375,10 +374,3 @@ export const RuntimeDecisionSchema = {
|
|
|
375
374
|
// is that they are usually empty.
|
|
376
375
|
} as unknown as JSONSchemaType<RuntimeDecision>
|
|
377
376
|
|
|
378
|
-
/** What the gate answers with — the model's half of {@link StoryDesignRuntime}. */
|
|
379
|
-
export interface RuntimeDecision {
|
|
380
|
-
kv: boolean
|
|
381
|
-
feedback: string
|
|
382
|
-
jobs: StoryDesignJob[]
|
|
383
|
-
agents: StoryDesignAgent[]
|
|
384
|
-
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { UserStory } from '../../ba/types.js'
|
|
2
|
+
import type { DesignStaleness } from '../consts.js'
|
|
3
|
+
import type { StoryDesign } from '../types.js'
|
|
4
|
+
|
|
5
|
+
/** Reading, digesting, hashing and amending a story's design record. */
|
|
6
|
+
export interface StoryDesignHelper {
|
|
7
|
+
/**
|
|
8
|
+
* The in-memory aggregate the coders take, derived from the design ALONE.
|
|
9
|
+
*
|
|
10
|
+
* Derived rather than stored, and derived HERE rather than at the platform: the aggregate is what
|
|
11
|
+
* every generation helper reads, and a second place that assembles it is a second place that can
|
|
12
|
+
* assemble it differently. The `code` in particular is load-bearing - the scaffold stamps every
|
|
13
|
+
* placeholder it draws with it, so a run keyed by anything else cannot recognise its own
|
|
14
|
+
* reservation.
|
|
15
|
+
*
|
|
16
|
+
* For a context with no card behind it. Where a story card exists, `userStoryOf(card, design)` is
|
|
17
|
+
* the reader: the card wins on the narrative, code, area and actor, which a person may have
|
|
18
|
+
* changed since the design was written.
|
|
19
|
+
*/
|
|
20
|
+
userStoryOfDesign: (design: StoryDesign) => UserStory
|
|
21
|
+
/** Screen name to component names - the shape every UX and UI prompt takes. */
|
|
22
|
+
screenMapOf: (design: StoryDesign) => Record<string, string[]>
|
|
23
|
+
/** Every path the design names, in the order the implementation stage visits them. */
|
|
24
|
+
designPaths: (design: StoryDesign) => string[]
|
|
25
|
+
/**
|
|
26
|
+
* How far the world has moved since the design was written.
|
|
27
|
+
*
|
|
28
|
+
* Ordered by severity, and each answer has one correct reaction: a version mismatch REFUSES, a
|
|
29
|
+
* changed narrative re-designs, a changed project warns and continues, a moved tree re-runs only
|
|
30
|
+
* the stages that read the tree. Collapsing them into a boolean would make every one of those the
|
|
31
|
+
* most expensive of the four.
|
|
32
|
+
*/
|
|
33
|
+
designStaleness: (
|
|
34
|
+
design: StoryDesign, now: { narrativeHash: string, projectHash: string, registryHash: string },
|
|
35
|
+
) => DesignStaleness
|
|
36
|
+
/**
|
|
37
|
+
* A stable, dependency-free hash of arbitrary text.
|
|
38
|
+
*
|
|
39
|
+
* FNV-1a, because what is being detected is "did this change", not "is this authentic" - and a
|
|
40
|
+
* design record must be readable by a browser bundle, a worker and a test with no crypto import
|
|
41
|
+
* between them.
|
|
42
|
+
*/
|
|
43
|
+
designHash: (...parts: Array<string | undefined>) => string
|
|
44
|
+
/** An empty design, so every stage can fill its own slice without inventing the shape. */
|
|
45
|
+
emptyStoryDesign: (
|
|
46
|
+
input: Pick<StoryDesign, 'code' | 'narrative' | 'area'> & Partial<StoryDesign>,
|
|
47
|
+
) => StoryDesign
|
|
48
|
+
/**
|
|
49
|
+
* The design, small enough to hand a model, complete enough to act on.
|
|
50
|
+
*
|
|
51
|
+
* What a free-flight agent needs is names and counts: which screens exist, what is on them, which
|
|
52
|
+
* types and endpoints the story implies. The UX and UI prose is the bulk of a design and none of
|
|
53
|
+
* it helps an agent decide what to do next, so it is deliberately left out.
|
|
54
|
+
*/
|
|
55
|
+
designDigest: (design: StoryDesign) => string
|
|
56
|
+
/**
|
|
57
|
+
* Apply a patch to a design, refusing anything that would rename an allocated artifact.
|
|
58
|
+
*
|
|
59
|
+
* A path or an alias is registry-owned. Changing one behind the registry's back leaves two
|
|
60
|
+
* spellings of the same thing in a project, and no number of fix attempts repairs that — the
|
|
61
|
+
* compiler sees a missing module and the fixer, reasonably, renames the reference to match
|
|
62
|
+
* whichever spelling it found first.
|
|
63
|
+
*
|
|
64
|
+
* Returns the reason as a STRING when it refuses, so a model can read it and take the other route.
|
|
65
|
+
*/
|
|
66
|
+
amendStoryDesign: (design: StoryDesign, patch: Record<string, unknown>) => StoryDesign | string
|
|
67
|
+
}
|