@prisma/composer-cli 0.6.0-dev.21 → 0.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"family.mjs","names":["notOk","CliStructuredError$1"],"sources":["../../../0-framework/3-tooling/cli/dist/log-DfT2hHqi.mjs","../../../0-framework/3-tooling/cli/dist/engine-cli-BurDkrQe.mjs"],"sourcesContent":["import { n as executorLoadFailure } from \"./shared-BTnATsqm.mjs\";\nimport { notOk } from \"@internal/foundation/result\";\n//#region src/operations/deploy.ts\nasync function deploy(input) {\n\treturn deployWithDeps(input, {});\n}\n/** In-package variant threading the injection seam (the CLI's RunDeps, unit\n* tests). Deliberately NOT re-exported through `./control` — the seam mirrors\n* internal types and is not part of the published surface. */\nasync function deployWithDeps(input, deps) {\n\tconst cwd = input.cwd ?? process.cwd();\n\tlet executor;\n\ttry {\n\t\texecutor = await import(\"./execute-deploy-destroy-DfVJUICu.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"deploy\", error, cwd));\n\t}\n\treturn executor.executeDeploy(input, deps, cwd);\n}\n//#endregion\n//#region src/operations/destroy.ts\nasync function destroy(input) {\n\treturn destroyWithDeps(input, {});\n}\n/** In-package variant threading the injection seam (the CLI's RunDeps, unit\n* tests). Deliberately NOT re-exported through `./control` — the seam mirrors\n* internal types and is not part of the published surface. */\nasync function destroyWithDeps(input, deps) {\n\tconst cwd = input.cwd ?? process.cwd();\n\tlet executor;\n\ttry {\n\t\texecutor = await import(\"./execute-deploy-destroy-DfVJUICu.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"destroy\", error, cwd));\n\t}\n\treturn executor.executeDestroy(input, deps, cwd);\n}\n//#endregion\n//#region src/operations/dev.ts\nasync function dev(input) {\n\treturn devWithDeps(input, {});\n}\n/** In-package variant threading the injection seam (the CLI's RunDeps, unit\n* tests). Deliberately NOT re-exported through `./control` — the seam mirrors\n* internal types and is not part of the published surface. */\nasync function devWithDeps(input, deps) {\n\tconst cwd = input.cwd ?? process.cwd();\n\tlet executor;\n\ttry {\n\t\texecutor = await import(\"./execute-dev-BMTFWfFc.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"dev\", error, cwd));\n\t}\n\treturn executor.executeDev(input, deps, cwd);\n}\n//#endregion\n//#region src/operations/log.ts\nasync function log(input) {\n\treturn logWithDeps(input, {});\n}\n/** In-package variant threading the injection seam (the CLI's LogRunDeps,\n* unit tests). Deliberately NOT re-exported through `./control` — the seam\n* mirrors internal types and is not part of the published surface. */\nasync function logWithDeps(input, deps) {\n\tconst cwd = input.cwd ?? process.cwd();\n\tlet executor;\n\ttry {\n\t\texecutor = await import(\"./execute-log-Cay9hlKW.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"log\", error, cwd));\n\t}\n\treturn executor.executeLog(input, deps, cwd);\n}\n//#endregion\nexport { destroy as a, deployWithDeps as c, devWithDeps as i, logWithDeps as n, destroyWithDeps as o, dev as r, deploy as s, log as t };\n\n//# sourceMappingURL=log-DfT2hHqi.mjs.map","import { t as executionDiagnostics } from \"./shared-BTnATsqm.mjs\";\nimport { c as deployWithDeps, i as devWithDeps, n as logWithDeps, o as destroyWithDeps } from \"./log-DfT2hHqi.mjs\";\nimport { t as alchemyCommandLine } from \"./run-alchemy-D44OZlyB.mjs\";\nimport { DOCS_BASE } from \"@internal/foundation/errors\";\nimport { EnvironmentCredentialManager, createCli, defineCommand, defineCommandFamily, defineConfigSection, defineSessionCommand, exitWithChildStatus, flag, loadConfig, positional } from \"@prisma/cli-engine\";\nimport { CliStructuredError as CliStructuredError$1, notOk, ok } from \"@prisma/cli-engine/protocol\";\nimport { spawn } from \"node:child_process\";\n//#region src/family/translate-error.ts\n/**\n* The family boundary's error translation.\n*\n* Composer and the engine each carry a class called `CliStructuredError`, both\n* descended from the same prisma/prisma foundation, and both recognize errors\n* by duck-typing on `name === 'CliStructuredError'`. That means a composer\n* error handed to the engine untranslated is ACCEPTED — it does not fail\n* loudly, it renders. What it loses is its `fix`: composer's foundation\n* carries remediation as one prose string on that field, the engine carries it\n* as a `nextActions` list and has no `fix` at all, so the fix text is dropped\n* silently and the user is told what broke with no word on what to do about\n* it. Nothing about that failure is visible without a test that looks for the\n* fix on the other side, which is why there is one.\n*\n* Everything else on the envelope survives as-is; only remediation changes\n* representation.\n*/\n/**\n* Composer's `fix` is free prose — \"add this overrides block and reinstall\",\n* \"run the build, then retry\" — with no machine-readable command inside it.\n* `user-choice` is the engine's own kind for exactly that (it is what the\n* engine uses for its own config and prompt failures), so the text carries\n* over verbatim as one action rather than being parsed into a command the\n* author never wrote.\n*/\nfunction fixAsNextActions(fix) {\n\treturn fix === void 0 ? [] : [{\n\t\tkind: \"user-choice\",\n\t\tlabel: fix\n\t}];\n}\n/** Translates a composer failure into the engine's error type. Composer-side detail — `meta`, `where`, `docsUrl` — rides along untouched. */\nfunction toEngineError(error) {\n\treturn new CliStructuredError$1(error.code, error.message, {\n\t\tseverity: error.severity,\n\t\tnextActions: fixAsNextActions(error.fix),\n\t\t...error.why === void 0 ? {} : { why: error.why },\n\t\t...error.where === void 0 ? {} : { where: error.where },\n\t\t...error.meta === void 0 ? {} : { meta: error.meta },\n\t\t...error.docsUrl === void 0 ? {} : { docsUrl: error.docsUrl },\n\t\tcause: error\n\t});\n}\n//#endregion\n//#region src/family/converge.ts\n/** The adapter the operations call, backed by the engine's `ctx.spawn` so the\n* terminal reaches alchemy natively and the engine owns signal policy. */\nfunction convergeSpawn(ctx) {\n\treturn async (invocation) => {\n\t\tconst line = alchemyCommandLine(invocation);\n\t\treturn await ctx.spawn({\n\t\t\tcommand: line.command,\n\t\t\targs: line.args,\n\t\t\tcwd: line.cwd,\n\t\t\tenv: line.env\n\t\t});\n\t};\n}\n/** The in-process leg's deps: composer's existing seam, carrying the engine's\n* own client and workspace id rather than anything read from the env. */\nfunction operationDeps(spec) {\n\treturn {\n\t\talchemy: spec.alchemy,\n\t\tconfigPath: spec.configPath,\n\t\tcredentials: {\n\t\t\tworkspaceId: spec.workspaceId,\n\t\t\tclient: spec.client\n\t\t}\n\t};\n}\n/**\n* The reproduce hint a failed converge carries. Deliberately absent for an\n* aborted one: the user stopped it, so there is nothing to reproduce.\n*/\nfunction reproduceHint(failure) {\n\tconst diagnostics = executionDiagnostics(failure);\n\tif (diagnostics === void 0) return [];\n\treturn [{\n\t\tkind: \"run-command\",\n\t\tlabel: `Run the converge directly from ${diagnostics.cwd} to reproduce this`,\n\t\tcommand: diagnostics.reproduceCommand,\n\t\treason: `Generated stack file: ${diagnostics.stackFilePath}`\n\t}];\n}\n/**\n* How a FAILED converge settles. `deploy`, `destroy` and `dev` all end this\n* way and must not drift apart, so the decision lives here once rather than\n* inline in each handler.\n*\n* A failure that reached the child exits with the child's status verbatim and\n* carries the reproduce hint; a failure that never reached the child is an\n* ordinary structured error and gets the normal envelope. Nothing here reads\n* `signal` — see settleConverge.\n*/\nfunction settleConvergeFailure(failure, ctx) {\n\tconst child = ctx.lastChild();\n\tif (child !== void 0 && child.exitCode !== 0) return ok(exitWithChildStatus({ nextActions: reproduceHint(failure) }));\n\treturn notOk(toEngineError(failure));\n}\n/**\n* How a converge settles, now that the engine owns the child's status.\n*\n* Nothing here reads `signal`. `exitWithChildStatus` settles from the engine's\n* own record of the child, and a signal-killed one overrules whatever this\n* function asked for: 128 + the signal, no failure envelope, and the reproduce\n* hint dropped, because the user stopped the run and there is nothing to\n* reproduce.\n*\n* What is left is the operation's own verdict. A failure that reached the\n* child exits with the child's status verbatim and carries the reproduce hint;\n* a failure that never reached the child is an ordinary structured error and\n* gets the normal envelope.\n*\n* A SUCCESS presents its result even when the child was signal-killed. No\n* composer operation produces that pair today — each one reports a\n* signal-killed converge as a failure — and an operation that ever did would\n* have a real result worth showing. The run still exits 130, because the\n* engine settles a signal-terminated run from its own record of the signal\n* whatever the handler returns.\n*/\nfunction settleConverge(result, ctx, present) {\n\tif (!result.ok) return settleConvergeFailure(result.failure, ctx);\n\treturn ok(present(result.value));\n}\n//#endregion\n//#region src/family/section.ts\n/**\n* Composer's projection into `prisma.config.ts` — the `composer` section.\n*\n* The section is deliberately tiny. Composer's real configuration lives in\n* `prisma-composer.config.ts`, which holds executable values (Effect layers,\n* provider factories, container lifecycles) and can only be understood by\n* evaluating it inside a running command. A config-section validator loads\n* with the command tree at start-up and must be dependency-light and total,\n* so it is the wrong place to evaluate any of that. What the section carries\n* is therefore only the one fact the engine can usefully know before a\n* command runs: WHERE that file is, when the user wants to say so.\n*\n* Its fields grow only by amending the slice contract.\n*/\nconst KNOWN_FIELDS = [\"configPath\"];\nfunction diagnostic(spec) {\n\treturn {\n\t\tcode: spec.code,\n\t\tseverity: spec.severity,\n\t\tsummary: spec.summary,\n\t\t...spec.why === void 0 ? {} : { why: spec.why },\n\t\tnextActions: spec.fix === void 0 ? [] : [{\n\t\t\tkind: \"edit-file\",\n\t\t\tlabel: spec.fix\n\t\t}]\n\t};\n}\nfunction validate(raw) {\n\tif (raw === void 0) return {\n\t\tok: true,\n\t\tvalue: {},\n\t\tdiagnostics: []\n\t};\n\tif (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) return {\n\t\tok: false,\n\t\tdiagnostics: [diagnostic({\n\t\t\tcode: \"CONFIG.FIELD_INVALID\",\n\t\t\tseverity: \"error\",\n\t\t\tsummary: \"The `composer` section of prisma.config.ts must be an object.\",\n\t\t\tfix: \"Write `composer: { configPath: \\\"./prisma-composer.config.ts\\\" }`, or remove the section entirely.\"\n\t\t})]\n\t};\n\tlet record;\n\ttry {\n\t\trecord = { ...raw };\n\t} catch {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tdiagnostics: [diagnostic({\n\t\t\t\tcode: \"CONFIG.FIELD_INVALID\",\n\t\t\t\tseverity: \"error\",\n\t\t\t\tsummary: \"The `composer` section of prisma.config.ts could not be read.\",\n\t\t\t\twhy: \"Reading its fields threw, so nothing in it can be trusted.\",\n\t\t\t\tfix: \"Write it as a plain object literal, e.g. `composer: { configPath: \\\"./prisma-composer.config.ts\\\" }`.\"\n\t\t\t})]\n\t\t};\n\t}\n\tconst configPath = record[\"configPath\"];\n\tif (configPath !== void 0 && (typeof configPath !== \"string\" || configPath.length === 0)) return {\n\t\tok: false,\n\t\tdiagnostics: [diagnostic({\n\t\t\tcode: \"CONFIG.FIELD_INVALID\",\n\t\t\tseverity: \"error\",\n\t\t\tsummary: \"`composer.configPath` must be a non-empty string.\",\n\t\t\twhy: \"It names the prisma-composer.config.ts file to load.\",\n\t\t\tfix: \"Set it to a path, or remove it to search upward from the entry.\"\n\t\t})]\n\t};\n\tconst unknown = Object.keys(record).filter((key) => !KNOWN_FIELDS.includes(key));\n\treturn {\n\t\tok: true,\n\t\tvalue: configPath === void 0 ? {} : { configPath },\n\t\tdiagnostics: unknown.map((key) => diagnostic({\n\t\t\tcode: \"CONFIG.FIELD_UNKNOWN\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `The \\`composer\\` section has no field \\`${key}\\`; it is ignored.`,\n\t\t\tfix: `Remove \\`${key}\\`, or check it against the version of @prisma/composer you have installed.`\n\t\t}))\n\t};\n}\nconst composerSection = defineConfigSection({\n\tname: \"composer\",\n\tvalidate\n});\n//#endregion\n//#region src/family/workspace.ts\n/**\n* The workspace the in-process leg acts in, from the engine's credential\n* read. Handlers never decode a token and never read PRISMA_WORKSPACE_ID:\n* whether the credential came from a stored session or the environment, the\n* engine has already resolved it, and branching on where it came from is a\n* defect by the credential-manager design.\n*\n* Undefined when the active credential names no workspace — an environment\n* token whose claims carry none. The container descriptors raise their own\n* \"workspace required\" error in that case, which is the error the user needs.\n*/\nasync function workspaceIdOf(ctx) {\n\treturn (await ctx.activeCredential())?.workspaceId;\n}\n//#endregion\n//#region src/family/commands/deploy.ts\n/**\n* `deploy <entry>` — a result command that hands the terminal to alchemy.\n*\n* `--production` is gone. It was accepted and then always errored (\"only\n* valid with destroy\"), so no invocation using it could ever have succeeded;\n* deploy targets production by default when no `--stage` is given.\n*/\nconst createDeployCommand = (operations) => defineCommand({\n\thelp: {\n\t\tsummary: \"Deploy the application whose root node is <entry>'s default export.\",\n\t\texamples: [\"{bin} deploy src/service.ts\", \"{bin} deploy src/service.ts --stage feat-auth\"]\n\t},\n\targs: {\n\t\tpositionals: { entry: positional.string({\n\t\t\tbrief: \"The module whose default export is the application root.\",\n\t\t\tplaceholder: \"entry\"\n\t\t}) },\n\t\tflags: {\n\t\t\tname: flag.string({\n\t\t\t\tbrief: \"Override the root node's name — the deploy's application name.\",\n\t\t\t\tplaceholder: \"name\"\n\t\t\t}),\n\t\t\tstage: flag.string({\n\t\t\t\tbrief: \"Deploy scope to target; omit for production.\",\n\t\t\t\tplaceholder: \"stage\"\n\t\t\t})\n\t\t}\n\t},\n\tneeds: {\n\t\tconfig: composerSection,\n\t\tcredentials: \"child\"\n\t},\n\tmaySpawn: true,\n\thandler: async (args, ctx) => {\n\t\tconst alchemy = convergeSpawn(ctx);\n\t\treturn settleConverge(await operations.deploy({\n\t\t\tentry: args.positionals.entry,\n\t\t\tname: args.flags.name,\n\t\t\tstage: args.flags.stage,\n\t\t\tcwd: ctx.cwd\n\t\t}, operationDeps({\n\t\t\talchemy,\n\t\t\tconfigPath: ctx.config.configPath,\n\t\t\tworkspaceId: await workspaceIdOf(ctx),\n\t\t\tclient: ctx.api\n\t\t})), ctx, ({ summary }) => ctx.present({ data: { summary: summary ?? null } }, {\n\t\t\thuman: (ui) => summary === void 0 ? [{\n\t\t\t\tkind: \"summary\",\n\t\t\t\tstatus: \"ok\",\n\t\t\t\ttext: \"Deployed.\"\n\t\t\t}] : [{\n\t\t\t\tkind: \"summary\",\n\t\t\t\tstatus: \"ok\",\n\t\t\t\ttext: `Deployed ${ui.emphasize(summary.app)}.`\n\t\t\t}, {\n\t\t\t\tkind: \"table\",\n\t\t\t\tcolumns: [\"Address\", \"Deployed\"],\n\t\t\t\trows: summary.nodes.map((node) => [node.address, node.entities.map((entity) => `${entity.kind} ${entity.id}`).join(\", \")])\n\t\t\t}],\n\t\t\tstdout: () => [],\n\t\t\tjson: () => ({ summary: summary ?? null }),\n\t\t\tnext: () => []\n\t\t}));\n\t}\n});\n//#endregion\n//#region src/family/target.ts\n/**\n* `destroy`'s target, from its two mutually exclusive flags. Kept out of the\n* grammar because the engine's flag layer has no \"exactly one of these\"\n* construct — and because both wrong shapes need their own remedy, which a\n* generic arity error could not give.\n*/\nfunction targetOf(stage, production) {\n\tif (stage !== void 0 && production) return notOk(new CliStructuredError$1(\"DEPLOY.TARGET_CONFLICT\", \"Pass either --stage <name> or --production to `destroy`, not both.\"));\n\tif (stage === void 0 && !production) return notOk(new CliStructuredError$1(\"DEPLOY.TARGET_MISSING\", \"`destroy` requires an explicit target.\", { nextActions: [{\n\t\tkind: \"user-choice\",\n\t\tlabel: \"Pass --stage <name> to tear down a branch environment, or --production to tear down the production environment.\"\n\t}] }));\n\treturn ok(stage !== void 0 ? {\n\t\tkind: \"stage\",\n\t\tstage\n\t} : { kind: \"production\" });\n}\n//#endregion\n//#region src/family/commands/destroy.ts\n/**\n* `destroy <entry>` — deploy's mirror: same derivation, alchemy destroy.\n*\n* No confirmation prompt, matching the CLI this replaces. The front door\n* cannot know what the child will tear down, so a consent step here would be\n* asking the user to approve a list nobody has computed yet; if destroy\n* deserves one it belongs in composer's own operation, not in the grammar.\n*/\nconst createDestroyCommand = (operations) => defineCommand({\n\thelp: {\n\t\tsummary: \"Tear down the application whose root node is <entry>'s default export.\",\n\t\tdescription: \"Same derivation as deploy. Requires an explicit target: --stage <name> for a branch environment, or --production for the production environment.\",\n\t\texamples: [\"{bin} destroy src/service.ts --stage feat-auth\", \"{bin} destroy src/service.ts --production\"]\n\t},\n\targs: {\n\t\tpositionals: { entry: positional.string({\n\t\t\tbrief: \"The module whose default export is the application root.\",\n\t\t\tplaceholder: \"entry\"\n\t\t}) },\n\t\tflags: {\n\t\t\tname: flag.string({\n\t\t\t\tbrief: \"Override the root node's name — the application name to tear down.\",\n\t\t\t\tplaceholder: \"name\"\n\t\t\t}),\n\t\t\tstage: flag.string({\n\t\t\t\tbrief: \"Tear down this branch environment.\",\n\t\t\t\tplaceholder: \"stage\"\n\t\t\t}),\n\t\t\tproduction: flag.boolean({ brief: \"Tear down the project-level production environment.\" })\n\t\t}\n\t},\n\tneeds: {\n\t\tconfig: composerSection,\n\t\tcredentials: \"child\"\n\t},\n\tmaySpawn: true,\n\thandler: async (args, ctx) => {\n\t\tconst target = targetOf(args.flags.stage, args.flags.production);\n\t\tif (!target.ok) return target;\n\t\tconst alchemy = convergeSpawn(ctx);\n\t\treturn settleConverge(await operations.destroy({\n\t\t\tentry: args.positionals.entry,\n\t\t\tname: args.flags.name,\n\t\t\ttarget: target.value,\n\t\t\tcwd: ctx.cwd,\n\t\t\tonEvent: (event) => {\n\t\t\t\tif (event.kind !== \"no-local-deploy-state\") return;\n\t\t\t\tctx.report({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `No prior deploy state under ${event.cwd} — if you deployed from a different directory, run destroy from there; otherwise this is a no-op.`\n\t\t\t\t});\n\t\t\t}\n\t\t}, operationDeps({\n\t\t\talchemy,\n\t\t\tconfigPath: ctx.config.configPath,\n\t\t\tworkspaceId: await workspaceIdOf(ctx),\n\t\t\tclient: ctx.api\n\t\t})), ctx, () => ctx.present({ data: void 0 }, {\n\t\t\thuman: () => [{\n\t\t\t\tkind: \"summary\",\n\t\t\t\tstatus: \"ok\",\n\t\t\t\ttext: \"Destroyed.\"\n\t\t\t}],\n\t\t\tstdout: () => [],\n\t\t\tjson: () => void 0,\n\t\t\tnext: () => []\n\t\t}));\n\t}\n});\n//#endregion\n//#region src/family/commands/dev.ts\nconst STOP_STEP = \"Stopping the app's services — emulators and data stay up\";\n/** Resolves when the run is asked to stop. */\nfunction stopRequested(signal) {\n\tif (signal.aborted) return Promise.resolve();\n\treturn new Promise((resolve) => {\n\t\tsignal.addEventListener(\"abort\", () => resolve(), { once: true });\n\t});\n}\n/**\n* One converge at a time. `ctx.spawn` refuses a second live child, and the\n* watch loop can well fire a rebuild while the previous converge is still\n* running — so a request that arrives during a live converge joins the single\n* queued follow-up instead of starting its own. That extends the coalescing\n* the watcher already does across a burst of edits to cover the converge\n* itself, and it is sound because every dev converge is the SAME invocation:\n* one stack file at one fixed path, rewritten in place before each request.\n*/\nfunction coalescedConverge(run) {\n\tlet live;\n\tlet queued;\n\tconst start = (invocation) => {\n\t\tconst outcome = run(invocation);\n\t\tconst settled = outcome.then(() => void 0, () => void 0);\n\t\tlive = settled;\n\t\tsettled.then(() => {\n\t\t\tif (live === settled) live = void 0;\n\t\t});\n\t\treturn outcome;\n\t};\n\treturn (invocation) => {\n\t\tconst running = live;\n\t\tif (running === void 0) return start(invocation);\n\t\tqueued ??= running.then(() => {\n\t\t\tqueued = void 0;\n\t\t\treturn start(invocation);\n\t\t});\n\t\treturn queued;\n\t};\n}\n/** The front door, ordered by address depth (fewest dots first) then lexicographically. */\nfunction frontDoorOrder(endpoints) {\n\treturn [...endpoints].sort((a, b) => {\n\t\tconst depth = a.address.split(\".\").length - b.address.split(\".\").length;\n\t\tif (depth !== 0) return depth;\n\t\treturn a.address < b.address ? -1 : a.address > b.address ? 1 : 0;\n\t});\n}\n/**\n* The operation's events as engine events. The legacy `[dev]` console prefix\n* is gone: these are commentary the engine renders and frames.\n*/\nfunction reportDevEvent(report, lastChild) {\n\tlet stopFailed = false;\n\treturn (event) => {\n\t\tswitch (event.kind) {\n\t\t\tcase \"ready\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"status\",\n\t\t\t\t\tsubject: \"dev\",\n\t\t\t\t\tstatus: \"ready\"\n\t\t\t\t});\n\t\t\t\tfor (const endpoint of frontDoorOrder(event.endpoints)) report({\n\t\t\t\t\tkind: \"endpoint\",\n\t\t\t\t\tname: endpoint.address,\n\t\t\t\t\turl: endpoint.url\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"unwatchable\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `${event.address} has no watchable inputs.`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"rebuild-failed\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `Rebuild failed: ${event.message}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"watch-error\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `Watch error: ${event.message}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"converge-failed\": {\n\t\t\t\tconst child = lastChild();\n\t\t\t\tif (child !== void 0 && child.signal !== null) return;\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `Converge failed — the running app is untouched; still watching.\nGenerated stack file: ${event.stackFilePath}\\nRun \\`${event.reproduceCommand}\\` from ${event.cwd} to reproduce this directly.`\n\t\t\t\t});\n\t\t\t\treport({\n\t\t\t\t\tkind: \"remediation\",\n\t\t\t\t\taction: {\n\t\t\t\t\t\tkind: \"run-command\",\n\t\t\t\t\t\tlabel: `Run the converge directly from ${event.cwd} to reproduce this`,\n\t\t\t\t\t\tcommand: event.reproduceCommand,\n\t\t\t\t\t\treason: `Generated stack file: ${event.stackFilePath}`\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"stopping\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"step-started\",\n\t\t\t\t\tstep: STOP_STEP,\n\t\t\t\t\tid: \"dev-stop\"\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"stop-error\":\n\t\t\t\tstopFailed = true;\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `A service refused to stop: ${event.message}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"stopped\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"step-finished\",\n\t\t\t\t\tstep: STOP_STEP,\n\t\t\t\t\tid: \"dev-stop\",\n\t\t\t\t\toutcome: stopFailed ? \"warning\" : \"ok\"\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t}\n\t};\n}\nconst createDevCommand = (operations) => defineSessionCommand({\n\thelp: {\n\t\tsummary: \"Bring up the application whose root node is <entry>'s default export, entirely on this machine.\",\n\t\tdescription: \"Runs credential-free and watches the app for changes, reconverging on every edit. Logs are a separate command; run `log <entry>` to tail them.\",\n\t\texamples: [\"{bin} dev src/service.ts\", \"{bin} dev src/service.ts --fresh\"]\n\t},\n\targs: {\n\t\tpositionals: { entry: positional.string({\n\t\t\tbrief: \"The module whose default export is the application root.\",\n\t\t\tplaceholder: \"entry\"\n\t\t}) },\n\t\tflags: {\n\t\t\tname: flag.string({\n\t\t\t\tbrief: \"Override the root node's name — the dev instance's application name.\",\n\t\t\t\tplaceholder: \"name\"\n\t\t\t}),\n\t\t\tfresh: flag.boolean({ brief: \"Destroy the dev stack and wipe the dev state directory before starting.\" })\n\t\t}\n\t},\n\tneeds: { config: composerSection },\n\tmaySpawn: true,\n\thandler: async (args, ctx) => {\n\t\tconst alchemy = convergeSpawn(ctx);\n\t\tconst result = await operations.dev({\n\t\t\tentry: args.positionals.entry,\n\t\t\tname: args.flags.name,\n\t\t\tfresh: args.flags.fresh,\n\t\t\tcwd: ctx.cwd,\n\t\t\tonEvent: reportDevEvent(ctx.report, ctx.lastChild)\n\t\t}, {\n\t\t\talchemy: coalescedConverge(alchemy),\n\t\t\tconfigPath: ctx.config.configPath\n\t\t});\n\t\tif (!result.ok) return settleConvergeFailure(result.failure, ctx);\n\t\tawait stopRequested(ctx.signal);\n\t\tawait result.value.stop();\n\t\treturn ok(void 0);\n\t}\n});\n//#endregion\n//#region src/family/commands/log.ts\n/**\n* `log <entry> [address]` — a session command that tails the merged logs of\n* the app running locally on this machine.\n*\n* It reads the LOCAL dev-emulator daemon, not the platform's logs surface, so\n* it is credential-free. It hands the terminal to nothing, which is why it\n* does not declare `maySpawn` and keeps json support: the log lines ARE its\n* json surface.\n*\n* Windows is refused inside the operation itself (LOG.PLATFORM_UNSUPPORTED),\n* which is why nothing here reads the platform.\n*/\n/** An empty screen reads as broken, so show a little recent history before going live. */\nconst DEFAULT_TAIL = 20;\nconst createLogCommand = (operations) => defineSessionCommand({\n\thelp: {\n\t\tsummary: \"Tail the merged logs of the locally-running application whose root node is <entry>'s default export.\",\n\t\texamples: [\"{bin} log src/service.ts\", \"{bin} log src/service.ts catalog.service\"]\n\t},\n\targs: {\n\t\tpositionals: {\n\t\t\tentry: positional.string({\n\t\t\t\tbrief: \"The module whose default export is the application root.\",\n\t\t\t\tplaceholder: \"entry\"\n\t\t\t}),\n\t\t\taddress: positional.optionalString({\n\t\t\t\tbrief: \"Only this service's lines, by its dotted address (catalog.service); every service when absent.\",\n\t\t\t\tplaceholder: \"address\"\n\t\t\t})\n\t\t},\n\t\tflags: {\n\t\t\tname: flag.string({\n\t\t\t\tbrief: \"Override the root node's name — the dev instance's application name.\",\n\t\t\t\tplaceholder: \"name\"\n\t\t\t}),\n\t\t\ttail: flag.number({\n\t\t\t\tbrief: `How many trailing history lines to show before live output (default ${String(DEFAULT_TAIL)}).`,\n\t\t\t\tplaceholder: \"lines\",\n\t\t\t\tdefault: DEFAULT_TAIL\n\t\t\t})\n\t\t}\n\t},\n\tneeds: { config: composerSection },\n\thandler: async (args, ctx) => {\n\t\tconst reportLogEvent = (event) => {\n\t\t\tctx.report({\n\t\t\t\tkind: \"message\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\ttext: event.kind === \"stream-failed\" ? `Stream failed: ${event.message}` : `Falling behind — dropped the ${String(event.count)} oldest lines.`\n\t\t\t});\n\t\t};\n\t\tconst result = await operations.log({\n\t\t\tentry: args.positionals.entry,\n\t\t\tname: args.flags.name,\n\t\t\taddress: args.positionals.address,\n\t\t\ttail: args.flags.tail ?? DEFAULT_TAIL,\n\t\t\tcwd: ctx.cwd,\n\t\t\tsignal: ctx.signal,\n\t\t\tonEvent: reportLogEvent\n\t\t}, { configPath: ctx.config.configPath });\n\t\tif (!result.ok) return notOk(toEngineError(result.failure));\n\t\tconst attached = result.value;\n\t\tif (attached.services.length === 0) {\n\t\t\tctx.report({\n\t\t\t\tkind: \"message\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\ttext: `No running services for \"${attached.appName}\" — start it first with \\`dev ${args.positionals.entry}\\`.`\n\t\t\t});\n\t\t\treturn ok(void 0);\n\t\t}\n\t\tfor await (const { service, line } of attached.lines) ctx.report({\n\t\t\tkind: \"output\",\n\t\t\tsource: service,\n\t\t\tchannel: \"data\",\n\t\t\tline: `[${service}] ${line}`\n\t\t});\n\t\treturn ok(void 0);\n\t}\n});\n//#endregion\n//#region src/family/family.ts\n/**\n* Composer's `CommandFamily` — the unit the engine mounts, whether the process\n* is composer's own CLI or the `prisma` bin.\n*\n* This module and everything it reaches statically must stay free of alchemy\n* and of effect VALUE imports: the `prisma` bin imports the family directly,\n* so anything in this static graph loads on `prisma --version`. The mechanism\n* that holds it is the existing lazy boundary inside the operation modules —\n* `operations/deploy.ts`, `destroy.ts`, `dev.ts` and `log.ts` each `await\n* import()` their executor, and it is the executors that reach the provider\n* tree. Importing the operations here is therefore free; importing an\n* executor, or flattening one of those dynamic imports, is not.\n* scripts/check-family-static-graph.mjs enforces this against BUILT output,\n* where type-only imports have already been erased.\n*\n* The four commands close over the operations they are given, so a host can\n* mount this family against the test double and exercise real grammar, real\n* arg validation and real handlers with no alchemy behind them.\n*/\nconst realOperations = {\n\tdeploy: deployWithDeps,\n\tdestroy: destroyWithDeps,\n\tdev: devWithDeps,\n\tlog: logWithDeps\n};\nfunction createComposerFamily(options = {}) {\n\tconst operations = options.operations ?? realOperations;\n\treturn defineCommandFamily({\n\t\tconfigSection: composerSection,\n\t\tcommands: {\n\t\t\tdeploy: createDeployCommand(operations),\n\t\t\tdestroy: createDestroyCommand(operations),\n\t\t\tdev: createDevCommand(operations),\n\t\t\tlog: createLogCommand(operations)\n\t\t},\n\t\tdocsBaseUrl: DOCS_BASE\n\t});\n}\n//#endregion\n//#region src/family/runtime.ts\n/**\n* Everything environmental the engine needs, assembled from a host process.\n*\n* The engine takes no globals: streams, cwd, env, TTY-ness, exit and signal\n* subscription all arrive through `Runtime`, which is what lets a test drive a\n* whole run without touching `process`. Composing one is the substantive part\n* of hosting the engine — `createCli` and `Cli.run` are two calls.\n*\n* Credentials come from the engine's own environment-only manager, which\n* composes a session from PRISMA_SERVICE_TOKEN / PRISMA_WORKSPACE_ID and\n* refuses every mutation. That is the whole of composer's standalone auth\n* story: this CLI has no login flow and mounts no auth commands, so there is\n* nothing to store — the two variables ARE the credential.\n*/\n/** Where the management API lives. Matches the lowering client's default origin; the env var is the escape hatch for staging. */\nconst DEFAULT_MANAGEMENT_API_BASE_URL = \"https://api.prisma.io\";\nconst DEFAULT_AUTH_BASE_URL = \"https://auth.prisma.io\";\n/**\n* Starts the converge child: inherited stdio, this process's own group, no\n* `detached` and no new console — which is what lets the terminal deliver\n* Ctrl-C to the child natively instead of the CLI forwarding it. The engine\n* never imports node:child_process; this adapter is the whole of the host's\n* side of that seam.\n*/\nconst spawnChild = (request) => {\n\tconst child = spawn(request.command, [...request.args], {\n\t\tcwd: request.cwd,\n\t\tstdio: \"inherit\",\n\t\tenv: request.env\n\t});\n\treturn {\n\t\tended: new Promise((resolve, reject) => {\n\t\t\tchild.on(\"error\", reject);\n\t\t\tchild.on(\"close\", (exitCode, signal) => {\n\t\t\t\tresolve({\n\t\t\t\t\texitCode,\n\t\t\t\t\tsignal\n\t\t\t\t});\n\t\t\t});\n\t\t}),\n\t\tkill: (signal) => {\n\t\t\tchild.kill(signal);\n\t\t}\n\t};\n};\n/**\n* The SDK's client construction config. The engine requires all four fields\n* whenever a credential manager is wired, but this host reaches none of the\n* login paths: an environment credential carries no refresh token, so nothing\n* ever refreshes and `clientId`/`redirectUri` are never read. They are\n* env-overridable rather than hard-coded so a staging run can point the whole\n* client somewhere else in one place.\n*/\nfunction clientConfig(env, apiBaseUrl) {\n\treturn {\n\t\tclientId: env[\"PRISMA_CLIENT_ID\"] ?? \"prisma-composer-cli\",\n\t\tredirectUri: env[\"PRISMA_REDIRECT_URI\"] ?? \"http://127.0.0.1/callback\",\n\t\tapiBaseUrl,\n\t\tauthBaseUrl: env[\"PRISMA_AUTH_URL\"] ?? DEFAULT_AUTH_BASE_URL\n\t};\n}\n/**\n* What this process runs on, for `ctx.host`. Bun and Deno both announce\n* themselves in `versions`; nothing else does, so an absent marker means Node.\n*/\nfunction describeHost(host) {\n\tconst name = [\"bun\", \"deno\"].find((candidate) => host.versions[candidate] !== void 0) ?? \"node\";\n\treturn {\n\t\truntime: {\n\t\t\tname,\n\t\t\tversion: host.versions[name] ?? host.version\n\t\t},\n\t\tplatform: host.platform,\n\t\tarch: host.arch\n\t};\n}\n/**\n* Which package manager invoked us, read from the `npm_config_user_agent`\n* every major manager sets (`pnpm/10.27.0 npm/? node/v24.16.0 darwin arm64`).\n* `undefined` when the CLI was run directly rather than through a manager — a\n* normal case, not a failure, so nothing is inferred from the filesystem, and\n* the engine falls back to its own detection from the project at cwd.\n*/\nfunction detectPackageManager(env) {\n\tconst agent = env[\"npm_config_user_agent\"];\n\tif (agent === void 0) return void 0;\n\tconst name = agent.split(\"/\")[0];\n\tswitch (name) {\n\t\tcase \"npm\":\n\t\tcase \"pnpm\":\n\t\tcase \"yarn\":\n\t\tcase \"bun\":\n\t\tcase \"deno\": return name;\n\t\tdefault: return;\n\t}\n}\n/**\n* The config loader arrives as a function rather than an already-loaded config\n* because the engine reads `prisma.config.ts` on demand — only when the command\n* it is about to run declares a config section, and with whatever file\n* `--config` named. A host that loaded the file up front would read it for runs\n* that never needed it, and would have nowhere to put `--config`.\n*\n* Nothing here answers \"is this CI\": the engine detects it from `env` itself,\n* and `isCIOverride` exists only for hosts where that detection cannot be\n* right — composer is not one.\n*/\nfunction createRuntime(host, loadConfig) {\n\tconst env = host.env;\n\tconst apiBaseUrl = env[\"PRISMA_MANAGEMENT_API_URL\"] ?? DEFAULT_MANAGEMENT_API_BASE_URL;\n\tconst packageManager = detectPackageManager(env);\n\treturn {\n\t\tstdout: host.stdout,\n\t\tstderr: host.stderr,\n\t\tstdin: host.stdin,\n\t\tcwd: host.cwd(),\n\t\tenv,\n\t\tisTty: {\n\t\t\tstdin: host.stdin.isTTY === true,\n\t\t\tstdout: host.stdout.isTTY === true,\n\t\t\tstderr: host.stderr.isTTY === true\n\t\t},\n\t\texit: (code) => host.exit(code),\n\t\tonSignal: (cb) => {\n\t\t\tconst onSigint = () => {\n\t\t\t\tcb(\"SIGINT\");\n\t\t\t};\n\t\t\tconst onSigterm = () => {\n\t\t\t\tcb(\"SIGTERM\");\n\t\t\t};\n\t\t\thost.on(\"SIGINT\", onSigint);\n\t\t\thost.on(\"SIGTERM\", onSigterm);\n\t\t\treturn () => {\n\t\t\t\thost.off(\"SIGINT\", onSigint);\n\t\t\t\thost.off(\"SIGTERM\", onSigterm);\n\t\t\t};\n\t\t},\n\t\tloadConfig,\n\t\tcredentialManager: new EnvironmentCredentialManager({ env }),\n\t\tmanagementApiClientConfig: clientConfig(env, apiBaseUrl),\n\t\tspawn: spawnChild,\n\t\tmanagementApi: { baseUrl: apiBaseUrl },\n\t\t...packageManager !== void 0 && { packageManager },\n\t\thost: describeHost(host)\n\t};\n}\n//#endregion\n//#region src/family/engine-cli.ts\n/**\n* Composer's own CLI, rebuilt as a thin composition of the family it\n* publishes: `createCli` over `createComposerFamily()`, `Cli.run` with a\n* Runtime. Grammar, help, arg validation, output framing, exit codes and\n* signal ownership all belong to the engine now — this module contributes the\n* family and the environment, and nothing else.\n*\n* Running composer's commands through the same path an external host uses is\n* the point: it is what proves the family works standalone before the `prisma`\n* bin mounts it.\n*\n* This IS composer's CLI. The clipanion shell it replaced, and the bespoke\n* runner that shelled out to alchemy, are gone; `bin.ts` is a call into here.\n*/\nconst BINARY_NAME = \"prisma-composer\";\n/**\n* Composer's commands mount at the top level of its own CLI (`prisma-composer\n* deploy`); under the `prisma` bin the same family mounts one level down\n* (`prisma composer deploy`). The family is identical either way — only the\n* mount paths differ, which is exactly the split `createCli` draws between\n* `commandFamilies` and `commands`.\n*/\nfunction mountedTree(family) {\n\treturn { ...family.commands };\n}\nfunction createComposerCli(spec) {\n\tconst family = createComposerFamily({ operations: spec.operations });\n\treturn createCli({\n\t\tname: BINARY_NAME,\n\t\tversion: spec.version,\n\t\tcommandFamilies: [family],\n\t\tgroups: {},\n\t\tcommands: mountedTree(family)\n\t});\n}\n/**\n* Composes the Runtime and runs one invocation. Returns the exit code rather\n* than exiting, so the caller owns the process — a bin assigns it to\n* `process.exitCode` and lets the streams drain, as composer's CLI has always\n* done.\n*\n* `prisma.config.ts` is not read here. The loader goes in as a function, and the\n* engine calls it only when the command it is about to run declares a config\n* section, passing it the file `--config` named; the loader resolves that\n* against the host's cwd.\n*/\nfunction runComposerCli(argv, host, spec, hooks) {\n\tconst runtime = createRuntime(host, (configPath) => loadConfig(host.cwd(), configPath));\n\treturn createComposerCli(spec).run(argv, runtime, hooks);\n}\n//#endregion\nexport { realOperations as a, createComposerFamily as i, createComposerCli as n, composerSection as o, runComposerCli as r, toEngineError as s, BINARY_NAME as t };\n\n//# sourceMappingURL=engine-cli-BurDkrQe.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"family.mjs","names":["notOk","CliStructuredError$1","isCI"],"sources":["../../../0-framework/3-tooling/cli/dist/log-DfT2hHqi.mjs","../../../../node_modules/ci-info/vendors.json","../../../../node_modules/ci-info/index.js","../../../0-framework/3-tooling/cli/dist/engine-cli-BXXH4fM-.mjs"],"sourcesContent":["import { n as executorLoadFailure } from \"./shared-BTnATsqm.mjs\";\nimport { notOk } from \"@internal/foundation/result\";\n//#region src/operations/deploy.ts\nasync function deploy(input) {\n\treturn deployWithDeps(input, {});\n}\n/** In-package variant threading the injection seam (the CLI's RunDeps, unit\n* tests). Deliberately NOT re-exported through `./control` — the seam mirrors\n* internal types and is not part of the published surface. */\nasync function deployWithDeps(input, deps) {\n\tconst cwd = input.cwd ?? process.cwd();\n\tlet executor;\n\ttry {\n\t\texecutor = await import(\"./execute-deploy-destroy-DfVJUICu.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"deploy\", error, cwd));\n\t}\n\treturn executor.executeDeploy(input, deps, cwd);\n}\n//#endregion\n//#region src/operations/destroy.ts\nasync function destroy(input) {\n\treturn destroyWithDeps(input, {});\n}\n/** In-package variant threading the injection seam (the CLI's RunDeps, unit\n* tests). Deliberately NOT re-exported through `./control` — the seam mirrors\n* internal types and is not part of the published surface. */\nasync function destroyWithDeps(input, deps) {\n\tconst cwd = input.cwd ?? process.cwd();\n\tlet executor;\n\ttry {\n\t\texecutor = await import(\"./execute-deploy-destroy-DfVJUICu.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"destroy\", error, cwd));\n\t}\n\treturn executor.executeDestroy(input, deps, cwd);\n}\n//#endregion\n//#region src/operations/dev.ts\nasync function dev(input) {\n\treturn devWithDeps(input, {});\n}\n/** In-package variant threading the injection seam (the CLI's RunDeps, unit\n* tests). Deliberately NOT re-exported through `./control` — the seam mirrors\n* internal types and is not part of the published surface. */\nasync function devWithDeps(input, deps) {\n\tconst cwd = input.cwd ?? process.cwd();\n\tlet executor;\n\ttry {\n\t\texecutor = await import(\"./execute-dev-BMTFWfFc.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"dev\", error, cwd));\n\t}\n\treturn executor.executeDev(input, deps, cwd);\n}\n//#endregion\n//#region src/operations/log.ts\nasync function log(input) {\n\treturn logWithDeps(input, {});\n}\n/** In-package variant threading the injection seam (the CLI's LogRunDeps,\n* unit tests). Deliberately NOT re-exported through `./control` — the seam\n* mirrors internal types and is not part of the published surface. */\nasync function logWithDeps(input, deps) {\n\tconst cwd = input.cwd ?? process.cwd();\n\tlet executor;\n\ttry {\n\t\texecutor = await import(\"./execute-log-Cay9hlKW.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"log\", error, cwd));\n\t}\n\treturn executor.executeLog(input, deps, cwd);\n}\n//#endregion\nexport { destroy as a, deployWithDeps as c, devWithDeps as i, logWithDeps as n, destroyWithDeps as o, dev as r, deploy as s, log as t };\n\n//# sourceMappingURL=log-DfT2hHqi.mjs.map","","'use strict'\n\nconst vendors = require('./vendors.json')\n\nconst env = process.env\n\n// Used for testing only\nObject.defineProperty(exports, '_vendors', {\n value: vendors.map(function (v) {\n return v.constant\n })\n})\n\nexports.name = null\nexports.isPR = null\nexports.id = null\n\nif (env.CI !== 'false') {\n vendors.forEach(function (vendor) {\n const envs = Array.isArray(vendor.env) ? vendor.env : [vendor.env]\n const isCI = envs.every(function (obj) {\n return checkEnv(obj)\n })\n\n exports[vendor.constant] = isCI\n\n if (!isCI) {\n return\n }\n\n exports.name = vendor.name\n exports.isPR = checkPR(vendor)\n exports.id = vendor.constant\n })\n}\n\nexports.isCI = !!(\n env.CI !== 'false' && // Bypass all checks if CI env is explicitly set to 'false'\n (env.BUILD_ID || // Jenkins, Cloudbees\n env.BUILD_NUMBER || // Jenkins, TeamCity\n env.CI || // Travis CI, CircleCI, Cirrus CI, Gitlab CI, Appveyor, CodeShip, dsari, Cloudflare Pages/Workers\n env.CI_APP_ID || // Appflow\n env.CI_BUILD_ID || // Appflow\n env.CI_BUILD_NUMBER || // Appflow\n env.CI_NAME || // Codeship and others\n env.CONTINUOUS_INTEGRATION || // Travis CI, Cirrus CI\n env.RUN_ID || // TaskCluster, dsari\n exports.name ||\n false)\n)\n\nfunction checkEnv (obj) {\n // \"env\": \"CIRRUS\"\n if (typeof obj === 'string') return !!env[obj]\n\n // \"env\": { \"env\": \"NODE\", \"includes\": \"/app/.heroku/node/bin/node\" }\n if ('env' in obj) {\n // Currently there are no other types, uncomment when there are\n // if ('includes' in obj) {\n return env[obj.env] && env[obj.env].includes(obj.includes)\n // }\n }\n\n if ('any' in obj) {\n return obj.any.some(function (k) {\n return !!env[k]\n })\n }\n\n return Object.keys(obj).every(function (k) {\n return env[k] === obj[k]\n })\n}\n\nfunction checkPR (vendor) {\n switch (typeof vendor.pr) {\n case 'string':\n // \"pr\": \"CIRRUS_PR\"\n return !!env[vendor.pr]\n case 'object':\n if ('env' in vendor.pr) {\n if ('any' in vendor.pr) {\n // \"pr\": { \"env\": \"CODEBUILD_WEBHOOK_EVENT\", \"any\": [\"PULL_REQUEST_CREATED\", \"PULL_REQUEST_UPDATED\"] }\n return vendor.pr.any.some(function (key) {\n return env[vendor.pr.env] === key\n })\n } else {\n // \"pr\": { \"env\": \"BUILDKITE_PULL_REQUEST\", \"ne\": \"false\" }\n return vendor.pr.env in env && env[vendor.pr.env] !== vendor.pr.ne\n }\n } else if ('any' in vendor.pr) {\n // \"pr\": { \"any\": [\"ghprbPullId\", \"CHANGE_ID\"] }\n return vendor.pr.any.some(function (key) {\n return !!env[key]\n })\n } else {\n // \"pr\": { \"DRONE_BUILD_EVENT\": \"pull_request\" }\n return checkEnv(vendor.pr)\n }\n default:\n // PR detection not supported for this vendor\n return null\n }\n}\n","import { t as executionDiagnostics } from \"./shared-BTnATsqm.mjs\";\nimport { c as deployWithDeps, i as devWithDeps, n as logWithDeps, o as destroyWithDeps } from \"./log-DfT2hHqi.mjs\";\nimport { t as alchemyCommandLine } from \"./run-alchemy-D44OZlyB.mjs\";\nimport { DOCS_BASE } from \"@internal/foundation/errors\";\nimport { EnvironmentCredentialManager, createCli, defineCommand, defineCommandFamily, defineConfigSection, defineSessionCommand, exitWithChildStatus, flag, loadConfig, positional } from \"@prisma/cli-engine\";\nimport { CliStructuredError as CliStructuredError$1, notOk, ok } from \"@prisma/cli-engine/protocol\";\nimport { spawn } from \"node:child_process\";\nimport { isCI } from \"ci-info\";\n//#region src/family/translate-error.ts\n/**\n* The family boundary's error translation.\n*\n* Composer and the engine each carry a class called `CliStructuredError`, both\n* descended from the same prisma/prisma foundation, and both recognize errors\n* by duck-typing on `name === 'CliStructuredError'`. That means a composer\n* error handed to the engine untranslated is ACCEPTED — it does not fail\n* loudly, it renders. What it loses is its `fix`: composer's foundation\n* carries remediation as one prose string on that field, the engine carries it\n* as a `nextActions` list and has no `fix` at all, so the fix text is dropped\n* silently and the user is told what broke with no word on what to do about\n* it. Nothing about that failure is visible without a test that looks for the\n* fix on the other side, which is why there is one.\n*\n* Everything else on the envelope survives as-is; only remediation changes\n* representation.\n*/\n/**\n* Composer's `fix` is free prose — \"add this overrides block and reinstall\",\n* \"run the build, then retry\" — with no machine-readable command inside it.\n* `user-choice` is the engine's own kind for exactly that (it is what the\n* engine uses for its own config and prompt failures), so the text carries\n* over verbatim as one action rather than being parsed into a command the\n* author never wrote.\n*/\nfunction fixAsNextActions(fix) {\n\treturn fix === void 0 ? [] : [{\n\t\tkind: \"user-choice\",\n\t\tlabel: fix\n\t}];\n}\n/** Translates a composer failure into the engine's error type. Composer-side detail — `meta`, `where`, `docsUrl` — rides along untouched. */\nfunction toEngineError(error) {\n\treturn new CliStructuredError$1(error.code, error.message, {\n\t\tseverity: error.severity,\n\t\tnextActions: fixAsNextActions(error.fix),\n\t\t...error.why === void 0 ? {} : { why: error.why },\n\t\t...error.where === void 0 ? {} : { where: error.where },\n\t\t...error.meta === void 0 ? {} : { meta: error.meta },\n\t\t...error.docsUrl === void 0 ? {} : { docsUrl: error.docsUrl },\n\t\tcause: error\n\t});\n}\n//#endregion\n//#region src/family/converge.ts\n/** The adapter the operations call, backed by the engine's `ctx.spawn` so the\n* terminal reaches alchemy natively and the engine owns signal policy. */\nfunction convergeSpawn(ctx) {\n\treturn async (invocation) => {\n\t\tconst line = alchemyCommandLine(invocation);\n\t\treturn await ctx.spawn({\n\t\t\tcommand: line.command,\n\t\t\targs: line.args,\n\t\t\tcwd: line.cwd,\n\t\t\tenv: line.env\n\t\t});\n\t};\n}\n/** The in-process leg's deps: composer's existing seam, carrying the engine's\n* own client and workspace id rather than anything read from the env. */\nfunction operationDeps(spec) {\n\treturn {\n\t\talchemy: spec.alchemy,\n\t\tconfigPath: spec.configPath,\n\t\tcredentials: {\n\t\t\tworkspaceId: spec.workspaceId,\n\t\t\tclient: spec.client\n\t\t}\n\t};\n}\n/**\n* The reproduce hint a failed converge carries. Deliberately absent for an\n* aborted one: the user stopped it, so there is nothing to reproduce.\n*/\nfunction reproduceHint(failure) {\n\tconst diagnostics = executionDiagnostics(failure);\n\tif (diagnostics === void 0) return [];\n\treturn [{\n\t\tkind: \"run-command\",\n\t\tlabel: `Run the converge directly from ${diagnostics.cwd} to reproduce this`,\n\t\tcommand: diagnostics.reproduceCommand,\n\t\treason: `Generated stack file: ${diagnostics.stackFilePath}`\n\t}];\n}\n/**\n* How a FAILED converge settles. `deploy`, `destroy` and `dev` all end this\n* way and must not drift apart, so the decision lives here once rather than\n* inline in each handler.\n*\n* A failure that reached the child exits with the child's status verbatim and\n* carries the reproduce hint; a failure that never reached the child is an\n* ordinary structured error and gets the normal envelope. Nothing here reads\n* `signal` — see settleConverge.\n*/\nfunction settleConvergeFailure(failure, ctx) {\n\tconst child = ctx.lastChild();\n\tif (child !== void 0 && child.exitCode !== 0) return ok(exitWithChildStatus({ nextActions: reproduceHint(failure) }));\n\treturn notOk(toEngineError(failure));\n}\n/**\n* How a converge settles, now that the engine owns the child's status.\n*\n* Nothing here reads `signal`. `exitWithChildStatus` settles from the engine's\n* own record of the child, and a signal-killed one overrules whatever this\n* function asked for: 128 + the signal, no failure envelope, and the reproduce\n* hint dropped, because the user stopped the run and there is nothing to\n* reproduce.\n*\n* What is left is the operation's own verdict. A failure that reached the\n* child exits with the child's status verbatim and carries the reproduce hint;\n* a failure that never reached the child is an ordinary structured error and\n* gets the normal envelope.\n*\n* A SUCCESS presents its result even when the child was signal-killed. No\n* composer operation produces that pair today — each one reports a\n* signal-killed converge as a failure — and an operation that ever did would\n* have a real result worth showing. The run still exits 130, because the\n* engine settles a signal-terminated run from its own record of the signal\n* whatever the handler returns.\n*/\nfunction settleConverge(result, ctx, present) {\n\tif (!result.ok) return settleConvergeFailure(result.failure, ctx);\n\treturn ok(present(result.value));\n}\n//#endregion\n//#region src/family/section.ts\n/**\n* Composer's projection into `prisma.config.ts` — the `composer` section.\n*\n* The section is deliberately tiny. Composer's real configuration lives in\n* `prisma-composer.config.ts`, which holds executable values (Effect layers,\n* provider factories, container lifecycles) and can only be understood by\n* evaluating it inside a running command. A config-section validator loads\n* with the command tree at start-up and must be dependency-light and total,\n* so it is the wrong place to evaluate any of that. What the section carries\n* is therefore only the one fact the engine can usefully know before a\n* command runs: WHERE that file is, when the user wants to say so.\n*\n* Its fields grow only by amending the slice contract.\n*/\nconst KNOWN_FIELDS = [\"configPath\"];\nfunction diagnostic(spec) {\n\treturn {\n\t\tcode: spec.code,\n\t\tseverity: spec.severity,\n\t\tsummary: spec.summary,\n\t\t...spec.why === void 0 ? {} : { why: spec.why },\n\t\tnextActions: spec.fix === void 0 ? [] : [{\n\t\t\tkind: \"edit-file\",\n\t\t\tlabel: spec.fix\n\t\t}]\n\t};\n}\nfunction validate(raw) {\n\tif (raw === void 0) return {\n\t\tok: true,\n\t\tvalue: {},\n\t\tdiagnostics: []\n\t};\n\tif (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) return {\n\t\tok: false,\n\t\tdiagnostics: [diagnostic({\n\t\t\tcode: \"CONFIG.FIELD_INVALID\",\n\t\t\tseverity: \"error\",\n\t\t\tsummary: \"The `composer` section of prisma.config.ts must be an object.\",\n\t\t\tfix: \"Write `composer: { configPath: \\\"./prisma-composer.config.ts\\\" }`, or remove the section entirely.\"\n\t\t})]\n\t};\n\tlet record;\n\ttry {\n\t\trecord = { ...raw };\n\t} catch {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tdiagnostics: [diagnostic({\n\t\t\t\tcode: \"CONFIG.FIELD_INVALID\",\n\t\t\t\tseverity: \"error\",\n\t\t\t\tsummary: \"The `composer` section of prisma.config.ts could not be read.\",\n\t\t\t\twhy: \"Reading its fields threw, so nothing in it can be trusted.\",\n\t\t\t\tfix: \"Write it as a plain object literal, e.g. `composer: { configPath: \\\"./prisma-composer.config.ts\\\" }`.\"\n\t\t\t})]\n\t\t};\n\t}\n\tconst configPath = record[\"configPath\"];\n\tif (configPath !== void 0 && (typeof configPath !== \"string\" || configPath.length === 0)) return {\n\t\tok: false,\n\t\tdiagnostics: [diagnostic({\n\t\t\tcode: \"CONFIG.FIELD_INVALID\",\n\t\t\tseverity: \"error\",\n\t\t\tsummary: \"`composer.configPath` must be a non-empty string.\",\n\t\t\twhy: \"It names the prisma-composer.config.ts file to load.\",\n\t\t\tfix: \"Set it to a path, or remove it to search upward from the entry.\"\n\t\t})]\n\t};\n\tconst unknown = Object.keys(record).filter((key) => !KNOWN_FIELDS.includes(key));\n\treturn {\n\t\tok: true,\n\t\tvalue: configPath === void 0 ? {} : { configPath },\n\t\tdiagnostics: unknown.map((key) => diagnostic({\n\t\t\tcode: \"CONFIG.FIELD_UNKNOWN\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `The \\`composer\\` section has no field \\`${key}\\`; it is ignored.`,\n\t\t\tfix: `Remove \\`${key}\\`, or check it against the version of @prisma/composer you have installed.`\n\t\t}))\n\t};\n}\nconst composerSection = defineConfigSection({\n\tname: \"composer\",\n\tvalidate\n});\n//#endregion\n//#region src/family/workspace.ts\n/**\n* The workspace the in-process leg acts in, from the engine's credential\n* read. Handlers never decode a token and never read PRISMA_WORKSPACE_ID:\n* whether the credential came from a stored session or the environment, the\n* engine has already resolved it, and branching on where it came from is a\n* defect by the credential-manager design.\n*\n* Undefined when the active credential names no workspace — an environment\n* token whose claims carry none. The container descriptors raise their own\n* \"workspace required\" error in that case, which is the error the user needs.\n*/\nasync function workspaceIdOf(ctx) {\n\treturn (await ctx.activeCredential())?.workspaceId;\n}\n//#endregion\n//#region src/family/commands/deploy.ts\n/**\n* `deploy <entry>` — a result command that hands the terminal to alchemy.\n*\n* `--production` is gone. It was accepted and then always errored (\"only\n* valid with destroy\"), so no invocation using it could ever have succeeded;\n* deploy targets production by default when no `--stage` is given.\n*/\nconst createDeployCommand = (operations) => defineCommand({\n\thelp: {\n\t\tsummary: \"Deploy the application whose root node is <entry>'s default export.\",\n\t\texamples: [\"{bin} deploy src/service.ts\", \"{bin} deploy src/service.ts --stage feat-auth\"]\n\t},\n\targs: {\n\t\tpositionals: { entry: positional.string({\n\t\t\tbrief: \"The module whose default export is the application root.\",\n\t\t\tplaceholder: \"entry\"\n\t\t}) },\n\t\tflags: {\n\t\t\tname: flag.string({\n\t\t\t\tbrief: \"Override the root node's name — the deploy's application name.\",\n\t\t\t\tplaceholder: \"name\"\n\t\t\t}),\n\t\t\tstage: flag.string({\n\t\t\t\tbrief: \"Deploy scope to target; omit for production.\",\n\t\t\t\tplaceholder: \"stage\"\n\t\t\t})\n\t\t}\n\t},\n\tneeds: {\n\t\tconfig: composerSection,\n\t\tcredentials: \"child\"\n\t},\n\tmaySpawn: true,\n\thandler: async (args, ctx) => {\n\t\tconst alchemy = convergeSpawn(ctx);\n\t\treturn settleConverge(await operations.deploy({\n\t\t\tentry: args.positionals.entry,\n\t\t\tname: args.flags.name,\n\t\t\tstage: args.flags.stage,\n\t\t\tcwd: ctx.cwd\n\t\t}, operationDeps({\n\t\t\talchemy,\n\t\t\tconfigPath: ctx.config.configPath,\n\t\t\tworkspaceId: await workspaceIdOf(ctx),\n\t\t\tclient: ctx.api\n\t\t})), ctx, ({ summary }) => ctx.present({ data: { summary: summary ?? null } }, {\n\t\t\thuman: (ui) => summary === void 0 ? [{\n\t\t\t\tkind: \"summary\",\n\t\t\t\tstatus: \"ok\",\n\t\t\t\ttext: \"Deployed.\"\n\t\t\t}] : [{\n\t\t\t\tkind: \"summary\",\n\t\t\t\tstatus: \"ok\",\n\t\t\t\ttext: `Deployed ${ui.emphasize(summary.app)}.`\n\t\t\t}, {\n\t\t\t\tkind: \"table\",\n\t\t\t\tcolumns: [\"Address\", \"Deployed\"],\n\t\t\t\trows: summary.nodes.map((node) => [node.address, node.entities.map((entity) => `${entity.kind} ${entity.id}`).join(\", \")])\n\t\t\t}],\n\t\t\tjson: () => ({ summary: summary ?? null })\n\t\t}));\n\t}\n});\n//#endregion\n//#region src/family/target.ts\n/**\n* `destroy`'s target, from its two mutually exclusive flags. Kept out of the\n* grammar because the engine's flag layer has no \"exactly one of these\"\n* construct — and because both wrong shapes need their own remedy, which a\n* generic arity error could not give.\n*/\nfunction targetOf(stage, production) {\n\tif (stage !== void 0 && production) return notOk(new CliStructuredError$1(\"DEPLOY.TARGET_CONFLICT\", \"Pass either --stage <name> or --production to `destroy`, not both.\"));\n\tif (stage === void 0 && !production) return notOk(new CliStructuredError$1(\"DEPLOY.TARGET_MISSING\", \"`destroy` requires an explicit target.\", { nextActions: [{\n\t\tkind: \"user-choice\",\n\t\tlabel: \"Pass --stage <name> to tear down a branch environment, or --production to tear down the production environment.\"\n\t}] }));\n\treturn ok(stage !== void 0 ? {\n\t\tkind: \"stage\",\n\t\tstage\n\t} : { kind: \"production\" });\n}\n//#endregion\n//#region src/family/commands/destroy.ts\n/**\n* `destroy <entry>` — deploy's mirror: same derivation, alchemy destroy.\n*\n* No confirmation prompt, matching the CLI this replaces. The front door\n* cannot know what the child will tear down, so a consent step here would be\n* asking the user to approve a list nobody has computed yet; if destroy\n* deserves one it belongs in composer's own operation, not in the grammar.\n*/\nconst createDestroyCommand = (operations) => defineCommand({\n\thelp: {\n\t\tsummary: \"Tear down the application whose root node is <entry>'s default export.\",\n\t\tdescription: \"Same derivation as deploy. Requires an explicit target: --stage <name> for a branch environment, or --production for the production environment.\",\n\t\texamples: [\"{bin} destroy src/service.ts --stage feat-auth\", \"{bin} destroy src/service.ts --production\"]\n\t},\n\targs: {\n\t\tpositionals: { entry: positional.string({\n\t\t\tbrief: \"The module whose default export is the application root.\",\n\t\t\tplaceholder: \"entry\"\n\t\t}) },\n\t\tflags: {\n\t\t\tname: flag.string({\n\t\t\t\tbrief: \"Override the root node's name — the application name to tear down.\",\n\t\t\t\tplaceholder: \"name\"\n\t\t\t}),\n\t\t\tstage: flag.string({\n\t\t\t\tbrief: \"Tear down this branch environment.\",\n\t\t\t\tplaceholder: \"stage\"\n\t\t\t}),\n\t\t\tproduction: flag.boolean({ brief: \"Tear down the project-level production environment.\" })\n\t\t}\n\t},\n\tneeds: {\n\t\tconfig: composerSection,\n\t\tcredentials: \"child\"\n\t},\n\tmaySpawn: true,\n\thandler: async (args, ctx) => {\n\t\tconst target = targetOf(args.flags.stage, args.flags.production);\n\t\tif (!target.ok) return target;\n\t\tconst alchemy = convergeSpawn(ctx);\n\t\treturn settleConverge(await operations.destroy({\n\t\t\tentry: args.positionals.entry,\n\t\t\tname: args.flags.name,\n\t\t\ttarget: target.value,\n\t\t\tcwd: ctx.cwd,\n\t\t\tonEvent: (event) => {\n\t\t\t\tif (event.kind !== \"no-local-deploy-state\") return;\n\t\t\t\tctx.report({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `No prior deploy state under ${event.cwd} — if you deployed from a different directory, run destroy from there; otherwise this is a no-op.`\n\t\t\t\t});\n\t\t\t}\n\t\t}, operationDeps({\n\t\t\talchemy,\n\t\t\tconfigPath: ctx.config.configPath,\n\t\t\tworkspaceId: await workspaceIdOf(ctx),\n\t\t\tclient: ctx.api\n\t\t})), ctx, () => ctx.present({ data: void 0 }, { human: () => [{\n\t\t\tkind: \"summary\",\n\t\t\tstatus: \"ok\",\n\t\t\ttext: \"Destroyed.\"\n\t\t}] }));\n\t}\n});\n//#endregion\n//#region src/family/commands/dev.ts\nconst STOP_STEP = \"Stopping the app's services — emulators and data stay up\";\n/** Resolves when the run is asked to stop. */\nfunction stopRequested(signal) {\n\tif (signal.aborted) return Promise.resolve();\n\treturn new Promise((resolve) => {\n\t\tsignal.addEventListener(\"abort\", () => resolve(), { once: true });\n\t});\n}\n/**\n* One converge at a time. `ctx.spawn` refuses a second live child, and the\n* watch loop can well fire a rebuild while the previous converge is still\n* running — so a request that arrives during a live converge joins the single\n* queued follow-up instead of starting its own. That extends the coalescing\n* the watcher already does across a burst of edits to cover the converge\n* itself, and it is sound because every dev converge is the SAME invocation:\n* one stack file at one fixed path, rewritten in place before each request.\n*/\nfunction coalescedConverge(run) {\n\tlet live;\n\tlet queued;\n\tconst start = (invocation) => {\n\t\tconst outcome = run(invocation);\n\t\tconst settled = outcome.then(() => void 0, () => void 0);\n\t\tlive = settled;\n\t\tsettled.then(() => {\n\t\t\tif (live === settled) live = void 0;\n\t\t});\n\t\treturn outcome;\n\t};\n\treturn (invocation) => {\n\t\tconst running = live;\n\t\tif (running === void 0) return start(invocation);\n\t\tqueued ??= running.then(() => {\n\t\t\tqueued = void 0;\n\t\t\treturn start(invocation);\n\t\t});\n\t\treturn queued;\n\t};\n}\n/** The front door, ordered by address depth (fewest dots first) then lexicographically. */\nfunction frontDoorOrder(endpoints) {\n\treturn [...endpoints].sort((a, b) => {\n\t\tconst depth = a.address.split(\".\").length - b.address.split(\".\").length;\n\t\tif (depth !== 0) return depth;\n\t\treturn a.address < b.address ? -1 : a.address > b.address ? 1 : 0;\n\t});\n}\n/**\n* The operation's events as engine events. The legacy `[dev]` console prefix\n* is gone: these are commentary the engine renders and frames.\n*/\nfunction reportDevEvent(report, lastChild) {\n\tlet stopFailed = false;\n\treturn (event) => {\n\t\tswitch (event.kind) {\n\t\t\tcase \"ready\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"status\",\n\t\t\t\t\tsubject: \"dev\",\n\t\t\t\t\tstatus: \"ready\"\n\t\t\t\t});\n\t\t\t\tfor (const endpoint of frontDoorOrder(event.endpoints)) report({\n\t\t\t\t\tkind: \"endpoint\",\n\t\t\t\t\tname: endpoint.address,\n\t\t\t\t\turl: endpoint.url\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"unwatchable\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `${event.address} has no watchable inputs.`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"rebuild-failed\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `Rebuild failed: ${event.message}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"watch-error\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `Watch error: ${event.message}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"converge-failed\": {\n\t\t\t\tconst child = lastChild();\n\t\t\t\tif (child !== void 0 && child.signal !== null) return;\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `Converge failed — the running app is untouched; still watching.\nGenerated stack file: ${event.stackFilePath}\\nRun \\`${event.reproduceCommand}\\` from ${event.cwd} to reproduce this directly.`\n\t\t\t\t});\n\t\t\t\treport({\n\t\t\t\t\tkind: \"remediation\",\n\t\t\t\t\taction: {\n\t\t\t\t\t\tkind: \"run-command\",\n\t\t\t\t\t\tlabel: `Run the converge directly from ${event.cwd} to reproduce this`,\n\t\t\t\t\t\tcommand: event.reproduceCommand,\n\t\t\t\t\t\treason: `Generated stack file: ${event.stackFilePath}`\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"stopping\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"step-started\",\n\t\t\t\t\tstep: STOP_STEP,\n\t\t\t\t\tid: \"dev-stop\"\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"stop-error\":\n\t\t\t\tstopFailed = true;\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `A service refused to stop: ${event.message}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"stopped\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"step-finished\",\n\t\t\t\t\tstep: STOP_STEP,\n\t\t\t\t\tid: \"dev-stop\",\n\t\t\t\t\toutcome: stopFailed ? \"warning\" : \"ok\"\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t}\n\t};\n}\nconst createDevCommand = (operations) => defineSessionCommand({\n\thelp: {\n\t\tsummary: \"Bring up the application whose root node is <entry>'s default export, entirely on this machine.\",\n\t\tdescription: \"Runs credential-free and watches the app for changes, reconverging on every edit. Logs are a separate command; run `log <entry>` to tail them.\",\n\t\texamples: [\"{bin} dev src/service.ts\", \"{bin} dev src/service.ts --fresh\"]\n\t},\n\targs: {\n\t\tpositionals: { entry: positional.string({\n\t\t\tbrief: \"The module whose default export is the application root.\",\n\t\t\tplaceholder: \"entry\"\n\t\t}) },\n\t\tflags: {\n\t\t\tname: flag.string({\n\t\t\t\tbrief: \"Override the root node's name — the dev instance's application name.\",\n\t\t\t\tplaceholder: \"name\"\n\t\t\t}),\n\t\t\tfresh: flag.boolean({ brief: \"Destroy the dev stack and wipe the dev state directory before starting.\" })\n\t\t}\n\t},\n\tneeds: { config: composerSection },\n\tmaySpawn: true,\n\thandler: async (args, ctx) => {\n\t\tconst alchemy = convergeSpawn(ctx);\n\t\tconst result = await operations.dev({\n\t\t\tentry: args.positionals.entry,\n\t\t\tname: args.flags.name,\n\t\t\tfresh: args.flags.fresh,\n\t\t\tcwd: ctx.cwd,\n\t\t\tonEvent: reportDevEvent(ctx.report, ctx.lastChild)\n\t\t}, {\n\t\t\talchemy: coalescedConverge(alchemy),\n\t\t\tconfigPath: ctx.config.configPath\n\t\t});\n\t\tif (!result.ok) return settleConvergeFailure(result.failure, ctx);\n\t\tawait stopRequested(ctx.signal);\n\t\tawait result.value.stop();\n\t\treturn ok(void 0);\n\t}\n});\n//#endregion\n//#region src/family/commands/log.ts\n/**\n* `log <entry> [address]` — a session command that tails the merged logs of\n* the app running locally on this machine.\n*\n* It reads the LOCAL dev-emulator daemon, not the platform's logs surface, so\n* it is credential-free. It hands the terminal to nothing, which is why it\n* does not declare `maySpawn` and keeps json support: the log lines ARE its\n* json surface.\n*\n* Windows is refused inside the operation itself (LOG.PLATFORM_UNSUPPORTED),\n* which is why nothing here reads the platform.\n*/\n/** An empty screen reads as broken, so show a little recent history before going live. */\nconst DEFAULT_TAIL = 20;\nconst createLogCommand = (operations) => defineSessionCommand({\n\thelp: {\n\t\tsummary: \"Tail the merged logs of the locally-running application whose root node is <entry>'s default export.\",\n\t\texamples: [\"{bin} log src/service.ts\", \"{bin} log src/service.ts catalog.service\"]\n\t},\n\targs: {\n\t\tpositionals: {\n\t\t\tentry: positional.string({\n\t\t\t\tbrief: \"The module whose default export is the application root.\",\n\t\t\t\tplaceholder: \"entry\"\n\t\t\t}),\n\t\t\taddress: positional.optionalString({\n\t\t\t\tbrief: \"Only this service's lines, by its dotted address (catalog.service); every service when absent.\",\n\t\t\t\tplaceholder: \"address\"\n\t\t\t})\n\t\t},\n\t\tflags: {\n\t\t\tname: flag.string({\n\t\t\t\tbrief: \"Override the root node's name — the dev instance's application name.\",\n\t\t\t\tplaceholder: \"name\"\n\t\t\t}),\n\t\t\ttail: flag.number({\n\t\t\t\tbrief: `How many trailing history lines to show before live output (default ${String(DEFAULT_TAIL)}).`,\n\t\t\t\tplaceholder: \"lines\",\n\t\t\t\tdefault: DEFAULT_TAIL\n\t\t\t})\n\t\t}\n\t},\n\tneeds: { config: composerSection },\n\thandler: async (args, ctx) => {\n\t\tconst reportLogEvent = (event) => {\n\t\t\tctx.report({\n\t\t\t\tkind: \"message\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\ttext: event.kind === \"stream-failed\" ? `Stream failed: ${event.message}` : `Falling behind — dropped the ${String(event.count)} oldest lines.`\n\t\t\t});\n\t\t};\n\t\tconst result = await operations.log({\n\t\t\tentry: args.positionals.entry,\n\t\t\tname: args.flags.name,\n\t\t\taddress: args.positionals.address,\n\t\t\ttail: args.flags.tail ?? DEFAULT_TAIL,\n\t\t\tcwd: ctx.cwd,\n\t\t\tsignal: ctx.signal,\n\t\t\tonEvent: reportLogEvent\n\t\t}, { configPath: ctx.config.configPath });\n\t\tif (!result.ok) return notOk(toEngineError(result.failure));\n\t\tconst attached = result.value;\n\t\tif (attached.services.length === 0) {\n\t\t\tctx.report({\n\t\t\t\tkind: \"message\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\ttext: `No running services for \"${attached.appName}\" — start it first with \\`dev ${args.positionals.entry}\\`.`\n\t\t\t});\n\t\t\treturn ok(void 0);\n\t\t}\n\t\tfor await (const { service, line } of attached.lines) ctx.report({\n\t\t\tkind: \"output\",\n\t\t\tsource: service,\n\t\t\tchannel: \"data\",\n\t\t\tline: `[${service}] ${line}`\n\t\t});\n\t\treturn ok(void 0);\n\t}\n});\n//#endregion\n//#region src/family/family.ts\n/**\n* Composer's `CommandFamily` — the unit the engine mounts, whether the process\n* is composer's own CLI or the `prisma` bin.\n*\n* This module and everything it reaches statically must stay free of alchemy\n* and of effect VALUE imports: the `prisma` bin imports the family directly,\n* so anything in this static graph loads on `prisma --version`. The mechanism\n* that holds it is the existing lazy boundary inside the operation modules —\n* `operations/deploy.ts`, `destroy.ts`, `dev.ts` and `log.ts` each `await\n* import()` their executor, and it is the executors that reach the provider\n* tree. Importing the operations here is therefore free; importing an\n* executor, or flattening one of those dynamic imports, is not.\n* scripts/check-family-static-graph.mjs enforces this against BUILT output,\n* where type-only imports have already been erased.\n*\n* The four commands close over the operations they are given, so a host can\n* mount this family against the test double and exercise real grammar, real\n* arg validation and real handlers with no alchemy behind them.\n*/\nconst realOperations = {\n\tdeploy: deployWithDeps,\n\tdestroy: destroyWithDeps,\n\tdev: devWithDeps,\n\tlog: logWithDeps\n};\nfunction createComposerFamily(options = {}) {\n\tconst operations = options.operations ?? realOperations;\n\treturn defineCommandFamily({\n\t\tconfigSection: composerSection,\n\t\tcommands: {\n\t\t\tdeploy: createDeployCommand(operations),\n\t\t\tdestroy: createDestroyCommand(operations),\n\t\t\tdev: createDevCommand(operations),\n\t\t\tlog: createLogCommand(operations)\n\t\t},\n\t\tdocsBaseUrl: DOCS_BASE\n\t});\n}\n//#endregion\n//#region src/family/runtime.ts\n/**\n* Everything environmental the engine needs, assembled from a host process.\n*\n* The engine takes no globals: streams, cwd, env, TTY-ness, exit and signal\n* subscription all arrive through `Runtime`, which is what lets a test drive a\n* whole run without touching `process`. Composing one is the substantive part\n* of hosting the engine — `createCli` and `Cli.run` are two calls.\n*\n* Credentials come from the engine's own environment-only manager, which\n* composes a session from PRISMA_SERVICE_TOKEN / PRISMA_WORKSPACE_ID and\n* refuses every mutation. That is the whole of composer's standalone auth\n* story: this CLI has no login flow and mounts no auth commands, so there is\n* nothing to store — the two variables ARE the credential.\n*/\n/** Where the management API lives. Matches the lowering client's default origin; the env var is the escape hatch for staging. */\nconst DEFAULT_MANAGEMENT_API_BASE_URL = \"https://api.prisma.io\";\nconst DEFAULT_AUTH_BASE_URL = \"https://auth.prisma.io\";\n/**\n* Starts the converge child: inherited stdio, this process's own group, no\n* `detached` and no new console — which is what lets the terminal deliver\n* Ctrl-C to the child natively instead of the CLI forwarding it. The engine\n* never imports node:child_process; this adapter is the whole of the host's\n* side of that seam.\n*/\nconst spawnChild = (request) => {\n\tconst child = spawn(request.command, [...request.args], {\n\t\tcwd: request.cwd,\n\t\tstdio: \"inherit\",\n\t\tenv: request.env\n\t});\n\treturn {\n\t\tended: new Promise((resolve, reject) => {\n\t\t\tchild.on(\"error\", reject);\n\t\t\tchild.on(\"close\", (exitCode, signal) => {\n\t\t\t\tresolve({\n\t\t\t\t\texitCode,\n\t\t\t\t\tsignal\n\t\t\t\t});\n\t\t\t});\n\t\t}),\n\t\tkill: (signal) => {\n\t\t\tchild.kill(signal);\n\t\t}\n\t};\n};\n/**\n* The SDK's client construction config. The engine requires all four fields\n* whenever a credential manager is wired, but this host reaches none of the\n* login paths: an environment credential carries no refresh token, so nothing\n* ever refreshes and `clientId`/`redirectUri` are never read. They are\n* env-overridable rather than hard-coded so a staging run can point the whole\n* client somewhere else in one place.\n*/\nfunction clientConfig(env, apiBaseUrl) {\n\treturn {\n\t\tclientId: env[\"PRISMA_CLIENT_ID\"] ?? \"prisma-composer-cli\",\n\t\tredirectUri: env[\"PRISMA_REDIRECT_URI\"] ?? \"http://127.0.0.1/callback\",\n\t\tapiBaseUrl,\n\t\tauthBaseUrl: env[\"PRISMA_AUTH_URL\"] ?? DEFAULT_AUTH_BASE_URL\n\t};\n}\n/**\n* Which package manager invoked us, read from the `npm_config_user_agent`\n* every major manager sets (`pnpm/10.27.0 npm/? node/v24.16.0 darwin arm64`).\n* `undefined` when the CLI was run directly rather than through a manager — a\n* normal case, not a failure, so nothing is inferred from the filesystem, and\n* the engine falls back to its own detection from the project at cwd.\n*/\nfunction detectPackageManager(env) {\n\tconst agent = env[\"npm_config_user_agent\"];\n\tif (agent === void 0) return void 0;\n\tconst name = agent.split(\"/\")[0];\n\tswitch (name) {\n\t\tcase \"npm\":\n\t\tcase \"pnpm\":\n\t\tcase \"yarn\":\n\t\tcase \"bun\":\n\t\tcase \"deno\": return name;\n\t\tdefault: return;\n\t}\n}\n/**\n* The config loader arrives as a function rather than an already-loaded config\n* because the engine reads `prisma.config.ts` on demand — only when the command\n* it is about to run declares a config section, and with whatever file\n* `--config` named. A host that loaded the file up front would read it for runs\n* that never needed it, and would have nowhere to put `--config`.\n*\n* `inCI` is the one thing here not derived from the host: `ci-info` answers it\n* from the real `process.env` at import, which is what the engine's `isCI` doc\n* asks a host to wire and what the `prisma` bin already does. Production passes\n* nothing. It is a parameter so a test can still drive CI state without\n* touching a process global.\n*/\nfunction createRuntime(host, loadConfig, inCI = isCI) {\n\tconst env = host.env;\n\tconst apiBaseUrl = env[\"PRISMA_MANAGEMENT_API_URL\"] ?? DEFAULT_MANAGEMENT_API_BASE_URL;\n\tconst packageManager = detectPackageManager(env);\n\treturn {\n\t\tstdout: host.stdout,\n\t\tstderr: host.stderr,\n\t\tstdin: host.stdin,\n\t\tcwd: host.cwd(),\n\t\tenv,\n\t\tisTty: {\n\t\t\tstdin: host.stdin.isTTY === true,\n\t\t\tstdout: host.stdout.isTTY === true,\n\t\t\tstderr: host.stderr.isTTY === true\n\t\t},\n\t\texit: (code) => host.exit(code),\n\t\tonSignal: (cb) => {\n\t\t\tconst onSigint = () => {\n\t\t\t\tcb(\"SIGINT\");\n\t\t\t};\n\t\t\tconst onSigterm = () => {\n\t\t\t\tcb(\"SIGTERM\");\n\t\t\t};\n\t\t\thost.on(\"SIGINT\", onSigint);\n\t\t\thost.on(\"SIGTERM\", onSigterm);\n\t\t\treturn () => {\n\t\t\t\thost.off(\"SIGINT\", onSigint);\n\t\t\t\thost.off(\"SIGTERM\", onSigterm);\n\t\t\t};\n\t\t},\n\t\tloadConfig,\n\t\tcredentialManager: new EnvironmentCredentialManager({ env }),\n\t\tmanagementApiClientConfig: clientConfig(env, apiBaseUrl),\n\t\tspawn: spawnChild,\n\t\tmanagementApi: { baseUrl: apiBaseUrl },\n\t\t...packageManager !== void 0 && { packageManager },\n\t\tisCI: inCI\n\t};\n}\n//#endregion\n//#region src/family/engine-cli.ts\n/**\n* Composer's own CLI, rebuilt as a thin composition of the family it\n* publishes: `createCli` over `createComposerFamily()`, `Cli.run` with a\n* Runtime. Grammar, help, arg validation, output framing, exit codes and\n* signal ownership all belong to the engine now — this module contributes the\n* family and the environment, and nothing else.\n*\n* Running composer's commands through the same path an external host uses is\n* the point: it is what proves the family works standalone before the `prisma`\n* bin mounts it.\n*\n* This IS composer's CLI. The clipanion shell it replaced, and the bespoke\n* runner that shelled out to alchemy, are gone; `bin.ts` is a call into here.\n*/\nconst BINARY_NAME = \"prisma-composer\";\n/**\n* Composer's commands mount at the top level of its own CLI (`prisma-composer\n* deploy`); under the `prisma` bin the same family mounts one level down\n* (`prisma composer deploy`). The family is identical either way — only the\n* mount paths differ, which is exactly the split `createCli` draws between\n* `commandFamilies` and `commands`.\n*/\nfunction mountedTree(family) {\n\treturn { ...family.commands };\n}\nfunction createComposerCli(spec) {\n\tconst family = createComposerFamily({ operations: spec.operations });\n\treturn createCli({\n\t\tname: BINARY_NAME,\n\t\tversion: spec.version,\n\t\tcommandFamilies: [family],\n\t\tgroups: {},\n\t\tcommands: mountedTree(family)\n\t});\n}\n/**\n* Composes the Runtime and runs one invocation. Returns the exit code rather\n* than exiting, so the caller owns the process — a bin assigns it to\n* `process.exitCode` and lets the streams drain, as composer's CLI has always\n* done.\n*\n* `prisma.config.ts` is not read here. The loader goes in as a function, and the\n* engine calls it only when the command it is about to run declares a config\n* section, passing it the file `--config` named; the loader resolves that\n* against the host's cwd.\n*/\nfunction runComposerCli(argv, host, spec, hooks) {\n\tconst runtime = createRuntime(host, (configPath) => loadConfig(host.cwd(), configPath));\n\treturn createComposerCli(spec).run(argv, runtime, hooks);\n}\n//#endregion\nexport { realOperations as a, createComposerFamily as i, createComposerCli as n, composerSection as o, runComposerCli as r, toEngineError as s, BINARY_NAME as t };\n\n//# sourceMappingURL=engine-cli-BXXH4fM-.mjs.map"],"x_google_ignoreList":[1,2],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma/composer-cli",
3
- "version": "0.6.0-dev.21",
3
+ "version": "0.6.0",
4
4
  "type": "module",
5
5
  "description": "Prisma Composer's command family and the `prisma-composer` CLI.",
6
6
  "bin": {
@@ -15,20 +15,25 @@
15
15
  "dist",
16
16
  "src"
17
17
  ],
18
+ "scripts": {
19
+ "build": "tsdown",
20
+ "clean": "rm -rf dist",
21
+ "typecheck": "tsc --noEmit"
22
+ },
18
23
  "dependencies": {
19
- "@prisma/composer": "0.6.0-dev.21",
24
+ "@prisma/composer": "workspace:0.6.0",
20
25
  "alchemy": "2.0.0-beta.67",
21
26
  "c12": "^3.3.4",
22
27
  "effect": "4.0.0-beta.103",
23
28
  "esbuild": "^0.28.1"
24
29
  },
25
30
  "peerDependencies": {
26
- "@prisma/cli-engine": "0.1.1"
31
+ "@prisma/cli-engine": "0.0.9"
27
32
  },
28
33
  "devDependencies": {
29
- "@internal/cli": "0.6.0-dev.21",
30
- "@internal/tsdown-config": "0.6.0-dev.21",
31
- "@prisma/cli-engine": "0.1.1",
34
+ "@internal/cli": "workspace:0.6.0",
35
+ "@internal/tsdown-config": "workspace:0.6.0",
36
+ "@prisma/cli-engine": "0.0.9",
32
37
  "@types/node": "^26.0.1",
33
38
  "tsdown": "^0.22.7",
34
39
  "typescript": "^6.0.3"
@@ -44,10 +49,5 @@
44
49
  },
45
50
  "publishConfig": {
46
51
  "access": "public"
47
- },
48
- "scripts": {
49
- "build": "tsdown",
50
- "clean": "rm -rf dist",
51
- "typecheck": "tsc --noEmit"
52
52
  }
53
- }
53
+ }
package/LICENSE DELETED
@@ -1,201 +0,0 @@
1
- Apache License
2
- Version 2.0, January 2004
3
- http://www.apache.org/licenses/
4
-
5
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
-
7
- 1. Definitions.
8
-
9
- "License" shall mean the terms and conditions for use, reproduction,
10
- and distribution as defined by Sections 1 through 9 of this document.
11
-
12
- "Licensor" shall mean the copyright owner or entity authorized by
13
- the copyright owner that is granting the License.
14
-
15
- "Legal Entity" shall mean the union of the acting entity and all
16
- other entities that control, are controlled by, or are under common
17
- control with that entity. For the purposes of this definition,
18
- "control" means (i) the power, direct or indirect, to cause the
19
- direction or management of such entity, whether by contract or
20
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
- outstanding shares, or (iii) beneficial ownership of such entity.
22
-
23
- "You" (or "Your") shall mean an individual or Legal Entity
24
- exercising permissions granted by this License.
25
-
26
- "Source" form shall mean the preferred form for making modifications,
27
- including but not limited to software source code, documentation
28
- source, and configuration files.
29
-
30
- "Object" form shall mean any form resulting from mechanical
31
- transformation or translation of a Source form, including but
32
- not limited to compiled object code, generated documentation,
33
- and conversions to other media types.
34
-
35
- "Work" shall mean the work of authorship, whether in Source or
36
- Object form, made available under the License, as indicated by a
37
- copyright notice that is included in or attached to the work
38
- (an example is provided in the Appendix below).
39
-
40
- "Derivative Works" shall mean any work, whether in Source or Object
41
- form, that is based on (or derived from) the Work and for which the
42
- editorial revisions, annotations, elaborations, or other modifications
43
- represent, as a whole, an original work of authorship. For the purposes
44
- of this License, Derivative Works shall not include works that remain
45
- separable from, or merely link (or bind by name) to the interfaces of,
46
- the Work and Derivative Works thereof.
47
-
48
- "Contribution" shall mean any work of authorship, including
49
- the original version of the Work and any modifications or additions
50
- to that Work or Derivative Works thereof, that is intentionally
51
- submitted to Licensor for inclusion in the Work by the copyright owner
52
- or by an individual or Legal Entity authorized to submit on behalf of
53
- the copyright owner. For the purposes of this definition, "submitted"
54
- means any form of electronic, verbal, or written communication sent
55
- to the Licensor or its representatives, including but not limited to
56
- communication on electronic mailing lists, source code control systems,
57
- and issue tracking systems that are managed by, or on behalf of, the
58
- Licensor for the purpose of discussing and improving the Work, but
59
- excluding communication that is conspicuously marked or otherwise
60
- designated in writing by the copyright owner as "Not a Contribution."
61
-
62
- "Contributor" shall mean Licensor and any individual or Legal Entity
63
- on behalf of whom a Contribution has been received by Licensor and
64
- subsequently incorporated within the Work.
65
-
66
- 2. Grant of Copyright License. Subject to the terms and conditions of
67
- this License, each Contributor hereby grants to You a perpetual,
68
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
- copyright license to reproduce, prepare Derivative Works of,
70
- publicly display, publicly perform, sublicense, and distribute the
71
- Work and such Derivative Works in Source or Object form.
72
-
73
- 3. Grant of Patent License. Subject to the terms and conditions of
74
- this License, each Contributor hereby grants to You a perpetual,
75
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
- (except as stated in this section) patent license to make, have made,
77
- use, offer to sell, sell, import, and otherwise transfer the Work,
78
- where such license applies only to those patent claims licensable
79
- by such Contributor that are necessarily infringed by their
80
- Contribution(s) alone or by combination of their Contribution(s)
81
- with the Work to which such Contribution(s) was submitted. If You
82
- institute patent litigation against any entity (including a
83
- cross-claim or counterclaim in a lawsuit) alleging that the Work
84
- or a Contribution incorporated within the Work constitutes direct
85
- or contributory patent infringement, then any patent licenses
86
- granted to You under this License for that Work shall terminate
87
- as of the date such litigation is filed.
88
-
89
- 4. Redistribution. You may reproduce and distribute copies of the
90
- Work or Derivative Works thereof in any medium, with or without
91
- modifications, and in Source or Object form, provided that You
92
- meet the following conditions:
93
-
94
- (a) You must give any other recipients of the Work or
95
- Derivative Works a copy of this License; and
96
-
97
- (b) You must cause any modified files to carry prominent notices
98
- stating that You changed the files; and
99
-
100
- (c) You must retain, in the Source form of any Derivative Works
101
- that You distribute, all copyright, patent, trademark, and
102
- attribution notices from the Source form of the Work,
103
- excluding those notices that do not pertain to any part of
104
- the Derivative Works; and
105
-
106
- (d) If the Work includes a "NOTICE" text file as part of its
107
- distribution, then any Derivative Works that You distribute must
108
- include a readable copy of the attribution notices contained
109
- within such NOTICE file, excluding those notices that do not
110
- pertain to any part of the Derivative Works, in at least one
111
- of the following places: within a NOTICE text file distributed
112
- as part of the Derivative Works; within the Source form or
113
- documentation, if provided along with the Derivative Works; or,
114
- within a display generated by the Derivative Works, if and
115
- wherever such third-party notices normally appear. The contents
116
- of the NOTICE file are for informational purposes only and
117
- do not modify the License. You may add Your own attribution
118
- notices within Derivative Works that You distribute, alongside
119
- or as an addendum to the NOTICE text from the Work, provided
120
- that such additional attribution notices cannot be construed
121
- as modifying the License.
122
-
123
- You may add Your own copyright statement to Your modifications and
124
- may provide additional or different license terms and conditions
125
- for use, reproduction, or distribution of Your modifications, or
126
- for any such Derivative Works as a whole, provided Your use,
127
- reproduction, and distribution of the Work otherwise complies with
128
- the conditions stated in this License.
129
-
130
- 5. Submission of Contributions. Unless You explicitly state otherwise,
131
- any Contribution intentionally submitted for inclusion in the Work
132
- by You to the Licensor shall be under the terms and conditions of
133
- this License, without any additional terms or conditions.
134
- Notwithstanding the above, nothing herein shall supersede or modify
135
- the terms of any separate license agreement you may have executed
136
- with Licensor regarding such Contributions.
137
-
138
- 6. Trademarks. This License does not grant permission to use the trade
139
- names, trademarks, service marks, or product names of the Licensor,
140
- except as required for reasonable and customary use in describing the
141
- origin of the Work and reproducing the content of the NOTICE file.
142
-
143
- 7. Disclaimer of Warranty. Unless required by applicable law or
144
- agreed to in writing, Licensor provides the Work (and each
145
- Contributor provides its Contributions) on an "AS IS" BASIS,
146
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
- implied, including, without limitation, any warranties or conditions
148
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
- PARTICULAR PURPOSE. You are solely responsible for determining the
150
- appropriateness of using or redistributing the Work and assume any
151
- risks associated with Your exercise of permissions under this License.
152
-
153
- 8. Limitation of Liability. In no event and under no legal theory,
154
- whether in tort (including negligence), contract, or otherwise,
155
- unless required by applicable law (such as deliberate and grossly
156
- negligent acts) or agreed to in writing, shall any Contributor be
157
- liable to You for damages, including any direct, indirect, special,
158
- incidental, or consequential damages of any character arising as a
159
- result of this License or out of the use or inability to use the
160
- Work (including but not limited to damages for loss of goodwill,
161
- work stoppage, computer failure or malfunction, or any and all
162
- other commercial damages or losses), even if such Contributor
163
- has been advised of the possibility of such damages.
164
-
165
- 9. Accepting Warranty or Additional Liability. While redistributing
166
- the Work or Derivative Works thereof, You may choose to offer,
167
- and charge a fee for, acceptance of support, warranty, indemnity,
168
- or other liability obligations and/or rights consistent with this
169
- License. However, in accepting such obligations, You may act only
170
- on Your own behalf and on Your sole responsibility, not on behalf
171
- of any other Contributor, and only if You agree to indemnify,
172
- defend, and hold each Contributor harmless for any liability
173
- incurred by, or claims asserted against, such Contributor by reason
174
- of your accepting any such warranty or additional liability.
175
-
176
- END OF TERMS AND CONDITIONS
177
-
178
- APPENDIX: How to apply the Apache License to your work.
179
-
180
- To apply the Apache License to your work, attach the following
181
- boilerplate notice, with the fields enclosed by brackets "[]"
182
- replaced with your own identifying information. (Don't include
183
- the brackets!) The text should be enclosed in the appropriate
184
- comment syntax for the file format. We also recommend that a
185
- file or class name and description of purpose be included on the
186
- same "printed page" as the copyright notice for easier
187
- identification within third-party archives.
188
-
189
- Copyright [2026] [Prisma Data, Inc]
190
-
191
- Licensed under the Apache License, Version 2.0 (the "License");
192
- you may not use this file except in compliance with the License.
193
- You may obtain a copy of the License at
194
-
195
- http://www.apache.org/licenses/LICENSE-2.0
196
-
197
- Unless required by applicable law or agreed to in writing, software
198
- distributed under the License is distributed on an "AS IS" BASIS,
199
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
- See the License for the specific language governing permissions and
201
- limitations under the License.