{"version":3,"file":"index.cjs","names":["z","current: z.ZodTypeAny","name: string","ZodError","_type: CollectionFieldType","fields: Record<string, CollectionFieldDefinition>","definition: CollectionDefinition","name: string","cfg: TConfig","credentialRequirements: ReadonlyArray<CredentialRequirement>","inspectorSummaryFn?: (\n      args: Readonly<{ config: TConfig }>,\n    ) => ReadonlyArray<NodeInspectorSummaryRow> | undefined","defaultPollIntervalMs?: number","seedWrapped: InternalWrappedState","wrapped: InternalWrappedState","newItems: Array<{ json: TItemJson }>","newKeys: string[]","NodeBackedToolConfig","node","AgentConfigInspector","out: AgentMessageDto[]","isItemExpr","messages: AgentMessageDto[]","inner: WorkflowExecutionRepository","eventBus: RunEventBus","now: () => Date","node","errors: WorkflowEdgePortError[]","source: CredentialMaterialRef[\"source\"]","providerName: string","status: number","providerErrorBody: string","key: string"],"sources":["../src/contracts/Clock.ts","../src/contracts/inboxChannelTypes.ts","../src/authoring/defineCredential.types.ts","../src/ai/CallableToolKindToken.ts","../src/ai/CallableToolConfig.ts","../src/ai/CallableToolFactory.ts","../src/authoring/callableTool.types.ts","../src/authoring/DefinedCollectionRegistry.ts","../src/authoring/defineCollection.types.ts","../src/authoring/definePollingTriggerInternals.ts","../src/authoring/definePollingTrigger.types.ts","../src/ai/AgentToolFactory.ts","../src/ai/AgentMessageConfigNormalizerFactory.ts","../src/ai/AiHost.ts","../src/events/EventPublishingWorkflowExecutionRepository.ts","../src/validation/WorkflowEdgePortValidator.ts","../src/credentials/CredentialMaterialProvider.types.ts","../src/credentials/ManagedCredentialMaterialWriteError.ts","../src/credentials/ManagedMaterialFetchError.ts","../src/contracts/workspaceFileTypes.ts"],"sourcesContent":["export interface Clock {\n  now(): Date;\n}\n\nexport class SystemClock implements Clock {\n  now(): Date {\n    return new Date();\n  }\n}\n","import type { TypeToken } from \"../di\";\nimport type { HumanTaskActor, HumanTaskHandle, HumanTaskSubject } from \"./runtimeTypes\";\nimport type { Item } from \"./workflowTypes\";\n\nexport interface InboxChannel {\n  readonly kind: \"local\" | \"control-plane-inbox\";\n  deliver(args: InboxDeliverArgs): Promise<InboxDelivery>;\n  updateOnDecision?(args: InboxOnDecisionArgs): Promise<void>;\n  updateOnTimeout?(args: InboxOnTimeoutArgs): Promise<void>;\n}\n\nexport type InboxDeliverArgs = Readonly<{\n  task: HumanTaskHandle;\n  subject: HumanTaskSubject;\n  priority: \"low\" | \"normal\" | \"high\";\n  item: Item;\n  workspaceId?: string;\n}>;\n\nexport type InboxDelivery =\n  | { kind: \"local\"; inboxItemId: string }\n  | { kind: \"cp\"; inboxItemId: string; workspaceId: string };\n\nexport type InboxOnDecisionArgs = Readonly<{\n  delivery: InboxDelivery;\n  decision: { approved: boolean; note?: string };\n  actor: HumanTaskActor;\n}>;\n\nexport type InboxOnTimeoutArgs = Readonly<{\n  delivery: InboxDelivery;\n  policy: \"halt\" | \"auto-accept\";\n}>;\n\nexport interface InboxChannelResolverSeam {\n  resolve(): { channel: InboxChannel; workspaceId?: string };\n}\n\nexport const InboxChannelResolverToken = Symbol.for(\"codemation.core.InboxChannelResolver\") as TypeToken<\n  InboxChannelResolverSeam | undefined\n>;\n\nexport const LocalInboxChannelToken = Symbol.for(\"codemation.core.LocalInboxChannel\") as TypeToken<\n  InboxChannel | undefined\n>;\n\nexport const ControlPlaneInboxChannelToken = Symbol.for(\"codemation.core.ControlPlaneInboxChannel\") as TypeToken<\n  InboxChannel | undefined\n>;\n","import type {\n  AnyCredentialType,\n  CredentialFieldSchema,\n  CredentialHealth,\n  CredentialJsonRecord,\n  CredentialSessionFactoryArgs,\n  CredentialType,\n  CredentialTypeDefinition,\n} from \"../contracts/credentialTypes\";\nimport { z } from \"zod\";\n\ntype MaybePromise<TValue> = TValue | Promise<TValue>;\n\ntype CredentialFieldInput = CredentialFieldSchema[\"type\"] | Readonly<Omit<CredentialFieldSchema, \"key\">>;\n\ntype CredentialFieldMap<TConfig extends CredentialJsonRecord> = Readonly<\n  Record<keyof TConfig & string, CredentialFieldInput>\n>;\n\ntype ZodObjectSchema<TConfig extends CredentialJsonRecord = CredentialJsonRecord> = z.ZodType<TConfig>;\n\ntype InferCredentialConfig<TSource> =\n  TSource extends z.ZodType<infer TConfig, any, any>\n    ? Readonly<TConfig> & CredentialJsonRecord\n    : TSource extends CredentialFieldMap<infer TConfig>\n      ? TConfig\n      : CredentialJsonRecord;\n\nexport interface DefineCredentialOptions<\n  TPublicSource extends CredentialFieldMap<any> | ZodObjectSchema<any>,\n  TSecretSource extends CredentialFieldMap<any> | ZodObjectSchema<any>,\n  TSession,\n> {\n  readonly key: string;\n  readonly label: string;\n  readonly description?: string;\n  readonly public: TPublicSource;\n  readonly secret: TSecretSource;\n  readonly supportedSourceKinds?: CredentialTypeDefinition[\"supportedSourceKinds\"];\n  readonly auth?: CredentialTypeDefinition[\"auth\"];\n  createSession(\n    args: CredentialSessionFactoryArgs<InferCredentialConfig<TPublicSource>, InferCredentialConfig<TSecretSource>>,\n  ): MaybePromise<TSession>;\n  test(\n    args: CredentialSessionFactoryArgs<InferCredentialConfig<TPublicSource>, InferCredentialConfig<TSecretSource>>,\n  ): MaybePromise<CredentialHealth>;\n}\n\nexport class CredentialFieldSchemaFactory {\n  static create<TConfig extends CredentialJsonRecord>(\n    source: CredentialFieldMap<TConfig> | ZodObjectSchema<TConfig>,\n  ): ReadonlyArray<CredentialFieldSchema> {\n    if (source instanceof z.ZodObject) {\n      return this.createFromZodObject(source);\n    }\n    return this.createFromMap(source as CredentialFieldMap<TConfig>);\n  }\n\n  private static createFromMap<TConfig extends CredentialJsonRecord>(\n    source: CredentialFieldMap<TConfig>,\n  ): ReadonlyArray<CredentialFieldSchema> {\n    return Object.entries(source).map(([key, input], index) => {\n      if (typeof input === \"string\") {\n        return {\n          key,\n          label: this.humanize(key),\n          order: index,\n          type: input as CredentialFieldSchema[\"type\"],\n        };\n      }\n      return {\n        key,\n        order: index,\n        ...(input as Readonly<Omit<CredentialFieldSchema, \"key\">>),\n      };\n    });\n  }\n\n  private static createFromZodObject<_TConfig extends CredentialJsonRecord>(\n    source: z.ZodObject,\n  ): ReadonlyArray<CredentialFieldSchema> {\n    const shape = source.shape;\n    return Object.entries(shape).map(([key, schema], index) => {\n      const resolved = this.unwrap(schema);\n      return {\n        key,\n        label: this.humanize(key),\n        order: index,\n        required: this.isRequired(schema) ? true : undefined,\n        type: this.resolveType(resolved),\n      };\n    });\n  }\n\n  private static isRequired(schema: z.ZodTypeAny): boolean {\n    return !(schema instanceof z.ZodOptional || schema instanceof z.ZodDefault);\n  }\n\n  private static unwrap(schema: z.ZodTypeAny): z.ZodTypeAny {\n    let current: z.ZodTypeAny = schema;\n    while (current instanceof z.ZodOptional || current instanceof z.ZodDefault) {\n      current = current.unwrap() as z.ZodTypeAny;\n    }\n    return current;\n  }\n\n  private static resolveType(schema: z.ZodTypeAny): CredentialFieldSchema[\"type\"] {\n    if (schema instanceof z.ZodBoolean) {\n      return \"boolean\";\n    }\n    if (schema instanceof z.ZodString) {\n      return \"string\";\n    }\n    return \"json\";\n  }\n\n  private static humanize(key: string): string {\n    return key\n      .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n      .replace(/[-_.]+/g, \" \")\n      .replace(/\\s+/g, \" \")\n      .trim()\n      .replace(/^./, (character) => character.toUpperCase());\n  }\n}\n\nexport function defineCredential<\n  TPublicSource extends CredentialFieldMap<any> | ZodObjectSchema<any>,\n  TSecretSource extends CredentialFieldMap<any> | ZodObjectSchema<any>,\n  TSession,\n>(\n  options: DefineCredentialOptions<TPublicSource, TSecretSource, TSession>,\n): CredentialType<InferCredentialConfig<TPublicSource>, InferCredentialConfig<TSecretSource>, TSession> & {\n  readonly key: string;\n} {\n  const definition: CredentialTypeDefinition = {\n    typeId: options.key,\n    displayName: options.label,\n    description: options.description,\n    publicFields: CredentialFieldSchemaFactory.create(options.public),\n    secretFields: CredentialFieldSchemaFactory.create(options.secret),\n    supportedSourceKinds: options.supportedSourceKinds ?? [\"db\", \"env\", \"code\"],\n    auth: options.auth,\n  };\n\n  const credentialType: AnyCredentialType = {\n    definition,\n    async createSession(args) {\n      return await options.createSession(\n        args as CredentialSessionFactoryArgs<\n          InferCredentialConfig<TPublicSource>,\n          InferCredentialConfig<TSecretSource>\n        >,\n      );\n    },\n    async test(args) {\n      return await options.test(\n        args as CredentialSessionFactoryArgs<\n          InferCredentialConfig<TPublicSource>,\n          InferCredentialConfig<TSecretSource>\n        >,\n      );\n    },\n  };\n\n  return {\n    ...credentialType,\n    key: options.key,\n  } as CredentialType<InferCredentialConfig<TPublicSource>, InferCredentialConfig<TSecretSource>, TSession> & {\n    readonly key: string;\n  };\n}\n","export class CallableToolKindToken {}\n","import type { CredentialRequirement } from \"../contracts/credentialTypes\";\nimport type { TypeToken } from \"../di\";\nimport type { AgentCanvasPresentation, ToolConfig, ToolExecuteArgs, ZodSchemaAny } from \"./AiHost\";\nimport { ZodError, type input as ZodInput, type output as ZodOutput } from \"zod\";\n\nimport { CallableToolKindToken } from \"./CallableToolKindToken\";\n\nexport type CallableToolExecuteHandler<TInputSchema extends ZodSchemaAny, TOutputSchema extends ZodSchemaAny> = (\n  args: ToolExecuteArgs<CallableToolConfig<TInputSchema, TOutputSchema>, ZodInput<TInputSchema>>,\n) => Promise<ZodOutput<TOutputSchema>> | ZodOutput<TOutputSchema>;\n\nexport type CallableToolConfigOptions<\n  TInputSchema extends ZodSchemaAny,\n  TOutputSchema extends ZodSchemaAny,\n> = Readonly<{\n  name: string;\n  description?: string;\n  presentation?: AgentCanvasPresentation;\n  inputSchema: TInputSchema;\n  outputSchema: TOutputSchema;\n  credentialRequirements?: ReadonlyArray<CredentialRequirement>;\n  execute: CallableToolExecuteHandler<TInputSchema, TOutputSchema>;\n}>;\n\nexport class CallableToolConfig<\n  TInputSchema extends ZodSchemaAny,\n  TOutputSchema extends ZodSchemaAny,\n> implements ToolConfig {\n  readonly type: TypeToken<unknown> = CallableToolKindToken;\n  readonly toolKind = \"callable\" as const;\n  readonly description?: string;\n  readonly presentation?: AgentCanvasPresentation;\n  private readonly inputSchemaValue: TInputSchema;\n  private readonly outputSchemaValue: TOutputSchema;\n  private readonly credentialRequirementsValue?: ReadonlyArray<CredentialRequirement>;\n  private readonly executeHandler: CallableToolExecuteHandler<TInputSchema, TOutputSchema>;\n\n  constructor(\n    public readonly name: string,\n    options: CallableToolConfigOptions<TInputSchema, TOutputSchema>,\n  ) {\n    this.description = options.description;\n    this.presentation = options.presentation;\n    this.inputSchemaValue = options.inputSchema;\n    this.outputSchemaValue = options.outputSchema;\n    this.credentialRequirementsValue = options.credentialRequirements;\n    this.executeHandler = options.execute;\n  }\n\n  getCredentialRequirements(): ReadonlyArray<CredentialRequirement> {\n    return this.credentialRequirementsValue ?? [];\n  }\n\n  getInputSchema(): TInputSchema {\n    return this.inputSchemaValue;\n  }\n\n  getOutputSchema(): TOutputSchema {\n    return this.outputSchemaValue;\n  }\n\n  async executeTool(\n    args: ToolExecuteArgs<CallableToolConfig<TInputSchema, TOutputSchema>, ZodInput<TInputSchema>>,\n  ): Promise<ZodOutput<TOutputSchema>> {\n    const parsedInput = this.parseInput(args.input);\n    const raw = await Promise.resolve(\n      this.executeHandler({\n        ...args,\n        config: this,\n        input: parsedInput,\n      }),\n    );\n    return this.parseOutput(raw);\n  }\n\n  private parseInput(input: unknown): ZodInput<TInputSchema> {\n    try {\n      return this.inputSchemaValue.parse(input) as ZodInput<TInputSchema>;\n    } catch (error) {\n      throw this.decorateValidationError(error, \"input\");\n    }\n  }\n\n  private parseOutput(output: unknown): ZodOutput<TOutputSchema> {\n    try {\n      return this.outputSchemaValue.parse(output) as ZodOutput<TOutputSchema>;\n    } catch (error) {\n      throw this.decorateValidationError(error, \"output\");\n    }\n  }\n\n  private decorateValidationError(error: unknown, stage: \"input\" | \"output\"): Error {\n    if (error instanceof ZodError) {\n      (error as ZodError & { codemationToolValidationStage?: \"input\" | \"output\" }).codemationToolValidationStage =\n        stage;\n      return error;\n    }\n    return error instanceof Error ? error : new Error(String(error));\n  }\n}\n","import type { ZodSchemaAny } from \"./AiHost\";\nimport { CallableToolConfig } from \"./CallableToolConfig\";\nimport type { CallableToolConfigOptions } from \"./CallableToolConfig\";\n\nclass CallableToolFactoryImpl {\n  callableTool<TInputSchema extends ZodSchemaAny, TOutputSchema extends ZodSchemaAny>(\n    options: CallableToolConfigOptions<TInputSchema, TOutputSchema>,\n  ): CallableToolConfig<TInputSchema, TOutputSchema> {\n    return new CallableToolConfig(options.name, options);\n  }\n}\n\nexport const CallableToolFactory = new CallableToolFactoryImpl();\n","import type { ZodSchemaAny } from \"../ai/AiHost\";\nimport type { CallableToolConfig, CallableToolConfigOptions } from \"../ai/CallableToolConfig\";\nimport { CallableToolFactory } from \"../ai/CallableToolFactory\";\n\nexport function callableTool<TInputSchema extends ZodSchemaAny, TOutputSchema extends ZodSchemaAny>(\n  options: CallableToolConfigOptions<TInputSchema, TOutputSchema>,\n): CallableToolConfig<TInputSchema, TOutputSchema> {\n  return CallableToolFactory.callableTool(options);\n}\n","import type { CollectionDefinition } from \"./defineCollection.types\";\n\nexport class DefinedCollectionRegistry {\n  private static readonly definitions = new Map<string, CollectionDefinition>();\n\n  static register(definition: CollectionDefinition): void {\n    this.definitions.set(definition.name, definition);\n  }\n\n  static resolve(name: string): CollectionDefinition | undefined {\n    return this.definitions.get(name);\n  }\n\n  static list(): ReadonlyArray<CollectionDefinition> {\n    return Array.from(this.definitions.values());\n  }\n}\n","import { DefinedCollectionRegistry } from \"./DefinedCollectionRegistry\";\n\nexport type CollectionFieldType = \"text\" | \"int\" | \"bigint\" | \"double\" | \"bool\" | \"timestamptz\" | \"jsonb\" | \"uuid\";\n\nexport interface CollectionColumnBuilder {\n  notNull(): CollectionColumnBuilder;\n  default(value: unknown): CollectionColumnBuilder;\n  readonly _type: CollectionFieldType;\n  readonly _nullable: boolean;\n  readonly _default?: unknown;\n}\n\nclass CollectionColumnBuilderImpl implements CollectionColumnBuilder {\n  _nullable: boolean;\n  _default?: unknown;\n\n  constructor(readonly _type: CollectionFieldType) {\n    this._nullable = true;\n  }\n\n  notNull(): CollectionColumnBuilder {\n    this._nullable = false;\n    return this;\n  }\n\n  default(value: unknown): CollectionColumnBuilder {\n    this._default = value;\n    this._nullable = false;\n    return this;\n  }\n}\n\nexport const c = {\n  text(): CollectionColumnBuilder {\n    return new CollectionColumnBuilderImpl(\"text\");\n  },\n  int(): CollectionColumnBuilder {\n    return new CollectionColumnBuilderImpl(\"int\");\n  },\n  bigint(): CollectionColumnBuilder {\n    return new CollectionColumnBuilderImpl(\"bigint\");\n  },\n  double(): CollectionColumnBuilder {\n    return new CollectionColumnBuilderImpl(\"double\");\n  },\n  bool(): CollectionColumnBuilder {\n    return new CollectionColumnBuilderImpl(\"bool\");\n  },\n  timestamptz(): CollectionColumnBuilder {\n    return new CollectionColumnBuilderImpl(\"timestamptz\");\n  },\n  jsonb(): CollectionColumnBuilder {\n    return new CollectionColumnBuilderImpl(\"jsonb\");\n  },\n  uuid(): CollectionColumnBuilder {\n    return new CollectionColumnBuilderImpl(\"uuid\");\n  },\n} as const;\n\nexport interface CollectionFieldDefinition {\n  readonly type: CollectionFieldType;\n  readonly nullable: boolean;\n  readonly default?: unknown;\n}\n\nexport interface CollectionIndexDefinition {\n  readonly on: ReadonlyArray<string>;\n  readonly unique?: boolean;\n}\n\nexport interface CollectionDefinition {\n  readonly name: string;\n  readonly fields: Readonly<Record<string, CollectionFieldDefinition>>;\n  readonly indexes: ReadonlyArray<CollectionIndexDefinition>;\n}\n\nexport interface DefinedCollection<TDefinition extends CollectionDefinition = CollectionDefinition> {\n  readonly kind: \"defined-collection\";\n  readonly definition: TDefinition;\n  register(context: { registerCollection(d: CollectionDefinition): void }): void;\n}\n\nfunction validateCollectionName(name: string): void {\n  const pattern = /^[a-z][a-z0-9_]*$/;\n  if (!pattern.test(name)) {\n    throw new Error(\n      `Collection name \"${name}\" must start with a lowercase letter and contain only lowercase letters, digits, and underscores.`,\n    );\n  }\n}\n\nfunction validateFieldNames(fields: Record<string, CollectionFieldDefinition>): void {\n  const pattern = /^[a-z][a-z0-9_]*$/;\n  const reserved = [\"id\", \"created_at\", \"updated_at\"];\n\n  for (const fieldName of Object.keys(fields)) {\n    if (reserved.includes(fieldName)) {\n      throw new Error(`Field name \"${fieldName}\" is reserved for internal use.`);\n    }\n    if (!pattern.test(fieldName)) {\n      throw new Error(\n        `Field name \"${fieldName}\" must start with a lowercase letter and contain only lowercase letters, digits, and underscores.`,\n      );\n    }\n  }\n}\n\nfunction validateIndexes(indexes: ReadonlyArray<CollectionIndexDefinition>, fieldNames: Set<string>): void {\n  for (const index of indexes) {\n    for (const fieldName of index.on) {\n      if (!fieldNames.has(fieldName)) {\n        throw new Error(`Index references non-existent field \"${fieldName}\".`);\n      }\n    }\n  }\n}\n\nexport interface DefineCollectionOptions {\n  readonly name: string;\n  readonly fields: Record<string, CollectionColumnBuilder>;\n  readonly indexes?: ReadonlyArray<CollectionIndexDefinition>;\n}\n\nexport function defineCollection<TName extends string>(\n  options: DefineCollectionOptions & { name: TName },\n): DefinedCollection<\n  CollectionDefinition & {\n    name: TName;\n  }\n> {\n  validateCollectionName(options.name);\n\n  const fields: Record<string, CollectionFieldDefinition> = {};\n  for (const [fieldName, builder] of Object.entries(options.fields)) {\n    const columnBuilder = builder as CollectionColumnBuilder;\n    fields[fieldName] = {\n      type: columnBuilder._type,\n      nullable: columnBuilder._nullable,\n      default: columnBuilder._default,\n    };\n  }\n\n  validateFieldNames(fields);\n\n  const fieldNames = new Set(Object.keys(fields));\n  const indexes = options.indexes ?? [];\n  validateIndexes(indexes, fieldNames);\n\n  const definition: CollectionDefinition = {\n    name: options.name,\n    fields,\n    indexes,\n  };\n\n  DefinedCollectionRegistry.register(definition);\n\n  const result: DefinedCollection = {\n    kind: \"defined-collection\",\n    definition,\n    register(context: { registerCollection(d: CollectionDefinition): void }) {\n      context.registerCollection(definition);\n    },\n  };\n\n  return result as DefinedCollection<\n    CollectionDefinition & {\n      name: TName;\n    }\n  >;\n}\n","import type { AnyCredentialType, CredentialRequirement, CredentialTypeId } from \"../contracts/credentialTypes\";\nimport type { NodeExecutionContext } from \"../contracts/runtimeTypes\";\nimport type { RunnableNodeConfig } from \"../contracts/workflowTypes\";\nimport type { DefinedNodeCredentialAccessors, DefinedNodeCredentialBindings } from \"./defineNode.types\";\n\ntype ResolvableCredentialType = AnyCredentialType | CredentialTypeId;\n\nexport const definedNodeCredentialRequirementFactory = {\n  create(bindings: DefinedNodeCredentialBindings | undefined): ReadonlyArray<CredentialRequirement> {\n    if (!bindings) {\n      return [];\n    }\n    return Object.entries(bindings).map(([slotKey, binding]) => {\n      if (typeof binding === \"string\" || this.isCredentialType(binding)) {\n        return {\n          slotKey,\n          label: this.humanize(slotKey),\n          acceptedTypes: [this.resolveTypeId(binding)],\n        };\n      }\n\n      const types = Array.isArray(binding.type) ? binding.type : [binding.type];\n      return {\n        slotKey,\n        label: binding.label ?? this.humanize(slotKey),\n        acceptedTypes: types.map((entry) => this.resolveTypeId(entry)),\n        optional: binding.optional,\n        helpText: binding.helpText,\n        helpUrl: binding.helpUrl,\n      };\n    });\n  },\n\n  isCredentialType(value: unknown): value is AnyCredentialType {\n    return (\n      Boolean(value) &&\n      typeof value === \"object\" &&\n      \"definition\" in (value as Record<string, unknown>) &&\n      typeof (value as AnyCredentialType).definition?.typeId === \"string\"\n    );\n  },\n\n  resolveTypeId(type: ResolvableCredentialType): string {\n    return typeof type === \"string\" ? type : type.definition.typeId;\n  },\n\n  humanize(key: string): string {\n    return key\n      .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n      .replace(/[-_.]+/g, \" \")\n      .replace(/\\s+/g, \" \")\n      .trim()\n      .replace(/^./, (character) => character.toUpperCase());\n  },\n} as const;\n\nexport const definedNodeCredentialAccessorFactory = {\n  create<TBindings extends DefinedNodeCredentialBindings | undefined>(\n    bindings: TBindings,\n    ctx:\n      | NodeExecutionContext<RunnableNodeConfig<any, any>>\n      | { getCredential<TSession = unknown>(slotKey: string): Promise<TSession> },\n  ): DefinedNodeCredentialAccessors<TBindings> {\n    if (!bindings) {\n      return {} as DefinedNodeCredentialAccessors<TBindings>;\n    }\n    const entries = Object.keys(bindings).map((slotKey) => [slotKey, () => ctx.getCredential(slotKey)] as const);\n    return Object.fromEntries(entries) as DefinedNodeCredentialAccessors<TBindings>;\n  },\n} as const;\n","import type {\n  Items,\n  JsonObject,\n  JsonValue,\n  NodeExecutionContext,\n  NodeInspectorSummaryRow,\n  NodeOutputs,\n  PollingTriggerConfig,\n  TestableTriggerNode,\n  TriggerNodeConfig,\n  TriggerSetupContext,\n  TriggerTestItemsContext,\n  TypeToken,\n} from \"..\";\nimport type { CredentialJsonRecord, CredentialRequirement } from \"../contracts/credentialTypes\";\nimport type { DefinedNodeCredentialAccessors, DefinedNodeCredentialBindings } from \"./defineNode.types\";\nimport type { NodeBaseOptions } from \"./nodeBaseOptions.types\";\nimport { node as persistedNode } from \"../runtime-types/runtimeTypeDecorators.types\";\nimport {\n  definedNodeCredentialRequirementFactory,\n  definedNodeCredentialAccessorFactory,\n} from \"./definePollingTriggerInternals\";\nimport type { ZodType } from \"zod\";\n\ntype MaybePromise<TValue> = TValue | Promise<TValue>;\n\nexport interface DefinePollingTriggerPollContext<\n  TConfig extends CredentialJsonRecord,\n  TState extends JsonValue | undefined,\n  TBindings extends DefinedNodeCredentialBindings | undefined,\n> {\n  readonly config: TConfig;\n  readonly state: TState;\n  readonly credentials: DefinedNodeCredentialAccessors<TBindings>;\n}\n\nexport interface DefinePollingTriggerPollResult<TItemJson, TState extends JsonValue | undefined> {\n  readonly items: ReadonlyArray<{ json: TItemJson; dedupKey?: string }>;\n  readonly nextState: TState;\n}\n\nexport type DefinePollingTriggerExecuteContext<TConfig extends TriggerNodeConfig<any, any>> =\n  NodeExecutionContext<TConfig>;\n\nexport type DefinePollingTriggerTestItemsContext<TConfig extends TriggerNodeConfig<any, any>> =\n  TriggerTestItemsContext<TConfig>;\n\nexport interface DefinePollingTriggerOptions<\n  TKey extends string,\n  TConfig extends CredentialJsonRecord,\n  TItemJson,\n  TState extends JsonValue | undefined,\n  TBindings extends DefinedNodeCredentialBindings | undefined = undefined,\n> {\n  readonly key: TKey;\n  readonly packageName?: string;\n  readonly title: string;\n  readonly description?: string;\n  readonly icon?: string;\n  readonly configSchema?: ZodType<TConfig>;\n  readonly credentials?: TBindings;\n  readonly inspectorSummary?: (\n    args: Readonly<{ config: TConfig }>,\n  ) => ReadonlyArray<NodeInspectorSummaryRow> | undefined;\n  initialState?(): TState;\n  readonly pollIntervalMs?: number;\n  poll(\n    pollCtx: DefinePollingTriggerPollContext<TConfig, TState, TBindings>,\n  ): MaybePromise<DefinePollingTriggerPollResult<TItemJson, TState>>;\n  execute?(\n    items: Items<TItemJson>,\n    ctx: NodeExecutionContext<DefinedPollingTriggerConfig<TConfig, TItemJson>>,\n  ): MaybePromise<NodeOutputs>;\n  testItems?(\n    ctx: TriggerTestItemsContext<DefinedPollingTriggerConfig<TConfig, TItemJson>>,\n  ): MaybePromise<Items<TItemJson>>;\n}\n\nexport interface DefinedPollingTrigger<\n  TKey extends string,\n  TConfig extends CredentialJsonRecord,\n  TItemJson,\n  TState extends JsonValue | undefined,\n  TBindings extends DefinedNodeCredentialBindings | undefined = undefined,\n> {\n  readonly kind: \"defined-polling-trigger\";\n  readonly key: TKey;\n  readonly title: string;\n  readonly description?: string;\n  create(\n    cfg: TConfig,\n    name?: string,\n    idOrOptions?: string | NodeBaseOptions,\n  ): DefinedPollingTriggerConfig<TConfig, TItemJson>;\n  poll(\n    pollCtx: Omit<DefinePollingTriggerPollContext<TConfig, TState, TBindings>, \"credentials\"> & {\n      credentials?: DefinedNodeCredentialAccessors<TBindings>;\n    },\n  ): MaybePromise<DefinePollingTriggerPollResult<TItemJson, TState>>;\n  register(context: { registerNode<TValue>(token: TypeToken<TValue>, implementation?: TypeToken<TValue>): void }): void;\n}\n\nexport class DefinedPollingTriggerConfig<TConfig extends CredentialJsonRecord, TItemJson>\n  implements TriggerNodeConfig<TItemJson, JsonValue | undefined>, PollingTriggerConfig\n{\n  readonly kind = \"trigger\" as const;\n  readonly type: TypeToken<unknown>;\n  readonly icon: string | undefined;\n  readonly id?: string;\n  readonly description?: string;\n\n  constructor(\n    public readonly name: string,\n    public readonly cfg: TConfig,\n    typeToken: TypeToken<unknown>,\n    icon: string | undefined,\n    private readonly credentialRequirements: ReadonlyArray<CredentialRequirement>,\n    idOrOptions?: string | NodeBaseOptions,\n    private readonly inspectorSummaryFn?: (\n      args: Readonly<{ config: TConfig }>,\n    ) => ReadonlyArray<NodeInspectorSummaryRow> | undefined,\n    private readonly defaultPollIntervalMs?: number,\n  ) {\n    this.type = typeToken;\n    this.icon = icon;\n    const resolved = typeof idOrOptions === \"string\" ? { id: idOrOptions } : idOrOptions;\n    this.id = resolved?.id;\n    this.description = resolved?.description;\n  }\n\n  getCredentialRequirements(): ReadonlyArray<CredentialRequirement> {\n    return this.credentialRequirements;\n  }\n\n  getTriggerPollConfig(): Readonly<{ config: JsonObject; pollIntervalMs?: number }> {\n    const cfgPollInterval = (this.cfg as Partial<{ pollIntervalMs: number }>).pollIntervalMs;\n    const resolvedInterval = cfgPollInterval ?? this.defaultPollIntervalMs;\n    return {\n      config: this.cfg as unknown as JsonObject,\n      pollIntervalMs: resolvedInterval,\n    };\n  }\n\n  inspectorSummary(): ReadonlyArray<NodeInspectorSummaryRow> | undefined {\n    return this.inspectorSummaryFn?.({ config: this.cfg });\n  }\n}\n\ninterface InternalWrappedState {\n  readonly userState: JsonValue | undefined;\n  readonly seenKeys: ReadonlyArray<string>;\n}\n\nfunction isWrappedState(value: unknown): value is InternalWrappedState {\n  return (\n    value !== null &&\n    typeof value === \"object\" &&\n    \"seenKeys\" in (value as Record<string, unknown>) &&\n    Array.isArray((value as InternalWrappedState).seenKeys)\n  );\n}\n\nexport function definePollingTrigger<\n  TKey extends string,\n  TConfig extends CredentialJsonRecord,\n  TItemJson,\n  TState extends JsonValue | undefined,\n  TBindings extends DefinedNodeCredentialBindings | undefined = undefined,\n>(\n  options: DefinePollingTriggerOptions<TKey, TConfig, TItemJson, TState, TBindings>,\n): DefinedPollingTrigger<TKey, TConfig, TItemJson, TState, TBindings> {\n  const credentialRequirements = definedNodeCredentialRequirementFactory.create(options.credentials);\n  const DEFAULT_INTERVAL_MS = 60_000;\n\n  type TConfig_ = DefinedPollingTriggerConfig<TConfig, TItemJson>;\n\n  const DefinedPollingTriggerRuntime = class implements TestableTriggerNode<TConfig_> {\n    readonly kind = \"trigger\" as const;\n    readonly outputPorts = [\"main\"] as const;\n\n    async setup(ctx: TriggerSetupContext<TConfig_, JsonValue | undefined>): Promise<JsonValue | undefined> {\n      const cfg = ctx.config.cfg;\n      const intervalMs =\n        (cfg as Partial<{ pollIntervalMs: number }>).pollIntervalMs ?? options.pollIntervalMs ?? DEFAULT_INTERVAL_MS;\n\n      const persisted = ctx.previousState;\n      const existingWrapped: InternalWrappedState | undefined = isWrappedState(persisted) ? persisted : undefined;\n      const seedWrapped: InternalWrappedState = existingWrapped ?? {\n        userState: options.initialState ? options.initialState() : undefined,\n        seenKeys: [],\n      };\n\n      const result = await ctx.polling.start<InternalWrappedState, TItemJson>({\n        intervalMs,\n        seedState: seedWrapped,\n        runCycle: async ({ previousState }) => {\n          const wrapped: InternalWrappedState = previousState ?? seedWrapped;\n          const seenSet = new Set(wrapped.seenKeys);\n\n          const credentialAccessors = definedNodeCredentialAccessorFactory.create(\n            options.credentials,\n            ctx,\n          ) as DefinedNodeCredentialAccessors<TBindings>;\n\n          const pollResult = await options.poll({\n            config: cfg,\n            state: wrapped.userState as TState,\n            credentials: credentialAccessors,\n          });\n\n          const newItems: Array<{ json: TItemJson }> = [];\n          const newKeys: string[] = [];\n          for (const item of pollResult.items) {\n            if (item.dedupKey !== undefined) {\n              if (seenSet.has(item.dedupKey)) {\n                continue;\n              }\n              newKeys.push(item.dedupKey);\n            }\n            newItems.push({ json: item.json });\n          }\n\n          const allKeys = [...wrapped.seenKeys, ...newKeys];\n          const cappedKeys = allKeys.length > 2000 ? allKeys.slice(allKeys.length - 2000) : allKeys;\n\n          const nextWrapped: InternalWrappedState = {\n            userState: pollResult.nextState,\n            seenKeys: cappedKeys,\n          };\n\n          return {\n            items: newItems as Items<TItemJson>,\n            nextState: nextWrapped,\n          };\n        },\n      });\n\n      return result as JsonValue | undefined;\n    }\n\n    async execute(items: Items<TItemJson>, ctx: NodeExecutionContext<TConfig_>): Promise<NodeOutputs> {\n      if (options.execute) {\n        return await options.execute(items, ctx);\n      }\n      return { main: items };\n    }\n\n    async getTestItems(ctx: TriggerTestItemsContext<TConfig_>): Promise<Items> {\n      if (options.testItems) {\n        return await options.testItems(ctx);\n      }\n      return [];\n    }\n  };\n\n  persistedNode({ name: options.key, packageName: options.packageName })(DefinedPollingTriggerRuntime);\n\n  const definition: DefinedPollingTrigger<TKey, TConfig, TItemJson, TState, TBindings> = {\n    kind: \"defined-polling-trigger\",\n    key: options.key,\n    title: options.title,\n    description: options.description,\n\n    create(\n      cfg: TConfig,\n      name = options.title,\n      idOrOptions?: string | NodeBaseOptions,\n    ): DefinedPollingTriggerConfig<TConfig, TItemJson> {\n      return new DefinedPollingTriggerConfig<TConfig, TItemJson>(\n        name,\n        cfg,\n        DefinedPollingTriggerRuntime,\n        options.icon,\n        credentialRequirements,\n        idOrOptions,\n        options.inspectorSummary as\n          | ((args: Readonly<{ config: TConfig }>) => ReadonlyArray<NodeInspectorSummaryRow> | undefined)\n          | undefined,\n        options.pollIntervalMs,\n      );\n    },\n\n    poll(pollCtx) {\n      return options.poll({\n        config: pollCtx.config,\n        state: pollCtx.state,\n        credentials: (pollCtx.credentials ?? {}) as DefinedNodeCredentialAccessors<TBindings>,\n      });\n    },\n\n    register(context) {\n      context.registerNode(DefinedPollingTriggerRuntime);\n    },\n  };\n\n  return definition;\n}\n","import type { Item, RunnableNodeConfig } from \"../types\";\nimport type { NodeBackedToolConfigOptions, ZodSchemaAny } from \"./AiHost\";\nimport { AgentConfigInspector } from \"./AgentConfigInspectorFactory\";\nimport { NodeBackedToolConfig } from \"./NodeBackedToolConfig\";\n\nclass AgentToolFactoryImpl {\n  asTool<\n    TNodeConfig extends RunnableNodeConfig<any, any>,\n    TInputSchema extends ZodSchemaAny,\n    TOutputSchema extends ZodSchemaAny,\n  >(\n    node: TNodeConfig,\n    options: Readonly<{ name?: string } & NodeBackedToolConfigOptions<TNodeConfig, TInputSchema, TOutputSchema>>,\n  ): NodeBackedToolConfig<TNodeConfig, TInputSchema, TOutputSchema> {\n    return new NodeBackedToolConfig(\n      options.name ?? node.name ?? \"tool\",\n      node,\n      this.withDefaultAgentInputMapper(node, options),\n    );\n  }\n\n  private withDefaultAgentInputMapper<\n    TNodeConfig extends RunnableNodeConfig<any, any>,\n    TInputSchema extends ZodSchemaAny,\n    TOutputSchema extends ZodSchemaAny,\n  >(\n    node: TNodeConfig,\n    options: Readonly<{ name?: string } & NodeBackedToolConfigOptions<TNodeConfig, TInputSchema, TOutputSchema>>,\n  ): Readonly<{ name?: string } & NodeBackedToolConfigOptions<TNodeConfig, TInputSchema, TOutputSchema>> {\n    if (options.mapInput || !AgentConfigInspector.isAgentNodeConfig(node)) {\n      return options;\n    }\n    return {\n      ...options,\n      mapInput: ({ input, item }) => this.mergeAgentToolInputWithCurrentItem(input, item) as never,\n    };\n  }\n\n  private mergeAgentToolInputWithCurrentItem(input: unknown, item: Item): unknown {\n    if (!this.isMergeableRecord(input) || !this.isMergeableRecord(item.json)) {\n      return input;\n    }\n    return {\n      ...item.json,\n      ...input,\n    };\n  }\n\n  private isMergeableRecord(value: unknown): value is Record<string, unknown> {\n    return typeof value === \"object\" && value !== null && !Array.isArray(value);\n  }\n}\n\nexport const AgentToolFactory = new AgentToolFactoryImpl();\n","import { isItemExpr } from \"../contracts/itemExpr\";\n\nimport type {\n  AgentMessageBuildArgs,\n  AgentMessageConfig,\n  AgentMessageDto,\n  AgentMessageLine,\n  AgentMessageRole,\n  AgentNodeConfig,\n} from \"./AiHost\";\n\nexport class AgentMessageConfigNormalizer {\n  static resolveFromInputOrConfig<TInputJson, TOutputJson>(\n    input: unknown,\n    config: AgentNodeConfig<TInputJson, TOutputJson>,\n    args: AgentMessageBuildArgs<TInputJson>,\n  ): ReadonlyArray<AgentMessageDto> {\n    const fromInput = this.tryMessagesFromStructuredInput(input);\n    if (fromInput.length > 0) {\n      return fromInput;\n    }\n    return this.normalize(config, args);\n  }\n\n  static normalize<TInputJson, TOutputJson>(\n    config: AgentNodeConfig<TInputJson, TOutputJson>,\n    args: AgentMessageBuildArgs<TInputJson>,\n  ): ReadonlyArray<AgentMessageDto> {\n    const fromMessages = this.normalizeRichMessages(config.messages, args);\n    if (fromMessages.length > 0) {\n      return fromMessages;\n    }\n    throw new Error(\n      \"AIAgent messages must be a non-empty array, or an object with a non-empty prompt array and/or buildMessages that returns messages.\",\n    );\n  }\n\n  private static tryMessagesFromStructuredInput(input: unknown): ReadonlyArray<AgentMessageDto> {\n    if (!input || typeof input !== \"object\") {\n      return [];\n    }\n    const raw = (input as { messages?: unknown }).messages;\n    if (!Array.isArray(raw) || raw.length === 0) {\n      return [];\n    }\n    const out: AgentMessageDto[] = [];\n    for (const m of raw) {\n      if (!m || typeof m !== \"object\") {\n        continue;\n      }\n      const role = (m as { role?: unknown }).role;\n      const content = (m as { content?: unknown }).content;\n      if (role !== \"system\" && role !== \"user\" && role !== \"assistant\") {\n        continue;\n      }\n      if (typeof content !== \"string\") {\n        continue;\n      }\n      out.push({ role: role as AgentMessageRole, content });\n    }\n    return out;\n  }\n\n  private static normalizeRichMessages<TInputJson>(\n    config: AgentMessageConfig<TInputJson>,\n    args: AgentMessageBuildArgs<TInputJson>,\n  ): ReadonlyArray<AgentMessageDto> {\n    if (isItemExpr(config)) {\n      throw new Error(\n        \"AIAgent messages wrapped in itemExpr(...) must be resolved by the engine before prompt normalization.\",\n      );\n    }\n    if (Array.isArray(config)) {\n      return config.map((line) => this.lineToDto(line, args));\n    }\n    const structured = config as {\n      readonly prompt?: ReadonlyArray<AgentMessageLine<TInputJson>>;\n      readonly buildMessages?: (a: AgentMessageBuildArgs<TInputJson>) => ReadonlyArray<AgentMessageDto>;\n    };\n    const messages: AgentMessageDto[] = [];\n    for (const line of structured.prompt ?? []) {\n      messages.push(this.lineToDto(line, args));\n    }\n    for (const message of structured.buildMessages?.(args) ?? []) {\n      messages.push(message);\n    }\n    return messages;\n  }\n\n  private static lineToDto<TInputJson>(\n    line: AgentMessageLine<TInputJson>,\n    args: AgentMessageBuildArgs<TInputJson>,\n  ): AgentMessageDto {\n    const content = typeof line.content === \"function\" ? line.content(args) : line.content;\n    return { role: line.role, content };\n  }\n}\n","import type { TypeToken } from \"../di\";\n\nimport type { CredentialRequirement } from \"../contracts/credentialTypes\";\nimport type { Expr } from \"../contracts/params\";\n\nimport type {\n  Item,\n  Items,\n  JsonValue,\n  NodeExecutionContext,\n  NodeOutputs,\n  RunnableNodeConfig,\n  RunnableNodeInputJson,\n} from \"../types\";\n\nimport type { input as ZodInput, output as ZodOutput, ZodType } from \"zod\";\n\nexport interface AgentCanvasPresentation<TIcon extends string = string> {\n  readonly label?: string;\n  readonly icon?: TIcon;\n}\n\nexport type ZodSchemaAny = ZodType<any, any, any>;\n\nexport interface ToolConfig {\n  readonly type: TypeToken<unknown>;\n  readonly name: string;\n  readonly description?: string;\n  readonly presentation?: AgentCanvasPresentation;\n  getCredentialRequirements?(): ReadonlyArray<CredentialRequirement>;\n}\n\nexport type ToolExecuteArgs<TConfig extends ToolConfig = ToolConfig, TInput = unknown> = Readonly<{\n  config: TConfig;\n  input: TInput;\n  ctx: NodeExecutionContext<any>;\n  item: Item;\n  itemIndex: number;\n  items: Items;\n  hooks?: Readonly<{\n    parentSpan?: import(\"../contracts/telemetryTypes\").TelemetrySpanScope;\n    parentInvocationId?: import(\"../contracts/runTypes\").ConnectionInvocationId;\n  }>;\n}>;\n\nexport interface Tool<\n  TConfig extends ToolConfig = ToolConfig,\n  TInputSchema extends ZodSchemaAny = ZodSchemaAny,\n  TOutputSchema extends ZodSchemaAny = ZodSchemaAny,\n> {\n  readonly defaultDescription: string;\n  readonly inputSchema: TInputSchema;\n  readonly outputSchema: TOutputSchema;\n  execute(\n    args: ToolExecuteArgs<TConfig, ZodInput<TInputSchema>>,\n  ): Promise<ZodOutput<TOutputSchema>> | ZodOutput<TOutputSchema>;\n}\n\nexport type AgentTool<\n  TInputSchema extends ZodSchemaAny = ZodSchemaAny,\n  TOutputSchema extends ZodSchemaAny = ZodSchemaAny,\n> = Tool<ToolConfig, TInputSchema, TOutputSchema>;\n\nexport type AgentToolExecuteArgs<TInput = unknown> = ToolExecuteArgs<ToolConfig, TInput>;\n\nexport type AgentToolToken = TypeToken<Tool<ToolConfig, ZodSchemaAny, ZodSchemaAny>>;\n\nexport type AgentMessageRole = \"system\" | \"user\" | \"assistant\";\n\nexport type AgentMessageBuildArgs<TInputJson = unknown> = Readonly<{\n  item: Item<TInputJson>;\n  itemIndex: number;\n  items: Items<TInputJson>;\n  ctx: NodeExecutionContext<any>;\n}>;\n\nexport interface AgentMessageDto {\n  readonly role: AgentMessageRole;\n  readonly content: string;\n}\n\nexport type AgentMessageTemplateContent<TInputJson = unknown> =\n  | string\n  | ((args: AgentMessageBuildArgs<TInputJson>) => string);\n\nexport interface AgentMessageTemplate<TInputJson = unknown> {\n  readonly role: AgentMessageRole;\n  readonly content: AgentMessageTemplateContent<TInputJson>;\n}\n\nexport type AgentMessageLine<TInputJson = unknown> = AgentMessageDto | AgentMessageTemplate<TInputJson>;\n\nexport type AgentMessageConfig<TInputJson = unknown> =\n  | Expr<ReadonlyArray<AgentMessageLine<TInputJson>>, TInputJson>\n  | ReadonlyArray<AgentMessageLine<TInputJson>>\n  | {\n      readonly prompt?: ReadonlyArray<AgentMessageLine<TInputJson>>;\n      readonly buildMessages?: (args: AgentMessageBuildArgs<TInputJson>) => ReadonlyArray<AgentMessageDto>;\n    };\n\nexport type AgentTurnLimitBehavior = \"error\" | \"respondWithLastMessage\";\n\nexport interface AgentModelInvocationOptions {\n  readonly maxTokens?: number;\n  readonly providerOptions?: Readonly<Record<string, JsonValue>>;\n}\n\nexport interface AgentGuardrailConfig {\n  readonly maxTurns?: number;\n  readonly onTurnLimitReached?: AgentTurnLimitBehavior;\n  readonly modelInvocationOptions?: AgentModelInvocationOptions;\n}\n\nexport const AgentGuardrailDefaults = {\n  maxTurns: 10,\n  onTurnLimitReached: \"error\" as AgentTurnLimitBehavior,\n} as const;\n\nexport interface AgentToolDefinition {\n  readonly name: string;\n  readonly description: string;\n  readonly inputSchema: ZodSchemaAny;\n}\n\nexport type AgentToolCall = Readonly<{ id?: string; name: string; input: unknown }>;\n\nexport type AgentToolCallPlanner<_TNodeConfig = unknown> = (\n  item: Item,\n  index: number,\n  items: Items,\n  ctx: NodeExecutionContext<any>,\n) => ReadonlyArray<AgentToolCall>;\n\nexport interface ChatModelConfig {\n  readonly type: TypeToken<ChatModelFactory<ChatModelConfig>>;\n  readonly name: string;\n  readonly provider?: string;\n  readonly modelName?: string;\n  readonly presentation?: AgentCanvasPresentation;\n  getCredentialRequirements?(): ReadonlyArray<CredentialRequirement>;\n}\n\nexport interface ChatLanguageModel {\n  readonly languageModel: unknown;\n  readonly modelName: string;\n  readonly provider?: string;\n  readonly defaultCallOptions?: ChatLanguageModelCallOptions;\n}\n\nexport interface ChatLanguageModelCallOptions {\n  readonly maxOutputTokens?: number;\n  readonly temperature?: number;\n  readonly providerOptions?: Readonly<Record<string, Readonly<Record<string, JsonValue>>>>;\n}\n\nexport interface StructuredOutputOptions {\n  readonly schemaName?: string;\n  readonly strict?: boolean;\n}\n\nexport interface ChatModelFactory<TConfig extends ChatModelConfig = ChatModelConfig> {\n  create(\n    args: Readonly<{ config: TConfig; ctx: NodeExecutionContext<any> }>,\n  ): Promise<ChatLanguageModel> | ChatLanguageModel;\n}\n\nexport type NodeBackedToolInputMapperArgs<\n  TNodeConfig extends RunnableNodeConfig<any, any>,\n  TToolInput = unknown,\n> = Readonly<{\n  input: TToolInput;\n  item: Item;\n  itemIndex: number;\n  items: Items;\n  ctx: NodeExecutionContext<any>;\n  node: TNodeConfig;\n}>;\n\nexport type NodeBackedToolOutputMapperArgs<\n  TNodeConfig extends RunnableNodeConfig<any, any>,\n  TToolInput = unknown,\n> = Readonly<{\n  input: TToolInput;\n  item: Item;\n  itemIndex: number;\n  items: Items;\n  ctx: NodeExecutionContext<any>;\n  node: TNodeConfig;\n  outputs: NodeOutputs;\n}>;\n\nexport type NodeBackedToolInputMapper<TNodeConfig extends RunnableNodeConfig<any, any>, TToolInput = unknown> = (\n  args: NodeBackedToolInputMapperArgs<TNodeConfig, TToolInput>,\n) => Item<RunnableNodeInputJson<TNodeConfig>> | RunnableNodeInputJson<TNodeConfig>;\n\nexport type NodeBackedToolOutputMapper<\n  TNodeConfig extends RunnableNodeConfig<any, any>,\n  TToolInput = unknown,\n  TToolOutput = unknown,\n> = (args: NodeBackedToolOutputMapperArgs<TNodeConfig, TToolInput>) => TToolOutput;\n\nexport type NodeBackedToolConfigOptions<\n  TNodeConfig extends RunnableNodeConfig<any, any>,\n  TInputSchema extends ZodSchemaAny,\n  TOutputSchema extends ZodSchemaAny,\n> = Readonly<{\n  description?: string;\n  presentation?: AgentCanvasPresentation;\n  inputSchema: TInputSchema;\n  outputSchema: TOutputSchema;\n  mapInput?: NodeBackedToolInputMapper<TNodeConfig, ZodInput<TInputSchema>>;\n  mapOutput?: NodeBackedToolOutputMapper<TNodeConfig, ZodInput<TInputSchema>, ZodOutput<TOutputSchema>>;\n  onRejected?: \"halt\" | \"return\";\n}>;\n\nexport interface AgentNodeConfig<TInputJson = unknown, TOutputJson = unknown> extends RunnableNodeConfig<\n  TInputJson,\n  TOutputJson\n> {\n  readonly messages: AgentMessageConfig<TInputJson>;\n  readonly chatModel: ChatModelConfig;\n  readonly tools?: ReadonlyArray<ToolConfig>;\n  readonly guardrails?: AgentGuardrailConfig;\n  readonly outputSchema?: ZodType<TOutputJson>;\n}\n\nexport type AgentAttachmentRole = \"languageModel\" | \"tool\" | \"nestedAgent\";\n\nexport { NodeBackedToolConfig } from \"./NodeBackedToolConfig\";\nexport { CallableToolConfig } from \"./CallableToolConfig\";\nexport type { CallableToolConfigOptions, CallableToolExecuteHandler } from \"./CallableToolConfig\";\nexport { CallableToolFactory } from \"./CallableToolFactory\";\nexport { CallableToolKindToken } from \"./CallableToolKindToken\";\nexport { AgentToolFactory } from \"./AgentToolFactory\";\nexport { AgentMessageConfigNormalizer } from \"./AgentMessageConfigNormalizerFactory\";\nexport { AgentConfigInspector } from \"./AgentConfigInspectorFactory\";\n","import type {\n  PersistedRunSchedulingState,\n  PersistedRunState,\n  RunId,\n  RunPruneCandidate,\n  RunSummary,\n  WorkflowExecutionListingRepository,\n  WorkflowExecutionPruneRepository,\n  WorkflowExecutionRepository,\n  WorkflowId,\n} from \"../types\";\nimport type { RunEventBus } from \"./runEvents\";\n\nexport class EventPublishingWorkflowExecutionRepository\n  implements WorkflowExecutionRepository, WorkflowExecutionListingRepository, WorkflowExecutionPruneRepository\n{\n  constructor(\n    private readonly inner: WorkflowExecutionRepository,\n    private readonly eventBus: RunEventBus,\n    private readonly now: () => Date = () => new Date(),\n  ) {}\n\n  async createRun(args: Parameters<WorkflowExecutionRepository[\"createRun\"]>[0]): Promise<void> {\n    await this.inner.createRun(args);\n    await this.eventBus.publish({\n      kind: \"runCreated\",\n      runId: args.runId,\n      workflowId: args.workflowId,\n      parent: args.parent,\n      at: this.now().toISOString(),\n    });\n  }\n\n  async load(runId: RunId): Promise<PersistedRunState | undefined> {\n    return await this.inner.load(runId);\n  }\n\n  async loadSchedulingState(runId: RunId): Promise<PersistedRunSchedulingState | undefined> {\n    return await this.inner.loadSchedulingState(runId);\n  }\n\n  async save(state: PersistedRunState): Promise<void> {\n    await this.inner.save(state);\n    await this.eventBus.publish({\n      kind: \"runSaved\",\n      runId: state.runId,\n      workflowId: state.workflowId,\n      parent: state.parent,\n      at: this.now().toISOString(),\n      state,\n    });\n  }\n\n  async deleteRun(runId: RunId): Promise<void> {\n    if (!this.inner.deleteRun) return;\n    await this.inner.deleteRun(runId);\n  }\n\n  async listRuns(args?: Readonly<{ workflowId?: WorkflowId; limit?: number }>): Promise<ReadonlyArray<RunSummary>> {\n    const listingRepository = this.inner as unknown as Partial<WorkflowExecutionListingRepository>;\n    if (!listingRepository.listRuns) return [];\n    return await listingRepository.listRuns(args);\n  }\n\n  async listRunsOlderThan(\n    args: Readonly<{ nowIso: string; defaultRetentionSeconds: number; limit?: number }>,\n  ): Promise<ReadonlyArray<RunPruneCandidate>> {\n    const pruneRepository = this.inner as unknown as Partial<WorkflowExecutionPruneRepository>;\n    if (!pruneRepository.listRunsOlderThan) return [];\n    return await pruneRepository.listRunsOlderThan(args);\n  }\n}\n","import type { Edge, NodeDefinition } from \"../contracts/workflowTypes\";\nimport type { WorkflowEdgePortError, WorkflowEdgePortValidationResult } from \"./WorkflowEdgePortError.types\";\n\nexport class WorkflowEdgePortValidator {\n  validate(workflow: {\n    nodes: ReadonlyArray<NodeDefinition>;\n    edges: ReadonlyArray<Edge>;\n  }): WorkflowEdgePortValidationResult {\n    const nodeById = new Map<string, NodeDefinition>();\n    for (const node of workflow.nodes) {\n      nodeById.set(node.id, node);\n    }\n\n    const errors: WorkflowEdgePortError[] = [];\n\n    for (const edge of workflow.edges) {\n      const sourceNode = nodeById.get(edge.from.nodeId);\n      const allowedPorts = this.allowedOutputPorts(sourceNode);\n      if (allowedPorts !== null && !allowedPorts.includes(edge.from.output)) {\n        const nodeKind = sourceNode?.config.name ?? sourceNode?.name;\n        const message = `Edge from node \"${edge.from.nodeId}\"${nodeKind ? ` (kind \"${nodeKind}\")` : \"\"} references undeclared output port \"${edge.from.output}\". Allowed ports: [${allowedPorts.map((p) => `\"${p}\"`).join(\", \")}].`;\n        errors.push({\n          edge,\n          sourceNodeId: edge.from.nodeId,\n          sourceNodeName: sourceNode?.name,\n          sourceNodeKind: nodeKind,\n          badPort: edge.from.output,\n          allowedPorts,\n          message,\n        });\n      }\n    }\n\n    return { valid: errors.length === 0, errors };\n  }\n\n  private allowedOutputPorts(node: NodeDefinition | undefined): ReadonlyArray<string> | null {\n    if (!node) {\n      return null;\n    }\n    const declared = node.config.declaredOutputPorts;\n    if (declared && declared.length > 0) {\n      return declared as string[];\n    }\n    return null;\n  }\n}\n","import type { OAuthMaterial } from \"./OAuthFlowExecutor.types\";\n\nexport type CredentialMaterialRef = Readonly<{\n  source: \"local\" | \"control-plane\";\n  id: string;\n}>;\n\nexport type MaterialBundle = OAuthMaterial;\n\nexport type CallerContext = Readonly<{\n  workspaceId: string;\n  caller:\n    | Readonly<{ kind: \"workflow-node\"; workflowId: string; nodeId: string }>\n    | Readonly<{ kind: \"concierge\"; chatId: string }>\n    | Readonly<{ kind: \"research-agent\"; chatId: string }>\n    | Readonly<{ kind: \"manual\"; userId: string }>;\n  reason?: string;\n}>;\n\nexport interface CredentialMaterialProvider {\n  getMaterial(ref: CredentialMaterialRef, context: CallerContext): Promise<MaterialBundle>;\n  setMaterial(ref: CredentialMaterialRef, material: MaterialBundle): Promise<void>;\n}\n\nexport class IllegalMaterialSourceError extends Error {\n  constructor(\n    public readonly source: CredentialMaterialRef[\"source\"],\n    public readonly providerName: string,\n  ) {\n    super(`Provider \"${providerName}\" cannot handle material source \"${source}\".`);\n    this.name = \"IllegalMaterialSourceError\";\n  }\n}\n","export class ManagedCredentialMaterialWriteError extends Error {\n  constructor(\n    message: string = \"managed credentials are owned by the control plane; use the Connected apps page to create or modify them.\",\n  ) {\n    super(message);\n    this.name = \"ManagedCredentialMaterialWriteError\";\n  }\n}\n","export class ManagedMaterialFetchError extends Error {\n  constructor(\n    public readonly status: number,\n    public readonly providerErrorBody: string,\n    message?: string,\n  ) {\n    super(message ?? `Control-plane material fetch failed: HTTP ${status} ${providerErrorBody}`);\n    this.name = \"ManagedMaterialFetchError\";\n  }\n}\n","import type { TypeToken } from \"../di\";\n\nexport interface WorkspaceFileMetadata {\n  readonly key: string;\n  readonly fileId: string;\n  readonly filename: string;\n  readonly contentType: string;\n  readonly size: number;\n  readonly lastModified: Date;\n}\n\nexport interface IWorkspaceFileStorage {\n  listFiles(filenameFilter?: string): Promise<ReadonlyArray<WorkspaceFileMetadata>>;\n\n  getFileByName(filename: string): Promise<WorkspaceFileMetadata>;\n\n  getFileById(fileId: string): Promise<WorkspaceFileMetadata>;\n\n  getStream(key: string): Promise<ReadableStream<Uint8Array>>;\n\n  writeFile(filename: string, body: Uint8Array, contentType: string): Promise<WorkspaceFileMetadata>;\n}\n\nexport class WorkspaceFileNotFoundError extends Error {\n  constructor(readonly key: string) {\n    super(`Workspace file not found: ${key}`);\n    this.name = \"WorkspaceFileNotFoundError\";\n  }\n}\n\nexport interface IWorkspaceFileRegistrar {\n  register(meta: WorkspaceFileMetadata): Promise<void>;\n}\n\nexport const WorkspaceFileStorageToken = Symbol.for(\"codemation.core.WorkspaceFileStorage\") as TypeToken<\n  IWorkspaceFileStorage | undefined\n>;\n\nexport const WorkspaceFileRegistrarToken = Symbol.for(\"codemation.core.WorkspaceFileRegistrar\") as TypeToken<\n  IWorkspaceFileRegistrar | undefined\n>;\n"],"mappings":"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"}