{"version":3,"file":"globals-CMHSnj4w.mjs","names":[],"sources":["../src/vitest/workflow-runtime.ts","../src/vitest/globals.ts"],"sourcesContent":["// Default `tailor.workflow` runner installed by the `tailor-runtime` environment.\n// Must stay free of `vitest` (`vi`): it loads via `./globals` in the environment\n// realm where `vi` is unavailable, hence relative imports only (no `@/` alias).\nimport { START_DEFAULT } from \"../configure/services/workflow/registry\";\nimport { platformSerialize } from \"../utils/test/platform-serialize\";\nimport type { ExecJobFunctionOptions, StartWorkflowOptions } from \"../runtime/workflow\";\n\nexport interface DefaultWorkflowRuntime {\n  execJobFunction: (name: string, args?: unknown, options?: ExecJobFunctionOptions) => unknown;\n  startWorkflow: (name: string, args?: unknown, options?: StartWorkflowOptions) => Promise<string>;\n  resumeWorkflowExecution: (executionId: string) => Promise<string>;\n  wait: (key: string, payload?: unknown) => unknown;\n  resolve: (\n    executionId: string,\n    key: string,\n    callback: (payload: unknown) => unknown,\n  ) => Promise<void>;\n}\n\nexport function createDefaultWorkflowRuntime(): DefaultWorkflowRuntime {\n  const execJobFunction: DefaultWorkflowRuntime[\"execJobFunction\"] = (name) => {\n    throw new Error(\n      `No workflow job mock for \"${name}\". Acquire mockWorkflow() and call setJobHandler(...) or enqueueResult(...), or use runWorkflowLocally() for local workflow execution.`,\n    );\n  };\n  const startWorkflow: DefaultWorkflowRuntime[\"startWorkflow\"] = async (_name, args) => {\n    platformSerialize(args);\n    return START_DEFAULT;\n  };\n  const resumeWorkflowExecution: DefaultWorkflowRuntime[\"resumeWorkflowExecution\"] = async (\n    executionId,\n  ) => executionId;\n  return {\n    execJobFunction,\n    startWorkflow,\n    resumeWorkflowExecution,\n    wait: (key: string): unknown => {\n      throw new Error(\n        `No wait handler for \"${key}\". Acquire mockWorkflow() and call setWaitHandler(...).`,\n      );\n    },\n    resolve: async (): Promise<void> => {\n      throw new Error(\n        \"No resolve handler. Acquire mockWorkflow() and call setResolveHandler(...).\",\n      );\n    },\n  };\n}\n","/**\n * Base platform globals for the tailor-runtime test environment.\n *\n * This module is intentionally free of any `vitest` (`vi`) dependency so it can\n * be imported from the Vitest *environment* module (which runs in a realm where\n * `vi` is not available). It installs only the always-present structural pieces:\n *\n * - `globalThis.tailor` / `globalThis.tailordb` container objects\n * - `globalThis.tailor.context.getInvoker` default stub\n * - the platform error classes (`TailorErrors`,\n *   `TailorDBFileError`)\n * - the `__tailorRuntimeActive` sentinel flag\n *\n * The per-namespace mock behavior (TailorDB client, workflow, secretmanager, …)\n * is installed on demand by the `xMock()` factories in `./mock`, which run in\n * test context where `vi` *is* available.\n */\n\nimport { createDefaultWorkflowRuntime } from \"./workflow-runtime\";\nimport type { ContextInvoker } from \"../runtime/context\";\nimport type { TailorDBFileErrorCode } from \"../runtime/file\";\n\n// Sentinel set when the tailor-runtime environment is active. setup.ts reads it\n// to decide whether to run its blocked-globals lifecycle and config-secret\n// loading.\nexport const RUNTIME_FLAG_KEY = \"__tailorRuntimeActive\";\n\n// ---------------------------------------------------------------------------\n// Error class mocks\n// ---------------------------------------------------------------------------\n\ninterface TailorErrorItem {\n  message: string;\n  path: (string | number)[];\n}\n\nclass TailorErrorsMock extends Error {\n  errors: TailorErrorItem[];\n\n  constructor(errors: TailorErrorItem[]) {\n    if (!Array.isArray(errors)) {\n      throw new TypeError(\"TailorErrors: errors must be an array\");\n    }\n    const validated = errors.map((e, i) => {\n      if (typeof e.message !== \"string\") {\n        throw new TypeError(`TailorErrors: errors[${i}].message must be a string`);\n      }\n      if (!Array.isArray(e.path)) {\n        throw new TypeError(`TailorErrors: errors[${i}].path must be an array`);\n      }\n      return { message: e.message, path: e.path };\n    });\n    // Match the PF runtime's TailorErrors serialization, which prefixes the\n    // JSON payload with \"TailorErrors: \". Other SDK code (e.g. apply\n    // integration fixtures) strips this prefix before JSON.parse.\n    super(`TailorErrors: ${JSON.stringify({ errors: validated })}`);\n    this.name = \"TailorErrors\";\n    this.errors = validated;\n  }\n}\n\nclass TailorDBFileErrorMock extends Error {\n  code?: TailorDBFileErrorCode;\n  override cause: unknown;\n\n  constructor(message: string, code?: TailorDBFileErrorCode, cause?: unknown) {\n    super(message);\n    this.name = \"TailorDBFileError\";\n    this.code = code;\n    this.cause = cause;\n  }\n}\n\n// ---------------------------------------------------------------------------\n// Base install / cleanup\n// ---------------------------------------------------------------------------\n\n// Stub-only injection. SDK consumers configure invokers at the body level\n// (resolver/executor/workflow `.body()` `invoker` arg) or, for bundled tests,\n// via `vi.spyOn(globalThis.tailor.context, \"getInvoker\")`.\nfunction defaultGetInvoker(): ContextInvoker | null {\n  return null;\n}\n\n// No-op logger stub so `tailor.logger.*` calls in code under test don't throw\n// without an explicit `mockLogger()`. `mockLogger()` overlays vi.fn spies and\n// restores this on dispose.\nfunction noop(): void {}\nconst defaultLogger = {\n  debug: noop,\n  info: noop,\n  warn: noop,\n  error: noop,\n  setAttributes: noop,\n};\n\n/**\n * Install the always-present base platform globals (containers, context stub,\n * error classes, runtime flag). Per-namespace mocks are layered on top by the\n * `xMock()` factories in `./mock`.\n *\n * Acquire with a `using` declaration and the globals are removed when the\n * scope exits; alternatively call `cleanupPlatformGlobals` yourself.\n * @param global - The global object to install into (typically `globalThis`)\n * @returns A `Disposable` that removes the installed globals\n */\nexport function installPlatformGlobals(global: typeof globalThis): Disposable {\n  const g = global as Record<string, unknown>;\n\n  g[RUNTIME_FLAG_KEY] = true;\n\n  // Containers. Namespace mocks (secretmanager, …) are added to these by the\n  // corresponding `xMock()` on acquisition. `workflow` carries a default\n  // runner: job/wait/resolve calls throw a helpful error, and workflow starts\n  // return a placeholder execution id, unless overlaid by `mockWorkflow()` or\n  // `runWorkflowLocally()`.\n  g.tailor = {\n    context: { getInvoker: defaultGetInvoker },\n    workflow: createDefaultWorkflowRuntime(),\n    logger: { ...defaultLogger },\n  };\n  g.tailordb = {};\n\n  g.TailorErrors = TailorErrorsMock;\n  g.TailorDBFileError = TailorDBFileErrorMock;\n\n  return {\n    [Symbol.dispose]() {\n      cleanupPlatformGlobals(global);\n    },\n  };\n}\n\n/**\n * Remove the base platform globals (and anything the namespace mocks layered on\n * top, since they live under the same containers).\n * @param global - The global object to clean up (typically `globalThis`)\n */\nexport function cleanupPlatformGlobals(global: typeof globalThis): void {\n  const g = global as Record<string, unknown>;\n  delete g.tailordb;\n  delete g.tailor;\n  delete g.TailorErrors;\n  delete g.TailorDBFileError;\n  delete g[RUNTIME_FLAG_KEY];\n}\n"],"mappings":"6FAmBA,SAAgB,8BAAuD,CAarE,MAAO,CACL,gBAbkE,GAAS,CAC3E,MAAU,MACR,6BAA6B,EAAK,uIACpC,CACF,EAUE,oBAToE,EAAO,KAC3E,EAAkB,CAAI,EACf,GAQP,6BALA,IACG,EAKH,KAAO,GAAyB,CAC9B,MAAU,MACR,wBAAwB,EAAI,wDAC9B,CACF,EACA,QAAS,SAA2B,CAClC,MAAU,MACR,6EACF,CACF,CACF,CACF,CCtBA,MAAa,EAAmB,wBAWhC,IAAM,iBAAN,cAA+B,KAAM,CACnC,OAEA,YAAY,EAA2B,CACrC,GAAI,CAAC,MAAM,QAAQ,CAAM,EACvB,MAAU,UAAU,uCAAuC,EAE7D,IAAM,EAAY,EAAO,KAAK,EAAG,IAAM,CACrC,GAAI,OAAO,EAAE,SAAY,SACvB,MAAU,UAAU,wBAAwB,EAAE,2BAA2B,EAE3E,GAAI,CAAC,MAAM,QAAQ,EAAE,IAAI,EACvB,MAAU,UAAU,wBAAwB,EAAE,wBAAwB,EAExE,MAAO,CAAE,QAAS,EAAE,QAAS,KAAM,EAAE,IAAK,CAC5C,CAAC,EAID,MAAM,iBAAiB,KAAK,UAAU,CAAE,OAAQ,CAAU,CAAC,GAAG,EAC9D,KAAK,KAAO,eACZ,KAAK,OAAS,CAChB,CACF,EAEM,sBAAN,cAAoC,KAAM,CACxC,KACA,MAEA,YAAY,EAAiB,EAA8B,EAAiB,CAC1E,MAAM,CAAO,EACb,KAAK,KAAO,oBACZ,KAAK,KAAO,EACZ,KAAK,MAAQ,CACf,CACF,EASA,SAAS,mBAA2C,CAClD,OAAO,IACT,CAKA,SAAS,MAAa,CAAC,CACvB,MAAM,EAAgB,CACpB,MAAO,KACP,KAAM,KACN,KAAM,KACN,MAAO,KACP,cAAe,IACjB,EAYA,SAAgB,uBAAuB,EAAuC,CAC5E,IAAM,EAAI,EAmBV,MAjBA,GAAE,GAAoB,GAOtB,EAAE,OAAS,CACT,QAAS,CAAE,WAAY,iBAAkB,EACzC,SAAU,6BAA6B,EACvC,OAAQ,CAAE,GAAG,CAAc,CAC7B,EACA,EAAE,SAAW,CAAC,EAEd,EAAE,aAAe,iBACjB,EAAE,kBAAoB,sBAEf,CACL,CAAC,OAAO,UAAW,CACjB,uBAAuB,CAAM,CAC/B,CACF,CACF,CAOA,SAAgB,uBAAuB,EAAiC,CACtE,IAAM,EAAI,EACV,OAAO,EAAE,SACT,OAAO,EAAE,OACT,OAAO,EAAE,aACT,OAAO,EAAE,kBACT,OAAO,EAAE,EACX"}