@salsita-ai/sdk 0.50.0-develop.9267bdc12e → 0.50.0-develop.98166fe7c3
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 +14 -13
- package/dist/admin/default-admin-elements.d.ts +9 -0
- package/dist/admin/default-admin-elements.js +1 -0
- package/dist/admin/default-elements/built-in-entity-element.d.ts +10 -0
- package/dist/admin/default-elements/built-in-entity-element.js +1 -0
- package/dist/admin/default-elements/built-in-layout-element.d.ts +10 -0
- package/dist/admin/default-elements/built-in-layout-element.js +1 -0
- package/dist/admin/default-elements/index.d.ts +2 -0
- package/dist/admin/default-elements/index.js +1 -0
- package/dist/admin/index.d.ts +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/application-spec/caching/content-diff.js +1 -1
- package/dist/application-spec/core/application-file.d.ts +0 -2
- package/dist/application-spec/core/application-file.js +1 -1
- package/dist/application-spec/core/components/component-filter.d.ts +53 -0
- package/dist/application-spec/core/components/component-filter.js +1 -0
- package/dist/application-spec/core/components/index.d.ts +2 -0
- package/dist/application-spec/core/components/index.js +1 -0
- package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
- package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
- package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
- package/dist/application-spec/core/enhanced-json-value.js +1 -1
- package/dist/application-spec/core/expressions/index.d.ts +2 -0
- package/dist/application-spec/core/expressions/index.js +1 -0
- package/dist/application-spec/core/expressions/relation-expression-params.d.ts +11 -0
- package/dist/application-spec/core/expressions/relation-expression-params.js +1 -0
- package/dist/application-spec/core/expressions/sdk-expression-implementation.d.ts +24 -0
- package/dist/application-spec/core/expressions/sdk-expression-implementation.js +1 -0
- package/dist/application-spec/core/index.d.ts +2 -0
- package/dist/application-spec/core/index.js +1 -1
- package/dist/application-spec/core/json-value.d.ts +1 -1
- package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
- package/dist/application-spec/enhanced-json/index.d.ts +4 -0
- package/dist/application-spec/enhanced-json/index.js +1 -0
- package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
- package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
- package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
- package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
- package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
- package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
- package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
- package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
- package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
- package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
- package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
- package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
- package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
- package/dist/application-spec/errors/diagnostic-codes.js +1 -1
- package/dist/application-spec/errors/diagnostic-messages.d.ts +12 -0
- package/dist/application-spec/errors/diagnostic-messages.js +1 -1
- package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
- package/dist/application-spec/generate-application/code/generate-application-code.d.ts +3 -2
- package/dist/application-spec/generate-application/code/generate-application-code.js +1 -1
- package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +11 -8
- package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
- package/dist/application-spec/generate-application/code/standalone-app-files.d.ts +2 -2
- package/dist/application-spec/generate-application/code/standalone-app-files.js +1 -1
- package/dist/application-spec/generate-application/code/templates/admin-config.js +3 -0
- package/dist/application-spec/generate-application/code/templates/configurator-config.js +6 -4
- package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +4 -4
- package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
- package/dist/application-spec/generate-application/code/templates/eslint-config.d.ts +5 -0
- package/dist/application-spec/generate-application/code/templates/eslint-config.js +4 -5
- package/dist/application-spec/generate-application/code/templates/frontend-config.js +3 -5
- package/dist/application-spec/generate-application/code/templates/gitignore.js +0 -3
- package/dist/application-spec/generate-application/code/templates/globals.js +7 -5
- package/dist/application-spec/generate-application/code/templates/index.d.ts +3 -1
- package/dist/application-spec/generate-application/code/templates/index.js +1 -1
- package/dist/application-spec/generate-application/code/templates/lingui-rc.d.ts +5 -0
- package/dist/application-spec/generate-application/code/templates/lingui-rc.js +4 -4
- package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
- package/dist/application-spec/generate-application/code/templates/prettier-config.d.ts +5 -0
- package/dist/application-spec/generate-application/code/templates/prettier-config.js +4 -5
- package/dist/application-spec/generate-application/code/templates/root-tsconfig.d.ts +6 -0
- package/dist/application-spec/generate-application/code/templates/root-tsconfig.js +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +1 -1
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
- package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +13 -6
- package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
- package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.d.ts +58 -0
- package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.js +1 -0
- package/dist/application-spec/generate-application/code/templates/spec-code/index.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/spec-code/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.d.ts +18 -0
- package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.js +41 -0
- package/dist/application-spec/generate-application/code/templates/spec-messages/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/spec-messages/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.d.ts +20 -0
- package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.js +6 -0
- package/dist/application-spec/generate-application/code/templates/tsconfig.d.ts +5 -0
- package/dist/application-spec/generate-application/code/templates/tsconfig.js +1 -1
- package/dist/application-spec/generate-application/code/templates/webhook-index.d.ts +6 -1
- package/dist/application-spec/generate-application/code/templates/webhook-index.js +10 -1
- package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -3
- package/dist/application-spec/generate-application/index.d.ts +2 -0
- package/dist/application-spec/generate-application/index.js +1 -1
- package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.d.ts +4 -3
- package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +7 -3
- package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
- package/dist/application-spec/generate-application/runtime/admin-runtime/states-runtime.d.ts +2 -2
- package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +13 -5
- package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
- package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.d.ts +4 -3
- package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +6 -2
- package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
- package/dist/application-spec/generate-application/runtime/configurator-runtime/states-runtime.d.ts +2 -2
- package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.d.ts +43 -0
- package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.js +1 -0
- package/dist/application-spec/generate-application/runtime/factory-data/index.d.ts +3 -0
- package/dist/application-spec/generate-application/runtime/factory-data/index.js +1 -0
- package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.d.ts +13 -0
- package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +1 -0
- package/dist/application-spec/generate-application/runtime/factory-data/static-violations.d.ts +16 -0
- package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +1 -0
- package/dist/application-spec/generate-application/runtime/migrations/index.d.ts +1 -0
- package/dist/application-spec/generate-application/runtime/migrations/index.js +1 -0
- package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.d.ts +53 -0
- package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +1 -0
- package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +2 -2
- package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +1 -1
- package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
- package/dist/application-spec/generate-application/runtime/sections/data-runtime.d.ts +4 -4
- package/dist/application-spec/generate-application/runtime/sections/expression-runtime.d.ts +3 -2
- package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
- package/dist/application-spec/generate-application/runtime/sections/theme-runtime.d.ts +2 -2
- package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +3 -3
- package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.d.ts +9 -0
- package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.js +1 -0
- package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.d.ts +8 -0
- package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.js +1 -0
- package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.d.ts +27 -0
- package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.js +1 -0
- package/dist/application-spec/generate-application/runtime-spec/index.d.ts +5 -0
- package/dist/application-spec/generate-application/runtime-spec/index.js +1 -0
- package/dist/application-spec/generate-application/runtime-spec/runtime-spec.d.ts +68 -0
- package/dist/application-spec/generate-application/runtime-spec/runtime-spec.js +1 -0
- package/dist/application-spec/generate-application/runtime-spec/spec-code-id.d.ts +40 -0
- package/dist/application-spec/generate-application/runtime-spec/spec-code-id.js +1 -0
- package/dist/application-spec/index.d.ts +1 -0
- package/dist/application-spec/index.js +1 -1
- package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +34 -0
- package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
- package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.d.ts +16 -0
- package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.js +9 -0
- package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.d.ts +9 -0
- package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.js +1 -0
- package/dist/application-spec/parse-application-files/raw-spec/parse-yaml-spec-file.js +1 -1
- package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +15 -2
- package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
- package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
- package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
- package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
- package/dist/application-spec/parse-application-files/spec/common/index.d.ts +1 -0
- package/dist/application-spec/parse-application-files/spec/common/index.js +1 -1
- package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.d.ts +3 -0
- package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.js +1 -0
- package/dist/application-spec/parse-application-files/spec/common/value-type/index.d.ts +5 -0
- package/dist/application-spec/parse-application-files/spec/common/value-type/index.js +1 -0
- package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.d.ts +6 -0
- package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.js +1 -0
- package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.d.ts +8 -0
- package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.js +1 -0
- package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.d.ts +10 -0
- package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.js +1 -0
- package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.d.ts +98 -0
- package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.js +1 -0
- package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.d.ts +13 -0
- package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.js +1 -0
- package/dist/application-spec/parse-application-files/spec/components/bindings/index.d.ts +2 -0
- package/dist/application-spec/parse-application-files/spec/components/bindings/index.js +1 -1
- package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.d.ts +24 -0
- package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.js +1 -0
- package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
- package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
- package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
- package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
- package/dist/application-spec/parse-application-files/spec/components/component-state-type.d.ts +8 -0
- package/dist/application-spec/parse-application-files/spec/components/component-state-type.js +1 -0
- package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.d.ts +13 -0
- package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.js +1 -0
- package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
- package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
- package/dist/application-spec/parse-application-files/spec/components/static-entity-id.d.ts +14 -0
- package/dist/application-spec/parse-application-files/spec/components/static-entity-id.js +1 -0
- package/dist/application-spec/parse-application-files/spec/components/user-component-entry.d.ts +6 -0
- package/dist/application-spec/parse-application-files/spec/components/user-component-entry.js +1 -1
- package/dist/application-spec/parse-application-files/spec/components/user-components.d.ts +7 -4
- package/dist/application-spec/parse-application-files/spec/components/user-components.js +1 -1
- package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.d.ts +24 -0
- package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.js +1 -0
- package/dist/application-spec/parse-application-files/spec/expressions/expression-read.d.ts +13 -0
- package/dist/application-spec/parse-application-files/spec/expressions/expression-read.js +1 -0
- package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.d.ts +9 -0
- package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.js +1 -0
- package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +1 -28
- package/dist/application-spec/parse-application-files/spec/expressions/expression.js +1 -1
- package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +7 -3
- package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
- package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
- package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
- package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
- package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.d.ts +3 -1
- package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
- package/dist/application-spec/parse-application-files/spec/invariants/invariants.d.ts +2 -2
- package/dist/application-spec/parse-application-files/spec/invariants/invariants.js +1 -1
- package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
- package/dist/application-spec/parse-application-files/spec/model/index.d.ts +1 -0
- package/dist/application-spec/parse-application-files/spec/model/index.js +1 -1
- package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.d.ts +10 -0
- package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.js +1 -0
- package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
- package/dist/client/phoenix-api.d.ts +463 -0
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +36 -1
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +7 -1
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
- package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +17 -3
- package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
- package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
- package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
- package/dist/configurator/common/configurator-interface.d.ts +22 -1
- package/dist/configurator/common/configurator-interface.js +1 -1
- package/dist/configurator/common/frontend-analytics.d.ts +2 -0
- package/dist/configurator/common/frontend-analytics.js +1 -1
- package/dist/configurator/common/index.d.ts +2 -0
- package/dist/configurator/common/index.js +1 -1
- package/dist/configurator/common/use-finalize-action.d.ts +31 -0
- package/dist/configurator/common/use-finalize-action.js +1 -0
- package/dist/configurator/common/use-reset-camera.d.ts +6 -0
- package/dist/configurator/common/use-reset-camera.js +1 -0
- package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +1 -1
- package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +3 -2
- package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
- package/dist/configurator/pages/configurator-layout-name.d.ts +2 -0
- package/dist/configurator/pages/configurator-layout-name.js +1 -0
- package/dist/configurator/pages/default-configurator-elements.d.ts +8 -0
- package/dist/configurator/pages/default-configurator-elements.js +1 -0
- package/dist/configurator/pages/default-elements/built-in-entity-element.d.ts +10 -0
- package/dist/configurator/pages/default-elements/built-in-entity-element.js +1 -0
- package/dist/configurator/pages/default-elements/built-in-layout-element.d.ts +10 -0
- package/dist/configurator/pages/default-elements/built-in-layout-element.js +1 -0
- package/dist/configurator/pages/default-elements/domain-control-elements.d.ts +6 -0
- package/dist/configurator/pages/default-elements/domain-control-elements.js +1 -0
- package/dist/configurator/pages/default-elements/index.d.ts +4 -0
- package/dist/configurator/pages/default-elements/index.js +1 -0
- package/dist/configurator/pages/default-elements/recipe-panel-elements.d.ts +3 -0
- package/dist/configurator/pages/default-elements/recipe-panel-elements.js +1 -0
- package/dist/configurator/pages/default-elements/sidebar-footer-elements.d.ts +7 -0
- package/dist/configurator/pages/default-elements/sidebar-footer-elements.js +1 -0
- package/dist/configurator/pages/default-elements/toolbar-elements.d.ts +7 -0
- package/dist/configurator/pages/default-elements/toolbar-elements.js +1 -0
- package/dist/configurator/pages/index.d.ts +1 -0
- package/dist/configurator/pages/index.js +1 -1
- package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
- package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
- package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
- package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
- package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
- package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
- package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
- package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
- package/dist/configurator/ui/assistant/AssistantChips.d.ts +8 -2
- package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
- package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +7 -2
- package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
- package/dist/configurator/ui/assistant/AssistantPanel.js +1 -1
- package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
- package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
- package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
- package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
- package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
- package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
- package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
- package/dist/configurator/ui/assistant/entity-link/index.d.ts +2 -0
- package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
- package/dist/configurator/ui/assistant/form/AssistantForm.d.ts +19 -0
- package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -0
- package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +10 -0
- package/dist/configurator/ui/assistant/form/built-in-form-registry.js +1 -0
- package/dist/configurator/ui/assistant/form/compose-answer.d.ts +11 -0
- package/dist/configurator/ui/assistant/form/compose-answer.js +1 -0
- package/dist/configurator/ui/assistant/form/describe-build-errors.d.ts +6 -0
- package/dist/configurator/ui/assistant/form/describe-build-errors.js +1 -0
- package/dist/configurator/ui/assistant/form/form-element-definition.d.ts +14 -0
- package/dist/configurator/ui/assistant/form/form-element-definition.js +1 -0
- package/dist/configurator/ui/assistant/form/form-model.d.ts +38 -0
- package/dist/configurator/ui/assistant/form/form-model.js +1 -0
- package/dist/configurator/ui/assistant/form/form-registry.d.ts +31 -0
- package/dist/configurator/ui/assistant/form/form-registry.js +8 -0
- package/dist/configurator/ui/assistant/form/form-state.d.ts +4 -0
- package/dist/configurator/ui/assistant/form/form-state.js +1 -0
- package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
- package/dist/configurator/ui/assistant/form/index.js +1 -0
- package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +9 -0
- package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -0
- package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +13 -0
- package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -0
- package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +3 -0
- package/dist/configurator/ui/assistant/form-elements/FormGroup.js +1 -0
- package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +3 -0
- package/dist/configurator/ui/assistant/form-elements/FormOptions.js +1 -0
- package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +3 -0
- package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -0
- package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +3 -0
- package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -0
- package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +34 -0
- package/dist/configurator/ui/assistant/form-elements/form-element-props.js +1 -0
- package/dist/configurator/ui/assistant/form-elements/index.d.ts +5 -0
- package/dist/configurator/ui/assistant/form-elements/index.js +1 -0
- package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.d.ts +16 -0
- package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.js +1 -0
- package/dist/configurator/ui/assistant/reference-link/assistant-link-target.d.ts +34 -0
- package/dist/configurator/ui/assistant/reference-link/assistant-link-target.js +1 -0
- package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.d.ts +25 -0
- package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.js +1 -0
- package/dist/configurator/ui/assistant/reference-link/index.d.ts +3 -0
- package/dist/configurator/ui/assistant/reference-link/index.js +1 -0
- package/dist/configurator/ui/assistant/reference-link/reference-styles.d.ts +12 -0
- package/dist/configurator/ui/assistant/reference-link/reference-styles.js +1 -0
- package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.d.ts +8 -0
- package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.js +1 -0
- package/dist/configurator/ui/assistant/streamed-markdown.d.ts +2 -0
- package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
- package/dist/configurator/ui/assistant/thread-items.d.ts +8 -1
- package/dist/configurator/ui/assistant/thread-items.js +1 -1
- package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
- package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
- package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
- package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
- package/dist/configurator/ui/configurator-layout/{universal → slots/desktop-sidebar}/DesktopSidebar.d.ts +23 -14
- package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
- package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
- package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
- package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
- package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
- package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
- package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
- package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
- package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
- package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +1 -1
- package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +2 -2
- package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
- package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -2
- package/dist/docs/controls/select-child-entity/cardselect.mdx +1 -0
- package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
- package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
- package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
- package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
- package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
- package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
- package/dist/docs/drag-and-drop/planes.mdx +1 -1
- package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
- package/dist/docs/fabs/basic.mdx +2 -2
- package/dist/docs/index.json +32 -1
- package/dist/docs/layouts/custom-layout.mdx +1636 -183
- package/dist/docs/layouts/header/fixed.mdx +2 -2
- package/dist/docs/layouts/header/floating.mdx +2 -2
- package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
- package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
- package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
- package/dist/docs/other-features/transformers.mdx +4 -0
- package/dist/docs/phoenix/application-states.mdx +9 -7
- package/dist/docs/phoenix/components.mdx +6 -0
- package/dist/docs/phoenix/configurator-interface.mdx +135 -18
- package/dist/docs/phoenix/deployments.mdx +2 -6
- package/dist/docs/phoenix/domain-model.mdx +2 -0
- package/dist/docs/phoenix/finalization.mdx +1 -1
- package/dist/docs/phoenix/getting-started.mdx +2 -1
- package/dist/docs/phoenix/layout-slots.mdx +116 -0
- package/dist/docs/phoenix/localization.mdx +10 -6
- package/dist/docs/phoenix/migration-guide.mdx +21 -8
- package/dist/docs/phoenix/phoenix-cli.mdx +51 -11
- package/dist/docs/phoenix/project-structure.mdx +33 -13
- package/dist/docs/phoenix/sdk-builder-workflow.mdx +2 -2
- package/dist/docs/phoenix/testing.mdx +140 -0
- package/dist/docs/phoenix/webhooks.mdx +21 -4
- package/dist/domain/application/application-config.d.ts +3 -1
- package/dist/domain/application/assistant/assistant-fields.d.ts +8 -1
- package/dist/domain/application/assistant/assistant-fields.js +1 -1
- package/dist/domain/application/assistant/assistant-form-elements.d.ts +28 -0
- package/dist/domain/application/assistant/assistant-form-elements.js +1 -0
- package/dist/domain/application/assistant/assistant-manifest.d.ts +9 -1
- package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +11 -1
- package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
- package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
- package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
- package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
- package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
- package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
- package/dist/domain/application/assistant/index.d.ts +5 -1
- package/dist/domain/application/assistant/index.js +1 -1
- package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -1
- package/dist/domain/application/assistant-recipe-groups.d.ts +3 -1
- package/dist/domain/application/configurator-builder.d.ts +4 -1
- package/dist/domain/application/configurator-builder.js +1 -1
- package/dist/domain/core/invariant/violation.d.ts +50 -2
- package/dist/domain/core/invariant/violation.js +1 -1
- package/dist/domain/core/model/model.d.ts +1 -1
- package/dist/domain/core/schema/extended-schema-validator.js +1 -1
- package/dist/domain/domain-context/index.d.ts +1 -1
- package/dist/domain/domain-context/undo-system.d.ts +28 -1
- package/dist/domain/domain-context/undo-system.js +1 -1
- package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
- package/dist/domain/domain-runtime/spec/initialize.js +1 -1
- package/dist/domain/domain-runtime/spec/selectors.js +1 -1
- package/dist/domain/domain-runtime/spec/types.d.ts +2 -0
- package/dist/domain/extensions/attribute-switch.d.ts +1 -1
- package/dist/domain/extensions/attribute-switch.js +1 -1
- package/dist/domain/extensions/canvas-config.d.ts +1 -1
- package/dist/domain/extensions/client-side-image.d.ts +2 -2
- package/dist/domain/extensions/client-side-image.js +1 -1
- package/dist/domain/extensions/common/angle-indicator-schema.d.ts +2 -2
- package/dist/domain/extensions/common/dimension-indicator-schema.d.ts +2 -2
- package/dist/domain/extensions/editable-angle-indicator.d.ts +1 -1
- package/dist/domain/extensions/editable-distance-dimension-indicator.d.ts +1 -1
- package/dist/domain/extensions/editable-offset-indicator.d.ts +1 -1
- package/dist/domain/extensions/editable-offset-indicator.js +1 -1
- package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -1
- package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -1
- package/dist/domain/extensions/horizontal-tabs.d.ts +2 -2
- package/dist/domain/extensions/list-selector-dimension-indicator.d.ts +1 -1
- package/dist/domain/extensions/navigation-steps.d.ts +2 -2
- package/dist/domain/extensions/offset-indicator.js +1 -1
- package/dist/domain/extensions/rotation-handle.d.ts +2 -2
- package/dist/domain/extensions/save-template-thumbnail.d.ts +2 -2
- package/dist/domain/extensions/save-template-thumbnail.js +1 -1
- package/dist/domain/extensions/scene-entity-animation.js +1 -1
- package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
- package/dist/domain/mocks/create-test-application-config.js +1 -0
- package/dist/domain/mocks/index.d.ts +1 -0
- package/dist/domain/mocks/index.js +1 -1
- package/dist/domain/system-components/application-config.d.ts +2 -2
- package/dist/domain/system-components/child-entity-selection.js +1 -1
- package/dist/domain/system-components/collision-box-geometry.d.ts +4 -2
- package/dist/domain/system-components/collision-geometry.d.ts +4 -2
- package/dist/domain/system-components/collision-point-geometry.d.ts +4 -2
- package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
- package/dist/domain/system-components/common/recipes.d.ts +21 -3
- package/dist/domain/system-components/common/recipes.js +1 -1
- package/dist/domain/system-components/common/scene-entity-control-schema.d.ts +3 -0
- package/dist/domain/system-components/common/scene-entity-control-schema.js +1 -1
- package/dist/domain/system-components/constraint.d.ts +10 -23
- package/dist/domain/system-components/drag-handle.d.ts +1 -1
- package/dist/domain/system-components/drag-handle.js +1 -1
- package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
- package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
- package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
- package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
- package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
- package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
- package/dist/domain/system-components/material-swatch.js +1 -1
- package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
- package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
- package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
- package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
- package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
- package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
- package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
- package/dist/globals/index.d.ts +2 -0
- package/dist/i18n/locales/cs/messages.js +1 -1
- package/dist/i18n/locales/da/messages.js +1 -1
- package/dist/i18n/locales/de/messages.js +1 -1
- package/dist/i18n/locales/de-AT/messages.js +1 -1
- package/dist/i18n/locales/en/messages.js +1 -1
- package/dist/i18n/locales/en-AU/messages.js +1 -1
- package/dist/i18n/locales/en-GB/messages.js +1 -1
- package/dist/i18n/locales/es/messages.js +1 -1
- package/dist/i18n/locales/fr/messages.js +1 -1
- package/dist/i18n/locales/hu/messages.js +1 -1
- package/dist/i18n/locales/it/messages.js +1 -1
- package/dist/i18n/locales/nl/messages.js +1 -1
- package/dist/i18n/locales/pl/messages.js +1 -1
- package/dist/i18n/locales/pt/messages.js +1 -1
- package/dist/i18n/locales/ro/messages.js +1 -1
- package/dist/i18n/locales/sk/messages.js +1 -1
- package/dist/i18n/locales/tr/messages.js +1 -1
- package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
- package/dist/legacy/domain-cli/utils/cache.js +1 -1
- package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +160 -148
- package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
- package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
- package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
- package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +7 -1
- package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +15 -14
- package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +14 -12
- package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +14 -13
- package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +13 -11
- package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
- package/dist/phoenix/application-spec/generate-application-spec-story.js +2 -2
- package/dist/phoenix/application-spec/project-files.js +1 -1
- package/dist/phoenix/bin.d.ts +2 -0
- package/dist/phoenix/bin.js +2 -0
- package/dist/phoenix/check-configs/built-in-eslint-config.d.ts +9 -0
- package/dist/phoenix/check-configs/built-in-eslint-config.js +1 -0
- package/dist/phoenix/check-configs/eslint-config.d.ts +10 -0
- package/dist/phoenix/check-configs/eslint-config.js +1 -0
- package/dist/phoenix/check-configs/index.d.ts +8 -0
- package/dist/phoenix/check-configs/index.js +1 -0
- package/dist/phoenix/check-configs/typescript-project.d.ts +5 -0
- package/dist/phoenix/check-configs/typescript-project.js +1 -0
- package/dist/phoenix/cli.d.ts +0 -1
- package/dist/phoenix/cli.js +1 -2
- package/dist/phoenix/commands/check.js +1 -1
- package/dist/phoenix/commands/deploy.js +1 -1
- package/dist/phoenix/commands/deps/deps.d.ts +52 -0
- package/dist/phoenix/commands/deps/deps.js +3 -0
- package/dist/phoenix/commands/deps/index.d.ts +1 -0
- package/dist/phoenix/commands/deps/index.js +1 -0
- package/dist/phoenix/commands/deps/sdk-manifest.d.ts +12 -0
- package/dist/phoenix/commands/deps/sdk-manifest.js +1 -0
- package/dist/phoenix/commands/dev.js +5 -5
- package/dist/phoenix/commands/fix.js +1 -1
- package/dist/phoenix/commands/index.d.ts +1 -0
- package/dist/phoenix/commands/index.js +1 -1
- package/dist/phoenix/commands/prettier.js +1 -1
- package/dist/phoenix/services/application-spec-project-watcher.d.ts +2 -0
- package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
- package/dist/phoenix/services/lingui.d.ts +8 -0
- package/dist/phoenix/services/lingui.js +1 -1
- package/dist/phoenix/services/source-archive.d.ts +1 -0
- package/dist/phoenix/services/source-archive.js +1 -1
- package/dist/phoenix/services/swc.js +1 -1
- package/dist/phoenix/services/vite-config.js +1 -1
- package/dist/phoenix/utils/index.d.ts +2 -1
- package/dist/phoenix/utils/index.js +1 -1
- package/dist/phoenix/utils/node-version/index.d.ts +1 -0
- package/dist/phoenix/utils/node-version/index.js +1 -0
- package/dist/phoenix/utils/node-version/supported-node-version.d.ts +12 -0
- package/dist/phoenix/utils/node-version/supported-node-version.js +4 -0
- package/dist/phoenix/utils/run-command.d.ts +11 -0
- package/dist/phoenix/utils/run-command.js +1 -1
- package/dist/phoenix/utils/sdk-tool/index.d.ts +1 -0
- package/dist/phoenix/utils/sdk-tool/index.js +1 -0
- package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.d.ts +15 -0
- package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.js +1 -0
- package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +30 -0
- package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
- package/dist/react-sdk/domain-context/index.d.ts +2 -1
- package/dist/react-sdk/domain-context/index.js +1 -1
- package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +5 -0
- package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
- package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
- package/dist/ui-sdk/theme/types.d.ts +1 -1
- package/package.json +46 -35
- package/schema/domain-spec.json +1201 -217
- package/dist/application-spec/generate-application/code/templates/webhook-implementation.d.ts +0 -1
- package/dist/application-spec/generate-application/code/templates/webhook-implementation.js +0 -7
- package/dist/configurator/ui/configurator-layout/universal/DesktopSidebar.js +0 -16
- /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
- /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
- /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./aliases.js";export*from"./all-names.js";export*from"./common-types.js";export*from"./configuration-schema.js";export*from"./data-schemas.js";export*from"./defaults.js";export*from"./entity-schema.js";export*from"./entity-types.js";export*from"./model-version.js";export*from"./model-version-key.js";export*from"./names/index.js";export*from"./presets.js";export*from"./resolved-shapes.js";export*from"./session-data-schema.js";export*from"./shapes/index.js";
|
|
1
|
+
export*from"./aliases.js";export*from"./all-names.js";export*from"./common-types.js";export*from"./configuration-schema.js";export*from"./data-schemas.js";export*from"./defaults.js";export*from"./entity-schema.js";export*from"./entity-types.js";export*from"./model-version.js";export*from"./model-version-key.js";export*from"./model-type-resolution.js";export*from"./names/index.js";export*from"./presets.js";export*from"./resolved-shapes.js";export*from"./session-data-schema.js";export*from"./shapes/index.js";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PhoenixDefinitions } from '../../../core/index.js';
|
|
2
|
+
import { type ValueTypeResolution } from '../common/index.js';
|
|
3
|
+
import type { ModelVersion } from './model-version.js';
|
|
4
|
+
/** What reading the type of a schema of the model needs: its refs and its entity names. */
|
|
5
|
+
export type ModelTypeResolution = Omit<ValueTypeResolution, 'author' | 'definitions'>;
|
|
6
|
+
/**
|
|
7
|
+
* Resolves the refs of a model's schemas (its common types and the phoenix definitions) and the
|
|
8
|
+
* entity types an entity type or alias name stands for.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ModelTypeResolution: (model: ModelVersion, phxDefinitions: PhoenixDefinitions) => ModelTypeResolution;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createSchemaRefResolver as e}from"../common/index.js";export const ModelTypeResolution=(o,r)=>({resolveRef:e(o.commonTypes,r),entityTypes:e=>{for(let[r,t]of o.aliases)if(String(r)===e)return t.map(String);return[e]}});
|
package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isArray as e}from"@salsita-ai/common/utils";import{ASSISTANT_HINTS as t,buildAssistantManifest as i,describeAssistantValues as r,mergeAssistantFields as n}from"#package/domain";import{DiagnosticCode as s,diagnosticMessages as o}from"../../../../errors/index.js";import{createSchemaRefResolver as a,isNullableSchema as l,phxDefinitionRefName as p}from"../../common/index.js";import{resolveAssistantFieldType as S}from"./assistant-field-type.js";let d="AnyDomainEntity",c={section:"childRecipes",component:"childEntityRecipes",mutation:"addChild"},N={section:"replaceRecipes",component:"replaceEntityRecipes",mutation:"replaceEntity"},T=new Set(["id","type","meta"]),f=new Set(["Query","Mutation","Navigation","RecipeGroup","Recipe","DryRun","DryRunError","FieldOption","JSON","String","Int","Float","Boolean","ID"]),m=new Set(["id","type"]),u="A string, a message descriptor or a multilingual object; passed without translation.",A=(e,t)=>Object.entries(e).find(([e])=>e===t)?.[1],E=(e,{property:t,writableKey:i},n,{resolveRef:a,exposed:l,sources:p},d)=>{let c=Object.entries(A(p,e)??{}),N=l.get(e)?.find(({source:e})=>e===t)?.name??c.find(([,{source:e}])=>e===t)?.[0],T=void 0===N?c.find(([e])=>e===t)?.[1]:void 0;if(T)return void d.at(i,t).error(s.ASSISTANT_FIELD_NAME_CONFLICT,o.ASSISTANT_FIELD_NAME_CONFLICT(e,t,[T.source,t],`${i}.${t}`));let{type:f,enumValues:m,localized:E,description:_}=S(n,a),O={...f,nonNull:!1},y=N??t,I=void 0===N?r(_,m):void 0;return E?{name:y,property:t,type:{kind:"scalar",name:"JSON",nonNull:!1},description:I?`${I} ${u}`:u}:{name:y,property:t,type:O,...void 0===I?{}:{description:I}}},_=(e,t,{model:i,components:r})=>{let n=new Set([e,...[...i.aliases].filter(([,t])=>t.includes(e)).map(([e])=>e)]);return r.filter(({componentName:e,typeOrAlias:i})=>e===t&&n.has(i)).map(({instanceName:e})=>String(e))},O=(...e)=>t.filter(t=>e.some(e=>e?.includes(t))),y=(e,t,i,r)=>{let{model:n}=i,a=new Map,l=new Map;for(let[p,{groups:S,hints:d}]of Object.entries(e)){let e=n.entityTypes.find(e=>e===p),c=e?[e]:[...n.aliases].find(([e])=>e===p)?.[1];if(!c){r.at(p).error(s.ASSISTANT_UNKNOWN_TYPE,o.ASSISTANT_UNKNOWN_TYPE(t.section,p));continue}for(let[e,n]of(c.forEach(e=>l.set(e,O(l.get(e),d))),Object.entries(S))){let l=r.at(p,"groups",e),S=`${p}.groups.${e}`,d={groupId:n?.as??e,instanceName:e,...n?.description===void 0?{}:{description:n.description},dryRuns:n?.allowDryRuns??!0};for(let r of c){let n=_(r,t.component,i),c=a.get(r)??[],N=c.find(e=>e.group.groupId===d.groupId);n.includes(e)?N?l.error(s.ASSISTANT_DUPLICATE_RECIPE_GROUP,o.ASSISTANT_DUPLICATE_RECIPE_GROUP(t,r,d.groupId,[N.entry,S])):a.set(r,[...c,{group:d,entry:S,entryCtx:l}]):l.error(s.ASSISTANT_UNKNOWN_RECIPE_GROUP,o.ASSISTANT_UNKNOWN_RECIPE_GROUP(t,p,e,r,n))}}}let p=n.entityTypes.flatMap(e=>{let t=a.get(e);return t?[{entityType:e,groups:t}]:[]});return{groups:Object.fromEntries(p.map(({entityType:e,groups:t})=>[e,t.map(({group:e})=>e)])),hints:l,metaEntries:new Map(p.flatMap(({entityType:e,groups:[t]})=>t?[[e,t.entryCtx]]:[]))}},I=e=>`${e}Meta`,h=e=>`${e.charAt(0).toUpperCase()+e.slice(1)}Result`,b=e=>{let t=(({anyOf:e,oneOf:t})=>[...e??[],...t??[]].filter(e=>"null"!==e.type))(e);return e.$ref||1!==t.length?e:t[0]},g=(e,t)=>{let{type:i,enumValues:n,localized:s,description:o}=S(e,t),a={...i,nonNull:!1},l=s?`${r(o,n)??""} ${u}`.trim():r(o,n);return{type:{...s?{kind:"scalar",name:"JSON",nonNull:!1}:a,nonNull:i.nonNull},...void 0===l?{}:{description:l}}},v=(t,i)=>{let n=(t=>{let i=b(t),r=i?.type==="array"&&i.items&&!e(i.items)?b(i.items):void 0,n=r??i;if(n?.$ref!==void 0&&"$DomainEntity"===p(n.$ref))return{target:n.references??d,list:void 0!==r}})(t);if(n)return{kind:"edge",...n,nullable:l(t,i),...void 0===t.description?{}:{description:t.description}};let{type:s,enumValues:o,localized:a,description:c}=S(t,i),N=r(c,o);return a?{kind:"value",type:{kind:"scalar",name:"JSON",nonNull:s.nonNull},description:`${c??""} ${u}`.trim()}:{kind:"value",type:s,...void 0===N?{}:{description:N}}},R=(e,t)=>{let{type:i,enumValues:r,localized:n,description:s}=S(e,t);return{type:{kind:"value",type:i},localized:!0===n,description:s,enumValues:r}},M=(e,t,i,n,a)=>{let l=t.startsWith("$")?((e,t,i,r)=>{let n=((e,t,{expressions:i,entityTypes:r})=>{let n=r.find(t=>t===e);for(let r of void 0===n?[e]:i.entityExpressions.get(n)?.shapeGroups??[]){let e=[...i.expressions.get(r)?.values()??[]].find(e=>e.name===t);if(e?.declaredSchema)return{implementation:e.implementation,declaredSchema:e.declaredSchema}}})(e.name,t,i);if(!n)return void r.error(s.ASSISTANT_UNKNOWN_FIELD,o.ASSISTANT_UNKNOWN_FIELD("entities",e.name,t));let{implementation:a}=n;if("violations"===a.kind)return void r.error(s.ASSISTANT_UNSUPPORTED_EXPRESSION,o.ASSISTANT_UNSUPPORTED_EXPRESSION(e.name,t));if("relation"===a.kind){let[{target:e,cardinality:t}]=a.params;return{type:{kind:"edge",target:e,cardinality:t},localized:!1,description:void 0}}return R(n.declaredSchema,i.resolveRef)})(e,t,n,a):((e,t,{resolveRef:i},r)=>{let n=Object.entries(e.shape.properties).find(([e])=>e===t)?.[1];return n?R(n,i):void r.error(s.ASSISTANT_UNKNOWN_FIELD,o.ASSISTANT_UNKNOWN_FIELD("entities",e.name,t))})(e,t,n,a);if(!l)return;let p=i?.as??(t.startsWith("$")?`_${t.slice(1)}`:t);return T.has(p)?void a.error(s.ASSISTANT_RESERVED_FIELD_NAME,o.ASSISTANT_RESERVED_FIELD_NAME(e.name,t,p)):{name:p,source:t,type:l.type,localized:l.localized,description:r(i?.description??l.description,l.enumValues),describedByManifest:i?.description!==void 0,enumValues:l.enumValues,valueDescription:i?.description??l.description}},j=(e,t,i,r,a)=>n(t,i,r,(t,i,r)=>{a.error(s.ASSISTANT_FIELD_NAME_CONFLICT,o.ASSISTANT_FIELD_NAME_CONFLICT(e,t,[i,r]))});export const resolveAssistantManifest=(e,{model:t,states:i,phxDefinitions:r,expressions:n,components:l,actions:p},T)=>{let b=T.errors.length,R=T.at("entities"),D=a(t.commonTypes,r);for(let e of t.resolvedShapes.keys())f.has(e)&&T.error(s.ASSISTANT_RESERVED_TYPE_NAME,o.ASSISTANT_RESERVED_TYPE_NAME(e,[...f]));let C=((e,t,i)=>{let r=new Map;for(let n of e){let e=[];for(let[r,s]of Object.entries(n.entries)){let o=M(n,r,s,t,i.at(n.name,r));o&&e.push(o)}r.set(n.name,e)}return r})(((e,t,i)=>{let r=[];for(let[i,n]of t.resolvedShapes){let t=e[i];t&&r.push({name:i,shape:n,entries:t})}let n=new Set(t.resolvedShapes.keys());for(let t of Object.keys(e))n.has(t)||i.at(t).error(s.ASSISTANT_UNKNOWN_TYPE,o.ASSISTANT_UNKNOWN_TYPE("entities",t));return r})(e.entities??{},t,R),{resolveRef:D,expressions:n,entityTypes:t.entityTypes},R),P=j(d,[],C.get(d)??[],()=>void 0,T),U=new Map([[d,P]]);for(let e of t.aliases.keys())e!==d&&U.set(e,j(e,[P],C.get(e)??[],()=>void 0,T));for(let e of t.entityTypes){let i=[d,...[...t.aliases].filter(([t,i])=>t!==d&&i.includes(e)).map(([e])=>e)],r=[...t.resolvedShapes].find(([t])=>t===e)?.[1];U.set(e,j(e,i.map(e=>U.get(e)??[]),C.get(e)??[],e=>{let t=Object.entries(r?.properties??{}).find(([t])=>t===e)?.[1];return t&&S(t,D).enumValues},T))}let w=Object.fromEntries(t.entityTypes.map(e=>[e,Object.fromEntries((U.get(e)??[]).map(({name:e,source:t,localized:i})=>[e,i?{source:t,localized:!0}:{source:t}]))])),L=y(e.childRecipes??{},c,{model:t,components:l},T.at("childRecipes")),$=y(e.replaceRecipes??{},N,{model:t,components:l},T.at("replaceRecipes")),W=((e,t,i)=>{let r=new Set;for(let n of Object.keys(e)){let e=t.entityTypes.find(e=>e===n),a=e?[e]:[...t.aliases].find(([e])=>e===n)?.[1];a?a.forEach(e=>r.add(e)):i.at(n).error(s.ASSISTANT_UNKNOWN_TYPE,o.ASSISTANT_UNKNOWN_TYPE("deletable",n))}return t.entityTypes.filter(e=>r.has(e))})(e.deletable??{},t,T.at("deletable")),F=((e,t,i)=>{let{model:r}=t,n=((e,t,i)=>{let r=new Map;for(let[n,a]of Object.entries(e)){let e=t.entityTypes.find(e=>e===n),l=e?[e]:[...t.aliases].find(([e])=>e===n)?.[1],p=[...t.resolvedShapes].find(([e])=>e===n)?.[1];if(!l||!p){i.at(n).error(s.ASSISTANT_UNKNOWN_TYPE,o.ASSISTANT_UNKNOWN_TYPE("writable",n));continue}for(let e of Object.keys(a)){let t=i.at(n,e);e.startsWith("$")||m.has(e)?t.error(s.ASSISTANT_NOT_WRITABLE,o.ASSISTANT_NOT_WRITABLE(n,e)):A(p.properties,e)?l.forEach(t=>{let i=r.get(t)??new Map;r.set(t,i.has(e)?i:i.set(e,n))}):t.error(s.ASSISTANT_UNKNOWN_FIELD,o.ASSISTANT_UNKNOWN_FIELD("writable",n,e))}}return r})(e,r,i);return r.entityTypes.flatMap(e=>{let s=[...r.resolvedShapes].find(([t])=>t===e)?.[1],o=[...n.get(e)??[]].flatMap(([r,n])=>{let o=s&&A(s.properties,r);return(o&&E(e,{property:r,writableKey:n},o,t,i))??[]});return o.length>0?[{entityType:e,fields:o}]:[]})})(e.writable??{},{model:t,resolveRef:D,exposed:C,sources:w},T.at("writable")),k=((e,t,i,r)=>{let{model:n}=i,a=new Map;for(let[l,p]of Object.entries(e)){let e=n.entityTypes.find(e=>e===l),S=e?[e]:[...n.aliases].find(([e])=>e===l)?.[1]??[];for(let[e,n]of Object.entries(p)){let p=n?.options;if(!p)continue;let d=r.at(l,e,"options"),T=`${l}.${e}`;for(let r of S){let n=t.find(e=>e.entityType===r)?.fields.find(t=>t.property===e);if(!n)continue;let l=p.as??`${n.name}Options`,S=_(r,p.componentType,i),f=a.get(r)??[],m=f.find(e=>e.options.edgeName===l||e.options.field===n.name);if(S.includes(p.instanceName))if(l===c.section||l===N.section)d.error(s.ASSISTANT_RESERVED_OPTIONS_EDGE_NAME,o.ASSISTANT_RESERVED_OPTIONS_EDGE_NAME(T,l,n.name));else if(m)d.error(s.ASSISTANT_DUPLICATE_OPTIONS_EDGE,o.ASSISTANT_DUPLICATE_OPTIONS_EDGE(r,m.options.edgeName===l?{edgeName:l}:{field:n.name},[m.entry,T]));else{let e={field:n.name,edgeName:l,componentType:p.componentType,instanceName:p.instanceName,validate:p.validate??!0,dryRuns:p.allowDryRuns??!0};a.set(r,[...f,{options:e,hints:O(p.hints),entry:T,entryCtx:d}])}else d.error(s.ASSISTANT_UNKNOWN_OPTIONS_COMPONENT,o.ASSISTANT_UNKNOWN_OPTIONS_COMPONENT(T,p,r,S))}}}return a})(e.writable??{},F,{model:t,components:l},T.at("writable"));var K=[L.metaEntries,$.metaEntries,new Map([...k].flatMap(([e,[t]])=>t?[[e,t.entryCtx]]:[]))];for(let e of t.entityTypes){let i=K.flatMap(t=>t.get(e)??[])[0],r=I(e);i&&[...t.resolvedShapes.keys()].some(e=>e===r)&&i.error(s.ASSISTANT_META_TYPE_NAME_CONFLICT,o.ASSISTANT_META_TYPE_NAME_CONFLICT(e,r))}let V=t.entityTypes.filter(e=>(L.groups[e]?.length??0)>0||($.groups[e]?.length??0)>0||(k.get(e)?.length??0)>0).map(I),Y=((e,{actions:t,resolveRef:i,builtInMutations:r,typeNames:n},a)=>{let l=[],p=[...t.values()].map(e=>String(e.name));for(let[S,d]of Object.entries(e)){let e=a.at(S),c=[...t.values()].find(e=>e.name===S);if(!c){e.error(s.ASSISTANT_UNKNOWN_ACTION,o.ASSISTANT_UNKNOWN_ACTION(S,p));continue}let N=d?.as??S,T=l.find(e=>e.fieldName===N),f=h(N);if(r.has(N)||T){e.error(s.ASSISTANT_MUTATION_NAME_CONFLICT,o.ASSISTANT_MUTATION_NAME_CONFLICT(S,N,T?`"assistant.actions.${T.actionName}" already exposes`:"the built-in mutation of that name already takes"));continue}if(n.has(f)||l.some(e=>h(e.fieldName)===f)){e.error(s.ASSISTANT_ACTION_RESULT_TYPE_CONFLICT,o.ASSISTANT_ACTION_RESULT_TYPE_CONFLICT(S,N,f));continue}let m=d?.description??c.description;l.push({fieldName:N,actionName:S,...void 0===m?{}:{description:m},args:Object.fromEntries(Object.entries(c.params).map(([e,{schema:t}])=>[e,g(t,i)])),result:Object.fromEntries(Object.entries(c.result).map(([e,t])=>[e,v(t,i)]))})}return l})(e.actions??{},{actions:p,resolveRef:D,builtInMutations:new Set(["deleteEntity",c.mutation,N.mutation,...F.map(({entityType:e})=>`modify${e}`)]),typeNames:new Set([...f,...t.resolvedShapes.keys(),...V])},T.at("actions"));if(T.errors.length>b)return;let x=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{hints:O(t.hints),groups:Object.entries(t.groups).map(([e,t])=>({instanceName:e,groupId:t?.as??e,...t?.description===void 0?{}:{description:t.description},dryRuns:t?.allowDryRuns??!0}))}]));return{declarations:{entities:Object.fromEntries(Object.keys(e.entities??{}).map(e=>[e,(C.get(e)??[]).map(e=>({name:e.name,source:e.source,type:e.type,localized:e.localized,describedByManifest:e.describedByManifest,...void 0===e.description?{}:{description:e.description},...void 0===e.valueDescription?{}:{valueDescription:e.valueDescription},...void 0===e.enumValues?{}:{enumValues:e.enumValues}}))])),enumValues:Object.fromEntries(t.entityTypes.map(e=>[e,Object.fromEntries(Object.entries(t.resolvedShapes.get(e)?.properties??{}).flatMap(([e,t])=>{let i=S(t,D).enumValues;return i?[[e,i]]:[]}))])),deletable:Object.keys(e.deletable??{}),writable:Object.fromEntries(Object.entries(e.writable??{}).map(([e,i])=>[e,Object.fromEntries(Object.entries(i).map(([i,r])=>[i,{defaultOptionsName:r?.options?.as===void 0,members:Object.fromEntries(t.entityTypes.filter(i=>i===e||[...t.aliases].find(([t])=>t===e)?.[1].includes(i)).flatMap(r=>{let n=A(t.resolvedShapes.get(r)?.properties??{},i),s=n&&E(r,{property:i,writableKey:e},n,{model:t,resolveRef:D,exposed:new Map,sources:{}},T.at("writable")),o=k.get(r)?.find(t=>t.entry===`${e}.${i}`);return s?[[r,{field:s,...S(n,D).localized?{exposedDescription:u}:{},...o?{options:{options:o.options,hints:o.hints}}:{}}]]:[]}))}]))])),childRecipes:x(e.childRecipes??{}),replaceRecipes:x(e.replaceRecipes??{})},entityTypes:t.entityTypes,aliases:Object.fromEntries(t.aliases),exampleType:t.rootEntityTypes[0]??t.entityTypes[0],states:{navigationStates:i.navigationStates,viewStates:i.viewStates,toolStates:i.toolStates},deletableTypes:W,writableTypes:F,actionFields:Y,childRecipes:Object.fromEntries(Object.entries(L.groups).map(([e,t])=>[e,{groups:t,hints:L.hints.get(e)??[]}])),replaceRecipes:Object.fromEntries(Object.entries($.groups).map(([e,t])=>[e,{groups:t,hints:$.hints.get(e)??[]}])),optionsEdges:Object.fromEntries([...k].map(([e,t])=>[e,t.map(({options:e,hints:t})=>({options:e,hints:t}))])),fields:Object.fromEntries([...U].map(([e,t])=>[e,t.map(e=>({name:e.name,source:e.source,localized:e.localized,type:e.type,...void 0===e.description?{}:{description:e.description}}))]))}};export const createAssistantSchema=(e,t,r)=>{let n=resolveAssistantManifest(e,t,r);if(n)try{return{...i(n),resolved:n}}catch(e){r.error(s.ASSISTANT_INVALID_SCHEMA,o.ASSISTANT_INVALID_SCHEMA([e instanceof Error?e.message:String(e)]));return}};
|
|
1
|
+
import{isArray as e}from"@salsita-ai/common/utils";import{ASSISTANT_HINTS as t,AssistantFieldClashError as i,buildAssistantManifest as r,describeAssistantValues as n,mergeAssistantFields as s,resolveAssistantField as o}from"#package/domain";import{DiagnosticCode as a,diagnosticMessages as l}from"../../../../errors/index.js";import{createSchemaRefResolver as S,isNullableSchema as p,phxDefinitionRefName as N}from"../../common/index.js";import{resolveAssistantFieldType as T}from"./assistant-field-type.js";let c="AnyDomainEntity",d="RecipeGroup",f="Recipe",A="DryRun",E="FieldOption",m={section:"childRecipes",component:"childEntityRecipes",mutation:"addChild"},_={section:"replaceRecipes",component:"replaceEntityRecipes",mutation:"replaceEntity"},u=new Set(["id","type","meta"]),O=new Set(["Query","Mutation","Navigation",d,f,A,"DryRunError",E,"JSON","String","Int","Float","Boolean","ID"]),I=new Set([d,f,E,A]),y=new Set(["id","type"]),b="A string, a message descriptor or a multilingual object; passed without translation.",h=(e,t)=>Object.entries(e).find(([e])=>e===t)?.[1],g=(e,{property:t,writableKey:i},r,{resolveRef:s,exposed:o,sources:S},p)=>{let N=Object.entries(h(S,e)??{}),c=o.get(e)?.find(({source:e})=>e===t)?.name??N.find(([,{source:e}])=>e===t)?.[0],d=void 0===c?N.find(([e])=>e===t)?.[1]:void 0;if(d)return void p.at(i,t).error(a.ASSISTANT_FIELD_NAME_CONFLICT,l.ASSISTANT_FIELD_NAME_CONFLICT(e,t,[d.source,t],`${i}.${t}`));let{type:f,enumValues:A,localized:E,description:m}=T(r,s),_={...f,nonNull:!1},u=c??t,O=void 0===c?n(m,A):void 0;return E?{name:u,property:t,type:{kind:"scalar",name:"JSON",nonNull:!1},description:O?`${O} ${b}`:b}:{name:u,property:t,type:_,...void 0===O?{}:{description:O}}},v=(e,t,{model:i,components:r})=>{let n=new Set([e,...[...i.aliases].filter(([,t])=>t.includes(e)).map(([e])=>e)]);return r.filter(({componentName:e,typeOrAlias:i})=>e===t&&n.has(i)).map(({instanceName:e})=>String(e))},R=(...e)=>t.filter(t=>e.some(e=>e?.includes(t))),j=(e,t,i,r)=>{let{model:n}=i,s=new Map,o=new Map;for(let[S,{groups:p,hints:N}]of Object.entries(e)){let e=n.entityTypes.find(e=>e===S),T=e?[e]:[...n.aliases].find(([e])=>e===S)?.[1];if(!T){r.at(S).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE(t.section,S));continue}for(let[e,n]of(T.forEach(e=>o.set(e,R(o.get(e),N))),Object.entries(p))){let o=r.at(S,"groups",e),p=`${S}.groups.${e}`,N={groupId:n?.as??e,instanceName:e,...n?.description===void 0?{}:{description:n.description},dryRuns:n?.allowDryRuns??!0};for(let r of T){let n=v(r,t.component,i),T=s.get(r)??[],c=T.find(e=>e.group.groupId===N.groupId);n.includes(e)?c?o.error(a.ASSISTANT_DUPLICATE_RECIPE_GROUP,l.ASSISTANT_DUPLICATE_RECIPE_GROUP(t,r,N.groupId,[c.entry,p])):s.set(r,[...T,{group:N,entry:p,entryCtx:o}]):o.error(a.ASSISTANT_UNKNOWN_RECIPE_GROUP,l.ASSISTANT_UNKNOWN_RECIPE_GROUP(t,S,e,r,n))}}}let S=n.entityTypes.flatMap(e=>{let t=s.get(e);return t?[{entityType:e,groups:t}]:[]});return{groups:Object.fromEntries(S.map(({entityType:e,groups:t})=>[e,t.map(({group:e})=>e)])),hints:o,metaEntries:new Map(S.flatMap(({entityType:e,groups:[t]})=>t?[[e,t.entryCtx]]:[]))}},M=e=>`${e}Meta`,D=e=>`${e.charAt(0).toUpperCase()+e.slice(1)}Result`,C=e=>{let t=(({anyOf:e,oneOf:t})=>[...e??[],...t??[]].filter(e=>"null"!==e.type))(e);return e.$ref||1!==t.length?e:t[0]},P=(e,t)=>{let{type:i,enumValues:r,localized:s,description:o}=T(e,t),a={...i,nonNull:!1},l=s?`${n(o,r)??""} ${b}`.trim():n(o,r);return{type:{...s?{kind:"scalar",name:"JSON",nonNull:!1}:a,nonNull:i.nonNull},...void 0===l?{}:{description:l}}},L=(t,i)=>{let r=(t=>{let i=C(t),r=i?.type==="array"&&i.items&&!e(i.items)?C(i.items):void 0,n=r??i;if(n?.$ref!==void 0&&"$DomainEntity"===N(n.$ref))return{target:n.references??c,list:void 0!==r}})(t);if(r)return{kind:"edge",...r,nullable:p(t,i),...void 0===t.description?{}:{description:t.description}};let{type:s,enumValues:o,localized:a,description:l}=T(t,i),S=n(l,o);return a?{kind:"value",type:{kind:"scalar",name:"JSON",nonNull:s.nonNull},description:`${l??""} ${b}`.trim()}:{kind:"value",type:s,...void 0===S?{}:{description:S}}},U=(e,t)=>{let{type:i,enumValues:r,localized:n,description:s}=T(e,t);return{type:{kind:"value",type:i},localized:!0===n,description:s,enumValues:r}},w=(e,t,i,r,s)=>{let o=t.startsWith("$")?((e,t,i,r)=>{let n=((e,t,{expressions:i,entityTypes:r})=>{let n=r.find(t=>t===e);for(let r of void 0===n?[e]:i.entityExpressions.get(n)?.shapeGroups??[]){let e=[...i.expressions.get(r)?.values()??[]].find(e=>e.name===t);if(e?.declaredSchema)return{implementation:e.implementation,declaredSchema:e.declaredSchema}}})(e.name,t,i);if(!n)return void r.error(a.ASSISTANT_UNKNOWN_FIELD,l.ASSISTANT_UNKNOWN_FIELD("entities",e.name,t));let{implementation:s}=n;if("violations"===s.kind)return void r.error(a.ASSISTANT_UNSUPPORTED_EXPRESSION,l.ASSISTANT_UNSUPPORTED_EXPRESSION(e.name,t));if("relation"===s.kind){let[{target:e,cardinality:t}]=s.params;return{type:{kind:"edge",target:e,cardinality:t},localized:!1,description:void 0}}return U(n.declaredSchema,i.resolveRef)})(e,t,r,s):((e,t,{resolveRef:i},r)=>{let n=Object.entries(e.shape.properties).find(([e])=>e===t)?.[1];return n?U(n,i):void r.error(a.ASSISTANT_UNKNOWN_FIELD,l.ASSISTANT_UNKNOWN_FIELD("entities",e.name,t))})(e,t,r,s);if(!o)return;let S=i?.as??(t.startsWith("$")?`_${t.slice(1)}`:t);return u.has(S)?void s.error(a.ASSISTANT_RESERVED_FIELD_NAME,l.ASSISTANT_RESERVED_FIELD_NAME(e.name,t,S)):{name:S,source:t,type:o.type,localized:o.localized,description:n(i?.description??o.description,o.enumValues),describedByManifest:i?.description!==void 0,enumValues:o.enumValues,valueDescription:i?.description??o.description,...i?.lenses?.length?{lenses:[...new Set(i.lenses)]}:{}}},$=(e,t,i,r,n)=>s(t,i,r,(t,i,r)=>{n.error(a.ASSISTANT_FIELD_NAME_CONFLICT,l.ASSISTANT_FIELD_NAME_CONFLICT(e,t,[i,r]))});export const resolveAssistantManifest=(e,{model:t,states:i,phxDefinitions:r,expressions:n,components:s,actions:p},N)=>{let d=N.errors.length,f=N.at("entities"),A=S(t.commonTypes,r);for(let e of t.resolvedShapes.keys())O.has(e)&&N.error(a.ASSISTANT_RESERVED_TYPE_NAME,l.ASSISTANT_RESERVED_TYPE_NAME(e,[...O]));let E=((e,t,i)=>{let r=new Map;for(let n of e){let e=[];for(let[r,s]of Object.entries(n.entries)){let o=w(n,r,s,t,i.at(n.name,r));o&&e.push(o)}r.set(n.name,e)}return r})(((e,t,i)=>{let r=[];for(let[i,n]of t.resolvedShapes){let t=e[i];t&&r.push({name:i,shape:n,entries:t})}let n=new Set(t.resolvedShapes.keys());for(let t of Object.keys(e))n.has(t)||i.at(t).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE("entities",t));return r})(e.entities??{},t,f),{resolveRef:A,expressions:n,entityTypes:t.entityTypes},f),u=$(c,[],E.get(c)??[],()=>void 0,N),C=new Map([[c,u]]);for(let e of t.aliases.keys())e!==c&&C.set(e,$(e,[u],E.get(e)??[],()=>void 0,N));for(let e of t.entityTypes){let i=[c,...[...t.aliases].filter(([t,i])=>t!==c&&i.includes(e)).map(([e])=>e)],r=[...t.resolvedShapes].find(([t])=>t===e)?.[1];C.set(e,$(e,i.map(e=>C.get(e)??[]),E.get(e)??[],e=>{let t=Object.entries(r?.properties??{}).find(([t])=>t===e)?.[1];return t&&T(t,A).enumValues},N))}let U=Object.fromEntries(t.entityTypes.map(e=>[e,Object.fromEntries((C.get(e)??[]).map(({name:e,source:t,localized:i})=>[e,i?{source:t,localized:!0}:{source:t}]))])),F=j(e.childRecipes??{},m,{model:t,components:s},N.at("childRecipes")),W=j(e.replaceRecipes??{},_,{model:t,components:s},N.at("replaceRecipes")),k=((e,t,i)=>{let r=new Set;for(let n of Object.keys(e)){let e=t.entityTypes.find(e=>e===n),s=e?[e]:[...t.aliases].find(([e])=>e===n)?.[1];s?s.forEach(e=>r.add(e)):i.at(n).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE("deletable",n))}return t.entityTypes.filter(e=>r.has(e))})(e.deletable??{},t,N.at("deletable")),K=((e,t,i)=>{let{model:r}=t,n=((e,t,i)=>{let r=new Map;for(let[n,s]of Object.entries(e)){let e=t.entityTypes.find(e=>e===n),o=e?[e]:[...t.aliases].find(([e])=>e===n)?.[1],S=[...t.resolvedShapes].find(([e])=>e===n)?.[1];if(!o||!S){i.at(n).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE("writable",n));continue}for(let e of Object.keys(s)){let t=i.at(n,e);e.startsWith("$")||y.has(e)?t.error(a.ASSISTANT_NOT_WRITABLE,l.ASSISTANT_NOT_WRITABLE(n,e)):h(S.properties,e)?o.forEach(t=>{let i=r.get(t)??new Map;r.set(t,i.has(e)?i:i.set(e,n))}):t.error(a.ASSISTANT_UNKNOWN_FIELD,l.ASSISTANT_UNKNOWN_FIELD("writable",n,e))}}return r})(e,r,i);return r.entityTypes.flatMap(e=>{let s=[...r.resolvedShapes].find(([t])=>t===e)?.[1],o=[...n.get(e)??[]].flatMap(([r,n])=>{let o=s&&h(s.properties,r);return(o&&g(e,{property:r,writableKey:n},o,t,i))??[]});return o.length>0?[{entityType:e,fields:o}]:[]})})(e.writable??{},{model:t,resolveRef:A,exposed:E,sources:U},N.at("writable")),V=((e,t,i,r)=>{let{model:n}=i,s=new Map;for(let[o,S]of Object.entries(e)){let e=n.entityTypes.find(e=>e===o),p=e?[e]:[...n.aliases].find(([e])=>e===o)?.[1]??[];for(let[e,n]of Object.entries(S)){let S=n?.options;if(!S)continue;let N=r.at(o,e,"options"),T=`${o}.${e}`;for(let r of p){let n=t.find(e=>e.entityType===r)?.fields.find(t=>t.property===e);if(!n)continue;let o=S.as??`${n.name}Options`,p=v(r,S.componentType,i),c=s.get(r)??[],d=c.find(e=>e.options.edgeName===o||e.options.field===n.name);if(p.includes(S.instanceName))if(o===m.section||o===_.section)N.error(a.ASSISTANT_RESERVED_OPTIONS_EDGE_NAME,l.ASSISTANT_RESERVED_OPTIONS_EDGE_NAME(T,o,n.name));else if(d)N.error(a.ASSISTANT_DUPLICATE_OPTIONS_EDGE,l.ASSISTANT_DUPLICATE_OPTIONS_EDGE(r,d.options.edgeName===o?{edgeName:o}:{field:n.name},[d.entry,T]));else{let e={field:n.name,edgeName:o,componentType:S.componentType,instanceName:S.instanceName,validate:S.validate??!0,dryRuns:S.allowDryRuns??!0};s.set(r,[...c,{options:e,hints:R(S.hints),entry:T,entryCtx:N}])}else N.error(a.ASSISTANT_UNKNOWN_OPTIONS_COMPONENT,l.ASSISTANT_UNKNOWN_OPTIONS_COMPONENT(T,S,r,p))}}}return s})(e.writable??{},K,{model:t,components:s},N.at("writable"));var Y=[F.metaEntries,W.metaEntries,new Map([...V].flatMap(([e,[t]])=>t?[[e,t.entryCtx]]:[]))];for(let e of t.entityTypes){let i=Y.flatMap(t=>t.get(e)??[])[0],r=M(e);i&&[...t.resolvedShapes.keys()].some(e=>e===r)&&i.error(a.ASSISTANT_META_TYPE_NAME_CONFLICT,l.ASSISTANT_META_TYPE_NAME_CONFLICT(e,r))}let x=t.entityTypes.filter(e=>(F.groups[e]?.length??0)>0||(W.groups[e]?.length??0)>0||(V.get(e)?.length??0)>0).map(M),G=((e,{actions:t,resolveRef:i,builtInMutations:r,typeNames:n},s)=>{let o=[],S=[...t.values()].map(e=>String(e.name));for(let[p,N]of Object.entries(e)){let e=s.at(p),T=[...t.values()].find(e=>e.name===p);if(!T){e.error(a.ASSISTANT_UNKNOWN_ACTION,l.ASSISTANT_UNKNOWN_ACTION(p,S));continue}let c=N?.as??p,d=o.find(e=>e.fieldName===c),f=D(c);if(r.has(c)||d){e.error(a.ASSISTANT_MUTATION_NAME_CONFLICT,l.ASSISTANT_MUTATION_NAME_CONFLICT(p,c,d?`"assistant.actions.${d.actionName}" already exposes`:"the built-in mutation of that name already takes"));continue}if(n.has(f)||o.some(e=>D(e.fieldName)===f)){e.error(a.ASSISTANT_ACTION_RESULT_TYPE_CONFLICT,l.ASSISTANT_ACTION_RESULT_TYPE_CONFLICT(p,c,f));continue}let A=N?.description??T.description;o.push({fieldName:c,actionName:p,...void 0===A?{}:{description:A},args:Object.fromEntries(Object.entries(T.params).map(([e,{schema:t}])=>[e,P(t,i)])),result:Object.fromEntries(Object.entries(T.result).map(([e,t])=>[e,L(t,i)]))})}return o})(e.actions??{},{actions:p,resolveRef:A,builtInMutations:new Set(["deleteEntity",m.mutation,_.mutation,...K.map(({entityType:e})=>`modify${e}`)]),typeNames:new Set([...O,...t.resolvedShapes.keys(),...x])},N.at("actions")),z=((e,t)=>{let i=e.lenses??{},r=new Set;for(let[n,s]of Object.entries(e.entities??{}))for(let[e,o]of Object.entries(s))for(let s of o?.lenses??[])Object.hasOwn(i,s)?r.add(s):t.at("entities",n,e,"lenses").error(a.ASSISTANT_UNKNOWN_LENS,l.ASSISTANT_UNKNOWN_LENS(`${n}.${e}`,s,Object.keys(i)));for(let e of Object.keys(i))I.has(e)?t.at("lenses",e).error(a.ASSISTANT_RESERVED_LENS_NAME,l.ASSISTANT_RESERVED_LENS_NAME(e,[...I])):r.has(e)||t.at("lenses",e).error(a.ASSISTANT_EMPTY_LENS,l.ASSISTANT_EMPTY_LENS(e));return Object.fromEntries(Object.entries(i).map(([e,{description:t,maxDepth:i}])=>[e,{description:t,maxDepth:i??1}]))})(e,N);if(N.errors.length>d)return;let B=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{hints:R(t.hints),groups:Object.entries(t.groups).map(([e,t])=>({instanceName:e,groupId:t?.as??e,...t?.description===void 0?{}:{description:t.description},dryRuns:t?.allowDryRuns??!0}))}]));return{declarations:{entities:Object.fromEntries(Object.keys(e.entities??{}).map(e=>[e,(E.get(e)??[]).map(e=>({name:e.name,source:e.source,type:e.type,localized:e.localized,describedByManifest:e.describedByManifest,...void 0===e.description?{}:{description:e.description},...void 0===e.valueDescription?{}:{valueDescription:e.valueDescription},...void 0===e.enumValues?{}:{enumValues:e.enumValues},...void 0===e.lenses?{}:{lenses:e.lenses}}))])),enumValues:Object.fromEntries(t.entityTypes.map(e=>[e,Object.fromEntries(Object.entries(t.resolvedShapes.get(e)?.properties??{}).flatMap(([e,t])=>{let i=T(t,A).enumValues;return i?[[e,i]]:[]}))])),deletable:Object.keys(e.deletable??{}),writable:Object.fromEntries(Object.entries(e.writable??{}).map(([e,i])=>[e,Object.fromEntries(Object.entries(i).map(([i,r])=>[i,{defaultOptionsName:r?.options?.as===void 0,members:Object.fromEntries(t.entityTypes.filter(i=>i===e||[...t.aliases].find(([t])=>t===e)?.[1].includes(i)).flatMap(r=>{let n=h(t.resolvedShapes.get(r)?.properties??{},i),s=n&&g(r,{property:i,writableKey:e},n,{model:t,resolveRef:A,exposed:new Map,sources:{}},N.at("writable")),o=V.get(r)?.find(t=>t.entry===`${e}.${i}`);return s?[[r,{field:s,...T(n,A).localized?{exposedDescription:b}:{},...o?{options:{options:o.options,hints:o.hints}}:{}}]]:[]}))}]))])),childRecipes:B(e.childRecipes??{}),replaceRecipes:B(e.replaceRecipes??{})},entityTypes:t.entityTypes,aliases:Object.fromEntries(t.aliases),exampleType:t.rootEntityTypes[0]??t.entityTypes[0],states:{navigationStates:i.navigationStates,viewStates:i.viewStates,toolStates:i.toolStates},deletableTypes:k,writableTypes:K,actionFields:G,childRecipes:Object.fromEntries(Object.entries(F.groups).map(([e,t])=>[e,{groups:t,hints:F.hints.get(e)??[]}])),replaceRecipes:Object.fromEntries(Object.entries(W.groups).map(([e,t])=>[e,{groups:t,hints:W.hints.get(e)??[]}])),optionsEdges:Object.fromEntries([...V].map(([e,t])=>[e,t.map(({options:e,hints:t})=>({options:e,hints:t}))])),fields:Object.fromEntries([...C].map(([e,t])=>[e,t.map(t=>o(t,E.get(e)??[]))])),lenses:z}};export const createAssistantSchema=(e,t,n)=>{let s=resolveAssistantManifest(e,t,n);if(s)try{return{...r(s),resolved:s}}catch(e){if(e instanceof i)return void n.at("entities").error(a.ASSISTANT_FIELD_SHAPE_CONFLICT,l.ASSISTANT_FIELD_SHAPE_CONFLICT(e.fieldName,e.exposures));n.error(a.ASSISTANT_INVALID_SCHEMA,l.ASSISTANT_INVALID_SCHEMA([e instanceof Error?e.message:String(e)]));return}};
|
|
@@ -55,6 +55,88 @@ export interface paths {
|
|
|
55
55
|
readonly patch?: never
|
|
56
56
|
readonly trace?: never
|
|
57
57
|
}
|
|
58
|
+
readonly '/auth/callback': {
|
|
59
|
+
readonly parameters: {
|
|
60
|
+
readonly query?: never
|
|
61
|
+
readonly header?: never
|
|
62
|
+
readonly path?: never
|
|
63
|
+
readonly cookie?: never
|
|
64
|
+
}
|
|
65
|
+
readonly get: operations['completeBrowserLogin']
|
|
66
|
+
readonly put?: never
|
|
67
|
+
readonly post?: never
|
|
68
|
+
readonly delete?: never
|
|
69
|
+
readonly options?: never
|
|
70
|
+
readonly head?: never
|
|
71
|
+
readonly patch?: never
|
|
72
|
+
readonly trace?: never
|
|
73
|
+
}
|
|
74
|
+
readonly '/auth/config': {
|
|
75
|
+
readonly parameters: {
|
|
76
|
+
readonly query?: never
|
|
77
|
+
readonly header?: never
|
|
78
|
+
readonly path?: never
|
|
79
|
+
readonly cookie?: never
|
|
80
|
+
}
|
|
81
|
+
readonly get: operations['getBrowserAuthConfig']
|
|
82
|
+
readonly put?: never
|
|
83
|
+
readonly post?: never
|
|
84
|
+
readonly delete?: never
|
|
85
|
+
readonly options?: never
|
|
86
|
+
readonly head?: never
|
|
87
|
+
readonly patch?: never
|
|
88
|
+
readonly trace?: never
|
|
89
|
+
}
|
|
90
|
+
readonly '/auth/identity': {
|
|
91
|
+
readonly parameters: {
|
|
92
|
+
readonly query?: never
|
|
93
|
+
readonly header?: never
|
|
94
|
+
readonly path?: never
|
|
95
|
+
readonly cookie?: never
|
|
96
|
+
}
|
|
97
|
+
readonly get?: never
|
|
98
|
+
readonly put?: never
|
|
99
|
+
/** @description Resolve a verified customer Cognito identity to a stable Phoenix account and its active workspaces. Creates an empty account on first use; does not grant project or system access. */
|
|
100
|
+
readonly post: operations['resolveIdentity']
|
|
101
|
+
readonly delete?: never
|
|
102
|
+
readonly options?: never
|
|
103
|
+
readonly head?: never
|
|
104
|
+
readonly patch?: never
|
|
105
|
+
readonly trace?: never
|
|
106
|
+
}
|
|
107
|
+
readonly '/auth/login': {
|
|
108
|
+
readonly parameters: {
|
|
109
|
+
readonly query?: never
|
|
110
|
+
readonly header?: never
|
|
111
|
+
readonly path?: never
|
|
112
|
+
readonly cookie?: never
|
|
113
|
+
}
|
|
114
|
+
readonly get: operations['startBrowserLogin']
|
|
115
|
+
readonly put?: never
|
|
116
|
+
readonly post?: never
|
|
117
|
+
readonly delete?: never
|
|
118
|
+
readonly options?: never
|
|
119
|
+
readonly head?: never
|
|
120
|
+
readonly patch?: never
|
|
121
|
+
readonly trace?: never
|
|
122
|
+
}
|
|
123
|
+
readonly '/auth/logout': {
|
|
124
|
+
readonly parameters: {
|
|
125
|
+
readonly query?: never
|
|
126
|
+
readonly header?: never
|
|
127
|
+
readonly path?: never
|
|
128
|
+
readonly cookie?: never
|
|
129
|
+
}
|
|
130
|
+
readonly get?: never
|
|
131
|
+
readonly put?: never
|
|
132
|
+
/** @description Destroy the local session and return the fixed Cognito hosted logout URL. Requires the exact shared Studio Origin. */
|
|
133
|
+
readonly post: operations['endBrowserSession']
|
|
134
|
+
readonly delete?: never
|
|
135
|
+
readonly options?: never
|
|
136
|
+
readonly head?: never
|
|
137
|
+
readonly patch?: never
|
|
138
|
+
readonly trace?: never
|
|
139
|
+
}
|
|
58
140
|
readonly '/auth/me': {
|
|
59
141
|
readonly parameters: {
|
|
60
142
|
readonly query?: never
|
|
@@ -72,6 +154,23 @@ export interface paths {
|
|
|
72
154
|
readonly patch?: never
|
|
73
155
|
readonly trace?: never
|
|
74
156
|
}
|
|
157
|
+
readonly '/auth/session': {
|
|
158
|
+
readonly parameters: {
|
|
159
|
+
readonly query?: never
|
|
160
|
+
readonly header?: never
|
|
161
|
+
readonly path?: never
|
|
162
|
+
readonly cookie?: never
|
|
163
|
+
}
|
|
164
|
+
/** @description Read the opaque browser session and current account status/memberships. Requires the exact shared Studio Origin. */
|
|
165
|
+
readonly get: operations['getBrowserSession']
|
|
166
|
+
readonly put?: never
|
|
167
|
+
readonly post?: never
|
|
168
|
+
readonly delete?: never
|
|
169
|
+
readonly options?: never
|
|
170
|
+
readonly head?: never
|
|
171
|
+
readonly patch?: never
|
|
172
|
+
readonly trace?: never
|
|
173
|
+
}
|
|
75
174
|
readonly '/auth/token': {
|
|
76
175
|
readonly parameters: {
|
|
77
176
|
readonly query?: never
|
|
@@ -1603,6 +1702,299 @@ export interface operations {
|
|
|
1603
1702
|
}
|
|
1604
1703
|
}
|
|
1605
1704
|
}
|
|
1705
|
+
readonly completeBrowserLogin: {
|
|
1706
|
+
readonly parameters: {
|
|
1707
|
+
readonly query: {
|
|
1708
|
+
readonly code: string
|
|
1709
|
+
readonly state: string
|
|
1710
|
+
}
|
|
1711
|
+
readonly header?: never
|
|
1712
|
+
readonly path?: never
|
|
1713
|
+
readonly cookie?: never
|
|
1714
|
+
}
|
|
1715
|
+
readonly requestBody?: never
|
|
1716
|
+
readonly responses: {
|
|
1717
|
+
/** @description Redirect to the configured sign-in or Studio destination. */
|
|
1718
|
+
readonly 302: {
|
|
1719
|
+
headers: {
|
|
1720
|
+
readonly [name: string]: unknown
|
|
1721
|
+
}
|
|
1722
|
+
content: {
|
|
1723
|
+
readonly 'application/json': Record<string, unknown>
|
|
1724
|
+
}
|
|
1725
|
+
}
|
|
1726
|
+
/** @description Bad Request! */
|
|
1727
|
+
readonly 400: {
|
|
1728
|
+
headers: {
|
|
1729
|
+
readonly [name: string]: unknown
|
|
1730
|
+
}
|
|
1731
|
+
content: {
|
|
1732
|
+
readonly 'application/json': components['schemas']['BadRequestError']
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1735
|
+
/** @description Unauthorized! */
|
|
1736
|
+
readonly 401: {
|
|
1737
|
+
headers: {
|
|
1738
|
+
readonly [name: string]: unknown
|
|
1739
|
+
}
|
|
1740
|
+
content: {
|
|
1741
|
+
readonly 'application/json': components['schemas']['UnauthorizedError']
|
|
1742
|
+
}
|
|
1743
|
+
}
|
|
1744
|
+
/** @description Forbidden! */
|
|
1745
|
+
readonly 403: {
|
|
1746
|
+
headers: {
|
|
1747
|
+
readonly [name: string]: unknown
|
|
1748
|
+
}
|
|
1749
|
+
content: {
|
|
1750
|
+
readonly 'application/json': components['schemas']['ForbiddenError']
|
|
1751
|
+
}
|
|
1752
|
+
}
|
|
1753
|
+
/** @description Not Found! */
|
|
1754
|
+
readonly 404: {
|
|
1755
|
+
headers: {
|
|
1756
|
+
readonly [name: string]: unknown
|
|
1757
|
+
}
|
|
1758
|
+
content: {
|
|
1759
|
+
readonly 'application/json': components['schemas']['NotFoundError']
|
|
1760
|
+
}
|
|
1761
|
+
}
|
|
1762
|
+
/** @description Service Unavailable! */
|
|
1763
|
+
readonly 503: {
|
|
1764
|
+
headers: {
|
|
1765
|
+
readonly [name: string]: unknown
|
|
1766
|
+
}
|
|
1767
|
+
content: {
|
|
1768
|
+
readonly 'application/json': components['schemas']['ServiceUnavailableError']
|
|
1769
|
+
}
|
|
1770
|
+
}
|
|
1771
|
+
/** @description An unexpected error occurred! */
|
|
1772
|
+
readonly default: {
|
|
1773
|
+
headers: {
|
|
1774
|
+
readonly [name: string]: unknown
|
|
1775
|
+
}
|
|
1776
|
+
content: {
|
|
1777
|
+
readonly 'application/json': components['schemas']['DefaultResponse']
|
|
1778
|
+
}
|
|
1779
|
+
}
|
|
1780
|
+
}
|
|
1781
|
+
}
|
|
1782
|
+
readonly getBrowserAuthConfig: {
|
|
1783
|
+
readonly parameters: {
|
|
1784
|
+
readonly query?: never
|
|
1785
|
+
readonly header?: never
|
|
1786
|
+
readonly path?: never
|
|
1787
|
+
readonly cookie?: never
|
|
1788
|
+
}
|
|
1789
|
+
readonly requestBody?: never
|
|
1790
|
+
readonly responses: {
|
|
1791
|
+
/** @description Shared Studio origin when browser sign-in is configured; null otherwise. */
|
|
1792
|
+
readonly 200: {
|
|
1793
|
+
headers: {
|
|
1794
|
+
readonly [name: string]: unknown
|
|
1795
|
+
}
|
|
1796
|
+
content: {
|
|
1797
|
+
readonly 'application/json': {
|
|
1798
|
+
readonly studioOrigin: string | null
|
|
1799
|
+
}
|
|
1800
|
+
}
|
|
1801
|
+
}
|
|
1802
|
+
/** @description An unexpected error occurred! */
|
|
1803
|
+
readonly default: {
|
|
1804
|
+
headers: {
|
|
1805
|
+
readonly [name: string]: unknown
|
|
1806
|
+
}
|
|
1807
|
+
content: {
|
|
1808
|
+
readonly 'application/json': components['schemas']['DefaultResponse']
|
|
1809
|
+
}
|
|
1810
|
+
}
|
|
1811
|
+
}
|
|
1812
|
+
}
|
|
1813
|
+
readonly resolveIdentity: {
|
|
1814
|
+
readonly parameters: {
|
|
1815
|
+
readonly query?: never
|
|
1816
|
+
readonly header?: never
|
|
1817
|
+
readonly path?: never
|
|
1818
|
+
readonly cookie?: never
|
|
1819
|
+
}
|
|
1820
|
+
readonly requestBody?: never
|
|
1821
|
+
readonly responses: {
|
|
1822
|
+
/** @description The Phoenix account and its active Cognito customer memberships. */
|
|
1823
|
+
readonly 200: {
|
|
1824
|
+
headers: {
|
|
1825
|
+
readonly [name: string]: unknown
|
|
1826
|
+
}
|
|
1827
|
+
content: {
|
|
1828
|
+
readonly 'application/json': {
|
|
1829
|
+
/** Format: uuid */
|
|
1830
|
+
readonly userId: string
|
|
1831
|
+
readonly workspaces: readonly {
|
|
1832
|
+
/** Format: uuid */
|
|
1833
|
+
readonly customerId: string
|
|
1834
|
+
readonly name: string
|
|
1835
|
+
/** @enum {string} */
|
|
1836
|
+
readonly role: 'user' | 'admin' | 'superadmin'
|
|
1837
|
+
readonly slug: string
|
|
1838
|
+
readonly tags: readonly string[]
|
|
1839
|
+
/** @enum {string} */
|
|
1840
|
+
readonly type: 'standard' | 'sdk_builder'
|
|
1841
|
+
}[]
|
|
1842
|
+
}
|
|
1843
|
+
}
|
|
1844
|
+
}
|
|
1845
|
+
/** @description Unauthorized! */
|
|
1846
|
+
readonly 401: {
|
|
1847
|
+
headers: {
|
|
1848
|
+
readonly [name: string]: unknown
|
|
1849
|
+
}
|
|
1850
|
+
content: {
|
|
1851
|
+
readonly 'application/json': components['schemas']['UnauthorizedError']
|
|
1852
|
+
}
|
|
1853
|
+
}
|
|
1854
|
+
/** @description Forbidden! */
|
|
1855
|
+
readonly 403: {
|
|
1856
|
+
headers: {
|
|
1857
|
+
readonly [name: string]: unknown
|
|
1858
|
+
}
|
|
1859
|
+
content: {
|
|
1860
|
+
readonly 'application/json': components['schemas']['ForbiddenError']
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
/** @description Not Found! */
|
|
1864
|
+
readonly 404: {
|
|
1865
|
+
headers: {
|
|
1866
|
+
readonly [name: string]: unknown
|
|
1867
|
+
}
|
|
1868
|
+
content: {
|
|
1869
|
+
readonly 'application/json': components['schemas']['NotFoundError']
|
|
1870
|
+
}
|
|
1871
|
+
}
|
|
1872
|
+
/** @description Service Unavailable! */
|
|
1873
|
+
readonly 503: {
|
|
1874
|
+
headers: {
|
|
1875
|
+
readonly [name: string]: unknown
|
|
1876
|
+
}
|
|
1877
|
+
content: {
|
|
1878
|
+
readonly 'application/json': components['schemas']['ServiceUnavailableError']
|
|
1879
|
+
}
|
|
1880
|
+
}
|
|
1881
|
+
/** @description An unexpected error occurred! */
|
|
1882
|
+
readonly default: {
|
|
1883
|
+
headers: {
|
|
1884
|
+
readonly [name: string]: unknown
|
|
1885
|
+
}
|
|
1886
|
+
content: {
|
|
1887
|
+
readonly 'application/json': components['schemas']['DefaultResponse']
|
|
1888
|
+
}
|
|
1889
|
+
}
|
|
1890
|
+
}
|
|
1891
|
+
}
|
|
1892
|
+
readonly startBrowserLogin: {
|
|
1893
|
+
readonly parameters: {
|
|
1894
|
+
readonly query?: never
|
|
1895
|
+
readonly header?: never
|
|
1896
|
+
readonly path?: never
|
|
1897
|
+
readonly cookie?: never
|
|
1898
|
+
}
|
|
1899
|
+
readonly requestBody?: never
|
|
1900
|
+
readonly responses: {
|
|
1901
|
+
/** @description Redirect to the configured sign-in or Studio destination. */
|
|
1902
|
+
readonly 302: {
|
|
1903
|
+
headers: {
|
|
1904
|
+
readonly [name: string]: unknown
|
|
1905
|
+
}
|
|
1906
|
+
content: {
|
|
1907
|
+
readonly 'application/json': Record<string, unknown>
|
|
1908
|
+
}
|
|
1909
|
+
}
|
|
1910
|
+
/** @description Bad Request! */
|
|
1911
|
+
readonly 400: {
|
|
1912
|
+
headers: {
|
|
1913
|
+
readonly [name: string]: unknown
|
|
1914
|
+
}
|
|
1915
|
+
content: {
|
|
1916
|
+
readonly 'application/json': components['schemas']['BadRequestError']
|
|
1917
|
+
}
|
|
1918
|
+
}
|
|
1919
|
+
/** @description Not Found! */
|
|
1920
|
+
readonly 404: {
|
|
1921
|
+
headers: {
|
|
1922
|
+
readonly [name: string]: unknown
|
|
1923
|
+
}
|
|
1924
|
+
content: {
|
|
1925
|
+
readonly 'application/json': components['schemas']['NotFoundError']
|
|
1926
|
+
}
|
|
1927
|
+
}
|
|
1928
|
+
/** @description An unexpected error occurred! */
|
|
1929
|
+
readonly default: {
|
|
1930
|
+
headers: {
|
|
1931
|
+
readonly [name: string]: unknown
|
|
1932
|
+
}
|
|
1933
|
+
content: {
|
|
1934
|
+
readonly 'application/json': components['schemas']['DefaultResponse']
|
|
1935
|
+
}
|
|
1936
|
+
}
|
|
1937
|
+
}
|
|
1938
|
+
}
|
|
1939
|
+
readonly endBrowserSession: {
|
|
1940
|
+
readonly parameters: {
|
|
1941
|
+
readonly query?: never
|
|
1942
|
+
readonly header?: never
|
|
1943
|
+
readonly path?: never
|
|
1944
|
+
readonly cookie?: never
|
|
1945
|
+
}
|
|
1946
|
+
readonly requestBody?: never
|
|
1947
|
+
readonly responses: {
|
|
1948
|
+
/** @description Navigate to this URL to finish hosted logout. */
|
|
1949
|
+
readonly 200: {
|
|
1950
|
+
headers: {
|
|
1951
|
+
readonly [name: string]: unknown
|
|
1952
|
+
}
|
|
1953
|
+
content: {
|
|
1954
|
+
readonly 'application/json': {
|
|
1955
|
+
/** Format: uri */
|
|
1956
|
+
readonly logoutUrl: string
|
|
1957
|
+
}
|
|
1958
|
+
}
|
|
1959
|
+
}
|
|
1960
|
+
/** @description Bad Request! */
|
|
1961
|
+
readonly 400: {
|
|
1962
|
+
headers: {
|
|
1963
|
+
readonly [name: string]: unknown
|
|
1964
|
+
}
|
|
1965
|
+
content: {
|
|
1966
|
+
readonly 'application/json': components['schemas']['BadRequestError']
|
|
1967
|
+
}
|
|
1968
|
+
}
|
|
1969
|
+
/** @description Forbidden! */
|
|
1970
|
+
readonly 403: {
|
|
1971
|
+
headers: {
|
|
1972
|
+
readonly [name: string]: unknown
|
|
1973
|
+
}
|
|
1974
|
+
content: {
|
|
1975
|
+
readonly 'application/json': components['schemas']['ForbiddenError']
|
|
1976
|
+
}
|
|
1977
|
+
}
|
|
1978
|
+
/** @description Not Found! */
|
|
1979
|
+
readonly 404: {
|
|
1980
|
+
headers: {
|
|
1981
|
+
readonly [name: string]: unknown
|
|
1982
|
+
}
|
|
1983
|
+
content: {
|
|
1984
|
+
readonly 'application/json': components['schemas']['NotFoundError']
|
|
1985
|
+
}
|
|
1986
|
+
}
|
|
1987
|
+
/** @description An unexpected error occurred! */
|
|
1988
|
+
readonly default: {
|
|
1989
|
+
headers: {
|
|
1990
|
+
readonly [name: string]: unknown
|
|
1991
|
+
}
|
|
1992
|
+
content: {
|
|
1993
|
+
readonly 'application/json': components['schemas']['DefaultResponse']
|
|
1994
|
+
}
|
|
1995
|
+
}
|
|
1996
|
+
}
|
|
1997
|
+
}
|
|
1606
1998
|
readonly getApiSession: {
|
|
1607
1999
|
readonly parameters: {
|
|
1608
2000
|
readonly query?: never
|
|
@@ -1652,6 +2044,77 @@ export interface operations {
|
|
|
1652
2044
|
}
|
|
1653
2045
|
}
|
|
1654
2046
|
}
|
|
2047
|
+
readonly getBrowserSession: {
|
|
2048
|
+
readonly parameters: {
|
|
2049
|
+
readonly query?: never
|
|
2050
|
+
readonly header?: never
|
|
2051
|
+
readonly path?: never
|
|
2052
|
+
readonly cookie?: never
|
|
2053
|
+
}
|
|
2054
|
+
readonly requestBody?: never
|
|
2055
|
+
readonly responses: {
|
|
2056
|
+
/** @description Current account and fixed session expiry, in Unix milliseconds. */
|
|
2057
|
+
readonly 200: {
|
|
2058
|
+
headers: {
|
|
2059
|
+
readonly [name: string]: unknown
|
|
2060
|
+
}
|
|
2061
|
+
content: {
|
|
2062
|
+
readonly 'application/json': {
|
|
2063
|
+
readonly expiresAt: number
|
|
2064
|
+
/** Format: uuid */
|
|
2065
|
+
readonly userId: string
|
|
2066
|
+
readonly workspaces: readonly {
|
|
2067
|
+
/** Format: uuid */
|
|
2068
|
+
readonly customerId: string
|
|
2069
|
+
readonly name: string
|
|
2070
|
+
/** @enum {string} */
|
|
2071
|
+
readonly role: 'user' | 'admin' | 'superadmin'
|
|
2072
|
+
readonly slug: string
|
|
2073
|
+
readonly tags: readonly string[]
|
|
2074
|
+
/** @enum {string} */
|
|
2075
|
+
readonly type: 'standard' | 'sdk_builder'
|
|
2076
|
+
}[]
|
|
2077
|
+
}
|
|
2078
|
+
}
|
|
2079
|
+
}
|
|
2080
|
+
/** @description Unauthorized! */
|
|
2081
|
+
readonly 401: {
|
|
2082
|
+
headers: {
|
|
2083
|
+
readonly [name: string]: unknown
|
|
2084
|
+
}
|
|
2085
|
+
content: {
|
|
2086
|
+
readonly 'application/json': components['schemas']['UnauthorizedError']
|
|
2087
|
+
}
|
|
2088
|
+
}
|
|
2089
|
+
/** @description Forbidden! */
|
|
2090
|
+
readonly 403: {
|
|
2091
|
+
headers: {
|
|
2092
|
+
readonly [name: string]: unknown
|
|
2093
|
+
}
|
|
2094
|
+
content: {
|
|
2095
|
+
readonly 'application/json': components['schemas']['ForbiddenError']
|
|
2096
|
+
}
|
|
2097
|
+
}
|
|
2098
|
+
/** @description Not Found! */
|
|
2099
|
+
readonly 404: {
|
|
2100
|
+
headers: {
|
|
2101
|
+
readonly [name: string]: unknown
|
|
2102
|
+
}
|
|
2103
|
+
content: {
|
|
2104
|
+
readonly 'application/json': components['schemas']['NotFoundError']
|
|
2105
|
+
}
|
|
2106
|
+
}
|
|
2107
|
+
/** @description An unexpected error occurred! */
|
|
2108
|
+
readonly default: {
|
|
2109
|
+
headers: {
|
|
2110
|
+
readonly [name: string]: unknown
|
|
2111
|
+
}
|
|
2112
|
+
content: {
|
|
2113
|
+
readonly 'application/json': components['schemas']['DefaultResponse']
|
|
2114
|
+
}
|
|
2115
|
+
}
|
|
2116
|
+
}
|
|
2117
|
+
}
|
|
1655
2118
|
readonly exchangeAuthCode: {
|
|
1656
2119
|
readonly parameters: {
|
|
1657
2120
|
readonly query?: never
|
|
@@ -2,7 +2,7 @@ import type { AnyClientTool } from '@tanstack/ai';
|
|
|
2
2
|
import { type UIMessage } from '@tanstack/ai-client';
|
|
3
3
|
import { type ObservableWithLastValue } from '@salsita-ai/common/utils';
|
|
4
4
|
import { type AuthorizedPhoenixApiClient } from '#package/client';
|
|
5
|
-
import type { DomainContextSelectors, DomainServicesSelectors, InitializableSystem, SessionAssistantSetup, SpecSelectors } from '#package/domain';
|
|
5
|
+
import type { AssistantManifest, DomainContextSelectors, DomainServicesSelectors, InitializableSystem, SessionAssistantSetup, SpecSelectors } from '#package/domain';
|
|
6
6
|
import type { ConfiguratorExtensionSelectors } from '../../selectors.js';
|
|
7
7
|
/** A tool of the assistant that the model calls and the browser runs, as the chat client accepts it. */
|
|
8
8
|
export type AssistantClientTool = AnyClientTool;
|
|
@@ -127,11 +127,31 @@ export declare class AssistantSystem implements InitializableSystem {
|
|
|
127
127
|
private readonly _recorder;
|
|
128
128
|
/** The recorder's subscription to the committed emissions of the store; made by the first `initialize()`. */
|
|
129
129
|
private _recording;
|
|
130
|
+
/**
|
|
131
|
+
* The tool call of every `apply` by the state it committed or held, for as long as the state
|
|
132
|
+
* lives: an undone state that the undo history dropped is forgotten with it.
|
|
133
|
+
*
|
|
134
|
+
* Accepted: a commit the project's `registerIsUndoable` keeps out of the history never becomes a
|
|
135
|
+
* step, so the row of its `apply` never offers Undo.
|
|
136
|
+
*/
|
|
137
|
+
private readonly _applyToolCallIds;
|
|
138
|
+
private readonly _undoTipToolCallId;
|
|
130
139
|
constructor(_context: AssistantSystemContext);
|
|
131
140
|
/** The conversation. It never completes, and holds the empty chat whenever no chat is active. */
|
|
132
141
|
readonly chat$: ObservableWithLastValue<AssistantChatSnapshot>;
|
|
133
142
|
/** The state of the built-in panel. It never completes. */
|
|
134
143
|
readonly panel$: ObservableWithLastValue<AssistantPanelSnapshot>;
|
|
144
|
+
/**
|
|
145
|
+
* The `apply` tool call whose committed state is the step of the undo history the configuration is
|
|
146
|
+
* at; nothing when that step is not a change of the assistant. It never completes.
|
|
147
|
+
*/
|
|
148
|
+
readonly undoTipToolCallId$: ObservableWithLastValue<string | undefined>;
|
|
149
|
+
/**
|
|
150
|
+
* The manifest the initialized session runs, narrowed by the project's setup handler: what the
|
|
151
|
+
* agent can read, so the panel reads recipes and options the way the agent does. `null` while the
|
|
152
|
+
* assistant is off for the session or its setup failed.
|
|
153
|
+
*/
|
|
154
|
+
getSessionManifest: () => AssistantManifest | null;
|
|
135
155
|
/**
|
|
136
156
|
* A new configuration load: the chat of the previous one is deactivated and both observables go
|
|
137
157
|
* back to their empty values. An activation that is still held outlives it and gets the chat of
|
|
@@ -227,6 +247,15 @@ export declare class AssistantSystem implements InitializableSystem {
|
|
|
227
247
|
* server is therefore gone from the thread and has to be written again.
|
|
228
248
|
*/
|
|
229
249
|
reloadThread: () => void;
|
|
250
|
+
/**
|
|
251
|
+
* Undoes the changes of the given `apply` tool calls, one undo step at a time, while the step the
|
|
252
|
+
* configuration is at is one of them. A change the user made in between stops it, so it is never
|
|
253
|
+
* taken back; the non-undoable commits made on top of an undone change go with it, as with the
|
|
254
|
+
* toolbar's undo.
|
|
255
|
+
*
|
|
256
|
+
* Accepted: like the toolbar's undo, it does not check the session mode; only `apply` requires `owner`.
|
|
257
|
+
*/
|
|
258
|
+
undoToolCalls: (toolCallIds: ReadonlySet<string>) => void;
|
|
230
259
|
setOpen: (open: boolean) => void;
|
|
231
260
|
setInputFocused: (isInputFocused: boolean) => void;
|
|
232
261
|
/**
|
|
@@ -237,6 +266,12 @@ export declare class AssistantSystem implements InitializableSystem {
|
|
|
237
266
|
private _findRefusedMessageIndex;
|
|
238
267
|
private _sendOn;
|
|
239
268
|
private _resume;
|
|
269
|
+
/**
|
|
270
|
+
* The `apply` call whose committed state is the step the configuration is at. Nothing at the bottom
|
|
271
|
+
* of the history, where nothing can be undone: that step was not made by a change it could take back.
|
|
272
|
+
*/
|
|
273
|
+
private _findTipToolCallId;
|
|
274
|
+
private _refreshUndoTip;
|
|
240
275
|
private _committedState;
|
|
241
276
|
private _patchPanel;
|
|
242
277
|
/**
|