@rehpic/vcli 0.1.0-beta.5.1 → 0.1.0-beta.7.1
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 +3 -0
- package/dist/index.js +19 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -404,13 +404,31 @@ function buildPaginationOptions(limit, cursor) {
|
|
|
404
404
|
function normalizeMatch(value) {
|
|
405
405
|
return value?.trim().toLowerCase();
|
|
406
406
|
}
|
|
407
|
+
async function fetchConvexUrl(appUrl) {
|
|
408
|
+
try {
|
|
409
|
+
const url = new URL("/api/config", appUrl).toString();
|
|
410
|
+
const response = await fetch(url);
|
|
411
|
+
if (!response.ok) {
|
|
412
|
+
throw new Error(`HTTP ${response.status}`);
|
|
413
|
+
}
|
|
414
|
+
const data = await response.json();
|
|
415
|
+
if (data.convexUrl) {
|
|
416
|
+
return data.convexUrl;
|
|
417
|
+
}
|
|
418
|
+
} catch {
|
|
419
|
+
}
|
|
420
|
+
return "http://127.0.0.1:3210";
|
|
421
|
+
}
|
|
407
422
|
async function getRuntime(command) {
|
|
408
423
|
const options = command.optsWithGlobals();
|
|
409
424
|
const profile = options.profile ?? "default";
|
|
410
425
|
const session = await readSession(profile);
|
|
411
426
|
const appUrlSource = options.appUrl ?? session?.appUrl ?? process.env.NEXT_PUBLIC_APP_URL;
|
|
412
427
|
const appUrl = requiredString(appUrlSource, "app URL");
|
|
413
|
-
|
|
428
|
+
let convexUrl = options.convexUrl ?? session?.convexUrl ?? process.env.NEXT_PUBLIC_CONVEX_URL ?? process.env.CONVEX_URL;
|
|
429
|
+
if (!convexUrl) {
|
|
430
|
+
convexUrl = await fetchConvexUrl(appUrl);
|
|
431
|
+
}
|
|
414
432
|
return {
|
|
415
433
|
appUrl,
|
|
416
434
|
convexUrl,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/index.ts","../../../convex/_generated/api.js","../../../src/cli/auth.ts","../../../src/cli/convex.ts","../../../src/cli/output.ts","../../../src/cli/session.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { readFile } from 'node:fs/promises';\nimport { extname } from 'node:path';\nimport { config as loadEnv } from 'dotenv';\nimport { Command } from 'commander';\nimport { makeFunctionReference } from 'convex/server';\nimport { api } from '../../convex/_generated/api';\nimport type { Id } from '../../convex/_generated/dataModel';\nimport type { Permission } from '../../convex/_shared/permissions';\nimport {\n fetchAuthSession,\n loginWithPassword,\n logout,\n prompt,\n promptSecret,\n signUpWithEmail,\n} from './auth';\nimport { createConvexClient, runAction, runMutation, runQuery } from './convex';\nimport { printOutput } from './output';\nimport {\n clearSession,\n createEmptySession,\n readSession,\n writeSession,\n type CliSession,\n} from './session';\n\nloadEnv({ path: '.env.local', override: false });\nloadEnv({ path: '.env', override: false });\n\nconst cliApi = {\n listWorkspaceReferenceData: makeFunctionReference<'action'>(\n 'cli:listWorkspaceReferenceData',\n ),\n searchIcons: makeFunctionReference<'action'>('cli:searchIcons'),\n listDocuments: makeFunctionReference<'action'>('cli:listDocuments'),\n getDocument: makeFunctionReference<'action'>('cli:getDocument'),\n createDocument: makeFunctionReference<'action'>('cli:createDocument'),\n updateDocument: makeFunctionReference<'action'>('cli:updateDocument'),\n deleteDocument: makeFunctionReference<'action'>('cli:deleteDocument'),\n moveDocumentToFolder: makeFunctionReference<'action'>(\n 'cli:moveDocumentToFolder',\n ),\n listIssues: makeFunctionReference<'action'>('cli:listIssues'),\n getIssue: makeFunctionReference<'action'>('cli:getIssue'),\n createIssue: makeFunctionReference<'action'>('cli:createIssue'),\n updateIssue: makeFunctionReference<'action'>('cli:updateIssue'),\n deleteIssue: makeFunctionReference<'action'>('cli:deleteIssue'),\n assignIssue: makeFunctionReference<'action'>('cli:assignIssue'),\n unassignIssue: makeFunctionReference<'action'>('cli:unassignIssue'),\n listProjects: makeFunctionReference<'action'>('cli:listProjects'),\n getProject: makeFunctionReference<'action'>('cli:getProject'),\n createProject: makeFunctionReference<'action'>('cli:createProject'),\n updateProject: makeFunctionReference<'action'>('cli:updateProject'),\n deleteProject: makeFunctionReference<'action'>('cli:deleteProject'),\n addProjectMember: makeFunctionReference<'action'>('cli:addProjectMember'),\n removeProjectMember: makeFunctionReference<'action'>(\n 'cli:removeProjectMember',\n ),\n changeProjectLead: makeFunctionReference<'action'>('cli:changeProjectLead'),\n listTeams: makeFunctionReference<'action'>('cli:listTeams'),\n getTeam: makeFunctionReference<'action'>('cli:getTeam'),\n createTeam: makeFunctionReference<'action'>('cli:createTeam'),\n updateTeam: makeFunctionReference<'action'>('cli:updateTeam'),\n deleteTeam: makeFunctionReference<'action'>('cli:deleteTeam'),\n addTeamMember: makeFunctionReference<'action'>('cli:addTeamMember'),\n removeTeamMember: makeFunctionReference<'action'>('cli:removeTeamMember'),\n changeTeamLead: makeFunctionReference<'action'>('cli:changeTeamLead'),\n listFolders: makeFunctionReference<'action'>('cli:listFolders'),\n createFolder: makeFunctionReference<'action'>('cli:createFolder'),\n updateFolder: makeFunctionReference<'action'>('cli:updateFolder'),\n deleteFolder: makeFunctionReference<'action'>('cli:deleteFolder'),\n};\n\nconst rolesApi = api.roles.index;\ntype OrganizationRoleId = Id<'roles'> | Id<'orgRoles'>;\n\ntype GlobalOptions = {\n appUrl?: string;\n convexUrl?: string;\n json?: boolean;\n org?: string;\n profile?: string;\n};\n\ntype Runtime = {\n appUrl: string;\n convexUrl: string;\n json: boolean;\n org?: string;\n profile: string;\n session: CliSession | null;\n};\n\nconst ISSUE_STATE_TYPES = [\n 'backlog',\n 'todo',\n 'in_progress',\n 'done',\n 'canceled',\n] as const;\n\nconst PROJECT_STATUS_TYPES = [\n 'backlog',\n 'planned',\n 'in_progress',\n 'completed',\n 'canceled',\n] as const;\n\nconst NOTIFICATION_CATEGORIES = [\n 'invites',\n 'assignments',\n 'mentions',\n 'comments',\n] as const;\n\nfunction requiredString(value: string | undefined, label: string) {\n if (!value?.trim()) {\n throw new Error(`${label} is required`);\n }\n return value.trim();\n}\n\nfunction optionalNumber(value: string | undefined, label: string) {\n if (value === undefined) {\n return undefined;\n }\n\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) {\n throw new Error(`${label} must be a valid number`);\n }\n\n return parsed;\n}\n\nfunction requiredNumber(value: string | undefined, label: string) {\n const parsed = optionalNumber(value, label);\n if (parsed === undefined) {\n throw new Error(`${label} is required`);\n }\n return parsed;\n}\n\nfunction parseBoolean(value: string, label: string) {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'true') return true;\n if (normalized === 'false') return false;\n throw new Error(`${label} must be \"true\" or \"false\"`);\n}\n\nfunction parseList(value: string | undefined) {\n if (!value) return [];\n return value\n .split(',')\n .map(item => item.trim())\n .filter(Boolean);\n}\n\nfunction buildPaginationOptions(limit?: string, cursor?: string) {\n return {\n cursor: cursor ?? null,\n numItems: optionalNumber(limit, 'limit') ?? 20,\n };\n}\n\nfunction normalizeMatch(value: string | undefined | null) {\n return value?.trim().toLowerCase();\n}\n\nasync function getRuntime(command: Command) {\n const options = command.optsWithGlobals<GlobalOptions>();\n const profile = options.profile ?? 'default';\n const session = await readSession(profile);\n const appUrlSource =\n options.appUrl ?? session?.appUrl ?? process.env.NEXT_PUBLIC_APP_URL;\n const appUrl = requiredString(appUrlSource, 'app URL');\n const convexUrl =\n options.convexUrl ??\n session?.convexUrl ??\n process.env.NEXT_PUBLIC_CONVEX_URL ??\n process.env.CONVEX_URL ??\n 'http://127.0.0.1:3210';\n\n return {\n appUrl,\n convexUrl,\n json: Boolean(options.json),\n org: options.org ?? session?.activeOrgSlug,\n profile,\n session,\n } satisfies Runtime;\n}\n\nfunction requireSession(runtime: Runtime) {\n if (!runtime.session || Object.keys(runtime.session.cookies).length === 0) {\n throw new Error('Not logged in. Run `vcli auth login` first.');\n }\n return runtime.session;\n}\n\nfunction requireOrg(runtime: Runtime, explicit?: string) {\n const orgSlug = explicit ?? runtime.org;\n if (!orgSlug) {\n throw new Error(\n 'Organization slug is required. Pass `--org <slug>` or run `vcli org use <slug>`.',\n );\n }\n return orgSlug;\n}\n\nasync function getClient(command: Command) {\n const runtime = await getRuntime(command);\n const session = requireSession(runtime);\n const client = await createConvexClient(\n session,\n runtime.appUrl,\n runtime.convexUrl,\n );\n return { client, runtime, session };\n}\n\nasync function resolveMemberId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n ref: string,\n): Promise<Id<'users'>> {\n const members = await runQuery(\n client,\n api.organizations.queries.listMembers,\n {\n orgSlug,\n },\n );\n const needle = normalizeMatch(ref);\n const matches = members.filter(member => {\n const user = member.user;\n if (!user) return false;\n return (\n normalizeMatch(String(user._id)) === needle ||\n normalizeMatch(user.email) === needle ||\n normalizeMatch(user.name) === needle ||\n normalizeMatch(user.username) === needle\n );\n });\n\n if (matches.length === 0) {\n throw new Error(`No member matched \"${ref}\"`);\n }\n if (matches.length > 1) {\n throw new Error(`Multiple members matched \"${ref}\"`);\n }\n return matches[0]!.user!._id;\n}\n\nasync function resolveRoleId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n ref: string,\n): Promise<OrganizationRoleId> {\n const roles = await runQuery(client, rolesApi.list, { orgSlug });\n const needle = normalizeMatch(ref);\n const matches = roles.filter(role => {\n const candidate = role as { _id: string; name?: string; key?: string };\n return (\n normalizeMatch(String(candidate._id)) === needle ||\n normalizeMatch(candidate.name) === needle ||\n normalizeMatch(candidate.key) === needle\n );\n });\n\n if (matches.length === 0) {\n throw new Error(`No role matched \"${ref}\"`);\n }\n if (matches.length > 1) {\n throw new Error(`Multiple roles matched \"${ref}\"`);\n }\n return matches[0]!._id;\n}\n\nfunction parsePermissions(value: string): Permission[] {\n return value\n .split(',')\n .map(permission => permission.trim())\n .filter(Boolean) as Permission[];\n}\n\nfunction nullableOption(value: string | undefined, clear = false) {\n if (clear) return null;\n return value;\n}\n\nfunction mimeTypeForFile(filePath: string) {\n switch (extname(filePath).toLowerCase()) {\n case '.png':\n return 'image/png';\n case '.jpg':\n case '.jpeg':\n return 'image/jpeg';\n case '.webp':\n return 'image/webp';\n case '.gif':\n return 'image/gif';\n case '.svg':\n return 'image/svg+xml';\n default:\n return 'application/octet-stream';\n }\n}\n\nasync function uploadFile(uploadUrl: string, filePath: string) {\n const body = await readFile(filePath);\n const response = await fetch(uploadUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': mimeTypeForFile(filePath),\n },\n body,\n });\n\n if (!response.ok) {\n throw new Error(`Upload failed with HTTP ${response.status}`);\n }\n\n const data = (await response.json()) as { storageId?: Id<'_storage'> };\n if (!data.storageId) {\n throw new Error('Upload response did not include a storageId');\n }\n\n return data.storageId;\n}\n\nasync function resolveTeamId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n teamKey?: string,\n) {\n if (!teamKey) {\n return undefined;\n }\n const team = await runAction(client, cliApi.getTeam, { orgSlug, teamKey });\n return team.id as Id<'teams'>;\n}\n\nasync function resolveProjectId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n projectKey?: string,\n) {\n if (!projectKey) {\n return undefined;\n }\n const project = await runAction(client, cliApi.getProject, {\n orgSlug,\n projectKey,\n });\n return project.id as Id<'projects'>;\n}\n\nasync function resolveIssueId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n issueKey: string,\n) {\n const issue = await runAction(client, cliApi.getIssue, { orgSlug, issueKey });\n return issue.id as Id<'issues'>;\n}\n\nasync function resolveDocumentId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n documentId: string,\n) {\n const document = await runAction(client, cliApi.getDocument, {\n orgSlug,\n documentId,\n });\n return document.id as Id<'documents'>;\n}\n\nasync function resolveIssueStateId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n ref: string,\n) {\n const states = await runQuery(\n client,\n api.organizations.queries.listIssueStates,\n {\n orgSlug,\n },\n );\n const needle = normalizeMatch(ref);\n const match = states.find(state => {\n return (\n normalizeMatch(String(state._id)) === needle ||\n normalizeMatch(state.name) === needle ||\n normalizeMatch(state.type) === needle\n );\n });\n\n if (!match) {\n throw new Error(`No issue state matched \"${ref}\"`);\n }\n\n return match._id;\n}\n\nasync function resolveIssuePriorityId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n ref: string,\n) {\n const priorities = await runQuery(\n client,\n api.organizations.queries.listIssuePriorities,\n { orgSlug },\n );\n const needle = normalizeMatch(ref);\n const match = priorities.find(priority => {\n return (\n normalizeMatch(String(priority._id)) === needle ||\n normalizeMatch(priority.name) === needle\n );\n });\n\n if (!match) {\n throw new Error(`No issue priority matched \"${ref}\"`);\n }\n\n return match._id;\n}\n\nasync function resolveProjectStatusId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n ref: string,\n) {\n const statuses = await runQuery(\n client,\n api.organizations.queries.listProjectStatuses,\n { orgSlug },\n );\n const needle = normalizeMatch(ref);\n const match = statuses.find(status => {\n return (\n normalizeMatch(String(status._id)) === needle ||\n normalizeMatch(status.name) === needle ||\n normalizeMatch(status.type) === needle\n );\n });\n\n if (!match) {\n throw new Error(`No project status matched \"${ref}\"`);\n }\n\n return match._id;\n}\n\nasync function parseEstimatedTimes(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n value: string,\n) {\n const entries = parseList(value);\n const estimatedTimes: Record<string, number> = {};\n\n for (const entry of entries) {\n const separatorIndex = entry.indexOf('=');\n if (separatorIndex <= 0) {\n throw new Error(\n 'estimated times must use the format \"state=hours,state=hours\"',\n );\n }\n\n const stateRef = entry.slice(0, separatorIndex).trim();\n const hours = Number(entry.slice(separatorIndex + 1).trim());\n if (!Number.isFinite(hours)) {\n throw new Error(`Invalid estimate for \"${stateRef}\"`);\n }\n\n const stateId = await resolveIssueStateId(client, orgSlug, stateRef);\n estimatedTimes[String(stateId)] = hours;\n }\n\n return estimatedTimes;\n}\n\nconst program = new Command();\n\nprogram\n .name('vcli')\n .description('Vector CLI')\n .showHelpAfterError()\n .option(\n '--app-url <url>',\n 'Vector app URL. Required unless saved in the profile or NEXT_PUBLIC_APP_URL is set.',\n )\n .option('--convex-url <url>', 'Convex deployment URL')\n .option('--org <slug>', 'Organization slug override')\n .option('--profile <name>', 'CLI profile name', 'default')\n .option('--json', 'Output JSON');\n\nconst authCommand = program.command('auth').description('Authentication');\n\nauthCommand\n .command('signup')\n .option('--email <email>', 'Email address')\n .option('--username <username>', 'Username')\n .option('--password <password>', 'Password')\n .action(async (options, command) => {\n const runtime = await getRuntime(command);\n const email = requiredString(\n options.email?.trim() || (await prompt('Email: ')),\n 'email',\n ).toLowerCase();\n const username = requiredString(\n options.username?.trim() || (await prompt('Username: ')),\n 'username',\n );\n const password =\n options.password?.trim() || (await promptSecret('Password: '));\n\n let session = createEmptySession();\n session.appUrl = runtime.appUrl;\n session.convexUrl = runtime.convexUrl;\n\n session = await signUpWithEmail(\n session,\n runtime.appUrl,\n email,\n username,\n password,\n );\n const authState = await fetchAuthSession(session, runtime.appUrl);\n session = authState.session;\n\n const client = await createConvexClient(\n session,\n runtime.appUrl,\n runtime.convexUrl,\n );\n const orgs = await runQuery(client, api.users.getOrganizations, {});\n session.activeOrgSlug = orgs[0]?.slug ?? session.activeOrgSlug;\n\n await writeSession(session, runtime.profile);\n printOutput(\n {\n signedUpAs:\n authState.user?.email ??\n authState.user?.username ??\n authState.user?.name,\n activeOrgSlug: session.activeOrgSlug ?? null,\n },\n runtime.json,\n );\n });\n\nauthCommand\n .command('login [identifier]')\n .option('--password <password>', 'Password')\n .action(async (identifier, options, command) => {\n const runtime = await getRuntime(command);\n const loginId = identifier?.trim() || (await prompt('Email or username: '));\n const password =\n options.password?.trim() || (await promptSecret('Password: '));\n let session = createEmptySession();\n session.appUrl = runtime.appUrl;\n session.convexUrl = runtime.convexUrl;\n\n session = await loginWithPassword(\n session,\n runtime.appUrl,\n loginId,\n password,\n );\n const authState = await fetchAuthSession(session, runtime.appUrl);\n session = authState.session;\n\n const client = await createConvexClient(\n session,\n runtime.appUrl,\n runtime.convexUrl,\n );\n const orgs = await runQuery(client, api.users.getOrganizations, {});\n session.activeOrgSlug = orgs[0]?.slug ?? session.activeOrgSlug;\n\n await writeSession(session, runtime.profile);\n printOutput(\n {\n loggedInAs:\n authState.user?.email ??\n authState.user?.username ??\n authState.user?.name,\n activeOrgSlug: session.activeOrgSlug ?? null,\n },\n runtime.json,\n );\n });\n\nauthCommand.command('logout').action(async (_options, command) => {\n const runtime = await getRuntime(command);\n const session = requireSession(runtime);\n await logout(session, runtime.appUrl);\n await clearSession(runtime.profile);\n printOutput({ success: true }, runtime.json);\n});\n\nauthCommand.command('whoami').action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const [user, orgs] = await Promise.all([\n runQuery(client, api.users.getCurrentUser, {}),\n runQuery(client, api.users.getOrganizations, {}),\n ]);\n printOutput(\n {\n user,\n organizations: orgs,\n activeOrgSlug: runtime.org ?? null,\n },\n runtime.json,\n );\n});\n\nconst orgCommand = program.command('org').description('Organizations');\n\norgCommand.command('list').action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const orgs = await runQuery(client, api.users.getOrganizations, {});\n printOutput(orgs, runtime.json);\n});\n\norgCommand.command('current').action(async (_options, command) => {\n const runtime = await getRuntime(command);\n printOutput({ activeOrgSlug: runtime.org ?? null }, runtime.json);\n});\n\norgCommand.command('use <slug>').action(async (slug, _options, command) => {\n const runtime = await getRuntime(command);\n const session = requireSession(runtime);\n session.activeOrgSlug = slug;\n session.appUrl = runtime.appUrl;\n session.convexUrl = runtime.convexUrl;\n await writeSession(session, runtime.profile);\n printOutput({ activeOrgSlug: slug }, runtime.json);\n});\n\norgCommand\n .command('create')\n .requiredOption('--name <name>')\n .requiredOption('--slug <slug>')\n .action(async (options, command) => {\n const { client, runtime, session } = await getClient(command);\n const result = await runMutation(\n client,\n api.organizations.mutations.create,\n {\n data: {\n name: options.name,\n slug: options.slug,\n },\n },\n );\n if (session) {\n session.activeOrgSlug = options.slug;\n session.appUrl = runtime.appUrl;\n session.convexUrl = runtime.convexUrl;\n await writeSession(session, runtime.profile);\n }\n printOutput(result, runtime.json);\n });\n\norgCommand\n .command('update [slug]')\n .option('--name <name>')\n .option('--new-slug <slug>')\n .action(async (slug, options, command) => {\n const { client, runtime, session } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runMutation(\n client,\n api.organizations.mutations.update,\n {\n orgSlug,\n data: {\n ...(options.name ? { name: options.name } : {}),\n ...(options.newSlug ? { slug: options.newSlug } : {}),\n },\n },\n );\n if (session && options.newSlug && session.activeOrgSlug === orgSlug) {\n session.activeOrgSlug = options.newSlug;\n await writeSession(session, runtime.profile);\n }\n printOutput(result, runtime.json);\n });\n\norgCommand.command('stats [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runQuery(\n client,\n api.organizations.queries.getOrganizationStats,\n { orgSlug },\n );\n printOutput(result, runtime.json);\n});\n\norgCommand\n .command('logo [slug]')\n .option('--file <path>')\n .option('--remove')\n .action(async (slug, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n\n if (options.remove) {\n throw new Error(\n 'Organization logo removal is not exposed by the current backend API.',\n );\n }\n\n const filePath = requiredString(options.file, 'file');\n const uploadUrl = await runMutation(\n client,\n api.organizations.mutations.generateLogoUploadUrl,\n { orgSlug },\n );\n const storageId = await uploadFile(uploadUrl, filePath);\n const result = await runMutation(\n client,\n api.organizations.mutations.updateLogoWithStorageId,\n {\n orgSlug,\n storageId,\n },\n );\n printOutput(\n { ...(result ?? { success: true }), storageId, orgSlug },\n runtime.json,\n );\n });\n\norgCommand.command('members [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const members = await runQuery(\n client,\n api.organizations.queries.listMembersWithRoles,\n {\n orgSlug,\n },\n );\n printOutput(members, runtime.json);\n});\n\norgCommand.command('invites [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const invites = await runQuery(\n client,\n api.organizations.queries.listInvites,\n {\n orgSlug,\n },\n );\n printOutput(invites, runtime.json);\n});\n\norgCommand\n .command('invite [slug]')\n .requiredOption('--email <email>')\n .option('--role <role>', 'member or admin', 'member')\n .action(async (slug, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runMutation(\n client,\n api.organizations.mutations.invite,\n {\n orgSlug,\n email: options.email,\n role: options.role,\n },\n );\n printOutput(result, runtime.json);\n });\n\norgCommand\n .command('member-role <member>')\n .requiredOption('--role <role>', 'member or admin')\n .action(async (member, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const userId = await resolveMemberId(client, orgSlug, member);\n const result = await runMutation(\n client,\n api.organizations.mutations.updateMemberRole,\n {\n orgSlug,\n userId,\n role: options.role,\n },\n );\n printOutput(result, runtime.json);\n });\n\norgCommand\n .command('remove-member <member>')\n .action(async (member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const userId = await resolveMemberId(client, orgSlug, member);\n const result = await runMutation(\n client,\n api.organizations.mutations.removeMember,\n {\n orgSlug,\n userId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\norgCommand\n .command('revoke-invite <inviteId>')\n .action(async (inviteId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.organizations.mutations.revokeInvite,\n {\n inviteId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nconst roleCommand = program.command('role').description('Organization roles');\n\nroleCommand.command('list [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const roles = await runQuery(client, rolesApi.list, { orgSlug });\n printOutput(roles, runtime.json);\n});\n\nroleCommand.command('get <role>').action(async (role, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const roleId = await resolveRoleId(client, orgSlug, role);\n const [summary, permissions] = await Promise.all([\n runQuery(client, rolesApi.get, { orgSlug, roleId }),\n runQuery(client, rolesApi.getPermissions, { roleId }),\n ]);\n printOutput({ summary, permissions }, runtime.json);\n});\n\nroleCommand\n .command('create')\n .requiredOption('--name <name>')\n .requiredOption('--permissions <permissions>', 'Comma-separated permissions')\n .option('--description <description>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runMutation(client, rolesApi.create, {\n orgSlug,\n name: options.name,\n description: options.description,\n permissions: parsePermissions(options.permissions),\n });\n printOutput({ roleId: result }, runtime.json);\n });\n\nroleCommand\n .command('update <role>')\n .requiredOption('--name <name>')\n .requiredOption('--permissions <permissions>', 'Comma-separated permissions')\n .option('--description <description>')\n .action(async (role, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const roleId = await resolveRoleId(client, orgSlug, role);\n const result = await runMutation(client, rolesApi.update, {\n orgSlug,\n roleId,\n name: options.name,\n description: options.description,\n permissions: parsePermissions(options.permissions),\n });\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nroleCommand\n .command('assign <role> <member>')\n .action(async (role, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const [roleId, userId] = await Promise.all([\n resolveRoleId(client, orgSlug, role),\n resolveMemberId(client, orgSlug, member),\n ]);\n const result = await runMutation(client, rolesApi.assign, {\n orgSlug,\n roleId,\n userId,\n });\n printOutput({ assignmentId: result }, runtime.json);\n });\n\nroleCommand\n .command('unassign <role> <member>')\n .action(async (role, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const [roleId, userId] = await Promise.all([\n resolveRoleId(client, orgSlug, role),\n resolveMemberId(client, orgSlug, member),\n ]);\n const result = await runMutation(client, rolesApi.removeAssignment, {\n orgSlug,\n roleId,\n userId,\n });\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nconst inviteCommand = program.command('invite').description('Invitations');\n\ninviteCommand.command('list').action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const invites = await runQuery(client, api.users.getPendingInvitations, {});\n printOutput(invites, runtime.json);\n});\n\ninviteCommand\n .command('accept <inviteId>')\n .action(async (inviteId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.organizations.mutations.acceptInvitation,\n { inviteId },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\ninviteCommand\n .command('decline <inviteId>')\n .action(async (inviteId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.organizations.mutations.declineInvitation,\n { inviteId },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nprogram.command('refdata [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runAction(client, cliApi.listWorkspaceReferenceData, {\n orgSlug,\n });\n printOutput(result, runtime.json);\n});\n\nprogram\n .command('icons <query>')\n .option('--limit <n>')\n .action(async (query, options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runAction(client, cliApi.searchIcons, {\n query,\n limit: options.limit ? Number(options.limit) : undefined,\n });\n printOutput(result, runtime.json);\n });\n\nprogram\n .command('search <query>')\n .option('--limit <n>')\n .action(async (query, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runQuery(client, api.search.queries.searchEntities, {\n orgSlug,\n query,\n limit: optionalNumber(options.limit, 'limit'),\n });\n printOutput(result, runtime.json);\n });\n\nconst permissionCommand = program\n .command('permission')\n .description('Permission checks');\n\npermissionCommand\n .command('check <permission>')\n .option('--team <teamKey>')\n .option('--project <projectKey>')\n .action(async (permission, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const [teamId, projectId] = await Promise.all([\n resolveTeamId(client, orgSlug, options.team),\n resolveProjectId(client, orgSlug, options.project),\n ]);\n const result = await runQuery(client, api.permissions.utils.has, {\n orgSlug,\n permission,\n teamId,\n projectId,\n });\n printOutput(\n { permission, allowed: result, teamId, projectId },\n runtime.json,\n );\n });\n\npermissionCommand\n .command('check-many <permissions>')\n .option('--team <teamKey>')\n .option('--project <projectKey>')\n .action(async (permissions, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const [teamId, projectId] = await Promise.all([\n resolveTeamId(client, orgSlug, options.team),\n resolveProjectId(client, orgSlug, options.project),\n ]);\n const permissionList = parsePermissions(permissions);\n const result = await runQuery(client, api.permissions.utils.hasMultiple, {\n orgSlug,\n permissions: permissionList,\n teamId,\n projectId,\n });\n printOutput(result, runtime.json);\n });\n\nconst activityCommand = program\n .command('activity')\n .description('Activity feed');\n\nactivityCommand\n .command('project <projectKey>')\n .option('--limit <n>')\n .option('--cursor <cursor>')\n .action(async (projectKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const projectId = await resolveProjectId(client, orgSlug, projectKey);\n const result = await runQuery(\n client,\n api.activities.queries.listProjectActivity,\n {\n projectId: projectId!,\n paginationOpts: buildPaginationOptions(options.limit, options.cursor),\n },\n );\n printOutput(result, runtime.json);\n });\n\nactivityCommand\n .command('team <teamKey>')\n .option('--limit <n>')\n .option('--cursor <cursor>')\n .action(async (teamKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const teamId = await resolveTeamId(client, orgSlug, teamKey);\n const result = await runQuery(\n client,\n api.activities.queries.listTeamActivity,\n {\n teamId: teamId!,\n paginationOpts: buildPaginationOptions(options.limit, options.cursor),\n },\n );\n printOutput(result, runtime.json);\n });\n\nactivityCommand\n .command('issue <issueKey>')\n .option('--limit <n>')\n .option('--cursor <cursor>')\n .action(async (issueKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const issueId = await resolveIssueId(client, orgSlug, issueKey);\n const result = await runQuery(\n client,\n api.activities.queries.listIssueActivity,\n {\n issueId,\n paginationOpts: buildPaginationOptions(options.limit, options.cursor),\n },\n );\n printOutput(result, runtime.json);\n });\n\nactivityCommand\n .command('document <documentId>')\n .option('--limit <n>')\n .option('--cursor <cursor>')\n .action(async (documentId, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const resolvedDocumentId = await resolveDocumentId(\n client,\n orgSlug,\n documentId,\n );\n const result = await runQuery(\n client,\n api.activities.queries.listDocumentActivity,\n {\n documentId: resolvedDocumentId,\n paginationOpts: buildPaginationOptions(options.limit, options.cursor),\n },\n );\n printOutput(result, runtime.json);\n });\n\nconst notificationCommand = program\n .command('notification')\n .description('Notifications');\n\nnotificationCommand\n .command('inbox')\n .option('--filter <filter>', 'all or unread')\n .option('--limit <n>')\n .option('--cursor <cursor>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runQuery(client, api.notifications.queries.listInbox, {\n filter: options.filter,\n paginationOpts: buildPaginationOptions(options.limit, options.cursor),\n });\n printOutput(result, runtime.json);\n });\n\nnotificationCommand\n .command('unread-count')\n .action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runQuery(\n client,\n api.notifications.queries.unreadCount,\n {},\n );\n printOutput({ unreadCount: result }, runtime.json);\n });\n\nnotificationCommand\n .command('mark-read <recipientId>')\n .action(async (recipientId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.notifications.mutations.markRead,\n {\n recipientId,\n },\n );\n printOutput(result, runtime.json);\n });\n\nnotificationCommand\n .command('mark-all-read')\n .action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.notifications.mutations.markAllRead,\n {},\n );\n printOutput(result, runtime.json);\n });\n\nnotificationCommand\n .command('archive <recipientId>')\n .action(async (recipientId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.notifications.mutations.archive,\n {\n recipientId,\n },\n );\n printOutput(result, runtime.json);\n });\n\nnotificationCommand.command('preferences').action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runQuery(\n client,\n api.notifications.queries.getPreferences,\n {},\n );\n printOutput(result, runtime.json);\n});\n\nnotificationCommand\n .command('set-preference <category>')\n .requiredOption('--in-app <true|false>')\n .requiredOption('--email <true|false>')\n .requiredOption('--push <true|false>')\n .action(async (category, options, command) => {\n const { client, runtime } = await getClient(command);\n if (!NOTIFICATION_CATEGORIES.includes(category)) {\n throw new Error(\n `category must be one of: ${NOTIFICATION_CATEGORIES.join(', ')}`,\n );\n }\n const result = await runMutation(\n client,\n api.notifications.mutations.updatePreferences,\n {\n category,\n inAppEnabled: parseBoolean(options.inApp, 'in-app'),\n emailEnabled: parseBoolean(options.email, 'email'),\n pushEnabled: parseBoolean(options.push, 'push'),\n },\n );\n printOutput(result, runtime.json);\n });\n\nnotificationCommand\n .command('subscriptions')\n .action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runQuery(\n client,\n api.notifications.queries.listPushSubscriptions,\n {},\n );\n printOutput(result, runtime.json);\n });\n\nnotificationCommand\n .command('remove-subscription <subscriptionId>')\n .action(async (subscriptionId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.notifications.mutations.removePushSubscription,\n { subscriptionId },\n );\n printOutput(result, runtime.json);\n });\n\nconst priorityCommand = program\n .command('priority')\n .description('Issue priorities');\n\npriorityCommand\n .command('list [slug]')\n .action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runQuery(\n client,\n api.organizations.queries.listIssuePriorities,\n { orgSlug },\n );\n printOutput(result, runtime.json);\n });\n\npriorityCommand\n .command('create')\n .requiredOption('--name <name>')\n .requiredOption('--weight <n>')\n .requiredOption('--color <hex>')\n .option('--icon <icon>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runMutation(\n client,\n api.organizations.mutations.createIssuePriority,\n {\n orgSlug,\n name: options.name,\n weight: requiredNumber(options.weight, 'weight'),\n color: options.color,\n icon: options.icon,\n },\n );\n printOutput(result, runtime.json);\n });\n\npriorityCommand\n .command('update <priority>')\n .requiredOption('--name <name>')\n .requiredOption('--color <hex>')\n .option('--weight <n>')\n .option('--icon <icon>')\n .action(async (priority, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const priorityId = await resolveIssuePriorityId(client, orgSlug, priority);\n const result = await runMutation(\n client,\n api.organizations.mutations.updateIssuePriority,\n {\n orgSlug,\n priorityId,\n name: options.name,\n weight: optionalNumber(options.weight, 'weight'),\n color: options.color,\n icon: options.icon,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\npriorityCommand\n .command('delete <priority>')\n .action(async (priority, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const priorityId = await resolveIssuePriorityId(client, orgSlug, priority);\n const result = await runMutation(\n client,\n api.organizations.mutations.deleteIssuePriority,\n {\n orgSlug,\n priorityId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\npriorityCommand\n .command('reset [slug]')\n .action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runMutation(\n client,\n api.organizations.mutations.resetIssuePriorities,\n { orgSlug },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nconst stateCommand = program.command('state').description('Issue states');\n\nstateCommand.command('list [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runQuery(\n client,\n api.organizations.queries.listIssueStates,\n {\n orgSlug,\n },\n );\n printOutput(result, runtime.json);\n});\n\nstateCommand\n .command('create')\n .requiredOption('--name <name>')\n .requiredOption('--position <n>')\n .requiredOption('--type <type>')\n .requiredOption('--color <hex>')\n .option('--icon <icon>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n if (!ISSUE_STATE_TYPES.includes(options.type)) {\n throw new Error(`type must be one of: ${ISSUE_STATE_TYPES.join(', ')}`);\n }\n const result = await runMutation(\n client,\n api.organizations.mutations.createIssueState,\n {\n orgSlug,\n name: options.name,\n position: requiredNumber(options.position, 'position'),\n type: options.type,\n color: options.color,\n icon: options.icon,\n },\n );\n printOutput(result, runtime.json);\n });\n\nstateCommand\n .command('update <state>')\n .requiredOption('--name <name>')\n .requiredOption('--position <n>')\n .requiredOption('--type <type>')\n .requiredOption('--color <hex>')\n .option('--icon <icon>')\n .action(async (state, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n if (!ISSUE_STATE_TYPES.includes(options.type)) {\n throw new Error(`type must be one of: ${ISSUE_STATE_TYPES.join(', ')}`);\n }\n const stateId = await resolveIssueStateId(client, orgSlug, state);\n const result = await runMutation(\n client,\n api.organizations.mutations.updateIssueState,\n {\n orgSlug,\n stateId,\n name: options.name,\n position: requiredNumber(options.position, 'position'),\n type: options.type,\n color: options.color,\n icon: options.icon,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nstateCommand\n .command('delete <state>')\n .action(async (state, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const stateId = await resolveIssueStateId(client, orgSlug, state);\n const result = await runMutation(\n client,\n api.organizations.mutations.deleteIssueState,\n {\n orgSlug,\n stateId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nstateCommand.command('reset [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runMutation(\n client,\n api.organizations.mutations.resetIssueStates,\n { orgSlug },\n );\n printOutput(result ?? { success: true }, runtime.json);\n});\n\nconst statusCommand = program.command('status').description('Project statuses');\n\nstatusCommand.command('list [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runQuery(\n client,\n api.organizations.queries.listProjectStatuses,\n { orgSlug },\n );\n printOutput(result, runtime.json);\n});\n\nstatusCommand\n .command('create')\n .requiredOption('--name <name>')\n .requiredOption('--position <n>')\n .requiredOption('--type <type>')\n .requiredOption('--color <hex>')\n .option('--icon <icon>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n if (!PROJECT_STATUS_TYPES.includes(options.type)) {\n throw new Error(\n `type must be one of: ${PROJECT_STATUS_TYPES.join(', ')}`,\n );\n }\n const result = await runMutation(\n client,\n api.organizations.mutations.createProjectStatus,\n {\n orgSlug,\n name: options.name,\n position: requiredNumber(options.position, 'position'),\n type: options.type,\n color: options.color,\n icon: options.icon,\n },\n );\n printOutput(result, runtime.json);\n });\n\nstatusCommand\n .command('update <status>')\n .requiredOption('--name <name>')\n .requiredOption('--position <n>')\n .requiredOption('--type <type>')\n .requiredOption('--color <hex>')\n .option('--icon <icon>')\n .action(async (status, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n if (!PROJECT_STATUS_TYPES.includes(options.type)) {\n throw new Error(\n `type must be one of: ${PROJECT_STATUS_TYPES.join(', ')}`,\n );\n }\n const statusId = await resolveProjectStatusId(client, orgSlug, status);\n const result = await runMutation(\n client,\n api.organizations.mutations.updateProjectStatus,\n {\n orgSlug,\n statusId,\n name: options.name,\n position: requiredNumber(options.position, 'position'),\n type: options.type,\n color: options.color,\n icon: options.icon,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nstatusCommand\n .command('delete <status>')\n .action(async (status, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const statusId = await resolveProjectStatusId(client, orgSlug, status);\n const result = await runMutation(\n client,\n api.organizations.mutations.deleteProjectStatus,\n {\n orgSlug,\n statusId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nstatusCommand\n .command('reset [slug]')\n .action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runMutation(\n client,\n api.organizations.mutations.resetProjectStatuses,\n { orgSlug },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nconst adminCommand = program.command('admin').description('Platform admin');\n\nadminCommand.command('branding').action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runQuery(\n client,\n api.platformAdmin.queries.getBranding,\n {},\n );\n printOutput(result, runtime.json);\n});\n\nadminCommand\n .command('set-branding')\n .option('--name <name>')\n .option('--description <description>')\n .option('--theme-color <hex>')\n .option('--accent-color <hex>')\n .option('--logo <path>')\n .option('--remove-logo')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n let logoStorageId: Id<'_storage'> | undefined;\n if (options.logo) {\n const uploadUrl = await runMutation(\n client,\n api.platformAdmin.mutations.generateBrandLogoUploadUrl,\n {},\n );\n logoStorageId = await uploadFile(uploadUrl, options.logo);\n }\n\n const result = await runMutation(\n client,\n api.platformAdmin.mutations.updateBranding,\n {\n name: options.name,\n description: options.description,\n logoStorageId,\n removeLogo: options.removeLogo ? true : undefined,\n themeColor: options.themeColor,\n accentColor: options.accentColor,\n },\n );\n printOutput(\n {\n ...(result ?? { success: true }),\n logoStorageId: logoStorageId ?? null,\n },\n runtime.json,\n );\n });\n\nadminCommand.command('signup-policy').action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runQuery(\n client,\n api.platformAdmin.queries.getSignupPolicy,\n {},\n );\n printOutput(result, runtime.json);\n});\n\nadminCommand\n .command('set-signup-policy')\n .option('--blocked <domains>')\n .option('--allowed <domains>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.platformAdmin.mutations.updateSignupEmailDomainPolicy,\n {\n blockedDomains: parseList(options.blocked),\n allowedDomains: parseList(options.allowed),\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nadminCommand\n .command('sync-disposable-domains')\n .action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runAction(\n client,\n api.platformAdmin.actions.runDisposableDomainSyncNow,\n {},\n );\n printOutput(result, runtime.json);\n });\n\nconst teamCommand = program.command('team').description('Teams');\n\nteamCommand\n .command('list [slug]')\n .option('--limit <n>')\n .action(async (slug, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runAction(client, cliApi.listTeams, {\n orgSlug,\n limit: options.limit ? Number(options.limit) : undefined,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('get <teamKey>')\n .action(async (teamKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.getTeam, {\n orgSlug,\n teamKey,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('create')\n .requiredOption('--key <key>')\n .requiredOption('--name <name>')\n .option('--description <description>')\n .option('--visibility <visibility>')\n .option('--icon <icon>')\n .option('--color <color>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.createTeam, {\n orgSlug,\n key: options.key,\n name: options.name,\n description: options.description,\n visibility: options.visibility,\n icon: options.icon,\n color: options.color,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('update <teamKey>')\n .option('--name <name>')\n .option('--description <description>')\n .option('--clear-description')\n .option('--visibility <visibility>')\n .option('--icon <icon>')\n .option('--clear-icon')\n .option('--color <color>')\n .option('--clear-color')\n .action(async (teamKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.updateTeam, {\n orgSlug,\n teamKey,\n name: options.name,\n description: nullableOption(\n options.description,\n options.clearDescription,\n ),\n visibility: options.visibility,\n icon: nullableOption(options.icon, options.clearIcon),\n color: nullableOption(options.color, options.clearColor),\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('delete <teamKey>')\n .action(async (teamKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.deleteTeam, {\n orgSlug,\n teamKey,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('members <teamKey>')\n .action(async (teamKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const team = await runAction(client, cliApi.getTeam, { orgSlug, teamKey });\n const result = await runQuery(client, api.teams.queries.listMembers, {\n teamId: team.id as any,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('add-member <teamKey> <member>')\n .option('--role <role>', 'member or lead', 'member')\n .action(async (teamKey, member, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.addTeamMember, {\n orgSlug,\n teamKey,\n memberName: member,\n role: options.role,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('remove-member <teamKey> <member>')\n .action(async (teamKey, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.removeTeamMember, {\n orgSlug,\n teamKey,\n memberName: member,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('set-lead <teamKey> <member>')\n .action(async (teamKey, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const leadName = member === 'null' ? null : member;\n const result = await runAction(client, cliApi.changeTeamLead, {\n orgSlug,\n teamKey,\n leadName,\n });\n printOutput(result, runtime.json);\n });\n\nconst projectCommand = program.command('project').description('Projects');\n\nprojectCommand\n .command('list [slug]')\n .option('--team <teamKey>')\n .option('--limit <n>')\n .action(async (slug, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runAction(client, cliApi.listProjects, {\n orgSlug,\n teamKey: options.team,\n limit: options.limit ? Number(options.limit) : undefined,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('get <projectKey>')\n .action(async (projectKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.getProject, {\n orgSlug,\n projectKey,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('create')\n .requiredOption('--key <key>')\n .requiredOption('--name <name>')\n .option('--description <description>')\n .option('--team <teamKey>')\n .option('--status <statusName>')\n .option('--visibility <visibility>')\n .option('--icon <icon>')\n .option('--color <color>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.createProject, {\n orgSlug,\n key: options.key,\n name: options.name,\n description: options.description,\n teamKey: options.team,\n statusName: options.status,\n visibility: options.visibility,\n icon: options.icon,\n color: options.color,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('update <projectKey>')\n .option('--name <name>')\n .option('--description <description>')\n .option('--team <teamKey>')\n .option('--clear-team')\n .option('--status <statusName>')\n .option('--clear-status')\n .option('--visibility <visibility>')\n .option('--start-date <date>')\n .option('--clear-start-date')\n .option('--due-date <date>')\n .option('--clear-due-date')\n .option('--icon <icon>')\n .option('--clear-icon')\n .option('--color <color>')\n .option('--clear-color')\n .action(async (projectKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.updateProject, {\n orgSlug,\n projectKey,\n name: options.name,\n description: options.description,\n teamKey: nullableOption(options.team, options.clearTeam),\n statusName: nullableOption(options.status, options.clearStatus),\n visibility: options.visibility,\n startDate: nullableOption(options.startDate, options.clearStartDate),\n dueDate: nullableOption(options.dueDate, options.clearDueDate),\n icon: nullableOption(options.icon, options.clearIcon),\n color: nullableOption(options.color, options.clearColor),\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('delete <projectKey>')\n .action(async (projectKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.deleteProject, {\n orgSlug,\n projectKey,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('members <projectKey>')\n .action(async (projectKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const project = await runAction(client, cliApi.getProject, {\n orgSlug,\n projectKey,\n });\n const result = await runQuery(client, api.projects.queries.listMembers, {\n projectId: project.id as any,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('add-member <projectKey> <member>')\n .option('--role <role>', 'member or lead', 'member')\n .action(async (projectKey, member, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.addProjectMember, {\n orgSlug,\n projectKey,\n memberName: member,\n role: options.role,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('remove-member <projectKey> <member>')\n .action(async (projectKey, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.removeProjectMember, {\n orgSlug,\n projectKey,\n memberName: member,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('set-lead <projectKey> <member>')\n .action(async (projectKey, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const leadName = member === 'null' ? null : member;\n const result = await runAction(client, cliApi.changeProjectLead, {\n orgSlug,\n projectKey,\n leadName,\n });\n printOutput(result, runtime.json);\n });\n\nconst issueCommand = program.command('issue').description('Issues');\n\nissueCommand\n .command('list [slug]')\n .option('--project <projectKey>')\n .option('--team <teamKey>')\n .option('--limit <n>')\n .action(async (slug, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runAction(client, cliApi.listIssues, {\n orgSlug,\n projectKey: options.project,\n teamKey: options.team,\n limit: options.limit ? Number(options.limit) : undefined,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('get <issueKey>')\n .action(async (issueKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.getIssue, {\n orgSlug,\n issueKey,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('create')\n .requiredOption('--title <title>')\n .option('--description <description>')\n .option('--project <projectKey>')\n .option('--team <teamKey>')\n .option('--priority <priorityName>')\n .option('--visibility <visibility>')\n .option('--assignee <member>')\n .option('--state <stateName>')\n .option('--start-date <date>')\n .option('--due-date <date>')\n .option('--parent <issueKey>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.createIssue, {\n orgSlug,\n title: options.title,\n description: options.description,\n projectKey: options.project,\n teamKey: options.team,\n priorityName: options.priority,\n visibility: options.visibility,\n assigneeName: options.assignee,\n stateName: options.state,\n startDate: options.startDate,\n dueDate: options.dueDate,\n parentIssueKey: options.parent,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('update <issueKey>')\n .option('--title <title>')\n .option('--description <description>')\n .option('--priority <priorityName>')\n .option('--clear-priority')\n .option('--team <teamKey>')\n .option('--clear-team')\n .option('--project <projectKey>')\n .option('--clear-project')\n .option('--visibility <visibility>')\n .option('--assignee <member>')\n .option('--clear-assignee')\n .option('--state <stateName>')\n .option('--start-date <date>')\n .option('--clear-start-date')\n .option('--due-date <date>')\n .option('--clear-due-date')\n .option('--parent <issueKey>')\n .option('--clear-parent')\n .action(async (issueKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.updateIssue, {\n orgSlug,\n issueKey,\n title: options.title,\n description: options.description,\n priorityName: nullableOption(options.priority, options.clearPriority),\n teamKey: nullableOption(options.team, options.clearTeam),\n projectKey: nullableOption(options.project, options.clearProject),\n visibility: options.visibility,\n assigneeName: nullableOption(options.assignee, options.clearAssignee),\n stateName: options.state,\n startDate: nullableOption(options.startDate, options.clearStartDate),\n dueDate: nullableOption(options.dueDate, options.clearDueDate),\n parentIssueKey: nullableOption(options.parent, options.clearParent),\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('delete <issueKey>')\n .action(async (issueKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.deleteIssue, {\n orgSlug,\n issueKey,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('assign <issueKey> <member>')\n .option('--state <stateName>')\n .action(async (issueKey, member, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.assignIssue, {\n orgSlug,\n issueKey,\n assigneeName: member,\n stateName: options.state,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('unassign <issueKey> <member>')\n .action(async (issueKey, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.unassignIssue, {\n orgSlug,\n issueKey,\n assigneeName: member,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('assignments <issueKey>')\n .action(async (issueKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const issueId = await resolveIssueId(client, orgSlug, issueKey);\n const result = await runQuery(client, api.issues.queries.getAssignments, {\n issueId,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('set-assignment-state <assignmentId> <state>')\n .action(async (assignmentId, state, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const stateId = await resolveIssueStateId(client, orgSlug, state);\n const result = await runMutation(\n client,\n api.issues.mutations.changeAssignmentState,\n {\n assignmentId,\n stateId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nissueCommand\n .command('reassign-assignment <assignmentId> <member>')\n .action(async (assignmentId, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const assigneeId = await resolveMemberId(client, orgSlug, member);\n const result = await runMutation(\n client,\n api.issues.mutations.updateAssignmentAssignee,\n {\n assignmentId,\n assigneeId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nissueCommand\n .command('remove-assignment <assignmentId>')\n .action(async (assignmentId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.issues.mutations.deleteAssignment,\n {\n assignmentId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nissueCommand\n .command('set-priority <issueKey> <priority>')\n .action(async (issueKey, priority, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const [issueId, priorityId] = await Promise.all([\n resolveIssueId(client, orgSlug, issueKey),\n resolveIssuePriorityId(client, orgSlug, priority),\n ]);\n const result = await runMutation(\n client,\n api.issues.mutations.changePriority,\n {\n issueId,\n priorityId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nissueCommand\n .command('replace-assignees <issueKey> <members>')\n .action(async (issueKey, members, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const issueId = await resolveIssueId(client, orgSlug, issueKey);\n const assigneeIds = await Promise.all(\n parseList(members).map(member =>\n resolveMemberId(client, orgSlug, member),\n ),\n );\n const result = await runMutation(\n client,\n api.issues.mutations.updateAssignees,\n {\n issueId,\n assigneeIds,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nissueCommand\n .command('set-estimates <issueKey>')\n .requiredOption('--values <state=hours,...>')\n .action(async (issueKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const issueId = await resolveIssueId(client, orgSlug, issueKey);\n const estimatedTimes = await parseEstimatedTimes(\n client,\n orgSlug,\n options.values,\n );\n const result = await runMutation(\n client,\n api.issues.mutations.updateEstimatedTimes,\n {\n issueId,\n estimatedTimes,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nissueCommand\n .command('comment <issueKey>')\n .requiredOption('--body <body>')\n .action(async (issueKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const issue = await runAction(client, cliApi.getIssue, {\n orgSlug,\n issueKey,\n });\n const result = await runMutation(client, api.issues.mutations.addComment, {\n issueId: issue.id as any,\n body: options.body,\n });\n printOutput(result, runtime.json);\n });\n\nconst documentCommand = program.command('document').description('Documents');\n\ndocumentCommand\n .command('list [slug]')\n .option('--folder-id <id>')\n .option('--limit <n>')\n .action(async (slug, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runAction(client, cliApi.listDocuments, {\n orgSlug,\n folderId: options.folderId,\n limit: options.limit ? Number(options.limit) : undefined,\n });\n printOutput(result, runtime.json);\n });\n\ndocumentCommand\n .command('get <documentId>')\n .action(async (documentId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.getDocument, {\n orgSlug,\n documentId,\n });\n printOutput(result, runtime.json);\n });\n\ndocumentCommand\n .command('create')\n .requiredOption('--title <title>')\n .option('--content <content>')\n .option('--team <teamKey>')\n .option('--project <projectKey>')\n .option('--folder-id <id>')\n .option('--visibility <visibility>')\n .option('--icon <icon>')\n .option('--color <color>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.createDocument, {\n orgSlug,\n title: options.title,\n content: options.content,\n teamKey: options.team,\n projectKey: options.project,\n folderId: options.folderId,\n visibility: options.visibility,\n icon: options.icon,\n color: options.color,\n });\n printOutput(result, runtime.json);\n });\n\ndocumentCommand\n .command('update <documentId>')\n .option('--title <title>')\n .option('--content <content>')\n .option('--team <teamKey>')\n .option('--clear-team')\n .option('--project <projectKey>')\n .option('--clear-project')\n .option('--folder-id <id>')\n .option('--clear-folder')\n .option('--visibility <visibility>')\n .option('--icon <icon>')\n .option('--clear-icon')\n .option('--color <color>')\n .option('--clear-color')\n .action(async (documentId, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.updateDocument, {\n orgSlug,\n documentId,\n title: options.title,\n content: options.content,\n teamKey: nullableOption(options.team, options.clearTeam),\n projectKey: nullableOption(options.project, options.clearProject),\n folderId: nullableOption(options.folderId, options.clearFolder),\n visibility: options.visibility,\n icon: nullableOption(options.icon, options.clearIcon),\n color: nullableOption(options.color, options.clearColor),\n });\n printOutput(result, runtime.json);\n });\n\ndocumentCommand\n .command('move <documentId>')\n .option('--folder-id <id>')\n .option('--clear-folder')\n .action(async (documentId, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const folderId = options.clearFolder\n ? null\n : requiredString(options.folderId, 'folder-id');\n const result = await runAction(client, cliApi.moveDocumentToFolder, {\n orgSlug,\n documentId,\n folderId,\n });\n printOutput(result, runtime.json);\n });\n\ndocumentCommand\n .command('delete <documentId>')\n .action(async (documentId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.deleteDocument, {\n orgSlug,\n documentId,\n });\n printOutput(result, runtime.json);\n });\n\nconst folderCommand = program.command('folder').description('Document folders');\n\nfolderCommand.command('list [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runAction(client, cliApi.listFolders, { orgSlug });\n printOutput(result, runtime.json);\n});\n\nfolderCommand\n .command('create')\n .requiredOption('--name <name>')\n .option('--description <description>')\n .option('--icon <icon>')\n .option('--color <color>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.createFolder, {\n orgSlug,\n name: options.name,\n description: options.description,\n icon: options.icon,\n color: options.color,\n });\n printOutput(result, runtime.json);\n });\n\nfolderCommand\n .command('update <folderId>')\n .option('--name <name>')\n .option('--description <description>')\n .option('--clear-description')\n .option('--icon <icon>')\n .option('--clear-icon')\n .option('--color <color>')\n .option('--clear-color')\n .action(async (folderId, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.updateFolder, {\n orgSlug,\n folderId,\n name: options.name,\n description: nullableOption(\n options.description,\n options.clearDescription,\n ),\n icon: nullableOption(options.icon, options.clearIcon),\n color: nullableOption(options.color, options.clearColor),\n });\n printOutput(result, runtime.json);\n });\n\nfolderCommand\n .command('delete <folderId>')\n .action(async (folderId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.deleteFolder, {\n orgSlug,\n folderId,\n });\n printOutput(result, runtime.json);\n });\n\nasync function main() {\n await program.parseAsync(process.argv);\n}\n\nmain().catch(error => {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n});\n","/* eslint-disable */\n/**\n * Generated `api` utility.\n *\n * THIS CODE IS AUTOMATICALLY GENERATED.\n *\n * To regenerate, run `npx convex dev`.\n * @module\n */\n\nimport { anyApi, componentsGeneric } from \"convex/server\";\n\n/**\n * A utility for referencing Convex functions in your app's API.\n *\n * Usage:\n * ```js\n * const myFunctionReference = api.myModule.myFunction;\n * ```\n */\nexport const api = anyApi;\nexport const internal = anyApi;\nexport const components = componentsGeneric();\n","import { isCancel, password as passwordPrompt, text } from '@clack/prompts';\nimport { CliSession } from './session';\n\ntype AuthUser = {\n id?: string;\n email?: string;\n name?: string;\n username?: string;\n};\n\ntype AuthSessionResponse = {\n user?: AuthUser | null;\n session?: Record<string, unknown> | null;\n};\n\nfunction buildUrl(appUrl: string, pathname: string) {\n return new URL(pathname, appUrl).toString();\n}\n\nfunction cookieHeader(cookies: Record<string, string>) {\n return Object.entries(cookies)\n .map(([name, value]) => `${name}=${value}`)\n .join('; ');\n}\n\nfunction splitSetCookieHeader(value: string) {\n return value.split(/,(?=[^;,]+=)/g);\n}\n\nfunction applySetCookieHeaders(\n session: CliSession,\n response: Response,\n): CliSession {\n const nextCookies = { ...session.cookies };\n const rawSetCookies =\n response.headers.getSetCookie?.() ??\n (response.headers.get('set-cookie')\n ? splitSetCookieHeader(response.headers.get('set-cookie')!)\n : []);\n\n for (const rawCookie of rawSetCookies) {\n const [cookiePart, ...attributeParts] = rawCookie.split(';');\n const separatorIndex = cookiePart.indexOf('=');\n if (separatorIndex <= 0) {\n continue;\n }\n\n const name = cookiePart.slice(0, separatorIndex).trim();\n const value = cookiePart.slice(separatorIndex + 1).trim();\n const attributes = attributeParts.map(part => part.trim().toLowerCase());\n const maxAge = attributes.find(part => part.startsWith('max-age='));\n const expires = attributes.find(part => part.startsWith('expires='));\n const expired =\n value.length === 0 ||\n maxAge === 'max-age=0' ||\n (expires\n ? Number.isFinite(Date.parse(expires.slice(8))) &&\n Date.parse(expires.slice(8)) <= Date.now()\n : false);\n\n if (expired) {\n delete nextCookies[name];\n } else {\n nextCookies[name] = value;\n }\n }\n\n return {\n ...session,\n cookies: nextCookies,\n };\n}\n\nasync function authRequest(\n session: CliSession,\n appUrl: string,\n pathname: string,\n init: RequestInit = {},\n) {\n const headers = new Headers(init.headers);\n const origin = new URL(appUrl).origin;\n if (Object.keys(session.cookies).length > 0) {\n headers.set('cookie', cookieHeader(session.cookies));\n }\n if (!headers.has('origin')) {\n headers.set('origin', origin);\n }\n if (!headers.has('referer')) {\n headers.set('referer', `${origin}/`);\n }\n if (init.body && !headers.has('content-type')) {\n headers.set('content-type', 'application/json');\n }\n\n const response = await fetch(buildUrl(appUrl, pathname), {\n ...init,\n headers,\n redirect: 'manual',\n });\n const nextSession = applySetCookieHeaders(session, response);\n return { response, session: nextSession };\n}\n\nasync function parseError(response: Response) {\n try {\n const data = (await response.json()) as { error?: { message?: string } };\n return data.error?.message ?? `Request failed with HTTP ${response.status}`;\n } catch {\n return `Request failed with HTTP ${response.status}`;\n }\n}\n\nexport async function loginWithPassword(\n session: CliSession,\n appUrl: string,\n identifier: string,\n password: string,\n) {\n const pathname = identifier.includes('@')\n ? '/api/auth/sign-in/email'\n : '/api/auth/sign-in/username';\n const body = identifier.includes('@')\n ? { email: identifier, password }\n : { username: identifier, password };\n const { response, session: nextSession } = await authRequest(\n session,\n appUrl,\n pathname,\n {\n method: 'POST',\n body: JSON.stringify(body),\n },\n );\n\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n\n return nextSession;\n}\n\nexport async function signUpWithEmail(\n session: CliSession,\n appUrl: string,\n email: string,\n username: string,\n password: string,\n) {\n const { response, session: nextSession } = await authRequest(\n session,\n appUrl,\n '/api/auth/sign-up/email',\n {\n method: 'POST',\n body: JSON.stringify({\n email,\n password,\n name: username,\n username,\n }),\n },\n );\n\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n\n return nextSession;\n}\n\nexport async function logout(session: CliSession, appUrl: string) {\n const { response } = await authRequest(\n session,\n appUrl,\n '/api/auth/sign-out',\n {\n method: 'POST',\n body: JSON.stringify({}),\n },\n );\n\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n}\n\nexport async function fetchAuthSession(session: CliSession, appUrl: string) {\n const { response, session: nextSession } = await authRequest(\n session,\n appUrl,\n '/api/auth/get-session',\n {\n method: 'GET',\n },\n );\n\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n\n const data = (await response.json()) as AuthSessionResponse;\n return {\n session: nextSession,\n user: data.user ?? null,\n };\n}\n\nexport async function fetchConvexToken(session: CliSession, appUrl: string) {\n const { response, session: nextSession } = await authRequest(\n session,\n appUrl,\n '/api/auth/convex/token',\n {\n method: 'GET',\n },\n );\n\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n\n const data = (await response.json()) as { token?: string };\n if (!data.token) {\n throw new Error('Missing Convex token');\n }\n\n return {\n session: nextSession,\n token: data.token,\n };\n}\n\nexport async function prompt(question: string) {\n const value = await text({\n message: question.replace(/:\\s*$/, ''),\n });\n if (isCancel(value)) {\n throw new Error('Canceled');\n }\n return String(value).trim();\n}\n\nexport async function promptSecret(question: string) {\n const value = await passwordPrompt({\n message: question.replace(/:\\s*$/, ''),\n mask: '*',\n });\n if (isCancel(value)) {\n throw new Error('Canceled');\n }\n return String(value);\n}\n","import { ConvexHttpClient } from 'convex/browser';\nimport { FunctionReference, OptionalRestArgs } from 'convex/server';\nimport { fetchConvexToken } from './auth';\nimport { CliSession } from './session';\n\nexport async function createConvexClient(\n session: CliSession,\n appUrl: string,\n convexUrl: string,\n) {\n const { token } = await fetchConvexToken(session, appUrl);\n const client = new ConvexHttpClient(convexUrl);\n client.setAuth(token);\n return client;\n}\n\nexport async function runQuery<Query extends FunctionReference<'query'>>(\n client: ConvexHttpClient,\n ref: Query,\n ...args: OptionalRestArgs<Query>\n) {\n return await client.query(ref, ...args);\n}\n\nexport async function runMutation<\n Mutation extends FunctionReference<'mutation'>,\n>(\n client: ConvexHttpClient,\n ref: Mutation,\n ...args: OptionalRestArgs<Mutation>\n) {\n return await client.mutation(ref, ...args);\n}\n\nexport async function runAction<Action extends FunctionReference<'action'>>(\n client: ConvexHttpClient,\n ref: Action,\n ...args: OptionalRestArgs<Action>\n) {\n return await client.action(ref, ...args);\n}\n","function simplify(value: unknown): unknown {\n if (value === null || value === undefined) {\n return value;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return [];\n }\n if (value.every(item => typeof item !== 'object' || item === null)) {\n return value.join(', ');\n }\n return JSON.stringify(value);\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return value;\n}\n\nexport function printOutput(data: unknown, json = false) {\n if (json) {\n console.log(JSON.stringify(data, null, 2));\n return;\n }\n\n if (Array.isArray(data)) {\n if (data.length === 0) {\n console.log('No results.');\n return;\n }\n if (data.every(item => typeof item === 'object' && item !== null)) {\n console.table(\n data.map(item =>\n Object.fromEntries(\n Object.entries(item).map(([key, value]) => [key, simplify(value)]),\n ),\n ),\n );\n return;\n }\n }\n\n if (typeof data === 'object' && data !== null) {\n console.dir(data, { depth: null, colors: true });\n return;\n }\n\n console.log(String(data));\n}\n","import { mkdir, readFile, rm, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport path from 'node:path';\n\nexport type CliSession = {\n version: 1;\n appUrl?: string;\n convexUrl?: string;\n activeOrgSlug?: string;\n cookies: Record<string, string>;\n};\n\nconst SESSION_ROOT = path.join(homedir(), '.vector');\n\nexport function getSessionPath(profile = 'default') {\n return path.join(SESSION_ROOT, `cli-${profile}.json`);\n}\n\nexport async function readSession(profile = 'default') {\n try {\n const raw = await readFile(getSessionPath(profile), 'utf8');\n const parsed = JSON.parse(raw) as Partial<CliSession>;\n return {\n version: 1,\n cookies: {},\n ...parsed,\n } satisfies CliSession;\n } catch {\n return null;\n }\n}\n\nexport async function writeSession(session: CliSession, profile = 'default') {\n await mkdir(SESSION_ROOT, { recursive: true });\n await writeFile(\n getSessionPath(profile),\n `${JSON.stringify(session, null, 2)}\\n`,\n 'utf8',\n );\n}\n\nexport async function clearSession(profile = 'default') {\n await rm(getSessionPath(profile), { force: true });\n}\n\nexport function createEmptySession(): CliSession {\n return {\n version: 1,\n cookies: {},\n };\n}\n"],"mappings":"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","names":["readFile","readFile"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/index.ts","../../../convex/_generated/api.js","../../../src/cli/auth.ts","../../../src/cli/convex.ts","../../../src/cli/output.ts","../../../src/cli/session.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { readFile } from 'node:fs/promises';\nimport { extname } from 'node:path';\nimport { config as loadEnv } from 'dotenv';\nimport { Command } from 'commander';\nimport { makeFunctionReference } from 'convex/server';\nimport { api } from '../../convex/_generated/api';\nimport type { Id } from '../../convex/_generated/dataModel';\nimport type { Permission } from '../../convex/_shared/permissions';\nimport {\n fetchAuthSession,\n loginWithPassword,\n logout,\n prompt,\n promptSecret,\n signUpWithEmail,\n} from './auth';\nimport { createConvexClient, runAction, runMutation, runQuery } from './convex';\nimport { printOutput } from './output';\nimport {\n clearSession,\n createEmptySession,\n readSession,\n writeSession,\n type CliSession,\n} from './session';\n\nloadEnv({ path: '.env.local', override: false });\nloadEnv({ path: '.env', override: false });\n\nconst cliApi = {\n listWorkspaceReferenceData: makeFunctionReference<'action'>(\n 'cli:listWorkspaceReferenceData',\n ),\n searchIcons: makeFunctionReference<'action'>('cli:searchIcons'),\n listDocuments: makeFunctionReference<'action'>('cli:listDocuments'),\n getDocument: makeFunctionReference<'action'>('cli:getDocument'),\n createDocument: makeFunctionReference<'action'>('cli:createDocument'),\n updateDocument: makeFunctionReference<'action'>('cli:updateDocument'),\n deleteDocument: makeFunctionReference<'action'>('cli:deleteDocument'),\n moveDocumentToFolder: makeFunctionReference<'action'>(\n 'cli:moveDocumentToFolder',\n ),\n listIssues: makeFunctionReference<'action'>('cli:listIssues'),\n getIssue: makeFunctionReference<'action'>('cli:getIssue'),\n createIssue: makeFunctionReference<'action'>('cli:createIssue'),\n updateIssue: makeFunctionReference<'action'>('cli:updateIssue'),\n deleteIssue: makeFunctionReference<'action'>('cli:deleteIssue'),\n assignIssue: makeFunctionReference<'action'>('cli:assignIssue'),\n unassignIssue: makeFunctionReference<'action'>('cli:unassignIssue'),\n listProjects: makeFunctionReference<'action'>('cli:listProjects'),\n getProject: makeFunctionReference<'action'>('cli:getProject'),\n createProject: makeFunctionReference<'action'>('cli:createProject'),\n updateProject: makeFunctionReference<'action'>('cli:updateProject'),\n deleteProject: makeFunctionReference<'action'>('cli:deleteProject'),\n addProjectMember: makeFunctionReference<'action'>('cli:addProjectMember'),\n removeProjectMember: makeFunctionReference<'action'>(\n 'cli:removeProjectMember',\n ),\n changeProjectLead: makeFunctionReference<'action'>('cli:changeProjectLead'),\n listTeams: makeFunctionReference<'action'>('cli:listTeams'),\n getTeam: makeFunctionReference<'action'>('cli:getTeam'),\n createTeam: makeFunctionReference<'action'>('cli:createTeam'),\n updateTeam: makeFunctionReference<'action'>('cli:updateTeam'),\n deleteTeam: makeFunctionReference<'action'>('cli:deleteTeam'),\n addTeamMember: makeFunctionReference<'action'>('cli:addTeamMember'),\n removeTeamMember: makeFunctionReference<'action'>('cli:removeTeamMember'),\n changeTeamLead: makeFunctionReference<'action'>('cli:changeTeamLead'),\n listFolders: makeFunctionReference<'action'>('cli:listFolders'),\n createFolder: makeFunctionReference<'action'>('cli:createFolder'),\n updateFolder: makeFunctionReference<'action'>('cli:updateFolder'),\n deleteFolder: makeFunctionReference<'action'>('cli:deleteFolder'),\n};\n\nconst rolesApi = api.roles.index;\ntype OrganizationRoleId = Id<'roles'> | Id<'orgRoles'>;\n\ntype GlobalOptions = {\n appUrl?: string;\n convexUrl?: string;\n json?: boolean;\n org?: string;\n profile?: string;\n};\n\ntype Runtime = {\n appUrl: string;\n convexUrl: string;\n json: boolean;\n org?: string;\n profile: string;\n session: CliSession | null;\n};\n\nconst ISSUE_STATE_TYPES = [\n 'backlog',\n 'todo',\n 'in_progress',\n 'done',\n 'canceled',\n] as const;\n\nconst PROJECT_STATUS_TYPES = [\n 'backlog',\n 'planned',\n 'in_progress',\n 'completed',\n 'canceled',\n] as const;\n\nconst NOTIFICATION_CATEGORIES = [\n 'invites',\n 'assignments',\n 'mentions',\n 'comments',\n] as const;\n\nfunction requiredString(value: string | undefined, label: string) {\n if (!value?.trim()) {\n throw new Error(`${label} is required`);\n }\n return value.trim();\n}\n\nfunction optionalNumber(value: string | undefined, label: string) {\n if (value === undefined) {\n return undefined;\n }\n\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) {\n throw new Error(`${label} must be a valid number`);\n }\n\n return parsed;\n}\n\nfunction requiredNumber(value: string | undefined, label: string) {\n const parsed = optionalNumber(value, label);\n if (parsed === undefined) {\n throw new Error(`${label} is required`);\n }\n return parsed;\n}\n\nfunction parseBoolean(value: string, label: string) {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'true') return true;\n if (normalized === 'false') return false;\n throw new Error(`${label} must be \"true\" or \"false\"`);\n}\n\nfunction parseList(value: string | undefined) {\n if (!value) return [];\n return value\n .split(',')\n .map(item => item.trim())\n .filter(Boolean);\n}\n\nfunction buildPaginationOptions(limit?: string, cursor?: string) {\n return {\n cursor: cursor ?? null,\n numItems: optionalNumber(limit, 'limit') ?? 20,\n };\n}\n\nfunction normalizeMatch(value: string | undefined | null) {\n return value?.trim().toLowerCase();\n}\n\nasync function fetchConvexUrl(appUrl: string): Promise<string> {\n try {\n const url = new URL('/api/config', appUrl).toString();\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n }\n const data = (await response.json()) as { convexUrl?: string };\n if (data.convexUrl) {\n return data.convexUrl;\n }\n } catch {\n // Fall through to default\n }\n return 'http://127.0.0.1:3210';\n}\n\nasync function getRuntime(command: Command) {\n const options = command.optsWithGlobals<GlobalOptions>();\n const profile = options.profile ?? 'default';\n const session = await readSession(profile);\n const appUrlSource =\n options.appUrl ?? session?.appUrl ?? process.env.NEXT_PUBLIC_APP_URL;\n const appUrl = requiredString(appUrlSource, 'app URL');\n let convexUrl =\n options.convexUrl ??\n session?.convexUrl ??\n process.env.NEXT_PUBLIC_CONVEX_URL ??\n process.env.CONVEX_URL;\n\n if (!convexUrl) {\n convexUrl = await fetchConvexUrl(appUrl);\n }\n\n return {\n appUrl,\n convexUrl,\n json: Boolean(options.json),\n org: options.org ?? session?.activeOrgSlug,\n profile,\n session,\n } satisfies Runtime;\n}\n\nfunction requireSession(runtime: Runtime) {\n if (!runtime.session || Object.keys(runtime.session.cookies).length === 0) {\n throw new Error('Not logged in. Run `vcli auth login` first.');\n }\n return runtime.session;\n}\n\nfunction requireOrg(runtime: Runtime, explicit?: string) {\n const orgSlug = explicit ?? runtime.org;\n if (!orgSlug) {\n throw new Error(\n 'Organization slug is required. Pass `--org <slug>` or run `vcli org use <slug>`.',\n );\n }\n return orgSlug;\n}\n\nasync function getClient(command: Command) {\n const runtime = await getRuntime(command);\n const session = requireSession(runtime);\n const client = await createConvexClient(\n session,\n runtime.appUrl,\n runtime.convexUrl,\n );\n return { client, runtime, session };\n}\n\nasync function resolveMemberId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n ref: string,\n): Promise<Id<'users'>> {\n const members = await runQuery(\n client,\n api.organizations.queries.listMembers,\n {\n orgSlug,\n },\n );\n const needle = normalizeMatch(ref);\n const matches = members.filter(member => {\n const user = member.user;\n if (!user) return false;\n return (\n normalizeMatch(String(user._id)) === needle ||\n normalizeMatch(user.email) === needle ||\n normalizeMatch(user.name) === needle ||\n normalizeMatch(user.username) === needle\n );\n });\n\n if (matches.length === 0) {\n throw new Error(`No member matched \"${ref}\"`);\n }\n if (matches.length > 1) {\n throw new Error(`Multiple members matched \"${ref}\"`);\n }\n return matches[0]!.user!._id;\n}\n\nasync function resolveRoleId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n ref: string,\n): Promise<OrganizationRoleId> {\n const roles = await runQuery(client, rolesApi.list, { orgSlug });\n const needle = normalizeMatch(ref);\n const matches = roles.filter(role => {\n const candidate = role as { _id: string; name?: string; key?: string };\n return (\n normalizeMatch(String(candidate._id)) === needle ||\n normalizeMatch(candidate.name) === needle ||\n normalizeMatch(candidate.key) === needle\n );\n });\n\n if (matches.length === 0) {\n throw new Error(`No role matched \"${ref}\"`);\n }\n if (matches.length > 1) {\n throw new Error(`Multiple roles matched \"${ref}\"`);\n }\n return matches[0]!._id;\n}\n\nfunction parsePermissions(value: string): Permission[] {\n return value\n .split(',')\n .map(permission => permission.trim())\n .filter(Boolean) as Permission[];\n}\n\nfunction nullableOption(value: string | undefined, clear = false) {\n if (clear) return null;\n return value;\n}\n\nfunction mimeTypeForFile(filePath: string) {\n switch (extname(filePath).toLowerCase()) {\n case '.png':\n return 'image/png';\n case '.jpg':\n case '.jpeg':\n return 'image/jpeg';\n case '.webp':\n return 'image/webp';\n case '.gif':\n return 'image/gif';\n case '.svg':\n return 'image/svg+xml';\n default:\n return 'application/octet-stream';\n }\n}\n\nasync function uploadFile(uploadUrl: string, filePath: string) {\n const body = await readFile(filePath);\n const response = await fetch(uploadUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': mimeTypeForFile(filePath),\n },\n body,\n });\n\n if (!response.ok) {\n throw new Error(`Upload failed with HTTP ${response.status}`);\n }\n\n const data = (await response.json()) as { storageId?: Id<'_storage'> };\n if (!data.storageId) {\n throw new Error('Upload response did not include a storageId');\n }\n\n return data.storageId;\n}\n\nasync function resolveTeamId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n teamKey?: string,\n) {\n if (!teamKey) {\n return undefined;\n }\n const team = await runAction(client, cliApi.getTeam, { orgSlug, teamKey });\n return team.id as Id<'teams'>;\n}\n\nasync function resolveProjectId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n projectKey?: string,\n) {\n if (!projectKey) {\n return undefined;\n }\n const project = await runAction(client, cliApi.getProject, {\n orgSlug,\n projectKey,\n });\n return project.id as Id<'projects'>;\n}\n\nasync function resolveIssueId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n issueKey: string,\n) {\n const issue = await runAction(client, cliApi.getIssue, { orgSlug, issueKey });\n return issue.id as Id<'issues'>;\n}\n\nasync function resolveDocumentId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n documentId: string,\n) {\n const document = await runAction(client, cliApi.getDocument, {\n orgSlug,\n documentId,\n });\n return document.id as Id<'documents'>;\n}\n\nasync function resolveIssueStateId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n ref: string,\n) {\n const states = await runQuery(\n client,\n api.organizations.queries.listIssueStates,\n {\n orgSlug,\n },\n );\n const needle = normalizeMatch(ref);\n const match = states.find(state => {\n return (\n normalizeMatch(String(state._id)) === needle ||\n normalizeMatch(state.name) === needle ||\n normalizeMatch(state.type) === needle\n );\n });\n\n if (!match) {\n throw new Error(`No issue state matched \"${ref}\"`);\n }\n\n return match._id;\n}\n\nasync function resolveIssuePriorityId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n ref: string,\n) {\n const priorities = await runQuery(\n client,\n api.organizations.queries.listIssuePriorities,\n { orgSlug },\n );\n const needle = normalizeMatch(ref);\n const match = priorities.find(priority => {\n return (\n normalizeMatch(String(priority._id)) === needle ||\n normalizeMatch(priority.name) === needle\n );\n });\n\n if (!match) {\n throw new Error(`No issue priority matched \"${ref}\"`);\n }\n\n return match._id;\n}\n\nasync function resolveProjectStatusId(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n ref: string,\n) {\n const statuses = await runQuery(\n client,\n api.organizations.queries.listProjectStatuses,\n { orgSlug },\n );\n const needle = normalizeMatch(ref);\n const match = statuses.find(status => {\n return (\n normalizeMatch(String(status._id)) === needle ||\n normalizeMatch(status.name) === needle ||\n normalizeMatch(status.type) === needle\n );\n });\n\n if (!match) {\n throw new Error(`No project status matched \"${ref}\"`);\n }\n\n return match._id;\n}\n\nasync function parseEstimatedTimes(\n client: Awaited<ReturnType<typeof createConvexClient>>,\n orgSlug: string,\n value: string,\n) {\n const entries = parseList(value);\n const estimatedTimes: Record<string, number> = {};\n\n for (const entry of entries) {\n const separatorIndex = entry.indexOf('=');\n if (separatorIndex <= 0) {\n throw new Error(\n 'estimated times must use the format \"state=hours,state=hours\"',\n );\n }\n\n const stateRef = entry.slice(0, separatorIndex).trim();\n const hours = Number(entry.slice(separatorIndex + 1).trim());\n if (!Number.isFinite(hours)) {\n throw new Error(`Invalid estimate for \"${stateRef}\"`);\n }\n\n const stateId = await resolveIssueStateId(client, orgSlug, stateRef);\n estimatedTimes[String(stateId)] = hours;\n }\n\n return estimatedTimes;\n}\n\nconst program = new Command();\n\nprogram\n .name('vcli')\n .description('Vector CLI')\n .showHelpAfterError()\n .option(\n '--app-url <url>',\n 'Vector app URL. Required unless saved in the profile or NEXT_PUBLIC_APP_URL is set.',\n )\n .option('--convex-url <url>', 'Convex deployment URL')\n .option('--org <slug>', 'Organization slug override')\n .option('--profile <name>', 'CLI profile name', 'default')\n .option('--json', 'Output JSON');\n\nconst authCommand = program.command('auth').description('Authentication');\n\nauthCommand\n .command('signup')\n .option('--email <email>', 'Email address')\n .option('--username <username>', 'Username')\n .option('--password <password>', 'Password')\n .action(async (options, command) => {\n const runtime = await getRuntime(command);\n const email = requiredString(\n options.email?.trim() || (await prompt('Email: ')),\n 'email',\n ).toLowerCase();\n const username = requiredString(\n options.username?.trim() || (await prompt('Username: ')),\n 'username',\n );\n const password =\n options.password?.trim() || (await promptSecret('Password: '));\n\n let session = createEmptySession();\n session.appUrl = runtime.appUrl;\n session.convexUrl = runtime.convexUrl;\n\n session = await signUpWithEmail(\n session,\n runtime.appUrl,\n email,\n username,\n password,\n );\n const authState = await fetchAuthSession(session, runtime.appUrl);\n session = authState.session;\n\n const client = await createConvexClient(\n session,\n runtime.appUrl,\n runtime.convexUrl,\n );\n const orgs = await runQuery(client, api.users.getOrganizations, {});\n session.activeOrgSlug = orgs[0]?.slug ?? session.activeOrgSlug;\n\n await writeSession(session, runtime.profile);\n printOutput(\n {\n signedUpAs:\n authState.user?.email ??\n authState.user?.username ??\n authState.user?.name,\n activeOrgSlug: session.activeOrgSlug ?? null,\n },\n runtime.json,\n );\n });\n\nauthCommand\n .command('login [identifier]')\n .option('--password <password>', 'Password')\n .action(async (identifier, options, command) => {\n const runtime = await getRuntime(command);\n const loginId = identifier?.trim() || (await prompt('Email or username: '));\n const password =\n options.password?.trim() || (await promptSecret('Password: '));\n let session = createEmptySession();\n session.appUrl = runtime.appUrl;\n session.convexUrl = runtime.convexUrl;\n\n session = await loginWithPassword(\n session,\n runtime.appUrl,\n loginId,\n password,\n );\n const authState = await fetchAuthSession(session, runtime.appUrl);\n session = authState.session;\n\n const client = await createConvexClient(\n session,\n runtime.appUrl,\n runtime.convexUrl,\n );\n const orgs = await runQuery(client, api.users.getOrganizations, {});\n session.activeOrgSlug = orgs[0]?.slug ?? session.activeOrgSlug;\n\n await writeSession(session, runtime.profile);\n printOutput(\n {\n loggedInAs:\n authState.user?.email ??\n authState.user?.username ??\n authState.user?.name,\n activeOrgSlug: session.activeOrgSlug ?? null,\n },\n runtime.json,\n );\n });\n\nauthCommand.command('logout').action(async (_options, command) => {\n const runtime = await getRuntime(command);\n const session = requireSession(runtime);\n await logout(session, runtime.appUrl);\n await clearSession(runtime.profile);\n printOutput({ success: true }, runtime.json);\n});\n\nauthCommand.command('whoami').action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const [user, orgs] = await Promise.all([\n runQuery(client, api.users.getCurrentUser, {}),\n runQuery(client, api.users.getOrganizations, {}),\n ]);\n printOutput(\n {\n user,\n organizations: orgs,\n activeOrgSlug: runtime.org ?? null,\n },\n runtime.json,\n );\n});\n\nconst orgCommand = program.command('org').description('Organizations');\n\norgCommand.command('list').action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const orgs = await runQuery(client, api.users.getOrganizations, {});\n printOutput(orgs, runtime.json);\n});\n\norgCommand.command('current').action(async (_options, command) => {\n const runtime = await getRuntime(command);\n printOutput({ activeOrgSlug: runtime.org ?? null }, runtime.json);\n});\n\norgCommand.command('use <slug>').action(async (slug, _options, command) => {\n const runtime = await getRuntime(command);\n const session = requireSession(runtime);\n session.activeOrgSlug = slug;\n session.appUrl = runtime.appUrl;\n session.convexUrl = runtime.convexUrl;\n await writeSession(session, runtime.profile);\n printOutput({ activeOrgSlug: slug }, runtime.json);\n});\n\norgCommand\n .command('create')\n .requiredOption('--name <name>')\n .requiredOption('--slug <slug>')\n .action(async (options, command) => {\n const { client, runtime, session } = await getClient(command);\n const result = await runMutation(\n client,\n api.organizations.mutations.create,\n {\n data: {\n name: options.name,\n slug: options.slug,\n },\n },\n );\n if (session) {\n session.activeOrgSlug = options.slug;\n session.appUrl = runtime.appUrl;\n session.convexUrl = runtime.convexUrl;\n await writeSession(session, runtime.profile);\n }\n printOutput(result, runtime.json);\n });\n\norgCommand\n .command('update [slug]')\n .option('--name <name>')\n .option('--new-slug <slug>')\n .action(async (slug, options, command) => {\n const { client, runtime, session } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runMutation(\n client,\n api.organizations.mutations.update,\n {\n orgSlug,\n data: {\n ...(options.name ? { name: options.name } : {}),\n ...(options.newSlug ? { slug: options.newSlug } : {}),\n },\n },\n );\n if (session && options.newSlug && session.activeOrgSlug === orgSlug) {\n session.activeOrgSlug = options.newSlug;\n await writeSession(session, runtime.profile);\n }\n printOutput(result, runtime.json);\n });\n\norgCommand.command('stats [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runQuery(\n client,\n api.organizations.queries.getOrganizationStats,\n { orgSlug },\n );\n printOutput(result, runtime.json);\n});\n\norgCommand\n .command('logo [slug]')\n .option('--file <path>')\n .option('--remove')\n .action(async (slug, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n\n if (options.remove) {\n throw new Error(\n 'Organization logo removal is not exposed by the current backend API.',\n );\n }\n\n const filePath = requiredString(options.file, 'file');\n const uploadUrl = await runMutation(\n client,\n api.organizations.mutations.generateLogoUploadUrl,\n { orgSlug },\n );\n const storageId = await uploadFile(uploadUrl, filePath);\n const result = await runMutation(\n client,\n api.organizations.mutations.updateLogoWithStorageId,\n {\n orgSlug,\n storageId,\n },\n );\n printOutput(\n { ...(result ?? { success: true }), storageId, orgSlug },\n runtime.json,\n );\n });\n\norgCommand.command('members [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const members = await runQuery(\n client,\n api.organizations.queries.listMembersWithRoles,\n {\n orgSlug,\n },\n );\n printOutput(members, runtime.json);\n});\n\norgCommand.command('invites [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const invites = await runQuery(\n client,\n api.organizations.queries.listInvites,\n {\n orgSlug,\n },\n );\n printOutput(invites, runtime.json);\n});\n\norgCommand\n .command('invite [slug]')\n .requiredOption('--email <email>')\n .option('--role <role>', 'member or admin', 'member')\n .action(async (slug, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runMutation(\n client,\n api.organizations.mutations.invite,\n {\n orgSlug,\n email: options.email,\n role: options.role,\n },\n );\n printOutput(result, runtime.json);\n });\n\norgCommand\n .command('member-role <member>')\n .requiredOption('--role <role>', 'member or admin')\n .action(async (member, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const userId = await resolveMemberId(client, orgSlug, member);\n const result = await runMutation(\n client,\n api.organizations.mutations.updateMemberRole,\n {\n orgSlug,\n userId,\n role: options.role,\n },\n );\n printOutput(result, runtime.json);\n });\n\norgCommand\n .command('remove-member <member>')\n .action(async (member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const userId = await resolveMemberId(client, orgSlug, member);\n const result = await runMutation(\n client,\n api.organizations.mutations.removeMember,\n {\n orgSlug,\n userId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\norgCommand\n .command('revoke-invite <inviteId>')\n .action(async (inviteId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.organizations.mutations.revokeInvite,\n {\n inviteId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nconst roleCommand = program.command('role').description('Organization roles');\n\nroleCommand.command('list [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const roles = await runQuery(client, rolesApi.list, { orgSlug });\n printOutput(roles, runtime.json);\n});\n\nroleCommand.command('get <role>').action(async (role, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const roleId = await resolveRoleId(client, orgSlug, role);\n const [summary, permissions] = await Promise.all([\n runQuery(client, rolesApi.get, { orgSlug, roleId }),\n runQuery(client, rolesApi.getPermissions, { roleId }),\n ]);\n printOutput({ summary, permissions }, runtime.json);\n});\n\nroleCommand\n .command('create')\n .requiredOption('--name <name>')\n .requiredOption('--permissions <permissions>', 'Comma-separated permissions')\n .option('--description <description>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runMutation(client, rolesApi.create, {\n orgSlug,\n name: options.name,\n description: options.description,\n permissions: parsePermissions(options.permissions),\n });\n printOutput({ roleId: result }, runtime.json);\n });\n\nroleCommand\n .command('update <role>')\n .requiredOption('--name <name>')\n .requiredOption('--permissions <permissions>', 'Comma-separated permissions')\n .option('--description <description>')\n .action(async (role, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const roleId = await resolveRoleId(client, orgSlug, role);\n const result = await runMutation(client, rolesApi.update, {\n orgSlug,\n roleId,\n name: options.name,\n description: options.description,\n permissions: parsePermissions(options.permissions),\n });\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nroleCommand\n .command('assign <role> <member>')\n .action(async (role, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const [roleId, userId] = await Promise.all([\n resolveRoleId(client, orgSlug, role),\n resolveMemberId(client, orgSlug, member),\n ]);\n const result = await runMutation(client, rolesApi.assign, {\n orgSlug,\n roleId,\n userId,\n });\n printOutput({ assignmentId: result }, runtime.json);\n });\n\nroleCommand\n .command('unassign <role> <member>')\n .action(async (role, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const [roleId, userId] = await Promise.all([\n resolveRoleId(client, orgSlug, role),\n resolveMemberId(client, orgSlug, member),\n ]);\n const result = await runMutation(client, rolesApi.removeAssignment, {\n orgSlug,\n roleId,\n userId,\n });\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nconst inviteCommand = program.command('invite').description('Invitations');\n\ninviteCommand.command('list').action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const invites = await runQuery(client, api.users.getPendingInvitations, {});\n printOutput(invites, runtime.json);\n});\n\ninviteCommand\n .command('accept <inviteId>')\n .action(async (inviteId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.organizations.mutations.acceptInvitation,\n { inviteId },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\ninviteCommand\n .command('decline <inviteId>')\n .action(async (inviteId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.organizations.mutations.declineInvitation,\n { inviteId },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nprogram.command('refdata [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runAction(client, cliApi.listWorkspaceReferenceData, {\n orgSlug,\n });\n printOutput(result, runtime.json);\n});\n\nprogram\n .command('icons <query>')\n .option('--limit <n>')\n .action(async (query, options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runAction(client, cliApi.searchIcons, {\n query,\n limit: options.limit ? Number(options.limit) : undefined,\n });\n printOutput(result, runtime.json);\n });\n\nprogram\n .command('search <query>')\n .option('--limit <n>')\n .action(async (query, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runQuery(client, api.search.queries.searchEntities, {\n orgSlug,\n query,\n limit: optionalNumber(options.limit, 'limit'),\n });\n printOutput(result, runtime.json);\n });\n\nconst permissionCommand = program\n .command('permission')\n .description('Permission checks');\n\npermissionCommand\n .command('check <permission>')\n .option('--team <teamKey>')\n .option('--project <projectKey>')\n .action(async (permission, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const [teamId, projectId] = await Promise.all([\n resolveTeamId(client, orgSlug, options.team),\n resolveProjectId(client, orgSlug, options.project),\n ]);\n const result = await runQuery(client, api.permissions.utils.has, {\n orgSlug,\n permission,\n teamId,\n projectId,\n });\n printOutput(\n { permission, allowed: result, teamId, projectId },\n runtime.json,\n );\n });\n\npermissionCommand\n .command('check-many <permissions>')\n .option('--team <teamKey>')\n .option('--project <projectKey>')\n .action(async (permissions, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const [teamId, projectId] = await Promise.all([\n resolveTeamId(client, orgSlug, options.team),\n resolveProjectId(client, orgSlug, options.project),\n ]);\n const permissionList = parsePermissions(permissions);\n const result = await runQuery(client, api.permissions.utils.hasMultiple, {\n orgSlug,\n permissions: permissionList,\n teamId,\n projectId,\n });\n printOutput(result, runtime.json);\n });\n\nconst activityCommand = program\n .command('activity')\n .description('Activity feed');\n\nactivityCommand\n .command('project <projectKey>')\n .option('--limit <n>')\n .option('--cursor <cursor>')\n .action(async (projectKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const projectId = await resolveProjectId(client, orgSlug, projectKey);\n const result = await runQuery(\n client,\n api.activities.queries.listProjectActivity,\n {\n projectId: projectId!,\n paginationOpts: buildPaginationOptions(options.limit, options.cursor),\n },\n );\n printOutput(result, runtime.json);\n });\n\nactivityCommand\n .command('team <teamKey>')\n .option('--limit <n>')\n .option('--cursor <cursor>')\n .action(async (teamKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const teamId = await resolveTeamId(client, orgSlug, teamKey);\n const result = await runQuery(\n client,\n api.activities.queries.listTeamActivity,\n {\n teamId: teamId!,\n paginationOpts: buildPaginationOptions(options.limit, options.cursor),\n },\n );\n printOutput(result, runtime.json);\n });\n\nactivityCommand\n .command('issue <issueKey>')\n .option('--limit <n>')\n .option('--cursor <cursor>')\n .action(async (issueKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const issueId = await resolveIssueId(client, orgSlug, issueKey);\n const result = await runQuery(\n client,\n api.activities.queries.listIssueActivity,\n {\n issueId,\n paginationOpts: buildPaginationOptions(options.limit, options.cursor),\n },\n );\n printOutput(result, runtime.json);\n });\n\nactivityCommand\n .command('document <documentId>')\n .option('--limit <n>')\n .option('--cursor <cursor>')\n .action(async (documentId, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const resolvedDocumentId = await resolveDocumentId(\n client,\n orgSlug,\n documentId,\n );\n const result = await runQuery(\n client,\n api.activities.queries.listDocumentActivity,\n {\n documentId: resolvedDocumentId,\n paginationOpts: buildPaginationOptions(options.limit, options.cursor),\n },\n );\n printOutput(result, runtime.json);\n });\n\nconst notificationCommand = program\n .command('notification')\n .description('Notifications');\n\nnotificationCommand\n .command('inbox')\n .option('--filter <filter>', 'all or unread')\n .option('--limit <n>')\n .option('--cursor <cursor>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runQuery(client, api.notifications.queries.listInbox, {\n filter: options.filter,\n paginationOpts: buildPaginationOptions(options.limit, options.cursor),\n });\n printOutput(result, runtime.json);\n });\n\nnotificationCommand\n .command('unread-count')\n .action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runQuery(\n client,\n api.notifications.queries.unreadCount,\n {},\n );\n printOutput({ unreadCount: result }, runtime.json);\n });\n\nnotificationCommand\n .command('mark-read <recipientId>')\n .action(async (recipientId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.notifications.mutations.markRead,\n {\n recipientId,\n },\n );\n printOutput(result, runtime.json);\n });\n\nnotificationCommand\n .command('mark-all-read')\n .action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.notifications.mutations.markAllRead,\n {},\n );\n printOutput(result, runtime.json);\n });\n\nnotificationCommand\n .command('archive <recipientId>')\n .action(async (recipientId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.notifications.mutations.archive,\n {\n recipientId,\n },\n );\n printOutput(result, runtime.json);\n });\n\nnotificationCommand.command('preferences').action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runQuery(\n client,\n api.notifications.queries.getPreferences,\n {},\n );\n printOutput(result, runtime.json);\n});\n\nnotificationCommand\n .command('set-preference <category>')\n .requiredOption('--in-app <true|false>')\n .requiredOption('--email <true|false>')\n .requiredOption('--push <true|false>')\n .action(async (category, options, command) => {\n const { client, runtime } = await getClient(command);\n if (!NOTIFICATION_CATEGORIES.includes(category)) {\n throw new Error(\n `category must be one of: ${NOTIFICATION_CATEGORIES.join(', ')}`,\n );\n }\n const result = await runMutation(\n client,\n api.notifications.mutations.updatePreferences,\n {\n category,\n inAppEnabled: parseBoolean(options.inApp, 'in-app'),\n emailEnabled: parseBoolean(options.email, 'email'),\n pushEnabled: parseBoolean(options.push, 'push'),\n },\n );\n printOutput(result, runtime.json);\n });\n\nnotificationCommand\n .command('subscriptions')\n .action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runQuery(\n client,\n api.notifications.queries.listPushSubscriptions,\n {},\n );\n printOutput(result, runtime.json);\n });\n\nnotificationCommand\n .command('remove-subscription <subscriptionId>')\n .action(async (subscriptionId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.notifications.mutations.removePushSubscription,\n { subscriptionId },\n );\n printOutput(result, runtime.json);\n });\n\nconst priorityCommand = program\n .command('priority')\n .description('Issue priorities');\n\npriorityCommand\n .command('list [slug]')\n .action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runQuery(\n client,\n api.organizations.queries.listIssuePriorities,\n { orgSlug },\n );\n printOutput(result, runtime.json);\n });\n\npriorityCommand\n .command('create')\n .requiredOption('--name <name>')\n .requiredOption('--weight <n>')\n .requiredOption('--color <hex>')\n .option('--icon <icon>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runMutation(\n client,\n api.organizations.mutations.createIssuePriority,\n {\n orgSlug,\n name: options.name,\n weight: requiredNumber(options.weight, 'weight'),\n color: options.color,\n icon: options.icon,\n },\n );\n printOutput(result, runtime.json);\n });\n\npriorityCommand\n .command('update <priority>')\n .requiredOption('--name <name>')\n .requiredOption('--color <hex>')\n .option('--weight <n>')\n .option('--icon <icon>')\n .action(async (priority, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const priorityId = await resolveIssuePriorityId(client, orgSlug, priority);\n const result = await runMutation(\n client,\n api.organizations.mutations.updateIssuePriority,\n {\n orgSlug,\n priorityId,\n name: options.name,\n weight: optionalNumber(options.weight, 'weight'),\n color: options.color,\n icon: options.icon,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\npriorityCommand\n .command('delete <priority>')\n .action(async (priority, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const priorityId = await resolveIssuePriorityId(client, orgSlug, priority);\n const result = await runMutation(\n client,\n api.organizations.mutations.deleteIssuePriority,\n {\n orgSlug,\n priorityId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\npriorityCommand\n .command('reset [slug]')\n .action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runMutation(\n client,\n api.organizations.mutations.resetIssuePriorities,\n { orgSlug },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nconst stateCommand = program.command('state').description('Issue states');\n\nstateCommand.command('list [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runQuery(\n client,\n api.organizations.queries.listIssueStates,\n {\n orgSlug,\n },\n );\n printOutput(result, runtime.json);\n});\n\nstateCommand\n .command('create')\n .requiredOption('--name <name>')\n .requiredOption('--position <n>')\n .requiredOption('--type <type>')\n .requiredOption('--color <hex>')\n .option('--icon <icon>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n if (!ISSUE_STATE_TYPES.includes(options.type)) {\n throw new Error(`type must be one of: ${ISSUE_STATE_TYPES.join(', ')}`);\n }\n const result = await runMutation(\n client,\n api.organizations.mutations.createIssueState,\n {\n orgSlug,\n name: options.name,\n position: requiredNumber(options.position, 'position'),\n type: options.type,\n color: options.color,\n icon: options.icon,\n },\n );\n printOutput(result, runtime.json);\n });\n\nstateCommand\n .command('update <state>')\n .requiredOption('--name <name>')\n .requiredOption('--position <n>')\n .requiredOption('--type <type>')\n .requiredOption('--color <hex>')\n .option('--icon <icon>')\n .action(async (state, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n if (!ISSUE_STATE_TYPES.includes(options.type)) {\n throw new Error(`type must be one of: ${ISSUE_STATE_TYPES.join(', ')}`);\n }\n const stateId = await resolveIssueStateId(client, orgSlug, state);\n const result = await runMutation(\n client,\n api.organizations.mutations.updateIssueState,\n {\n orgSlug,\n stateId,\n name: options.name,\n position: requiredNumber(options.position, 'position'),\n type: options.type,\n color: options.color,\n icon: options.icon,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nstateCommand\n .command('delete <state>')\n .action(async (state, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const stateId = await resolveIssueStateId(client, orgSlug, state);\n const result = await runMutation(\n client,\n api.organizations.mutations.deleteIssueState,\n {\n orgSlug,\n stateId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nstateCommand.command('reset [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runMutation(\n client,\n api.organizations.mutations.resetIssueStates,\n { orgSlug },\n );\n printOutput(result ?? { success: true }, runtime.json);\n});\n\nconst statusCommand = program.command('status').description('Project statuses');\n\nstatusCommand.command('list [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runQuery(\n client,\n api.organizations.queries.listProjectStatuses,\n { orgSlug },\n );\n printOutput(result, runtime.json);\n});\n\nstatusCommand\n .command('create')\n .requiredOption('--name <name>')\n .requiredOption('--position <n>')\n .requiredOption('--type <type>')\n .requiredOption('--color <hex>')\n .option('--icon <icon>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n if (!PROJECT_STATUS_TYPES.includes(options.type)) {\n throw new Error(\n `type must be one of: ${PROJECT_STATUS_TYPES.join(', ')}`,\n );\n }\n const result = await runMutation(\n client,\n api.organizations.mutations.createProjectStatus,\n {\n orgSlug,\n name: options.name,\n position: requiredNumber(options.position, 'position'),\n type: options.type,\n color: options.color,\n icon: options.icon,\n },\n );\n printOutput(result, runtime.json);\n });\n\nstatusCommand\n .command('update <status>')\n .requiredOption('--name <name>')\n .requiredOption('--position <n>')\n .requiredOption('--type <type>')\n .requiredOption('--color <hex>')\n .option('--icon <icon>')\n .action(async (status, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n if (!PROJECT_STATUS_TYPES.includes(options.type)) {\n throw new Error(\n `type must be one of: ${PROJECT_STATUS_TYPES.join(', ')}`,\n );\n }\n const statusId = await resolveProjectStatusId(client, orgSlug, status);\n const result = await runMutation(\n client,\n api.organizations.mutations.updateProjectStatus,\n {\n orgSlug,\n statusId,\n name: options.name,\n position: requiredNumber(options.position, 'position'),\n type: options.type,\n color: options.color,\n icon: options.icon,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nstatusCommand\n .command('delete <status>')\n .action(async (status, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const statusId = await resolveProjectStatusId(client, orgSlug, status);\n const result = await runMutation(\n client,\n api.organizations.mutations.deleteProjectStatus,\n {\n orgSlug,\n statusId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nstatusCommand\n .command('reset [slug]')\n .action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runMutation(\n client,\n api.organizations.mutations.resetProjectStatuses,\n { orgSlug },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nconst adminCommand = program.command('admin').description('Platform admin');\n\nadminCommand.command('branding').action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runQuery(\n client,\n api.platformAdmin.queries.getBranding,\n {},\n );\n printOutput(result, runtime.json);\n});\n\nadminCommand\n .command('set-branding')\n .option('--name <name>')\n .option('--description <description>')\n .option('--theme-color <hex>')\n .option('--accent-color <hex>')\n .option('--logo <path>')\n .option('--remove-logo')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n let logoStorageId: Id<'_storage'> | undefined;\n if (options.logo) {\n const uploadUrl = await runMutation(\n client,\n api.platformAdmin.mutations.generateBrandLogoUploadUrl,\n {},\n );\n logoStorageId = await uploadFile(uploadUrl, options.logo);\n }\n\n const result = await runMutation(\n client,\n api.platformAdmin.mutations.updateBranding,\n {\n name: options.name,\n description: options.description,\n logoStorageId,\n removeLogo: options.removeLogo ? true : undefined,\n themeColor: options.themeColor,\n accentColor: options.accentColor,\n },\n );\n printOutput(\n {\n ...(result ?? { success: true }),\n logoStorageId: logoStorageId ?? null,\n },\n runtime.json,\n );\n });\n\nadminCommand.command('signup-policy').action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runQuery(\n client,\n api.platformAdmin.queries.getSignupPolicy,\n {},\n );\n printOutput(result, runtime.json);\n});\n\nadminCommand\n .command('set-signup-policy')\n .option('--blocked <domains>')\n .option('--allowed <domains>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.platformAdmin.mutations.updateSignupEmailDomainPolicy,\n {\n blockedDomains: parseList(options.blocked),\n allowedDomains: parseList(options.allowed),\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nadminCommand\n .command('sync-disposable-domains')\n .action(async (_options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runAction(\n client,\n api.platformAdmin.actions.runDisposableDomainSyncNow,\n {},\n );\n printOutput(result, runtime.json);\n });\n\nconst teamCommand = program.command('team').description('Teams');\n\nteamCommand\n .command('list [slug]')\n .option('--limit <n>')\n .action(async (slug, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runAction(client, cliApi.listTeams, {\n orgSlug,\n limit: options.limit ? Number(options.limit) : undefined,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('get <teamKey>')\n .action(async (teamKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.getTeam, {\n orgSlug,\n teamKey,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('create')\n .requiredOption('--key <key>')\n .requiredOption('--name <name>')\n .option('--description <description>')\n .option('--visibility <visibility>')\n .option('--icon <icon>')\n .option('--color <color>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.createTeam, {\n orgSlug,\n key: options.key,\n name: options.name,\n description: options.description,\n visibility: options.visibility,\n icon: options.icon,\n color: options.color,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('update <teamKey>')\n .option('--name <name>')\n .option('--description <description>')\n .option('--clear-description')\n .option('--visibility <visibility>')\n .option('--icon <icon>')\n .option('--clear-icon')\n .option('--color <color>')\n .option('--clear-color')\n .action(async (teamKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.updateTeam, {\n orgSlug,\n teamKey,\n name: options.name,\n description: nullableOption(\n options.description,\n options.clearDescription,\n ),\n visibility: options.visibility,\n icon: nullableOption(options.icon, options.clearIcon),\n color: nullableOption(options.color, options.clearColor),\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('delete <teamKey>')\n .action(async (teamKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.deleteTeam, {\n orgSlug,\n teamKey,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('members <teamKey>')\n .action(async (teamKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const team = await runAction(client, cliApi.getTeam, { orgSlug, teamKey });\n const result = await runQuery(client, api.teams.queries.listMembers, {\n teamId: team.id as any,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('add-member <teamKey> <member>')\n .option('--role <role>', 'member or lead', 'member')\n .action(async (teamKey, member, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.addTeamMember, {\n orgSlug,\n teamKey,\n memberName: member,\n role: options.role,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('remove-member <teamKey> <member>')\n .action(async (teamKey, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.removeTeamMember, {\n orgSlug,\n teamKey,\n memberName: member,\n });\n printOutput(result, runtime.json);\n });\n\nteamCommand\n .command('set-lead <teamKey> <member>')\n .action(async (teamKey, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const leadName = member === 'null' ? null : member;\n const result = await runAction(client, cliApi.changeTeamLead, {\n orgSlug,\n teamKey,\n leadName,\n });\n printOutput(result, runtime.json);\n });\n\nconst projectCommand = program.command('project').description('Projects');\n\nprojectCommand\n .command('list [slug]')\n .option('--team <teamKey>')\n .option('--limit <n>')\n .action(async (slug, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runAction(client, cliApi.listProjects, {\n orgSlug,\n teamKey: options.team,\n limit: options.limit ? Number(options.limit) : undefined,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('get <projectKey>')\n .action(async (projectKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.getProject, {\n orgSlug,\n projectKey,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('create')\n .requiredOption('--key <key>')\n .requiredOption('--name <name>')\n .option('--description <description>')\n .option('--team <teamKey>')\n .option('--status <statusName>')\n .option('--visibility <visibility>')\n .option('--icon <icon>')\n .option('--color <color>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.createProject, {\n orgSlug,\n key: options.key,\n name: options.name,\n description: options.description,\n teamKey: options.team,\n statusName: options.status,\n visibility: options.visibility,\n icon: options.icon,\n color: options.color,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('update <projectKey>')\n .option('--name <name>')\n .option('--description <description>')\n .option('--team <teamKey>')\n .option('--clear-team')\n .option('--status <statusName>')\n .option('--clear-status')\n .option('--visibility <visibility>')\n .option('--start-date <date>')\n .option('--clear-start-date')\n .option('--due-date <date>')\n .option('--clear-due-date')\n .option('--icon <icon>')\n .option('--clear-icon')\n .option('--color <color>')\n .option('--clear-color')\n .action(async (projectKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.updateProject, {\n orgSlug,\n projectKey,\n name: options.name,\n description: options.description,\n teamKey: nullableOption(options.team, options.clearTeam),\n statusName: nullableOption(options.status, options.clearStatus),\n visibility: options.visibility,\n startDate: nullableOption(options.startDate, options.clearStartDate),\n dueDate: nullableOption(options.dueDate, options.clearDueDate),\n icon: nullableOption(options.icon, options.clearIcon),\n color: nullableOption(options.color, options.clearColor),\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('delete <projectKey>')\n .action(async (projectKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.deleteProject, {\n orgSlug,\n projectKey,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('members <projectKey>')\n .action(async (projectKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const project = await runAction(client, cliApi.getProject, {\n orgSlug,\n projectKey,\n });\n const result = await runQuery(client, api.projects.queries.listMembers, {\n projectId: project.id as any,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('add-member <projectKey> <member>')\n .option('--role <role>', 'member or lead', 'member')\n .action(async (projectKey, member, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.addProjectMember, {\n orgSlug,\n projectKey,\n memberName: member,\n role: options.role,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('remove-member <projectKey> <member>')\n .action(async (projectKey, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.removeProjectMember, {\n orgSlug,\n projectKey,\n memberName: member,\n });\n printOutput(result, runtime.json);\n });\n\nprojectCommand\n .command('set-lead <projectKey> <member>')\n .action(async (projectKey, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const leadName = member === 'null' ? null : member;\n const result = await runAction(client, cliApi.changeProjectLead, {\n orgSlug,\n projectKey,\n leadName,\n });\n printOutput(result, runtime.json);\n });\n\nconst issueCommand = program.command('issue').description('Issues');\n\nissueCommand\n .command('list [slug]')\n .option('--project <projectKey>')\n .option('--team <teamKey>')\n .option('--limit <n>')\n .action(async (slug, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runAction(client, cliApi.listIssues, {\n orgSlug,\n projectKey: options.project,\n teamKey: options.team,\n limit: options.limit ? Number(options.limit) : undefined,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('get <issueKey>')\n .action(async (issueKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.getIssue, {\n orgSlug,\n issueKey,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('create')\n .requiredOption('--title <title>')\n .option('--description <description>')\n .option('--project <projectKey>')\n .option('--team <teamKey>')\n .option('--priority <priorityName>')\n .option('--visibility <visibility>')\n .option('--assignee <member>')\n .option('--state <stateName>')\n .option('--start-date <date>')\n .option('--due-date <date>')\n .option('--parent <issueKey>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.createIssue, {\n orgSlug,\n title: options.title,\n description: options.description,\n projectKey: options.project,\n teamKey: options.team,\n priorityName: options.priority,\n visibility: options.visibility,\n assigneeName: options.assignee,\n stateName: options.state,\n startDate: options.startDate,\n dueDate: options.dueDate,\n parentIssueKey: options.parent,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('update <issueKey>')\n .option('--title <title>')\n .option('--description <description>')\n .option('--priority <priorityName>')\n .option('--clear-priority')\n .option('--team <teamKey>')\n .option('--clear-team')\n .option('--project <projectKey>')\n .option('--clear-project')\n .option('--visibility <visibility>')\n .option('--assignee <member>')\n .option('--clear-assignee')\n .option('--state <stateName>')\n .option('--start-date <date>')\n .option('--clear-start-date')\n .option('--due-date <date>')\n .option('--clear-due-date')\n .option('--parent <issueKey>')\n .option('--clear-parent')\n .action(async (issueKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.updateIssue, {\n orgSlug,\n issueKey,\n title: options.title,\n description: options.description,\n priorityName: nullableOption(options.priority, options.clearPriority),\n teamKey: nullableOption(options.team, options.clearTeam),\n projectKey: nullableOption(options.project, options.clearProject),\n visibility: options.visibility,\n assigneeName: nullableOption(options.assignee, options.clearAssignee),\n stateName: options.state,\n startDate: nullableOption(options.startDate, options.clearStartDate),\n dueDate: nullableOption(options.dueDate, options.clearDueDate),\n parentIssueKey: nullableOption(options.parent, options.clearParent),\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('delete <issueKey>')\n .action(async (issueKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.deleteIssue, {\n orgSlug,\n issueKey,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('assign <issueKey> <member>')\n .option('--state <stateName>')\n .action(async (issueKey, member, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.assignIssue, {\n orgSlug,\n issueKey,\n assigneeName: member,\n stateName: options.state,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('unassign <issueKey> <member>')\n .action(async (issueKey, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.unassignIssue, {\n orgSlug,\n issueKey,\n assigneeName: member,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('assignments <issueKey>')\n .action(async (issueKey, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const issueId = await resolveIssueId(client, orgSlug, issueKey);\n const result = await runQuery(client, api.issues.queries.getAssignments, {\n issueId,\n });\n printOutput(result, runtime.json);\n });\n\nissueCommand\n .command('set-assignment-state <assignmentId> <state>')\n .action(async (assignmentId, state, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const stateId = await resolveIssueStateId(client, orgSlug, state);\n const result = await runMutation(\n client,\n api.issues.mutations.changeAssignmentState,\n {\n assignmentId,\n stateId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nissueCommand\n .command('reassign-assignment <assignmentId> <member>')\n .action(async (assignmentId, member, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const assigneeId = await resolveMemberId(client, orgSlug, member);\n const result = await runMutation(\n client,\n api.issues.mutations.updateAssignmentAssignee,\n {\n assignmentId,\n assigneeId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nissueCommand\n .command('remove-assignment <assignmentId>')\n .action(async (assignmentId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const result = await runMutation(\n client,\n api.issues.mutations.deleteAssignment,\n {\n assignmentId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nissueCommand\n .command('set-priority <issueKey> <priority>')\n .action(async (issueKey, priority, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const [issueId, priorityId] = await Promise.all([\n resolveIssueId(client, orgSlug, issueKey),\n resolveIssuePriorityId(client, orgSlug, priority),\n ]);\n const result = await runMutation(\n client,\n api.issues.mutations.changePriority,\n {\n issueId,\n priorityId,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nissueCommand\n .command('replace-assignees <issueKey> <members>')\n .action(async (issueKey, members, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const issueId = await resolveIssueId(client, orgSlug, issueKey);\n const assigneeIds = await Promise.all(\n parseList(members).map(member =>\n resolveMemberId(client, orgSlug, member),\n ),\n );\n const result = await runMutation(\n client,\n api.issues.mutations.updateAssignees,\n {\n issueId,\n assigneeIds,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nissueCommand\n .command('set-estimates <issueKey>')\n .requiredOption('--values <state=hours,...>')\n .action(async (issueKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const issueId = await resolveIssueId(client, orgSlug, issueKey);\n const estimatedTimes = await parseEstimatedTimes(\n client,\n orgSlug,\n options.values,\n );\n const result = await runMutation(\n client,\n api.issues.mutations.updateEstimatedTimes,\n {\n issueId,\n estimatedTimes,\n },\n );\n printOutput(result ?? { success: true }, runtime.json);\n });\n\nissueCommand\n .command('comment <issueKey>')\n .requiredOption('--body <body>')\n .action(async (issueKey, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const issue = await runAction(client, cliApi.getIssue, {\n orgSlug,\n issueKey,\n });\n const result = await runMutation(client, api.issues.mutations.addComment, {\n issueId: issue.id as any,\n body: options.body,\n });\n printOutput(result, runtime.json);\n });\n\nconst documentCommand = program.command('document').description('Documents');\n\ndocumentCommand\n .command('list [slug]')\n .option('--folder-id <id>')\n .option('--limit <n>')\n .action(async (slug, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runAction(client, cliApi.listDocuments, {\n orgSlug,\n folderId: options.folderId,\n limit: options.limit ? Number(options.limit) : undefined,\n });\n printOutput(result, runtime.json);\n });\n\ndocumentCommand\n .command('get <documentId>')\n .action(async (documentId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.getDocument, {\n orgSlug,\n documentId,\n });\n printOutput(result, runtime.json);\n });\n\ndocumentCommand\n .command('create')\n .requiredOption('--title <title>')\n .option('--content <content>')\n .option('--team <teamKey>')\n .option('--project <projectKey>')\n .option('--folder-id <id>')\n .option('--visibility <visibility>')\n .option('--icon <icon>')\n .option('--color <color>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.createDocument, {\n orgSlug,\n title: options.title,\n content: options.content,\n teamKey: options.team,\n projectKey: options.project,\n folderId: options.folderId,\n visibility: options.visibility,\n icon: options.icon,\n color: options.color,\n });\n printOutput(result, runtime.json);\n });\n\ndocumentCommand\n .command('update <documentId>')\n .option('--title <title>')\n .option('--content <content>')\n .option('--team <teamKey>')\n .option('--clear-team')\n .option('--project <projectKey>')\n .option('--clear-project')\n .option('--folder-id <id>')\n .option('--clear-folder')\n .option('--visibility <visibility>')\n .option('--icon <icon>')\n .option('--clear-icon')\n .option('--color <color>')\n .option('--clear-color')\n .action(async (documentId, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.updateDocument, {\n orgSlug,\n documentId,\n title: options.title,\n content: options.content,\n teamKey: nullableOption(options.team, options.clearTeam),\n projectKey: nullableOption(options.project, options.clearProject),\n folderId: nullableOption(options.folderId, options.clearFolder),\n visibility: options.visibility,\n icon: nullableOption(options.icon, options.clearIcon),\n color: nullableOption(options.color, options.clearColor),\n });\n printOutput(result, runtime.json);\n });\n\ndocumentCommand\n .command('move <documentId>')\n .option('--folder-id <id>')\n .option('--clear-folder')\n .action(async (documentId, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const folderId = options.clearFolder\n ? null\n : requiredString(options.folderId, 'folder-id');\n const result = await runAction(client, cliApi.moveDocumentToFolder, {\n orgSlug,\n documentId,\n folderId,\n });\n printOutput(result, runtime.json);\n });\n\ndocumentCommand\n .command('delete <documentId>')\n .action(async (documentId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.deleteDocument, {\n orgSlug,\n documentId,\n });\n printOutput(result, runtime.json);\n });\n\nconst folderCommand = program.command('folder').description('Document folders');\n\nfolderCommand.command('list [slug]').action(async (slug, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime, slug);\n const result = await runAction(client, cliApi.listFolders, { orgSlug });\n printOutput(result, runtime.json);\n});\n\nfolderCommand\n .command('create')\n .requiredOption('--name <name>')\n .option('--description <description>')\n .option('--icon <icon>')\n .option('--color <color>')\n .action(async (options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.createFolder, {\n orgSlug,\n name: options.name,\n description: options.description,\n icon: options.icon,\n color: options.color,\n });\n printOutput(result, runtime.json);\n });\n\nfolderCommand\n .command('update <folderId>')\n .option('--name <name>')\n .option('--description <description>')\n .option('--clear-description')\n .option('--icon <icon>')\n .option('--clear-icon')\n .option('--color <color>')\n .option('--clear-color')\n .action(async (folderId, options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.updateFolder, {\n orgSlug,\n folderId,\n name: options.name,\n description: nullableOption(\n options.description,\n options.clearDescription,\n ),\n icon: nullableOption(options.icon, options.clearIcon),\n color: nullableOption(options.color, options.clearColor),\n });\n printOutput(result, runtime.json);\n });\n\nfolderCommand\n .command('delete <folderId>')\n .action(async (folderId, _options, command) => {\n const { client, runtime } = await getClient(command);\n const orgSlug = requireOrg(runtime);\n const result = await runAction(client, cliApi.deleteFolder, {\n orgSlug,\n folderId,\n });\n printOutput(result, runtime.json);\n });\n\nasync function main() {\n await program.parseAsync(process.argv);\n}\n\nmain().catch(error => {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n});\n","/* eslint-disable */\n/**\n * Generated `api` utility.\n *\n * THIS CODE IS AUTOMATICALLY GENERATED.\n *\n * To regenerate, run `npx convex dev`.\n * @module\n */\n\nimport { anyApi, componentsGeneric } from \"convex/server\";\n\n/**\n * A utility for referencing Convex functions in your app's API.\n *\n * Usage:\n * ```js\n * const myFunctionReference = api.myModule.myFunction;\n * ```\n */\nexport const api = anyApi;\nexport const internal = anyApi;\nexport const components = componentsGeneric();\n","import { isCancel, password as passwordPrompt, text } from '@clack/prompts';\nimport { CliSession } from './session';\n\ntype AuthUser = {\n id?: string;\n email?: string;\n name?: string;\n username?: string;\n};\n\ntype AuthSessionResponse = {\n user?: AuthUser | null;\n session?: Record<string, unknown> | null;\n};\n\nfunction buildUrl(appUrl: string, pathname: string) {\n return new URL(pathname, appUrl).toString();\n}\n\nfunction cookieHeader(cookies: Record<string, string>) {\n return Object.entries(cookies)\n .map(([name, value]) => `${name}=${value}`)\n .join('; ');\n}\n\nfunction splitSetCookieHeader(value: string) {\n return value.split(/,(?=[^;,]+=)/g);\n}\n\nfunction applySetCookieHeaders(\n session: CliSession,\n response: Response,\n): CliSession {\n const nextCookies = { ...session.cookies };\n const rawSetCookies =\n response.headers.getSetCookie?.() ??\n (response.headers.get('set-cookie')\n ? splitSetCookieHeader(response.headers.get('set-cookie')!)\n : []);\n\n for (const rawCookie of rawSetCookies) {\n const [cookiePart, ...attributeParts] = rawCookie.split(';');\n const separatorIndex = cookiePart.indexOf('=');\n if (separatorIndex <= 0) {\n continue;\n }\n\n const name = cookiePart.slice(0, separatorIndex).trim();\n const value = cookiePart.slice(separatorIndex + 1).trim();\n const attributes = attributeParts.map(part => part.trim().toLowerCase());\n const maxAge = attributes.find(part => part.startsWith('max-age='));\n const expires = attributes.find(part => part.startsWith('expires='));\n const expired =\n value.length === 0 ||\n maxAge === 'max-age=0' ||\n (expires\n ? Number.isFinite(Date.parse(expires.slice(8))) &&\n Date.parse(expires.slice(8)) <= Date.now()\n : false);\n\n if (expired) {\n delete nextCookies[name];\n } else {\n nextCookies[name] = value;\n }\n }\n\n return {\n ...session,\n cookies: nextCookies,\n };\n}\n\nasync function authRequest(\n session: CliSession,\n appUrl: string,\n pathname: string,\n init: RequestInit = {},\n) {\n const headers = new Headers(init.headers);\n const origin = new URL(appUrl).origin;\n if (Object.keys(session.cookies).length > 0) {\n headers.set('cookie', cookieHeader(session.cookies));\n }\n if (!headers.has('origin')) {\n headers.set('origin', origin);\n }\n if (!headers.has('referer')) {\n headers.set('referer', `${origin}/`);\n }\n if (init.body && !headers.has('content-type')) {\n headers.set('content-type', 'application/json');\n }\n\n const response = await fetch(buildUrl(appUrl, pathname), {\n ...init,\n headers,\n redirect: 'manual',\n });\n const nextSession = applySetCookieHeaders(session, response);\n return { response, session: nextSession };\n}\n\nasync function parseError(response: Response) {\n try {\n const data = (await response.json()) as { error?: { message?: string } };\n return data.error?.message ?? `Request failed with HTTP ${response.status}`;\n } catch {\n return `Request failed with HTTP ${response.status}`;\n }\n}\n\nexport async function loginWithPassword(\n session: CliSession,\n appUrl: string,\n identifier: string,\n password: string,\n) {\n const pathname = identifier.includes('@')\n ? '/api/auth/sign-in/email'\n : '/api/auth/sign-in/username';\n const body = identifier.includes('@')\n ? { email: identifier, password }\n : { username: identifier, password };\n const { response, session: nextSession } = await authRequest(\n session,\n appUrl,\n pathname,\n {\n method: 'POST',\n body: JSON.stringify(body),\n },\n );\n\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n\n return nextSession;\n}\n\nexport async function signUpWithEmail(\n session: CliSession,\n appUrl: string,\n email: string,\n username: string,\n password: string,\n) {\n const { response, session: nextSession } = await authRequest(\n session,\n appUrl,\n '/api/auth/sign-up/email',\n {\n method: 'POST',\n body: JSON.stringify({\n email,\n password,\n name: username,\n username,\n }),\n },\n );\n\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n\n return nextSession;\n}\n\nexport async function logout(session: CliSession, appUrl: string) {\n const { response } = await authRequest(\n session,\n appUrl,\n '/api/auth/sign-out',\n {\n method: 'POST',\n body: JSON.stringify({}),\n },\n );\n\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n}\n\nexport async function fetchAuthSession(session: CliSession, appUrl: string) {\n const { response, session: nextSession } = await authRequest(\n session,\n appUrl,\n '/api/auth/get-session',\n {\n method: 'GET',\n },\n );\n\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n\n const data = (await response.json()) as AuthSessionResponse;\n return {\n session: nextSession,\n user: data.user ?? null,\n };\n}\n\nexport async function fetchConvexToken(session: CliSession, appUrl: string) {\n const { response, session: nextSession } = await authRequest(\n session,\n appUrl,\n '/api/auth/convex/token',\n {\n method: 'GET',\n },\n );\n\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n\n const data = (await response.json()) as { token?: string };\n if (!data.token) {\n throw new Error('Missing Convex token');\n }\n\n return {\n session: nextSession,\n token: data.token,\n };\n}\n\nexport async function prompt(question: string) {\n const value = await text({\n message: question.replace(/:\\s*$/, ''),\n });\n if (isCancel(value)) {\n throw new Error('Canceled');\n }\n return String(value).trim();\n}\n\nexport async function promptSecret(question: string) {\n const value = await passwordPrompt({\n message: question.replace(/:\\s*$/, ''),\n mask: '*',\n });\n if (isCancel(value)) {\n throw new Error('Canceled');\n }\n return String(value);\n}\n","import { ConvexHttpClient } from 'convex/browser';\nimport { FunctionReference, OptionalRestArgs } from 'convex/server';\nimport { fetchConvexToken } from './auth';\nimport { CliSession } from './session';\n\nexport async function createConvexClient(\n session: CliSession,\n appUrl: string,\n convexUrl: string,\n) {\n const { token } = await fetchConvexToken(session, appUrl);\n const client = new ConvexHttpClient(convexUrl);\n client.setAuth(token);\n return client;\n}\n\nexport async function runQuery<Query extends FunctionReference<'query'>>(\n client: ConvexHttpClient,\n ref: Query,\n ...args: OptionalRestArgs<Query>\n) {\n return await client.query(ref, ...args);\n}\n\nexport async function runMutation<\n Mutation extends FunctionReference<'mutation'>,\n>(\n client: ConvexHttpClient,\n ref: Mutation,\n ...args: OptionalRestArgs<Mutation>\n) {\n return await client.mutation(ref, ...args);\n}\n\nexport async function runAction<Action extends FunctionReference<'action'>>(\n client: ConvexHttpClient,\n ref: Action,\n ...args: OptionalRestArgs<Action>\n) {\n return await client.action(ref, ...args);\n}\n","function simplify(value: unknown): unknown {\n if (value === null || value === undefined) {\n return value;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return [];\n }\n if (value.every(item => typeof item !== 'object' || item === null)) {\n return value.join(', ');\n }\n return JSON.stringify(value);\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return value;\n}\n\nexport function printOutput(data: unknown, json = false) {\n if (json) {\n console.log(JSON.stringify(data, null, 2));\n return;\n }\n\n if (Array.isArray(data)) {\n if (data.length === 0) {\n console.log('No results.');\n return;\n }\n if (data.every(item => typeof item === 'object' && item !== null)) {\n console.table(\n data.map(item =>\n Object.fromEntries(\n Object.entries(item).map(([key, value]) => [key, simplify(value)]),\n ),\n ),\n );\n return;\n }\n }\n\n if (typeof data === 'object' && data !== null) {\n console.dir(data, { depth: null, colors: true });\n return;\n }\n\n console.log(String(data));\n}\n","import { mkdir, readFile, rm, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport path from 'node:path';\n\nexport type CliSession = {\n version: 1;\n appUrl?: string;\n convexUrl?: string;\n activeOrgSlug?: string;\n cookies: Record<string, string>;\n};\n\nconst SESSION_ROOT = path.join(homedir(), '.vector');\n\nexport function getSessionPath(profile = 'default') {\n return path.join(SESSION_ROOT, `cli-${profile}.json`);\n}\n\nexport async function readSession(profile = 'default') {\n try {\n const raw = await readFile(getSessionPath(profile), 'utf8');\n const parsed = JSON.parse(raw) as Partial<CliSession>;\n return {\n version: 1,\n cookies: {},\n ...parsed,\n } satisfies CliSession;\n } catch {\n return null;\n }\n}\n\nexport async function writeSession(session: CliSession, profile = 'default') {\n await mkdir(SESSION_ROOT, { recursive: true });\n await writeFile(\n getSessionPath(profile),\n `${JSON.stringify(session, null, 2)}\\n`,\n 'utf8',\n );\n}\n\nexport async function clearSession(profile = 'default') {\n await rm(getSessionPath(profile), { force: true });\n}\n\nexport function createEmptySession(): CliSession {\n return {\n version: 1,\n cookies: {},\n };\n}\n"],"mappings":"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","names":["readFile","readFile"]}
|