@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
|
@@ -1,335 +1,226 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A compact, runtime-free description of how an agent message should be presented.
|
|
3
|
-
*
|
|
4
|
-
* The server emits this with thinking events and the browser refines it as streaming output
|
|
5
|
-
* becomes parseable. Keeping the vocabulary here prevents the two runtimes from drifting into
|
|
6
|
-
* their own guesses about the same model response.
|
|
7
|
-
*/
|
|
8
|
-
export enum AgentMessageCategory {
|
|
9
|
-
Code = 'code',
|
|
10
|
-
Diff = 'diff',
|
|
11
|
-
Structured = 'structured',
|
|
12
|
-
Markdown = 'markdown',
|
|
13
|
-
Plain = 'plain',
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export enum AgentCodeLanguage {
|
|
17
|
-
ReactTsx = 'react-tsx',
|
|
18
|
-
Css = 'css',
|
|
19
|
-
TypeScript = 'typescript',
|
|
20
|
-
Json = 'json',
|
|
21
|
-
Other = 'other',
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/** A semantic shape that the manager can render as a purpose-built card. */
|
|
25
|
-
export enum AgentStructuredKind {
|
|
26
|
-
ToolCalls = 'tool-calls',
|
|
27
|
-
ArtifactSelection = 'artifact-selection',
|
|
28
|
-
EntitySelection = 'entity-selection',
|
|
29
|
-
StoryPlan = 'story-plan',
|
|
30
|
-
ScreenPlan = 'screen-plan',
|
|
31
|
-
ComponentPlan = 'component-plan',
|
|
32
|
-
TransitionPlan = 'transition-plan',
|
|
33
|
-
EntrypointSelection = 'entrypoint-selection',
|
|
34
|
-
AccessPolicy = 'access-policy',
|
|
35
|
-
ScaffoldPlan = 'scaffold-plan',
|
|
36
|
-
RuntimeDecision = 'runtime-decision',
|
|
37
|
-
CandidateRanking = 'candidate-ranking',
|
|
38
|
-
Decision = 'decision',
|
|
39
|
-
GenericRecord = 'generic-record',
|
|
40
|
-
GenericList = 'generic-list',
|
|
41
|
-
GenericValue = 'generic-value',
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export enum AgentMarkdownKind {
|
|
45
|
-
Specification = 'specification',
|
|
46
|
-
DesignDocument = 'design-document',
|
|
47
|
-
Documentation = 'documentation',
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/** The family of specialist that produced an output, not an authorization role. */
|
|
51
|
-
export enum AgentMessageRole {
|
|
52
|
-
Technical = 'technical',
|
|
53
|
-
Analytical = 'analytical',
|
|
54
|
-
Product = 'product',
|
|
55
|
-
Ux = 'ux',
|
|
56
|
-
VisualDesign = 'visual-design',
|
|
57
|
-
Architect = 'architect',
|
|
58
|
-
Developer = 'developer',
|
|
59
|
-
Repair = 'repair',
|
|
60
|
-
Orchestrator = 'orchestrator',
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export interface AgentCodePresentation {
|
|
64
|
-
category: AgentMessageCategory.Code | AgentMessageCategory.Diff
|
|
65
|
-
language: AgentCodeLanguage
|
|
66
|
-
role: AgentMessageRole
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export interface AgentStructuredPresentation {
|
|
70
|
-
category: AgentMessageCategory.Structured
|
|
71
|
-
structure: AgentStructuredKind
|
|
72
|
-
role: AgentMessageRole
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export interface AgentMarkdownPresentation {
|
|
76
|
-
category: AgentMessageCategory.Markdown
|
|
77
|
-
document: AgentMarkdownKind
|
|
78
|
-
role: AgentMessageRole
|
|
79
|
-
}
|
|
80
1
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
2
|
+
import { agentLoopActions, codeActions, documentActions, structuredActions } from './consts.local.js'
|
|
3
|
+
import { AgentCodeLanguage, AgentMarkdownKind, AgentMessageCategory, AgentMessageRole, AgentStructuredKind } from './consts.js'
|
|
4
|
+
import type { RecordValue } from './types.local.js'
|
|
5
|
+
import type { AgentMessageClassificationInput, AgentMessagePresentation } from './types.js'
|
|
6
|
+
import type { AgentPresentationHelper } from './presentation/types.js'
|
|
7
|
+
|
|
8
|
+
export const createAgentPresentationHelper = (): AgentPresentationHelper => {
|
|
9
|
+
const asRecord = (value: unknown): RecordValue | undefined =>
|
|
10
|
+
value != null && typeof value === 'object' && !Array.isArray(value)
|
|
11
|
+
? value as RecordValue
|
|
12
|
+
: undefined
|
|
13
|
+
|
|
14
|
+
const actionOf = (input: AgentMessageClassificationInput): string => input.action?.toLowerCase() ?? ''
|
|
15
|
+
|
|
16
|
+
const sourceOf = (input: AgentMessageClassificationInput): string =>
|
|
17
|
+
`${input.agent ?? ''} ${input.helper ?? ''}`.toLowerCase()
|
|
18
|
+
|
|
19
|
+
const contentOf = (input: AgentMessageClassificationInput): string => input.text?.trim() ?? ''
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Source extraction is an internal context-reduction pass. Its terminal tool call contains only
|
|
23
|
+
* line ranges, which are useful to the coder but add no useful information to a person's journal.
|
|
24
|
+
*/
|
|
25
|
+
const isAgentMessageHidden = (input: AgentMessageClassificationInput): boolean =>
|
|
26
|
+
actionOf(input) === 'source-extract'
|
|
27
|
+
|
|
28
|
+
/** Maps the attribution that reached the event boundary to the visual specialist family. */
|
|
29
|
+
const agentMessageRoleOf = (input: AgentMessageClassificationInput): AgentMessageRole => {
|
|
30
|
+
const source = sourceOf(input)
|
|
31
|
+
const action = actionOf(input)
|
|
32
|
+
|
|
33
|
+
if (action === 'arbitrary-modification' || source.includes('orchestrator')) return AgentMessageRole.Orchestrator
|
|
34
|
+
if (source.includes('fix')) return AgentMessageRole.Repair
|
|
35
|
+
if (source.includes('coder') || source.includes('developer') || codeActions.has(action)) return AgentMessageRole.Developer
|
|
36
|
+
if (source.includes('visual') || source.includes('ui-helper')) return AgentMessageRole.VisualDesign
|
|
37
|
+
if (source.includes('ux-')) return AgentMessageRole.Ux
|
|
38
|
+
if (source.includes('business') || source.includes('ba-') || source.includes('analysis') || source.includes('analyst')) return AgentMessageRole.Analytical
|
|
39
|
+
if (source.includes('product') || source.includes('naming')) return AgentMessageRole.Product
|
|
40
|
+
if (source.includes('architect') || source.includes('arch') || source.includes('layout-helper') ||
|
|
41
|
+
source.includes('api-helper') || source.includes('access-helper') || source.includes('datalayer-helper') ||
|
|
42
|
+
source.includes('domain') || source.includes('nav-helper') || source.includes('ui-com-helper') ||
|
|
43
|
+
source.includes('ui-state-helper')) return AgentMessageRole.Architect
|
|
44
|
+
return AgentMessageRole.Technical
|
|
45
|
+
}
|
|
85
46
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
/** The attribution and content available to either side of a thinking event. */
|
|
93
|
-
export interface AgentMessageClassificationInput {
|
|
94
|
-
agent?: string
|
|
95
|
-
helper?: string
|
|
96
|
-
action?: string
|
|
97
|
-
outputType?: string
|
|
98
|
-
text?: string
|
|
99
|
-
value?: unknown
|
|
100
|
-
}
|
|
47
|
+
/** Pulls a schema argument out of LangChain's serialised tool-call shape. */
|
|
48
|
+
const agentToolCallArguments = (value: unknown): unknown => {
|
|
49
|
+
if (!Array.isArray(value) || value.length !== 1) return value
|
|
50
|
+
const call = asRecord(value[0])
|
|
51
|
+
return call?.args ?? value
|
|
52
|
+
}
|
|
101
53
|
|
|
102
|
-
|
|
54
|
+
const structuredKindOf = (value: unknown): AgentStructuredKind | undefined => {
|
|
55
|
+
if (value == null) return undefined
|
|
103
56
|
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
'describe-ui-layout': AgentMarkdownKind.DesignDocument,
|
|
111
|
-
}
|
|
57
|
+
const toolArgs = agentToolCallArguments(value)
|
|
58
|
+
const object = asRecord(toolArgs)
|
|
59
|
+
if (object == null) {
|
|
60
|
+
if (Array.isArray(toolArgs)) return AgentStructuredKind.GenericList
|
|
61
|
+
return undefined
|
|
62
|
+
}
|
|
112
63
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
'derive-connecting-stories': AgentStructuredKind.StoryPlan,
|
|
124
|
-
'derive-area-scaffold-stories': AgentStructuredKind.StoryPlan,
|
|
125
|
-
'describe-ux-story-transitions': AgentStructuredKind.TransitionPlan,
|
|
126
|
-
'find-entrypoint-for-screen': AgentStructuredKind.EntrypointSelection,
|
|
127
|
-
'describe-api-access': AgentStructuredKind.AccessPolicy,
|
|
128
|
-
'describe-screen-access': AgentStructuredKind.AccessPolicy,
|
|
129
|
-
'plan-scaffold': AgentStructuredKind.ScaffoldPlan,
|
|
130
|
-
'runtime-gate': AgentStructuredKind.RuntimeDecision,
|
|
131
|
-
'detect-story-with-home-screen': AgentStructuredKind.CandidateRanking,
|
|
132
|
-
}
|
|
64
|
+
// Checked ahead of the single-array shapes below: a scaffold plan carries its own `stories`
|
|
65
|
+
// array (so the StoryPlan check would otherwise swallow it), and a runtime decision straight
|
|
66
|
+
// from the MODEL never carries `actor`/`worker` — those are added only once the decision is
|
|
67
|
+
// persisted onto a StoryDesign — so requiring them here missed every live model call.
|
|
68
|
+
if ('identity' in object && 'guestHome' in object && 'areas' in object && 'stories' in object) {
|
|
69
|
+
return AgentStructuredKind.ScaffoldPlan
|
|
70
|
+
}
|
|
71
|
+
if (Array.isArray(object.jobs) && Array.isArray(object.agents) && 'kv' in object) {
|
|
72
|
+
return AgentStructuredKind.RuntimeDecision
|
|
73
|
+
}
|
|
133
74
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
75
|
+
if (Array.isArray(object.files)) return AgentStructuredKind.ArtifactSelection
|
|
76
|
+
if (Array.isArray(object.entities)) return AgentStructuredKind.EntitySelection
|
|
77
|
+
if (Array.isArray(object.stories)) return AgentStructuredKind.StoryPlan
|
|
78
|
+
if (Array.isArray(object.screens)) return AgentStructuredKind.ScreenPlan
|
|
79
|
+
if (Array.isArray(object.components)) return AgentStructuredKind.ComponentPlan
|
|
80
|
+
if (Array.isArray(object.transitions)) return AgentStructuredKind.TransitionPlan
|
|
81
|
+
if (Array.isArray(object.entries)) return AgentStructuredKind.EntrypointSelection
|
|
82
|
+
if (Array.isArray(object.candidates)) return AgentStructuredKind.CandidateRanking
|
|
83
|
+
if (Object.values(object).some(value => {
|
|
84
|
+
const entry = asRecord(value)
|
|
85
|
+
return entry != null && Array.isArray(entry.permissions) && 'level' in entry
|
|
86
|
+
})) return AgentStructuredKind.AccessPolicy
|
|
87
|
+
return AgentStructuredKind.GenericRecord
|
|
88
|
+
}
|
|
138
89
|
|
|
139
|
-
const
|
|
90
|
+
const decisionAction = (action: string): boolean =>
|
|
91
|
+
action.startsWith('should-') || action.startsWith('is-') || action.includes('blueprint-case') || action.includes('choose-case')
|
|
140
92
|
|
|
141
|
-
const
|
|
142
|
-
|
|
93
|
+
const fileExtensionLanguage = (path: string): AgentCodeLanguage => {
|
|
94
|
+
const name = path.toLowerCase().split('?')[0]
|
|
95
|
+
if (/\.(tsx|jsx)$/.test(name)) return AgentCodeLanguage.ReactTsx
|
|
96
|
+
if (/\.css$/.test(name)) return AgentCodeLanguage.Css
|
|
97
|
+
if (/\.(ts|mts|cts|js|mjs|cjs)$/.test(name)) return AgentCodeLanguage.TypeScript
|
|
98
|
+
if (/\.json$/.test(name)) return AgentCodeLanguage.Json
|
|
99
|
+
return AgentCodeLanguage.Other
|
|
100
|
+
}
|
|
143
101
|
|
|
144
|
-
|
|
102
|
+
/** Finds the language of a unified diff from its destination (or source) file path. */
|
|
103
|
+
const agentDiffLanguageOf = (text: string): AgentCodeLanguage => {
|
|
104
|
+
const match = text.match(/^\+\+\+\s+(?:b\/)?(.+)$/m) ?? text.match(/^---\s+(?:a\/)?(.+)$/m)
|
|
105
|
+
return match == null ? AgentCodeLanguage.Other : fileExtensionLanguage(match[1])
|
|
106
|
+
}
|
|
145
107
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
const action = actionOf(input)
|
|
157
|
-
|
|
158
|
-
if (action === 'arbitrary-modification' || source.includes('orchestrator')) return AgentMessageRole.Orchestrator
|
|
159
|
-
if (source.includes('fix')) return AgentMessageRole.Repair
|
|
160
|
-
if (source.includes('coder') || source.includes('developer') || codeActions.has(action)) return AgentMessageRole.Developer
|
|
161
|
-
if (source.includes('visual') || source.includes('ui-helper')) return AgentMessageRole.VisualDesign
|
|
162
|
-
if (source.includes('ux-')) return AgentMessageRole.Ux
|
|
163
|
-
if (source.includes('business') || source.includes('ba-') || source.includes('analysis') || source.includes('analyst')) return AgentMessageRole.Analytical
|
|
164
|
-
if (source.includes('product') || source.includes('naming')) return AgentMessageRole.Product
|
|
165
|
-
if (source.includes('architect') || source.includes('arch') || source.includes('layout-helper') ||
|
|
166
|
-
source.includes('api-helper') || source.includes('access-helper') || source.includes('datalayer-helper') ||
|
|
167
|
-
source.includes('domain') || source.includes('nav-helper') || source.includes('ui-com-helper') ||
|
|
168
|
-
source.includes('ui-state-helper')) return AgentMessageRole.Architect
|
|
169
|
-
return AgentMessageRole.Technical
|
|
170
|
-
}
|
|
108
|
+
const fencedLanguageOf = (text: string): AgentCodeLanguage | undefined => {
|
|
109
|
+
const match = text.match(/^```([\w+-]+)/m)
|
|
110
|
+
const language = match?.[1]?.toLowerCase()
|
|
111
|
+
if (language == null) return undefined
|
|
112
|
+
if (['tsx', 'jsx', 'react'].includes(language)) return AgentCodeLanguage.ReactTsx
|
|
113
|
+
if (language === 'css') return AgentCodeLanguage.Css
|
|
114
|
+
if (['ts', 'typescript', 'js', 'javascript'].includes(language)) return AgentCodeLanguage.TypeScript
|
|
115
|
+
if (language === 'json') return AgentCodeLanguage.Json
|
|
116
|
+
return AgentCodeLanguage.Other
|
|
117
|
+
}
|
|
171
118
|
|
|
172
|
-
/**
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
119
|
+
/** Conservative code detection; prose with one identifier remains plain text. */
|
|
120
|
+
const agentCodeLanguageOf = (text: string): AgentCodeLanguage => {
|
|
121
|
+
const content = text.trim().replace(/^```[\w+-]*\n?|\n?```$/g, '')
|
|
122
|
+
const fenced = fencedLanguageOf(text)
|
|
123
|
+
if (fenced != null) return fenced
|
|
124
|
+
if (content === '') return AgentCodeLanguage.Other
|
|
125
|
+
try {
|
|
126
|
+
JSON.parse(content)
|
|
127
|
+
if (/^[{[]/.test(content)) return AgentCodeLanguage.Json
|
|
128
|
+
} catch {
|
|
129
|
+
// The remaining heuristics deliberately require source-like syntax.
|
|
130
|
+
}
|
|
131
|
+
if (/<[A-Za-z][\w.:-]*(?:\s[^>]*)?\/>|<[A-Za-z][\w.:-]*(?:\s[^>]*)?>/.test(content) &&
|
|
132
|
+
/\b(import|export|const|function|return)\b/.test(content)) return AgentCodeLanguage.ReactTsx
|
|
133
|
+
if (/(^|\n)\s*(?:[.#][\w-]+|[a-z][\w-]*(?:\[[^\]]+\])?)\s*\{[^}]*:[^}]*\}/.test(content)) {
|
|
134
|
+
return AgentCodeLanguage.Css
|
|
135
|
+
}
|
|
136
|
+
if (/\b(import|export|interface|type|const|let|function|class)\b/.test(content) &&
|
|
137
|
+
/[;{}]|=>/.test(content)) return AgentCodeLanguage.TypeScript
|
|
138
|
+
return AgentCodeLanguage.Other
|
|
139
|
+
}
|
|
178
140
|
|
|
179
|
-
const
|
|
180
|
-
|
|
141
|
+
const isUnifiedDiff = (text: string): boolean =>
|
|
142
|
+
/^---\s+.+\n\+\+\+\s+.+/m.test(text) || (/^@@\s+[-+]/m.test(text) && /^(?:\+|-)[^+-]/m.test(text))
|
|
181
143
|
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
144
|
+
const markdownKindOf = (text: string): AgentMarkdownKind | undefined => {
|
|
145
|
+
if (/^#{1,6}\s+/m.test(text) || /^>\s+/m.test(text) || /^\|.+\|\s*$/m.test(text)) {
|
|
146
|
+
return AgentMarkdownKind.Documentation
|
|
147
|
+
}
|
|
148
|
+
const listItems = text.match(/^\s*(?:[-*+]\s+|\d+[.)]\s+)/gm)?.length ?? 0
|
|
149
|
+
return listItems >= 2 ? AgentMarkdownKind.Documentation : undefined
|
|
187
150
|
}
|
|
188
151
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
152
|
+
const isGenericStructure = (kind: AgentStructuredKind | undefined): boolean =>
|
|
153
|
+
kind == null || kind === AgentStructuredKind.GenericRecord || kind === AgentStructuredKind.GenericList ||
|
|
154
|
+
kind === AgentStructuredKind.GenericValue
|
|
155
|
+
|
|
156
|
+
const classifyAgentMessage = (input: AgentMessageClassificationInput): AgentMessagePresentation => {
|
|
157
|
+
const role = agentMessageRoleOf(input)
|
|
158
|
+
const action = actionOf(input)
|
|
159
|
+
const text = contentOf(input)
|
|
160
|
+
const structure = structuredKindOf(input.value)
|
|
161
|
+
|
|
162
|
+
if (input.outputType === 'tool_calls') {
|
|
163
|
+
// A single pinned-schema call resolves to its own card; everything else — several calls in
|
|
164
|
+
// one turn, an unconstrained agent-loop action, or a shape too generic to be informative —
|
|
165
|
+
// is a tool call, not a schema result.
|
|
166
|
+
const isMultiCall = Array.isArray(input.value) && input.value.length > 1
|
|
167
|
+
const isToolCalls = isMultiCall || agentLoopActions.has(action) || isGenericStructure(structure)
|
|
168
|
+
return {
|
|
169
|
+
category: AgentMessageCategory.Structured,
|
|
170
|
+
structure: isToolCalls ? AgentStructuredKind.ToolCalls : structure!,
|
|
171
|
+
role,
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (structure != null) return { category: AgentMessageCategory.Structured, structure, role }
|
|
175
|
+
const actionStructure = structuredActions[action]
|
|
176
|
+
if (actionStructure != null) return { category: AgentMessageCategory.Structured, structure: actionStructure, role }
|
|
177
|
+
if (decisionAction(action)) return { category: AgentMessageCategory.Structured, structure: AgentStructuredKind.Decision, role }
|
|
178
|
+
if (isUnifiedDiff(text) || action === 'update-code') {
|
|
179
|
+
return { category: AgentMessageCategory.Diff, language: agentDiffLanguageOf(text), role }
|
|
180
|
+
}
|
|
181
|
+
if (codeActions.has(action) || fencedLanguageOf(text) != null || agentCodeLanguageOf(text) !== AgentCodeLanguage.Other) {
|
|
182
|
+
return { category: AgentMessageCategory.Code, language: agentCodeLanguageOf(text), role }
|
|
183
|
+
}
|
|
184
|
+
const document = documentActions[action] ?? markdownKindOf(text)
|
|
185
|
+
if (document != null) return { category: AgentMessageCategory.Markdown, document, role }
|
|
186
|
+
if (input.value != null) {
|
|
187
|
+
return {
|
|
188
|
+
category: AgentMessageCategory.Structured,
|
|
189
|
+
structure: Array.isArray(input.value) ? AgentStructuredKind.GenericList : AgentStructuredKind.GenericValue,
|
|
190
|
+
role,
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return { category: AgentMessageCategory.Plain, role }
|
|
198
194
|
}
|
|
199
195
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
if (Array.isArray(object.components)) return AgentStructuredKind.ComponentPlan
|
|
205
|
-
if (Array.isArray(object.transitions)) return AgentStructuredKind.TransitionPlan
|
|
206
|
-
if (Array.isArray(object.entries)) return AgentStructuredKind.EntrypointSelection
|
|
207
|
-
if (Array.isArray(object.candidates)) return AgentStructuredKind.CandidateRanking
|
|
208
|
-
if (Object.values(object).some(value => {
|
|
209
|
-
const entry = asRecord(value)
|
|
210
|
-
return entry != null && Array.isArray(entry.permissions) && 'level' in entry
|
|
211
|
-
})) return AgentStructuredKind.AccessPolicy
|
|
212
|
-
return AgentStructuredKind.GenericRecord
|
|
196
|
+
return {
|
|
197
|
+
isAgentMessageHidden, agentMessageRoleOf, agentToolCallArguments, agentDiffLanguageOf, agentCodeLanguageOf,
|
|
198
|
+
isUnifiedDiff, classifyAgentMessage,
|
|
199
|
+
}
|
|
213
200
|
}
|
|
214
201
|
|
|
215
|
-
const
|
|
216
|
-
action.startsWith('should-') || action.startsWith('is-') || action.includes('blueprint-case') || action.includes('choose-case')
|
|
202
|
+
export const agentPresentationHelper = createAgentPresentationHelper()
|
|
217
203
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
if (/\.css$/.test(name)) return AgentCodeLanguage.Css
|
|
222
|
-
if (/\.(ts|mts|cts|js|mjs|cjs)$/.test(name)) return AgentCodeLanguage.TypeScript
|
|
223
|
-
if (/\.json$/.test(name)) return AgentCodeLanguage.Json
|
|
224
|
-
return AgentCodeLanguage.Other
|
|
225
|
-
}
|
|
204
|
+
/** @deprecated compat:factory-refactor — use `agentPresentationHelper.isAgentMessageHidden(…)` */
|
|
205
|
+
export const isAgentMessageHidden = (input: AgentMessageClassificationInput): boolean =>
|
|
206
|
+
agentPresentationHelper.isAgentMessageHidden(input)
|
|
226
207
|
|
|
227
|
-
/**
|
|
228
|
-
export const
|
|
229
|
-
|
|
230
|
-
return match == null ? AgentCodeLanguage.Other : fileExtensionLanguage(match[1])
|
|
231
|
-
}
|
|
208
|
+
/** @deprecated compat:factory-refactor — use `agentPresentationHelper.agentMessageRoleOf(…)` */
|
|
209
|
+
export const agentMessageRoleOf = (input: AgentMessageClassificationInput): AgentMessageRole =>
|
|
210
|
+
agentPresentationHelper.agentMessageRoleOf(input)
|
|
232
211
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
const language = match?.[1]?.toLowerCase()
|
|
236
|
-
if (language == null) return undefined
|
|
237
|
-
if (['tsx', 'jsx', 'react'].includes(language)) return AgentCodeLanguage.ReactTsx
|
|
238
|
-
if (language === 'css') return AgentCodeLanguage.Css
|
|
239
|
-
if (['ts', 'typescript', 'js', 'javascript'].includes(language)) return AgentCodeLanguage.TypeScript
|
|
240
|
-
if (language === 'json') return AgentCodeLanguage.Json
|
|
241
|
-
return AgentCodeLanguage.Other
|
|
242
|
-
}
|
|
212
|
+
/** @deprecated compat:factory-refactor — use `agentPresentationHelper.agentToolCallArguments(…)` */
|
|
213
|
+
export const agentToolCallArguments = (value: unknown): unknown => agentPresentationHelper.agentToolCallArguments(value)
|
|
243
214
|
|
|
244
|
-
/**
|
|
245
|
-
export const
|
|
246
|
-
const content = text.trim().replace(/^```[\w+-]*\n?|\n?```$/g, '')
|
|
247
|
-
const fenced = fencedLanguageOf(text)
|
|
248
|
-
if (fenced != null) return fenced
|
|
249
|
-
if (content === '') return AgentCodeLanguage.Other
|
|
250
|
-
try {
|
|
251
|
-
JSON.parse(content)
|
|
252
|
-
if (/^[{[]/.test(content)) return AgentCodeLanguage.Json
|
|
253
|
-
} catch {
|
|
254
|
-
// The remaining heuristics deliberately require source-like syntax.
|
|
255
|
-
}
|
|
256
|
-
if (/<[A-Za-z][\w.:-]*(?:\s[^>]*)?\/>|<[A-Za-z][\w.:-]*(?:\s[^>]*)?>/.test(content) &&
|
|
257
|
-
/\b(import|export|const|function|return)\b/.test(content)) return AgentCodeLanguage.ReactTsx
|
|
258
|
-
if (/(^|\n)\s*(?:[.#][\w-]+|[a-z][\w-]*(?:\[[^\]]+\])?)\s*\{[^}]*:[^}]*\}/.test(content)) {
|
|
259
|
-
return AgentCodeLanguage.Css
|
|
260
|
-
}
|
|
261
|
-
if (/\b(import|export|interface|type|const|let|function|class)\b/.test(content) &&
|
|
262
|
-
/[;{}]|=>/.test(content)) return AgentCodeLanguage.TypeScript
|
|
263
|
-
return AgentCodeLanguage.Other
|
|
264
|
-
}
|
|
215
|
+
/** @deprecated compat:factory-refactor — use `agentPresentationHelper.agentDiffLanguageOf(…)` */
|
|
216
|
+
export const agentDiffLanguageOf = (text: string): AgentCodeLanguage => agentPresentationHelper.agentDiffLanguageOf(text)
|
|
265
217
|
|
|
266
|
-
|
|
267
|
-
|
|
218
|
+
/** @deprecated compat:factory-refactor — use `agentPresentationHelper.agentCodeLanguageOf(…)` */
|
|
219
|
+
export const agentCodeLanguageOf = (text: string): AgentCodeLanguage => agentPresentationHelper.agentCodeLanguageOf(text)
|
|
268
220
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
return AgentMarkdownKind.Documentation
|
|
272
|
-
}
|
|
273
|
-
const listItems = text.match(/^\s*(?:[-*+]\s+|\d+[.)]\s+)/gm)?.length ?? 0
|
|
274
|
-
return listItems >= 2 ? AgentMarkdownKind.Documentation : undefined
|
|
275
|
-
}
|
|
221
|
+
/** @deprecated compat:factory-refactor — use `agentPresentationHelper.isUnifiedDiff(…)` */
|
|
222
|
+
export const isUnifiedDiff = (text: string): boolean => agentPresentationHelper.isUnifiedDiff(text)
|
|
276
223
|
|
|
277
|
-
/**
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
*/
|
|
281
|
-
/**
|
|
282
|
-
* Actions run by an unconstrained tool-calling loop (the coding agent, the repair/architect/
|
|
283
|
-
* lookup sub-agents, source extraction) rather than a single pinned-schema call. Their tool calls
|
|
284
|
-
* are file/shell operations, not model-schema output, so they always render as ToolCalls even
|
|
285
|
-
* when a call's arguments happen to shape-match a schema kind — `read_sources({ files })` looks
|
|
286
|
-
* exactly like an ArtifactSelection.
|
|
287
|
-
*/
|
|
288
|
-
const agentLoopActions = new Set([
|
|
289
|
-
'coding-agent-ask', 'arbitrary-modification', 'fix-agent', 'architect', 'declaration-lookup',
|
|
290
|
-
'source-extract',
|
|
291
|
-
])
|
|
292
|
-
|
|
293
|
-
const isGenericStructure = (kind: AgentStructuredKind | undefined): boolean =>
|
|
294
|
-
kind == null || kind === AgentStructuredKind.GenericRecord || kind === AgentStructuredKind.GenericList ||
|
|
295
|
-
kind === AgentStructuredKind.GenericValue
|
|
296
|
-
|
|
297
|
-
export const classifyAgentMessage = (input: AgentMessageClassificationInput): AgentMessagePresentation => {
|
|
298
|
-
const role = agentMessageRoleOf(input)
|
|
299
|
-
const action = actionOf(input)
|
|
300
|
-
const text = contentOf(input)
|
|
301
|
-
const structure = structuredKindOf(input.value)
|
|
302
|
-
|
|
303
|
-
if (input.outputType === 'tool_calls') {
|
|
304
|
-
// A single pinned-schema call resolves to its own card; everything else — several calls in
|
|
305
|
-
// one turn, an unconstrained agent-loop action, or a shape too generic to be informative —
|
|
306
|
-
// is a tool call, not a schema result.
|
|
307
|
-
const isMultiCall = Array.isArray(input.value) && input.value.length > 1
|
|
308
|
-
const isToolCalls = isMultiCall || agentLoopActions.has(action) || isGenericStructure(structure)
|
|
309
|
-
return {
|
|
310
|
-
category: AgentMessageCategory.Structured,
|
|
311
|
-
structure: isToolCalls ? AgentStructuredKind.ToolCalls : structure!,
|
|
312
|
-
role,
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
if (structure != null) return { category: AgentMessageCategory.Structured, structure, role }
|
|
316
|
-
const actionStructure = structuredActions[action]
|
|
317
|
-
if (actionStructure != null) return { category: AgentMessageCategory.Structured, structure: actionStructure, role }
|
|
318
|
-
if (decisionAction(action)) return { category: AgentMessageCategory.Structured, structure: AgentStructuredKind.Decision, role }
|
|
319
|
-
if (isUnifiedDiff(text) || action === 'update-code') {
|
|
320
|
-
return { category: AgentMessageCategory.Diff, language: agentDiffLanguageOf(text), role }
|
|
321
|
-
}
|
|
322
|
-
if (codeActions.has(action) || fencedLanguageOf(text) != null || agentCodeLanguageOf(text) !== AgentCodeLanguage.Other) {
|
|
323
|
-
return { category: AgentMessageCategory.Code, language: agentCodeLanguageOf(text), role }
|
|
324
|
-
}
|
|
325
|
-
const document = documentActions[action] ?? markdownKindOf(text)
|
|
326
|
-
if (document != null) return { category: AgentMessageCategory.Markdown, document, role }
|
|
327
|
-
if (input.value != null) {
|
|
328
|
-
return {
|
|
329
|
-
category: AgentMessageCategory.Structured,
|
|
330
|
-
structure: Array.isArray(input.value) ? AgentStructuredKind.GenericList : AgentStructuredKind.GenericValue,
|
|
331
|
-
role,
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
return { category: AgentMessageCategory.Plain, role }
|
|
335
|
-
}
|
|
224
|
+
/** @deprecated compat:factory-refactor — use `agentPresentationHelper.classifyAgentMessage(…)` */
|
|
225
|
+
export const classifyAgentMessage = (input: AgentMessageClassificationInput): AgentMessagePresentation =>
|
|
226
|
+
agentPresentationHelper.classifyAgentMessage(input)
|
package/src/agent/types.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { LlmPurpose } from '@owlmeans/llm-common'
|
|
2
|
+
import { AgentCodeLanguage, AgentMarkdownKind, AgentMessageCategory, AgentMessageRole, AgentStructuredKind } from './consts.js'
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Observability metadata attached to every model call. Extends the generic
|
|
@@ -8,3 +9,42 @@ export interface PurposeMetadata extends LlmPurpose {
|
|
|
8
9
|
viableAgent?: string
|
|
9
10
|
viableHelper?: string
|
|
10
11
|
}
|
|
12
|
+
|
|
13
|
+
export interface AgentCodePresentation {
|
|
14
|
+
category: AgentMessageCategory.Code | AgentMessageCategory.Diff
|
|
15
|
+
language: AgentCodeLanguage
|
|
16
|
+
role: AgentMessageRole
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface AgentStructuredPresentation {
|
|
20
|
+
category: AgentMessageCategory.Structured
|
|
21
|
+
structure: AgentStructuredKind
|
|
22
|
+
role: AgentMessageRole
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface AgentMarkdownPresentation {
|
|
26
|
+
category: AgentMessageCategory.Markdown
|
|
27
|
+
document: AgentMarkdownKind
|
|
28
|
+
role: AgentMessageRole
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface AgentPlainPresentation {
|
|
32
|
+
category: AgentMessageCategory.Plain
|
|
33
|
+
role: AgentMessageRole
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export type AgentMessagePresentation =
|
|
37
|
+
| AgentCodePresentation
|
|
38
|
+
| AgentStructuredPresentation
|
|
39
|
+
| AgentMarkdownPresentation
|
|
40
|
+
| AgentPlainPresentation
|
|
41
|
+
|
|
42
|
+
/** The attribution and content available to either side of a thinking event. */
|
|
43
|
+
export interface AgentMessageClassificationInput {
|
|
44
|
+
agent?: string
|
|
45
|
+
helper?: string
|
|
46
|
+
action?: string
|
|
47
|
+
outputType?: string
|
|
48
|
+
text?: string
|
|
49
|
+
value?: unknown
|
|
50
|
+
}
|
package/src/areas/consts.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AccessLevel } from '../dev/consts.js'
|
|
2
|
+
import type { ProjectTenancy } from './types.js'
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* The audiences a generated application serves.
|
|
@@ -110,3 +111,9 @@ export const AREA_TIER: Record<ProjectArea, string | null> = {
|
|
|
110
111
|
[ProjectArea.Admin]: null,
|
|
111
112
|
[ProjectArea.Operator]: ProjectArea.Operator,
|
|
112
113
|
}
|
|
114
|
+
|
|
115
|
+
/** The longest requester sentence a tenancy decision quotes — a card refuses a longer one. */
|
|
116
|
+
export const TENANCY_QUOTE_MAX = 1024
|
|
117
|
+
|
|
118
|
+
/** A single-organization application — what every project is until a decision says otherwise. */
|
|
119
|
+
export const NO_TENANCY: ProjectTenancy = Object.freeze({ operators: false, users: false })
|
package/src/areas/index.ts
CHANGED
|
@@ -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
|
+
}
|