@sanity/cli 7.12.1 → 7.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -0
- package/dist/actions/api/constants.js +13 -0
- package/dist/actions/api/constants.js.map +1 -0
- package/dist/actions/api/distillApiRoutes.js +106 -0
- package/dist/actions/api/distillApiRoutes.js.map +1 -0
- package/dist/actions/api/errors.js +18 -0
- package/dist/actions/api/errors.js.map +1 -0
- package/dist/actions/api/parseFields.js +183 -0
- package/dist/actions/api/parseFields.js.map +1 -0
- package/dist/actions/api/resolveEndpoint.js +159 -0
- package/dist/actions/api/resolveEndpoint.js.map +1 -0
- package/dist/actions/api/types.js +10 -0
- package/dist/actions/api/types.js.map +1 -0
- package/dist/actions/auth/getProviderName.js +13 -0
- package/dist/actions/auth/getProviderName.js.map +1 -1
- package/dist/actions/build/buildApp.js +3 -1
- package/dist/actions/build/buildApp.js.map +1 -1
- package/dist/actions/build/buildStudio.js +104 -13
- package/dist/actions/build/buildStudio.js.map +1 -1
- package/dist/actions/build/eventListenerFactory.js +70 -0
- package/dist/actions/build/eventListenerFactory.js.map +1 -0
- package/dist/actions/debug/types.js.map +1 -1
- package/dist/actions/deploy/deployApp.js +1 -0
- package/dist/actions/deploy/deployApp.js.map +1 -1
- package/dist/actions/deploy/deployChecks.js +25 -4
- package/dist/actions/deploy/deployChecks.js.map +1 -1
- package/dist/actions/deploy/resolveDeployTarget.js +23 -4
- package/dist/actions/deploy/resolveDeployTarget.js.map +1 -1
- package/dist/actions/dev/servers/startStudioDevServer.js +5 -1
- package/dist/actions/dev/servers/startStudioDevServer.js.map +1 -1
- package/dist/actions/init/initAction.js +3 -3
- package/dist/actions/init/initAction.js.map +1 -1
- package/dist/commands/api.js +294 -0
- package/dist/commands/api.js.map +1 -0
- package/dist/commands/cors/add.js +13 -7
- package/dist/commands/cors/add.js.map +1 -1
- package/dist/commands/datasets/copy.js +6 -3
- package/dist/commands/datasets/copy.js.map +1 -1
- package/dist/commands/debug.js +1 -1
- package/dist/commands/debug.js.map +1 -1
- package/dist/exports/invokeSanityCli/commandPolicies/index.js +6 -0
- package/dist/exports/invokeSanityCli/commandPolicies/index.js.map +1 -0
- package/dist/exports/invokeSanityCli/commandPolicies/mcpPolicy.js +167 -0
- package/dist/exports/invokeSanityCli/commandPolicies/mcpPolicy.js.map +1 -0
- package/dist/exports/invokeSanityCli/commandPolicies/policy.js +46 -0
- package/dist/exports/invokeSanityCli/commandPolicies/policy.js.map +1 -0
- package/dist/exports/invokeSanityCli/help.js +146 -0
- package/dist/exports/invokeSanityCli/help.js.map +1 -0
- package/dist/exports/invokeSanityCli/index.d.ts +60 -0
- package/dist/exports/invokeSanityCli/index.js +177 -0
- package/dist/exports/invokeSanityCli/index.js.map +1 -0
- package/dist/generated/apiRoutes.js +401 -0
- package/dist/generated/apiRoutes.js.map +1 -0
- package/dist/server/devServer.js +16 -2
- package/dist/server/devServer.js.map +1 -1
- package/dist/services/api.js +116 -0
- package/dist/services/api.js.map +1 -0
- package/dist/util/getProjectDefaults.js +4 -1
- package/dist/util/getProjectDefaults.js.map +1 -1
- package/dist/util/packageManager/preferredPm.js +45 -6
- package/dist/util/packageManager/preferredPm.js.map +1 -1
- package/oclif.manifest.json +709 -528
- package/package.json +14 -7
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Programmatic (in-process) invocation of CLI commands, e.g. from an MCP
|
|
3
|
+
* server. The invokable surface is governed by a per-source command policy
|
|
4
|
+
* (see ./commandPolicies): every CLI command is explicitly allowed, denied,
|
|
5
|
+
* or allowed conditionally on the parsed invocation.
|
|
6
|
+
*
|
|
7
|
+
* {@link invokeSanityCli} handles arg parsing, policy enforcement, command
|
|
8
|
+
* dispatch, per-invocation auth, and output capture.
|
|
9
|
+
* ```ts
|
|
10
|
+
* import {invokeSanityCli} from '@sanity/cli/invokeSanityCli'
|
|
11
|
+
*
|
|
12
|
+
* const {exitCode, output} = await invokeSanityCli({
|
|
13
|
+
* args: 'cors list --project-id abc123',
|
|
14
|
+
* source: 'mcp',
|
|
15
|
+
* token: extra.authInfo.token,
|
|
16
|
+
* })
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* Help works like the regular CLI, scoped to the source's policy: `--help`
|
|
20
|
+
* (or `help`) renders root help listing the invokable topics, and a subject
|
|
21
|
+
* (`cors --help`, `cors list --help`) renders topic or command help.
|
|
22
|
+
*/ import { Config, Parser } from '@oclif/core';
|
|
23
|
+
import { getHelpFlagAdditions, normalizeArgv } from '@oclif/core/help';
|
|
24
|
+
import { CLI_TELEMETRY_SYMBOL, exitCodes, noopLogger, setCliTelemetry } from '@sanity/cli-core';
|
|
25
|
+
import { runWithCliExecutionContext } from '@sanity/cli-core/executionContext';
|
|
26
|
+
import { parseArgsStringToArgv } from 'string-argv';
|
|
27
|
+
import { commandPolicies } from './commandPolicies/index.js';
|
|
28
|
+
import { deny, isConditionalInvocationPolicy } from './commandPolicies/policy.js';
|
|
29
|
+
import { isHelpRequest, renderInvokableHelp } from './help.js';
|
|
30
|
+
/**
|
|
31
|
+
* Load the oclif `Config` for this package, needed to resolve, load, and run
|
|
32
|
+
* commands. Loading it once and reusing it across invocations avoids
|
|
33
|
+
* re-reading the command manifest per call.
|
|
34
|
+
*/ function loadCliCommandConfig() {
|
|
35
|
+
return Config.load(import.meta.url);
|
|
36
|
+
}
|
|
37
|
+
function unknownCommandResult(argv, policySet) {
|
|
38
|
+
const available = Object.entries(policySet).filter(([, policy])=>policy.kind !== 'deny').map(([id])=>id.replaceAll(':', ' ')).toSorted();
|
|
39
|
+
return {
|
|
40
|
+
exitCode: exitCodes.USAGE_ERROR,
|
|
41
|
+
output: [
|
|
42
|
+
`Unknown or unsupported command: ${argv.slice(0, 2).join(' ') || '(none)'}`,
|
|
43
|
+
`Available commands: ${available.join(', ')}`
|
|
44
|
+
].join('\n')
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
let cachedConfig;
|
|
48
|
+
/**
|
|
49
|
+
* Unlike a shell, string-argv keeps quotes that are glued to unquoted text:
|
|
50
|
+
* `--name="my project"` tokenizes with the quotes intact. Strip a matching
|
|
51
|
+
* wrapping quote pair from the value side of `--flag=`-shaped tokens so the
|
|
52
|
+
* common shell-style form yields the value the caller intended.
|
|
53
|
+
*/ function stripFlagQuotes(rawToken) {
|
|
54
|
+
const match = /^(-{1,2}[^\s=]+=)(['"])([\s\S]*)\2$/.exec(rawToken);
|
|
55
|
+
return match ? match[1] + match[3] : rawToken;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Run a policy-permitted CLI command in-process and capture its result.
|
|
59
|
+
*
|
|
60
|
+
* Command-level failures (unknown command, bad flags, API errors) are
|
|
61
|
+
* reported through `exitCode`/`output` rather than thrown, so callers can
|
|
62
|
+
* relay them verbatim.
|
|
63
|
+
*
|
|
64
|
+
* @internal
|
|
65
|
+
*/ export async function invokeSanityCli({ args, config, source, token }) {
|
|
66
|
+
const resolvedConfig = config ?? await (cachedConfig ??= loadCliCommandConfig());
|
|
67
|
+
const policySet = commandPolicies[source];
|
|
68
|
+
// Commands log through the global telemetry store; default it to a noop
|
|
69
|
+
// store so embedding hosts need no telemetry wiring (and see no warnings),
|
|
70
|
+
// without clobbering a store the host may have installed itself.
|
|
71
|
+
if (!globalThis[CLI_TELEMETRY_SYMBOL]) {
|
|
72
|
+
setCliTelemetry(noopLogger);
|
|
73
|
+
}
|
|
74
|
+
// Pre-split argv arrays are taken verbatim; only string input goes through
|
|
75
|
+
// shell-style tokenization and quote normalization.
|
|
76
|
+
let argv = typeof args === 'string' ? parseArgsStringToArgv(args).map((t)=>stripFlagQuotes(t)) : [
|
|
77
|
+
...args
|
|
78
|
+
];
|
|
79
|
+
if (argv[0] === 'sanity') argv = argv.slice(1);
|
|
80
|
+
// Help requests are routed through oclif's help system, scoped to the
|
|
81
|
+
// source's policy: root help for a bare request, topic/command help when a
|
|
82
|
+
// subject is given. Denied subjects get the standard unknown-command
|
|
83
|
+
// response (identical to a truly unknown command, so hosts can't probe the
|
|
84
|
+
// full CLI surface through help), and a help request never executes a
|
|
85
|
+
// command.
|
|
86
|
+
if (isHelpRequest(argv, resolvedConfig)) {
|
|
87
|
+
try {
|
|
88
|
+
// Drop a leading `help` so the rest is the subject, mirroring how
|
|
89
|
+
// oclif's dispatch consumes the token before the help command sees argv
|
|
90
|
+
const helpArgv = argv[0] === 'help' ? argv.slice(1) : argv;
|
|
91
|
+
const output = await renderInvokableHelp(resolvedConfig, helpArgv, policySet);
|
|
92
|
+
if (output !== undefined) return {
|
|
93
|
+
exitCode: exitCodes.SUCCESS,
|
|
94
|
+
output
|
|
95
|
+
};
|
|
96
|
+
const helpFlags = getHelpFlagAdditions(resolvedConfig);
|
|
97
|
+
return unknownCommandResult(helpArgv.filter((token)=>!helpFlags.includes(token)), policySet);
|
|
98
|
+
} catch (err) {
|
|
99
|
+
return {
|
|
100
|
+
exitCode: exitCodes.RUNTIME_ERROR,
|
|
101
|
+
output: err instanceof Error ? err.message : String(err)
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Resolve the command id the same way oclif's dispatch would (collating
|
|
106
|
+
// space-separated topics, accepting colon-separated ids as-is), then apply
|
|
107
|
+
// the policy. Denied and uncategorized ids fail closed, indistinguishable
|
|
108
|
+
// from commands that don't exist.
|
|
109
|
+
const [commandId = '', ...commandArgv] = normalizeArgv(resolvedConfig, argv);
|
|
110
|
+
const policy = policySet[commandId] ?? deny;
|
|
111
|
+
const commandDefinition = policy.kind === 'deny' ? undefined : resolvedConfig.findCommand(commandId);
|
|
112
|
+
if (!commandDefinition) return unknownCommandResult(argv, policySet);
|
|
113
|
+
const CommandClass = await commandDefinition.load();
|
|
114
|
+
// Parse with the command's real definitions (without executing anything) so
|
|
115
|
+
// conditional policies are evaluated against typed args/flags, not tokens.
|
|
116
|
+
let invocation;
|
|
117
|
+
try {
|
|
118
|
+
const parsed = await Parser.parse(commandArgv, {
|
|
119
|
+
args: CommandClass.args,
|
|
120
|
+
baseFlags: CommandClass.baseFlags,
|
|
121
|
+
enableJsonFlag: CommandClass.enableJsonFlag,
|
|
122
|
+
flags: CommandClass.flags,
|
|
123
|
+
strict: CommandClass.strict
|
|
124
|
+
});
|
|
125
|
+
invocation = {
|
|
126
|
+
args: parsed.args,
|
|
127
|
+
flags: parsed.flags
|
|
128
|
+
};
|
|
129
|
+
} catch (err) {
|
|
130
|
+
return {
|
|
131
|
+
exitCode: exitCodes.USAGE_ERROR,
|
|
132
|
+
output: err instanceof Error ? err.message : String(err)
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
if (!policy.validate(invocation)) {
|
|
136
|
+
const displayId = commandId.replaceAll(':', ' ');
|
|
137
|
+
let output = `This invocation of \`${displayId}\` is not supported here`;
|
|
138
|
+
if (isConditionalInvocationPolicy(policy)) {
|
|
139
|
+
const usedDeniedFlags = policy.deniedFlags.filter((name)=>invocation.flags[name] !== undefined && invocation.flags[name] !== false);
|
|
140
|
+
output = `\nThe ${usedDeniedFlags.map((name)=>`--${name}`).join(', ')} flag is not supported here for \`${displayId}\``;
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
exitCode: exitCodes.USAGE_ERROR,
|
|
144
|
+
output
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
const output = [];
|
|
148
|
+
const sink = (line)=>output.push(line);
|
|
149
|
+
try {
|
|
150
|
+
await runWithCliExecutionContext({
|
|
151
|
+
stderr: sink,
|
|
152
|
+
stdout: sink,
|
|
153
|
+
token
|
|
154
|
+
}, ()=>CommandClass.run(commandArgv, resolvedConfig));
|
|
155
|
+
return {
|
|
156
|
+
exitCode: exitCodes.SUCCESS,
|
|
157
|
+
output: output.join('\n')
|
|
158
|
+
};
|
|
159
|
+
} catch (err) {
|
|
160
|
+
const exit = err.oclif?.exit;
|
|
161
|
+
// `this.exit(0)` throws an ExitError but is a successful outcome
|
|
162
|
+
if (exit === exitCodes.SUCCESS) {
|
|
163
|
+
return {
|
|
164
|
+
exitCode: exitCodes.SUCCESS,
|
|
165
|
+
output: output.join('\n')
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
169
|
+
if (message) output.push(message);
|
|
170
|
+
return {
|
|
171
|
+
exitCode: typeof exit === 'number' ? exit : exitCodes.RUNTIME_ERROR,
|
|
172
|
+
output: output.join('\n')
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/exports/invokeSanityCli/index.ts"],"sourcesContent":["/**\n * Programmatic (in-process) invocation of CLI commands, e.g. from an MCP\n * server. The invokable surface is governed by a per-source command policy\n * (see ./commandPolicies): every CLI command is explicitly allowed, denied,\n * or allowed conditionally on the parsed invocation.\n *\n * {@link invokeSanityCli} handles arg parsing, policy enforcement, command\n * dispatch, per-invocation auth, and output capture.\n * ```ts\n * import {invokeSanityCli} from '@sanity/cli/invokeSanityCli'\n *\n * const {exitCode, output} = await invokeSanityCli({\n * args: 'cors list --project-id abc123',\n * source: 'mcp',\n * token: extra.authInfo.token,\n * })\n * ```\n *\n * Help works like the regular CLI, scoped to the source's policy: `--help`\n * (or `help`) renders root help listing the invokable topics, and a subject\n * (`cors --help`, `cors list --help`) renders topic or command help.\n */\nimport {Config, Parser} from '@oclif/core'\nimport {getHelpFlagAdditions, normalizeArgv} from '@oclif/core/help'\nimport {CLI_TELEMETRY_SYMBOL, exitCodes, noopLogger, setCliTelemetry} from '@sanity/cli-core'\nimport {runWithCliExecutionContext} from '@sanity/cli-core/executionContext'\nimport {parseArgsStringToArgv} from 'string-argv'\n\nimport {commandPolicies} from './commandPolicies/index.js'\nimport {\n type CommandPolicySet,\n deny,\n type InvocationSource,\n isConditionalInvocationPolicy,\n} from './commandPolicies/policy.js'\nimport {isHelpRequest, renderInvokableHelp} from './help.js'\n\n/**\n * Load the oclif `Config` for this package, needed to resolve, load, and run\n * commands. Loading it once and reusing it across invocations avoids\n * re-reading the command manifest per call.\n */\nfunction loadCliCommandConfig(): Promise<Config> {\n return Config.load(import.meta.url)\n}\n\nfunction unknownCommandResult(argv: string[], policySet: CommandPolicySet): InvokeSanityCliResult {\n const available = Object.entries(policySet)\n .filter(([, policy]) => policy.kind !== 'deny')\n .map(([id]) => id.replaceAll(':', ' '))\n .toSorted()\n return {\n exitCode: exitCodes.USAGE_ERROR,\n output: [\n `Unknown or unsupported command: ${argv.slice(0, 2).join(' ') || '(none)'}`,\n `Available commands: ${available.join(', ')}`,\n ].join('\\n'),\n }\n}\n\n/**\n * @internal\n */\nexport interface InvokeSanityCliOptions {\n /**\n * Arguments after `sanity` (a leading `sanity` token is tolerated), either\n * as a single string — shell-style quoting is supported, but no shell is\n * ever executed — or as a pre-split argv array.\n */\n args: string | string[]\n\n /**\n * Where this invocation originates. Selects the command policy to enforce:\n * which commands are invokable and which invocations of them are permitted.\n */\n source: InvocationSource\n\n /**\n * Auth token for this invocation. Scoped to this call via the CLI execution\n * context: it never touches process env or the process-wide token cache, so\n * concurrent invocations with different tokens are fully isolated.\n */\n token: string\n\n /**\n * Optional oclif config override (mainly for tests). Defaults to this\n * package's config, loaded once and cached across invocations.\n */\n config?: Config\n}\n\n/**\n * @internal\n */\nexport interface InvokeSanityCliResult {\n /** `0` on success, the command's exit code otherwise. */\n exitCode: number\n\n /** Combined stdout and stderr output, in emission order. */\n output: string\n}\n\nlet cachedConfig: Promise<Config> | undefined\n\n/**\n * Unlike a shell, string-argv keeps quotes that are glued to unquoted text:\n * `--name=\"my project\"` tokenizes with the quotes intact. Strip a matching\n * wrapping quote pair from the value side of `--flag=`-shaped tokens so the\n * common shell-style form yields the value the caller intended.\n */\nfunction stripFlagQuotes(rawToken: string): string {\n const match = /^(-{1,2}[^\\s=]+=)(['\"])([\\s\\S]*)\\2$/.exec(rawToken)\n return match ? match[1] + match[3] : rawToken\n}\n\n/**\n * Run a policy-permitted CLI command in-process and capture its result.\n *\n * Command-level failures (unknown command, bad flags, API errors) are\n * reported through `exitCode`/`output` rather than thrown, so callers can\n * relay them verbatim.\n *\n * @internal\n */\nexport async function invokeSanityCli({\n args,\n config,\n source,\n token,\n}: InvokeSanityCliOptions): Promise<InvokeSanityCliResult> {\n const resolvedConfig = config ?? (await (cachedConfig ??= loadCliCommandConfig()))\n const policySet = commandPolicies[source]\n\n // Commands log through the global telemetry store; default it to a noop\n // store so embedding hosts need no telemetry wiring (and see no warnings),\n // without clobbering a store the host may have installed itself.\n if (!(globalThis as Record<symbol, unknown>)[CLI_TELEMETRY_SYMBOL]) {\n setCliTelemetry(noopLogger)\n }\n\n // Pre-split argv arrays are taken verbatim; only string input goes through\n // shell-style tokenization and quote normalization.\n let argv =\n typeof args === 'string'\n ? parseArgsStringToArgv(args).map((t) => stripFlagQuotes(t))\n : [...args]\n if (argv[0] === 'sanity') argv = argv.slice(1)\n\n // Help requests are routed through oclif's help system, scoped to the\n // source's policy: root help for a bare request, topic/command help when a\n // subject is given. Denied subjects get the standard unknown-command\n // response (identical to a truly unknown command, so hosts can't probe the\n // full CLI surface through help), and a help request never executes a\n // command.\n if (isHelpRequest(argv, resolvedConfig)) {\n try {\n // Drop a leading `help` so the rest is the subject, mirroring how\n // oclif's dispatch consumes the token before the help command sees argv\n const helpArgv = argv[0] === 'help' ? argv.slice(1) : argv\n const output = await renderInvokableHelp(resolvedConfig, helpArgv, policySet)\n if (output !== undefined) return {exitCode: exitCodes.SUCCESS, output}\n const helpFlags = getHelpFlagAdditions(resolvedConfig)\n return unknownCommandResult(\n helpArgv.filter((token) => !helpFlags.includes(token)),\n policySet,\n )\n } catch (err) {\n return {\n exitCode: exitCodes.RUNTIME_ERROR,\n output: err instanceof Error ? err.message : String(err),\n }\n }\n }\n\n // Resolve the command id the same way oclif's dispatch would (collating\n // space-separated topics, accepting colon-separated ids as-is), then apply\n // the policy. Denied and uncategorized ids fail closed, indistinguishable\n // from commands that don't exist.\n const [commandId = '', ...commandArgv] = normalizeArgv(resolvedConfig, argv)\n const policy = policySet[commandId] ?? deny\n const commandDefinition =\n policy.kind === 'deny' ? undefined : resolvedConfig.findCommand(commandId)\n if (!commandDefinition) return unknownCommandResult(argv, policySet)\n\n const CommandClass = await commandDefinition.load()\n\n // Parse with the command's real definitions (without executing anything) so\n // conditional policies are evaluated against typed args/flags, not tokens.\n let invocation: {args: Record<string, unknown>; flags: Record<string, unknown>}\n try {\n const parsed = await Parser.parse(commandArgv, {\n args: CommandClass.args,\n baseFlags: CommandClass.baseFlags,\n enableJsonFlag: CommandClass.enableJsonFlag,\n flags: CommandClass.flags,\n strict: CommandClass.strict,\n })\n invocation = {\n args: parsed.args as Record<string, unknown>,\n flags: parsed.flags as Record<string, unknown>,\n }\n } catch (err) {\n return {\n exitCode: exitCodes.USAGE_ERROR,\n output: err instanceof Error ? err.message : String(err),\n }\n }\n\n if (!policy.validate(invocation)) {\n const displayId = commandId.replaceAll(':', ' ')\n let output = `This invocation of \\`${displayId}\\` is not supported here`\n\n if (isConditionalInvocationPolicy(policy)) {\n const usedDeniedFlags = policy.deniedFlags.filter(\n (name) => invocation.flags[name] !== undefined && invocation.flags[name] !== false,\n )\n output = `\\nThe ${usedDeniedFlags.map((name) => `--${name}`).join(', ')} flag is not supported here for \\`${displayId}\\``\n }\n\n return {\n exitCode: exitCodes.USAGE_ERROR,\n output,\n }\n }\n\n const output: string[] = []\n const sink = (line: string) => output.push(line)\n\n try {\n await runWithCliExecutionContext({stderr: sink, stdout: sink, token}, () =>\n CommandClass.run(commandArgv, resolvedConfig),\n )\n return {exitCode: exitCodes.SUCCESS, output: output.join('\\n')}\n } catch (err) {\n const exit = err.oclif?.exit\n\n // `this.exit(0)` throws an ExitError but is a successful outcome\n if (exit === exitCodes.SUCCESS) {\n return {exitCode: exitCodes.SUCCESS, output: output.join('\\n')}\n }\n\n const message = err instanceof Error ? err.message : String(err)\n if (message) output.push(message)\n return {\n exitCode: typeof exit === 'number' ? exit : exitCodes.RUNTIME_ERROR,\n output: output.join('\\n'),\n }\n }\n}\n"],"names":["Config","Parser","getHelpFlagAdditions","normalizeArgv","CLI_TELEMETRY_SYMBOL","exitCodes","noopLogger","setCliTelemetry","runWithCliExecutionContext","parseArgsStringToArgv","commandPolicies","deny","isConditionalInvocationPolicy","isHelpRequest","renderInvokableHelp","loadCliCommandConfig","load","url","unknownCommandResult","argv","policySet","available","Object","entries","filter","policy","kind","map","id","replaceAll","toSorted","exitCode","USAGE_ERROR","output","slice","join","cachedConfig","stripFlagQuotes","rawToken","match","exec","invokeSanityCli","args","config","source","token","resolvedConfig","globalThis","t","helpArgv","undefined","SUCCESS","helpFlags","includes","err","RUNTIME_ERROR","Error","message","String","commandId","commandArgv","commandDefinition","findCommand","CommandClass","invocation","parsed","parse","baseFlags","enableJsonFlag","flags","strict","validate","displayId","usedDeniedFlags","deniedFlags","name","sink","line","push","stderr","stdout","run","exit","oclif"],"mappings":"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"}
|
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GENERATED FILE - DO NOT EDIT
|
|
3
|
+
*
|
|
4
|
+
* Routing manifest for `sanity api`, distilled from the published OpenAPI
|
|
5
|
+
* specifications at https://www.sanity.io/docs/api/openapi
|
|
6
|
+
*
|
|
7
|
+
* Regenerate with: pnpm generate:api-routes
|
|
8
|
+
*/ export const apiRoutes = [
|
|
9
|
+
{
|
|
10
|
+
defaultApiVersion: 'v2025-07-11',
|
|
11
|
+
host: 'global',
|
|
12
|
+
pathPatterns: [
|
|
13
|
+
'access/invites/me',
|
|
14
|
+
'access/organization/{resourceId}/users/roles/default',
|
|
15
|
+
'access/requests/me',
|
|
16
|
+
'access/robots/me',
|
|
17
|
+
'access/robots/me/rotate',
|
|
18
|
+
'access/{resourceType}/{resourceId}/invites',
|
|
19
|
+
'access/{resourceType}/{resourceId}/invites/token/{inviteToken}',
|
|
20
|
+
'access/{resourceType}/{resourceId}/invites/token/{inviteToken}/accept',
|
|
21
|
+
'access/{resourceType}/{resourceId}/invites/{inviteId}',
|
|
22
|
+
'access/{resourceType}/{resourceId}/permissions',
|
|
23
|
+
'access/{resourceType}/{resourceId}/permissions/{permissionName}',
|
|
24
|
+
'access/{resourceType}/{resourceId}/requests',
|
|
25
|
+
'access/{resourceType}/{resourceId}/requests/{requestId}/accept',
|
|
26
|
+
'access/{resourceType}/{resourceId}/requests/{requestId}/decline',
|
|
27
|
+
'access/{resourceType}/{resourceId}/robots',
|
|
28
|
+
'access/{resourceType}/{resourceId}/robots/{robotId}',
|
|
29
|
+
'access/{resourceType}/{resourceId}/roles',
|
|
30
|
+
'access/{resourceType}/{resourceId}/roles/{roleName}',
|
|
31
|
+
'access/{resourceType}/{resourceId}/user-permissions/me',
|
|
32
|
+
'access/{resourceType}/{resourceId}/user-permissions/me/check',
|
|
33
|
+
'access/{resourceType}/{resourceId}/users',
|
|
34
|
+
'access/{resourceType}/{resourceId}/users/me',
|
|
35
|
+
'access/{resourceType}/{resourceId}/users/{sanityUserId}',
|
|
36
|
+
'access/{resourceType}/{resourceId}/users/{sanityUserId}/roles',
|
|
37
|
+
'access/{resourceType}/{resourceId}/users/{sanityUserId}/roles/{roleName}'
|
|
38
|
+
],
|
|
39
|
+
slug: 'access-api',
|
|
40
|
+
title: 'Access API reference'
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
defaultApiVersion: 'v2025-02-19',
|
|
44
|
+
host: 'project',
|
|
45
|
+
pathPatterns: [
|
|
46
|
+
'data/actions/{dataset}'
|
|
47
|
+
],
|
|
48
|
+
slug: 'actions',
|
|
49
|
+
title: 'Actions API reference'
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
defaultApiVersion: 'v2021-02-01',
|
|
53
|
+
host: 'global',
|
|
54
|
+
pathPatterns: [
|
|
55
|
+
'activity',
|
|
56
|
+
'activity/export/csv'
|
|
57
|
+
],
|
|
58
|
+
slug: 'activity-log',
|
|
59
|
+
title: 'Activity Log API Reference'
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
defaultApiVersion: 'vX',
|
|
63
|
+
host: 'project',
|
|
64
|
+
pathPatterns: [
|
|
65
|
+
'agent/action/generate/{dataset}',
|
|
66
|
+
'agent/action/patch/{dataset}',
|
|
67
|
+
'agent/action/prompt/{dataset}',
|
|
68
|
+
'agent/action/transform/{dataset}',
|
|
69
|
+
'agent/action/translate/{dataset}'
|
|
70
|
+
],
|
|
71
|
+
slug: 'agent-actions',
|
|
72
|
+
title: 'Agent Actions'
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
host: 'global',
|
|
76
|
+
pathPatterns: [
|
|
77
|
+
'applications',
|
|
78
|
+
'applications/{applicationId}',
|
|
79
|
+
'applications/{applicationId}/access',
|
|
80
|
+
'applications/{applicationId}/deployments',
|
|
81
|
+
'applications/{applicationId}/installations',
|
|
82
|
+
'applications/{applicationId}/interfaces',
|
|
83
|
+
'applications/{applicationId}/workspaces',
|
|
84
|
+
'deploy',
|
|
85
|
+
'deploy/quickstart',
|
|
86
|
+
'installations',
|
|
87
|
+
'installations/{installationId}',
|
|
88
|
+
'installations/{installationId}/access',
|
|
89
|
+
'installations/{installationId}/configs',
|
|
90
|
+
'installations/{installationId}/configs/{configId}',
|
|
91
|
+
'installations/{installationId}/interfaces',
|
|
92
|
+
'projects/{projectId}/user-applications',
|
|
93
|
+
'projects/{projectId}/user-applications/{userApplicationId}',
|
|
94
|
+
'projects/{projectId}/user-applications/{userApplicationId}/config/{configKey}',
|
|
95
|
+
'projects/{projectId}/user-applications/{userApplicationId}/deployments',
|
|
96
|
+
'studiohosts/{appHost}/availability',
|
|
97
|
+
'user-applications',
|
|
98
|
+
'user-applications/auto-update-version/{userApplicationId}',
|
|
99
|
+
'user-applications/resolve/application',
|
|
100
|
+
'user-applications/resolve/project',
|
|
101
|
+
'user-applications/workspaces',
|
|
102
|
+
'user-applications/{userApplicationId}',
|
|
103
|
+
'user-applications/{userApplicationId}/applicationData',
|
|
104
|
+
'user-applications/{userApplicationId}/config/{configKey}',
|
|
105
|
+
'user-applications/{userApplicationId}/deployments',
|
|
106
|
+
'user-applications/{userApplicationId}/workspaces'
|
|
107
|
+
],
|
|
108
|
+
slug: 'applications-api',
|
|
109
|
+
title: 'Applications API Reference'
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
host: 'project',
|
|
113
|
+
pathPatterns: [
|
|
114
|
+
'applications',
|
|
115
|
+
'applications/{applicationId}',
|
|
116
|
+
'applications/{applicationId}/access',
|
|
117
|
+
'applications/{applicationId}/deployments',
|
|
118
|
+
'applications/{applicationId}/installations',
|
|
119
|
+
'applications/{applicationId}/interfaces',
|
|
120
|
+
'applications/{applicationId}/workspaces',
|
|
121
|
+
'deploy',
|
|
122
|
+
'deploy/quickstart',
|
|
123
|
+
'installations',
|
|
124
|
+
'installations/{installationId}',
|
|
125
|
+
'installations/{installationId}/access',
|
|
126
|
+
'installations/{installationId}/configs',
|
|
127
|
+
'installations/{installationId}/configs/{configId}',
|
|
128
|
+
'installations/{installationId}/interfaces',
|
|
129
|
+
'projects/{projectId}/user-applications',
|
|
130
|
+
'projects/{projectId}/user-applications/{userApplicationId}',
|
|
131
|
+
'projects/{projectId}/user-applications/{userApplicationId}/config/{configKey}',
|
|
132
|
+
'projects/{projectId}/user-applications/{userApplicationId}/deployments',
|
|
133
|
+
'studiohosts/{appHost}/availability',
|
|
134
|
+
'user-applications',
|
|
135
|
+
'user-applications/auto-update-version/{userApplicationId}',
|
|
136
|
+
'user-applications/resolve/application',
|
|
137
|
+
'user-applications/resolve/project',
|
|
138
|
+
'user-applications/workspaces',
|
|
139
|
+
'user-applications/{userApplicationId}',
|
|
140
|
+
'user-applications/{userApplicationId}/applicationData',
|
|
141
|
+
'user-applications/{userApplicationId}/config/{configKey}',
|
|
142
|
+
'user-applications/{userApplicationId}/deployments',
|
|
143
|
+
'user-applications/{userApplicationId}/workspaces'
|
|
144
|
+
],
|
|
145
|
+
slug: 'applications-api',
|
|
146
|
+
title: 'Applications API Reference'
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
defaultApiVersion: 'v2024-06-24',
|
|
150
|
+
host: 'project',
|
|
151
|
+
pathPatterns: [
|
|
152
|
+
'assets/files/{dataset}',
|
|
153
|
+
'assets/images/{dataset}',
|
|
154
|
+
'assets/media-library-link/{dataset}'
|
|
155
|
+
],
|
|
156
|
+
slug: 'assets',
|
|
157
|
+
title: 'Assets API reference'
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
defaultApiVersion: 'v2025-02-19',
|
|
161
|
+
host: 'global',
|
|
162
|
+
pathPatterns: [
|
|
163
|
+
'projects/{projectId}/datasets/{datasetName}/backups',
|
|
164
|
+
'projects/{projectId}/datasets/{datasetName}/backups/{backupId}',
|
|
165
|
+
'projects/{projectId}/datasets/{datasetName}/settings/backups'
|
|
166
|
+
],
|
|
167
|
+
slug: 'backups',
|
|
168
|
+
title: 'Backups API reference'
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
defaultApiVersion: 'vX',
|
|
172
|
+
host: 'global',
|
|
173
|
+
pathPatterns: [
|
|
174
|
+
'agent/prompt',
|
|
175
|
+
'agent/{organizationId}/threads/{threadId}'
|
|
176
|
+
],
|
|
177
|
+
slug: 'content-agent',
|
|
178
|
+
title: 'Content Agent API reference'
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
defaultApiVersion: 'v2025-02-19',
|
|
182
|
+
host: 'global',
|
|
183
|
+
pathPatterns: [
|
|
184
|
+
'projects/{projectId}/datasets/{dataset}/copy'
|
|
185
|
+
],
|
|
186
|
+
slug: 'copy',
|
|
187
|
+
title: 'Copy API reference'
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
defaultApiVersion: 'v2025-02-19',
|
|
191
|
+
host: 'project',
|
|
192
|
+
pathPatterns: [
|
|
193
|
+
'data/doc/{dataset}/{documentId}'
|
|
194
|
+
],
|
|
195
|
+
slug: 'doc',
|
|
196
|
+
title: 'Doc API reference'
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
defaultApiVersion: 'vX',
|
|
200
|
+
host: 'project',
|
|
201
|
+
pathPatterns: [
|
|
202
|
+
'embeddings-index/query/{dataset}/{indexName}',
|
|
203
|
+
'embeddings-index/{dataset}',
|
|
204
|
+
'embeddings-index/{dataset}/{indexName}'
|
|
205
|
+
],
|
|
206
|
+
slug: 'embeddings-index',
|
|
207
|
+
title: 'Embeddings Index API reference'
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
defaultApiVersion: 'v2021-03-25',
|
|
211
|
+
host: 'project',
|
|
212
|
+
pathPatterns: [
|
|
213
|
+
'data/export/{dataset}'
|
|
214
|
+
],
|
|
215
|
+
slug: 'export',
|
|
216
|
+
title: 'Export API reference'
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
defaultApiVersion: 'v2025-02-19',
|
|
220
|
+
host: 'project',
|
|
221
|
+
pathPatterns: [
|
|
222
|
+
'data/history/{dataset}/documents/{documentId}',
|
|
223
|
+
'data/history/{dataset}/transactions',
|
|
224
|
+
'data/history/{dataset}/transactions/{documentIds}'
|
|
225
|
+
],
|
|
226
|
+
slug: 'history',
|
|
227
|
+
title: 'History API reference'
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
defaultApiVersion: 'v2021-06-07',
|
|
231
|
+
host: 'global',
|
|
232
|
+
pathPatterns: [
|
|
233
|
+
'jobs/{jobId}',
|
|
234
|
+
'jobs/{jobId}/listen'
|
|
235
|
+
],
|
|
236
|
+
slug: 'jobs',
|
|
237
|
+
title: 'Jobs API reference'
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
defaultApiVersion: 'v2025-02-19',
|
|
241
|
+
host: 'project',
|
|
242
|
+
pathPatterns: [
|
|
243
|
+
'data/listen/{dataset}'
|
|
244
|
+
],
|
|
245
|
+
slug: 'listen',
|
|
246
|
+
title: 'Listen API reference'
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
defaultApiVersion: 'v2025-02-19',
|
|
250
|
+
host: 'project',
|
|
251
|
+
pathPatterns: [
|
|
252
|
+
'data/live/events/{dataset}'
|
|
253
|
+
],
|
|
254
|
+
slug: 'live',
|
|
255
|
+
title: 'Live Content API reference'
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
defaultApiVersion: 'v2025-02-19',
|
|
259
|
+
host: 'global',
|
|
260
|
+
pathPatterns: [
|
|
261
|
+
'media-libraries/{libraryId}/mutate',
|
|
262
|
+
'media-libraries/{libraryId}/query',
|
|
263
|
+
'media-libraries/{libraryId}/references/documents/{assetId}/to',
|
|
264
|
+
'media-libraries/{libraryId}/refsearch',
|
|
265
|
+
'media-libraries/{libraryId}/signing-keys',
|
|
266
|
+
'media-libraries/{libraryId}/signing-keys/{keyId}',
|
|
267
|
+
'media-libraries/{libraryId}/upload',
|
|
268
|
+
'media-libraries/{libraryId}/video/{videoId}/playback-info',
|
|
269
|
+
'media-libraries/{libraryId}/video/{videoId}/playback/{type}',
|
|
270
|
+
'media-libraries/{libraryId}/video/{videoId}/renditions/{name}',
|
|
271
|
+
'media-libraries/{libraryId}/video/{videoId}/subtitles',
|
|
272
|
+
'media-libraries/{libraryId}/video/{videoId}/subtitles/upload',
|
|
273
|
+
'media-libraries/{libraryId}/video/{videoId}/subtitles/{subtitleId}'
|
|
274
|
+
],
|
|
275
|
+
slug: 'media-library',
|
|
276
|
+
title: 'Media Library API reference'
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
defaultApiVersion: 'v2025-02-19',
|
|
280
|
+
host: 'project',
|
|
281
|
+
pathPatterns: [
|
|
282
|
+
'media-libraries/{libraryId}/mutate',
|
|
283
|
+
'media-libraries/{libraryId}/query',
|
|
284
|
+
'media-libraries/{libraryId}/references/documents/{assetId}/to',
|
|
285
|
+
'media-libraries/{libraryId}/refsearch',
|
|
286
|
+
'media-libraries/{libraryId}/signing-keys',
|
|
287
|
+
'media-libraries/{libraryId}/signing-keys/{keyId}',
|
|
288
|
+
'media-libraries/{libraryId}/upload',
|
|
289
|
+
'media-libraries/{libraryId}/video/{videoId}/playback-info',
|
|
290
|
+
'media-libraries/{libraryId}/video/{videoId}/playback/{type}',
|
|
291
|
+
'media-libraries/{libraryId}/video/{videoId}/renditions/{name}',
|
|
292
|
+
'media-libraries/{libraryId}/video/{videoId}/subtitles',
|
|
293
|
+
'media-libraries/{libraryId}/video/{videoId}/subtitles/upload',
|
|
294
|
+
'media-libraries/{libraryId}/video/{videoId}/subtitles/{subtitleId}'
|
|
295
|
+
],
|
|
296
|
+
slug: 'media-library',
|
|
297
|
+
title: 'Media Library API reference'
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
defaultApiVersion: 'v2025-02-19',
|
|
301
|
+
host: 'project',
|
|
302
|
+
pathPatterns: [
|
|
303
|
+
'data/mutate/{dataset}'
|
|
304
|
+
],
|
|
305
|
+
slug: 'mutation',
|
|
306
|
+
title: 'Mutation API reference'
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
defaultApiVersion: 'v2021-06-07',
|
|
310
|
+
host: 'global',
|
|
311
|
+
pathPatterns: [
|
|
312
|
+
'projects',
|
|
313
|
+
'projects/{projectId}',
|
|
314
|
+
'projects/{projectId}/cors',
|
|
315
|
+
'projects/{projectId}/cors/{id}',
|
|
316
|
+
'projects/{projectId}/datasets',
|
|
317
|
+
'projects/{projectId}/datasets/{datasetName}/tags/{tagIdentifier}',
|
|
318
|
+
'projects/{projectId}/datasets/{name}',
|
|
319
|
+
'projects/{projectId}/datasets/{name}/copy',
|
|
320
|
+
'projects/{projectId}/datasets/{name}/settings/embeddings',
|
|
321
|
+
'projects/{projectId}/datasets/{name}/tags',
|
|
322
|
+
'projects/{projectId}/features',
|
|
323
|
+
'projects/{projectId}/permissions',
|
|
324
|
+
'projects/{projectId}/tags',
|
|
325
|
+
'projects/{projectId}/tags/{tagIdentifier}',
|
|
326
|
+
'projects/{projectId}/tokens',
|
|
327
|
+
'projects/{projectId}/tokens/{tokenId}',
|
|
328
|
+
'projects/{projectId}/users/{userId}'
|
|
329
|
+
],
|
|
330
|
+
slug: 'projects-api',
|
|
331
|
+
title: 'Projects API reference'
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
defaultApiVersion: 'v2025-02-19',
|
|
335
|
+
host: 'project',
|
|
336
|
+
pathPatterns: [
|
|
337
|
+
'data/query/{dataset}'
|
|
338
|
+
],
|
|
339
|
+
slug: 'query',
|
|
340
|
+
title: 'Query API reference'
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
defaultApiVersion: 'v2021-10-04',
|
|
344
|
+
host: 'global',
|
|
345
|
+
pathPatterns: [
|
|
346
|
+
'organizations/{organizationId}/acl',
|
|
347
|
+
'organizations/{organizationId}/acl/{sanityUserId}',
|
|
348
|
+
'organizations/{organizationId}/grants',
|
|
349
|
+
'organizations/{organizationId}/providers/{providerId}/projects/{projectId}/role-mappings',
|
|
350
|
+
'projects/{projectId}/acl',
|
|
351
|
+
'projects/{projectId}/acl/{userId}',
|
|
352
|
+
'projects/{projectId}/datasets/{datasetName}/acl',
|
|
353
|
+
'projects/{projectId}/datasets/{datasetName}/grants',
|
|
354
|
+
'projects/{projectId}/grants',
|
|
355
|
+
'projects/{projectId}/permissionResourceSchemas',
|
|
356
|
+
'projects/{projectId}/roles',
|
|
357
|
+
'projects/{projectId}/roles/{roleName}'
|
|
358
|
+
],
|
|
359
|
+
slug: 'roles',
|
|
360
|
+
title: 'Roles API reference'
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
defaultApiVersion: 'v2022-04-01',
|
|
364
|
+
host: 'project',
|
|
365
|
+
pathPatterns: [
|
|
366
|
+
'publish/{projectId}/{dataset}',
|
|
367
|
+
'schedules/{projectId}/{dataset}',
|
|
368
|
+
'schedules/{projectId}/{dataset}/{scheduleId}',
|
|
369
|
+
'schedules/{projectId}/{dataset}/{scheduleId}/publish',
|
|
370
|
+
'unpublish/{projectId}/{dataset}'
|
|
371
|
+
],
|
|
372
|
+
slug: 'scheduling',
|
|
373
|
+
title: 'Scheduling API reference'
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
defaultApiVersion: 'v2026-04-27',
|
|
377
|
+
host: 'global',
|
|
378
|
+
pathPatterns: [
|
|
379
|
+
'organizations/{organizationId}/attribute-definitions',
|
|
380
|
+
'organizations/{organizationId}/attribute-definitions/{key}',
|
|
381
|
+
'organizations/{organizationId}/users/me/attributes',
|
|
382
|
+
'organizations/{organizationId}/users/{sanityUserId}/attributes'
|
|
383
|
+
],
|
|
384
|
+
slug: 'user-attributes',
|
|
385
|
+
title: 'User attributes API reference'
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
defaultApiVersion: 'v2025-02-19',
|
|
389
|
+
host: 'project',
|
|
390
|
+
pathPatterns: [
|
|
391
|
+
'hooks/projects/{projectId}',
|
|
392
|
+
'hooks/projects/{projectId}/{id}',
|
|
393
|
+
'hooks/projects/{projectId}/{id}/attempts',
|
|
394
|
+
'hooks/{id}/messages'
|
|
395
|
+
],
|
|
396
|
+
slug: 'webhooks',
|
|
397
|
+
title: 'Webhooks API reference'
|
|
398
|
+
}
|
|
399
|
+
];
|
|
400
|
+
|
|
401
|
+
//# sourceMappingURL=apiRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/generated/apiRoutes.ts"],"sourcesContent":["/**\n * GENERATED FILE - DO NOT EDIT\n *\n * Routing manifest for `sanity api`, distilled from the published OpenAPI\n * specifications at https://www.sanity.io/docs/api/openapi\n *\n * Regenerate with: pnpm generate:api-routes\n */\nimport {type ApiRouteEntry} from '../actions/api/types.js'\n\nexport const apiRoutes: ApiRouteEntry[] = [\n {\n defaultApiVersion: 'v2025-07-11',\n host: 'global',\n pathPatterns: [\n 'access/invites/me',\n 'access/organization/{resourceId}/users/roles/default',\n 'access/requests/me',\n 'access/robots/me',\n 'access/robots/me/rotate',\n 'access/{resourceType}/{resourceId}/invites',\n 'access/{resourceType}/{resourceId}/invites/token/{inviteToken}',\n 'access/{resourceType}/{resourceId}/invites/token/{inviteToken}/accept',\n 'access/{resourceType}/{resourceId}/invites/{inviteId}',\n 'access/{resourceType}/{resourceId}/permissions',\n 'access/{resourceType}/{resourceId}/permissions/{permissionName}',\n 'access/{resourceType}/{resourceId}/requests',\n 'access/{resourceType}/{resourceId}/requests/{requestId}/accept',\n 'access/{resourceType}/{resourceId}/requests/{requestId}/decline',\n 'access/{resourceType}/{resourceId}/robots',\n 'access/{resourceType}/{resourceId}/robots/{robotId}',\n 'access/{resourceType}/{resourceId}/roles',\n 'access/{resourceType}/{resourceId}/roles/{roleName}',\n 'access/{resourceType}/{resourceId}/user-permissions/me',\n 'access/{resourceType}/{resourceId}/user-permissions/me/check',\n 'access/{resourceType}/{resourceId}/users',\n 'access/{resourceType}/{resourceId}/users/me',\n 'access/{resourceType}/{resourceId}/users/{sanityUserId}',\n 'access/{resourceType}/{resourceId}/users/{sanityUserId}/roles',\n 'access/{resourceType}/{resourceId}/users/{sanityUserId}/roles/{roleName}'\n ],\n slug: 'access-api',\n title: 'Access API reference'\n },\n {\n defaultApiVersion: 'v2025-02-19',\n host: 'project',\n pathPatterns: [\n 'data/actions/{dataset}'\n ],\n slug: 'actions',\n title: 'Actions API reference'\n },\n {\n defaultApiVersion: 'v2021-02-01',\n host: 'global',\n pathPatterns: [\n 'activity',\n 'activity/export/csv'\n ],\n slug: 'activity-log',\n title: 'Activity Log API Reference'\n },\n {\n defaultApiVersion: 'vX',\n host: 'project',\n pathPatterns: [\n 'agent/action/generate/{dataset}',\n 'agent/action/patch/{dataset}',\n 'agent/action/prompt/{dataset}',\n 'agent/action/transform/{dataset}',\n 'agent/action/translate/{dataset}'\n ],\n slug: 'agent-actions',\n title: 'Agent Actions'\n },\n {\n host: 'global',\n pathPatterns: [\n 'applications',\n 'applications/{applicationId}',\n 'applications/{applicationId}/access',\n 'applications/{applicationId}/deployments',\n 'applications/{applicationId}/installations',\n 'applications/{applicationId}/interfaces',\n 'applications/{applicationId}/workspaces',\n 'deploy',\n 'deploy/quickstart',\n 'installations',\n 'installations/{installationId}',\n 'installations/{installationId}/access',\n 'installations/{installationId}/configs',\n 'installations/{installationId}/configs/{configId}',\n 'installations/{installationId}/interfaces',\n 'projects/{projectId}/user-applications',\n 'projects/{projectId}/user-applications/{userApplicationId}',\n 'projects/{projectId}/user-applications/{userApplicationId}/config/{configKey}',\n 'projects/{projectId}/user-applications/{userApplicationId}/deployments',\n 'studiohosts/{appHost}/availability',\n 'user-applications',\n 'user-applications/auto-update-version/{userApplicationId}',\n 'user-applications/resolve/application',\n 'user-applications/resolve/project',\n 'user-applications/workspaces',\n 'user-applications/{userApplicationId}',\n 'user-applications/{userApplicationId}/applicationData',\n 'user-applications/{userApplicationId}/config/{configKey}',\n 'user-applications/{userApplicationId}/deployments',\n 'user-applications/{userApplicationId}/workspaces'\n ],\n slug: 'applications-api',\n title: 'Applications API Reference'\n },\n {\n host: 'project',\n pathPatterns: [\n 'applications',\n 'applications/{applicationId}',\n 'applications/{applicationId}/access',\n 'applications/{applicationId}/deployments',\n 'applications/{applicationId}/installations',\n 'applications/{applicationId}/interfaces',\n 'applications/{applicationId}/workspaces',\n 'deploy',\n 'deploy/quickstart',\n 'installations',\n 'installations/{installationId}',\n 'installations/{installationId}/access',\n 'installations/{installationId}/configs',\n 'installations/{installationId}/configs/{configId}',\n 'installations/{installationId}/interfaces',\n 'projects/{projectId}/user-applications',\n 'projects/{projectId}/user-applications/{userApplicationId}',\n 'projects/{projectId}/user-applications/{userApplicationId}/config/{configKey}',\n 'projects/{projectId}/user-applications/{userApplicationId}/deployments',\n 'studiohosts/{appHost}/availability',\n 'user-applications',\n 'user-applications/auto-update-version/{userApplicationId}',\n 'user-applications/resolve/application',\n 'user-applications/resolve/project',\n 'user-applications/workspaces',\n 'user-applications/{userApplicationId}',\n 'user-applications/{userApplicationId}/applicationData',\n 'user-applications/{userApplicationId}/config/{configKey}',\n 'user-applications/{userApplicationId}/deployments',\n 'user-applications/{userApplicationId}/workspaces'\n ],\n slug: 'applications-api',\n title: 'Applications API Reference'\n },\n {\n defaultApiVersion: 'v2024-06-24',\n host: 'project',\n pathPatterns: [\n 'assets/files/{dataset}',\n 'assets/images/{dataset}',\n 'assets/media-library-link/{dataset}'\n ],\n slug: 'assets',\n title: 'Assets API reference'\n },\n {\n defaultApiVersion: 'v2025-02-19',\n host: 'global',\n pathPatterns: [\n 'projects/{projectId}/datasets/{datasetName}/backups',\n 'projects/{projectId}/datasets/{datasetName}/backups/{backupId}',\n 'projects/{projectId}/datasets/{datasetName}/settings/backups'\n ],\n slug: 'backups',\n title: 'Backups API reference'\n },\n {\n defaultApiVersion: 'vX',\n host: 'global',\n pathPatterns: [\n 'agent/prompt',\n 'agent/{organizationId}/threads/{threadId}'\n ],\n slug: 'content-agent',\n title: 'Content Agent API reference'\n },\n {\n defaultApiVersion: 'v2025-02-19',\n host: 'global',\n pathPatterns: [\n 'projects/{projectId}/datasets/{dataset}/copy'\n ],\n slug: 'copy',\n title: 'Copy API reference'\n },\n {\n defaultApiVersion: 'v2025-02-19',\n host: 'project',\n pathPatterns: [\n 'data/doc/{dataset}/{documentId}'\n ],\n slug: 'doc',\n title: 'Doc API reference'\n },\n {\n defaultApiVersion: 'vX',\n host: 'project',\n pathPatterns: [\n 'embeddings-index/query/{dataset}/{indexName}',\n 'embeddings-index/{dataset}',\n 'embeddings-index/{dataset}/{indexName}'\n ],\n slug: 'embeddings-index',\n title: 'Embeddings Index API reference'\n },\n {\n defaultApiVersion: 'v2021-03-25',\n host: 'project',\n pathPatterns: [\n 'data/export/{dataset}'\n ],\n slug: 'export',\n title: 'Export API reference'\n },\n {\n defaultApiVersion: 'v2025-02-19',\n host: 'project',\n pathPatterns: [\n 'data/history/{dataset}/documents/{documentId}',\n 'data/history/{dataset}/transactions',\n 'data/history/{dataset}/transactions/{documentIds}'\n ],\n slug: 'history',\n title: 'History API reference'\n },\n {\n defaultApiVersion: 'v2021-06-07',\n host: 'global',\n pathPatterns: [\n 'jobs/{jobId}',\n 'jobs/{jobId}/listen'\n ],\n slug: 'jobs',\n title: 'Jobs API reference'\n },\n {\n defaultApiVersion: 'v2025-02-19',\n host: 'project',\n pathPatterns: [\n 'data/listen/{dataset}'\n ],\n slug: 'listen',\n title: 'Listen API reference'\n },\n {\n defaultApiVersion: 'v2025-02-19',\n host: 'project',\n pathPatterns: [\n 'data/live/events/{dataset}'\n ],\n slug: 'live',\n title: 'Live Content API reference'\n },\n {\n defaultApiVersion: 'v2025-02-19',\n host: 'global',\n pathPatterns: [\n 'media-libraries/{libraryId}/mutate',\n 'media-libraries/{libraryId}/query',\n 'media-libraries/{libraryId}/references/documents/{assetId}/to',\n 'media-libraries/{libraryId}/refsearch',\n 'media-libraries/{libraryId}/signing-keys',\n 'media-libraries/{libraryId}/signing-keys/{keyId}',\n 'media-libraries/{libraryId}/upload',\n 'media-libraries/{libraryId}/video/{videoId}/playback-info',\n 'media-libraries/{libraryId}/video/{videoId}/playback/{type}',\n 'media-libraries/{libraryId}/video/{videoId}/renditions/{name}',\n 'media-libraries/{libraryId}/video/{videoId}/subtitles',\n 'media-libraries/{libraryId}/video/{videoId}/subtitles/upload',\n 'media-libraries/{libraryId}/video/{videoId}/subtitles/{subtitleId}'\n ],\n slug: 'media-library',\n title: 'Media Library API reference'\n },\n {\n defaultApiVersion: 'v2025-02-19',\n host: 'project',\n pathPatterns: [\n 'media-libraries/{libraryId}/mutate',\n 'media-libraries/{libraryId}/query',\n 'media-libraries/{libraryId}/references/documents/{assetId}/to',\n 'media-libraries/{libraryId}/refsearch',\n 'media-libraries/{libraryId}/signing-keys',\n 'media-libraries/{libraryId}/signing-keys/{keyId}',\n 'media-libraries/{libraryId}/upload',\n 'media-libraries/{libraryId}/video/{videoId}/playback-info',\n 'media-libraries/{libraryId}/video/{videoId}/playback/{type}',\n 'media-libraries/{libraryId}/video/{videoId}/renditions/{name}',\n 'media-libraries/{libraryId}/video/{videoId}/subtitles',\n 'media-libraries/{libraryId}/video/{videoId}/subtitles/upload',\n 'media-libraries/{libraryId}/video/{videoId}/subtitles/{subtitleId}'\n ],\n slug: 'media-library',\n title: 'Media Library API reference'\n },\n {\n defaultApiVersion: 'v2025-02-19',\n host: 'project',\n pathPatterns: [\n 'data/mutate/{dataset}'\n ],\n slug: 'mutation',\n title: 'Mutation API reference'\n },\n {\n defaultApiVersion: 'v2021-06-07',\n host: 'global',\n pathPatterns: [\n 'projects',\n 'projects/{projectId}',\n 'projects/{projectId}/cors',\n 'projects/{projectId}/cors/{id}',\n 'projects/{projectId}/datasets',\n 'projects/{projectId}/datasets/{datasetName}/tags/{tagIdentifier}',\n 'projects/{projectId}/datasets/{name}',\n 'projects/{projectId}/datasets/{name}/copy',\n 'projects/{projectId}/datasets/{name}/settings/embeddings',\n 'projects/{projectId}/datasets/{name}/tags',\n 'projects/{projectId}/features',\n 'projects/{projectId}/permissions',\n 'projects/{projectId}/tags',\n 'projects/{projectId}/tags/{tagIdentifier}',\n 'projects/{projectId}/tokens',\n 'projects/{projectId}/tokens/{tokenId}',\n 'projects/{projectId}/users/{userId}'\n ],\n slug: 'projects-api',\n title: 'Projects API reference'\n },\n {\n defaultApiVersion: 'v2025-02-19',\n host: 'project',\n pathPatterns: [\n 'data/query/{dataset}'\n ],\n slug: 'query',\n title: 'Query API reference'\n },\n {\n defaultApiVersion: 'v2021-10-04',\n host: 'global',\n pathPatterns: [\n 'organizations/{organizationId}/acl',\n 'organizations/{organizationId}/acl/{sanityUserId}',\n 'organizations/{organizationId}/grants',\n 'organizations/{organizationId}/providers/{providerId}/projects/{projectId}/role-mappings',\n 'projects/{projectId}/acl',\n 'projects/{projectId}/acl/{userId}',\n 'projects/{projectId}/datasets/{datasetName}/acl',\n 'projects/{projectId}/datasets/{datasetName}/grants',\n 'projects/{projectId}/grants',\n 'projects/{projectId}/permissionResourceSchemas',\n 'projects/{projectId}/roles',\n 'projects/{projectId}/roles/{roleName}'\n ],\n slug: 'roles',\n title: 'Roles API reference'\n },\n {\n defaultApiVersion: 'v2022-04-01',\n host: 'project',\n pathPatterns: [\n 'publish/{projectId}/{dataset}',\n 'schedules/{projectId}/{dataset}',\n 'schedules/{projectId}/{dataset}/{scheduleId}',\n 'schedules/{projectId}/{dataset}/{scheduleId}/publish',\n 'unpublish/{projectId}/{dataset}'\n ],\n slug: 'scheduling',\n title: 'Scheduling API reference'\n },\n {\n defaultApiVersion: 'v2026-04-27',\n host: 'global',\n pathPatterns: [\n 'organizations/{organizationId}/attribute-definitions',\n 'organizations/{organizationId}/attribute-definitions/{key}',\n 'organizations/{organizationId}/users/me/attributes',\n 'organizations/{organizationId}/users/{sanityUserId}/attributes'\n ],\n slug: 'user-attributes',\n title: 'User attributes API reference'\n },\n {\n defaultApiVersion: 'v2025-02-19',\n host: 'project',\n pathPatterns: [\n 'hooks/projects/{projectId}',\n 'hooks/projects/{projectId}/{id}',\n 'hooks/projects/{projectId}/{id}/attempts',\n 'hooks/{id}/messages'\n ],\n slug: 'webhooks',\n title: 'Webhooks API reference'\n }\n]\n"],"names":["apiRoutes","defaultApiVersion","host","pathPatterns","slug","title"],"mappings":"AAAA;;;;;;;CAOC,GAGD,OAAO,MAAMA,YAA6B;IACxC;QACEC,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEH,MAAM;QACNC,cAAc;YACZ;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEH,MAAM;QACNC,cAAc;YACZ;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;IACA;QACEJ,mBAAmB;QACnBC,MAAM;QACNC,cAAc;YACZ;YACA;YACA;YACA;SACD;QACDC,MAAM;QACNC,OAAO;IACT;CACD,CAAA"}
|