{"version":3,"file":"acorex-platform-runtime-contracts.mjs","sources":["../../../../libs/platform/runtime-contracts/src/lib/shared/catalog-definition-base.types.ts","../../../../libs/platform/runtime-contracts/src/lib/shared/catalog-definition.categories.ts","../../../../libs/platform/runtime-contracts/src/lib/commands/command-definition.types.ts","../../../../libs/platform/runtime-contracts/src/lib/commands/define-command.ts","../../../../libs/platform/runtime-contracts/src/lib/commands/catalog-command-definition.ts","../../../../libs/platform/runtime-contracts/src/lib/queries/query-definition.types.ts","../../../../libs/platform/runtime-contracts/src/lib/queries/define-query.ts","../../../../libs/platform/runtime-contracts/src/lib/queries/catalog-query-definition.ts","../../../../libs/platform/runtime-contracts/src/lib/widgets/widget-definition.types.ts","../../../../libs/platform/runtime-contracts/src/lib/widgets/define-widget.ts","../../../../libs/platform/runtime-contracts/src/lib/index.ts","../../../../libs/platform/runtime-contracts/src/acorex-platform-runtime-contracts.ts"],"sourcesContent":["/**\n * Shared build-time catalog metadata for command, query, and widget definition sidecars\n * (`defineCommand`, `defineQuery`, `defineWidget`).\n * Lives under `shared/` so consumers import one module without a \"command\" prefix on generic shapes.\n */\n\nimport type { AXPDefinitionCategory } from '@acorex/platform/contracts';\n\n//#region ---- Schema row ----\n\n/** Catalog metadata validation: rule key + optional rule options only. */\nexport interface AXPCatalogValidationRuleValue {\n  rule: string;\n  options?: Record<string, unknown>;\n}\n\n/**\n * Widget/interface reference for a schema property (name + optional widget options).\n */\nexport interface AXPCatalogInterfaceDefinitionValue {\n  name: string;\n  options?: Record<string, unknown>;\n}\n\n/**\n * Agent-facing hints when a single catalog row can be satisfied in several ways\n * (inline list, registry-backed dataSource key, query + assign, tabular columns, context merge, etc.).\n * Documentation only; tooling may surface this next to `description` and `interface`.\n */\nexport interface AXPCatalogPropertyBindingHints {\n  /** Named strategies the agent or author may use to supply this parameter. */\n  strategies?: readonly string[];\n  /** Short concrete examples (strings or JSON fragments as documentation, not executed). */\n  examples?: readonly string[];\n  /** Extra notes: merge rules, mode flags, registry keys, or when to prefer one strategy over another. */\n  notes?: string;\n}\n\n/**\n * One input/output property description (same structural role as entity option definitions).\n */\nexport interface AXPCatalogSchemaPropertyDefinition {\n  name: string;\n  title: string;\n  description?: string;\n  icon?: string;\n  defaultValue?: unknown;\n  disabled?: boolean;\n  interface: AXPCatalogInterfaceDefinitionValue;\n  validations?: AXPCatalogValidationRuleValue[];\n  /**\n   * Optional multi-strategy binding documentation for AI and codegen (commands, queries, widget sidecars).\n   * Prefer this over inventing a non-form `interface.name` that is not part of the AI-facing widget catalog.\n   */\n  bindingHints?: AXPCatalogPropertyBindingHints;\n}\n\n//#endregion\n\n//#region ---- AI ----\n\n/** Structured usage hints for planners and assistants (prefer over duplicating rules only in `description`). */\nexport interface AXPCatalogAiUsageMetadata {\n  whenToUse?: string[];\n  avoidWhen?: string[];\n  /** Registry keys or tool names that commonly follow this catalog entry. */\n  followUpTools?: string[];\n}\n\n/** Declarative contracts: what the entry provides, who depends on it, and guarantees. */\nexport interface AXPCatalogAiContractsMetadata {\n  provides?: string[];\n  requiredBy?: string[];\n  guarantees?: string[];\n}\n\nexport type AXPCatalogAiSafetyKind = 'read-only' | 'mutating';\n\nexport interface AXPCatalogAiSafetyMetadata {\n  kind?: AXPCatalogAiSafetyKind;\n  sideEffects?: boolean;\n  requiresConfirmation?: boolean;\n}\n\nexport type AXPCatalogAiPerformanceCost = 'low' | 'medium' | 'high';\n\nexport interface AXPCatalogAiPerformanceMetadata {\n  cost?: AXPCatalogAiPerformanceCost;\n  cacheable?: boolean;\n}\n\nexport interface AXPCatalogAiNextStepMetadata {\n  when: string;\n  action: string;\n}\n\n/**\n * How to interpret a successful payload for agents (documentation only; not live workflow step outcomes).\n */\nexport interface AXPCatalogAiResultSemanticsMetadata {\n  noMatch?: string;\n  exactMatch?: string;\n  multipleMatches?: string;\n  failed?: string;\n  /** Full catalog listing (e.g. no entity filter). */\n  catalog?: string;\n}\n\nexport interface AXPCatalogAiMetadata {\n  shortDescription?: string;\n  /**\n   * Long-form guidance appended to LLM tool descriptions (not for short UI/registry copy).\n   * Keep root `description` concise for pickers and entity rows.\n   */\n  instruction?: string;\n  tags?: string[];\n  usage?: AXPCatalogAiUsageMetadata;\n  contracts?: AXPCatalogAiContractsMetadata;\n  safety?: AXPCatalogAiSafetyMetadata;\n  performance?: AXPCatalogAiPerformanceMetadata;\n  nextSteps?: AXPCatalogAiNextStepMetadata[];\n  resultSemantics?: AXPCatalogAiResultSemanticsMetadata;\n  /**\n   * Default input fragment merged for AI/tool invocations (catalog & tooling).\n   * Runtime merge for a given entry is applied in the AI module (not the generic command executor).\n   */\n  toolInputDefaults?: Record<string, unknown>;\n  /**\n   * Optional JSON Schema fragment for LLM tool `parameters` (OpenAI-style function calling).\n   * Merged over the auto-generated schema from catalog `inputs` (`properties` / `required` deep-merged).\n   * Use when widget-to-type inference is insufficient (e.g. `object`, `array`, `enum`, `format`).\n   */\n  toolParametersSchema?: Record<string, unknown>;\n}\n\n//#endregion\n\n//#region ---- Execution / capabilities ----\n\nexport type AXPCatalogExecutionMode = 'frontend' | 'backend' | 'both';\n\n/**\n * Where this catalog entry is intended to appear in product tooling (AI agents, workflow automation pickers, etc.).\n * Omitted = not declared here; runtimes may fall back to other metadata (e.g. `ai.tags`).\n */\nexport type AXPCatalogCapability = 'ai' | 'workflow';\n\n//#endregion\n\n//#region ---- Catalog metadata root ----\n\nexport interface AXPCatalogMetadataDefinitionBase {\n  title: string;\n  description: string;\n  inputs?: AXPCatalogSchemaPropertyDefinition[];\n  outputs?: AXPCatalogSchemaPropertyDefinition[];\n  ai?: AXPCatalogAiMetadata;\n  capabilities?: AXPCatalogCapability[];\n  categories?: AXPDefinitionCategory | AXPDefinitionCategory[];\n}\n\n//#endregion\n","import type { AXPDefinitionCategory } from '@acorex/platform/contracts';\n\n//#region ---- Shared catalog categories (queries & commands) ----\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_PLATFORM: AXPDefinitionCategory = {\n  name: 'platform',\n  order: 1,\n  title: 'Platform',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_ENTITY: AXPDefinitionCategory = {\n  name: 'entity',\n  order: 2,\n  title: 'Entity',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_STORAGE: AXPDefinitionCategory = {\n  name: 'storage',\n  order: 3,\n  title: 'Storage',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_WIDGETS: AXPDefinitionCategory = {\n  name: 'widgets',\n  order: 4,\n  title: 'Widgets',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_WORKFLOW: AXPDefinitionCategory = {\n  name: 'workflow',\n  order: 5,\n  title: 'Workflow',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_UTILITY: AXPDefinitionCategory = {\n  name: 'utility',\n  order: 6,\n  title: 'Utility',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_SETTINGS: AXPDefinitionCategory = {\n  name: 'settings',\n  order: 7,\n  title: 'Settings',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_AI_TOOLS: AXPDefinitionCategory = {\n  name: 'ai-tools',\n  order: 8,\n  title: 'AI tools',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_SECURITY: AXPDefinitionCategory = {\n  name: 'security',\n  order: 9,\n  title: 'Security',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_DATA_MANAGEMENT: AXPDefinitionCategory = {\n  name: 'data-management',\n  order: 10,\n  title: 'Data management',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_ASSESSMENT: AXPDefinitionCategory = {\n  name: 'assessment',\n  order: 11,\n  title: 'Assessment',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_REPORT: AXPDefinitionCategory = {\n  name: 'report',\n  order: 12,\n  title: 'Report',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_ORGANIZATION: AXPDefinitionCategory = {\n  name: 'organization',\n  order: 13,\n  title: 'Organization',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_TENANT: AXPDefinitionCategory = {\n  name: 'tenant',\n  order: 14,\n  title: 'Tenant',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_HUMAN_CAPITAL: AXPDefinitionCategory = {\n  name: 'human-capital',\n  order: 15,\n  title: 'Human capital',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_PRODUCT: AXPDefinitionCategory = {\n  name: 'product',\n  order: 16,\n  title: 'Product',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_FILE_WIDGET: AXPDefinitionCategory = {\n  name: 'file-widget',\n  order: 17,\n  title: 'File widget',\n};\n\n//#endregion\n","/**\n * Build-time command metadata for AXPCommand implementations.\n * `inputs` / `outputs` are schema rows (same family as entity optionDefinitions).\n * Validation entries: only `rule` name and optional `options` (no title/message on rules).\n * Do not import from Angular templates; sidecars may import `defineCommand` from `@acorex/platform/runtime-contracts`.\n *\n * Query metadata (fetch-only, no outcomes) is defined in `../queries/query-definition.types.ts` with `defineQuery`.\n * Widget metadata sidecars use `../widgets/widget-definition.types.ts` with `defineWidget`.\n */\n\nimport type {\n  AXPCatalogExecutionMode,\n  AXPCatalogMetadataDefinitionBase,\n} from '../shared/catalog-definition-base.types';\n\nexport * from '../shared/catalog-definition-base.types';\n\n//#region ---- Outcomes ----\n\nexport type AXPCommandOutcomeDefinition =\n  | {\n      mode: 'static';\n      values: string[];\n    }\n  | {\n      mode: 'dynamic';\n      summary: string;\n      derivesFrom: string;\n      examples?: string[];\n    };\n\n//#endregion\n\n//#region ---- Root ----\n\nexport interface AXPCommandMetadataDefinition extends AXPCatalogMetadataDefinitionBase {\n  /** Runtime registration key (provideCommand / provideCommandSetups). */\n  key: string;\n  executionMode: AXPCatalogExecutionMode;\n  outcomes: AXPCommandOutcomeDefinition;\n}\n\n//#endregion\n","import type { AXPCommandMetadataDefinition } from './command-definition.types';\n\n//#region ---- defineCommand ----\n\n/**\n * Typed identity helper for command metadata sidecars.\n */\nexport function defineCommand<T extends AXPCommandMetadataDefinition>(definition: T): T {\n  return definition;\n}\n\n//#endregion\n","/**\n * Build-time command metadata only. Safe under Node (e.g. generate-runtime-catalog) without loading the command executor stack.\n * Sidecars should import `defineCommand` from `@acorex/platform/runtime-contracts`.\n */\nexport { defineCommand } from './define-command';\nexport * from './command-definition.categories';\nexport * from './command-definition.types';\n","/**\n * Build-time query metadata for AXPQuery implementations.\n * Mirrors command metadata shape except there are no `outcomes` (queries only `fetch`).\n * Shares {@link AXPCatalogMetadataDefinitionBase} with commands and widgets; `inputs` / `outputs` live on the base.\n */\n\nimport type {\n  AXPCatalogExecutionMode,\n  AXPCatalogMetadataDefinitionBase,\n  AXPCatalogSchemaPropertyDefinition,\n} from '../shared/catalog-definition-base.types';\n\n//#region ---- Root ----\n\n/** One input/output property description for query definitions (same as command / widget catalog rows). */\nexport type AXPQuerySchemaPropertyDefinition = AXPCatalogSchemaPropertyDefinition;\n\nexport interface AXPQueryMetadataDefinition extends AXPCatalogMetadataDefinitionBase {\n  /** Runtime registration key (provideQuerySetups). */\n  key: string;\n  executionMode: AXPCatalogExecutionMode;\n}\n\n//#endregion\n","import type { AXPQueryMetadataDefinition } from './query-definition.types';\n\n//#region ---- defineQuery ----\n\n/**\n * Typed identity helper for query metadata sidecars.\n */\nexport function defineQuery<T extends AXPQueryMetadataDefinition>(definition: T): T {\n  return definition;\n}\n\n//#endregion\n","/**\n * Build-time query metadata only. Safe under Node (e.g. generate-runtime-catalog) without loading the query executor stack.\n * Sidecars should import `defineQuery` from `@acorex/platform/runtime-contracts`.\n */\nexport { defineQuery } from './define-query';\nexport * from './query-definition.categories';\n","/**\n * Build-time widget metadata sidecars (parallel to {@link AXPWidgetConfig} in layout/widget-core).\n * Extends {@link AXPCatalogMetadataDefinitionBase}; `inputs` / `outputs` use the same schema rows as commands/queries.\n * Sidecars should import `defineWidget` from `@acorex/platform/runtime-contracts`.\n */\n\nimport type { AXPDefinitionCategory } from '@acorex/platform/contracts';\n\nimport type {\n  AXPCatalogAiMetadata,\n  AXPCatalogMetadataDefinitionBase,\n} from '../shared/catalog-definition-base.types';\n\n//#region ---- Widget classification (mirrors widget-core literals; no layout imports) ----\n\n/** Same surface values as {@link AXPWidgetViewType} in layout/widget-core. */\nexport type AXPWidgetMetadataViewType =\n  | 'container'\n  | 'editor'\n  | 'action'\n  | 'view'\n  | 'filter'\n  | 'validation'\n  | 'dashboard';\n\n/** Same values as {@link AXPWidgetGroup} / {@link AXPWidgetGroupEnum} in layout/widget-core. */\nexport type AXPWidgetMetadataGroup =\n  | 'form-element'\n  | 'dashboard-widget'\n  | 'form-template'\n  | 'property-editor'\n  | 'meta-data'\n  | 'setting-widget'\n  | 'entity-widget'\n  | 'utility-widget'\n  | 'base-widget';\n\n/**\n * Built-in default filter widget names from {@link AXPWidgetConfig.defaultFilterWidgetName}.\n * Other string values remain valid for custom filters.\n */\nexport type AXPWidgetMetadataDefaultFilterName =\n  | 'string-filter'\n  | 'number-filter'\n  | 'datetime-filter'\n  | 'boolean-filter'\n  | 'select-filter'\n  | 'lookup-filter'\n  | 'time-duration-filter';\n\n//#endregion\n\n//#region ---- AI metadata ----\n\n/**\n * Widget renderer surface aligned with {@link AXPWidgetConfig.components} keys in layout/widget-core.\n */\nexport type AXPWidgetAiRenderSurfaceMode =\n  | 'view'\n  | 'edit'\n  | 'column'\n  | 'designer'\n  | 'print'\n  | 'filter';\n\n/**\n * One line of guidance for agents: which Angular component runs in this surface and how it relates to data.\n */\nexport interface AXPWidgetAiRenderSurface {\n  mode: AXPWidgetAiRenderSurfaceMode;\n  summary: string;\n}\n\n/**\n * AI hints for layout/form agents beyond {@link AXPCatalogAiMetadata}.\n * Prefer `outputs` on {@link AXPCatalogMetadataDefinitionBase} for structured bound-value shape;\n * use `renderSurfaces` for per-mode behavior (e.g. grid uses `column`, not `edit`).\n */\nexport interface AXPWidgetAiMetadata extends AXPCatalogAiMetadata {\n  /** Per-surface rendering notes (view vs edit vs column vs designer). */\n  renderSurfaces?: readonly AXPWidgetAiRenderSurface[];\n  /** Other widget `name` values often used next to or instead of this one. */\n  relatedWidgetNames?: string[];\n  /**\n   * Short layout or options snippets for few-shot style documentation (not executed).\n   */\n  layoutExamples?: string[];\n}\n\n//#endregion\n\n//#region ---- Root definition ----\n\nexport interface AXPWidgetMetadataDefinition extends Omit<AXPCatalogMetadataDefinitionBase, 'capabilities'> {\n  /** Runtime widget registry name (same role as `AXPWidgetConfig.name`). */\n  name: string;\n  icon?: string;\n  subCategory?: AXPDefinitionCategory;\n  groups?: readonly AXPWidgetMetadataGroup[];\n  defaultFilterWidgetName?: AXPWidgetMetadataDefaultFilterName | string;\n  type: AXPWidgetMetadataViewType;\n  /**\n   * Widget-specific AI block (subtype of base `ai`); omit to use plain {@link AXPCatalogAiMetadata} from base.\n   */\n  ai?: AXPWidgetAiMetadata;\n}\n\n//#endregion\n\n//#region ---- Re-exports ----\n\nexport type {\n  AXPCatalogAiMetadata,\n  AXPCatalogMetadataDefinitionBase,\n  AXPCatalogPropertyBindingHints,\n  AXPCatalogSchemaPropertyDefinition,\n} from '../shared/catalog-definition-base.types';\n\n//#endregion\n","import type { AXPWidgetMetadataDefinition } from './widget-definition.types';\n\n//#region ---- defineWidget ----\n\n/**\n * Typed identity helper for widget metadata sidecars.\n */\nexport function defineWidget<T extends AXPWidgetMetadataDefinition>(definition: T): T {\n  return definition;\n}\n\n//#endregion\n","//#region ---- Runtime contracts ----\n\nexport * from './shared/catalog-definition-base.types';\nexport * from './shared/catalog-definition.categories';\n\nexport * from './commands/command.interface';\nexport * from './commands/command-definition.types';\nexport * from './commands/command-definition.categories';\nexport * from './commands/define-command';\nexport * from './commands/catalog-command-definition';\n\nexport * from './queries/query.interface';\nexport * from './queries/query-definition.types';\nexport * from './queries/query-definition.categories';\nexport * from './queries/define-query';\nexport * from './queries/catalog-query-definition';\n\nexport * from './views/view.interface';\n\nexport * from './widgets/widget-definition.types';\nexport * from './widgets/define-widget';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}