@tailor-platform/sdk 1.68.0 → 1.69.0
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/CHANGELOG.md +75 -0
- package/dist/application-Br48NXBD.mjs +4 -0
- package/dist/application-Cr-limKC.mjs +6192 -0
- package/dist/application-Cr-limKC.mjs.map +1 -0
- package/dist/cli/index.mjs +13 -12
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/lib.d.mts +234 -153
- package/dist/cli/lib.mjs +3 -3
- package/dist/cli/lib.mjs.map +1 -1
- package/dist/cli/skills.mjs +1 -1
- package/dist/completion/zsh-worker.zsh +23 -23
- package/dist/configure/index.d.mts +2 -2
- package/dist/configure/index.mjs +4 -0
- package/dist/configure/index.mjs.map +1 -1
- package/dist/{crashreport-u9y2npiy.mjs → crashreport-BqyvFk-_.mjs} +2 -2
- package/dist/{crashreport-u9y2npiy.mjs.map → crashreport-BqyvFk-_.mjs.map} +1 -1
- package/dist/{crashreport-6jpCceOF.mjs → crashreport-BwF8cHF0.mjs} +1 -1
- package/dist/enum-constants-C7DaWeQo.mjs.map +1 -1
- package/dist/field-C4zdJLW5.mjs.map +1 -1
- package/dist/file-utils-BHPxPXmn.mjs.map +1 -1
- package/dist/{idp-BlBPtXJ-.d.mts → idp-BmYwCXnJ.d.mts} +30 -3
- package/dist/{idp-BZPqpcYY.mjs → idp-ynUfzwpz.mjs} +9 -1
- package/dist/idp-ynUfzwpz.mjs.map +1 -0
- package/dist/{index-DvEUb3pX.d.mts → index-B7VbJm0_.d.mts} +25 -16
- package/dist/{index-DRhMpdnA.d.mts → index-dKNk8hjo.d.mts} +2 -2
- package/dist/job-BpsFXPbi.mjs.map +1 -1
- package/dist/{kysely-type-D1e0Vwkd.mjs → kysely-type-CSoZxVKN.mjs} +2 -2
- package/dist/{kysely-type-D1e0Vwkd.mjs.map → kysely-type-CSoZxVKN.mjs.map} +1 -1
- package/dist/{logger-DpJyJvNz.mjs → logger-DKF-JsAK.mjs} +3 -3
- package/dist/{logger-DpJyJvNz.mjs.map → logger-DKF-JsAK.mjs.map} +1 -1
- package/dist/{mock-DMgIygjE.mjs → mock-wf5qeZLi.mjs} +19 -9
- package/dist/mock-wf5qeZLi.mjs.map +1 -0
- package/dist/plugin/builtin/kysely-type/index.mjs +1 -1
- package/dist/plugin/index.mjs.map +1 -1
- package/dist/registry-D0uB0OrK.mjs.map +1 -1
- package/dist/{repl-editor-CJG3sz7A.mjs → repl-editor-DD5YP5mt.mjs} +4 -4
- package/dist/{repl-editor-CJG3sz7A.mjs.map → repl-editor-DD5YP5mt.mjs.map} +1 -1
- package/dist/runtime/globals.d.mts +3 -2
- package/dist/runtime/idp.d.mts +2 -2
- package/dist/runtime/idp.mjs +1 -1
- package/dist/runtime/index.d.mts +2 -2
- package/dist/runtime/index.mjs +1 -1
- package/dist/{runtime-DxaBq6U8.mjs → runtime-jowoN6qC.mjs} +84 -34
- package/dist/runtime-jowoN6qC.mjs.map +1 -0
- package/dist/schema-1msIhXwA.mjs.map +1 -1
- package/dist/seed-YAbtMy65.mjs.map +1 -1
- package/dist/{service-wI3Hvrgx.mjs → service-B2Jd9CxS.mjs} +2 -2
- package/dist/service-B2Jd9CxS.mjs.map +1 -0
- package/dist/service-CRaa4Joe.mjs +4 -0
- package/dist/{service-DMohAx8a.mjs → service-DDWgZL_L2.mjs} +2 -2
- package/dist/service-DDWgZL_L2.mjs.map +1 -0
- package/dist/service_pb-DGSmn-aF.mjs +4 -0
- package/dist/{application-WpWwTyk9.mjs → service_pb-DSNjrcbW.mjs} +22 -6176
- package/dist/service_pb-DSNjrcbW.mjs.map +1 -0
- package/dist/telemetry-BQbbVo2t.mjs.map +1 -1
- package/dist/types-CmzfQP_m.mjs.map +1 -1
- package/dist/utils/test/index.d.mts +2 -2
- package/dist/utils/test/index.mjs.map +1 -1
- package/dist/vitest/environment.mjs +1 -1
- package/dist/vitest/environment.mjs.map +1 -1
- package/dist/vitest/index.mjs +4 -4
- package/dist/vitest/index.mjs.map +1 -1
- package/dist/vitest/setup.mjs +1 -1
- package/dist/{workflow.generated-1S50BhEb.d.mts → workflow.generated-Br9bmLdX.d.mts} +98 -3
- package/docs/cli/application.md +5 -202
- package/docs/cli/auth.md +12 -256
- package/docs/cli/completion.md +0 -24
- package/docs/cli/crashreport.md +0 -58
- package/docs/cli/executor.md +2 -166
- package/docs/cli/function.md +2 -118
- package/docs/cli/organization.md +1 -211
- package/docs/cli/query.md +0 -20
- package/docs/cli/secret.md +70 -250
- package/docs/cli/setup.md +1 -41
- package/docs/cli/skills.md +0 -39
- package/docs/cli/staticwebsite.md +24 -172
- package/docs/cli/tailordb.md +5 -255
- package/docs/cli/upgrade.md +0 -20
- package/docs/cli/user.md +32 -247
- package/docs/cli/workflow.md +30 -189
- package/docs/cli/workspace.md +158 -537
- package/docs/cli-reference.md +55 -37
- package/docs/configuration.md +7 -1
- package/docs/services/idp.md +55 -2
- package/docs/services/staticwebsite.md +7 -1
- package/package.json +23 -18
- package/dist/application-Djeezk3m.mjs +0 -4
- package/dist/application-WpWwTyk9.mjs.map +0 -1
- package/dist/idp-BZPqpcYY.mjs.map +0 -1
- package/dist/mock-DMgIygjE.mjs.map +0 -1
- package/dist/runtime-DxaBq6U8.mjs.map +0 -1
- package/dist/service-BHQIerYh.mjs +0 -4
- package/dist/service-DMohAx8a.mjs.map +0 -1
- package/dist/service-wI3Hvrgx.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service-DMohAx8a.mjs","names":["CLIError"],"sources":["../src/cli/commands/upgrade/version-detector.ts","../src/cli/commands/upgrade/service.ts"],"sourcesContent":["import * as path from \"pathe\";\nimport { readPackageJSON } from \"pkg-types\";\n\nconst SDK_PACKAGE_NAME = \"@tailor-platform/sdk\";\n\n/**\n * Detect the installed SDK version from the user's project.\n * Walks up from projectRoot to find the SDK package in node_modules,\n * matching Node's module resolution for workspace setups with hoisted deps.\n * @param projectRoot - The project root directory to search from\n * @returns The installed SDK version string, or null if not found\n */\nexport async function detectInstalledVersion(projectRoot: string): Promise<string | null> {\n let dir = path.resolve(projectRoot);\n // loop exits when a package.json is found or the root is reached\n // oxlint-disable-next-line typescript/no-unnecessary-condition\n while (true) {\n try {\n const sdkPath = path.join(dir, \"node_modules\", SDK_PACKAGE_NAME);\n const pkg = await readPackageJSON(sdkPath);\n if (pkg.version) return pkg.version;\n } catch {\n // Not found at this level, try parent\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n","import { spawnSync } from \"node:child_process\";\nimport { CLIError } from \"@/cli/shared/errors\";\nimport { logger, styles } from \"@/cli/shared/logger\";\nimport { detectInstalledVersion } from \"./version-detector\";\nimport type { RunOutput } from \"./types\";\n\ninterface UpgradeOptions {\n from: string;\n dryRun: boolean;\n path: string;\n}\n\n/**\n * Print the upgrade summary to the terminal.\n * @param output - The parsed JSON output from sdk-codemod\n * @param dryRun - Whether this was a dry-run\n */\nfunction printUpgradeSummary(output: RunOutput, dryRun: boolean): void {\n if (dryRun) {\n logger.info(`${styles.bold(\"[Dry Run]\")} No files were modified.`);\n logger.log(\"\");\n }\n\n const total = output.codemodsApplied + output.codemodsSkipped + output.errors.length;\n logger.info(\n `Upgrade complete: ${styles.success(`${output.codemodsApplied} applied`)}, ${styles.dim(`${output.codemodsSkipped} skipped`)} (${total} total codemods)`,\n );\n\n if (output.filesModified.length > 0) {\n logger.log(\"\");\n logger.info(\n `${dryRun ? \"Files that would be modified\" : \"Modified files\"} (${output.filesModified.length}):`,\n );\n for (const file of output.filesModified) {\n logger.log(` ${styles.path(file)}`);\n }\n }\n\n if (output.warnings.length > 0) {\n logger.log(\"\");\n logger.warn(`Manual attention needed (${output.warnings.length}):`);\n for (const warning of output.warnings) {\n logger.log(` ${styles.warning(\"!\")} ${warning}`);\n }\n }\n\n if (output.errors.length > 0) {\n logger.log(\"\");\n logger.error(`Failed codemods (${output.errors.length}):`);\n for (const { codemodId, message } of output.errors) {\n logger.log(` ${styles.error(codemodId)}: ${message}`);\n }\n }\n}\n\n/**\n * Run the upgrade pipeline:\n * 1. Detect target SDK version from node_modules\n * 2. Invoke @tailor-platform/sdk-codemod CLI\n * 3. Parse JSON output and display results\n * @param options - Upgrade options\n */\nexport async function upgrade(options: UpgradeOptions): Promise<void> {\n const projectRoot = options.path;\n\n // Step 1: Detect target SDK version (the newly installed version)\n const targetVersion = await detectInstalledVersion(projectRoot);\n if (!targetVersion) {\n throw CLIError({\n message: `Could not detect installed @tailor-platform/sdk version in ${projectRoot}`,\n suggestion:\n \"Ensure @tailor-platform/sdk is installed. Run 'pnpm install' or 'npm install' first.\",\n command: \"upgrade\",\n });\n }\n\n logger.info(\n `Upgrading from ${styles.highlight(options.from)} → ${styles.highlight(targetVersion)}`,\n );\n\n if (options.dryRun) {\n logger.info(`${styles.bold(\"[Dry Run]\")} Changes will be previewed but not applied.`);\n }\n\n logger.log(\"\");\n\n // Step 2: Invoke sdk-codemod CLI\n // Use \"latest\" because sdk-codemod may not be published at the exact same\n // version as @tailor-platform/sdk. Version filtering is handled internally\n // by sdk-codemod's registry via the --from / --to arguments.\n const npxCommand = process.platform === \"win32\" ? \"npx.cmd\" : \"npx\";\n\n const result = spawnSync(\n npxCommand,\n [\n \"@tailor-platform/sdk-codemod@latest\",\n \"--from\",\n options.from,\n \"--to\",\n targetVersion,\n \"--target\",\n projectRoot,\n ...(options.dryRun ? [\"--dry-run\"] : []),\n ],\n {\n cwd: projectRoot,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n encoding: \"utf-8\",\n timeout: 300_000,\n },\n );\n\n if (result.error) {\n throw CLIError({\n message: `Failed to run @tailor-platform/sdk-codemod: ${result.error.message}`,\n suggestion: \"Ensure npx is available and the network is accessible.\",\n command: \"upgrade\",\n });\n }\n\n // Check for non-zero exit without a launch error (e.g. registry/auth/network failures)\n if (result.status !== 0 && !result.stdout.trim()) {\n throw CLIError({\n message: `@tailor-platform/sdk-codemod exited with code ${result.status}`,\n details: result.stderr.trim() || \"(no stderr output)\",\n suggestion:\n \"Review the error above. Common causes: invalid version arguments, network issues, or missing package registry access.\",\n command: \"upgrade\",\n });\n }\n\n // Forward captured stderr so users see dry-run diffs and progress messages\n // written by sdk-codemod. stderr is piped (not inherited) so that the error\n // path above can surface it via CLIError, but on success we still need to\n // replay it verbatim to keep the colorized unified diff output visible.\n if (result.stderr) {\n process.stderr.write(result.stderr);\n }\n\n // Step 3: Parse JSON output\n let output: RunOutput;\n try {\n output = JSON.parse(result.stdout);\n } catch {\n throw CLIError({\n message: \"Failed to parse output from @tailor-platform/sdk-codemod\",\n details: result.stdout || \"(empty stdout)\",\n suggestion: \"This is likely a bug. Please report it.\",\n command: \"upgrade\",\n });\n }\n\n // Step 4: Display results\n // Emit structured data on stdout (honors --json via logger.out) and\n // human-readable summary on stderr (via printUpgradeSummary).\n logger.out(output);\n printUpgradeSummary(output, options.dryRun);\n\n if (output.errors.length > 0) {\n throw CLIError({\n message: `Upgrade completed with ${output.errors.length} error(s)`,\n suggestion: \"Review the errors above and re-run the upgrade after fixing the issues.\",\n command: \"upgrade\",\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service-wI3Hvrgx.mjs","names":[],"sources":["../src/parser/service/common.ts","../src/cli/services/file-loader.ts","../src/parser/service/auth-connection/schema.ts","../src/parser/service/field/schema.ts","../src/parser/service/auth/schema.ts","../src/parser/service/executor/schema.ts","../src/cli/services/executor/service.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// Use `z.custom` instead of `z.function`, since `z.function` changes `toString` representation.\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const functionSchema = z.custom<Function>((val) => typeof val === \"function\");\n","import * as fs from \"node:fs\";\nimport * as path from \"pathe\";\nimport { logger } from \"@/cli/shared/logger\";\n\nexport interface FileLoadConfig {\n files: string[];\n ignores?: string[];\n}\n\nconst DEFAULT_IGNORE_PATTERNS = [\"**/*.test.ts\", \"**/*.spec.ts\"];\n\n/**\n * Load files matching the given patterns, excluding files that match ignore patterns.\n * By default, test files (*.test.ts, *.spec.ts) are excluded unless ignores is explicitly specified.\n * @param config - Configuration with files patterns and optional ignores patterns\n * @returns Array of absolute file paths\n */\nexport function loadFilesWithIgnores(config: FileLoadConfig): string[] {\n // Use user-provided patterns if specified, otherwise use defaults\n const ignorePatterns = config.ignores ?? DEFAULT_IGNORE_PATTERNS;\n\n const ignoreFiles = new Set<string>();\n for (const ignorePattern of ignorePatterns) {\n const absoluteIgnorePattern = path.resolve(process.cwd(), ignorePattern);\n try {\n const matchedIgnoreFiles = fs.globSync(absoluteIgnorePattern);\n matchedIgnoreFiles.forEach((file) => ignoreFiles.add(file));\n } catch (error) {\n logger.warn(`Failed to glob ignore pattern \"${ignorePattern}\": ${String(error)}`);\n }\n }\n\n const files: string[] = [];\n for (const pattern of config.files) {\n const absolutePattern = path.resolve(process.cwd(), pattern);\n try {\n const matchedFiles = fs.globSync(absolutePattern);\n // Filter out ignored files\n const filteredFiles = matchedFiles.filter((file) => !ignoreFiles.has(file));\n files.push(...filteredFiles);\n } catch (error) {\n logger.warn(`Failed to glob pattern \"${pattern}\": ${String(error)}`);\n }\n }\n\n return files;\n}\n","import { z } from \"zod\";\n\nexport const AuthConnectionOAuth2ConfigSchema = z.object({\n providerUrl: z.string().describe(\"OAuth2 provider URL\"),\n issuerUrl: z.string().describe(\"OAuth2 issuer URL\"),\n clientId: z.string().describe(\"OAuth2 client ID\"),\n clientSecret: z.string().describe(\"OAuth2 client secret\"),\n authUrl: z.string().optional().describe(\"OAuth2 authorization endpoint override\"),\n tokenUrl: z.string().optional().describe(\"OAuth2 token endpoint override\"),\n});\n\nexport const AuthConnectionConfigSchema = z\n .object({\n type: z.literal(\"oauth2\").describe(\"Connection type\"),\n })\n .and(AuthConnectionOAuth2ConfigSchema);\n","import { z } from \"zod\";\nimport { functionSchema } from \"../common\";\n\nconst TailorFieldTypeSchema = z.enum([\n \"uuid\",\n \"string\",\n \"boolean\",\n \"integer\",\n \"float\",\n \"decimal\",\n \"enum\",\n \"date\",\n \"datetime\",\n \"time\",\n \"nested\",\n]);\n\nconst AllowedValueSchema = z.object({\n value: z.string().describe(\"The allowed value\"),\n description: z.string().optional().describe(\"Description of the allowed value\"),\n});\n\nconst FieldMetadataSchema = z.object({\n required: z.boolean().optional().describe(\"Whether the field is required\"),\n array: z.boolean().optional().describe(\"Whether the field is an array\"),\n description: z.string().optional().describe(\"Field description\"),\n allowedValues: z.array(AllowedValueSchema).optional().describe(\"Allowed values for enum fields\"),\n hooks: z\n .object({\n create: functionSchema.optional().describe(\"Hook function called on creation\"),\n update: functionSchema.optional().describe(\"Hook function called on update\"),\n })\n .optional()\n .describe(\"Lifecycle hooks\"),\n typeName: z.string().optional().describe(\"Type name for nested or enum fields\"),\n});\n\nexport const TailorFieldSchema = z.object({\n type: TailorFieldTypeSchema.describe(\"Field data type\"),\n metadata: FieldMetadataSchema.describe(\"Field metadata configuration\"),\n get fields() {\n return z.record(z.string(), TailorFieldSchema);\n },\n});\n","import { z } from \"zod\";\nimport { AuthConnectionConfigSchema } from \"@/parser/service/auth-connection\";\nimport { TailorFieldSchema } from \"@/parser/service/field/schema\";\nimport type { ValueOperand } from \"@/configure/services/auth/types\";\n\nexport const AuthInvokerObjectSchema = z.object({\n namespace: z.string().describe(\"Auth namespace\"),\n machineUserName: z.string().describe(\"Machine user name for authentication\"),\n});\n\nexport const AuthInvokerSchema = z.union([\n z.string().describe(\"Machine user name (namespace auto-resolved from auth service)\"),\n AuthInvokerObjectSchema,\n]);\n\nconst secretValueSchema = z.object({\n vaultName: z.string().describe(\"Vault name containing the secret\"),\n secretKey: z.string().describe(\"Key of the secret in the vault\"),\n});\n\nexport const OIDCSchema = z.object({\n name: z.string().describe(\"Identity provider name\"),\n kind: z.literal(\"OIDC\"),\n clientID: z.string().describe(\"OAuth2 client ID\"),\n clientSecret: secretValueSchema.describe(\"OAuth2 client secret\"),\n providerURL: z.string().describe(\"OIDC provider URL\"),\n issuerURL: z.string().optional().describe(\"OIDC issuer URL (defaults to providerURL)\"),\n usernameClaim: z.string().optional().describe(\"JWT claim to use as username\"),\n});\n\nexport const SAMLSchema = z\n .object({\n name: z.string().describe(\"Identity provider name\"),\n kind: z.literal(\"SAML\"),\n enableSignRequest: z.boolean().default(false).describe(\"Enable signing of SAML requests\"),\n metadataURL: z\n .string()\n .optional()\n .describe(\"URL to fetch SAML metadata (mutually exclusive with rawMetadata)\"),\n rawMetadata: z\n .string()\n .optional()\n .describe(\"Raw SAML metadata XML (mutually exclusive with metadataURL)\"),\n defaultRedirectURL: z\n .string()\n .optional()\n .describe(\"URL to redirect to when SAML ACS receives a response with an empty RelayState.\"),\n })\n .refine((value) => {\n const hasMetadata = value.metadataURL !== undefined;\n const hasRaw = value.rawMetadata !== undefined;\n return hasMetadata !== hasRaw;\n }, \"Provide either metadataURL or rawMetadata\");\n\nexport const IDTokenSchema = z.object({\n name: z.string().describe(\"Identity provider name\"),\n kind: z.literal(\"IDToken\"),\n providerURL: z.string().describe(\"ID token provider URL\"),\n issuerURL: z.string().optional().describe(\"ID token issuer URL\"),\n clientID: z.string().describe(\"Client ID for ID token validation\"),\n usernameClaim: z.string().optional().describe(\"JWT claim to use as username\"),\n});\n\nexport const BuiltinIdPSchema = z.object({\n name: z.string().describe(\"Identity provider name\"),\n kind: z.literal(\"BuiltInIdP\"),\n namespace: z.string().describe(\"IdP namespace\"),\n clientName: z.string().describe(\"OAuth2 client name in the IdP\"),\n});\n\nexport const IdProviderSchema = z.discriminatedUnion(\"kind\", [\n OIDCSchema,\n SAMLSchema,\n IDTokenSchema,\n BuiltinIdPSchema,\n]);\n\nexport const OAuth2ClientGrantTypeSchema = z\n .union([z.literal(\"authorization_code\"), z.literal(\"refresh_token\")])\n .describe(\"OAuth2 grant type\");\n\nexport const OAuth2ClientSchema = z\n .object({\n description: z.string().optional().describe(\"Client description\"),\n grantTypes: z\n .array(OAuth2ClientGrantTypeSchema)\n .default([\"authorization_code\", \"refresh_token\"])\n .describe(\"Allowed OAuth2 grant types\"),\n redirectURIs: z\n .array(\n z.union([\n z.templateLiteral([\"https://\", z.string()]),\n z.templateLiteral([\"http://\", z.string()]),\n z.templateLiteral([z.string(), \":url\"]),\n z.templateLiteral([z.string(), \":url/\", z.string()]),\n ]),\n )\n .describe(\"Allowed redirect URIs\"),\n clientType: z\n .union([z.literal(\"confidential\"), z.literal(\"public\"), z.literal(\"browser\")])\n .optional()\n .describe(\"OAuth2 client type\"),\n accessTokenLifetimeSeconds: z\n .number()\n .int()\n .min(60, \"Minimum access token lifetime is 60 seconds\")\n .max(86400, \"Maximum access token lifetime is 1 day (86400 seconds)\")\n .optional()\n .describe(\"Access token lifetime in seconds (60-86400)\")\n .transform((val) => (val ? { seconds: BigInt(val), nanos: 0 } : undefined)),\n refreshTokenLifetimeSeconds: z\n .number()\n .int()\n .min(60, \"Minimum refresh token lifetime is 60 seconds\")\n .max(604800, \"Maximum refresh token lifetime is 7 days (604800 seconds)\")\n .optional()\n .describe(\"Refresh token lifetime in seconds (60-604800)\")\n .transform((val) => (val ? { seconds: BigInt(val), nanos: 0 } : undefined)),\n requireDpop: z\n .boolean()\n .optional()\n .describe(\"Require DPoP (Demonstrating Proof-of-Possession) for token requests\"),\n })\n .refine((data) => !(data.clientType === \"browser\" && data.requireDpop === true), {\n message: \"requireDpop cannot be set to true for browser clients as they don't support DPoP\",\n path: [\"requireDpop\"],\n });\n\nexport const SCIMAuthorizationSchema = z.object({\n type: z.union([z.literal(\"oauth2\"), z.literal(\"bearer\")]).describe(\"SCIM authorization type\"),\n bearerSecret: secretValueSchema\n .optional()\n .describe(\"Bearer token secret (required for bearer type)\"),\n});\n\nexport const SCIMAttributeTypeSchema = z\n .union([\n z.literal(\"string\"),\n z.literal(\"number\"),\n z.literal(\"boolean\"),\n z.literal(\"datetime\"),\n z.literal(\"complex\"),\n ])\n .describe(\"SCIM attribute data type\");\n\nexport const SCIMAttributeSchema = z.object({\n type: SCIMAttributeTypeSchema.describe(\"Attribute data type\"),\n name: z.string().describe(\"Attribute name\"),\n description: z.string().optional().describe(\"Attribute description\"),\n mutability: z\n .union([z.literal(\"readOnly\"), z.literal(\"readWrite\"), z.literal(\"writeOnly\")])\n .optional()\n .describe(\"Attribute mutability\"),\n required: z.boolean().optional().describe(\"Whether the attribute is required\"),\n multiValued: z.boolean().optional().describe(\"Whether the attribute can have multiple values\"),\n uniqueness: z\n .union([z.literal(\"none\"), z.literal(\"server\"), z.literal(\"global\")])\n .optional()\n .describe(\"Uniqueness constraint\"),\n canonicalValues: z.array(z.string()).nullable().optional().describe(\"List of canonical values\"),\n get subAttributes() {\n return z.array(SCIMAttributeSchema).nullable().optional();\n },\n});\n\nconst SCIMSchemaSchema = z.object({\n name: z.string().describe(\"SCIM schema name\"),\n attributes: z.array(SCIMAttributeSchema).describe(\"Schema attributes\"),\n});\n\nexport const SCIMAttributeMappingSchema = z.object({\n tailorDBField: z.string().describe(\"TailorDB field name to map to\"),\n scimPath: z.string().describe(\"SCIM attribute path\"),\n});\n\nexport const SCIMResourceSchema = z.object({\n name: z.string().describe(\"SCIM resource name\"),\n tailorDBNamespace: z.string().describe(\"TailorDB namespace for the resource\"),\n tailorDBType: z.string().describe(\"TailorDB type name for the resource\"),\n coreSchema: SCIMSchemaSchema.describe(\"Core SCIM schema definition\"),\n attributeMapping: z.array(SCIMAttributeMappingSchema).describe(\"Attribute mapping configuration\"),\n});\n\nexport const SCIMSchema = z.object({\n machineUserName: z.string().describe(\"Machine user name for SCIM operations\"),\n authorization: SCIMAuthorizationSchema.describe(\"SCIM authorization configuration\"),\n resources: z.array(SCIMResourceSchema).describe(\"SCIM resource definitions\"),\n});\n\nexport const TenantProviderSchema = z.object({\n namespace: z.string().describe(\"TailorDB namespace for the tenant type\"),\n type: z.string().describe(\"TailorDB type name for tenants\"),\n signatureField: z.string().describe(\"Field used as the tenant signature\"),\n});\n\nconst UserProfileSchema = z.object({\n namespace: z.string().optional().describe(\"TailorDB namespace where the user type is defined\"),\n // FIXME: improve TailorDBInstance schema validation\n type: z.object({\n name: z.string(),\n fields: z.any(),\n metadata: z.any(),\n hooks: z.any(),\n validate: z.any(),\n features: z.any(),\n indexes: z.any(),\n files: z.any(),\n permission: z.any(),\n gqlPermission: z.any(),\n _output: z.any(),\n }),\n usernameField: z.string(),\n attributes: z.record(z.string(), z.literal(true)).optional(),\n attributeList: z.array(z.string()).optional(),\n});\n\nconst ValueOperandSchema: z.ZodType<ValueOperand> = z.union([\n z.string(),\n z.boolean(),\n z.array(z.string()),\n z.array(z.boolean()),\n]);\n\nconst MachineUserSchema = z.object({\n attributes: z.record(z.string(), ValueOperandSchema).optional(),\n attributeList: z.array(z.uuid()).optional(),\n});\n\nconst BeforeLoginHookSchema = z.object({\n handler: z.function(),\n invoker: z.string(),\n});\n\nconst AuthConfigBaseSchema = z.object({\n name: z.string().describe(\"Auth service name\"),\n hooks: z\n .object({\n beforeLogin: BeforeLoginHookSchema.optional().describe(\"Before login auth hook\"),\n })\n .optional()\n .describe(\"Auth hooks\"),\n machineUsers: z\n .record(z.string(), MachineUserSchema)\n .optional()\n .describe(\"Machine user definitions\"),\n oauth2Clients: z\n .record(z.string(), OAuth2ClientSchema)\n .optional()\n .describe(\"OAuth2 client definitions\"),\n idProvider: IdProviderSchema.optional().describe(\"Identity provider configuration\"),\n scim: SCIMSchema.optional().describe(\"SCIM provisioning configuration\"),\n tenantProvider: TenantProviderSchema.optional().describe(\"Multi-tenant provider configuration\"),\n connections: z\n .record(z.string(), AuthConnectionConfigSchema)\n .optional()\n .describe(\"Auth connection definitions for external OAuth2 providers\"),\n publishSessionEvents: z.boolean().optional().describe(\"Enable publishing session events\"),\n});\n\nexport const AuthConfigSchema = z\n .xor(\n [\n AuthConfigBaseSchema.extend({\n userProfile: UserProfileSchema.optional().describe(\"User profile configuration\"),\n machineUserAttributes: z.undefined().optional(),\n }),\n AuthConfigBaseSchema.extend({\n userProfile: z.undefined().optional(),\n machineUserAttributes: z\n .record(z.string(), TailorFieldSchema)\n .describe(\"Machine user attribute fields\"),\n }),\n ],\n {\n error: (iss) => {\n // zod may report error codes not covered by its type definitions\n // oxlint-disable-next-line typescript/no-unnecessary-condition\n if (iss.code !== \"invalid_union\") return undefined;\n // zod may report error codes not covered by its type definitions\n // oxlint-disable-next-line typescript/no-unnecessary-condition\n if (iss.errors.length < 2) return undefined;\n const isOnlyMutexViolation = iss.errors.every((variantErrors) =>\n variantErrors.every(\n (e) =>\n e.path.length === 1 &&\n (e.path[0] === \"userProfile\" || e.path[0] === \"machineUserAttributes\"),\n ),\n );\n if (isOnlyMutexViolation) {\n return \"Specify either `userProfile` or `machineUserAttributes`, not both.\";\n }\n return undefined;\n },\n },\n )\n .brand(\"AuthConfig\");\n","import { z } from \"zod\";\nimport { AuthInvokerSchema } from \"../auth\";\nimport { functionSchema } from \"../common\";\n\nexport const TailorDBTriggerSchema = z.object({\n kind: z.literal(\"tailordb\").describe(\"TailorDB record event trigger\"),\n events: z\n .array(\n z.enum([\n \"tailordb.type_record.created\",\n \"tailordb.type_record.updated\",\n \"tailordb.type_record.deleted\",\n ]),\n )\n .min(1)\n .transform((arr) => [...new Set(arr)])\n .describe(\"TailorDB event types to trigger on\"),\n typeName: z.string().describe(\"TailorDB type name to watch for events\"),\n condition: functionSchema.optional().describe(\"Condition function to filter events\"),\n});\n\nexport const ResolverExecutedTriggerSchema = z.object({\n kind: z.literal(\"resolverExecuted\"),\n resolverName: z.string().describe(\"Name of the resolver to trigger on\"),\n condition: functionSchema.optional().describe(\"Condition function to filter events\"),\n});\n\nexport const ScheduleTriggerSchema = z.object({\n kind: z.literal(\"schedule\"),\n cron: z.string().describe(\"CRON expression for the schedule\"),\n timezone: z\n .string()\n .optional()\n .default(\"UTC\")\n .describe(\"Timezone for the CRON schedule (default: UTC)\"),\n});\n\nexport const IncomingWebhookTriggerResponseSchema = z.object({\n body: functionSchema.optional().describe(\"Function returning the response body\"),\n statusCode: z.number().int().optional().describe(\"HTTP status code for the response\"),\n});\n\nexport const IncomingWebhookTriggerSchema = z.object({\n kind: z.literal(\"incomingWebhook\"),\n response: IncomingWebhookTriggerResponseSchema.optional().describe(\"Response configuration\"),\n});\n\nexport const IdpUserTriggerSchema = z.object({\n kind: z.literal(\"idpUser\").describe(\"IdP user event trigger\"),\n events: z\n .array(z.enum([\"idp.user.created\", \"idp.user.updated\", \"idp.user.deleted\"]))\n .min(1)\n .transform((arr) => [...new Set(arr)])\n .describe(\"IdP user event types to trigger on\"),\n idp: z\n .string()\n .optional()\n .describe(\n \"IdP namespace name to subscribe to. If omitted, the project's only IdP is used; throws when multiple IdPs exist.\",\n ),\n});\n\nexport const AuthAccessTokenTriggerSchema = z.object({\n kind: z.literal(\"authAccessToken\").describe(\"Auth access token event trigger\"),\n events: z\n .array(\n z.enum([\n \"auth.access_token.issued\",\n \"auth.access_token.refreshed\",\n \"auth.access_token.revoked\",\n ]),\n )\n .min(1)\n .transform((arr) => [...new Set(arr)])\n .describe(\"Auth access token event types to trigger on\"),\n});\n\nexport const TriggerSchema = z.discriminatedUnion(\"kind\", [\n TailorDBTriggerSchema,\n ResolverExecutedTriggerSchema,\n ScheduleTriggerSchema,\n IncomingWebhookTriggerSchema,\n IdpUserTriggerSchema,\n AuthAccessTokenTriggerSchema,\n]);\n\nexport const FunctionOperationSchema = z.object({\n kind: z.enum([\"function\", \"jobFunction\"]),\n body: functionSchema.describe(\"Function implementation\"),\n authInvoker: AuthInvokerSchema.optional().describe(\"Auth invoker for the function execution\"),\n});\n\nexport const GqlOperationSchema = z.object({\n kind: z.literal(\"graphql\"),\n appName: z.string().optional().describe(\"Target application name for the GraphQL query\"),\n query: z.preprocess((val) => String(val), z.string().describe(\"GraphQL query string\")),\n variables: functionSchema.optional().describe(\"Function to compute GraphQL variables\"),\n authInvoker: AuthInvokerSchema.optional().describe(\"Auth invoker for the GraphQL execution\"),\n});\n\nexport const WebhookOperationSchema = z.object({\n kind: z.literal(\"webhook\"),\n url: functionSchema.describe(\"Function returning the webhook URL\"),\n requestBody: functionSchema.optional().describe(\"Function to compute the request body\"),\n headers: z\n .record(z.string(), z.union([z.string(), z.object({ vault: z.string(), key: z.string() })]))\n .optional()\n .describe(\"HTTP headers for the webhook request\"),\n});\n\nexport const WorkflowOperationSchema = z.preprocess(\n (val) => {\n if (\n val == null ||\n typeof val !== \"object\" ||\n !(\"workflow\" in val) ||\n typeof val.workflow !== \"object\" ||\n val.workflow === null\n ) {\n return val;\n }\n\n const { workflow, ...rest } = val as { workflow: { name: string } };\n return { ...rest, workflowName: workflow.name };\n },\n z.object({\n kind: z.literal(\"workflow\"),\n workflowName: z.string().describe(\"Name of the workflow to execute\"),\n args: z\n .union([z.record(z.string(), z.unknown()), functionSchema])\n .optional()\n .describe(\"Arguments to pass to the workflow\"),\n authInvoker: AuthInvokerSchema.optional().describe(\"Auth invoker for the workflow execution\"),\n }),\n);\n\nconst OperationSchema = z.union([\n FunctionOperationSchema,\n GqlOperationSchema,\n WebhookOperationSchema,\n WorkflowOperationSchema,\n]);\n\nexport const ExecutorSchema = z.object({\n name: z.string().describe(\"Executor name\"),\n description: z.string().optional().describe(\"Executor description\"),\n disabled: z.boolean().optional().default(false).describe(\"Whether the executor is disabled\"),\n trigger: TriggerSchema.describe(\"Event trigger configuration\"),\n operation: OperationSchema.describe(\"Operation to execute when triggered\"),\n});\n","import { pathToFileURL } from \"node:url\";\nimport * as path from \"pathe\";\nimport { loadFilesWithIgnores } from \"@/cli/services/file-loader\";\nimport { logger, styles } from \"@/cli/shared/logger\";\nimport { ExecutorSchema } from \"@/parser/service/executor\";\nimport { isSdkBranded } from \"@/utils/brand\";\nimport type { ExecutorServiceConfig } from \"@/configure/config/types\";\nimport type { Executor } from \"@/types/executor.generated\";\n\n/**\n * Information about a plugin-generated executor converted to Executor format\n */\nexport interface PluginExecutor {\n /** The executor in standard Executor format */\n executor: Executor;\n /** Plugin ID that generated this executor */\n pluginId: string;\n /** Source type name (for type-attached executors) */\n sourceTypeName?: string;\n}\n\nexport type ExecutorService = {\n readonly config: ExecutorServiceConfig;\n readonly executors: Record<string, Executor>;\n readonly pluginExecutors: ReadonlyArray<PluginExecutor>;\n loadExecutors: () => Promise<Record<string, Executor> | undefined>;\n loadPluginExecutorFiles: (filePaths: string[]) => Promise<void>;\n};\n\n/**\n * Parameters for creating an ExecutorService\n */\nexport interface CreateExecutorServiceParams {\n /** The executor service configuration */\n config: ExecutorServiceConfig;\n}\n\n/**\n * Creates a new ExecutorService instance.\n * @param params - Parameters for creating the service\n * @returns A new ExecutorService instance\n */\nexport function createExecutorService(params: CreateExecutorServiceParams): ExecutorService {\n const { config } = params;\n const executors: Record<string, Executor> = {};\n const pluginExecutors: PluginExecutor[] = [];\n let loadPromise: Promise<Record<string, Executor> | undefined> | undefined;\n\n const loadExecutorForFile = async (executorFile: string): Promise<Executor | undefined> => {\n try {\n const executorModule = await import(pathToFileURL(executorFile).href);\n const result = ExecutorSchema.safeParse(executorModule.default);\n if (result.success) {\n const relativePath = path.relative(process.cwd(), executorFile);\n logger.log(\n `Executor: ${styles.successBright(`\"${result.data.name}\"`)} loaded from ${styles.path(relativePath)}`,\n );\n executors[executorFile] = result.data;\n return result.data;\n }\n if (isSdkBranded(executorModule.default, \"executor\")) {\n throw result.error;\n }\n } catch (error) {\n const relativePath = path.relative(process.cwd(), executorFile);\n logger.error(`Failed to load executor from ${styles.bold(relativePath)}`);\n logger.error(String(error));\n throw error;\n }\n return undefined;\n };\n\n return {\n config,\n get executors() {\n return executors;\n },\n get pluginExecutors() {\n return pluginExecutors;\n },\n loadExecutors: async () => {\n if (!loadPromise) {\n loadPromise = (async () => {\n if (config.files.length === 0) {\n return undefined;\n }\n\n const executorFiles = loadFilesWithIgnores(config);\n\n logger.newline();\n logger.log(`Found ${styles.highlight(executorFiles.length.toString())} executor files`);\n\n await Promise.all(executorFiles.map((executorFile) => loadExecutorForFile(executorFile)));\n return executors;\n })();\n }\n return loadPromise;\n },\n loadPluginExecutorFiles: async (filePaths: string[]) => {\n if (filePaths.length === 0) return;\n\n logger.newline();\n logger.log(\n `Loading ${styles.highlight(filePaths.length.toString())} plugin-generated executor files`,\n );\n\n for (const filePath of filePaths) {\n const executor = await loadExecutorForFile(filePath);\n if (executor) {\n // Track as plugin executor (plugin ID is extracted from file path)\n // File path format: .tailor-sdk/plugin/{executor-name}.ts\n pluginExecutors.push({\n executor,\n pluginId: \"plugin-generated\",\n sourceTypeName: undefined,\n });\n }\n }\n },\n };\n}\n"],"mappings":"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"}
|