@workglow/ai 0.0.57 → 0.0.58

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 CHANGED
@@ -32,9 +32,11 @@ import {
32
32
  setGlobalModelRepository,
33
33
  InMemoryModelRepository,
34
34
  AiJob,
35
+ AiJobInput,
35
36
  } from "@workglow/ai";
36
- import { Workflow, getTaskQueueRegistry } from "@workglow/task-graph";
37
- import { JobQueue } from "@workglow/job-queue";
37
+ import { Workflow, getTaskQueueRegistry, TaskInput, TaskOutput } from "@workglow/task-graph";
38
+ import { ConcurrencyLimiter, JobQueueClient, JobQueueServer } from "@workglow/job-queue";
39
+ import { InMemoryQueueStorage } from "@workglow/storage";
38
40
  import { HF_TRANSFORMERS_ONNX, register_HFT_InlineJobFns } from "@workglow/ai-provider";
39
41
 
40
42
  // 1. Set up a model repository
@@ -59,7 +61,23 @@ await modelRepo.connectTaskToModel("TextGenerationTask", "onnx:Xenova/LaMini-Fla
59
61
  await register_HFT_InlineJobFns();
60
62
 
61
63
  // 5. Set up job queue for the provider
62
- getTaskQueueRegistry().registerQueue(new JobQueue(HF_TRANSFORMERS_ONNX, AiJob));
64
+ const queueName = HF_TRANSFORMERS_ONNX;
65
+ const storage = new InMemoryQueueStorage<AiJobInput<TaskInput>, TaskOutput>(queueName);
66
+
67
+ const server = new JobQueueServer<AiJobInput<TaskInput>, TaskOutput>(AiJob, {
68
+ storage,
69
+ queueName,
70
+ limiter: new ConcurrencyLimiter(1),
71
+ });
72
+
73
+ const client = new JobQueueClient<AiJobInput<TaskInput>, TaskOutput>({
74
+ storage,
75
+ queueName,
76
+ });
77
+
78
+ client.attach(server);
79
+ getTaskQueueRegistry().registerQueue({ server, client, storage });
80
+ await server.start();
63
81
 
64
82
  // 6. Create and run a workflow
65
83
  const workflow = new Workflow();
@@ -122,8 +140,8 @@ import { TextTranslationTask } from "@workglow/ai";
122
140
  const task = new TextTranslationTask({
123
141
  model: "translation-model",
124
142
  text: "Hello, how are you?",
125
- sourceLanguage: "en",
126
- targetLanguage: "es",
143
+ source_lang: "en",
144
+ target_lang: "es",
127
145
  });
128
146
 
129
147
  const result = await task.run();
@@ -344,12 +362,29 @@ For compute-intensive tasks that should run in workers:
344
362
  Each provider needs a job queue for task execution:
345
363
 
346
364
  ```typescript
347
- import { getTaskQueueRegistry } from "@workglow/task-graph";
348
- import { JobQueue } from "@workglow/job-queue";
349
- import { AiJob } from "@workglow/ai";
365
+ import { getTaskQueueRegistry, TaskInput, TaskOutput } from "@workglow/task-graph";
366
+ import { ConcurrencyLimiter, JobQueueClient, JobQueueServer } from "@workglow/job-queue";
367
+ import { InMemoryQueueStorage } from "@workglow/storage";
368
+ import { AiJob, AiJobInput } from "@workglow/ai";
350
369
  import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider";
351
370
 
352
- getTaskQueueRegistry().registerQueue(new JobQueue(HF_TRANSFORMERS_ONNX, AiJob));
371
+ const queueName = HF_TRANSFORMERS_ONNX;
372
+ const storage = new InMemoryQueueStorage<AiJobInput<TaskInput>, TaskOutput>(queueName);
373
+
374
+ const server = new JobQueueServer<AiJobInput<TaskInput>, TaskOutput>(AiJob, {
375
+ storage,
376
+ queueName,
377
+ limiter: new ConcurrencyLimiter(1),
378
+ });
379
+
380
+ const client = new JobQueueClient<AiJobInput<TaskInput>, TaskOutput>({
381
+ storage,
382
+ queueName,
383
+ });
384
+
385
+ client.attach(server);
386
+ getTaskQueueRegistry().registerQueue({ server, client, storage });
387
+ await server.start();
353
388
  ```
354
389
 
355
390
  ## Workflow Integration
package/dist/browser.js CHANGED
@@ -475,25 +475,29 @@ class AiTask extends JobQueueTask {
475
475
  config.name ||= `${new.target.type || new.target.name}${input.model ? " with model " + input.model : ""}`;
476
476
  super(input, config);
477
477
  }
478
- async createJob(input, queue) {
478
+ async getJobInput(input) {
479
479
  if (typeof input.model !== "string") {
480
480
  console.error("AiTask: Model is not a string", input);
481
481
  throw new TaskConfigurationError("AiTask: Model is not a string, only create job for single model tasks");
482
482
  }
483
483
  const runtype = this.constructor.runtype ?? this.constructor.type;
484
484
  const model = await this.getModelForInput(input);
485
- const queueName = queue?.queueName ?? await this.getDefaultQueueName(input);
486
- if (!queueName) {
485
+ return {
486
+ taskType: runtype,
487
+ aiProvider: model.provider,
488
+ taskInput: input
489
+ };
490
+ }
491
+ async createJob(input, queueName) {
492
+ const jobInput = await this.getJobInput(input);
493
+ const resolvedQueueName = queueName ?? await this.getDefaultQueueName(input);
494
+ if (!resolvedQueueName) {
487
495
  throw new TaskConfigurationError("JobQueueTask: Unable to determine queue for AI provider");
488
496
  }
489
497
  const job = new AiJob({
490
- queueName,
498
+ queueName: resolvedQueueName,
491
499
  jobRunId: this.config.runnerId,
492
- input: {
493
- taskType: runtype,
494
- aiProvider: model.provider,
495
- taskInput: input
496
- }
500
+ input: jobInput
497
501
  });
498
502
  return job;
499
503
  }
@@ -1117,11 +1121,15 @@ var TextTranslationInputSchema = {
1117
1121
  }),
1118
1122
  source_lang: TypeReplicateArray(TypeLanguage({
1119
1123
  title: "Source Language",
1120
- description: "The source language"
1124
+ description: "The source language",
1125
+ minLength: 2,
1126
+ maxLength: 2
1121
1127
  })),
1122
1128
  target_lang: TypeReplicateArray(TypeLanguage({
1123
1129
  title: "Target Language",
1124
- description: "The target language"
1130
+ description: "The target language",
1131
+ minLength: 2,
1132
+ maxLength: 2
1125
1133
  })),
1126
1134
  model: modelSchema7
1127
1135
  },
@@ -1138,7 +1146,9 @@ var TextTranslationOutputSchema = {
1138
1146
  },
1139
1147
  target_lang: TypeLanguage({
1140
1148
  title: "Output Language",
1141
- description: "The output language"
1149
+ description: "The output language",
1150
+ minLength: 2,
1151
+ maxLength: 2
1142
1152
  })
1143
1153
  },
1144
1154
  required: ["text", "target_lang"],
@@ -1368,4 +1378,4 @@ export {
1368
1378
  AiJob
1369
1379
  };
1370
1380
 
1371
- //# debugId=CB10B0DB935086A564756E2164756E21
1381
+ //# debugId=CC4CA70F5A3D687D64756E2164756E21
@@ -11,7 +11,7 @@
11
11
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Document, DocumentMetadata } from \"./Document\";\n\n/**\n * Abstract class for converting different types of content into a Document.\n */\nexport abstract class DocumentConverter {\n public metadata: DocumentMetadata;\n constructor(metadata: DocumentMetadata) {\n this.metadata = metadata;\n }\n public abstract convert(): Document;\n}\n",
12
12
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Document, type DocumentMetadata, type DocumentSection } from \"./Document\";\nimport { DocumentConverter } from \"./DocumentConverter\";\n\nexport class DocumentConverterMarkdown extends DocumentConverter {\n constructor(\n metadata: DocumentMetadata,\n public markdown: string\n ) {\n super(metadata);\n }\n public convert(): Document {\n const parser = new MarkdownParser(this.metadata.title);\n const document = parser.parse(this.markdown);\n return document;\n }\n}\n\nclass MarkdownParser {\n private document: Document;\n private currentSection: Document | DocumentSection;\n private textBuffer: string[] = []; // Buffer to accumulate text lines\n\n constructor(title: string) {\n this.document = new Document(title);\n this.currentSection = this.document;\n }\n\n parse(markdown: string): Document {\n const lines = markdown.split(\"\\n\");\n\n lines.forEach((line, index) => {\n if (this.isHeader(line)) {\n this.flushTextBuffer();\n const { level, content } = this.parseHeader(line);\n this.currentSection =\n level === 1 ? this.document.addSection(content) : this.currentSection.addSection(content);\n } else if (this.isTableStart(line)) {\n this.flushTextBuffer();\n const tableLines = this.collectTableLines(lines, index);\n this.currentSection.addTable(tableLines.join(\"\\n\"));\n } else if (this.isImageInline(line)) {\n this.parseLineWithPossibleImages(line);\n } else {\n this.textBuffer.push(line); // Accumulate text lines in the buffer\n }\n });\n\n this.flushTextBuffer(); // Flush any remaining text in the buffer\n return this.document;\n }\n\n private flushTextBuffer() {\n if (this.textBuffer.length > 0) {\n const textContent = this.textBuffer.join(\"\\n\").trim();\n if (textContent) {\n this.currentSection.addText(textContent);\n }\n this.textBuffer = []; // Clear the buffer after flushing\n }\n }\n\n private parseLineWithPossibleImages(line: string) {\n // Split the line by image markdown, keeping the delimiter (image markdown)\n const parts = line.split(/(!\\[.*?\\]\\(.*?\\))/).filter((part) => part !== \"\");\n parts.forEach((part) => {\n if (this.isImage(part)) {\n const { alt, src } = this.parseImage(part);\n this.flushTextBuffer();\n this.currentSection.addImage({ alt, src });\n } else {\n this.textBuffer.push(part);\n }\n });\n this.flushTextBuffer();\n }\n\n private isHeader(line: string): boolean {\n return /^#{1,6}\\s/.test(line);\n }\n\n private parseHeader(line: string): { level: number; content: string } {\n const match = line.match(/^(#{1,6})\\s+(.*)$/);\n return match ? { level: match[1].length, content: match[2] } : { level: 0, content: \"\" };\n }\n\n private isTableStart(line: string): boolean {\n return line.trim().startsWith(\"|\") && line.includes(\"|\", line.indexOf(\"|\") + 1);\n }\n\n private collectTableLines(lines: string[], startIndex: number): string[] {\n const tableLines = [];\n for (let i = startIndex; i < lines.length && this.isTableLine(lines[i]); i++) {\n tableLines.push(lines[i]);\n }\n return tableLines;\n }\n\n private isTableLine(line: string): boolean {\n return line.includes(\"|\");\n }\n\n private isImageInline(line: string): boolean {\n return line.includes(\"![\") && line.includes(\"](\");\n }\n\n private isImage(part: string): boolean {\n return /^!\\[.*\\]\\(.*\\)$/.test(part);\n }\n\n private parseImage(markdown: string): { alt: string; src: string } {\n const match = markdown.match(/^!\\[(.*)\\]\\((.*)\\)$/);\n return match ? { alt: match[1], src: match[2] } : { alt: \"\", src: \"\" };\n }\n}\n",
13
13
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Document, DocumentMetadata } from \"./Document\";\nimport { DocumentConverter } from \"./DocumentConverter\";\n\nexport class DocumentConverterText extends DocumentConverter {\n constructor(\n metadata: DocumentMetadata,\n public text: string\n ) {\n super(metadata);\n }\n public convert(): Document {\n return new Document(this.text, this.metadata);\n }\n}\n",
14
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @description This file contains the implementation of the JobQueueTask class and its derived classes.\n */\n\nimport { Job, JobQueue } from \"@workglow/job-queue\";\nimport {\n JobQueueTask,\n JobQueueTaskConfig,\n TaskConfigurationError,\n TaskInput,\n type TaskOutput,\n} from \"@workglow/task-graph\";\nimport { type JsonSchema } from \"@workglow/util\";\n\nimport { AiJob, AiJobInput } from \"../../job/AiJob\";\nimport type { Model } from \"../../model/Model\";\nimport { getGlobalModelRepository } from \"../../model/ModelRegistry\";\n\nfunction schemaFormat(schema: JsonSchema): string | undefined {\n return typeof schema === \"object\" && schema !== null && \"format\" in schema\n ? schema.format\n : undefined;\n}\n\nexport interface AiSingleTaskInput extends TaskInput {\n model: string;\n}\n\nexport interface AiArrayTaskInput extends TaskInput {\n model: string | string[];\n}\n\n/**\n * A base class for AI related tasks that run in a job queue.\n * Extends the JobQueueTask class to provide LLM-specific functionality.\n */\nexport class AiTask<\n Input extends AiArrayTaskInput = AiArrayTaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends JobQueueTaskConfig = JobQueueTaskConfig,\n> extends JobQueueTask<Input, Output, Config> {\n public static type: string = \"AiTask\";\n private modelCache?: { name: string; model: Model };\n\n /**\n * Creates a new AiTask instance\n * @param config - Configuration object for the task\n */\n constructor(input: Input = {} as Input, config: Config = {} as Config) {\n config.name ||= `${new.target.type || new.target.name}${\n input.model ? \" with model \" + input.model : \"\"\n }`;\n super(input, config);\n }\n\n // ========================================================================\n // Job creation\n // ========================================================================\n\n /**\n * Creates a new Job instance for the task\n * @returns Promise<Job> - The created job\n */\n override async createJob(\n input: Input,\n queue?: JobQueue<Input, Output>\n ): Promise<Job<AiJobInput<Input>, Output>> {\n if (typeof input.model !== \"string\") {\n console.error(\"AiTask: Model is not a string\", input);\n throw new TaskConfigurationError(\n \"AiTask: Model is not a string, only create job for single model tasks\"\n );\n }\n const runtype = (this.constructor as any).runtype ?? (this.constructor as any).type;\n const model = await this.getModelForInput(input as AiSingleTaskInput);\n const queueName = queue?.queueName ?? (await this.getDefaultQueueName(input));\n if (!queueName) {\n throw new TaskConfigurationError(\"JobQueueTask: Unable to determine queue for AI provider\");\n }\n const job = new AiJob<AiJobInput<Input>, Output>({\n queueName,\n jobRunId: this.config.runnerId, // could be undefined\n input: {\n taskType: runtype,\n aiProvider: model.provider,\n taskInput: input as Input & { model: string },\n },\n });\n return job;\n }\n\n protected async getModelForInput(input: AiSingleTaskInput): Promise<Model> {\n const modelname = input.model;\n if (!modelname) throw new TaskConfigurationError(\"AiTask: No model name found\");\n if (this.modelCache && this.modelCache.name === modelname) {\n return this.modelCache.model;\n }\n const model = await getGlobalModelRepository().findByName(modelname);\n if (!model) {\n throw new TaskConfigurationError(`JobQueueTask: No model ${modelname} found`);\n }\n this.modelCache = { name: modelname, model };\n return model;\n }\n\n protected override async getDefaultQueueName(input: Input) {\n if (typeof input.model === \"string\") {\n const model = await this.getModelForInput(input as AiSingleTaskInput);\n return model.provider;\n }\n return undefined;\n }\n\n /**\n * Validates that a model name really exists\n * @param schema The schema to validate against\n * @param item The item to validate\n * @returns True if the item is valid, false otherwise\n */\n async validateInput(input: Input): Promise<boolean> {\n // TODO(str): this is very inefficient, we should cache the results, including intermediate results\n const inputSchema = this.inputSchema();\n if (typeof inputSchema === \"boolean\") {\n if (inputSchema === false) {\n throw new TaskConfigurationError(`AiTask: Input schema is 'false' and accepts no inputs`);\n }\n return true;\n }\n const modelTaskProperties = Object.entries<JsonSchema>(\n (inputSchema.properties || {}) as Record<string, JsonSchema>\n ).filter(([key, schema]) => schemaFormat(schema)?.startsWith(\"model:\"));\n if (modelTaskProperties.length > 0) {\n const taskModels = await getGlobalModelRepository().findModelsByTask(this.type);\n for (const [key, propSchema] of modelTaskProperties) {\n let requestedModels = Array.isArray(input[key]) ? input[key] : [input[key]];\n for (const model of requestedModels) {\n const foundModel = taskModels?.find((m) => m.name === model);\n if (!foundModel) {\n throw new TaskConfigurationError(\n `AiTask: Missing model for '${key}' named '${model}' for task '${this.type}'`\n );\n }\n }\n }\n }\n const modelPlainProperties = Object.entries<JsonSchema>(\n (inputSchema.properties || {}) as Record<string, JsonSchema>\n ).filter(([key, schema]) => schemaFormat(schema) === \"model\");\n if (modelPlainProperties.length > 0) {\n for (const [key, propSchema] of modelPlainProperties) {\n let requestedModels = Array.isArray(input[key]) ? input[key] : [input[key]];\n for (const model of requestedModels) {\n const foundModel = await getGlobalModelRepository().findByName(model);\n if (!foundModel) {\n throw new TaskConfigurationError(`AiTask: Missing model for \"${key}\" named \"${model}\"`);\n }\n }\n }\n }\n\n return super.validateInput(input);\n }\n\n // dataflows can strip some models that are incompatible with the target task\n // if all of them are stripped, then the task will fail in validateInput\n async narrowInput(input: Input): Promise<Input> {\n // TODO(str): this is very inefficient, we should cache the results, including intermediate results\n const inputSchema = this.inputSchema();\n if (typeof inputSchema === \"boolean\") {\n if (inputSchema === false) {\n throw new TaskConfigurationError(`AiTask: Input schema is 'false' and accepts no inputs`);\n }\n return input;\n }\n const modelTaskProperties = Object.entries<JsonSchema>(\n (inputSchema.properties || {}) as Record<string, JsonSchema>\n ).filter(([key, schema]) => schemaFormat(schema)?.startsWith(\"model:\"));\n if (modelTaskProperties.length > 0) {\n const taskModels = await getGlobalModelRepository().findModelsByTask(this.type);\n for (const [key, propSchema] of modelTaskProperties) {\n let requestedModels = Array.isArray(input[key]) ? input[key] : [input[key]];\n let usingModels = requestedModels.filter((model: string) =>\n taskModels?.find((m) => m.name === model)\n );\n\n // we alter input to be the models that were found for this kind of input\n usingModels = usingModels.length > 1 ? usingModels : usingModels[0];\n (input as any)[key] = usingModels;\n }\n }\n return input;\n }\n}\n",
14
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @description This file contains the implementation of the JobQueueTask class and its derived classes.\n */\n\nimport { Job } from \"@workglow/job-queue\";\nimport {\n JobQueueTask,\n JobQueueTaskConfig,\n TaskConfigurationError,\n TaskInput,\n type TaskOutput,\n} from \"@workglow/task-graph\";\nimport { type JsonSchema } from \"@workglow/util\";\n\nimport { AiJob, AiJobInput } from \"../../job/AiJob\";\nimport type { Model } from \"../../model/Model\";\nimport { getGlobalModelRepository } from \"../../model/ModelRegistry\";\n\nfunction schemaFormat(schema: JsonSchema): string | undefined {\n return typeof schema === \"object\" && schema !== null && \"format\" in schema\n ? schema.format\n : undefined;\n}\n\nexport interface AiSingleTaskInput extends TaskInput {\n model: string;\n}\n\nexport interface AiArrayTaskInput extends TaskInput {\n model: string | string[];\n}\n\n/**\n * A base class for AI related tasks that run in a job queue.\n * Extends the JobQueueTask class to provide LLM-specific functionality.\n */\nexport class AiTask<\n Input extends AiArrayTaskInput = AiArrayTaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends JobQueueTaskConfig = JobQueueTaskConfig,\n> extends JobQueueTask<Input, Output, Config> {\n public static type: string = \"AiTask\";\n private modelCache?: { name: string; model: Model };\n\n /**\n * Creates a new AiTask instance\n * @param config - Configuration object for the task\n */\n constructor(input: Input = {} as Input, config: Config = {} as Config) {\n config.name ||= `${new.target.type || new.target.name}${\n input.model ? \" with model \" + input.model : \"\"\n }`;\n super(input, config);\n }\n\n // ========================================================================\n // Job creation\n // ========================================================================\n\n /**\n * Get the input to submit to the job queue.\n * Transforms the task input to AiJobInput format.\n * @param input - The task input\n * @returns The AiJobInput to submit to the queue\n */\n protected override async getJobInput(input: Input): Promise<AiJobInput<Input>> {\n if (typeof input.model !== \"string\") {\n console.error(\"AiTask: Model is not a string\", input);\n throw new TaskConfigurationError(\n \"AiTask: Model is not a string, only create job for single model tasks\"\n );\n }\n const runtype = (this.constructor as any).runtype ?? (this.constructor as any).type;\n const model = await this.getModelForInput(input as AiSingleTaskInput);\n\n return {\n taskType: runtype,\n aiProvider: model.provider,\n taskInput: input as Input & { model: string },\n };\n }\n\n /**\n * Creates a new Job instance for direct execution (without a queue).\n * @param input - The task input\n * @param queueName - The queue name (if any)\n * @returns Promise<Job> - The created job\n */\n override async createJob(\n input: Input,\n queueName?: string\n ): Promise<Job<AiJobInput<Input>, Output>> {\n const jobInput = await this.getJobInput(input);\n const resolvedQueueName = queueName ?? (await this.getDefaultQueueName(input));\n if (!resolvedQueueName) {\n throw new TaskConfigurationError(\"JobQueueTask: Unable to determine queue for AI provider\");\n }\n const job = new AiJob<AiJobInput<Input>, Output>({\n queueName: resolvedQueueName,\n jobRunId: this.config.runnerId, // could be undefined\n input: jobInput,\n });\n return job;\n }\n\n protected async getModelForInput(input: AiSingleTaskInput): Promise<Model> {\n const modelname = input.model;\n if (!modelname) throw new TaskConfigurationError(\"AiTask: No model name found\");\n if (this.modelCache && this.modelCache.name === modelname) {\n return this.modelCache.model;\n }\n const model = await getGlobalModelRepository().findByName(modelname);\n if (!model) {\n throw new TaskConfigurationError(`JobQueueTask: No model ${modelname} found`);\n }\n this.modelCache = { name: modelname, model };\n return model;\n }\n\n protected override async getDefaultQueueName(input: Input): Promise<string | undefined> {\n if (typeof input.model === \"string\") {\n const model = await this.getModelForInput(input as AiSingleTaskInput);\n return model.provider;\n }\n return undefined;\n }\n\n /**\n * Validates that a model name really exists\n * @param schema The schema to validate against\n * @param item The item to validate\n * @returns True if the item is valid, false otherwise\n */\n async validateInput(input: Input): Promise<boolean> {\n // TODO(str): this is very inefficient, we should cache the results, including intermediate results\n const inputSchema = this.inputSchema();\n if (typeof inputSchema === \"boolean\") {\n if (inputSchema === false) {\n throw new TaskConfigurationError(`AiTask: Input schema is 'false' and accepts no inputs`);\n }\n return true;\n }\n const modelTaskProperties = Object.entries<JsonSchema>(\n (inputSchema.properties || {}) as Record<string, JsonSchema>\n ).filter(([key, schema]) => schemaFormat(schema)?.startsWith(\"model:\"));\n if (modelTaskProperties.length > 0) {\n const taskModels = await getGlobalModelRepository().findModelsByTask(this.type);\n for (const [key, propSchema] of modelTaskProperties) {\n let requestedModels = Array.isArray(input[key]) ? input[key] : [input[key]];\n for (const model of requestedModels) {\n const foundModel = taskModels?.find((m) => m.name === model);\n if (!foundModel) {\n throw new TaskConfigurationError(\n `AiTask: Missing model for '${key}' named '${model}' for task '${this.type}'`\n );\n }\n }\n }\n }\n const modelPlainProperties = Object.entries<JsonSchema>(\n (inputSchema.properties || {}) as Record<string, JsonSchema>\n ).filter(([key, schema]) => schemaFormat(schema) === \"model\");\n if (modelPlainProperties.length > 0) {\n for (const [key, propSchema] of modelPlainProperties) {\n let requestedModels = Array.isArray(input[key]) ? input[key] : [input[key]];\n for (const model of requestedModels) {\n const foundModel = await getGlobalModelRepository().findByName(model);\n if (!foundModel) {\n throw new TaskConfigurationError(`AiTask: Missing model for \"${key}\" named \"${model}\"`);\n }\n }\n }\n }\n\n return super.validateInput(input);\n }\n\n // dataflows can strip some models that are incompatible with the target task\n // if all of them are stripped, then the task will fail in validateInput\n async narrowInput(input: Input): Promise<Input> {\n // TODO(str): this is very inefficient, we should cache the results, including intermediate results\n const inputSchema = this.inputSchema();\n if (typeof inputSchema === \"boolean\") {\n if (inputSchema === false) {\n throw new TaskConfigurationError(`AiTask: Input schema is 'false' and accepts no inputs`);\n }\n return input;\n }\n const modelTaskProperties = Object.entries<JsonSchema>(\n (inputSchema.properties || {}) as Record<string, JsonSchema>\n ).filter(([key, schema]) => schemaFormat(schema)?.startsWith(\"model:\"));\n if (modelTaskProperties.length > 0) {\n const taskModels = await getGlobalModelRepository().findModelsByTask(this.type);\n for (const [key, propSchema] of modelTaskProperties) {\n let requestedModels = Array.isArray(input[key]) ? input[key] : [input[key]];\n let usingModels = requestedModels.filter((model: string) =>\n taskModels?.find((m) => m.name === model)\n );\n\n // we alter input to be the models that were found for this kind of input\n usingModels = usingModels.length > 1 ? usingModels : usingModels[0];\n (input as any)[key] = usingModels;\n }\n }\n return input;\n }\n}\n",
15
15
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n DataPortSchemaNonBoolean,\n FromSchema,\n FromSchemaDefaultOptions,\n FromSchemaOptions,\n JsonSchema,\n} from \"@workglow/util\";\n\nexport type TypedArray =\n | Float64Array\n | Float32Array\n | Int32Array\n | Int16Array\n | Int8Array\n | Uint32Array\n | Uint16Array\n | Uint8Array\n | Uint8ClampedArray;\n\n// Type-only value for use in deserialize patterns\nconst TypedArrayType = null as any as TypedArray;\n\nconst TypedArraySchemaOptions = {\n ...FromSchemaDefaultOptions,\n deserialize: [\n // {\n // pattern: {\n // type: \"number\";\n // \"x-semantic\": \"BigInt\" | \"Float64\";\n // };\n // output: bigint;\n // },\n // {\n // pattern: {\n // type: \"number\";\n // \"x-semantic\": \"Float64Array\";\n // };\n // output: Float64Array;\n // },\n // {\n // pattern: {\n // type: \"number\";\n // \"x-semantic\": \"Float32Array\";\n // };\n // output: Float32Array;\n // },\n // {\n // pattern: {\n // type: \"number\";\n // \"x-semantic\": \"Int32Array\";\n // };\n // output: Int32Array;\n // },\n // {\n // pattern: {\n // type: \"number\";\n // \"x-semantic\": \"Int16Array\";\n // };\n // output: Int16Array;\n // },\n // {\n // pattern: {\n // type: \"number\";\n // \"x-semantic\": \"Int8Array\";\n // };\n // output: Int8Array;\n // },\n // {\n // pattern: {\n // type: \"number\";\n // \"x-semantic\": \"Uint8Array\";\n // };\n // output: Uint8Array;\n // },\n // {\n // pattern: {\n // type: \"number\";\n // \"x-semantic\": \"Uint16Array\";\n // };\n // output: Uint16Array;\n // },\n // {\n // pattern: {\n // type: \"number\";\n // \"x-semantic\": \"Uint32Array\";\n // };\n // output: Uint32Array;\n // },\n // {\n // pattern: { type: \"array\"; items: { type: \"number\" }; \"x-semantic\": \"Uint8ClampedArray\" };\n // output: Uint8ClampedArray;\n // },\n {\n pattern: { format: \"TypedArray\" },\n output: TypedArrayType,\n },\n ],\n} as const satisfies FromSchemaOptions;\n\nexport type TypedArraySchemaOptions = typeof TypedArraySchemaOptions;\n\nexport const TypedArraySchema = (annotations: Record<string, unknown> = {}) =>\n ({\n oneOf: [\n {\n type: \"array\",\n items: { type: \"number\", format: \"Float64\" },\n title: \"Float64Array\",\n description: \"A 64-bit floating point array\",\n format: \"Float64Array\",\n },\n {\n type: \"array\",\n items: { type: \"number\", format: \"Float32\" },\n title: \"Float32Array\",\n description: \"A 32-bit floating point array\",\n format: \"Float32Array\",\n },\n {\n type: \"array\",\n items: { type: \"number\", format: \"Int32\" },\n title: \"Int32Array\",\n description: \"A 32-bit integer array\",\n format: \"Int32Array\",\n },\n {\n type: \"array\",\n items: { type: \"number\", format: \"Int16\" },\n title: \"Int16Array\",\n description: \"A 16-bit integer array\",\n format: \"Int16Array\",\n },\n {\n type: \"array\",\n items: { type: \"number\", format: \"Int8\" },\n title: \"Int8Array\",\n },\n {\n type: \"array\",\n items: { type: \"number\", format: \"Uint8\" },\n title: \"Uint8Array\",\n description: \"A 8-bit unsigned integer array\",\n format: \"Uint8Array\",\n },\n {\n type: \"array\",\n items: { type: \"number\", format: \"Uint16\" },\n title: \"Uint16Array\",\n description: \"A 16-bit unsigned integer array\",\n format: \"Uint16Array\",\n },\n {\n type: \"array\",\n items: { type: \"number\", format: \"Uint32\" },\n title: \"Uint32Array\",\n description: \"A 32-bit unsigned integer array\",\n format: \"Uint32Array\",\n },\n {\n type: \"array\",\n items: { type: \"number\", format: \"Uint8Clamped\" },\n title: \"Uint8ClampedArray\",\n description: \"A 8-bit unsigned integer array with values clamped to 0-255\",\n format: \"Uint8ClampedArray\",\n },\n ],\n format: \"TypedArray\",\n ...annotations,\n }) as const satisfies JsonSchema;\n\nexport const TypeLanguage = (annotations: Record<string, unknown> = {}) =>\n ({\n type: \"string\",\n title: \"Language\",\n description: \"The language to use\",\n maxLength: 2,\n minLength: 2,\n ...annotations,\n }) as const;\n\nexport type TypeModelSemantic = \"model\" | `model:${string}`;\n\nexport type TTypeModel = DataPortSchemaNonBoolean & {\n readonly type: \"string\";\n readonly format: TypeModelSemantic;\n};\n\nexport function TypeModel<\n S extends TypeModelSemantic = \"model\",\n O extends Record<string, unknown> = {},\n>(semantic: S = \"model\" as S, options: O = {} as O) {\n if (semantic !== \"model\" && !semantic.startsWith(\"model:\")) {\n throw new Error(\"Invalid semantic value\");\n }\n const taskName = semantic.startsWith(\"model:\")\n ? semantic\n .slice(6)\n .replace(/Task$/, \"\")\n .replaceAll(/[A-Z]/g, (char) => \" \" + char.toLowerCase())\n .trim()\n : null;\n return {\n title: \"Model\",\n description: `The model ${taskName ? `for ${taskName} ` : \"to use\"}`,\n ...options,\n format: semantic,\n type: \"string\",\n } as const;\n}\n\nexport const TypeReplicateArray = <T extends DataPortSchemaNonBoolean>(\n type: T,\n annotations: Record<string, unknown> = {}\n) =>\n ({\n oneOf: [type, { type: \"array\", items: type }],\n title: type.title,\n description: type.description,\n ...(type.format ? { format: type.format } : {}),\n ...annotations,\n \"x-replicate\": true,\n }) as const;\n\nexport type TypedArrayFromSchema<SCHEMA extends JsonSchema> = FromSchema<\n SCHEMA,\n TypedArraySchemaOptions\n>;\n\n/**\n * Removes array types from a union, leaving only non-array types.\n * For example, `string | string[]` becomes `string`.\n * Used to extract the single-value type from schemas with x-replicate annotation.\n * Uses distributive conditional types to filter out arrays from unions.\n * Checks for both array types and types with numeric index signatures (FromSchema array output).\n * Preserves TypedArray types like Float64Array which also have numeric indices.\n */\ntype UnwrapArrayUnion<T> = T extends readonly any[]\n ? T extends TypedArray\n ? T\n : never\n : number extends keyof T\n ? \"push\" extends keyof T\n ? never\n : T\n : T;\n\n/**\n * Transforms a schema by removing array variants from properties marked with x-replicate.\n * Properties with x-replicate use {@link TypeReplicateArray} which creates a union of\n * `T | T[]`, and this type extracts just `T`.\n */\nexport type DeReplicateFromSchema<S extends { properties: Record<string, any> }> = {\n [K in keyof S[\"properties\"]]: S[\"properties\"][K] extends { \"x-replicate\": true }\n ? UnwrapArrayUnion<TypedArrayFromSchema<S[\"properties\"][K]>>\n : TypedArrayFromSchema<S[\"properties\"][K]>;\n};\n",
16
16
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n CreateWorkflow,\n JobQueueTaskConfig,\n Task,\n TaskRegistry,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { Document, DocumentFragment } from \"../source/Document\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n parser: {\n type: \"string\",\n enum: [\"txt\", \"md\"],\n title: \"Document Kind\",\n description: \"The kind of document (txt or md)\",\n },\n // file: Type.Instance(Document),\n },\n required: [\"parser\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n texts: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Text Chunks\",\n description: \"The text chunks of the document\",\n },\n },\n required: [\"texts\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type DocumentSplitterTaskInput = FromSchema<typeof inputSchema>;\nexport type DocumentSplitterTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class DocumentSplitterTask extends Task<\n DocumentSplitterTaskInput,\n DocumentSplitterTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"DocumentSplitterTask\";\n public static category = \"Document\";\n public static title = \"Document Splitter\";\n public static description = \"Splits documents into text chunks for processing\";\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n flattenFragmentsToTexts(item: DocumentFragment | Document): string[] {\n if (item instanceof Document) {\n const texts: string[] = [];\n item.fragments.forEach((fragment) => {\n texts.push(...this.flattenFragmentsToTexts(fragment));\n });\n return texts;\n } else {\n return [item.content];\n }\n }\n\n async executeReactive(): Promise<DocumentSplitterTaskOutput> {\n return { texts: this.flattenFragmentsToTexts(this.runInputData.file) };\n }\n}\n\nTaskRegistry.registerTask(DocumentSplitterTask);\n\nexport const DocumentSplitter = (input: DocumentSplitterTaskInput) => {\n return new DocumentSplitterTask(input).run();\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n DocumentSplitter: CreateWorkflow<\n DocumentSplitterTaskInput,\n DocumentSplitterTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.DocumentSplitter = CreateWorkflow(DocumentSplitterTask);\n",
17
17
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, TaskRegistry, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { AiTask } from \"./base/AiTask\";\nimport { DeReplicateFromSchema, TypeModel, TypeReplicateArray } from \"./base/AiTaskSchemas\";\n\nconst modelSchema = TypeReplicateArray(TypeModel(\"model\"));\n\nconst DownloadModelInputSchema = {\n type: \"object\",\n properties: {\n model: modelSchema,\n },\n required: [\"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst DownloadModelOutputSchema = {\n type: \"object\",\n properties: {\n model: modelSchema,\n },\n required: [\"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type DownloadModelTaskRunInput = FromSchema<typeof DownloadModelInputSchema>;\nexport type DownloadModelTaskRunOutput = FromSchema<typeof DownloadModelOutputSchema>;\nexport type DownloadModelTaskExecuteInput = DeReplicateFromSchema<typeof DownloadModelInputSchema>;\nexport type DownloadModelTaskExecuteOutput = DeReplicateFromSchema<\n typeof DownloadModelOutputSchema\n>;\n\n/**\n * Download a model from a remote source and cache it locally.\n *\n * @remarks\n * This task has a side effect of downloading the model and caching it locally outside of the task system\n */\nexport class DownloadModelTask extends AiTask<\n DownloadModelTaskRunInput,\n DownloadModelTaskRunOutput,\n JobQueueTaskConfig\n> {\n public static type = \"DownloadModelTask\";\n public static category = \"AI Text Model\";\n public static title = \"Download Model\";\n public static description = \"Downloads and caches AI models locally with progress tracking\";\n public static inputSchema(): DataPortSchema {\n return DownloadModelInputSchema satisfies DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return DownloadModelOutputSchema satisfies DataPortSchema;\n }\n public static cacheable = false;\n\n public files: { file: string; progress: number }[] = [];\n\n constructor(input: Partial<DownloadModelTaskRunInput>, config: JobQueueTaskConfig = {}) {\n super(input as DownloadModelTaskRunInput, config);\n this.on(\"progress\", this.processProgress.bind(this));\n this.on(\"start\", () => {\n this.files = [];\n });\n }\n\n /**\n * Handles progress updates for the download task\n * @param progress - The progress value (0-100)\n * @param message - The message to display\n * @param details - Additional details about the progress\n */\n processProgress(\n progress: number,\n message: string = \"\",\n details?: { file?: string; progress: number; text?: number }\n ): void {\n if (details?.file) {\n const file = this.files.find((f) => f.file === details.file);\n if (file) {\n file.progress = details.progress;\n } else {\n this.files.push({ file: details.file, progress: details.progress });\n }\n this.progress = this.files.reduce((acc, f) => acc + f.progress, 0) / this.files.length;\n } else {\n this.progress = progress;\n }\n }\n}\n\nTaskRegistry.registerTask(DownloadModelTask);\n\n/**\n * Download a model from a remote source and cache it locally.\n *\n * @param input - Input containing model(s) to download\n * @returns Promise resolving to the downloaded model(s)\n */\nexport const DownloadModel = (input: DownloadModelTaskRunInput, config?: JobQueueTaskConfig) => {\n return new DownloadModelTask(input, config).run();\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n DownloadModel: CreateWorkflow<\n DownloadModelTaskRunInput,\n DownloadModelTaskRunOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.DownloadModel = CreateWorkflow(DownloadModelTask);\n",
@@ -20,11 +20,11 @@
20
20
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, TaskRegistry, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { AiTask } from \"./base/AiTask\";\nimport { TypeModel, TypeReplicateArray } from \"./base/AiTaskSchemas\";\n\nconst contextSchema = {\n type: \"string\",\n title: \"Context\",\n description: \"The context of the question\",\n} as const;\n\nconst questionSchema = {\n type: \"string\",\n title: \"Question\",\n description: \"The question to answer\",\n} as const;\n\nconst textSchema = {\n type: \"string\",\n title: \"Text\",\n description: \"The generated text\",\n} as const;\n\nconst modelSchema = TypeReplicateArray(TypeModel(\"model:TextQuestionAnswerTask\"));\n\nexport const TextQuestionAnswerInputSchema = {\n type: \"object\",\n properties: {\n context: TypeReplicateArray(contextSchema),\n question: TypeReplicateArray(questionSchema),\n model: modelSchema,\n },\n required: [\"context\", \"question\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const TextQuestionAnswerOutputSchema = {\n type: \"object\",\n properties: {\n text: {\n oneOf: [textSchema, { type: \"array\", items: textSchema }],\n title: textSchema.title,\n description: textSchema.description,\n },\n },\n required: [\"text\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type TextQuestionAnswerTaskInput = FromSchema<typeof TextQuestionAnswerInputSchema>;\nexport type TextQuestionAnswerTaskOutput = FromSchema<typeof TextQuestionAnswerOutputSchema>;\n\n/**\n * This is a special case of text generation that takes a context and a question\n */\nexport class TextQuestionAnswerTask extends AiTask<\n TextQuestionAnswerTaskInput,\n TextQuestionAnswerTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"TextQuestionAnswerTask\";\n public static category = \"AI Text Model\";\n public static title = \"Text Question Answer\";\n public static description = \"Answers questions based on provided context using language models\";\n public static inputSchema(): DataPortSchema {\n return TextQuestionAnswerInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return TextQuestionAnswerOutputSchema as DataPortSchema;\n }\n}\n\nTaskRegistry.registerTask(TextQuestionAnswerTask);\n\n/**\n * Convenience function to run text question answer tasks.\n * Creates and executes a TextQuestionAnswerCompoundTask with the provided input.\n * @param input The input parameters for text question answer (context, question, and model)\n * @returns Promise resolving to the generated answer(s)\n */\nexport const TextQuestionAnswer = (\n input: TextQuestionAnswerTaskInput,\n config?: JobQueueTaskConfig\n) => {\n return new TextQuestionAnswerTask(input, config).run();\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n TextQuestionAnswer: CreateWorkflow<\n TextQuestionAnswerTaskInput,\n TextQuestionAnswerTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.TextQuestionAnswer = CreateWorkflow(TextQuestionAnswerTask);\n",
21
21
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, TaskRegistry, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { AiTask } from \"./base/AiTask\";\nimport { TypeModel, TypeReplicateArray } from \"./base/AiTaskSchemas\";\n\nconst modelSchema = TypeReplicateArray(TypeModel(\"model:TextRewriterTask\"));\n\nexport const TextRewriterInputSchema = {\n type: \"object\",\n properties: {\n text: TypeReplicateArray({\n type: \"string\",\n title: \"Text\",\n description: \"The text to rewrite\",\n }),\n prompt: TypeReplicateArray({\n type: \"string\",\n title: \"Prompt\",\n description: \"The prompt to direct the rewriting\",\n }),\n model: modelSchema,\n },\n required: [\"text\", \"prompt\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const TextRewriterOutputSchema = {\n type: \"object\",\n properties: {\n text: {\n type: \"string\",\n title: \"Text\",\n description: \"The rewritten text\",\n },\n },\n required: [\"text\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type TextRewriterTaskInput = FromSchema<typeof TextRewriterInputSchema>;\nexport type TextRewriterTaskOutput = FromSchema<typeof TextRewriterOutputSchema>;\n\n/**\n * This is a special case of text generation that takes a prompt and text to rewrite\n */\nexport class TextRewriterTask extends AiTask<TextRewriterTaskInput, TextRewriterTaskOutput> {\n public static type = \"TextRewriterTask\";\n public static category = \"AI Text Model\";\n public static title = \"Text Rewriter\";\n public static description = \"Rewrites text according to a given prompt using language models\";\n public static inputSchema(): DataPortSchema {\n return TextRewriterInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return TextRewriterOutputSchema as DataPortSchema;\n }\n}\n\nTaskRegistry.registerTask(TextRewriterTask);\n\n/**\n * Convenience function to run text rewriter tasks.\n * Creates and executes a TextRewriterCompoundTask with the provided input.\n * @param input The input parameters for text rewriting (text, prompt, and model)\n * @returns Promise resolving to the rewritten text output(s)\n */\nexport const TextRewriter = (input: TextRewriterTaskInput, config?: JobQueueTaskConfig) => {\n return new TextRewriterTask(input, config).run();\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n TextRewriter: CreateWorkflow<TextRewriterTaskInput, TextRewriterTaskOutput, JobQueueTaskConfig>;\n }\n}\n\nWorkflow.prototype.TextRewriter = CreateWorkflow(TextRewriterTask);\n",
22
22
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, TaskRegistry, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { AiTask } from \"./base/AiTask\";\nimport { TypeModel, TypeReplicateArray } from \"./base/AiTaskSchemas\";\n\nconst modelSchema = TypeReplicateArray(TypeModel(\"model:TextSummaryTask\"));\n\nexport const TextSummaryInputSchema = {\n type: \"object\",\n properties: {\n text: TypeReplicateArray({\n type: \"string\",\n title: \"Text\",\n description: \"The text to summarize\",\n }),\n model: modelSchema,\n },\n required: [\"text\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const TextSummaryOutputSchema = {\n type: \"object\",\n properties: {\n text: {\n type: \"string\",\n title: \"Text\",\n description: \"The summarized text\",\n },\n },\n required: [\"text\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type TextSummaryTaskInput = FromSchema<typeof TextSummaryInputSchema>;\nexport type TextSummaryTaskOutput = FromSchema<typeof TextSummaryOutputSchema>;\n\n/**\n * This summarizes a piece of text\n */\n\nexport class TextSummaryTask extends AiTask<TextSummaryTaskInput, TextSummaryTaskOutput> {\n public static type = \"TextSummaryTask\";\n public static category = \"AI Text Model\";\n public static title = \"Text Summary\";\n public static description =\n \"Summarizes text into a shorter form while preserving key information\";\n public static inputSchema(): DataPortSchema {\n return TextSummaryInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return TextSummaryOutputSchema as DataPortSchema;\n }\n}\n\nTaskRegistry.registerTask(TextSummaryTask);\n\n/**\n * Convenience function to run text summary tasks.\n * Creates and executes a text summary task with the provided input.\n * @param input The input parameters for text summary (text and model)\n * @returns Promise resolving to the summarized text output(s)\n */\nexport const TextSummary = async (input: TextSummaryTaskInput, config?: JobQueueTaskConfig) => {\n return new TextSummaryTask(input, config).run();\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n TextSummary: CreateWorkflow<TextSummaryTaskInput, TextSummaryTaskOutput, JobQueueTaskConfig>;\n }\n}\n\nWorkflow.prototype.TextSummary = CreateWorkflow(TextSummaryTask);\n",
23
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, TaskRegistry, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { AiTask } from \"./base/AiTask\";\nimport { TypeLanguage, TypeModel, TypeReplicateArray } from \"./base/AiTaskSchemas\";\n\nconst modelSchema = TypeReplicateArray(TypeModel(\"model:TextTranslationTask\"));\n\nconst translationTextSchema = {\n type: \"string\",\n title: \"Text\",\n description: \"The translated text\",\n} as const;\n\nexport const TextTranslationInputSchema = {\n type: \"object\",\n properties: {\n text: TypeReplicateArray({\n type: \"string\",\n title: \"Text\",\n description: \"The text to translate\",\n }),\n source_lang: TypeReplicateArray(\n TypeLanguage({\n title: \"Source Language\",\n description: \"The source language\",\n })\n ),\n target_lang: TypeReplicateArray(\n TypeLanguage({\n title: \"Target Language\",\n description: \"The target language\",\n })\n ),\n model: modelSchema,\n },\n required: [\"text\", \"source_lang\", \"target_lang\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const TextTranslationOutputSchema = {\n type: \"object\",\n properties: {\n text: {\n oneOf: [translationTextSchema, { type: \"array\", items: translationTextSchema }],\n title: translationTextSchema.title,\n description: translationTextSchema.description,\n },\n target_lang: TypeLanguage({\n title: \"Output Language\",\n description: \"The output language\",\n }),\n },\n required: [\"text\", \"target_lang\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type TextTranslationTaskInput = FromSchema<typeof TextTranslationInputSchema>;\nexport type TextTranslationTaskOutput = FromSchema<typeof TextTranslationOutputSchema>;\n\n/**\n * This translates text from one language to another\n */\nexport class TextTranslationTask extends AiTask<\n TextTranslationTaskInput,\n TextTranslationTaskOutput\n> {\n public static type = \"TextTranslationTask\";\n public static category = \"AI Text Model\";\n public static title = \"Text Translation\";\n public static description = \"Translates text from one language to another using language models\";\n public static inputSchema(): DataPortSchema {\n return TextTranslationInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return TextTranslationOutputSchema as DataPortSchema;\n }\n}\n\nTaskRegistry.registerTask(TextTranslationTask);\n\n/**\n * Convenience function to run text translation tasks.\n * Creates and executes a TextTranslationCompoundTask with the provided input.\n * @param input The input parameters for text translation (text, model, source_lang, and target_lang)\n * @returns Promise resolving to the translated text output(s)\n */\nexport const TextTranslation = (input: TextTranslationTaskInput, config?: JobQueueTaskConfig) => {\n return new TextTranslationTask(input, config).run();\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n TextTranslation: CreateWorkflow<\n TextTranslationTaskInput,\n TextTranslationTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.TextTranslation = CreateWorkflow(TextTranslationTask);\n",
23
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, TaskRegistry, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { AiTask } from \"./base/AiTask\";\nimport { TypeLanguage, TypeModel, TypeReplicateArray } from \"./base/AiTaskSchemas\";\n\nconst modelSchema = TypeReplicateArray(TypeModel(\"model:TextTranslationTask\"));\n\nconst translationTextSchema = {\n type: \"string\",\n title: \"Text\",\n description: \"The translated text\",\n} as const;\n\nexport const TextTranslationInputSchema = {\n type: \"object\",\n properties: {\n text: TypeReplicateArray({\n type: \"string\",\n title: \"Text\",\n description: \"The text to translate\",\n }),\n source_lang: TypeReplicateArray(\n TypeLanguage({\n title: \"Source Language\",\n description: \"The source language\",\n minLength: 2,\n maxLength: 2,\n })\n ),\n target_lang: TypeReplicateArray(\n TypeLanguage({\n title: \"Target Language\",\n description: \"The target language\",\n minLength: 2,\n maxLength: 2,\n })\n ),\n model: modelSchema,\n },\n required: [\"text\", \"source_lang\", \"target_lang\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const TextTranslationOutputSchema = {\n type: \"object\",\n properties: {\n text: {\n oneOf: [translationTextSchema, { type: \"array\", items: translationTextSchema }],\n title: translationTextSchema.title,\n description: translationTextSchema.description,\n },\n target_lang: TypeLanguage({\n title: \"Output Language\",\n description: \"The output language\",\n minLength: 2,\n maxLength: 2,\n }),\n },\n required: [\"text\", \"target_lang\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type TextTranslationTaskInput = FromSchema<typeof TextTranslationInputSchema>;\nexport type TextTranslationTaskOutput = FromSchema<typeof TextTranslationOutputSchema>;\n\n/**\n * This translates text from one language to another\n */\nexport class TextTranslationTask extends AiTask<\n TextTranslationTaskInput,\n TextTranslationTaskOutput\n> {\n public static type = \"TextTranslationTask\";\n public static category = \"AI Text Model\";\n public static title = \"Text Translation\";\n public static description = \"Translates text from one language to another using language models\";\n public static inputSchema(): DataPortSchema {\n return TextTranslationInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return TextTranslationOutputSchema as DataPortSchema;\n }\n}\n\nTaskRegistry.registerTask(TextTranslationTask);\n\n/**\n * Convenience function to run text translation tasks.\n * Creates and executes a TextTranslationCompoundTask with the provided input.\n * @param input The input parameters for text translation (text, model, source_lang, and target_lang)\n * @returns Promise resolving to the translated text output(s)\n */\nexport const TextTranslation = (input: TextTranslationTaskInput, config?: JobQueueTaskConfig) => {\n return new TextTranslationTask(input, config).run();\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n TextTranslation: CreateWorkflow<\n TextTranslationTaskInput,\n TextTranslationTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.TextTranslation = CreateWorkflow(TextTranslationTask);\n",
24
24
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ArrayTask,\n CreateWorkflow,\n JobQueueTaskConfig,\n TaskError,\n TaskRegistry,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { TypedArray, TypedArraySchema, TypedArraySchemaOptions } from \"./base/AiTaskSchemas\";\n\nexport const SimilarityFn = {\n COSINE: \"cosine\",\n JACCARD: \"jaccard\",\n HAMMING: \"hamming\",\n} as const;\n\nexport type SimilarityFn = (typeof SimilarityFn)[keyof typeof SimilarityFn];\n\nconst SimilarityInputSchema = {\n type: \"object\",\n properties: {\n query: TypedArraySchema({\n title: \"Query\",\n description: \"Query vector to compare against\",\n }),\n input: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Input\",\n description: \"Array of vectors to compare against the query\",\n }),\n },\n topK: {\n type: \"number\",\n title: \"Top K\",\n description: \"Number of top results to return\",\n minimum: 1,\n default: 10,\n },\n similarity: {\n type: \"string\",\n enum: Object.values(SimilarityFn),\n title: \"Similarity 𝑓\",\n description: \"Similarity function to use for comparisons\",\n default: SimilarityFn.COSINE,\n },\n },\n required: [\"query\", \"input\", \"similarity\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst SimilarityOutputSchema = {\n type: \"object\",\n properties: {\n output: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Output\",\n description: \"Ranked output vectors\",\n }),\n },\n score: {\n type: \"array\",\n items: {\n type: \"number\",\n title: \"Score\",\n description: \"Similarity scores for each output vector\",\n },\n },\n },\n required: [\"output\", \"score\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type VectorSimilarityTaskInput = FromSchema<\n typeof SimilarityInputSchema,\n TypedArraySchemaOptions\n>;\nexport type VectorSimilarityTaskOutput = FromSchema<\n typeof SimilarityOutputSchema,\n TypedArraySchemaOptions\n>;\n\nexport class VectorSimilarityTask extends ArrayTask<\n VectorSimilarityTaskInput,\n VectorSimilarityTaskOutput,\n JobQueueTaskConfig\n> {\n static readonly type = \"VectorSimilarityTask\";\n static readonly category = \"Analysis\";\n static readonly title = \"Vector Similarity\";\n public static description =\n \"Compares vectors using similarity functions and returns top-K ranked results\";\n static readonly cacheable = true;\n\n public static override inputSchema(): DataPortSchema {\n return SimilarityInputSchema as DataPortSchema;\n }\n public static override outputSchema(): DataPortSchema {\n return SimilarityOutputSchema as DataPortSchema;\n }\n\n // @ts-ignore (TODO: fix this)\n async executeReactive(\n { query, input, similarity, topK }: VectorSimilarityTaskInput,\n oldOutput: VectorSimilarityTaskOutput\n ) {\n let similarities = [];\n const fns = { cosine };\n const fnName = similarity as keyof typeof fns;\n const fn = fns[fnName];\n\n for (const embedding of input) {\n similarities.push({\n similarity: fn(embedding, query),\n embedding,\n });\n }\n similarities = similarities.sort((a, b) => b.similarity - a.similarity).slice(0, topK);\n\n const outputs = similarities.map((s) => s.embedding);\n const scores = similarities.map((s) => s.similarity);\n return {\n output: outputs,\n score: scores,\n };\n }\n}\n\nTaskRegistry.registerTask(VectorSimilarityTask);\n\nexport const Similarity = (input: VectorSimilarityTaskInput, config?: JobQueueTaskConfig) => {\n return new VectorSimilarityTask(input, config).run();\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n Similarity: CreateWorkflow<\n VectorSimilarityTaskInput,\n VectorSimilarityTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.Similarity = CreateWorkflow(VectorSimilarityTask);\n\n// ===============================================================================\n\nexport function inner(arr1: TypedArray, arr2: TypedArray): number {\n // @ts-ignore\n return 1 - arr1.reduce((acc, val, i) => acc + val * arr2[i], 0);\n}\n\nexport function magnitude(arr: TypedArray) {\n // @ts-ignore\n return Math.sqrt(arr.reduce((acc, val) => acc + val * val, 0));\n}\n\nfunction cosine(arr1: TypedArray, arr2: TypedArray) {\n const dotProduct = inner(arr1, arr2);\n const magnitude1 = magnitude(arr1);\n const magnitude2 = magnitude(arr2);\n return 1 - dotProduct / (magnitude1 * magnitude2);\n}\n\nexport function normalize(vector: TypedArray): TypedArray {\n const mag = magnitude(vector);\n\n if (mag === 0) {\n throw new TaskError(\"Cannot normalize a zero vector.\");\n }\n\n const normalized = vector.map((val) => Number(val) / mag);\n\n if (vector instanceof Float64Array) {\n return new Float64Array(normalized);\n }\n if (vector instanceof Float32Array) {\n return new Float32Array(normalized);\n }\n // For integer arrays and bigint[], use Float32Array since normalization produces floats\n return new Float32Array(normalized);\n}\n",
25
25
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IndexedDbTabularRepository } from \"@workglow/storage\";\nimport {\n ModelPrimaryKeyNames,\n ModelRepository,\n ModelSchema,\n Task2ModelPrimaryKeyNames,\n Task2ModelSchema,\n} from \"../ModelRepository\";\n\n/**\n * IndexedDB implementation of a model repository.\n * Provides storage and retrieval for models and task-to-model mappings.\n */\nexport class IndexedDbModelRepository extends ModelRepository {\n modelTabularRepository: IndexedDbTabularRepository<\n typeof ModelSchema,\n typeof ModelPrimaryKeyNames\n >;\n task2ModelTabularRepository: IndexedDbTabularRepository<\n typeof Task2ModelSchema,\n typeof Task2ModelPrimaryKeyNames\n >;\n public type = \"IndexedDbModelRepository\" as const;\n\n constructor(tableModels: string = \"models\", tableTask2Models: string = \"task2models\") {\n super();\n this.modelTabularRepository = new IndexedDbTabularRepository(\n tableModels,\n ModelSchema,\n ModelPrimaryKeyNames\n );\n this.task2ModelTabularRepository = new IndexedDbTabularRepository(\n tableTask2Models,\n Task2ModelSchema,\n Task2ModelPrimaryKeyNames,\n [\"model\"]\n );\n }\n}\n"
26
26
  ],
27
- "mappings": ";AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;;;ACCA;AAwBO,IAAM,cAAc;AAAA,EACzB,MAAM;AAAA,EACN,YAAY;AAAA,IACV,MAAM,EAAE,MAAM,SAAS;AAAA,IACvB,SAAS,EAAE,MAAM,SAAS;AAAA,EAC5B;AAAA,EACA,UAAU,CAAC,QAAQ,SAAS;AAAA,EAC5B,sBAAsB;AACxB;AACO,IAAM,uBAAuB,CAAC,MAAM;AAKpC,IAAM,mBAAmB;AAAA,EAC9B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,MAAM,EAAE,MAAM,SAAS;AAAA,IACvB,OAAO,EAAE,MAAM,SAAS;AAAA,EAC1B;AAAA,EACA,UAAU,CAAC,QAAQ,OAAO;AAAA,EAC1B,sBAAsB;AACxB;AACO,IAAM,4BAA4B,CAAC,QAAQ,OAAO;AAAA;AAOlD,MAAe,gBAAgB;AAAA,EAE7B,OAAO;AAAA,EAmBJ,SAAS,IAAI;AAAA,EAOvB,EAA6B,CAAC,MAAa,IAA+B;AAAA,IACxE,KAAK,OAAO,GAAG,MAAM,EAAE;AAAA;AAAA,EAQzB,GAA8B,CAAC,MAAa,IAA+B;AAAA,IACzE,KAAK,OAAO,IAAI,MAAM,EAAE;AAAA;AAAA,EAQ1B,IAA+B,CAAC,MAAa,IAA+B;AAAA,IAC1E,KAAK,OAAO,KAAK,MAAM,EAAE;AAAA;AAAA,EAQ3B,MAAiC,CAAC,MAAa;AAAA,IAC7C,OAAO,KAAK,OAAO,OAAO,IAAI;AAAA;AAAA,OAO1B,SAAQ,CAAC,OAAc;AAAA,IAC3B,MAAM,KAAK,uBAAuB,IAAI,EAAE,MAAM,MAAM,MAAM,SAAS,KAAK,UAAU,KAAK,EAAE,CAAC;AAAA,IAC1F,KAAK,OAAO,IAAI,MAAM,MAAM,KAAK;AAAA,IACjC,KAAK,OAAO,KAAK,eAAe,KAAK;AAAA,IACrC,OAAO;AAAA;AAAA,OAQH,iBAAgB,CAAC,MAAc;AAAA,IACnC,IAAI,OAAO,QAAQ;AAAA,MAAU;AAAA,IAC7B,MAAM,YAAY,MAAM,KAAK,4BAA4B,OAAO,EAAE,KAAK,CAAC;AAAA,IACxE,IAAI,CAAC,aAAa,UAAU,WAAW;AAAA,MAAG;AAAA,IAC1C,MAAM,SAAS,CAAC;AAAA,IAChB,WAAW,YAAY,WAAW;AAAA,MAChC,MAAM,QAAQ,MAAM,KAAK,uBAAuB,IAAI,EAAE,MAAM,SAAS,MAAM,CAAQ;AAAA,MACnF,IAAI;AAAA,QAAO,OAAO,KAAK,KAAK,MAAM,MAAM,OAAiB,CAAC;AAAA,IAC5D;AAAA,IACA,OAAO,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;AAAA,IAChD,KAAK,WAAW,IAAI,MAAM,MAAM;AAAA,IAChC,OAAO;AAAA;AAAA,EAGT,SAAS,IAAI;AAAA,EACb,aAAa,IAAI;AAAA,OAOX,iBAAgB,CAAC,OAAe;AAAA,IACpC,IAAI,OAAO,SAAS;AAAA,MAAU;AAAA,IAC9B,MAAM,YAAY,MAAM,KAAK,4BAA4B,OAAO,EAAE,MAAM,CAAC;AAAA,IACzE,IAAI,CAAC,aAAa,UAAU,WAAW;AAAA,MAAG;AAAA,IAC1C,OAAO,UAAU,IAAI,CAAC,aAAa,SAAS,IAAI;AAAA;AAAA,OAO5C,kBAAiB,GAAG;AAAA,IACxB,MAAM,YAAY,MAAM,KAAK,4BAA4B,OAAO;AAAA,IAChE,IAAI,CAAC,aAAa,UAAU,WAAW;AAAA,MAAG;AAAA,IAC1C,MAAM,cAAc,CAAC,GAAG,IAAI,IAAI,UAAU,IAAI,CAAC,aAAa,SAAS,IAAI,CAAC,CAAC;AAAA,IAC3E,OAAO;AAAA;AAAA,OAOH,mBAAkB,GAAG;AAAA,IACzB,MAAM,SAAS,MAAM,KAAK,uBAAuB,OAAO;AAAA,IACxD,IAAI,CAAC,UAAU,OAAO,WAAW;AAAA,MAAG;AAAA,IACpC,MAAM,eAAe,OAAO,IAAI,CAAC,UAAU,KAAK,MAAM,MAAM,OAAiB,CAAC;AAAA,IAC9E,aAAa,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;AAAA,IACtD,OAAO;AAAA;AAAA,OAQH,mBAAkB,CAAC,MAAc,OAAe;AAAA,IACpD,MAAM,KAAK,4BAA4B,IAAI,EAAE,MAAM,MAAM,CAAC;AAAA,IAC1D,KAAK,OAAO,KAAK,wBAAwB,MAAM,KAAK;AAAA;AAAA,OAQhD,WAAU,CAAC,MAAc;AAAA,IAC7B,IAAI,OAAO,QAAQ;AAAA,MAAU;AAAA,IAC7B,MAAM,WAAW,MAAM,KAAK,uBAAuB,IAAI,EAAE,KAAK,CAAQ;AAAA,IACtE,IAAI,CAAC;AAAA,MAAU;AAAA,IACf,MAAM,QAAQ,KAAK,MAAM,SAAS,OAAiB;AAAA,IACnD,KAAK,OAAO,IAAI,MAAM,MAAM,KAAK;AAAA,IACjC,OAAO;AAAA;AAAA,OAOH,KAAI,GAAoB;AAAA,IAC5B,OAAO,MAAM,KAAK,uBAAuB,KAAK;AAAA;AAAA,OAM1C,MAAK,GAAG;AAAA,IACZ,MAAM,KAAK,uBAAuB,UAAU;AAAA;AAEhD;;;AD/MO,MAAM,gCAAgC,gBAAgB;AAAA,EAC3D;AAAA,EAIA;AAAA,EAIO,OAAO;AAAA,EACd,WAAW,GAAG;AAAA,IACZ,MAAM;AAAA,IACN,KAAK,yBAAyB,IAAI,0BAA0B,aAAa,oBAAoB;AAAA,IAC7F,KAAK,8BAA8B,IAAI,0BACrC,kBACA,2BACA,CAAC,OAAO,CACV;AAAA;AAEJ;;;AE3BA,MAAM,8BAA8B,wBAAwB;AAAC;AAE7D,IAAI;AACG,SAAS,wBAAwB,GAAG;AAAA,EACzC,IAAI,CAAC;AAAA,IAAe,gBAAgB,IAAI;AAAA,EACxC,OAAO;AAAA;AAEF,SAAS,wBAAwB,CAAC,IAAqB;AAAA,EAC5D,gBAAgB;AAAA;;;ACZlB;AAAA;AAqBO,MAAM,mBAAmB;AAAA,EAC9B,gBAAqE,IAAI;AAAA,EAQzE,aAA0F,CACxF,eACA,UACA,OACA;AAAA,IACA,IAAI,CAAC,KAAK,cAAc,IAAI,QAAQ,GAAG;AAAA,MACrC,KAAK,cAAc,IAAI,UAAU,IAAI,GAAK;AAAA,IAC5C;AAAA,IACA,KAAK,cAAc,IAAI,QAAQ,EAAG,IAAI,eAAe,KAAK;AAAA;AAAA,EAG5D,qBAGC,CAAC,eAAuB,UAAkB;AAAA,IACzC,MAAM,WAA2C,OAC/C,OACA,OACA,iBACA,WACG;AAAA,MACH,MAAM,gBAAgB,sBAAsB,IAAI,cAAc;AAAA,MAC9D,MAAM,SAAS,MAAM,cAAc,mBACjC,eACA,UACA,CAAC,OAAO,KAAK,GACb;AAAA,QACE;AAAA,QACA,YAAY;AAAA,MACd,CACF;AAAA,MACA,OAAO;AAAA;AAAA,IAET,KAAK,cAA6B,eAAe,UAAU,QAAQ;AAAA;AAAA,EAOrE,cAA2F,CACzF,eACA,UACA;AAAA,IACA,MAAM,cAAc,KAAK,cAAc,IAAI,QAAQ;AAAA,IACnD,MAAM,QAAQ,aAAa,IAAI,aAAa;AAAA,IAC5C,IAAI,CAAC,OAAO;AAAA,MACV,MAAM,IAAI,MACR,uCAAuC,+BAA+B,eACxE;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAEX;AAGA,IAAI;AACG,SAAS,qBAAqB,GAAG;AAAA,EACtC,IAAI,CAAC;AAAA,IAAkB,mBAAmB,IAAI;AAAA,EAC9C,OAAO;AAAA;AAEF,SAAS,qBAAqB,CAAC,IAAwB;AAAA,EAC5D,mBAAmB;AAAA;;;AJrEd,MAAM,cAGH,IAAmB;AAAA,OAIrB,QAAO,CAAC,OAAc,SAA8C;AAAA,IACxE,IAAI,QAAQ,OAAO,WAAW,KAAK,WAAW,UAAU,UAAU;AAAA,MAChE,MAAM,IAAI,oBAAoB,8CAA8C;AAAA,IAC9E;AAAA,IAEA,IAAI;AAAA,IAEJ,IAAI;AAAA,MACF,MAAM,eAAe,IAAI,QAAe,CAAC,UAAU,WAAW;AAAA,QAC5D,MAAM,UAAU,MAAM;AAAA,UACpB,OAAO,IAAI,oBAAoB,+BAA+B,CAAC;AAAA;AAAA,QAGjE,QAAQ,OAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,QAChE,eAAe,MAAM,QAAQ,OAAO,oBAAoB,SAAS,OAAO;AAAA,OACzE;AAAA,MAED,MAAM,QAAQ,YAAY;AAAA,QACxB,MAAM,KAAK,sBAAsB,EAAE,eACjC,MAAM,YACN,MAAM,QACR;AAAA,QACA,IAAI,CAAC,IAAI;AAAA,UACP,MAAM,IAAI,kBACR,uCAAuC,MAAM,+BAA+B,MAAM,YACpF;AAAA,QACF;AAAA,QACA,MAAM,YAAY,MAAM,UAAU;AAAA,QAClC,MAAM,QAAQ,MAAM,yBAAyB,EAAE,WAAW,SAAS;AAAA,QACnE,IAAI,aAAa,CAAC,OAAO;AAAA,UACvB,MAAM,IAAI,kBAAkB,SAAS,qBAAqB;AAAA,QAC5D;AAAA,QACA,IAAI,QAAQ,QAAQ,SAAS;AAAA,UAC3B,MAAM,IAAI,oBAAoB,aAAa;AAAA,QAC7C;AAAA,QACA,OAAO,MAAM,GAAG,MAAM,WAAW,OAAO,QAAQ,gBAAgB,QAAQ,MAAM;AAAA;AAAA,MAEhF,MAAM,eAAe,MAAM;AAAA,MAE3B,OAAO,MAAM,QAAQ,KAAK,CAAC,cAAc,YAAY,CAAC;AAAA,cACtD;AAAA,MAEA,IAAI,cAAc;AAAA,QAChB,aAAa;AAAA,MACf;AAAA;AAAA;AAGN;;AK/CO,MAAM,SAAS;AAAA,EACb;AAAA,EAEP,WAAW,CAAC,SAAuB,WAA6B,EAAE,OAAO,GAAG,GAAG;AAAA,IAC7E,KAAK,WAAW;AAAA,IAChB,IAAI,SAAS;AAAA,MACX,IAAI,MAAM,QAAQ,OAAO,GAAG;AAAA,QAC1B,WAAW,QAAQ,SAAS;AAAA,UAC1B,KAAK,WAAW,IAAI;AAAA,QACtB;AAAA,MACF,EAAO;AAAA,QACL,KAAK,WAAW,OAAO;AAAA;AAAA,IAE3B;AAAA;AAAA,EAGK,UAAU,CAAC,SAA0B;AAAA,IAC1C,IAAI,OAAO,YAAY,UAAU;AAAA,MAC/B,KAAK,QAAQ,OAAO;AAAA,IACtB,EAAO,SAAI,mBAAmB,wBAAwB,mBAAmB,iBAAiB;AAAA,MACxF,KAAK,UAAU,KAAK,OAAO;AAAA,IAC7B,EAAO;AAAA,MACL,MAAM,IAAI,MAAM,sBAAsB;AAAA;AAAA;AAAA,EAInC,UAAU,CAAC,SAAuB,UAAqD;AAAA,IAC5F,MAAM,UAAU,IAAI,gBAAgB,MAAM,SAAS,QAAQ;AAAA,IAC3D,KAAK,UAAU,KAAK,OAAO;AAAA,IAC3B,OAAO;AAAA;AAAA,EAGF,OAAO,CAAC,SAA+B;AAAA,IAC5C,MAAM,IAAI,IAAI,aAAa,OAAO;AAAA,IAClC,KAAK,UAAU,KAAK,CAAC;AAAA,IACrB,OAAO;AAAA;AAAA,EAEF,QAAQ,CAAC,SAAiC;AAAA,IAC/C,MAAM,IAAI,IAAI,cAAc,OAAO;AAAA,IACnC,KAAK,UAAU,KAAK,CAAC;AAAA,IACrB,OAAO;AAAA;AAAA,EAEF,QAAQ,CAAC,SAAiC;AAAA,IAC/C,MAAM,IAAI,IAAI,cAAc,OAAO;AAAA,IACnC,KAAK,UAAU,KAAK,CAAC;AAAA,IACrB,OAAO;AAAA;AAAA,EAGF,YAAuD,CAAC;AAAA,EAE/D,MAAM,GAAY;AAAA,IAChB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,KAAK;AAAA,MACf,WAAW,KAAK,UAAU,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;AAAA,IACjD;AAAA;AAEJ;AAAA;AAEO,MAAM,wBAAwB,SAAS;AAAA,EAEnC;AAAA,EADT,WAAW,CACF,QACP,SACA,UACA;AAAA,IACA,MAAM,SAAS,QAAQ;AAAA,IAJhB;AAAA,IAKP,KAAK,SAAS;AAAA;AAAA,EAGhB,MAAM,GAAY;AAAA,IAChB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,KAAK;AAAA,MACf,WAAW,KAAK,UAAU,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;AAAA,IACjD;AAAA;AAEJ;AAAA;AAIO,MAAM,qBAAqB;AAAA,EAChC;AAAA,EACA,WAAW,CAAC,UAAqC;AAAA,IAC/C,KAAK,WAAW;AAAA;AAEpB;AAAA;AAEO,MAAM,qBAAqB,qBAAqB;AAAA,EACrD;AAAA,EACA,WAAW,CAAC,SAAiB,UAAqC;AAAA,IAChE,MAAM,QAAQ;AAAA,IACd,KAAK,UAAU;AAAA;AAAA,EAEjB,MAAM,GAAY;AAAA,IAChB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,KAAK;AAAA,MACf,SAAS,KAAK;AAAA,IAChB;AAAA;AAEJ;AAAA;AAEO,MAAM,sBAAsB,qBAAqB;AAAA,EACtD;AAAA,EACA,WAAW,CAAC,SAAc,UAAqC;AAAA,IAC7D,MAAM,QAAQ;AAAA,IACd,KAAK,UAAU;AAAA;AAAA,EAEjB,MAAM,GAAY;AAAA,IAChB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,KAAK;AAAA,MACf,SAAS,KAAK;AAAA,IAChB;AAAA;AAEJ;AAAA;AAEO,MAAM,sBAAsB,qBAAqB;AAAA,EACtD;AAAA,EACA,WAAW,CAAC,SAAc,UAAqC;AAAA,IAC7D,MAAM,QAAQ;AAAA,IACd,KAAK,UAAU;AAAA;AAAA,EAEjB,MAAM,GAAY;AAAA,IAChB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,KAAK;AAAA,MACf,SAAS,KAAK;AAAA,IAChB;AAAA;AAEJ;;AC5JO,MAAe,kBAAkB;AAAA,EAC/B;AAAA,EACP,WAAW,CAAC,UAA4B;AAAA,IACtC,KAAK,WAAW;AAAA;AAGpB;;;ACRO,MAAM,kCAAkC,kBAAkB;AAAA,EAGtD;AAAA,EAFT,WAAW,CACT,UACO,UACP;AAAA,IACA,MAAM,QAAQ;AAAA,IAFP;AAAA;AAAA,EAIF,OAAO,GAAa;AAAA,IACzB,MAAM,SAAS,IAAI,eAAe,KAAK,SAAS,KAAK;AAAA,IACrD,MAAM,WAAW,OAAO,MAAM,KAAK,QAAQ;AAAA,IAC3C,OAAO;AAAA;AAEX;AAAA;AAEA,MAAM,eAAe;AAAA,EACX;AAAA,EACA;AAAA,EACA,aAAuB,CAAC;AAAA,EAEhC,WAAW,CAAC,OAAe;AAAA,IACzB,KAAK,WAAW,IAAI,SAAS,KAAK;AAAA,IAClC,KAAK,iBAAiB,KAAK;AAAA;AAAA,EAG7B,KAAK,CAAC,UAA4B;AAAA,IAChC,MAAM,QAAQ,SAAS,MAAM;AAAA,CAAI;AAAA,IAEjC,MAAM,QAAQ,CAAC,MAAM,UAAU;AAAA,MAC7B,IAAI,KAAK,SAAS,IAAI,GAAG;AAAA,QACvB,KAAK,gBAAgB;AAAA,QACrB,QAAQ,OAAO,YAAY,KAAK,YAAY,IAAI;AAAA,QAChD,KAAK,iBACH,UAAU,IAAI,KAAK,SAAS,WAAW,OAAO,IAAI,KAAK,eAAe,WAAW,OAAO;AAAA,MAC5F,EAAO,SAAI,KAAK,aAAa,IAAI,GAAG;AAAA,QAClC,KAAK,gBAAgB;AAAA,QACrB,MAAM,aAAa,KAAK,kBAAkB,OAAO,KAAK;AAAA,QACtD,KAAK,eAAe,SAAS,WAAW,KAAK;AAAA,CAAI,CAAC;AAAA,MACpD,EAAO,SAAI,KAAK,cAAc,IAAI,GAAG;AAAA,QACnC,KAAK,4BAA4B,IAAI;AAAA,MACvC,EAAO;AAAA,QACL,KAAK,WAAW,KAAK,IAAI;AAAA;AAAA,KAE5B;AAAA,IAED,KAAK,gBAAgB;AAAA,IACrB,OAAO,KAAK;AAAA;AAAA,EAGN,eAAe,GAAG;AAAA,IACxB,IAAI,KAAK,WAAW,SAAS,GAAG;AAAA,MAC9B,MAAM,cAAc,KAAK,WAAW,KAAK;AAAA,CAAI,EAAE,KAAK;AAAA,MACpD,IAAI,aAAa;AAAA,QACf,KAAK,eAAe,QAAQ,WAAW;AAAA,MACzC;AAAA,MACA,KAAK,aAAa,CAAC;AAAA,IACrB;AAAA;AAAA,EAGM,2BAA2B,CAAC,MAAc;AAAA,IAEhD,MAAM,QAAQ,KAAK,MAAM,mBAAmB,EAAE,OAAO,CAAC,SAAS,SAAS,EAAE;AAAA,IAC1E,MAAM,QAAQ,CAAC,SAAS;AAAA,MACtB,IAAI,KAAK,QAAQ,IAAI,GAAG;AAAA,QACtB,QAAQ,KAAK,QAAQ,KAAK,WAAW,IAAI;AAAA,QACzC,KAAK,gBAAgB;AAAA,QACrB,KAAK,eAAe,SAAS,EAAE,KAAK,IAAI,CAAC;AAAA,MAC3C,EAAO;AAAA,QACL,KAAK,WAAW,KAAK,IAAI;AAAA;AAAA,KAE5B;AAAA,IACD,KAAK,gBAAgB;AAAA;AAAA,EAGf,QAAQ,CAAC,MAAuB;AAAA,IACtC,OAAO,YAAY,KAAK,IAAI;AAAA;AAAA,EAGtB,WAAW,CAAC,MAAkD;AAAA,IACpE,MAAM,QAAQ,KAAK,MAAM,mBAAmB;AAAA,IAC5C,OAAO,QAAQ,EAAE,OAAO,MAAM,GAAG,QAAQ,SAAS,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG;AAAA;AAAA,EAGjF,YAAY,CAAC,MAAuB;AAAA,IAC1C,OAAO,KAAK,KAAK,EAAE,WAAW,GAAG,KAAK,KAAK,SAAS,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC;AAAA;AAAA,EAGxE,iBAAiB,CAAC,OAAiB,YAA8B;AAAA,IACvE,MAAM,aAAa,CAAC;AAAA,IACpB,SAAS,IAAI,WAAY,IAAI,MAAM,UAAU,KAAK,YAAY,MAAM,EAAE,GAAG,KAAK;AAAA,MAC5E,WAAW,KAAK,MAAM,EAAE;AAAA,IAC1B;AAAA,IACA,OAAO;AAAA;AAAA,EAGD,WAAW,CAAC,MAAuB;AAAA,IACzC,OAAO,KAAK,SAAS,GAAG;AAAA;AAAA,EAGlB,aAAa,CAAC,MAAuB;AAAA,IAC3C,OAAO,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI;AAAA;AAAA,EAG1C,OAAO,CAAC,MAAuB;AAAA,IACrC,OAAO,kBAAkB,KAAK,IAAI;AAAA;AAAA,EAG5B,UAAU,CAAC,UAAgD;AAAA,IACjE,MAAM,QAAQ,SAAS,MAAM,qBAAqB;AAAA,IAClD,OAAO,QAAQ,EAAE,KAAK,MAAM,IAAI,KAAK,MAAM,GAAG,IAAI,EAAE,KAAK,IAAI,KAAK,GAAG;AAAA;AAEzE;;AC9GO,MAAM,8BAA8B,kBAAkB;AAAA,EAGlD;AAAA,EAFT,WAAW,CACT,UACO,MACP;AAAA,IACA,MAAM,QAAQ;AAAA,IAFP;AAAA;AAAA,EAIF,OAAO,GAAa;AAAA,IACzB,OAAO,IAAI,SAAS,KAAK,MAAM,KAAK,QAAQ;AAAA;AAEhD;;ACRA;AAAA;AAAA;AAAA;AAaA,SAAS,YAAY,CAAC,QAAwC;AAAA,EAC5D,OAAO,OAAO,WAAW,YAAY,WAAW,QAAQ,YAAY,SAChE,OAAO,SACP;AAAA;AAAA;AAeC,MAAM,eAIH,aAAoC;AAAA,SAC9B,OAAe;AAAA,EACrB;AAAA,EAMR,WAAW,CAAC,QAAe,CAAC,GAAY,SAAiB,CAAC,GAAa;AAAA,IACrE,OAAO,SAAS,GAAG,WAAW,QAAQ,WAAW,OAC/C,MAAM,QAAQ,iBAAiB,MAAM,QAAQ;AAAA,IAE/C,MAAM,OAAO,MAAM;AAAA;AAAA,OAWN,UAAS,CACtB,OACA,OACyC;AAAA,IACzC,IAAI,OAAO,MAAM,UAAU,UAAU;AAAA,MACnC,QAAQ,MAAM,iCAAiC,KAAK;AAAA,MACpD,MAAM,IAAI,uBACR,uEACF;AAAA,IACF;AAAA,IACA,MAAM,UAAW,KAAK,YAAoB,WAAY,KAAK,YAAoB;AAAA,IAC/E,MAAM,QAAQ,MAAM,KAAK,iBAAiB,KAA0B;AAAA,IACpE,MAAM,YAAY,OAAO,aAAc,MAAM,KAAK,oBAAoB,KAAK;AAAA,IAC3E,IAAI,CAAC,WAAW;AAAA,MACd,MAAM,IAAI,uBAAuB,yDAAyD;AAAA,IAC5F;AAAA,IACA,MAAM,MAAM,IAAI,MAAiC;AAAA,MAC/C;AAAA,MACA,UAAU,KAAK,OAAO;AAAA,MACtB,OAAO;AAAA,QACL,UAAU;AAAA,QACV,YAAY,MAAM;AAAA,QAClB,WAAW;AAAA,MACb;AAAA,IACF,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,OAGO,iBAAgB,CAAC,OAA0C;AAAA,IACzE,MAAM,YAAY,MAAM;AAAA,IACxB,IAAI,CAAC;AAAA,MAAW,MAAM,IAAI,uBAAuB,6BAA6B;AAAA,IAC9E,IAAI,KAAK,cAAc,KAAK,WAAW,SAAS,WAAW;AAAA,MACzD,OAAO,KAAK,WAAW;AAAA,IACzB;AAAA,IACA,MAAM,QAAQ,MAAM,yBAAyB,EAAE,WAAW,SAAS;AAAA,IACnE,IAAI,CAAC,OAAO;AAAA,MACV,MAAM,IAAI,uBAAuB,0BAA0B,iBAAiB;AAAA,IAC9E;AAAA,IACA,KAAK,aAAa,EAAE,MAAM,WAAW,MAAM;AAAA,IAC3C,OAAO;AAAA;AAAA,OAGgB,oBAAmB,CAAC,OAAc;AAAA,IACzD,IAAI,OAAO,MAAM,UAAU,UAAU;AAAA,MACnC,MAAM,QAAQ,MAAM,KAAK,iBAAiB,KAA0B;AAAA,MACpE,OAAO,MAAM;AAAA,IACf;AAAA,IACA;AAAA;AAAA,OASI,cAAa,CAAC,OAAgC;AAAA,IAElD,MAAM,cAAc,KAAK,YAAY;AAAA,IACrC,IAAI,OAAO,gBAAgB,WAAW;AAAA,MACpC,IAAI,gBAAgB,OAAO;AAAA,QACzB,MAAM,IAAI,uBAAuB,uDAAuD;AAAA,MAC1F;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,MAAM,sBAAsB,OAAO,QAChC,YAAY,cAAc,CAAC,CAC9B,EAAE,OAAO,EAAE,KAAK,YAAY,aAAa,MAAM,GAAG,WAAW,QAAQ,CAAC;AAAA,IACtE,IAAI,oBAAoB,SAAS,GAAG;AAAA,MAClC,MAAM,aAAa,MAAM,yBAAyB,EAAE,iBAAiB,KAAK,IAAI;AAAA,MAC9E,YAAY,KAAK,eAAe,qBAAqB;AAAA,QACnD,IAAI,kBAAkB,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC,MAAM,IAAI;AAAA,QAC1E,WAAW,SAAS,iBAAiB;AAAA,UACnC,MAAM,aAAa,YAAY,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK;AAAA,UAC3D,IAAI,CAAC,YAAY;AAAA,YACf,MAAM,IAAI,uBACR,8BAA8B,eAAe,oBAAoB,KAAK,OACxE;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,uBAAuB,OAAO,QACjC,YAAY,cAAc,CAAC,CAC9B,EAAE,OAAO,EAAE,KAAK,YAAY,aAAa,MAAM,MAAM,OAAO;AAAA,IAC5D,IAAI,qBAAqB,SAAS,GAAG;AAAA,MACnC,YAAY,KAAK,eAAe,sBAAsB;AAAA,QACpD,IAAI,kBAAkB,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC,MAAM,IAAI;AAAA,QAC1E,WAAW,SAAS,iBAAiB;AAAA,UACnC,MAAM,aAAa,MAAM,yBAAyB,EAAE,WAAW,KAAK;AAAA,UACpE,IAAI,CAAC,YAAY;AAAA,YACf,MAAM,IAAI,uBAAuB,8BAA8B,eAAe,QAAQ;AAAA,UACxF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO,MAAM,cAAc,KAAK;AAAA;AAAA,OAK5B,YAAW,CAAC,OAA8B;AAAA,IAE9C,MAAM,cAAc,KAAK,YAAY;AAAA,IACrC,IAAI,OAAO,gBAAgB,WAAW;AAAA,MACpC,IAAI,gBAAgB,OAAO;AAAA,QACzB,MAAM,IAAI,uBAAuB,uDAAuD;AAAA,MAC1F;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,MAAM,sBAAsB,OAAO,QAChC,YAAY,cAAc,CAAC,CAC9B,EAAE,OAAO,EAAE,KAAK,YAAY,aAAa,MAAM,GAAG,WAAW,QAAQ,CAAC;AAAA,IACtE,IAAI,oBAAoB,SAAS,GAAG;AAAA,MAClC,MAAM,aAAa,MAAM,yBAAyB,EAAE,iBAAiB,KAAK,IAAI;AAAA,MAC9E,YAAY,KAAK,eAAe,qBAAqB;AAAA,QACnD,IAAI,kBAAkB,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC,MAAM,IAAI;AAAA,QAC1E,IAAI,cAAc,gBAAgB,OAAO,CAAC,UACxC,YAAY,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,CAC1C;AAAA,QAGA,cAAc,YAAY,SAAS,IAAI,cAAc,YAAY;AAAA,QAChE,MAAc,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAEX;;AChMA;AAAA;AAAA;AAoBA,IAAM,iBAAiB;AAEvB,IAAM,0BAA0B;AAAA,KAC3B;AAAA,EACH,aAAa;AAAA,IAoEX;AAAA,MACE,SAAS,EAAE,QAAQ,aAAa;AAAA,MAChC,QAAQ;AAAA,IACV;AAAA,EACF;AACF;AAIO,IAAM,mBAAmB,CAAC,cAAuC,CAAC,OACtE;AAAA,EACC,OAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,UAAU,QAAQ,UAAU;AAAA,MAC3C,OAAO;AAAA,MACP,aAAa;AAAA,MACb,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,UAAU,QAAQ,UAAU;AAAA,MAC3C,OAAO;AAAA,MACP,aAAa;AAAA,MACb,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,UAAU,QAAQ,QAAQ;AAAA,MACzC,OAAO;AAAA,MACP,aAAa;AAAA,MACb,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,UAAU,QAAQ,QAAQ;AAAA,MACzC,OAAO;AAAA,MACP,aAAa;AAAA,MACb,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,UAAU,QAAQ,OAAO;AAAA,MACxC,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,UAAU,QAAQ,QAAQ;AAAA,MACzC,OAAO;AAAA,MACP,aAAa;AAAA,MACb,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,UAAU,QAAQ,SAAS;AAAA,MAC1C,OAAO;AAAA,MACP,aAAa;AAAA,MACb,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,UAAU,QAAQ,SAAS;AAAA,MAC1C,OAAO;AAAA,MACP,aAAa;AAAA,MACb,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,UAAU,QAAQ,eAAe;AAAA,MAChD,OAAO;AAAA,MACP,aAAa;AAAA,MACb,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,KACL;AACL;AAEK,IAAM,eAAe,CAAC,cAAuC,CAAC,OAClE;AAAA,EACC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AAAA,EACb,WAAW;AAAA,EACX,WAAW;AAAA,KACR;AACL;AASK,SAAS,SAGf,CAAC,WAAc,SAAc,UAAa,CAAC,GAAQ;AAAA,EAClD,IAAI,aAAa,WAAW,CAAC,SAAS,WAAW,QAAQ,GAAG;AAAA,IAC1D,MAAM,IAAI,MAAM,wBAAwB;AAAA,EAC1C;AAAA,EACA,MAAM,WAAW,SAAS,WAAW,QAAQ,IACzC,SACG,MAAM,CAAC,EACP,QAAQ,SAAS,EAAE,EACnB,WAAW,UAAU,CAAC,SAAS,MAAM,KAAK,YAAY,CAAC,EACvD,KAAK,IACR;AAAA,EACJ,OAAO;AAAA,IACL,OAAO;AAAA,IACP,aAAa,aAAa,WAAW,OAAO,cAAc;AAAA,OACvD;AAAA,IACH,QAAQ;AAAA,IACR,MAAM;AAAA,EACR;AAAA;AAGK,IAAM,qBAAqB,CAChC,MACA,cAAuC,CAAC,OAEvC;AAAA,EACC,OAAO,CAAC,MAAM,EAAE,MAAM,SAAS,OAAO,KAAK,CAAC;AAAA,EAC5C,OAAO,KAAK;AAAA,EACZ,aAAa,KAAK;AAAA,KACd,KAAK,SAAS,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,KAC1C;AAAA,EACH,eAAe;AACjB;;AC7NF;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,IAAM,cAAc;AAAA,EAClB,MAAM;AAAA,EACN,YAAY;AAAA,IACV,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,MAAM,CAAC,OAAO,IAAI;AAAA,MAClB,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,EAEF;AAAA,EACA,UAAU,CAAC,QAAQ;AAAA,EACnB,sBAAsB;AACxB;AAEA,IAAM,eAAe;AAAA,EACnB,MAAM;AAAA,EACN,YAAY;AAAA,IACV,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,SAAS;AAAA,MACxB,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,UAAU,CAAC,OAAO;AAAA,EAClB,sBAAsB;AACxB;AAAA;AAKO,MAAM,6BAA6B,KAIxC;AAAA,SACc,OAAO;AAAA,SACP,WAAW;AAAA,SACX,QAAQ;AAAA,SACR,cAAc;AAAA,SACd,WAAW,GAAmB;AAAA,IAC1C,OAAO;AAAA;AAAA,SAEK,YAAY,GAAmB;AAAA,IAC3C,OAAO;AAAA;AAAA,EAGT,uBAAuB,CAAC,MAA6C;AAAA,IACnE,IAAI,gBAAgB,UAAU;AAAA,MAC5B,MAAM,QAAkB,CAAC;AAAA,MACzB,KAAK,UAAU,QAAQ,CAAC,aAAa;AAAA,QACnC,MAAM,KAAK,GAAG,KAAK,wBAAwB,QAAQ,CAAC;AAAA,OACrD;AAAA,MACD,OAAO;AAAA,IACT,EAAO;AAAA,MACL,OAAO,CAAC,KAAK,OAAO;AAAA;AAAA;AAAA,OAIlB,gBAAe,GAAwC;AAAA,IAC3D,OAAO,EAAE,OAAO,KAAK,wBAAwB,KAAK,aAAa,IAAI,EAAE;AAAA;AAEzE;AAEA,aAAa,aAAa,oBAAoB;AAEvC,IAAM,mBAAmB,CAAC,UAAqC;AAAA,EACpE,OAAO,IAAI,qBAAqB,KAAK,EAAE,IAAI;AAAA;AAa7C,SAAS,UAAU,mBAAmB,eAAe,oBAAoB;;AC3FzE,2BAAS,iCAAoC,2BAAc;AAK3D,IAAM,cAAc,mBAAmB,UAAU,OAAO,CAAC;AAEzD,IAAM,2BAA2B;AAAA,EAC/B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,UAAU,CAAC,OAAO;AAAA,EAClB,sBAAsB;AACxB;AAEA,IAAM,4BAA4B;AAAA,EAChC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,UAAU,CAAC,OAAO;AAAA,EAClB,sBAAsB;AACxB;AAAA;AAeO,MAAM,0BAA0B,OAIrC;AAAA,SACc,OAAO;AAAA,SACP,WAAW;AAAA,SACX,QAAQ;AAAA,SACR,cAAc;AAAA,SACd,WAAW,GAAmB;AAAA,IAC1C,OAAO;AAAA;AAAA,SAEK,YAAY,GAAmB;AAAA,IAC3C,OAAO;AAAA;AAAA,SAEK,YAAY;AAAA,EAEnB,QAA8C,CAAC;AAAA,EAEtD,WAAW,CAAC,OAA2C,SAA6B,CAAC,GAAG;AAAA,IACtF,MAAM,OAAoC,MAAM;AAAA,IAChD,KAAK,GAAG,YAAY,KAAK,gBAAgB,KAAK,IAAI,CAAC;AAAA,IACnD,KAAK,GAAG,SAAS,MAAM;AAAA,MACrB,KAAK,QAAQ,CAAC;AAAA,KACf;AAAA;AAAA,EASH,eAAe,CACb,UACA,UAAkB,IAClB,SACM;AAAA,IACN,IAAI,SAAS,MAAM;AAAA,MACjB,MAAM,OAAO,KAAK,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,QAAQ,IAAI;AAAA,MAC3D,IAAI,MAAM;AAAA,QACR,KAAK,WAAW,QAAQ;AAAA,MAC1B,EAAO;AAAA,QACL,KAAK,MAAM,KAAK,EAAE,MAAM,QAAQ,MAAM,UAAU,QAAQ,SAAS,CAAC;AAAA;AAAA,MAEpE,KAAK,WAAW,KAAK,MAAM,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,UAAU,CAAC,IAAI,KAAK,MAAM;AAAA,IAClF,EAAO;AAAA,MACL,KAAK,WAAW;AAAA;AAAA;AAGtB;AAEA,cAAa,aAAa,iBAAiB;AAQpC,IAAM,gBAAgB,CAAC,OAAkC,WAAgC;AAAA,EAC9F,OAAO,IAAI,kBAAkB,OAAO,MAAM,EAAE,IAAI;AAAA;AAalD,UAAS,UAAU,gBAAgB,gBAAe,iBAAiB;;AChHnE,2BAAS,iCAAoC,2BAAc;AAU3D,IAAM,eAAc,mBAAmB,UAAU,yBAAyB,CAAC;AAEpE,IAAM,2BAA2B;AAAA,EACtC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,MAAM,mBAAmB;AAAA,MACvB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf,CAAC;AAAA,IACD,OAAO;AAAA,EACT;AAAA,EACA,UAAU,CAAC,QAAQ,OAAO;AAAA,EAC1B,sBAAsB;AACxB;AAEO,IAAM,4BAA4B;AAAA,EACvC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,QAAQ,mBACN,iBAAiB;AAAA,MACf,OAAO;AAAA,MACP,aAAa;AAAA,IACf,CAAC,CACH;AAAA,EACF;AAAA,EACA,UAAU,CAAC,QAAQ;AAAA,EACnB,sBAAsB;AACxB;AAAA;AAkBO,MAAM,0BAA0B,OAAwD;AAAA,SAC/E,OAAO;AAAA,SACP,WAAW;AAAA,SACX,QAAQ;AAAA,SACR,cAAc;AAAA,SACd,WAAW,GAAmB;AAAA,IAC1C,OAAO;AAAA;AAAA,SAEK,YAAY,GAAmB;AAAA,IAC3C,OAAO;AAAA;AAEX;AAEA,cAAa,aAAa,iBAAiB;AAOpC,IAAM,gBAAgB,OAAO,OAA+B,WAAgC;AAAA,EACjG,OAAO,IAAI,kBAAkB,OAAO,MAAM,EAAE,IAAI;AAAA;AAalD,UAAS,UAAU,gBAAgB,gBAAe,iBAAiB;;AC1FnE,2BAAS,iCAAoC,2BAAc;AAK3D,IAAM,sBAAsB;AAAA,EAC1B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AACf;AAEA,IAAM,eAAc,mBAAmB,UAAU,0BAA0B,CAAC;AAErE,IAAM,4BAA4B;AAAA,EACvC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,OAAO;AAAA,IACP,QAAQ,mBAAmB;AAAA,MACzB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf,CAAC;AAAA,IACD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,MACT,cAAc;AAAA,IAChB;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,MACT,cAAc;AAAA,IAChB;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,MACT,cAAc;AAAA,IAChB;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,MACT,cAAc;AAAA,IAChB;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,MACT,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EACA,UAAU,CAAC,SAAS,QAAQ;AAAA,EAC5B,sBAAsB;AACxB;AAEO,IAAM,6BAA6B;AAAA,EACxC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,MAAM;AAAA,MACJ,OAAO,CAAC,qBAAqB,EAAE,MAAM,SAAS,OAAO,oBAAoB,CAAC;AAAA,MAC1E,OAAO,oBAAoB;AAAA,MAC3B,aAAa,oBAAoB;AAAA,IACnC;AAAA,EACF;AAAA,EACA,UAAU,CAAC,MAAM;AAAA,EACjB,sBAAsB;AACxB;AAAA;AAKO,MAAM,2BAA2B,OAItC;AAAA,SACc,OAAO;AAAA,SACP,WAAW;AAAA,SACX,QAAQ;AAAA,SACR,cACZ;AAAA,SACY,WAAW,GAAmB;AAAA,IAC1C,OAAO;AAAA;AAAA,SAEK,YAAY,GAAmB;AAAA,IAC3C,OAAO;AAAA;AAEX;AAEA,cAAa,aAAa,kBAAkB;AAIrC,IAAM,iBAAiB,CAAC,OAAgC,WAAgC;AAAA,EAC7F,OAAO,IAAI,mBAAmB,OAAO,MAAM,EAAE,IAAI;AAAA;AAanD,UAAS,UAAU,iBAAiB,gBAAe,kBAAkB;;ACvHrE,2BAAS,iCAAoC,2BAAc;AAK3D,IAAM,gBAAgB;AAAA,EACpB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AACf;AAEA,IAAM,iBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AACf;AAEA,IAAM,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AACf;AAEA,IAAM,eAAc,mBAAmB,UAAU,8BAA8B,CAAC;AAEzE,IAAM,gCAAgC;AAAA,EAC3C,MAAM;AAAA,EACN,YAAY;AAAA,IACV,SAAS,mBAAmB,aAAa;AAAA,IACzC,UAAU,mBAAmB,cAAc;AAAA,IAC3C,OAAO;AAAA,EACT;AAAA,EACA,UAAU,CAAC,WAAW,YAAY,OAAO;AAAA,EACzC,sBAAsB;AACxB;AAEO,IAAM,iCAAiC;AAAA,EAC5C,MAAM;AAAA,EACN,YAAY;AAAA,IACV,MAAM;AAAA,MACJ,OAAO,CAAC,YAAY,EAAE,MAAM,SAAS,OAAO,WAAW,CAAC;AAAA,MACxD,OAAO,WAAW;AAAA,MAClB,aAAa,WAAW;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,UAAU,CAAC,MAAM;AAAA,EACjB,sBAAsB;AACxB;AAAA;AAQO,MAAM,+BAA+B,OAI1C;AAAA,SACc,OAAO;AAAA,SACP,WAAW;AAAA,SACX,QAAQ;AAAA,SACR,cAAc;AAAA,SACd,WAAW,GAAmB;AAAA,IAC1C,OAAO;AAAA;AAAA,SAEK,YAAY,GAAmB;AAAA,IAC3C,OAAO;AAAA;AAEX;AAEA,cAAa,aAAa,sBAAsB;AAQzC,IAAM,qBAAqB,CAChC,OACA,WACG;AAAA,EACH,OAAO,IAAI,uBAAuB,OAAO,MAAM,EAAE,IAAI;AAAA;AAavD,UAAS,UAAU,qBAAqB,gBAAe,sBAAsB;;ACjG7E,2BAAS,iCAAoC,2BAAc;AAK3D,IAAM,eAAc,mBAAmB,UAAU,wBAAwB,CAAC;AAEnE,IAAM,0BAA0B;AAAA,EACrC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,MAAM,mBAAmB;AAAA,MACvB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf,CAAC;AAAA,IACD,QAAQ,mBAAmB;AAAA,MACzB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf,CAAC;AAAA,IACD,OAAO;AAAA,EACT;AAAA,EACA,UAAU,CAAC,QAAQ,UAAU,OAAO;AAAA,EACpC,sBAAsB;AACxB;AAEO,IAAM,2BAA2B;AAAA,EACtC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,UAAU,CAAC,MAAM;AAAA,EACjB,sBAAsB;AACxB;AAAA;AAQO,MAAM,yBAAyB,OAAsD;AAAA,SAC5E,OAAO;AAAA,SACP,WAAW;AAAA,SACX,QAAQ;AAAA,SACR,cAAc;AAAA,SACd,WAAW,GAAmB;AAAA,IAC1C,OAAO;AAAA;AAAA,SAEK,YAAY,GAAmB;AAAA,IAC3C,OAAO;AAAA;AAEX;AAEA,cAAa,aAAa,gBAAgB;AAQnC,IAAM,eAAe,CAAC,OAA8B,WAAgC;AAAA,EACzF,OAAO,IAAI,iBAAiB,OAAO,MAAM,EAAE,IAAI;AAAA;AASjD,UAAS,UAAU,eAAe,gBAAe,gBAAgB;;AC5EjE,2BAAS,iCAAoC,2BAAc;AAK3D,IAAM,eAAc,mBAAmB,UAAU,uBAAuB,CAAC;AAElE,IAAM,yBAAyB;AAAA,EACpC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,MAAM,mBAAmB;AAAA,MACvB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf,CAAC;AAAA,IACD,OAAO;AAAA,EACT;AAAA,EACA,UAAU,CAAC,QAAQ,OAAO;AAAA,EAC1B,sBAAsB;AACxB;AAEO,IAAM,0BAA0B;AAAA,EACrC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,UAAU,CAAC,MAAM;AAAA,EACjB,sBAAsB;AACxB;AAAA;AASO,MAAM,wBAAwB,OAAoD;AAAA,SACzE,OAAO;AAAA,SACP,WAAW;AAAA,SACX,QAAQ;AAAA,SACR,cACZ;AAAA,SACY,WAAW,GAAmB;AAAA,IAC1C,OAAO;AAAA;AAAA,SAEK,YAAY,GAAmB;AAAA,IAC3C,OAAO;AAAA;AAEX;AAEA,cAAa,aAAa,eAAe;AAQlC,IAAM,cAAc,OAAO,OAA6B,WAAgC;AAAA,EAC7F,OAAO,IAAI,gBAAgB,OAAO,MAAM,EAAE,IAAI;AAAA;AAShD,UAAS,UAAU,cAAc,gBAAe,eAAe;;ACzE/D,2BAAS,iCAAoC,2BAAc;AAK3D,IAAM,eAAc,mBAAmB,UAAU,2BAA2B,CAAC;AAE7E,IAAM,wBAAwB;AAAA,EAC5B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AACf;AAEO,IAAM,6BAA6B;AAAA,EACxC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,MAAM,mBAAmB;AAAA,MACvB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf,CAAC;AAAA,IACD,aAAa,mBACX,aAAa;AAAA,MACX,OAAO;AAAA,MACP,aAAa;AAAA,IACf,CAAC,CACH;AAAA,IACA,aAAa,mBACX,aAAa;AAAA,MACX,OAAO;AAAA,MACP,aAAa;AAAA,IACf,CAAC,CACH;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,UAAU,CAAC,QAAQ,eAAe,eAAe,OAAO;AAAA,EACxD,sBAAsB;AACxB;AAEO,IAAM,8BAA8B;AAAA,EACzC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,MAAM;AAAA,MACJ,OAAO,CAAC,uBAAuB,EAAE,MAAM,SAAS,OAAO,sBAAsB,CAAC;AAAA,MAC9E,OAAO,sBAAsB;AAAA,MAC7B,aAAa,sBAAsB;AAAA,IACrC;AAAA,IACA,aAAa,aAAa;AAAA,MACxB,OAAO;AAAA,MACP,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACA,UAAU,CAAC,QAAQ,aAAa;AAAA,EAChC,sBAAsB;AACxB;AAAA;AAQO,MAAM,4BAA4B,OAGvC;AAAA,SACc,OAAO;AAAA,SACP,WAAW;AAAA,SACX,QAAQ;AAAA,SACR,cAAc;AAAA,SACd,WAAW,GAAmB;AAAA,IAC1C,OAAO;AAAA;AAAA,SAEK,YAAY,GAAmB;AAAA,IAC3C,OAAO;AAAA;AAEX;AAEA,cAAa,aAAa,mBAAmB;AAQtC,IAAM,kBAAkB,CAAC,OAAiC,WAAgC;AAAA,EAC/F,OAAO,IAAI,oBAAoB,OAAO,MAAM,EAAE,IAAI;AAAA;AAapD,UAAS,UAAU,kBAAkB,gBAAe,mBAAmB;;ACpGvE;AAAA;AAAA,oBAEI;AAAA;AAAA,kBAGA;AAAA,cACA;AAAA;AAKG,IAAM,eAAe;AAAA,EAC1B,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AACX;AAIA,IAAM,wBAAwB;AAAA,EAC5B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,OAAO,iBAAiB;AAAA,MACtB,OAAO;AAAA,MACP,aAAa;AAAA,IACf,CAAC;AAAA,IACD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,iBAAiB;AAAA,QACtB,OAAO;AAAA,QACP,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,MAAM,OAAO,OAAO,YAAY;AAAA,MAChC,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS,aAAa;AAAA,IACxB;AAAA,EACF;AAAA,EACA,UAAU,CAAC,SAAS,SAAS,YAAY;AAAA,EACzC,sBAAsB;AACxB;AAEA,IAAM,yBAAyB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO,iBAAiB;AAAA,QACtB,OAAO;AAAA,QACP,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU,CAAC,UAAU,OAAO;AAAA,EAC5B,sBAAsB;AACxB;AAAA;AAWO,MAAM,6BAA6B,UAIxC;AAAA,SACgB,OAAO;AAAA,SACP,WAAW;AAAA,SACX,QAAQ;AAAA,SACV,cACZ;AAAA,SACc,YAAY;AAAA,SAEL,WAAW,GAAmB;AAAA,IACnD,OAAO;AAAA;AAAA,SAEc,YAAY,GAAmB;AAAA,IACpD,OAAO;AAAA;AAAA,OAIH,gBAAe,GACjB,OAAO,OAAO,YAAY,QAC5B,WACA;AAAA,IACA,IAAI,eAAe,CAAC;AAAA,IACpB,MAAM,MAAM,EAAE,OAAO;AAAA,IACrB,MAAM,SAAS;AAAA,IACf,MAAM,KAAK,IAAI;AAAA,IAEf,WAAW,aAAa,OAAO;AAAA,MAC7B,aAAa,KAAK;AAAA,QAChB,YAAY,GAAG,WAAW,KAAK;AAAA,QAC/B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,eAAe,aAAa,KAAK,CAAC,GAAG,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;AAAA,IAErF,MAAM,UAAU,aAAa,IAAI,CAAC,MAAM,EAAE,SAAS;AAAA,IACnD,MAAM,SAAS,aAAa,IAAI,CAAC,MAAM,EAAE,UAAU;AAAA,IACnD,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA;AAEJ;AAEA,cAAa,aAAa,oBAAoB;AAEvC,IAAM,aAAa,CAAC,OAAkC,WAAgC;AAAA,EAC3F,OAAO,IAAI,qBAAqB,OAAO,MAAM,EAAE,IAAI;AAAA;AAarD,UAAS,UAAU,aAAa,gBAAe,oBAAoB;AAI5D,SAAS,KAAK,CAAC,MAAkB,MAA0B;AAAA,EAEhE,OAAO,IAAI,KAAK,OAAO,CAAC,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,IAAI,CAAC;AAAA;AAGzD,SAAS,SAAS,CAAC,KAAiB;AAAA,EAEzC,OAAO,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,QAAQ,MAAM,MAAM,KAAK,CAAC,CAAC;AAAA;AAG/D,SAAS,MAAM,CAAC,MAAkB,MAAkB;AAAA,EAClD,MAAM,aAAa,MAAM,MAAM,IAAI;AAAA,EACnC,MAAM,aAAa,UAAU,IAAI;AAAA,EACjC,MAAM,aAAa,UAAU,IAAI;AAAA,EACjC,OAAO,IAAI,cAAc,aAAa;AAAA;AAGjC,SAAS,SAAS,CAAC,QAAgC;AAAA,EACxD,MAAM,MAAM,UAAU,MAAM;AAAA,EAE5B,IAAI,QAAQ,GAAG;AAAA,IACb,MAAM,IAAI,UAAU,iCAAiC;AAAA,EACvD;AAAA,EAEA,MAAM,aAAa,OAAO,IAAI,CAAC,QAAQ,OAAO,GAAG,IAAI,GAAG;AAAA,EAExD,IAAI,kBAAkB,cAAc;AAAA,IAClC,OAAO,IAAI,aAAa,UAAU;AAAA,EACpC;AAAA,EACA,IAAI,kBAAkB,cAAc;AAAA,IAClC,OAAO,IAAI,aAAa,UAAU;AAAA,EACpC;AAAA,EAEA,OAAO,IAAI,aAAa,UAAU;AAAA;;ACvLpC;AAaO,MAAM,iCAAiC,gBAAgB;AAAA,EAC5D;AAAA,EAIA;AAAA,EAIO,OAAO;AAAA,EAEd,WAAW,CAAC,cAAsB,UAAU,mBAA2B,eAAe;AAAA,IACpF,MAAM;AAAA,IACN,KAAK,yBAAyB,IAAI,2BAChC,aACA,aACA,oBACF;AAAA,IACA,KAAK,8BAA8B,IAAI,2BACrC,kBACA,kBACA,2BACA,CAAC,OAAO,CACV;AAAA;AAEJ;",
28
- "debugId": "CB10B0DB935086A564756E2164756E21",
27
+ "mappings": "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",
28
+ "debugId": "CC4CA70F5A3D687D64756E2164756E21",
29
29
  "names": []
30
30
  }
package/dist/bun.js CHANGED
@@ -476,25 +476,29 @@ class AiTask extends JobQueueTask {
476
476
  config.name ||= `${new.target.type || new.target.name}${input.model ? " with model " + input.model : ""}`;
477
477
  super(input, config);
478
478
  }
479
- async createJob(input, queue) {
479
+ async getJobInput(input) {
480
480
  if (typeof input.model !== "string") {
481
481
  console.error("AiTask: Model is not a string", input);
482
482
  throw new TaskConfigurationError("AiTask: Model is not a string, only create job for single model tasks");
483
483
  }
484
484
  const runtype = this.constructor.runtype ?? this.constructor.type;
485
485
  const model = await this.getModelForInput(input);
486
- const queueName = queue?.queueName ?? await this.getDefaultQueueName(input);
487
- if (!queueName) {
486
+ return {
487
+ taskType: runtype,
488
+ aiProvider: model.provider,
489
+ taskInput: input
490
+ };
491
+ }
492
+ async createJob(input, queueName) {
493
+ const jobInput = await this.getJobInput(input);
494
+ const resolvedQueueName = queueName ?? await this.getDefaultQueueName(input);
495
+ if (!resolvedQueueName) {
488
496
  throw new TaskConfigurationError("JobQueueTask: Unable to determine queue for AI provider");
489
497
  }
490
498
  const job = new AiJob({
491
- queueName,
499
+ queueName: resolvedQueueName,
492
500
  jobRunId: this.config.runnerId,
493
- input: {
494
- taskType: runtype,
495
- aiProvider: model.provider,
496
- taskInput: input
497
- }
501
+ input: jobInput
498
502
  });
499
503
  return job;
500
504
  }
@@ -1118,11 +1122,15 @@ var TextTranslationInputSchema = {
1118
1122
  }),
1119
1123
  source_lang: TypeReplicateArray(TypeLanguage({
1120
1124
  title: "Source Language",
1121
- description: "The source language"
1125
+ description: "The source language",
1126
+ minLength: 2,
1127
+ maxLength: 2
1122
1128
  })),
1123
1129
  target_lang: TypeReplicateArray(TypeLanguage({
1124
1130
  title: "Target Language",
1125
- description: "The target language"
1131
+ description: "The target language",
1132
+ minLength: 2,
1133
+ maxLength: 2
1126
1134
  })),
1127
1135
  model: modelSchema7
1128
1136
  },
@@ -1139,7 +1147,9 @@ var TextTranslationOutputSchema = {
1139
1147
  },
1140
1148
  target_lang: TypeLanguage({
1141
1149
  title: "Output Language",
1142
- description: "The output language"
1150
+ description: "The output language",
1151
+ minLength: 2,
1152
+ maxLength: 2
1143
1153
  })
1144
1154
  },
1145
1155
  required: ["text", "target_lang"],
@@ -1395,4 +1405,4 @@ export {
1395
1405
  AiJob
1396
1406
  };
1397
1407
 
1398
- //# debugId=C9DF1A7796A4AD4564756E2164756E21
1408
+ //# debugId=BF725C7ECD7DD0B964756E2164756E21