@owlmeans/viable-common 0.0.44 → 0.0.46
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 +4 -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 -30
- package/build/agent/index.d.ts +1 -0
- package/build/agent/index.d.ts.map +1 -1
- 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 +2 -0
- package/build/agent/presentation/types.js.map +1 -0
- package/build/agent/presentation.d.ts +10 -8
- package/build/agent/presentation.d.ts.map +1 -1
- package/build/agent/presentation.js +216 -195
- package/build/agent/presentation.js.map +1 -1
- package/build/agent/types.local.d.ts +3 -1
- package/build/agent/types.local.d.ts.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 +5 -14
- package/build/areas/tenancy.d.ts.map +1 -1
- package/build/areas/tenancy.js +20 -26
- package/build/areas/tenancy.js.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/blueprint/types.d.ts +1 -2
- package/build/blueprint/types.d.ts.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 -0
- package/build/connect/consts.d.ts.map +1 -1
- package/build/connect/consts.js +2 -0
- 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 +17 -11
- package/build/connect/entrypoints.d.ts.map +1 -1
- 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 +1 -1
- package/build/connect/errors.d.ts.map +1 -1
- package/build/connect/index.d.ts +13 -3
- package/build/connect/index.d.ts.map +1 -1
- package/build/connect/index.js +1 -1
- 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/kit/types.js.map +1 -0
- 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/types.d.ts +198 -0
- 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.map +1 -0
- package/build/connect/references.d.ts +1 -1
- package/build/connect/references.d.ts.map +1 -1
- package/build/connect/references.js.map +1 -1
- package/build/connect/schemas.d.ts +8 -5
- package/build/connect/schemas.d.ts.map +1 -1
- package/build/connect/schemas.js +1 -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/connect/types.d.ts +1 -198
- package/build/connect/types.d.ts.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/{consts.local.d.ts → census/consts.local.d.ts} +1 -1
- package/build/convert/census/consts.local.d.ts.map +1 -0
- package/build/convert/{consts.local.js → census/consts.local.js} +1 -1
- 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 -0
- package/build/convert/consts.d.ts.map +1 -1
- package/build/convert/consts.js +4 -0
- 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 -199
- package/build/convert/helpers.js.map +1 -1
- package/build/convert/index.d.ts +14 -0
- package/build/convert/index.d.ts.map +1 -1
- package/build/convert/index.js +5 -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 -657
- package/build/convert/types.d.ts.map +1 -1
- package/build/convert/utils.d.ts +2 -1
- package/build/convert/utils.d.ts.map +1 -1
- package/build/convert/utils.js +5 -4
- package/build/convert/utils.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 +6 -2
- package/build/design/runtime.d.ts.map +1 -1
- package/build/design/runtime.js +13 -5
- package/build/design/runtime.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/dev/types.local.d.ts +2 -1
- package/build/dev/types.local.d.ts.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/integrity/index.d.ts +4 -0
- package/build/integrity/index.d.ts.map +1 -1
- package/build/integrity/index.js +2 -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 +3 -1
- package/build/integrity/types.d.ts.map +1 -1
- package/build/integrity/utils.d.ts +6 -81
- package/build/integrity/utils.d.ts.map +1 -1
- package/build/integrity/utils.js +11 -279
- package/build/integrity/utils.js.map +1 -1
- 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 +164 -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 -11
- package/build/intent/entrypoints.d.ts.map +1 -1
- package/build/intent/entrypoints.js.map +1 -1
- package/build/intent/flow.d.ts.map +1 -1
- package/build/intent/flow.js +2 -2
- package/build/intent/flow.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 -2
- package/build/intent/types.d.ts.map +1 -1
- package/build/legal/consts.d.ts +36 -0
- package/build/legal/consts.d.ts.map +1 -0
- package/build/legal/consts.js +16 -0
- package/build/legal/consts.js.map +1 -0
- package/build/legal/index.d.ts +3 -0
- package/build/legal/index.d.ts.map +1 -0
- package/build/legal/index.js +2 -0
- package/build/legal/index.js.map +1 -0
- package/build/legal/types.d.ts +10 -0
- package/build/legal/types.d.ts.map +1 -0
- package/build/legal/types.js +2 -0
- package/build/legal/types.js.map +1 -0
- 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/flows.d.ts +34 -0
- package/build/planning/flows.d.ts.map +1 -0
- package/build/planning/flows.js +174 -0
- package/build/planning/flows.js.map +1 -0
- 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 -0
- package/build/planning/index.d.ts.map +1 -1
- package/build/planning/index.js +2 -0
- 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 -10
- package/build/planning/landing.d.ts.map +1 -1
- package/build/planning/landing.js +20 -22
- package/build/planning/landing.js.map +1 -1
- package/build/planning/schemas.d.ts +1 -5
- package/build/planning/schemas.d.ts.map +1 -1
- package/build/planning/schemas.js +3 -3
- 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 +4 -3
- package/build/planning/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 +4 -16
- package/build/scaffold/helpers.d.ts.map +1 -1
- package/build/scaffold/helpers.js +9 -64
- 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 +112 -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/helpers.d.ts +2 -16
- 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 +5 -0
- package/build/slot/index.d.ts.map +1 -1
- package/build/slot/index.js +2 -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 +4 -9
- package/build/slot/layout.d.ts.map +1 -1
- package/build/slot/layout.js +13 -15
- 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.map +1 -1
- package/build/slot/utils.d.ts +3 -15
- package/build/slot/utils.d.ts.map +1 -1
- package/build/slot/utils.js +5 -40
- package/build/slot/utils.js.map +1 -1
- 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 +6 -13
- package/build/topology/card.d.ts.map +1 -1
- package/build/topology/card.js +83 -86
- package/build/topology/card.js.map +1 -1
- 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/package.json +18 -11
- package/src/agent/index.ts +1 -0
- package/src/agent/presentation/types.ts +21 -0
- package/src/agent/presentation.ts +199 -165
- package/src/agent/types.local.ts +3 -1
- package/src/areas/index.ts +1 -0
- package/src/areas/tenancy/types.ts +23 -0
- package/src/areas/tenancy.ts +26 -25
- 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/blueprint/types.ts +2 -2
- package/src/connect/branding/types.ts +29 -0
- package/src/connect/consts.ts +3 -0
- package/src/connect/conversion/types.ts +96 -0
- package/src/connect/entrypoints/types.ts +25 -0
- package/src/connect/entrypoints.ts +13 -2
- package/src/connect/errors/types.ts +22 -0
- package/src/connect/errors.ts +1 -1
- package/src/connect/index.ts +13 -3
- 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 +13 -2
- package/src/connect/schemas.ts +9 -13
- package/src/connect/session/types.ts +81 -0
- package/src/connect/settings/types.ts +52 -0
- package/src/convert/analysis/types.ts +89 -0
- package/src/convert/{consts.local.ts → census/consts.local.ts} +1 -1
- package/src/convert/census/types.ts +181 -0
- package/src/convert/census.ts +95 -0
- package/src/convert/consts.ts +5 -0
- 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 -210
- package/src/convert/index.ts +14 -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 -709
- package/src/convert/utils.ts +5 -6
- 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 +22 -7
- package/src/design/story/types.ts +67 -0
- package/src/design/story.ts +221 -0
- package/src/dev/types.local.ts +1 -1
- package/src/index.ts +1 -0
- package/src/integrity/index.ts +4 -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 +3 -1
- package/src/integrity/utils.ts +14 -313
- package/src/integrity/verify/types.ts +26 -0
- package/src/integrity/verify.ts +177 -181
- package/src/intent/consts.ts +67 -0
- package/src/intent/entrypoints.ts +2 -2
- package/src/intent/index.ts +0 -1
- package/src/intent/types.ts +9 -2
- package/src/legal/consts.ts +17 -0
- package/src/legal/index.ts +2 -0
- package/src/legal/types.ts +11 -0
- 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/helpers.ts +28 -116
- package/src/planning/index.ts +5 -0
- package/src/planning/landing/types.ts +15 -0
- package/src/planning/landing.ts +27 -24
- package/src/planning/schemas.ts +3 -3
- package/src/planning/spec/types.ts +22 -0
- package/src/planning/spec.ts +41 -0
- package/src/planning/types.ts +4 -4
- package/src/scaffold/consts.ts +65 -1
- package/src/scaffold/helpers.ts +14 -77
- 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 +120 -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/helpers.ts +5 -25
- package/src/slot/index.ts +5 -0
- package/src/slot/layout/types.ts +17 -0
- package/src/slot/layout.ts +19 -16
- package/src/slot/origin/types.ts +23 -0
- package/src/slot/origin.ts +20 -0
- package/src/slot/types.ts +1 -0
- package/src/slot/utils.ts +8 -43
- package/src/topology/card/types.ts +21 -0
- package/src/topology/card.ts +84 -82
- 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/tests/blueprint.spec.ts +1 -2
- package/tests/connect-errors.spec.ts +1 -1
- package/tests/convert.spec.ts +50 -50
- package/tests/design.spec.ts +13 -16
- package/tests/planning.spec.ts +57 -59
- package/tests/presentation.spec.ts +20 -20
- package/tests/scaffold.spec.ts +286 -6
- package/tests/tenancy.spec.ts +21 -21
- package/build/connect/types.local.d.ts +0 -4
- package/build/connect/types.local.d.ts.map +0 -1
- package/build/connect/types.local.js.map +0 -1
- package/build/connect/utils.d.ts +0 -12
- package/build/connect/utils.d.ts.map +0 -1
- package/build/connect/utils.js +0 -25
- package/build/connect/utils.js.map +0 -1
- package/build/convert/consts.local.d.ts.map +0 -1
- package/build/convert/consts.local.js.map +0 -1
- package/build/intent/consts.local.d.ts +0 -4
- package/build/intent/consts.local.d.ts.map +0 -1
- package/build/intent/consts.local.js +0 -3
- package/build/intent/consts.local.js.map +0 -1
- package/src/connect/types.local.ts +0 -5
- package/src/connect/types.ts +0 -589
- package/src/connect/utils.ts +0 -23
- package/src/intent/consts.local.ts +0 -3
- package/src/intent/flow.ts +0 -66
- package/src/skills/roles.ts +0 -46
- /package/build/connect/{types.local.js → references/types.local.js} +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Blueprint } from '../../blueprint/types.js'
|
|
2
|
+
import type { ProjectArea } from '../consts.js'
|
|
3
|
+
import type { ProjectTenancy } from '../types.js'
|
|
4
|
+
|
|
5
|
+
/** Which of a product's audiences act inside a tenant organization. */
|
|
6
|
+
export interface TenancyHelper {
|
|
7
|
+
/**
|
|
8
|
+
* The tenancy of a resolved blueprint.
|
|
9
|
+
*
|
|
10
|
+
* Total, like `landingGatePreferenceOf`: an absent layer, an absent key and a value this deploy
|
|
11
|
+
* cannot read all answer {@link NO_TENANCY}. Only a literal `true` turns a flag on, because a flag
|
|
12
|
+
* read as on by mistake splits a product's people into organizations nobody asked for, while one
|
|
13
|
+
* read as off leaves the application exactly as it was before tenancy existed.
|
|
14
|
+
*/
|
|
15
|
+
tenancyOf: (blueprint?: Pick<Blueprint, 'experience'> | null) => ProjectTenancy
|
|
16
|
+
/**
|
|
17
|
+
* Whether an AREA's people act inside a tenant organization.
|
|
18
|
+
*
|
|
19
|
+
* Guest has no organization to act in, and admin is the project owner, who stands above every
|
|
20
|
+
* tenant rather than inside one — so both are never tenanted, whatever the flags say.
|
|
21
|
+
*/
|
|
22
|
+
tenantedArea: (area: ProjectArea, tenancy: ProjectTenancy) => boolean
|
|
23
|
+
}
|
package/src/areas/tenancy.ts
CHANGED
|
@@ -1,33 +1,34 @@
|
|
|
1
1
|
import type { Blueprint } from '../blueprint/types.js'
|
|
2
2
|
import { ProjectArea, NO_TENANCY } from './consts.js'
|
|
3
3
|
import type { ProjectTenancy } from './types.js'
|
|
4
|
+
import type { TenancyHelper } from './tenancy/types.js'
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* read as on by mistake splits a product's people into organizations nobody asked for, while one
|
|
11
|
-
* read as off leaves the application exactly as it was before tenancy existed.
|
|
12
|
-
*/
|
|
13
|
-
export const tenancyOf = (blueprint?: Pick<Blueprint, 'experience'> | null): ProjectTenancy => {
|
|
14
|
-
const tenancy = blueprint?.experience?.tenancy
|
|
15
|
-
const operators = tenancy?.operators === true
|
|
16
|
-
const users = tenancy?.users === true
|
|
6
|
+
export const createTenancyHelper = (): TenancyHelper => {
|
|
7
|
+
const tenancyOf = (blueprint?: Pick<Blueprint, 'experience'> | null): ProjectTenancy => {
|
|
8
|
+
const tenancy = blueprint?.experience?.tenancy
|
|
9
|
+
const operators = tenancy?.operators === true
|
|
10
|
+
const users = tenancy?.users === true
|
|
17
11
|
|
|
18
|
-
|
|
19
|
-
}
|
|
12
|
+
return operators || users ? Object.freeze({ operators, users }) : NO_TENANCY
|
|
13
|
+
}
|
|
20
14
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
export const tenantedArea = (area: ProjectArea, tenancy: ProjectTenancy): boolean => {
|
|
28
|
-
switch (area) {
|
|
29
|
-
case ProjectArea.User: return tenancy.users === true
|
|
30
|
-
case ProjectArea.Operator: return tenancy.operators === true
|
|
31
|
-
default: return false
|
|
15
|
+
const tenantedArea = (area: ProjectArea, tenancy: ProjectTenancy): boolean => {
|
|
16
|
+
switch (area) {
|
|
17
|
+
case ProjectArea.User: return tenancy.users === true
|
|
18
|
+
case ProjectArea.Operator: return tenancy.operators === true
|
|
19
|
+
default: return false
|
|
20
|
+
}
|
|
32
21
|
}
|
|
22
|
+
|
|
23
|
+
return { tenancyOf, tenantedArea }
|
|
33
24
|
}
|
|
25
|
+
|
|
26
|
+
export const tenancyHelper = createTenancyHelper()
|
|
27
|
+
|
|
28
|
+
/** @deprecated compat:factory-refactor — use `tenancyHelper.tenancyOf(…)` */
|
|
29
|
+
export const tenancyOf = (blueprint?: Pick<Blueprint, 'experience'> | null): ProjectTenancy =>
|
|
30
|
+
tenancyHelper.tenancyOf(blueprint)
|
|
31
|
+
|
|
32
|
+
/** @deprecated compat:factory-refactor — use `tenancyHelper.tenantedArea(…)` */
|
|
33
|
+
export const tenantedArea = (area: ProjectArea, tenancy: ProjectTenancy): boolean =>
|
|
34
|
+
tenancyHelper.tenantedArea(area, tenancy)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { StoryDraft } from '../../areas/types.js'
|
|
2
|
+
import type { ConnectingStoryDraft, MergedStoryDraft } from '../types.js'
|
|
3
|
+
|
|
4
|
+
/** The connecting stories of a flow: how many it may carry, and where each one lands. */
|
|
5
|
+
export interface ConnectingStoryHelper {
|
|
6
|
+
/**
|
|
7
|
+
* How many connecting stories one flow may carry.
|
|
8
|
+
*
|
|
9
|
+
* An N-step chain has N-1 joints, and a connecting story exists to bridge one of them — so the
|
|
10
|
+
* flow sizes its own supporting cast, and a three-step product can never end up with eight list
|
|
11
|
+
* screens. It is a CEILING, not a target: the prompt is told to write as few as its rules actually
|
|
12
|
+
* derived, and most flows land well below this.
|
|
13
|
+
*
|
|
14
|
+
* The real reason for a hard number: every story here becomes a full develop run the project's
|
|
15
|
+
* owner pays for.
|
|
16
|
+
*/
|
|
17
|
+
connectingStoryCap: (flowCount: number) => number
|
|
18
|
+
/**
|
|
19
|
+
* Interleave the connecting stories into the flow they were derived from.
|
|
20
|
+
*
|
|
21
|
+
* `after` is an ANCHOR, not a position: it names the flow story whose result the connecting story
|
|
22
|
+
* displays, so the connecting story lands immediately behind it — which is also immediately in
|
|
23
|
+
* front of the step it leads into. The result is ONE ordered list, and it is the order records are
|
|
24
|
+
* created in.
|
|
25
|
+
*
|
|
26
|
+
* This is the only place the anchor is interpreted. Both halves of the feature — the prompt that
|
|
27
|
+
* produces it and the pipeline that persists the result — read it through here, or the two drift
|
|
28
|
+
* and nothing fails loudly enough to notice. The CLAMPED anchor is carried out on each connective
|
|
29
|
+
* entry as `after`, which is what the story card's `follows` relationship is written from.
|
|
30
|
+
*
|
|
31
|
+
* Four properties are deliberate:
|
|
32
|
+
*
|
|
33
|
+
* - **The flow subsequence is never disturbed.** Strip the connecting stories back out and you have
|
|
34
|
+
* `flow`, in `flow` order: story N still implements numbered step N. Everything that finds the
|
|
35
|
+
* primary story depends on that.
|
|
36
|
+
* - **Nothing precedes the first flow story.** An anchor below 1 is clamped up rather than opening a
|
|
37
|
+
* position in front of the flow — nothing can be listed before the step that produced it, and
|
|
38
|
+
* story 1 stays the enabling action.
|
|
39
|
+
* - **A placement is advice; the story is work already paid for.** An anchor past the end means
|
|
40
|
+
* "at the end", and one that is not a number at all means the front of the flow. Neither is a
|
|
41
|
+
* reason to lose a story.
|
|
42
|
+
* - **Ties keep the model's order**, which is the only ranking anything has.
|
|
43
|
+
*/
|
|
44
|
+
mergeConnectingStories: (flow: StoryDraft[], connecting: ConnectingStoryDraft[]) => MergedStoryDraft[]
|
|
45
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { StoryDraft } from "../areas/types.js"
|
|
2
|
+
import type { ConnectingStoryDraft, MergedStoryDraft } from "./types.js"
|
|
3
|
+
import { StoryKind } from "./consts.js"
|
|
4
|
+
import type { ConnectingStoryHelper } from './connecting/types.js'
|
|
5
|
+
|
|
6
|
+
export const createConnectingStoryHelper = (): ConnectingStoryHelper => {
|
|
7
|
+
const connectingStoryCap = (flowCount: number): number => Math.max(flowCount - 1, 0)
|
|
8
|
+
|
|
9
|
+
/** Collapse case and whitespace, so "the same story twice" is recognised as such. */
|
|
10
|
+
const canonical = (story: string): string => story.trim().replace(/\s+/g, ' ').toLowerCase()
|
|
11
|
+
|
|
12
|
+
const mergeConnectingStories = (
|
|
13
|
+
flow: StoryDraft[], connecting: ConnectingStoryDraft[]
|
|
14
|
+
): MergedStoryDraft[] => {
|
|
15
|
+
if (flow.length < 1) {
|
|
16
|
+
return []
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const seen = new Set(flow.map(({ story }) => canonical(story)))
|
|
20
|
+
const placed: Array<{ draft: ConnectingStoryDraft, at: number }> = []
|
|
21
|
+
|
|
22
|
+
for (const draft of connecting) {
|
|
23
|
+
const text = canonical(draft.story)
|
|
24
|
+
// A connecting story that repeats a flow story is not a second story: it is one develop run
|
|
25
|
+
// spent twice AND — since the home-screen detector matches its answer back by exact text — a
|
|
26
|
+
// second record that answer could resolve to.
|
|
27
|
+
if (text === '' || seen.has(text)) {
|
|
28
|
+
continue
|
|
29
|
+
}
|
|
30
|
+
seen.add(text)
|
|
31
|
+
|
|
32
|
+
const after = Number(draft.after)
|
|
33
|
+
placed.push({
|
|
34
|
+
draft,
|
|
35
|
+
at: Number.isFinite(after) ? Math.min(Math.max(Math.trunc(after), 1), flow.length) : 1,
|
|
36
|
+
})
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Over the cap, the LATEST-anchored go: a story late in the flow gates the fewest steps behind
|
|
40
|
+
// it, while the queue that hands step 1 to step 2 is what makes everything after it reachable.
|
|
41
|
+
// The sort is stable, so two stories on the same step keep the order they were derived in.
|
|
42
|
+
const surviving = placed
|
|
43
|
+
.map((entry, order) => ({ ...entry, order }))
|
|
44
|
+
.sort((a, b) => a.at - b.at || a.order - b.order)
|
|
45
|
+
.slice(0, connectingStoryCap(flow.length))
|
|
46
|
+
|
|
47
|
+
// Bucket N holds what comes immediately after flow story N (1-based, as the prompt numbers them).
|
|
48
|
+
const buckets: ConnectingStoryDraft[][] = flow.map(() => [])
|
|
49
|
+
for (const { draft, at } of surviving) {
|
|
50
|
+
buckets[at - 1]!.push(draft)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return flow.flatMap(({ story, area }, index) => [
|
|
54
|
+
{ story, area, kind: StoryKind.Flow },
|
|
55
|
+
...buckets[index]!.map(draft => (
|
|
56
|
+
{ story: draft.story.trim(), area: draft.area, kind: StoryKind.Connective, after: index + 1 }
|
|
57
|
+
)),
|
|
58
|
+
])
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return { connectingStoryCap, mergeConnectingStories }
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export const connectingStoryHelper = createConnectingStoryHelper()
|
package/src/ba/helpers.ts
CHANGED
|
@@ -1,94 +1,10 @@
|
|
|
1
|
-
import type { StoryDraft } from
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import type { StoryDraft } from '../areas/types.js'
|
|
2
|
+
import { connectingStoryHelper } from './connecting.js'
|
|
3
|
+
import type { ConnectingStoryDraft, MergedStoryDraft } from './types.js'
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
* An N-step chain has N-1 joints, and a connecting story exists to bridge one of them — so the
|
|
9
|
-
* flow sizes its own supporting cast, and a three-step product can never end up with eight list
|
|
10
|
-
* screens. It is a CEILING, not a target: the prompt is told to write as few as its rules actually
|
|
11
|
-
* derived, and most flows land well below this.
|
|
12
|
-
*
|
|
13
|
-
* The real reason for a hard number: every story here becomes a full develop run the project's
|
|
14
|
-
* owner pays for.
|
|
15
|
-
*/
|
|
16
|
-
export const connectingStoryCap = (flowCount: number): number => Math.max(flowCount - 1, 0)
|
|
5
|
+
/** @deprecated compat:factory-refactor — use `connectingStoryHelper.connectingStoryCap(…)` */
|
|
6
|
+
export const connectingStoryCap = (flowCount: number): number => connectingStoryHelper.connectingStoryCap(flowCount)
|
|
17
7
|
|
|
18
|
-
/**
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Interleave the connecting stories into the flow they were derived from.
|
|
23
|
-
*
|
|
24
|
-
* `after` is an ANCHOR, not a position: it names the flow story whose result the connecting story
|
|
25
|
-
* displays, so the connecting story lands immediately behind it — which is also immediately in
|
|
26
|
-
* front of the step it leads into. The result is ONE ordered list, and it is the order records are
|
|
27
|
-
* created in.
|
|
28
|
-
*
|
|
29
|
-
* This is the only place the anchor is interpreted. Both halves of the feature — the prompt that
|
|
30
|
-
* produces it and the pipeline that persists the result — read it through here, or the two drift
|
|
31
|
-
* and nothing fails loudly enough to notice. The CLAMPED anchor is carried out on each connective
|
|
32
|
-
* entry as `after`, which is what the story card's `follows` relationship is written from.
|
|
33
|
-
*
|
|
34
|
-
* Four properties are deliberate:
|
|
35
|
-
*
|
|
36
|
-
* - **The flow subsequence is never disturbed.** Strip the connecting stories back out and you have
|
|
37
|
-
* `flow`, in `flow` order: story N still implements numbered step N. Everything that finds the
|
|
38
|
-
* primary story depends on that.
|
|
39
|
-
* - **Nothing precedes the first flow story.** An anchor below 1 is clamped up rather than opening a
|
|
40
|
-
* position in front of the flow — nothing can be listed before the step that produced it, and
|
|
41
|
-
* story 1 stays the enabling action.
|
|
42
|
-
* - **A placement is advice; the story is work already paid for.** An anchor past the end means
|
|
43
|
-
* "at the end", and one that is not a number at all means the front of the flow. Neither is a
|
|
44
|
-
* reason to lose a story.
|
|
45
|
-
* - **Ties keep the model's order**, which is the only ranking anything has.
|
|
46
|
-
*/
|
|
47
|
-
export const mergeConnectingStories = (
|
|
48
|
-
flow: StoryDraft[], connecting: ConnectingStoryDraft[]
|
|
49
|
-
): MergedStoryDraft[] => {
|
|
50
|
-
if (flow.length < 1) {
|
|
51
|
-
return []
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const seen = new Set(flow.map(({ story }) => canonical(story)))
|
|
55
|
-
const placed: Array<{ draft: ConnectingStoryDraft, at: number }> = []
|
|
56
|
-
|
|
57
|
-
for (const draft of connecting) {
|
|
58
|
-
const text = canonical(draft.story)
|
|
59
|
-
// A connecting story that repeats a flow story is not a second story: it is one develop run
|
|
60
|
-
// spent twice AND — since the home-screen detector matches its answer back by exact text — a
|
|
61
|
-
// second record that answer could resolve to.
|
|
62
|
-
if (text === '' || seen.has(text)) {
|
|
63
|
-
continue
|
|
64
|
-
}
|
|
65
|
-
seen.add(text)
|
|
66
|
-
|
|
67
|
-
const after = Number(draft.after)
|
|
68
|
-
placed.push({
|
|
69
|
-
draft,
|
|
70
|
-
at: Number.isFinite(after) ? Math.min(Math.max(Math.trunc(after), 1), flow.length) : 1,
|
|
71
|
-
})
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// Over the cap, the LATEST-anchored go: a story late in the flow gates the fewest steps behind
|
|
75
|
-
// it, while the queue that hands step 1 to step 2 is what makes everything after it reachable.
|
|
76
|
-
// The sort is stable, so two stories on the same step keep the order they were derived in.
|
|
77
|
-
const surviving = placed
|
|
78
|
-
.map((entry, order) => ({ ...entry, order }))
|
|
79
|
-
.sort((a, b) => a.at - b.at || a.order - b.order)
|
|
80
|
-
.slice(0, connectingStoryCap(flow.length))
|
|
81
|
-
|
|
82
|
-
// Bucket N holds what comes immediately after flow story N (1-based, as the prompt numbers them).
|
|
83
|
-
const buckets: ConnectingStoryDraft[][] = flow.map(() => [])
|
|
84
|
-
for (const { draft, at } of surviving) {
|
|
85
|
-
buckets[at - 1]!.push(draft)
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return flow.flatMap(({ story, area }, index) => [
|
|
89
|
-
{ story, area, kind: StoryKind.Flow },
|
|
90
|
-
...buckets[index]!.map(draft => (
|
|
91
|
-
{ story: draft.story.trim(), area: draft.area, kind: StoryKind.Connective, after: index + 1 }
|
|
92
|
-
)),
|
|
93
|
-
])
|
|
94
|
-
}
|
|
8
|
+
/** @deprecated compat:factory-refactor — use `connectingStoryHelper.mergeConnectingStories(…)` */
|
|
9
|
+
export const mergeConnectingStories = (flow: StoryDraft[], connecting: ConnectingStoryDraft[]): MergedStoryDraft[] =>
|
|
10
|
+
connectingStoryHelper.mergeConnectingStories(flow, connecting)
|
package/src/ba/index.ts
CHANGED
package/src/blueprint/types.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { ProjectTenancy } from '../areas/types.js'
|
|
2
2
|
import type { SubProject } from '../slot/consts.js'
|
|
3
|
-
import type { ViableSkill } from '../skills/consts.js'
|
|
4
|
-
import type { ViablePersona } from '../skills/roles.js'
|
|
3
|
+
import type { ViablePersona, ViableSkill } from '../skills/consts.js'
|
|
5
4
|
import type { TopologyDescriptor } from '../topology/types.js'
|
|
6
5
|
import { BlueprintPatchKind, LandingGatePreference } from './consts.js'
|
|
7
6
|
|
|
@@ -189,6 +188,7 @@ export interface BlueprintCapabilities {
|
|
|
189
188
|
marketingConsent: boolean
|
|
190
189
|
}
|
|
191
190
|
|
|
191
|
+
// Kept as a type: a mapped type over the blueprint's keys.
|
|
192
192
|
/** A partial override of a blueprint, deep-merged over the resolved value. */
|
|
193
193
|
export type BlueprintPatch = {
|
|
194
194
|
[K in keyof Blueprint]?: Blueprint[K] extends string ? Blueprint[K] : Partial<Blueprint[K]>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A project's branding as a connector reads it — what the generated application says about who
|
|
5
|
+
* made it, and the Google tag it loads.
|
|
6
|
+
*
|
|
7
|
+
* Every field is a string, `''` when unset, in the platform's own branding vocabulary. The
|
|
8
|
+
* platform credit is absent on purpose: hiding it is a paid capability behind its own gated route,
|
|
9
|
+
* and neither reading nor saving this record may reach it.
|
|
10
|
+
*/
|
|
11
|
+
export interface ConnectProjectBranding {
|
|
12
|
+
/** The copyright line in the application's footer. Never empty once saved. */
|
|
13
|
+
copyright: string
|
|
14
|
+
/** The organization's display name. Never empty once saved. */
|
|
15
|
+
organizationName: string
|
|
16
|
+
/** `''`, an `https://` URL, or a same-origin path such as `/terms` (the generated page). */
|
|
17
|
+
termsUrl: string
|
|
18
|
+
/** `''`, an `https://` URL, or a same-origin path such as `/privacy` (the generated page). */
|
|
19
|
+
privacyUrl: string
|
|
20
|
+
/** `''`, or a Google tag id: `GTM-…`, `G-…`, `GT-…`, `AW-…`, `DC-…`. */
|
|
21
|
+
googleTag: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A PATCH of a project's branding: every field optional, and an absent field keeps its current
|
|
26
|
+
* value. The platform merges it over what is stored, validates the result as a whole with the
|
|
27
|
+
* rules the web form uses, and answers the merged record.
|
|
28
|
+
*/
|
|
29
|
+
export interface ConnectProjectBrandingSave extends Partial<ConnectProjectBranding> {}
|
package/src/connect/consts.ts
CHANGED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ArchitectureCase, ConversionDecision, ConversionStage, ConversionStatus, ConvertibilityReason,
|
|
3
|
+
ConvertibilityVerdict, OriginKind, OriginShape, OriginState
|
|
4
|
+
} from '../../convert/consts.js'
|
|
5
|
+
import type { ConversionEstimate, StoryEstimateBand } from '../../convert/estimate/types.js'
|
|
6
|
+
import type { ConversionStackRef } from '../../convert/record/types.js'
|
|
7
|
+
import type { ConnectTarget, ConnectWaitReason } from '../consts.js'
|
|
8
|
+
import type { InquiryPayload } from '../ops/types.js'
|
|
9
|
+
|
|
10
|
+
/** Start a conversion of an existing project's code. */
|
|
11
|
+
export interface ConnectConvertCreateBody {
|
|
12
|
+
name?: string
|
|
13
|
+
about?: string
|
|
14
|
+
/** Where the converted target's tree will live. */
|
|
15
|
+
target?: ConnectTarget
|
|
16
|
+
/**
|
|
17
|
+
* Where the code comes from.
|
|
18
|
+
*
|
|
19
|
+
* Absent for a LOCAL target the connector is already attached to: the tree is the directory the
|
|
20
|
+
* session opened on, and there is nothing to fetch.
|
|
21
|
+
*/
|
|
22
|
+
origin?: { kind: OriginKind, repoUrl?: string, branch?: string }
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Start the conversion of a project already filed.
|
|
27
|
+
*
|
|
28
|
+
* `confirm` says a PERSON agreed to what the start uses: without it, a start that would spend the
|
|
29
|
+
* organization's `conversions` unit is refused with `ConnectConfirmationRequired` and nothing runs.
|
|
30
|
+
* A delegated conversion spends nothing and is never asked.
|
|
31
|
+
*/
|
|
32
|
+
export interface ConnectConvertStartBody {
|
|
33
|
+
confirm?: boolean
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** Decide what happens at a stage boundary. */
|
|
37
|
+
export interface ConnectConvertProceedBody {
|
|
38
|
+
decision: ConversionDecision
|
|
39
|
+
/** Free text the user added to the decision; recorded, never parsed. */
|
|
40
|
+
note?: string
|
|
41
|
+
/**
|
|
42
|
+
* A person agreed to what the stage costs. Without it, a stage that would spend credit limits or
|
|
43
|
+
* topped-up credits (its estimate past what is left of the conversion limit) is refused with
|
|
44
|
+
* `ConnectConfirmationRequired` — its estimate split packed — and nothing runs.
|
|
45
|
+
*/
|
|
46
|
+
confirm?: boolean
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Whether this origin can be converted, and what it will cost.
|
|
51
|
+
*
|
|
52
|
+
* Answered BEFORE anything is provisioned or charged, from the census alone — which is why it
|
|
53
|
+
* carries the counts it was decided from rather than a bare verdict.
|
|
54
|
+
*/
|
|
55
|
+
export interface ConvertCheck {
|
|
56
|
+
projectId: string
|
|
57
|
+
verdict: ConvertibilityVerdict
|
|
58
|
+
reasons: ConvertibilityReason[]
|
|
59
|
+
stack?: ConversionStackRef
|
|
60
|
+
architecture?: ArchitectureCase
|
|
61
|
+
shape: OriginShape
|
|
62
|
+
monorepo: boolean
|
|
63
|
+
/** Workspace members and directories nothing declares. Named, because each one is a decision. */
|
|
64
|
+
unlinked: string[]
|
|
65
|
+
files: number
|
|
66
|
+
bytes: number
|
|
67
|
+
/** Bulk data files found — sampled and described, never carried. */
|
|
68
|
+
bulk: number
|
|
69
|
+
estimate?: ConversionEstimate
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Everything a caller needs to draw the conversion's current state in one call. */
|
|
73
|
+
export interface ConversionStatusView {
|
|
74
|
+
projectId: string
|
|
75
|
+
stage: ConversionStage
|
|
76
|
+
status: ConversionStatus
|
|
77
|
+
/** The last decision the user made. */
|
|
78
|
+
decision?: ConversionDecision
|
|
79
|
+
verdict?: ConvertibilityVerdict
|
|
80
|
+
stack?: ConversionStackRef
|
|
81
|
+
/** What the conversion is rebuilding the project ONTO. Always the Viable stack today. */
|
|
82
|
+
targetStack?: ConversionStackRef
|
|
83
|
+
architecture?: ArchitectureCase
|
|
84
|
+
/** One per stage that has been estimated, newest last. */
|
|
85
|
+
estimates: ConversionEstimate[]
|
|
86
|
+
storyEstimate?: StoryEstimateBand
|
|
87
|
+
originState: OriginState
|
|
88
|
+
/** How many questions the conversion answered for itself. Each one is readable in the docs. */
|
|
89
|
+
assumptions: number
|
|
90
|
+
runId?: string
|
|
91
|
+
/** Set exactly when `status` is `Waiting`: the question the run stopped on. */
|
|
92
|
+
pendingInquiry?: InquiryPayload
|
|
93
|
+
waitingFor?: ConnectWaitReason
|
|
94
|
+
lastError?: string
|
|
95
|
+
updatedAt: string
|
|
96
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* What the platform injects when it mounts the connector routes.
|
|
5
|
+
*
|
|
6
|
+
* The names of the guard and the gates belong to the deployment, not to the contract: a connector
|
|
7
|
+
* API on another platform would guard the same paths with its own vocabulary. Everything else —
|
|
8
|
+
* paths, methods, schemas, parents — is fixed here so a client cannot address them differently.
|
|
9
|
+
*/
|
|
10
|
+
export interface ConnectEntrypointOptions {
|
|
11
|
+
/** The guard alias every connector route carries. */
|
|
12
|
+
guard: string
|
|
13
|
+
/** The gate alias and parameters that decide project ownership. */
|
|
14
|
+
gate?: { alias: string, params: string[] }
|
|
15
|
+
/**
|
|
16
|
+
* The gate that decides whether the caller may use the local-LLM mode.
|
|
17
|
+
*
|
|
18
|
+
* Applied to the one route that turns it on — opening a delegated session. Everything else is
|
|
19
|
+
* free: `cloud` is the default, and a project's own override is the platform's browser surface,
|
|
20
|
+
* not the connector's.
|
|
21
|
+
*/
|
|
22
|
+
localLlm?: { alias: string, params: string[] }
|
|
23
|
+
/** Path prefix; defaults to `/connect`. */
|
|
24
|
+
path?: string
|
|
25
|
+
}
|
|
@@ -10,8 +10,19 @@ import {
|
|
|
10
10
|
ConnectProjectIdSchema, ConnectSessionOpenSchema, ConnectSessionParamsSchema, ConnectPullQuerySchema,
|
|
11
11
|
ConnectStoryParamsSchema, InquiryAnswerSchema,
|
|
12
12
|
} from './schemas.js'
|
|
13
|
-
import type {
|
|
14
|
-
import type {
|
|
13
|
+
import type { ConnectProjectBranding, ConnectProjectBrandingSave } from './branding/types.js'
|
|
14
|
+
import type {
|
|
15
|
+
ConnectConvertCreateBody, ConnectConvertProceedBody, ConnectConvertStartBody, ConversionStatusView, ConvertCheck
|
|
16
|
+
} from './conversion/types.js'
|
|
17
|
+
import type { ConnectEntrypointOptions } from './entrypoints/types.js'
|
|
18
|
+
import type { ConnectKitApplyBody, ConnectKitApplyResult, ConnectKitDescribe } from './kit/types.js'
|
|
19
|
+
import type { ConnectInquiryAnswerBody, ConnectOpResult } from './ops/types.js'
|
|
20
|
+
import type { ConnectPipelineParams, ConnectPipelineResumeBody, ConnectPipelineState } from './pipeline/types.js'
|
|
21
|
+
import type {
|
|
22
|
+
ConnectAttachBody, ConnectConfirmBody, ConnectCreateBody, ConnectModifyBody, ConnectProjectStatus,
|
|
23
|
+
ConnectStoryStatus
|
|
24
|
+
} from './project/types.js'
|
|
25
|
+
import type { ConnectPullQuery, ConnectSessionOpen, ConnectSessionParams } from './session/types.js'
|
|
15
26
|
|
|
16
27
|
/**
|
|
17
28
|
* Declare the connector's HTTP surface — exactly the routes a connector calls: the session (long
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
/** The conversion verb a {@link ConnectConfirmationRequired} stopped. */
|
|
4
|
+
export type ConnectConfirmationAction = 'convert-start' | 'convert-proceed'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* What a person is asked to agree to before a conversion verb spends anything — credits, except
|
|
8
|
+
* `moneyUsd`. `cap` is the plan's conversion limit this conversion runs under (`0` when no plan unit
|
|
9
|
+
* covers it) and `spent` what the conversion has used of it so far; `estimate` is the stage's
|
|
10
|
+
* estimate (`0` while nothing has priced it), of which `fromAllowance` comes from the conversion
|
|
11
|
+
* limit, `fromCreditLimits` from the organization's open credit limits, and the rest from topped-up
|
|
12
|
+
* credits — `moneyUsd`, the only money figure.
|
|
13
|
+
*/
|
|
14
|
+
export interface ConnectConfirmation {
|
|
15
|
+
action: ConnectConfirmationAction
|
|
16
|
+
cap: number
|
|
17
|
+
spent: number
|
|
18
|
+
estimate: number
|
|
19
|
+
fromAllowance: number
|
|
20
|
+
fromCreditLimits: number
|
|
21
|
+
moneyUsd: number
|
|
22
|
+
}
|
package/src/connect/errors.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ResilientError } from '@owlmeans/error'
|
|
2
|
-
import type { ConnectConfirmation, ConnectConfirmationAction } from './types.js'
|
|
2
|
+
import type { ConnectConfirmation, ConnectConfirmationAction } from './errors/types.js'
|
|
3
3
|
|
|
4
4
|
export class ConnectError extends ResilientError {
|
|
5
5
|
public static override typeName = `ViableConnect${ResilientError.typeName}`
|
package/src/connect/index.ts
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
export * from './consts.js'
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './model-tier.js'
|
|
3
3
|
export * from './schemas.js'
|
|
4
4
|
export * from './errors.js'
|
|
5
5
|
export * from './entrypoints.js'
|
|
6
6
|
export * from './references.js'
|
|
7
|
-
export type * from './types.js'
|
|
8
|
-
export type * from './ops.js'
|
|
7
|
+
export type * from './session/types.js'
|
|
8
|
+
export type * from './ops/types.js'
|
|
9
|
+
export type * from './project/types.js'
|
|
10
|
+
export type * from './settings/types.js'
|
|
11
|
+
export type * from './branding/types.js'
|
|
12
|
+
export type * from './pipeline/types.js'
|
|
13
|
+
export type * from './conversion/types.js'
|
|
14
|
+
export type * from './kit/types.js'
|
|
15
|
+
export type * from './entrypoints/types.js'
|
|
16
|
+
export type * from './errors/types.js'
|
|
17
|
+
export type * from './references/types.js'
|
|
18
|
+
export type * from './model-tier/types.js'
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
/** One status of a planning kit's flow. `intrinsic` is the planning intrinsic it maps to. */
|
|
4
|
+
export interface PlanningKitStatusView {
|
|
5
|
+
key: string
|
|
6
|
+
label: string
|
|
7
|
+
intrinsic: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/** One status flow a planning kit declares. */
|
|
11
|
+
export interface PlanningKitFlowView {
|
|
12
|
+
key: string
|
|
13
|
+
label: string
|
|
14
|
+
statuses: PlanningKitStatusView[]
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** One card type a planning kit declares; `flow` is the key of its main flow. */
|
|
18
|
+
export interface PlanningKitTypeView {
|
|
19
|
+
key: string
|
|
20
|
+
label: string
|
|
21
|
+
flow: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A planning kit as a connector sees it: a ready set of card types and status flows for one kind
|
|
26
|
+
* of work-management product, written into the target's common package on `apply`.
|
|
27
|
+
*/
|
|
28
|
+
export interface PlanningKitView {
|
|
29
|
+
id: string
|
|
30
|
+
/** The work kind the kit serves — a bare string, so a newer kind never fails an older reader. */
|
|
31
|
+
kind: string
|
|
32
|
+
title: string
|
|
33
|
+
purpose: string
|
|
34
|
+
/** The project-level container type the kit's cards live in. */
|
|
35
|
+
container: { key: string, label: string }
|
|
36
|
+
types: PlanningKitTypeView[]
|
|
37
|
+
flows: PlanningKitFlowView[]
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** What `project.kit.describe` answers. */
|
|
41
|
+
export interface ConnectKitDescribe {
|
|
42
|
+
kits: PlanningKitView[]
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** Apply one kit; `types` keeps only these card-type keys of it (every type when omitted). */
|
|
46
|
+
export interface ConnectKitApplyBody {
|
|
47
|
+
kit: string
|
|
48
|
+
types?: string[]
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** What `project.kit.apply` answers: the type keys written, those left out, and warnings. */
|
|
52
|
+
export interface ConnectKitApplyResult {
|
|
53
|
+
applied: string[]
|
|
54
|
+
skipped: string[]
|
|
55
|
+
warnings: string[]
|
|
56
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ModelTier } from '../consts.js'
|
|
2
|
+
|
|
3
|
+
/** Which model tier a platform role runs on, and how a tier is placed on what a parent offers. */
|
|
4
|
+
export interface ModelTierHelper {
|
|
5
|
+
/** The tier a platform role asks for; a role the table does not name is `Standard`. */
|
|
6
|
+
tierOfRole: (role: string) => ModelTier
|
|
7
|
+
/**
|
|
8
|
+
* Pick the best tier a parent actually offers, never below what was asked for by more than the
|
|
9
|
+
* offer allows.
|
|
10
|
+
*
|
|
11
|
+
* A parent that offers only one model answers every task with it; a parent that offers two gets
|
|
12
|
+
* the nearer of the two. Silence is not an option — a task the connector cannot place is a run
|
|
13
|
+
* that stops.
|
|
14
|
+
*/
|
|
15
|
+
clampTier: (wanted: ModelTier, offered: ModelTier[]) => ModelTier
|
|
16
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { MODEL_TIER_ROLES, ModelTier } from './consts.js'
|
|
2
|
+
import type { ModelTierHelper } from './model-tier/types.js'
|
|
3
|
+
|
|
4
|
+
export const createModelTierHelper = (): ModelTierHelper => {
|
|
5
|
+
const tierOfRole = (role: string): ModelTier =>
|
|
6
|
+
MODEL_TIER_ROLES[role] ?? ModelTier.Standard
|
|
7
|
+
|
|
8
|
+
const clampTier = (wanted: ModelTier, offered: ModelTier[]): ModelTier => {
|
|
9
|
+
if (offered.length < 1 || offered.includes(wanted)) return wanted
|
|
10
|
+
const ladder = [ModelTier.Strong, ModelTier.Standard, ModelTier.Cheap]
|
|
11
|
+
const from = ladder.indexOf(wanted)
|
|
12
|
+
// Prefer a stronger model over a weaker one: the task was sized for `wanted`.
|
|
13
|
+
for (let i = from; i >= 0; --i) if (offered.includes(ladder[i])) return ladder[i]
|
|
14
|
+
for (let i = from + 1; i < ladder.length; ++i) if (offered.includes(ladder[i])) return ladder[i]
|
|
15
|
+
|
|
16
|
+
return wanted
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return { tierOfRole, clampTier }
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const modelTierHelper = createModelTierHelper()
|