zinkee 0.1.47 → 0.1.49

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.
@@ -51,8 +51,11 @@ function printTable(rows, keys, writer) {
51
51
  }
52
52
 
53
53
  // src/client.ts
54
+ import { createRequire as createRequire2 } from "module";
54
55
  import { Readable, Transform } from "stream";
55
56
  import { pipeline } from "stream/promises";
57
+ var require3 = createRequire2(import.meta.url);
58
+ var { version } = require3("../package.json");
56
59
  var ApiClientError = class extends Error {
57
60
  name = "ApiClientError";
58
61
  code;
@@ -166,6 +169,7 @@ var ApiClient = class {
166
169
  const url = this.buildUrl(path);
167
170
  const method = init.method ?? "GET";
168
171
  const headers = new Headers(init.headers);
172
+ headers.set("user-agent", `zinkee-cli/${version}`);
169
173
  if (accept && !headers.has("accept")) {
170
174
  headers.set("accept", accept);
171
175
  }
@@ -1258,4 +1262,4 @@ export {
1258
1262
  buildSchemaFieldCreateHelpText,
1259
1263
  buildSchemaFieldCreateValidationMessage
1260
1264
  };
1261
- //# sourceMappingURL=chunk-Z7L7HPYZ.js.map
1265
+ //# sourceMappingURL=chunk-IEW5RTJV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/output.ts","../src/client.ts","../src/utils/errors.ts","../src/utils/schema-fields.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\n\nimport type {\n JsonEnvelopeMeta,\n JsonErrorEnvelope,\n JsonSuccessEnvelope,\n} from \"../types.js\";\n\nconst require = createRequire(import.meta.url);\n\nexport interface OutputWriter {\n write(chunk: string): unknown;\n}\n\nfunction stringifyCellValue(value: unknown): string {\n if (value === null || value === undefined) {\n return \"\";\n }\n\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"bigint\") {\n return String(value);\n }\n\n return JSON.stringify(value);\n}\n\nexport function buildJsonSuccess<TData, TMeta extends JsonEnvelopeMeta = JsonEnvelopeMeta>(\n data: TData,\n meta: TMeta = {} as TMeta,\n): JsonSuccessEnvelope<TData, TMeta> {\n return { data, meta };\n}\n\nexport function buildJsonError<TErr, TMeta extends JsonEnvelopeMeta = JsonEnvelopeMeta>(\n error: TErr,\n meta: TMeta = {} as TMeta,\n): JsonErrorEnvelope<TErr, TMeta> {\n return { error, meta };\n}\n\nexport interface FolderLocation {\n id?: string;\n name?: string | null;\n isRoot?: boolean;\n}\n\n/** Column keys, in order, produced by {@link folderColumns}. Append them to a table's key list. */\nexport const FOLDER_TABLE_KEYS = [\"folderId\", \"folderName\", \"folderIsRoot\"] as const;\n\n/**\n * Flattens the API `folder` object (`{ id, name, isRoot }`) into the folderId/folderName/folderIsRoot table columns.\n * The root folder arrives with a null name, so folderName renders it as \"(root)\". A missing folder (e.g. a workspace\n * without a default group) leaves every column empty.\n */\nexport function folderColumns(folder: FolderLocation | null | undefined): {\n folderId: string;\n folderName: string;\n folderIsRoot: string;\n} {\n if (!folder) {\n return { folderId: \"\", folderName: \"\", folderIsRoot: \"\" };\n }\n\n return {\n folderId: folder.id ?? \"\",\n folderName: folder.name ?? (folder.isRoot === true ? \"(root)\" : \"\"),\n folderIsRoot: folder.isRoot === undefined ? \"\" : String(folder.isRoot),\n };\n}\n\nexport function printTable(\n rows: readonly Record<string, unknown>[],\n keys?: readonly string[],\n writer?: OutputWriter,\n): void {\n const output = writer ?? process.stdout;\n const firstRow = rows[0];\n\n if (!firstRow) {\n output.write(\"No results.\\n\");\n return;\n }\n\n const headings = [...(keys ?? Object.keys(firstRow))];\n const Table = require(\"cli-table3\") as typeof import(\"cli-table3\");\n const table = new Table({\n head: headings,\n wordWrap: true,\n });\n\n for (const row of rows) {\n table.push(headings.map((heading) => stringifyCellValue(row[heading])));\n }\n\n output.write(`${table.toString()}\\n`);\n}\n","import { createRequire } from \"node:module\";\nimport { Readable, Transform, type Writable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\n\nconst require = createRequire(import.meta.url);\nconst { version } = require(\"../package.json\") as { version: string };\n\nexport interface ApiClientOptions {\n baseUrl: string;\n apiKey?: string;\n timeoutMs?: number;\n fetch?: typeof fetch;\n}\n\nexport type ApiClientErrorCode =\n | \"network_error\"\n | \"http_error\"\n | \"timeout\"\n | \"invalid_json\";\n\nexport interface ApiClientErrorDetails {\n url: string;\n method: string;\n status?: number;\n responseBody?: unknown;\n responseText?: string;\n cause?: unknown;\n}\n\nexport class ApiClientError extends Error {\n override name = \"ApiClientError\";\n\n readonly code: ApiClientErrorCode;\n\n readonly url: string;\n\n readonly method: string;\n\n readonly status?: number;\n\n readonly responseBody?: unknown;\n\n readonly responseText?: string;\n\n override readonly cause?: unknown;\n\n constructor(\n code: ApiClientErrorCode,\n message: string,\n details: ApiClientErrorDetails,\n ) {\n super(message);\n this.code = code;\n this.url = details.url;\n this.method = details.method;\n this.status = details.status;\n this.responseBody = details.responseBody;\n this.responseText = details.responseText;\n this.cause = details.cause;\n }\n}\n\nexport interface ApiRequestOptions extends RequestInit {\n timeoutMs?: number;\n}\n\nfunction isJsonContentType(contentType: string | null): boolean {\n return contentType ? /(^|\\/|\\+)json\\b/i.test(contentType) : false;\n}\n\nfunction looksLikeJson(text: string): boolean {\n const trimmed = text.trim();\n\n return (\n trimmed.startsWith(\"{\") ||\n trimmed.startsWith(\"[\") ||\n trimmed === \"null\" ||\n trimmed === \"true\" ||\n trimmed === \"false\" ||\n /^-?(0|[1-9]\\d*)(\\.\\d+)?([eE][+-]?\\d+)?$/.test(trimmed) ||\n trimmed.startsWith('\"')\n );\n}\n\nfunction parseJsonBody<T>(text: string, url: string, method: string): T {\n const trimmed = text.trim();\n\n if (trimmed.length === 0) {\n return undefined as T;\n }\n\n try {\n return JSON.parse(trimmed) as T;\n } catch (cause) {\n throw new ApiClientError(\"invalid_json\", `Failed to parse JSON response from ${method} ${url}.`, {\n url,\n method,\n responseText: text,\n cause,\n });\n }\n}\n\nfunction parseErrorBody(text: string, contentType: string | null): unknown {\n if (text.trim().length === 0) {\n return undefined;\n }\n\n if (!isJsonContentType(contentType) && !looksLikeJson(text)) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction summarizeNetworkCause(cause: unknown): string | undefined {\n const seen = new Set<unknown>();\n let current: unknown = cause;\n\n while (current && typeof current === \"object\" && !seen.has(current)) {\n seen.add(current);\n\n const candidate = current as { message?: unknown; code?: unknown; cause?: unknown };\n const message = typeof candidate.message === \"string\" ? candidate.message.trim() : \"\";\n const code = typeof candidate.code === \"string\" ? candidate.code : undefined;\n\n if (message && message !== \"fetch failed\") {\n return code && !message.includes(code) ? `${message} (${code})` : message;\n }\n\n current = candidate.cause;\n }\n\n return undefined;\n}\n\nexport class ApiClient {\n private readonly fetchImpl: typeof fetch;\n\n constructor(private readonly options: ApiClientOptions) {\n this.fetchImpl = options.fetch ?? fetch;\n }\n\n getJson<T>(path: string, init: ApiRequestOptions = {}): Promise<T> {\n return this.requestJson<T>(path, { ...init, method: \"GET\" });\n }\n\n requestJson<T>(path: string, init: ApiRequestOptions = {}): Promise<T> {\n return this.request(\n path,\n init,\n async (response, url) => {\n const text = await response.text();\n return parseJsonBody<T>(text, url, init.method ?? \"GET\");\n },\n \"application/json\",\n );\n }\n\n download(\n path: string,\n destination: Writable,\n init: ApiRequestOptions = {},\n ): Promise<number> {\n return this.request(path, init, async (response, _url, signal) => {\n let bytes = 0;\n const counter = new Transform({\n transform(chunk: Buffer, _encoding, callback) {\n bytes += chunk.length;\n callback(null, chunk);\n },\n });\n const source = response.body\n ? Readable.fromWeb(response.body as Parameters<typeof Readable.fromWeb>[0])\n : Readable.from([]);\n\n await pipeline(source, counter, destination, { signal });\n return bytes;\n });\n }\n\n private buildUrl(path: string): string {\n const normalizedPath = path.startsWith(\"/\") ? path : `/${path}`;\n\n return new URL(normalizedPath, this.options.baseUrl).toString();\n }\n\n private async request<T>(\n path: string,\n init: ApiRequestOptions,\n consume: (response: Response, url: string, signal: AbortSignal) => Promise<T>,\n accept?: string,\n ): Promise<T> {\n const url = this.buildUrl(path);\n const method = init.method ?? \"GET\";\n const headers = new Headers(init.headers);\n headers.set(\"user-agent\", `zinkee-cli/${version}`);\n\n if (accept && !headers.has(\"accept\")) {\n headers.set(\"accept\", accept);\n }\n\n if (this.options.apiKey && !headers.has(\"authorization\")) {\n headers.set(\"authorization\", `Bearer ${this.options.apiKey}`);\n }\n\n const controller = new AbortController();\n const timeoutMs = init.timeoutMs ?? this.options.timeoutMs;\n let timedOut = false;\n let timeoutHandle: ReturnType<typeof setTimeout> | undefined;\n\n const abortListener = (): void => {\n controller.abort(init.signal?.reason);\n };\n\n if (init.signal) {\n if (init.signal.aborted) {\n controller.abort(init.signal.reason);\n } else {\n init.signal.addEventListener(\"abort\", abortListener, { once: true });\n }\n }\n\n if (timeoutMs !== undefined) {\n timeoutHandle = setTimeout(() => {\n if (!controller.signal.aborted) {\n timedOut = true;\n controller.abort();\n }\n }, timeoutMs);\n }\n\n try {\n controller.signal.throwIfAborted();\n const response = await this.fetchImpl(url, {\n ...init,\n headers,\n signal: controller.signal,\n });\n const responseUrl = response.url || url;\n\n if (!response.ok) {\n const text = await response.text();\n throw this.buildHttpError(response, text, init, responseUrl);\n }\n\n return await consume(response, responseUrl, controller.signal);\n } catch (cause) {\n if (cause instanceof ApiClientError) {\n throw cause;\n }\n\n if (timedOut) {\n throw new ApiClientError(\"timeout\", `Request timed out after ${timeoutMs}ms.`, {\n url,\n method,\n cause,\n });\n }\n\n const causeSummary = summarizeNetworkCause(cause);\n const message = causeSummary\n ? `Request failed for ${method} ${url}: ${causeSummary}.`\n : `Request failed for ${method} ${url}.`;\n\n throw new ApiClientError(\"network_error\", message, {\n url,\n method,\n cause,\n });\n } finally {\n if (timeoutHandle !== undefined) {\n clearTimeout(timeoutHandle);\n }\n\n if (init.signal) {\n init.signal.removeEventListener(\"abort\", abortListener);\n }\n }\n }\n\n private buildHttpError(\n response: Response,\n text: string,\n init: ApiRequestOptions,\n url: string,\n ): ApiClientError {\n const method = init.method ?? \"GET\";\n const responseBody = parseErrorBody(text, response.headers.get(\"content-type\"));\n\n return new ApiClientError(\n \"http_error\",\n `Request failed with status ${response.status} for ${method} ${url}.`,\n {\n url,\n method,\n status: response.status,\n responseBody,\n responseText: responseBody === text ? text : undefined,\n },\n );\n }\n}\n","import { ApiClientError } from \"../client.js\";\nimport type { JsonEnvelopeMeta, JsonErrorEnvelope } from \"../types.js\";\n\nimport { buildJsonError } from \"./output.js\";\n\nexport type CliErrorCode =\n | \"unknown_error\"\n | \"invalid_cli_usage\"\n | \"configuration_error\"\n | \"command_not_allowed_in_read_only_mode\"\n | \"network_error\"\n | \"http_error\"\n | \"timeout\"\n | \"invalid_json\";\n\nexport const cliExitCodeByErrorCode = {\n unknown_error: 1,\n invalid_cli_usage: 2,\n configuration_error: 2,\n command_not_allowed_in_read_only_mode: 7,\n network_error: 1,\n http_error: 1,\n timeout: 1,\n invalid_json: 1,\n} as const satisfies Record<CliErrorCode, number>;\n\nexport interface CliErrorDetails {\n [key: string]: unknown;\n}\n\nexport interface CliErrorPayload {\n code: CliErrorCode;\n message: string;\n exitCode: number;\n details?: CliErrorDetails;\n}\n\nconst errorCodeByName: Record<string, CliErrorCode> = {\n ProfileResolutionError: \"configuration_error\",\n};\n\nexport class CliError extends Error {\n override name = \"CliError\";\n\n readonly code: CliErrorCode;\n\n readonly exitCode: number;\n\n readonly details?: CliErrorDetails;\n\n constructor(\n code: CliErrorCode,\n message: string,\n details: CliErrorDetails = {},\n exitCode: number = cliExitCodeByErrorCode[code],\n ) {\n super(message);\n this.code = code;\n this.exitCode = exitCode;\n\n if (Object.keys(details).length > 0) {\n this.details = details;\n }\n }\n\n toJSON(): CliErrorPayload {\n const payload: CliErrorPayload = {\n code: this.code,\n message: this.message,\n exitCode: this.exitCode,\n };\n\n if (this.details) {\n payload.details = this.details;\n }\n\n return payload;\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction readString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value : undefined;\n}\n\nfunction readNumber(value: unknown): number | undefined {\n return typeof value === \"number\" ? value : undefined;\n}\n\nfunction extractApiErrorDetails(error: ApiClientError): {\n message: string;\n details: CliErrorDetails;\n meta: JsonEnvelopeMeta;\n} {\n const details: CliErrorDetails = {};\n const meta: JsonEnvelopeMeta = {};\n const responseBody = isRecord(error.responseBody) ? error.responseBody : undefined;\n const errorBody = responseBody?.error;\n const backendError = isRecord(errorBody) ? errorBody : responseBody;\n const backendMeta = isRecord(responseBody?.meta) ? responseBody.meta : undefined;\n const reason =\n readString(backendError?.reason) ??\n readString(backendError?.code);\n const action = readString(backendError?.action);\n const requestId =\n readString(backendMeta?.requestId) ??\n readString(responseBody?.requestId) ??\n readString(backendError?.requestId);\n const status =\n readNumber(backendError?.status) ??\n readNumber(responseBody?.status) ??\n error.status;\n const backendMessage = readString(backendError?.message);\n\n if (reason !== undefined) {\n details.reason = reason;\n }\n\n if (action !== undefined) {\n details.action = action;\n }\n\n if (requestId !== undefined) {\n details.requestId = requestId;\n meta.requestId = requestId;\n }\n\n if (status !== undefined) {\n details.status = status;\n meta.status = status;\n }\n\n return {\n message: backendMessage ?? error.message,\n details,\n meta,\n };\n}\n\nexport function toCliError(error: unknown): CliError {\n if (error instanceof CliError) {\n return error;\n }\n\n if (error instanceof ApiClientError) {\n const apiError = extractApiErrorDetails(error);\n\n return new CliError(error.code, apiError.message, apiError.details);\n }\n\n if (error instanceof Error) {\n return new CliError(errorCodeByName[error.name] ?? \"unknown_error\", error.message);\n }\n\n return new CliError(\"unknown_error\", \"Unknown error\");\n}\n\nexport function getExitCode(error: unknown): number {\n return toCliError(error).exitCode;\n}\n\nexport function buildJsonCliError<TMeta extends JsonEnvelopeMeta = JsonEnvelopeMeta>(\n error: unknown,\n meta: TMeta = {} as TMeta,\n): JsonErrorEnvelope<CliErrorPayload, TMeta> {\n const cliError = toCliError(error);\n const apiErrorMeta =\n error instanceof ApiClientError\n ? extractApiErrorDetails(error).meta\n : {};\n\n return buildJsonError(cliError.toJSON(), { ...apiErrorMeta, ...meta } as TMeta);\n}\n\nexport function formatCliErrorText(error: unknown): string {\n return toCliError(error).message;\n}\n\nexport function formatCliErrorJson<TMeta extends JsonEnvelopeMeta = JsonEnvelopeMeta>(\n error: unknown,\n meta: TMeta = {} as TMeta,\n): string {\n return JSON.stringify(buildJsonCliError(error, meta));\n}\n","import type { JsonObject } from \"../types.js\";\nimport { CliError } from \"./errors.js\";\n\nexport type SchemaFieldTypeKey =\n | \"text\"\n | \"number\"\n | \"date\"\n | \"option\"\n | \"file\"\n | \"reference\"\n | \"formula\"\n | \"member\"\n | \"autoincremental\"\n | \"schedule\";\n\nexport interface SchemaFieldExamplePayload {\n name: string;\n payload: JsonObject;\n}\n\nexport interface SchemaFieldTypeDefinition {\n key: SchemaFieldTypeKey;\n className: string;\n aliases: readonly string[];\n description: string;\n rawShape: string;\n examplePayloads: readonly SchemaFieldExamplePayload[];\n}\n\nfunction isJsonObject(value: unknown): value is JsonObject {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction toJsonObject(value: unknown): JsonObject | undefined {\n return isJsonObject(value) ? value : undefined;\n}\n\nfunction toStringValue(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value : undefined;\n}\n\nfunction toNumberValue(value: unknown): number | undefined {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === \"string\" && value.trim().length > 0) {\n const parsed = Number(value);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n\n return undefined;\n}\n\nconst fieldTypeDefinitions = [\n {\n key: \"text\",\n className: \"TextField\",\n aliases: [\"text\", \"TextField\"],\n description: \"Plain text field.\",\n rawShape:\n '{\"type\":\"TextField\",\"slug\":\"name\",\"label\":\"Name\",\"config\":{\"textType\":\"NORMAL\"}}',\n examplePayloads: [\n {\n name: \"Text field (normal)\",\n payload: {\n type: \"TextField\",\n slug: \"customer-name\",\n label: \"Customer Name\",\n required: true,\n config: {\n textType: \"NORMAL\",\n defaultValue: null,\n conditionalFormatting: [],\n },\n },\n },\n {\n name: \"Text field (long)\",\n payload: {\n type: \"TextField\",\n slug: \"customer-notes\",\n label: \"Customer Notes\",\n required: false,\n config: {\n textType: \"LONG\",\n defaultValue: \"Add internal notes here...\",\n conditionalFormatting: [],\n },\n },\n },\n ],\n },\n {\n key: \"number\",\n className: \"NumberField\",\n aliases: [\"number\", \"NumberField\"],\n description: \"Numeric field.\",\n rawShape:\n '{\"type\":\"NumberField\",\"slug\":\"quantity\",\"label\":\"Quantity\",\"config\":{\"defaultValue\":\"0\",\"formatOptions\":{\"format\":\"number\",\"decimals\":0,\"thousandsSeparator\":false}}}',\n examplePayloads: [\n {\n name: \"Number field (plain integer)\",\n payload: {\n type: \"NumberField\",\n slug: \"quantity\",\n label: \"Quantity\",\n required: false,\n config: {\n defaultValue: \"0\",\n formatOptions: {\n format: \"number\",\n decimals: 0,\n thousandsSeparator: false,\n },\n conditionalFormatting: [],\n },\n },\n },\n {\n name: \"Number field (decimal with thousands)\",\n payload: {\n type: \"NumberField\",\n slug: \"weight\",\n label: \"Weight (kg)\",\n required: false,\n config: {\n defaultValue: \"0\",\n formatOptions: {\n format: \"number\",\n decimals: 2,\n thousandsSeparator: true,\n negativesInRed: false,\n },\n conditionalFormatting: [],\n },\n },\n },\n {\n name: \"Number field (currency € prefix)\",\n payload: {\n type: \"NumberField\",\n slug: \"amount-eur\",\n label: \"Amount (EUR)\",\n required: false,\n config: {\n defaultValue: \"0\",\n formatOptions: {\n format: \"currency\",\n decimals: 2,\n negativesInRed: true,\n thousandsSeparator: true,\n symbolEnabled: true,\n symbolPosition: \"before\",\n symbolValue: \"€\",\n },\n conditionalFormatting: [],\n },\n },\n },\n {\n name: \"Number field (currency $ suffix)\",\n payload: {\n type: \"NumberField\",\n slug: \"amount-usd\",\n label: \"Amount (USD)\",\n required: false,\n config: {\n defaultValue: \"0\",\n formatOptions: {\n format: \"currency\",\n decimals: 2,\n negativesInRed: false,\n thousandsSeparator: true,\n symbolEnabled: true,\n symbolPosition: \"right\",\n symbolValue: \" $\",\n },\n conditionalFormatting: [],\n },\n },\n },\n {\n name: \"Number field (percentage)\",\n payload: {\n type: \"NumberField\",\n slug: \"discount-rate\",\n label: \"Discount Rate\",\n required: false,\n config: {\n defaultValue: \"0\",\n formatOptions: {\n format: \"percentage\",\n decimals: 1,\n negativesInRed: true,\n },\n conditionalFormatting: [],\n },\n },\n },\n {\n name: \"Number field (duration HH:MM)\",\n payload: {\n type: \"NumberField\",\n slug: \"tracked-time\",\n label: \"Tracked Time\",\n required: false,\n config: {\n defaultValue: \"0\",\n formatOptions: {\n format: \"duration\",\n durationFormat: \"HH:MM\",\n },\n conditionalFormatting: [],\n },\n },\n },\n ],\n },\n {\n key: \"date\",\n className: \"DateField\",\n aliases: [\"date\", \"DateField\"],\n description: \"Date or datetime field.\",\n rawShape:\n '{\"type\":\"DateField\",\"slug\":\"due-date\",\"label\":\"Due Date\",\"config\":{\"formatOptions\":{\"format\":\"date\",\"dateFormat\":\"YYYY-MM-DD\",\"showTime\":false}}}',\n examplePayloads: [\n {\n name: \"Date field (date only)\",\n payload: {\n type: \"DateField\",\n slug: \"birth-date\",\n label: \"Birth Date\",\n required: false,\n config: {\n defaultValue: null,\n formatOptions: {\n format: \"date\",\n dateFormat: \"YYYY-MM-DD\",\n showTime: false,\n },\n conditionalFormatting: [],\n },\n },\n },\n {\n name: \"Date field (datetime EU)\",\n payload: {\n type: \"DateField\",\n slug: \"due-date\",\n label: \"Due Date\",\n required: false,\n config: {\n defaultValue: null,\n formatOptions: {\n format: \"datetime\",\n dateFormat: \"DD/MM/YYYY\",\n showTime: true,\n },\n conditionalFormatting: [],\n },\n },\n },\n {\n name: \"Date field (datetime US)\",\n payload: {\n type: \"DateField\",\n slug: \"appointment-at\",\n label: \"Appointment\",\n required: false,\n config: {\n defaultValue: null,\n formatOptions: {\n format: \"datetime\",\n dateFormat: \"MM/DD/YYYY\",\n showTime: true,\n },\n conditionalFormatting: [],\n },\n },\n },\n ],\n },\n {\n key: \"option\",\n className: \"OptionField\",\n aliases: [\"option\", \"OptionField\"],\n description: \"Dropdown/select field with options.\",\n rawShape:\n '{\"type\":\"OptionField\",\"slug\":\"status\",\"label\":\"Status\",\"config\":{\"options\":[{\"id\":1,\"name\":\"Open\",\"color\":\"default\"},{\"id\":2,\"name\":\"Closed\",\"color\":\"success\"}]}}',\n examplePayloads: [\n {\n name: \"Option field (select dropdown)\",\n payload: {\n type: \"OptionField\",\n slug: \"priority\",\n label: \"Priority\",\n required: false,\n config: {\n options: [\n { id: 1, name: \"Low\", color: \"default\" },\n { id: 2, name: \"Medium\", color: \"warning\" },\n { id: 3, name: \"High\", color: \"cond-critico\" },\n ],\n defaultValue: 1,\n conditionalFormatting: [],\n buttonConfig: null,\n },\n },\n },\n {\n name: \"Option field (button cycle)\",\n payload: {\n type: \"OptionField\",\n slug: \"stage\",\n label: \"Stage\",\n required: false,\n config: {\n options: [\n { id: 1, name: \"To Do\", color: \"default\" },\n { id: 2, name: \"Doing\", color: \"warning\" },\n { id: 3, name: \"Done\", color: \"success\" },\n ],\n defaultValue: 1,\n conditionalFormatting: [],\n buttonConfig: {\n displayMode: \"button\",\n buttonBehavior: {\n mode: \"cycle\",\n cycleOrder: [1, 2, 3],\n requireConfirmation: false,\n lockAfterSelection: false,\n allowReselect: true,\n },\n },\n },\n },\n },\n {\n name: \"Option field (button dropdown w/ confirm)\",\n payload: {\n type: \"OptionField\",\n slug: \"status\",\n label: \"Status\",\n required: false,\n config: {\n options: [\n { id: 1, name: \"Open\", color: \"default\" },\n { id: 2, name: \"In Progress\", color: \"warning\" },\n { id: 3, name: \"Done\", color: \"success\" },\n ],\n defaultValue: 1,\n conditionalFormatting: [],\n buttonConfig: {\n displayMode: \"button\",\n buttonBehavior: {\n mode: \"dropdown\",\n requireConfirmation: true,\n confirmationMessage: \"Confirm status change\",\n useFixedLabel: true,\n buttonLabel: \"Set status\",\n allowReselect: true,\n },\n },\n },\n },\n },\n ],\n },\n {\n key: \"file\",\n className: \"FileField\",\n aliases: [\"file\", \"FileField\"],\n description: \"File attachment field.\",\n rawShape:\n '{\"type\":\"FileField\",\"slug\":\"attachment\",\"label\":\"Attachment\",\"config\":{}}',\n examplePayloads: [\n {\n name: \"File field\",\n payload: {\n type: \"FileField\",\n slug: \"attachment\",\n label: \"Attachment\",\n required: false,\n config: {},\n },\n },\n ],\n },\n {\n key: \"reference\",\n className: \"ReferenceField\",\n aliases: [\"reference\", \"ReferenceField\"],\n description: \"Reference to another schema.\",\n rawShape:\n '{\"type\":\"ReferenceField\",\"slug\":\"company-ref\",\"label\":\"Company\",\"config\":{\"targetSchema\":\"<schema-uuid>\",\"targetDisplayField\":\"<field-uuid>\"}}',\n examplePayloads: [\n {\n name: \"Reference field (minimal)\",\n payload: {\n type: \"ReferenceField\",\n slug: \"company-ref\",\n label: \"Company\",\n required: false,\n config: {\n targetSchema: \"5223cbc8-8c6c-4694-93bc-dd176364df9b\",\n targetDisplayField: \"c60b8526-5835-4c9f-aecd-9a16c7704a34\",\n },\n },\n },\n {\n name: \"Reference field (restrict + filter + description)\",\n payload: {\n type: \"ReferenceField\",\n slug: \"customer-ref\",\n label: \"Customer\",\n required: false,\n config: {\n targetSchema: \"5223cbc8-8c6c-4694-93bc-dd176364df9b\",\n targetDisplayField: \"c60b8526-5835-4c9f-aecd-9a16c7704a34\",\n deleteBehavior: \"RESTRICT\",\n defaultValue: \"CUST-12\",\n filterFields: [\n {\n fatherField: \"c60b8526-5835-4c9f-aecd-9a16c7704a34\",\n currentField: \"45c5da96-0dc2-4cc1-ba61-7660a9c6da32\",\n comparison: \"EQUAL\",\n value: null,\n },\n ],\n descriptionFields: [\n {\n id: \"c52efe3f-2825-4c60-a7e3-34dd4c1ce043\",\n fieldType: \"NumberField\",\n options: null,\n format: \"number\",\n },\n ],\n conditionalFormatting: [],\n },\n },\n },\n ],\n },\n {\n key: \"formula\",\n className: \"FormulaField\",\n aliases: [\"formula\", \"FormulaField\"],\n description: \"Calculated field from a formula.\",\n rawShape:\n '{\"type\":\"FormulaField\",\"slug\":\"formula-code\",\"label\":\"Formula Code\",\"config\":{\"formulaText\":\"concat(\\\\\"CUST-\\\\\", f1e1d000-0000-0000-0000-000000000005)\",\"uiFormatKind\":\"none\"}}',\n examplePayloads: [\n {\n name: \"Formula field (none)\",\n payload: {\n type: \"FormulaField\",\n slug: \"formula-code\",\n label: \"Formula Code\",\n required: false,\n config: {\n formulaText:\n 'concat(\"CUST-\", f1e1d000-0000-0000-0000-000000000005)',\n uiFormatKind: \"none\",\n status: \"ACTIVE\",\n conditionalFormatting: [],\n },\n },\n },\n {\n name: \"Formula field (number)\",\n payload: {\n type: \"FormulaField\",\n slug: \"formula-total\",\n label: \"Formula Total\",\n required: false,\n config: {\n formulaText: \"c52efe3f-2825-4c60-a7e3-34dd4c1ce043 * 1.21\",\n uiFormatKind: \"number\",\n status: \"ACTIVE\",\n numberFormatOptions: {\n format: \"number\",\n decimals: 2,\n thousandsSeparator: true,\n },\n conditionalFormatting: [],\n },\n },\n },\n {\n name: \"Formula field (date)\",\n payload: {\n type: \"FormulaField\",\n slug: \"formula-period\",\n label: \"Formula Period\",\n required: false,\n config: {\n formulaText:\n 'date_format(d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90, \"AAAA-MM\")',\n uiFormatKind: \"date\",\n status: \"ACTIVE\",\n dateFormatOptions: {\n format: \"date\",\n dateFormat: \"DD/MM/YYYY\",\n showTime: false,\n },\n conditionalFormatting: [],\n },\n },\n },\n {\n name: \"Formula field (member)\",\n payload: {\n type: \"FormulaField\",\n slug: \"formula-assignee\",\n label: \"Computed Assignee\",\n required: false,\n config: {\n formulaText: \"a7b8c9d0-e1f2-3a4b-5c6d-7e8f90123456\",\n uiFormatKind: \"member\",\n status: \"ACTIVE\",\n conditionalFormatting: [],\n },\n },\n },\n ],\n },\n {\n key: \"member\",\n className: \"MemberField\",\n aliases: [\"member\", \"MemberField\"],\n description: \"Workspace member field.\",\n rawShape:\n '{\"type\":\"MemberField\",\"slug\":\"owner\",\"label\":\"Owner\",\"config\":{\"defaultValue\":null}}',\n examplePayloads: [\n {\n name: \"Member field\",\n payload: {\n type: \"MemberField\",\n slug: \"owner\",\n label: \"Owner\",\n required: false,\n config: {\n defaultValue: null,\n conditionalFormatting: [],\n },\n },\n },\n ],\n },\n {\n key: \"autoincremental\",\n className: \"AutoIncrementalField\",\n aliases: [\n \"autoincremental\",\n \"auto-incremental\",\n \"auto_incremental\",\n \"AutoIncrementalField\",\n ],\n description: \"Auto-generated incremental counter.\",\n rawShape:\n '{\"type\":\"AutoIncrementalField\",\"slug\":\"order-number\",\"label\":\"Order Number\",\"config\":{\"segmentedByFieldId\":null}}',\n examplePayloads: [\n {\n name: \"Autoincremental (global counter)\",\n payload: {\n type: \"AutoIncrementalField\",\n slug: \"order-number\",\n label: \"Order Number\",\n required: false,\n config: {\n segmentedByFieldId: null,\n conditionalFormatting: [],\n },\n },\n },\n {\n name: \"Autoincremental (segmented)\",\n payload: {\n type: \"AutoIncrementalField\",\n slug: \"sequence-code\",\n label: \"Sequence Code\",\n required: false,\n config: {\n segmentedByFieldId: \"45c5da96-0dc2-4cc1-ba61-7660a9c6da32\",\n conditionalFormatting: [],\n },\n },\n },\n ],\n },\n {\n key: \"schedule\",\n className: \"ScheduleField\",\n aliases: [\"schedule\", \"ScheduleField\"],\n description:\n \"Recurrence/schedule field bound to a number reference and a date period (frequency: monthly or daily).\",\n rawShape:\n '{\"type\":\"ScheduleField\",\"slug\":\"recurrence\",\"label\":\"Recurrence\",\"config\":{\"referenceField\":\"<number-field-uuid>\",\"beginningPeriodField\":\"<date-field-uuid>\",\"endingPeriodField\":\"<date-field-uuid>\",\"frequency\":\"monthly\"}}',\n examplePayloads: [\n {\n name: \"Schedule field (monthly)\",\n payload: {\n type: \"ScheduleField\",\n slug: \"monthly-recurrence\",\n label: \"Monthly Recurrence\",\n required: false,\n config: {\n referenceField: \"c52efe3f-2825-4c60-a7e3-34dd4c1ce043\",\n beginningPeriodField: \"d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90\",\n endingPeriodField: \"d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90\",\n frequency: \"monthly\",\n },\n },\n },\n {\n name: \"Schedule field (daily)\",\n payload: {\n type: \"ScheduleField\",\n slug: \"daily-recurrence\",\n label: \"Daily Recurrence\",\n required: false,\n config: {\n referenceField: \"c52efe3f-2825-4c60-a7e3-34dd4c1ce043\",\n beginningPeriodField: \"d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90\",\n endingPeriodField: \"d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90\",\n frequency: \"daily\",\n },\n },\n },\n ],\n },\n] as const satisfies readonly SchemaFieldTypeDefinition[];\n\nconst fieldTypeDefinitionByAlias = new Map(\n fieldTypeDefinitions.flatMap((definition) =>\n definition.aliases.map((alias) => [alias.trim().toLowerCase(), definition] as const),\n ),\n);\n\nconst fieldTypeDefinitionByClassName = new Map<string, SchemaFieldTypeDefinition>(\n fieldTypeDefinitions.map((definition) => [definition.className, definition] as const),\n);\n\nconst optionValidationMessage =\n 'Option fields require an \"options\" array with at least one entry like {\"id\":1,\"name\":\"Open\",\"color\":\"default\"}.';\n\n// Mirrors the frontend OptionColorId palette; the UI rejects any other value.\nexport const OPTION_COLORS = [\n \"none\",\n \"default\",\n \"secondary\",\n \"success\",\n \"warning\",\n \"cond-verde-intenso\",\n \"cond-positivo\",\n \"cond-naranja\",\n \"cond-destacado\",\n \"cond-negativo\",\n \"cond-critico\",\n \"cond-morado\",\n \"cond-bajo\",\n \"cond-azul-intenso\",\n \"cond-vacio\",\n \"cond-gris-oscuro\",\n \"cond-rosa\",\n \"cond-morado-medio\",\n \"cond-azul-medio\",\n \"cond-amarillo-claro\",\n \"cond-amarillo-oscuro\",\n \"cond-naranja-medio\",\n] as const;\n\nconst optionColorSet = new Set<string>(OPTION_COLORS);\n\nexport function getSchemaFieldTypeDefinitions(): readonly SchemaFieldTypeDefinition[] {\n return fieldTypeDefinitions;\n}\n\nexport function listSchemaFieldTypes(): readonly SchemaFieldTypeKey[] {\n return fieldTypeDefinitions.map((definition) => definition.key);\n}\n\nexport function formatSchemaFieldTypes(): string {\n return listSchemaFieldTypes().join(\", \");\n}\n\nexport function resolveSchemaFieldType(\n input: string | undefined,\n): SchemaFieldTypeDefinition | undefined {\n if (!input) {\n return undefined;\n }\n\n return fieldTypeDefinitionByAlias.get(input.trim().toLowerCase());\n}\n\nexport function resolveSchemaFieldTypeByClassName(\n className: string | undefined,\n): SchemaFieldTypeDefinition | undefined {\n if (!className) {\n return undefined;\n }\n\n return fieldTypeDefinitionByClassName.get(className);\n}\n\nexport function normalizeSchemaFieldType(input: string): string {\n const definition = resolveSchemaFieldType(input);\n\n if (definition) {\n return definition.className;\n }\n\n if (/^[a-z]/.test(input) && !input.endsWith(\"Field\")) {\n return `${input.charAt(0).toUpperCase()}${input.slice(1)}Field`;\n }\n\n return input;\n}\n\nexport function assertSupportedSchemaFieldType(type: string): void {\n if (!resolveSchemaFieldTypeByClassName(type)) {\n throw new CliError(\n \"invalid_cli_usage\",\n `Unsupported field type \"${type}\". Valid types: ${formatSchemaFieldTypes()}.`,\n );\n }\n}\n\ninterface OptionEntry {\n [key: string]: string | number;\n id: number;\n name: string;\n color: string;\n}\n\nfunction normalizeOptionEntries(entries: readonly unknown[]): OptionEntry[] {\n return entries.flatMap((entry) => {\n if (!isJsonObject(entry)) {\n return [];\n }\n\n const id = toNumberValue(entry.id);\n const name = toStringValue(entry.name) ?? toStringValue(entry.label);\n const color = toStringValue(entry.color) ?? \"default\";\n\n if (id === undefined || !name) {\n return [];\n }\n\n if (!optionColorSet.has(color)) {\n throw new CliError(\n \"invalid_cli_usage\",\n `Invalid option color \"${color}\" for option \"${name}\". Valid colors: ${OPTION_COLORS.join(\", \")}.`,\n );\n }\n\n return [{ id, name, color }];\n });\n}\n\nfunction normalizeOptionPayload(input: JsonObject): JsonObject {\n const additionalProperties = toJsonObject(input.additionalProperties) ?? {};\n const config = toJsonObject(input.config);\n const rootOptions = Array.isArray(input.options) ? input.options : undefined;\n const nestedOptions = Array.isArray(additionalProperties.options)\n ? additionalProperties.options\n : Array.isArray(config?.options)\n ? config.options\n : undefined;\n const optionObjects = normalizeOptionEntries(\n nestedOptions ??\n (Array.isArray(rootOptions) ? rootOptions : []),\n );\n\n if (optionObjects.length === 0) {\n throw new CliError(\"invalid_cli_usage\", optionValidationMessage);\n }\n\n const { options: _options, additionalProperties: _additionalProperties, ...rest } = input;\n const defaultValue =\n config?.defaultValue ?? input.defaultValue ?? additionalProperties.defaultValue;\n const conditionalFormatting =\n config?.conditionalFormatting ?? additionalProperties.conditionalFormatting;\n const buttonConfig = config?.buttonConfig ?? additionalProperties.buttonConfig;\n\n return {\n ...rest,\n config: {\n ...(config ?? {}),\n options: optionObjects,\n ...(defaultValue !== undefined ? { defaultValue } : {}),\n ...(conditionalFormatting !== undefined ? { conditionalFormatting } : {}),\n ...(buttonConfig !== undefined ? { buttonConfig } : {}),\n },\n };\n}\n\nfunction normalizeReferencePayload(input: JsonObject): JsonObject {\n const additionalProperties = toJsonObject(input.additionalProperties) ?? {};\n const config = toJsonObject(input.config) ?? {};\n const targetSchema =\n config.targetSchema ?? input.targetSchema ?? additionalProperties.targetSchema;\n const targetDisplayField =\n config.targetDisplayField ??\n input.targetDisplayField ??\n additionalProperties.targetDisplayField;\n const deleteBehavior =\n config.deleteBehavior ?? input.deleteBehavior ?? additionalProperties.deleteBehavior;\n const defaultValue =\n config.defaultValue ?? input.defaultValue ?? additionalProperties.defaultValue;\n const filterFields =\n config.filterFields ?? input.filterFields ?? additionalProperties.filterFields;\n const descriptionFields =\n config.descriptionFields ??\n input.descriptionFields ??\n additionalProperties.descriptionFields;\n const conditionalFormatting =\n config.conditionalFormatting ??\n input.conditionalFormatting ??\n additionalProperties.conditionalFormatting;\n\n const normalized: JsonObject = {\n ...input,\n };\n\n normalized.config = {\n ...config,\n ...(targetSchema !== undefined ? { targetSchema } : {}),\n ...(targetDisplayField !== undefined ? { targetDisplayField } : {}),\n ...(deleteBehavior !== undefined ? { deleteBehavior } : {}),\n ...(defaultValue !== undefined ? { defaultValue } : {}),\n ...(filterFields !== undefined ? { filterFields } : {}),\n ...(descriptionFields !== undefined ? { descriptionFields } : {}),\n ...(conditionalFormatting !== undefined ? { conditionalFormatting } : {}),\n };\n\n const normalizedConfig = toJsonObject(normalized.config) ?? {};\n\n if (\n !toStringValue(normalizedConfig.targetSchema) ||\n !toStringValue(normalizedConfig.targetDisplayField)\n ) {\n const definition = resolveSchemaFieldType(\"reference\")!;\n throw new CliError(\n \"invalid_cli_usage\",\n `Reference fields require \"targetSchema\" and \"targetDisplayField\". Expected raw shape: ${definition.rawShape}`,\n );\n }\n\n return normalized;\n}\n\nconst scheduleAllowedFrequencies = new Set([\"monthly\", \"daily\"]);\n\nfunction normalizeSchedulePayload(input: JsonObject): JsonObject {\n const additionalProperties = toJsonObject(input.additionalProperties) ?? {};\n const config = toJsonObject(input.config) ?? {};\n const referenceField =\n config.referenceField ?? input.referenceField ?? additionalProperties.referenceField;\n const beginningPeriodField =\n config.beginningPeriodField ??\n input.beginningPeriodField ??\n additionalProperties.beginningPeriodField;\n const endingPeriodField =\n config.endingPeriodField ??\n input.endingPeriodField ??\n additionalProperties.endingPeriodField;\n const frequency =\n config.frequency ?? input.frequency ?? additionalProperties.frequency;\n\n const {\n referenceField: _referenceField,\n beginningPeriodField: _beginningPeriodField,\n endingPeriodField: _endingPeriodField,\n frequency: _frequency,\n additionalProperties: _additionalProperties,\n ...rest\n } = input;\n\n const normalized: JsonObject = {\n ...rest,\n config: {\n ...config,\n ...(referenceField !== undefined ? { referenceField } : {}),\n ...(beginningPeriodField !== undefined ? { beginningPeriodField } : {}),\n ...(endingPeriodField !== undefined ? { endingPeriodField } : {}),\n ...(frequency !== undefined ? { frequency } : {}),\n },\n };\n\n const normalizedConfig = toJsonObject(normalized.config) ?? {};\n const definition = resolveSchemaFieldType(\"schedule\")!;\n\n if (\n !toStringValue(normalizedConfig.referenceField) ||\n !toStringValue(normalizedConfig.beginningPeriodField) ||\n !toStringValue(normalizedConfig.endingPeriodField) ||\n !toStringValue(normalizedConfig.frequency)\n ) {\n throw new CliError(\n \"invalid_cli_usage\",\n `Schedule fields require \"referenceField\", \"beginningPeriodField\", \"endingPeriodField\" and \"frequency\". Expected raw shape: ${definition.rawShape}`,\n );\n }\n\n const frequencyValue = toStringValue(normalizedConfig.frequency)!;\n if (!scheduleAllowedFrequencies.has(frequencyValue)) {\n throw new CliError(\n \"invalid_cli_usage\",\n `Schedule \"frequency\" must be \"monthly\" or \"daily\" (received \"${frequencyValue}\").`,\n );\n }\n\n return normalized;\n}\n\nfunction normalizeFormulaPayload(input: JsonObject): JsonObject {\n const { status: _status, ...rest } = input;\n const rawAdditionalProperties = toJsonObject(input.additionalProperties);\n const rawConfig = toJsonObject(input.config);\n const { status: _additionalStatus, ...additionalProperties } =\n rawAdditionalProperties ?? {};\n const { status: _configStatus, ...config } = rawConfig ?? {};\n const formulaText =\n config.formulaText ??\n rest.formulaText ??\n rest.expression ??\n additionalProperties.formulaText ??\n additionalProperties.expression;\n\n const normalized: JsonObject = {\n ...rest,\n };\n\n normalized.config = {\n ...config,\n ...(formulaText !== undefined ? { formulaText } : {}),\n ...(config.uiFormatKind !== undefined ? { uiFormatKind: config.uiFormatKind } : {}),\n ...(config.defaultValue !== undefined ? { defaultValue: config.defaultValue } : {}),\n ...(config.numberFormatOptions !== undefined\n ? { numberFormatOptions: config.numberFormatOptions }\n : {}),\n ...(config.dateFormatOptions !== undefined\n ? { dateFormatOptions: config.dateFormatOptions }\n : {}),\n ...(config.conditionalFormatting !== undefined\n ? { conditionalFormatting: config.conditionalFormatting }\n : {}),\n };\n\n const normalizedConfig = toJsonObject(normalized.config) ?? {};\n\n if (!toStringValue(normalizedConfig.formulaText)) {\n const definition = resolveSchemaFieldType(\"formula\")!;\n throw new CliError(\n \"invalid_cli_usage\",\n `Formula fields require \"formulaText\". Expected raw shape: ${definition.rawShape}`,\n );\n }\n\n return normalized;\n}\n\nexport function normalizeSchemaFieldCreatePayload(input: JsonObject): JsonObject {\n const rawType = toStringValue(input.type);\n const normalizedType = rawType ? normalizeSchemaFieldType(rawType) : undefined;\n const definition = resolveSchemaFieldTypeByClassName(normalizedType);\n\n if (!definition) {\n return input;\n }\n\n const normalizedWithType: JsonObject = {\n ...input,\n type: definition.className,\n };\n\n switch (definition.key) {\n case \"option\":\n return normalizeOptionPayload(normalizedWithType);\n case \"reference\":\n return normalizeReferencePayload(normalizedWithType);\n case \"formula\":\n return normalizeFormulaPayload(normalizedWithType);\n case \"schedule\":\n return normalizeSchedulePayload(normalizedWithType);\n case \"autoincremental\": {\n const config = toJsonObject(normalizedWithType.config) ?? {};\n const segmentedByFieldId =\n config.segmentedByFieldId ??\n normalizedWithType.segmentedByFieldId ??\n null;\n return {\n ...normalizedWithType,\n config: {\n ...config,\n segmentedByFieldId,\n ...(config.conditionalFormatting !== undefined\n ? { conditionalFormatting: config.conditionalFormatting }\n : {}),\n },\n };\n }\n default:\n return normalizedWithType;\n }\n}\n\nexport function normalizeSchemaFieldUpdatePayload(\n type: string,\n input: JsonObject,\n): JsonObject {\n const definition = resolveSchemaFieldTypeByClassName(type);\n\n if (definition?.key === \"formula\") {\n return normalizeFormulaPayload(input);\n }\n\n return input;\n}\n\nexport function buildSchemaFieldCreateHelpText(): string {\n const sections = fieldTypeDefinitions.map(\n (definition) =>\n ` - ${definition.key}: ${definition.description}\\n raw: ${definition.rawShape}`,\n );\n\n return [\n \"\",\n \"Valid field types:\",\n ` ${formatSchemaFieldTypes()}`,\n \"\",\n \"Raw payload shapes by type:\",\n ...sections,\n \"\",\n 'Use \"zinkee --example schemas fields create --type <type>\" to show a concrete example for one type.',\n ].join(\"\\n\");\n}\n\nexport function buildSchemaFieldCreateValidationMessage(type: string): string {\n const definition = resolveSchemaFieldTypeByClassName(type);\n\n if (!definition) {\n return `Invalid payload for field type \"${type}\". Valid types: ${formatSchemaFieldTypes()}.`;\n }\n\n return `Invalid payload for field type \"${definition.key}\". Expected raw shape: ${definition.rawShape}`;\n}\n"],"mappings":"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","names":["require","createRequire","require"]}
@@ -2,7 +2,7 @@ import {
2
2
  buildJsonSuccess,
3
3
  getSchemaFieldTypeDefinitions,
4
4
  resolveSchemaFieldType
5
- } from "./chunk-Z7L7HPYZ.js";
5
+ } from "./chunk-IEW5RTJV.js";
6
6
 
7
7
  // src/utils/examples.ts
8
8
  var SAMPLE_UUID = "550e8400-e29b-41d4-a716-446655440001";
@@ -4361,4 +4361,4 @@ function withResponseEnvelope(example, commandName) {
4361
4361
  export {
4362
4362
  getCommandExamples
4363
4363
  };
4364
- //# sourceMappingURL=examples-6KL2QXFC.js.map
4364
+ //# sourceMappingURL=examples-4CKJHTGV.js.map
package/dist/index.js CHANGED
@@ -17,7 +17,7 @@ import {
17
17
  normalizeSchemaFieldType,
18
18
  normalizeSchemaFieldUpdatePayload,
19
19
  printTable
20
- } from "./chunk-Z7L7HPYZ.js";
20
+ } from "./chunk-IEW5RTJV.js";
21
21
 
22
22
  // src/cli-runner.ts
23
23
  import { realpathSync } from "fs";
@@ -250,7 +250,7 @@ ${list}`
250
250
  };
251
251
  }
252
252
  async function showExamples(commandName, json, stdout, filters = {}) {
253
- const { getCommandExamples } = await import("./examples-6KL2QXFC.js");
253
+ const { getCommandExamples } = await import("./examples-4CKJHTGV.js");
254
254
  const examples = getCommandExamples(commandName, filters);
255
255
  if (examples.length === 0) {
256
256
  throw new CliError("invalid_cli_usage", `No examples registered for "${commandName}".`);
@@ -906,7 +906,7 @@ var AutomationsApi = class {
906
906
  updateAction(automation, actionId, input) {
907
907
  return this.client.requestJson(
908
908
  `/api/v2/automations/${automation.value}/actions/${segment(actionId)}`,
909
- jsonOptions(input, "PATCH")
909
+ jsonOptions(input, "PUT")
910
910
  );
911
911
  }
912
912
  deleteAction(automation, actionId) {