@getpilfer/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +81 -0
- package/SKILL.md +47 -0
- package/dist/auth-VFGSMTC6.js +20 -0
- package/dist/auth-VFGSMTC6.js.map +1 -0
- package/dist/build-program.js +16 -0
- package/dist/build-program.js.map +1 -0
- package/dist/chunk-GWWE2AMO.js +407 -0
- package/dist/chunk-GWWE2AMO.js.map +1 -0
- package/dist/chunk-GZ4DXDQM.js +76 -0
- package/dist/chunk-GZ4DXDQM.js.map +1 -0
- package/dist/chunk-HJFKOMTC.js +281 -0
- package/dist/chunk-HJFKOMTC.js.map +1 -0
- package/dist/generated-D7S53VGE.js +1102 -0
- package/dist/generated-D7S53VGE.js.map +1 -0
- package/dist/index.js +117 -0
- package/dist/index.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/bulk.ts","../src/commands/generated/index.ts"],"sourcesContent":["const MAX_IDS = 25;\nconst CONCURRENCY = 5;\nconst MAX_RETRIES = 3;\n\nexport function parseIds(idsFlag: string | undefined): string[] {\n if (!idsFlag?.trim()) return [];\n return idsFlag.split(\",\").map((s) => s.trim()).filter(Boolean);\n}\n\nexport function parseDates(datesFlag: string | undefined): string[] {\n return parseIds(datesFlag);\n}\n\nexport function validateBulkIds(ids: string[], resourceLabel: string): void {\n if (ids.length > MAX_IDS) {\n throw new Error(\n `${resourceLabel}: max ${MAX_IDS} IDs per invocation (got ${ids.length}). Use multiple invocations for more.`,\n );\n }\n}\n\nexport interface BulkTaskResult {\n _id?: string;\n status?: \"updated\" | \"deleted\";\n error?: boolean;\n statusCode?: number;\n message?: string;\n}\n\nexport interface BulkRunOptions<T> {\n items: string[];\n concurrency?: number;\n runOne: (id: string) => Promise<{ ok: boolean; status: number; data?: T; error?: string }>;\n toResult: (id: string, ok: boolean, status: number, data?: T, error?: string) => BulkTaskResult;\n}\n\n/**\n * Run up to CONCURRENCY operations in parallel, with 429 retry (Retry-After or exponential backoff).\n */\nexport async function runBulk<T>(options: BulkRunOptions<T>): Promise<{\n data: BulkTaskResult[];\n summary: { total: number; succeeded: number; failed: number };\n}> {\n const { items, runOne, toResult } = options;\n const concurrency = Math.min(options.concurrency ?? CONCURRENCY, items.length);\n const results: BulkTaskResult[] = [];\n let succeeded = 0;\n let failed = 0;\n\n async function runWithRetry(id: string): Promise<BulkTaskResult> {\n let lastRes: { ok: boolean; status: number; data?: T; error?: string } | null = null;\n for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {\n const res = await runOne(id);\n lastRes = res;\n if (res.status !== 429) break;\n const retryAfter = 2 ** attempt;\n await new Promise((r) => setTimeout(r, retryAfter * 1000));\n }\n const r = lastRes!;\n const result = toResult(id, r.ok, r.status, r.data, r.error);\n if (r.ok) succeeded++;\n else failed++;\n return result;\n }\n\n const queue = [...items];\n const workers = Array.from({ length: concurrency }, async () => {\n while (queue.length > 0) {\n const id = queue.shift()!;\n const result = await runWithRetry(id);\n results.push(result);\n }\n });\n await Promise.all(workers);\n\n return {\n data: results,\n summary: { total: items.length, succeeded, failed },\n };\n}\n","/** Generated by scripts/generate-from-openapi.ts - do not edit by hand */\nimport type { Command } from \"commander\";\nimport { apiRequest } from \"../../lib/client.js\";\nimport { printOutput } from \"../../lib/output.js\";\nimport { mergeBody } from \"../../lib/merge-body.js\";\nimport { coerceBodyFlag, coerceQueryFlag } from \"../../lib/flag-coercion.js\";\nimport { parseIds, validateBulkIds, runBulk } from \"../../lib/bulk.js\";\n\nexport interface CommandHelpers {\n getOutputFormat: () => \"json\" | \"table\" | \"csv\";\n requireToken: () => string | null;\n exitWithError: (status: number, message: string) => never;\n getBaseUrl: () => string;\n syncRootOptsFromCommand: (cmd: Command) => void;\n}\n\nexport function register(program: Command, helpers: CommandHelpers): void {\n const { getOutputFormat, requireToken, exitWithError, getBaseUrl, syncRootOptsFromCommand } = helpers;\n\n // --- organizations ---\n const organizationsCmd = program.command(\"organizations\").description(\"organizations resource\");\n organizationsCmd.command(\"list\").description(\"List organizations\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n const res = await apiRequest({ method: \"GET\", path: \"organizations\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n organizationsCmd.command(\"get <id>\").description(\"Get one organizations by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"organizations/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n\n // --- projects ---\n const projectsCmd = program.command(\"projects\").description(\"projects resource\");\n projectsCmd.command(\"list\").description(\"List projects\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--organization-id <value>\", \"Filter by organizationId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.organizationId != null) {\n query.organizationId = coerceQueryFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n }\n const res = await apiRequest({ method: \"GET\", path: \"projects\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n projectsCmd.command(\"get <id>\").description(\"Get one projects by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n projectsCmd.command(\"create\").description(\"Create projects\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--description <value>\", \"description\")\n .option(\"--organization-id <value>\", \"organizationId\")\n .option(\"--priority <value>\", \"priority\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDescription = coerceBodyFlag(opts.description, { field: \"description\", flag: \"--description\", kind: \"string\" }, exitWithError);\n if (parsedDescription !== undefined) bodyFromFlags.description = parsedDescription;\n const parsedOrganizationId = coerceBodyFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n if (parsedOrganizationId !== undefined) bodyFromFlags.organizationId = parsedOrganizationId;\n const parsedPriority = coerceBodyFlag(opts.priority, { field: \"priority\", flag: \"--priority\", kind: \"string\" }, exitWithError);\n if (parsedPriority !== undefined) bodyFromFlags.priority = parsedPriority;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"projects\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n projectsCmd.command(\"update <id>\").description(\"Update projects\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--description <value>\", \"description\")\n .option(\"--priority <value>\", \"priority\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"projects\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDescription = coerceBodyFlag(opts.description, { field: \"description\", flag: \"--description\", kind: \"string\" }, exitWithError);\n if (parsedDescription !== undefined) bodyFromFlags.description = parsedDescription;\n const parsedPriority = coerceBodyFlag(opts.priority, { field: \"priority\", flag: \"--priority\", kind: \"string\" }, exitWithError);\n if (parsedPriority !== undefined) bodyFromFlags.priority = parsedPriority;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"projects/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDescription = coerceBodyFlag(opts.description, { field: \"description\", flag: \"--description\", kind: \"string\" }, exitWithError);\n if (parsedDescription !== undefined) bodyFromFlags.description = parsedDescription;\n const parsedPriority = coerceBodyFlag(opts.priority, { field: \"priority\", flag: \"--priority\", kind: \"string\" }, exitWithError);\n if (parsedPriority !== undefined) bodyFromFlags.priority = parsedPriority;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n projectsCmd.command(\"delete <id>\").description(\"Delete projects\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"projects\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"projects/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- spaces ---\n const spacesCmd = program.command(\"spaces\").description(\"spaces resource\");\n spacesCmd.command(\"list\").description(\"List spaces\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--organization-id <value>\", \"Filter by organizationId\")\n .option(\"--project-id <value>\", \"Filter by projectId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.organizationId != null) {\n query.organizationId = coerceQueryFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n }\n if (opts.projectId != null) {\n query.projectId = coerceQueryFlag(opts.projectId, { field: \"projectId\", flag: \"--project-id\", kind: \"string\" }, exitWithError);\n }\n const res = await apiRequest({ method: \"GET\", path: \"spaces\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n spacesCmd.command(\"get <id>\").description(\"Get one spaces by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"spaces/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n spacesCmd.command(\"create\").description(\"Create spaces\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--description <value>\", \"description\")\n .option(\"--organization-id <value>\", \"organizationId\")\n .option(\"--project-id <value>\", \"projectId\")\n .option(\"--status <value>\", \"status\")\n .option(\"--priority <value>\", \"priority\")\n .option(\"--current-strength <value>\", \"currentStrength\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDescription = coerceBodyFlag(opts.description, { field: \"description\", flag: \"--description\", kind: \"string\" }, exitWithError);\n if (parsedDescription !== undefined) bodyFromFlags.description = parsedDescription;\n const parsedOrganizationId = coerceBodyFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n if (parsedOrganizationId !== undefined) bodyFromFlags.organizationId = parsedOrganizationId;\n const parsedProjectId = coerceBodyFlag(opts.projectId, { field: \"projectId\", flag: \"--project-id\", kind: \"string\" }, exitWithError);\n if (parsedProjectId !== undefined) bodyFromFlags.projectId = parsedProjectId;\n const parsedStatus = coerceBodyFlag(opts.status, { field: \"status\", flag: \"--status\", kind: \"string\" }, exitWithError);\n if (parsedStatus !== undefined) bodyFromFlags.status = parsedStatus;\n const parsedPriority = coerceBodyFlag(opts.priority, { field: \"priority\", flag: \"--priority\", kind: \"string\" }, exitWithError);\n if (parsedPriority !== undefined) bodyFromFlags.priority = parsedPriority;\n const parsedCurrentStrength = coerceBodyFlag(opts.currentStrength, { field: \"currentStrength\", flag: \"--current-strength\", kind: \"number\" }, exitWithError);\n if (parsedCurrentStrength !== undefined) bodyFromFlags.currentStrength = parsedCurrentStrength;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"spaces\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n spacesCmd.command(\"update <id>\").description(\"Update spaces\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--description <value>\", \"description\")\n .option(\"--project-id <value>\", \"projectId\")\n .option(\"--status <value>\", \"status\")\n .option(\"--priority <value>\", \"priority\")\n .option(\"--current-strength <value>\", \"currentStrength\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"spaces\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDescription = coerceBodyFlag(opts.description, { field: \"description\", flag: \"--description\", kind: \"string\" }, exitWithError);\n if (parsedDescription !== undefined) bodyFromFlags.description = parsedDescription;\n const parsedProjectId = coerceBodyFlag(opts.projectId, { field: \"projectId\", flag: \"--project-id\", kind: \"string\", allowNull: true }, exitWithError);\n if (parsedProjectId !== undefined) bodyFromFlags.projectId = parsedProjectId;\n const parsedStatus = coerceBodyFlag(opts.status, { field: \"status\", flag: \"--status\", kind: \"string\" }, exitWithError);\n if (parsedStatus !== undefined) bodyFromFlags.status = parsedStatus;\n const parsedPriority = coerceBodyFlag(opts.priority, { field: \"priority\", flag: \"--priority\", kind: \"string\" }, exitWithError);\n if (parsedPriority !== undefined) bodyFromFlags.priority = parsedPriority;\n const parsedCurrentStrength = coerceBodyFlag(opts.currentStrength, { field: \"currentStrength\", flag: \"--current-strength\", kind: \"number\" }, exitWithError);\n if (parsedCurrentStrength !== undefined) bodyFromFlags.currentStrength = parsedCurrentStrength;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"spaces/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDescription = coerceBodyFlag(opts.description, { field: \"description\", flag: \"--description\", kind: \"string\" }, exitWithError);\n if (parsedDescription !== undefined) bodyFromFlags.description = parsedDescription;\n const parsedProjectId = coerceBodyFlag(opts.projectId, { field: \"projectId\", flag: \"--project-id\", kind: \"string\", allowNull: true }, exitWithError);\n if (parsedProjectId !== undefined) bodyFromFlags.projectId = parsedProjectId;\n const parsedStatus = coerceBodyFlag(opts.status, { field: \"status\", flag: \"--status\", kind: \"string\" }, exitWithError);\n if (parsedStatus !== undefined) bodyFromFlags.status = parsedStatus;\n const parsedPriority = coerceBodyFlag(opts.priority, { field: \"priority\", flag: \"--priority\", kind: \"string\" }, exitWithError);\n if (parsedPriority !== undefined) bodyFromFlags.priority = parsedPriority;\n const parsedCurrentStrength = coerceBodyFlag(opts.currentStrength, { field: \"currentStrength\", flag: \"--current-strength\", kind: \"number\" }, exitWithError);\n if (parsedCurrentStrength !== undefined) bodyFromFlags.currentStrength = parsedCurrentStrength;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"spaces/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n spacesCmd.command(\"delete <id>\").description(\"Delete spaces\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"spaces\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"spaces/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"spaces/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- scouts ---\n const scoutsCmd = program.command(\"scouts\").description(\"scouts resource\");\n scoutsCmd.command(\"list\").description(\"List scouts\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--organization-id <value>\", \"Filter by organizationId\")\n .option(\"--category-id <value>\", \"Filter by categoryId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.organizationId != null) {\n query.organizationId = coerceQueryFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n }\n if (opts.categoryId != null) {\n query.categoryId = coerceQueryFlag(opts.categoryId, { field: \"categoryId\", flag: \"--category-id\", kind: \"string\" }, exitWithError);\n }\n const res = await apiRequest({ method: \"GET\", path: \"scouts\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n scoutsCmd.command(\"get <id>\").description(\"Get one scouts by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"scouts/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n scoutsCmd.command(\"create\").description(\"Create scouts\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--description <value>\", \"description\")\n .option(\"--organization-id <value>\", \"organizationId\")\n .option(\"--category-id <value>\", \"categoryId\")\n .option(\"--metadata <value>\", \"metadata\")\n .option(\"--url <value>\", \"url\")\n .option(\"--hero-image <value>\", \"heroImage\")\n .option(\"--priority <value>\", \"priority\")\n .option(\"--status <value>\", \"status\")\n .option(\"--estimated-cost <value>\", \"estimatedCost\")\n .option(\"--potential-cost <value>\", \"potentialCost\")\n .option(\"--need <value>\", \"need\")\n .option(\"--urgency <value>\", \"urgency\")\n .option(\"--use <value>\", \"use\")\n .option(\"--longevity <value>\", \"longevity\")\n .option(\"--roi <value>\", \"roi\")\n .option(\"--system-fit <value>\", \"systemFit\")\n .option(\"--emotional-pull <value>\", \"emotionalPull\")\n .option(\"--infrastructure-fit <value>\", \"infrastructureFit\")\n .option(\"--activation-potential <value>\", \"activationPotential\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDescription = coerceBodyFlag(opts.description, { field: \"description\", flag: \"--description\", kind: \"string\" }, exitWithError);\n if (parsedDescription !== undefined) bodyFromFlags.description = parsedDescription;\n const parsedOrganizationId = coerceBodyFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n if (parsedOrganizationId !== undefined) bodyFromFlags.organizationId = parsedOrganizationId;\n const parsedCategoryId = coerceBodyFlag(opts.categoryId, { field: \"categoryId\", flag: \"--category-id\", kind: \"string\" }, exitWithError);\n if (parsedCategoryId !== undefined) bodyFromFlags.categoryId = parsedCategoryId;\n const parsedMetadata = coerceBodyFlag(opts.metadata, { field: \"metadata\", flag: \"--metadata\", kind: \"string\" }, exitWithError);\n if (parsedMetadata !== undefined) bodyFromFlags.metadata = parsedMetadata;\n const parsedUrl = coerceBodyFlag(opts.url, { field: \"url\", flag: \"--url\", kind: \"string\" }, exitWithError);\n if (parsedUrl !== undefined) bodyFromFlags.url = parsedUrl;\n const parsedHeroImage = coerceBodyFlag(opts.heroImage, { field: \"heroImage\", flag: \"--hero-image\", kind: \"string\" }, exitWithError);\n if (parsedHeroImage !== undefined) bodyFromFlags.heroImage = parsedHeroImage;\n const parsedPriority = coerceBodyFlag(opts.priority, { field: \"priority\", flag: \"--priority\", kind: \"string\" }, exitWithError);\n if (parsedPriority !== undefined) bodyFromFlags.priority = parsedPriority;\n const parsedStatus = coerceBodyFlag(opts.status, { field: \"status\", flag: \"--status\", kind: \"string\" }, exitWithError);\n if (parsedStatus !== undefined) bodyFromFlags.status = parsedStatus;\n const parsedEstimatedCost = coerceBodyFlag(opts.estimatedCost, { field: \"estimatedCost\", flag: \"--estimated-cost\", kind: \"number\" }, exitWithError);\n if (parsedEstimatedCost !== undefined) bodyFromFlags.estimatedCost = parsedEstimatedCost;\n const parsedPotentialCost = coerceBodyFlag(opts.potentialCost, { field: \"potentialCost\", flag: \"--potential-cost\", kind: \"number\" }, exitWithError);\n if (parsedPotentialCost !== undefined) bodyFromFlags.potentialCost = parsedPotentialCost;\n const parsedNeed = coerceBodyFlag(opts.need, { field: \"need\", flag: \"--need\", kind: \"number\" }, exitWithError);\n if (parsedNeed !== undefined) bodyFromFlags.need = parsedNeed;\n const parsedUrgency = coerceBodyFlag(opts.urgency, { field: \"urgency\", flag: \"--urgency\", kind: \"number\" }, exitWithError);\n if (parsedUrgency !== undefined) bodyFromFlags.urgency = parsedUrgency;\n const parsedUse = coerceBodyFlag(opts.use, { field: \"use\", flag: \"--use\", kind: \"number\" }, exitWithError);\n if (parsedUse !== undefined) bodyFromFlags.use = parsedUse;\n const parsedLongevity = coerceBodyFlag(opts.longevity, { field: \"longevity\", flag: \"--longevity\", kind: \"number\" }, exitWithError);\n if (parsedLongevity !== undefined) bodyFromFlags.longevity = parsedLongevity;\n const parsedRoi = coerceBodyFlag(opts.roi, { field: \"roi\", flag: \"--roi\", kind: \"number\" }, exitWithError);\n if (parsedRoi !== undefined) bodyFromFlags.roi = parsedRoi;\n const parsedSystemFit = coerceBodyFlag(opts.systemFit, { field: \"systemFit\", flag: \"--system-fit\", kind: \"number\" }, exitWithError);\n if (parsedSystemFit !== undefined) bodyFromFlags.systemFit = parsedSystemFit;\n const parsedEmotionalPull = coerceBodyFlag(opts.emotionalPull, { field: \"emotionalPull\", flag: \"--emotional-pull\", kind: \"number\" }, exitWithError);\n if (parsedEmotionalPull !== undefined) bodyFromFlags.emotionalPull = parsedEmotionalPull;\n const parsedInfrastructureFit = coerceBodyFlag(opts.infrastructureFit, { field: \"infrastructureFit\", flag: \"--infrastructure-fit\", kind: \"number\" }, exitWithError);\n if (parsedInfrastructureFit !== undefined) bodyFromFlags.infrastructureFit = parsedInfrastructureFit;\n const parsedActivationPotential = coerceBodyFlag(opts.activationPotential, { field: \"activationPotential\", flag: \"--activation-potential\", kind: \"number\" }, exitWithError);\n if (parsedActivationPotential !== undefined) bodyFromFlags.activationPotential = parsedActivationPotential;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"scouts\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n scoutsCmd.command(\"update <id>\").description(\"Update scouts\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--description <value>\", \"description\")\n .option(\"--category-id <value>\", \"categoryId\")\n .option(\"--url <value>\", \"url\")\n .option(\"--hero-image <value>\", \"heroImage\")\n .option(\"--priority <value>\", \"priority\")\n .option(\"--status <value>\", \"status\")\n .option(\"--estimated-cost <value>\", \"estimatedCost\")\n .option(\"--potential-cost <value>\", \"potentialCost\")\n .option(\"--need <value>\", \"need\")\n .option(\"--urgency <value>\", \"urgency\")\n .option(\"--use <value>\", \"use\")\n .option(\"--longevity <value>\", \"longevity\")\n .option(\"--roi <value>\", \"roi\")\n .option(\"--system-fit <value>\", \"systemFit\")\n .option(\"--emotional-pull <value>\", \"emotionalPull\")\n .option(\"--infrastructure-fit <value>\", \"infrastructureFit\")\n .option(\"--activation-potential <value>\", \"activationPotential\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"scouts\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDescription = coerceBodyFlag(opts.description, { field: \"description\", flag: \"--description\", kind: \"string\" }, exitWithError);\n if (parsedDescription !== undefined) bodyFromFlags.description = parsedDescription;\n const parsedCategoryId = coerceBodyFlag(opts.categoryId, { field: \"categoryId\", flag: \"--category-id\", kind: \"string\", allowNull: true }, exitWithError);\n if (parsedCategoryId !== undefined) bodyFromFlags.categoryId = parsedCategoryId;\n const parsedUrl = coerceBodyFlag(opts.url, { field: \"url\", flag: \"--url\", kind: \"string\" }, exitWithError);\n if (parsedUrl !== undefined) bodyFromFlags.url = parsedUrl;\n const parsedHeroImage = coerceBodyFlag(opts.heroImage, { field: \"heroImage\", flag: \"--hero-image\", kind: \"string\" }, exitWithError);\n if (parsedHeroImage !== undefined) bodyFromFlags.heroImage = parsedHeroImage;\n const parsedPriority = coerceBodyFlag(opts.priority, { field: \"priority\", flag: \"--priority\", kind: \"string\" }, exitWithError);\n if (parsedPriority !== undefined) bodyFromFlags.priority = parsedPriority;\n const parsedStatus = coerceBodyFlag(opts.status, { field: \"status\", flag: \"--status\", kind: \"string\" }, exitWithError);\n if (parsedStatus !== undefined) bodyFromFlags.status = parsedStatus;\n const parsedEstimatedCost = coerceBodyFlag(opts.estimatedCost, { field: \"estimatedCost\", flag: \"--estimated-cost\", kind: \"number\" }, exitWithError);\n if (parsedEstimatedCost !== undefined) bodyFromFlags.estimatedCost = parsedEstimatedCost;\n const parsedPotentialCost = coerceBodyFlag(opts.potentialCost, { field: \"potentialCost\", flag: \"--potential-cost\", kind: \"number\" }, exitWithError);\n if (parsedPotentialCost !== undefined) bodyFromFlags.potentialCost = parsedPotentialCost;\n const parsedNeed = coerceBodyFlag(opts.need, { field: \"need\", flag: \"--need\", kind: \"number\" }, exitWithError);\n if (parsedNeed !== undefined) bodyFromFlags.need = parsedNeed;\n const parsedUrgency = coerceBodyFlag(opts.urgency, { field: \"urgency\", flag: \"--urgency\", kind: \"number\" }, exitWithError);\n if (parsedUrgency !== undefined) bodyFromFlags.urgency = parsedUrgency;\n const parsedUse = coerceBodyFlag(opts.use, { field: \"use\", flag: \"--use\", kind: \"number\" }, exitWithError);\n if (parsedUse !== undefined) bodyFromFlags.use = parsedUse;\n const parsedLongevity = coerceBodyFlag(opts.longevity, { field: \"longevity\", flag: \"--longevity\", kind: \"number\" }, exitWithError);\n if (parsedLongevity !== undefined) bodyFromFlags.longevity = parsedLongevity;\n const parsedRoi = coerceBodyFlag(opts.roi, { field: \"roi\", flag: \"--roi\", kind: \"number\" }, exitWithError);\n if (parsedRoi !== undefined) bodyFromFlags.roi = parsedRoi;\n const parsedSystemFit = coerceBodyFlag(opts.systemFit, { field: \"systemFit\", flag: \"--system-fit\", kind: \"number\" }, exitWithError);\n if (parsedSystemFit !== undefined) bodyFromFlags.systemFit = parsedSystemFit;\n const parsedEmotionalPull = coerceBodyFlag(opts.emotionalPull, { field: \"emotionalPull\", flag: \"--emotional-pull\", kind: \"number\" }, exitWithError);\n if (parsedEmotionalPull !== undefined) bodyFromFlags.emotionalPull = parsedEmotionalPull;\n const parsedInfrastructureFit = coerceBodyFlag(opts.infrastructureFit, { field: \"infrastructureFit\", flag: \"--infrastructure-fit\", kind: \"number\" }, exitWithError);\n if (parsedInfrastructureFit !== undefined) bodyFromFlags.infrastructureFit = parsedInfrastructureFit;\n const parsedActivationPotential = coerceBodyFlag(opts.activationPotential, { field: \"activationPotential\", flag: \"--activation-potential\", kind: \"number\" }, exitWithError);\n if (parsedActivationPotential !== undefined) bodyFromFlags.activationPotential = parsedActivationPotential;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"scouts/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDescription = coerceBodyFlag(opts.description, { field: \"description\", flag: \"--description\", kind: \"string\" }, exitWithError);\n if (parsedDescription !== undefined) bodyFromFlags.description = parsedDescription;\n const parsedCategoryId = coerceBodyFlag(opts.categoryId, { field: \"categoryId\", flag: \"--category-id\", kind: \"string\", allowNull: true }, exitWithError);\n if (parsedCategoryId !== undefined) bodyFromFlags.categoryId = parsedCategoryId;\n const parsedUrl = coerceBodyFlag(opts.url, { field: \"url\", flag: \"--url\", kind: \"string\" }, exitWithError);\n if (parsedUrl !== undefined) bodyFromFlags.url = parsedUrl;\n const parsedHeroImage = coerceBodyFlag(opts.heroImage, { field: \"heroImage\", flag: \"--hero-image\", kind: \"string\" }, exitWithError);\n if (parsedHeroImage !== undefined) bodyFromFlags.heroImage = parsedHeroImage;\n const parsedPriority = coerceBodyFlag(opts.priority, { field: \"priority\", flag: \"--priority\", kind: \"string\" }, exitWithError);\n if (parsedPriority !== undefined) bodyFromFlags.priority = parsedPriority;\n const parsedStatus = coerceBodyFlag(opts.status, { field: \"status\", flag: \"--status\", kind: \"string\" }, exitWithError);\n if (parsedStatus !== undefined) bodyFromFlags.status = parsedStatus;\n const parsedEstimatedCost = coerceBodyFlag(opts.estimatedCost, { field: \"estimatedCost\", flag: \"--estimated-cost\", kind: \"number\" }, exitWithError);\n if (parsedEstimatedCost !== undefined) bodyFromFlags.estimatedCost = parsedEstimatedCost;\n const parsedPotentialCost = coerceBodyFlag(opts.potentialCost, { field: \"potentialCost\", flag: \"--potential-cost\", kind: \"number\" }, exitWithError);\n if (parsedPotentialCost !== undefined) bodyFromFlags.potentialCost = parsedPotentialCost;\n const parsedNeed = coerceBodyFlag(opts.need, { field: \"need\", flag: \"--need\", kind: \"number\" }, exitWithError);\n if (parsedNeed !== undefined) bodyFromFlags.need = parsedNeed;\n const parsedUrgency = coerceBodyFlag(opts.urgency, { field: \"urgency\", flag: \"--urgency\", kind: \"number\" }, exitWithError);\n if (parsedUrgency !== undefined) bodyFromFlags.urgency = parsedUrgency;\n const parsedUse = coerceBodyFlag(opts.use, { field: \"use\", flag: \"--use\", kind: \"number\" }, exitWithError);\n if (parsedUse !== undefined) bodyFromFlags.use = parsedUse;\n const parsedLongevity = coerceBodyFlag(opts.longevity, { field: \"longevity\", flag: \"--longevity\", kind: \"number\" }, exitWithError);\n if (parsedLongevity !== undefined) bodyFromFlags.longevity = parsedLongevity;\n const parsedRoi = coerceBodyFlag(opts.roi, { field: \"roi\", flag: \"--roi\", kind: \"number\" }, exitWithError);\n if (parsedRoi !== undefined) bodyFromFlags.roi = parsedRoi;\n const parsedSystemFit = coerceBodyFlag(opts.systemFit, { field: \"systemFit\", flag: \"--system-fit\", kind: \"number\" }, exitWithError);\n if (parsedSystemFit !== undefined) bodyFromFlags.systemFit = parsedSystemFit;\n const parsedEmotionalPull = coerceBodyFlag(opts.emotionalPull, { field: \"emotionalPull\", flag: \"--emotional-pull\", kind: \"number\" }, exitWithError);\n if (parsedEmotionalPull !== undefined) bodyFromFlags.emotionalPull = parsedEmotionalPull;\n const parsedInfrastructureFit = coerceBodyFlag(opts.infrastructureFit, { field: \"infrastructureFit\", flag: \"--infrastructure-fit\", kind: \"number\" }, exitWithError);\n if (parsedInfrastructureFit !== undefined) bodyFromFlags.infrastructureFit = parsedInfrastructureFit;\n const parsedActivationPotential = coerceBodyFlag(opts.activationPotential, { field: \"activationPotential\", flag: \"--activation-potential\", kind: \"number\" }, exitWithError);\n if (parsedActivationPotential !== undefined) bodyFromFlags.activationPotential = parsedActivationPotential;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"scouts/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n scoutsCmd.command(\"delete <id>\").description(\"Delete scouts\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"scouts\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"scouts/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"scouts/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- assets ---\n const assetsCmd = program.command(\"assets\").description(\"assets resource\");\n assetsCmd.command(\"list\").description(\"List assets\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--organization-id <value>\", \"Filter by organizationId\")\n .option(\"--scout-id <value>\", \"Filter by scoutId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.organizationId != null) {\n query.organizationId = coerceQueryFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n }\n if (opts.scoutId != null) {\n query.scoutId = coerceQueryFlag(opts.scoutId, { field: \"scoutId\", flag: \"--scout-id\", kind: \"string\" }, exitWithError);\n }\n const res = await apiRequest({ method: \"GET\", path: \"assets\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n assetsCmd.command(\"get <id>\").description(\"Get one assets by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"assets/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n assetsCmd.command(\"create\").description(\"Create assets\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--description <value>\", \"description\")\n .option(\"--organization-id <value>\", \"organizationId\")\n .option(\"--scout-id <value>\", \"scoutId\")\n .option(\"--category-id <value>\", \"categoryId\")\n .option(\"--hero-image <value>\", \"heroImage\")\n .option(\"--condition <value>\", \"condition\")\n .option(\"--satisfaction <value>\", \"satisfaction\")\n .option(\"--usage <value>\", \"usage\")\n .option(\"--friction <value>\", \"friction\")\n .option(\"--lifetime-value <value>\", \"lifetimeValue\")\n .option(\"--acquisition-date <value>\", \"acquisitionDate\")\n .option(\"--cost <value>\", \"cost\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDescription = coerceBodyFlag(opts.description, { field: \"description\", flag: \"--description\", kind: \"string\" }, exitWithError);\n if (parsedDescription !== undefined) bodyFromFlags.description = parsedDescription;\n const parsedOrganizationId = coerceBodyFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n if (parsedOrganizationId !== undefined) bodyFromFlags.organizationId = parsedOrganizationId;\n const parsedScoutId = coerceBodyFlag(opts.scoutId, { field: \"scoutId\", flag: \"--scout-id\", kind: \"string\" }, exitWithError);\n if (parsedScoutId !== undefined) bodyFromFlags.scoutId = parsedScoutId;\n const parsedCategoryId = coerceBodyFlag(opts.categoryId, { field: \"categoryId\", flag: \"--category-id\", kind: \"string\" }, exitWithError);\n if (parsedCategoryId !== undefined) bodyFromFlags.categoryId = parsedCategoryId;\n const parsedHeroImage = coerceBodyFlag(opts.heroImage, { field: \"heroImage\", flag: \"--hero-image\", kind: \"string\" }, exitWithError);\n if (parsedHeroImage !== undefined) bodyFromFlags.heroImage = parsedHeroImage;\n const parsedCondition = coerceBodyFlag(opts.condition, { field: \"condition\", flag: \"--condition\", kind: \"number\" }, exitWithError);\n if (parsedCondition !== undefined) bodyFromFlags.condition = parsedCondition;\n const parsedSatisfaction = coerceBodyFlag(opts.satisfaction, { field: \"satisfaction\", flag: \"--satisfaction\", kind: \"number\" }, exitWithError);\n if (parsedSatisfaction !== undefined) bodyFromFlags.satisfaction = parsedSatisfaction;\n const parsedUsage = coerceBodyFlag(opts.usage, { field: \"usage\", flag: \"--usage\", kind: \"number\" }, exitWithError);\n if (parsedUsage !== undefined) bodyFromFlags.usage = parsedUsage;\n const parsedFriction = coerceBodyFlag(opts.friction, { field: \"friction\", flag: \"--friction\", kind: \"number\" }, exitWithError);\n if (parsedFriction !== undefined) bodyFromFlags.friction = parsedFriction;\n const parsedLifetimeValue = coerceBodyFlag(opts.lifetimeValue, { field: \"lifetimeValue\", flag: \"--lifetime-value\", kind: \"number\" }, exitWithError);\n if (parsedLifetimeValue !== undefined) bodyFromFlags.lifetimeValue = parsedLifetimeValue;\n const parsedAcquisitionDate = coerceBodyFlag(opts.acquisitionDate, { field: \"acquisitionDate\", flag: \"--acquisition-date\", kind: \"number\" }, exitWithError);\n if (parsedAcquisitionDate !== undefined) bodyFromFlags.acquisitionDate = parsedAcquisitionDate;\n const parsedCost = coerceBodyFlag(opts.cost, { field: \"cost\", flag: \"--cost\", kind: \"number\" }, exitWithError);\n if (parsedCost !== undefined) bodyFromFlags.cost = parsedCost;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"assets\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n assetsCmd.command(\"update <id>\").description(\"Update assets\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--description <value>\", \"description\")\n .option(\"--scout-id <value>\", \"scoutId\")\n .option(\"--category-id <value>\", \"categoryId\")\n .option(\"--hero-image <value>\", \"heroImage\")\n .option(\"--condition <value>\", \"condition\")\n .option(\"--satisfaction <value>\", \"satisfaction\")\n .option(\"--usage <value>\", \"usage\")\n .option(\"--friction <value>\", \"friction\")\n .option(\"--lifetime-value <value>\", \"lifetimeValue\")\n .option(\"--acquisition-date <value>\", \"acquisitionDate\")\n .option(\"--cost <value>\", \"cost\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"assets\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDescription = coerceBodyFlag(opts.description, { field: \"description\", flag: \"--description\", kind: \"string\" }, exitWithError);\n if (parsedDescription !== undefined) bodyFromFlags.description = parsedDescription;\n const parsedScoutId = coerceBodyFlag(opts.scoutId, { field: \"scoutId\", flag: \"--scout-id\", kind: \"string\", allowNull: true }, exitWithError);\n if (parsedScoutId !== undefined) bodyFromFlags.scoutId = parsedScoutId;\n const parsedCategoryId = coerceBodyFlag(opts.categoryId, { field: \"categoryId\", flag: \"--category-id\", kind: \"string\", allowNull: true }, exitWithError);\n if (parsedCategoryId !== undefined) bodyFromFlags.categoryId = parsedCategoryId;\n const parsedHeroImage = coerceBodyFlag(opts.heroImage, { field: \"heroImage\", flag: \"--hero-image\", kind: \"string\" }, exitWithError);\n if (parsedHeroImage !== undefined) bodyFromFlags.heroImage = parsedHeroImage;\n const parsedCondition = coerceBodyFlag(opts.condition, { field: \"condition\", flag: \"--condition\", kind: \"number\" }, exitWithError);\n if (parsedCondition !== undefined) bodyFromFlags.condition = parsedCondition;\n const parsedSatisfaction = coerceBodyFlag(opts.satisfaction, { field: \"satisfaction\", flag: \"--satisfaction\", kind: \"number\" }, exitWithError);\n if (parsedSatisfaction !== undefined) bodyFromFlags.satisfaction = parsedSatisfaction;\n const parsedUsage = coerceBodyFlag(opts.usage, { field: \"usage\", flag: \"--usage\", kind: \"number\" }, exitWithError);\n if (parsedUsage !== undefined) bodyFromFlags.usage = parsedUsage;\n const parsedFriction = coerceBodyFlag(opts.friction, { field: \"friction\", flag: \"--friction\", kind: \"number\" }, exitWithError);\n if (parsedFriction !== undefined) bodyFromFlags.friction = parsedFriction;\n const parsedLifetimeValue = coerceBodyFlag(opts.lifetimeValue, { field: \"lifetimeValue\", flag: \"--lifetime-value\", kind: \"number\" }, exitWithError);\n if (parsedLifetimeValue !== undefined) bodyFromFlags.lifetimeValue = parsedLifetimeValue;\n const parsedAcquisitionDate = coerceBodyFlag(opts.acquisitionDate, { field: \"acquisitionDate\", flag: \"--acquisition-date\", kind: \"number\" }, exitWithError);\n if (parsedAcquisitionDate !== undefined) bodyFromFlags.acquisitionDate = parsedAcquisitionDate;\n const parsedCost = coerceBodyFlag(opts.cost, { field: \"cost\", flag: \"--cost\", kind: \"number\" }, exitWithError);\n if (parsedCost !== undefined) bodyFromFlags.cost = parsedCost;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"assets/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDescription = coerceBodyFlag(opts.description, { field: \"description\", flag: \"--description\", kind: \"string\" }, exitWithError);\n if (parsedDescription !== undefined) bodyFromFlags.description = parsedDescription;\n const parsedScoutId = coerceBodyFlag(opts.scoutId, { field: \"scoutId\", flag: \"--scout-id\", kind: \"string\", allowNull: true }, exitWithError);\n if (parsedScoutId !== undefined) bodyFromFlags.scoutId = parsedScoutId;\n const parsedCategoryId = coerceBodyFlag(opts.categoryId, { field: \"categoryId\", flag: \"--category-id\", kind: \"string\", allowNull: true }, exitWithError);\n if (parsedCategoryId !== undefined) bodyFromFlags.categoryId = parsedCategoryId;\n const parsedHeroImage = coerceBodyFlag(opts.heroImage, { field: \"heroImage\", flag: \"--hero-image\", kind: \"string\" }, exitWithError);\n if (parsedHeroImage !== undefined) bodyFromFlags.heroImage = parsedHeroImage;\n const parsedCondition = coerceBodyFlag(opts.condition, { field: \"condition\", flag: \"--condition\", kind: \"number\" }, exitWithError);\n if (parsedCondition !== undefined) bodyFromFlags.condition = parsedCondition;\n const parsedSatisfaction = coerceBodyFlag(opts.satisfaction, { field: \"satisfaction\", flag: \"--satisfaction\", kind: \"number\" }, exitWithError);\n if (parsedSatisfaction !== undefined) bodyFromFlags.satisfaction = parsedSatisfaction;\n const parsedUsage = coerceBodyFlag(opts.usage, { field: \"usage\", flag: \"--usage\", kind: \"number\" }, exitWithError);\n if (parsedUsage !== undefined) bodyFromFlags.usage = parsedUsage;\n const parsedFriction = coerceBodyFlag(opts.friction, { field: \"friction\", flag: \"--friction\", kind: \"number\" }, exitWithError);\n if (parsedFriction !== undefined) bodyFromFlags.friction = parsedFriction;\n const parsedLifetimeValue = coerceBodyFlag(opts.lifetimeValue, { field: \"lifetimeValue\", flag: \"--lifetime-value\", kind: \"number\" }, exitWithError);\n if (parsedLifetimeValue !== undefined) bodyFromFlags.lifetimeValue = parsedLifetimeValue;\n const parsedAcquisitionDate = coerceBodyFlag(opts.acquisitionDate, { field: \"acquisitionDate\", flag: \"--acquisition-date\", kind: \"number\" }, exitWithError);\n if (parsedAcquisitionDate !== undefined) bodyFromFlags.acquisitionDate = parsedAcquisitionDate;\n const parsedCost = coerceBodyFlag(opts.cost, { field: \"cost\", flag: \"--cost\", kind: \"number\" }, exitWithError);\n if (parsedCost !== undefined) bodyFromFlags.cost = parsedCost;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"assets/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n assetsCmd.command(\"delete <id>\").description(\"Delete assets\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"assets\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"assets/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"assets/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- categories ---\n const categoriesCmd = program.command(\"categories\").description(\"categories resource\");\n categoriesCmd.command(\"list\").description(\"List categories\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--organization-id <value>\", \"Filter by organizationId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.organizationId != null) {\n query.organizationId = coerceQueryFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n }\n const res = await apiRequest({ method: \"GET\", path: \"categories\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n categoriesCmd.command(\"get <id>\").description(\"Get one categories by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n categoriesCmd.command(\"create\").description(\"Create categories\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--organization-id <value>\", \"organizationId\")\n .option(\"--default-bucket <value>\", \"defaultBucket\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedOrganizationId = coerceBodyFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n if (parsedOrganizationId !== undefined) bodyFromFlags.organizationId = parsedOrganizationId;\n const parsedDefaultBucket = coerceBodyFlag(opts.defaultBucket, { field: \"defaultBucket\", flag: \"--default-bucket\", kind: \"string\" }, exitWithError);\n if (parsedDefaultBucket !== undefined) bodyFromFlags.defaultBucket = parsedDefaultBucket;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"categories\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n categoriesCmd.command(\"update <id>\").description(\"Update categories\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--default-bucket <value>\", \"defaultBucket\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"categories\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDefaultBucket = coerceBodyFlag(opts.defaultBucket, { field: \"defaultBucket\", flag: \"--default-bucket\", kind: \"string\" }, exitWithError);\n if (parsedDefaultBucket !== undefined) bodyFromFlags.defaultBucket = parsedDefaultBucket;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"categories/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedDefaultBucket = coerceBodyFlag(opts.defaultBucket, { field: \"defaultBucket\", flag: \"--default-bucket\", kind: \"string\" }, exitWithError);\n if (parsedDefaultBucket !== undefined) bodyFromFlags.defaultBucket = parsedDefaultBucket;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n categoriesCmd.command(\"delete <id>\").description(\"Delete categories\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"categories\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"categories/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- labels ---\n const labelsCmd = program.command(\"labels\").description(\"labels resource\");\n labelsCmd.command(\"list\").description(\"List labels\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--organization-id <value>\", \"Filter by organizationId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.organizationId != null) {\n query.organizationId = coerceQueryFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n }\n const res = await apiRequest({ method: \"GET\", path: \"labels\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n labelsCmd.command(\"get <id>\").description(\"Get one labels by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"labels/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n labelsCmd.command(\"create\").description(\"Create labels\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--organization-id <value>\", \"organizationId\")\n .option(\"--colour <value>\", \"colour\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedOrganizationId = coerceBodyFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n if (parsedOrganizationId !== undefined) bodyFromFlags.organizationId = parsedOrganizationId;\n const parsedColour = coerceBodyFlag(opts.colour, { field: \"colour\", flag: \"--colour\", kind: \"string\" }, exitWithError);\n if (parsedColour !== undefined) bodyFromFlags.colour = parsedColour;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"labels\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n labelsCmd.command(\"update <id>\").description(\"Update labels\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--colour <value>\", \"colour\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"labels\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedColour = coerceBodyFlag(opts.colour, { field: \"colour\", flag: \"--colour\", kind: \"string\" }, exitWithError);\n if (parsedColour !== undefined) bodyFromFlags.colour = parsedColour;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"labels/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedColour = coerceBodyFlag(opts.colour, { field: \"colour\", flag: \"--colour\", kind: \"string\" }, exitWithError);\n if (parsedColour !== undefined) bodyFromFlags.colour = parsedColour;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"labels/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n labelsCmd.command(\"delete <id>\").description(\"Delete labels\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"labels\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"labels/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"labels/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- views ---\n const viewsCmd = program.command(\"views\").description(\"views resource\");\n viewsCmd.command(\"list\").description(\"List views\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--organization-id <value>\", \"Filter by organizationId\")\n .option(\"--project-id <value>\", \"Filter by projectId\")\n .option(\"--entity-type <value>\", \"Filter by entityType\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.organizationId != null) {\n query.organizationId = coerceQueryFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n }\n if (opts.projectId != null) {\n query.projectId = coerceQueryFlag(opts.projectId, { field: \"projectId\", flag: \"--project-id\", kind: \"string\" }, exitWithError);\n }\n if (opts.entityType != null) {\n query.entityType = coerceQueryFlag(opts.entityType, { field: \"entityType\", flag: \"--entity-type\", kind: \"string\" }, exitWithError);\n }\n const res = await apiRequest({ method: \"GET\", path: \"views\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n viewsCmd.command(\"get <id>\").description(\"Get one views by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"views/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n viewsCmd.command(\"create\").description(\"Create views\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--organization-id <value>\", \"organizationId\")\n .option(\"--project-id <value>\", \"projectId\")\n .option(\"--entity-type <value>\", \"entityType\")\n .option(\"--config <value>\", \"config\")\n .option(\"--is-default <value>\", \"isDefault\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedOrganizationId = coerceBodyFlag(opts.organizationId, { field: \"organizationId\", flag: \"--organization-id\", kind: \"string\" }, exitWithError);\n if (parsedOrganizationId !== undefined) bodyFromFlags.organizationId = parsedOrganizationId;\n const parsedProjectId = coerceBodyFlag(opts.projectId, { field: \"projectId\", flag: \"--project-id\", kind: \"string\" }, exitWithError);\n if (parsedProjectId !== undefined) bodyFromFlags.projectId = parsedProjectId;\n const parsedEntityType = coerceBodyFlag(opts.entityType, { field: \"entityType\", flag: \"--entity-type\", kind: \"string\" }, exitWithError);\n if (parsedEntityType !== undefined) bodyFromFlags.entityType = parsedEntityType;\n const parsedConfig = coerceBodyFlag(opts.config, { field: \"config\", flag: \"--config\", kind: \"string\" }, exitWithError);\n if (parsedConfig !== undefined) bodyFromFlags.config = parsedConfig;\n const parsedIsDefault = coerceBodyFlag(opts.isDefault, { field: \"isDefault\", flag: \"--is-default\", kind: \"boolean\" }, exitWithError);\n if (parsedIsDefault !== undefined) bodyFromFlags.isDefault = parsedIsDefault;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"views\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n viewsCmd.command(\"update <id>\").description(\"Update views\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--project-id <value>\", \"projectId\")\n .option(\"--config <value>\", \"config\")\n .option(\"--is-default <value>\", \"isDefault\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"views\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedProjectId = coerceBodyFlag(opts.projectId, { field: \"projectId\", flag: \"--project-id\", kind: \"string\" }, exitWithError);\n if (parsedProjectId !== undefined) bodyFromFlags.projectId = parsedProjectId;\n const parsedConfig = coerceBodyFlag(opts.config, { field: \"config\", flag: \"--config\", kind: \"string\" }, exitWithError);\n if (parsedConfig !== undefined) bodyFromFlags.config = parsedConfig;\n const parsedIsDefault = coerceBodyFlag(opts.isDefault, { field: \"isDefault\", flag: \"--is-default\", kind: \"boolean\" }, exitWithError);\n if (parsedIsDefault !== undefined) bodyFromFlags.isDefault = parsedIsDefault;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"views/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedName = coerceBodyFlag(opts.name, { field: \"name\", flag: \"--name\", kind: \"string\" }, exitWithError);\n if (parsedName !== undefined) bodyFromFlags.name = parsedName;\n const parsedProjectId = coerceBodyFlag(opts.projectId, { field: \"projectId\", flag: \"--project-id\", kind: \"string\" }, exitWithError);\n if (parsedProjectId !== undefined) bodyFromFlags.projectId = parsedProjectId;\n const parsedConfig = coerceBodyFlag(opts.config, { field: \"config\", flag: \"--config\", kind: \"string\" }, exitWithError);\n if (parsedConfig !== undefined) bodyFromFlags.config = parsedConfig;\n const parsedIsDefault = coerceBodyFlag(opts.isDefault, { field: \"isDefault\", flag: \"--is-default\", kind: \"boolean\" }, exitWithError);\n if (parsedIsDefault !== undefined) bodyFromFlags.isDefault = parsedIsDefault;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"views/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n viewsCmd.command(\"delete <id>\").description(\"Delete views\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"views\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (itemId) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"views/\" + encodeURIComponent(itemId), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (itemId, ok, status, _data, err) => ok ? { _id: itemId, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"views/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- comments ---\n const commentsCmd = program.command(\"comments\").description(\"comments resource\");\n commentsCmd.command(\"list\").description(\"List comments\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--entity-type <value>\", \"Filter by entityType\")\n .option(\"--entity-id <value>\", \"Filter by entityId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.entityType != null) {\n query.entityType = coerceQueryFlag(opts.entityType, { field: \"entityType\", flag: \"--entity-type\", kind: \"string\" }, exitWithError);\n }\n if (opts.entityId != null) {\n query.entityId = coerceQueryFlag(opts.entityId, { field: \"entityId\", flag: \"--entity-id\", kind: \"string\" }, exitWithError);\n }\n const res = await apiRequest({ method: \"GET\", path: \"comments\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n commentsCmd.command(\"create\").description(\"Create comments\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--entity-type <value>\", \"entityType\")\n .option(\"--entity-id <value>\", \"entityId\")\n .option(\"--text <value>\", \"body\")\n .option(\"--parent-comment-id <value>\", \"parentCommentId\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n const parsedEntityType = coerceBodyFlag(opts.entityType, { field: \"entityType\", flag: \"--entity-type\", kind: \"string\" }, exitWithError);\n if (parsedEntityType !== undefined) bodyFromFlags.entityType = parsedEntityType;\n const parsedEntityId = coerceBodyFlag(opts.entityId, { field: \"entityId\", flag: \"--entity-id\", kind: \"string\" }, exitWithError);\n if (parsedEntityId !== undefined) bodyFromFlags.entityId = parsedEntityId;\n const parsedBody = coerceBodyFlag(opts.text, { field: \"body\", flag: \"--text\", kind: \"string\" }, exitWithError);\n if (parsedBody !== undefined) bodyFromFlags.body = parsedBody;\n const parsedParentCommentId = coerceBodyFlag(opts.parentCommentId, { field: \"parentCommentId\", flag: \"--parent-comment-id\", kind: \"string\" }, exitWithError);\n if (parsedParentCommentId !== undefined) bodyFromFlags.parentCommentId = parsedParentCommentId;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"comments\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n\n}"],"mappings":"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","names":["r","data","bodyFromFlags","parsedName","parsedDescription","parsedPriority","body","res","parsedProjectId","parsedStatus","parsedCurrentStrength","parsedCategoryId","parsedUrl","parsedHeroImage","parsedEstimatedCost","parsedPotentialCost","parsedNeed","parsedUrgency","parsedUse","parsedLongevity","parsedRoi","parsedSystemFit","parsedEmotionalPull","parsedInfrastructureFit","parsedActivationPotential","parsedScoutId","parsedCondition","parsedSatisfaction","parsedUsage","parsedFriction","parsedLifetimeValue","parsedAcquisitionDate","parsedCost","parsedDefaultBucket","parsedColour","parsedConfig","parsedIsDefault"]}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
createProgramForCLI,
|
|
4
|
+
syncRootOptsFromCommand
|
|
5
|
+
} from "./chunk-GWWE2AMO.js";
|
|
6
|
+
import "./chunk-HJFKOMTC.js";
|
|
7
|
+
import {
|
|
8
|
+
resolveToken
|
|
9
|
+
} from "./chunk-GZ4DXDQM.js";
|
|
10
|
+
|
|
11
|
+
// src/shell.ts
|
|
12
|
+
import readline from "readline/promises";
|
|
13
|
+
import { stdin as input, stdout as output } from "process";
|
|
14
|
+
import { CommanderError } from "commander";
|
|
15
|
+
function splitInputLine(line) {
|
|
16
|
+
const tokens = [];
|
|
17
|
+
let current = "";
|
|
18
|
+
let inSingle = false;
|
|
19
|
+
let inDouble = false;
|
|
20
|
+
for (let i = 0; i < line.length; i++) {
|
|
21
|
+
const ch = line[i];
|
|
22
|
+
if (ch === "'" && !inDouble) {
|
|
23
|
+
inSingle = !inSingle;
|
|
24
|
+
} else if (ch === '"' && !inSingle) {
|
|
25
|
+
inDouble = !inDouble;
|
|
26
|
+
} else if (ch === " " && !inSingle && !inDouble) {
|
|
27
|
+
if (current.length > 0) {
|
|
28
|
+
tokens.push(current);
|
|
29
|
+
current = "";
|
|
30
|
+
}
|
|
31
|
+
} else {
|
|
32
|
+
current += ch;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (current.length > 0) tokens.push(current);
|
|
36
|
+
return tokens;
|
|
37
|
+
}
|
|
38
|
+
function printWelcome() {
|
|
39
|
+
console.log("");
|
|
40
|
+
console.log("Pilfer CLI");
|
|
41
|
+
console.log("");
|
|
42
|
+
console.log(" whoami verify token and current user");
|
|
43
|
+
console.log(" status core resource counts");
|
|
44
|
+
console.log(" projects list list projects");
|
|
45
|
+
console.log(" scouts list list scouts");
|
|
46
|
+
console.log(" sources list --scout-id <id> list sources for a scout");
|
|
47
|
+
console.log(" config show inspect saved CLI host and token state");
|
|
48
|
+
console.log(" help full command list");
|
|
49
|
+
console.log(" exit / quit leave");
|
|
50
|
+
console.log("");
|
|
51
|
+
}
|
|
52
|
+
async function interactiveLoop(program) {
|
|
53
|
+
printWelcome();
|
|
54
|
+
program.exitOverride();
|
|
55
|
+
program.showSuggestionAfterError(false);
|
|
56
|
+
program.configureOutput({
|
|
57
|
+
writeOut: (str) => process.stdout.write(str),
|
|
58
|
+
writeErr: (str) => {
|
|
59
|
+
const trimmed = str.trim();
|
|
60
|
+
if (trimmed.length > 0) console.error(trimmed);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
for (; ; ) {
|
|
64
|
+
const rl = readline.createInterface({ input, output });
|
|
65
|
+
let line;
|
|
66
|
+
try {
|
|
67
|
+
line = (await rl.question("pilfer> ")).trim();
|
|
68
|
+
} catch {
|
|
69
|
+
rl.close();
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
rl.close();
|
|
73
|
+
if (line.length === 0) continue;
|
|
74
|
+
if (line === "exit" || line === "quit" || line === "q") break;
|
|
75
|
+
const tokens = splitInputLine(line);
|
|
76
|
+
try {
|
|
77
|
+
await program.parseAsync(["node", "pilfer", ...tokens]);
|
|
78
|
+
} catch (error) {
|
|
79
|
+
if (error instanceof CommanderError && (error.code === "commander.helpDisplayed" || error.code === "commander.help" || error.code === "commander.version")) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// src/index.ts
|
|
87
|
+
createProgramForCLI().then(async (program) => {
|
|
88
|
+
const argv = process.argv.slice(2);
|
|
89
|
+
if (argv.length === 0) {
|
|
90
|
+
const token = resolveToken();
|
|
91
|
+
if (!token) {
|
|
92
|
+
console.log("Welcome to the Pilfer CLI!");
|
|
93
|
+
console.log("");
|
|
94
|
+
console.log("No API token found. Get started:");
|
|
95
|
+
console.log(" pilfer login # enter your token interactively");
|
|
96
|
+
console.log(" pilfer login <token> # pass token directly");
|
|
97
|
+
console.log("");
|
|
98
|
+
console.log("Or set the PILFER_API_TOKEN environment variable.");
|
|
99
|
+
console.log("");
|
|
100
|
+
console.log("Get your API token at: https://usepilfer.com (Settings > API Keys)");
|
|
101
|
+
process.exit(0);
|
|
102
|
+
}
|
|
103
|
+
await interactiveLoop(program);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
await program.parseAsync(process.argv);
|
|
107
|
+
}).catch((err) => {
|
|
108
|
+
if (err?.code === "commander.helpDisplayed" || err?.code === "commander.version") {
|
|
109
|
+
process.exit(0);
|
|
110
|
+
}
|
|
111
|
+
console.error(err);
|
|
112
|
+
process.exit(2);
|
|
113
|
+
});
|
|
114
|
+
export {
|
|
115
|
+
syncRootOptsFromCommand
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shell.ts","../src/index.ts"],"sourcesContent":["import readline from \"node:readline/promises\";\nimport { stdin as input, stdout as output } from \"node:process\";\nimport { Command, CommanderError } from \"commander\";\n\nfunction splitInputLine(line: string): string[] {\n const tokens: string[] = [];\n let current = \"\";\n let inSingle = false;\n let inDouble = false;\n for (let i = 0; i < line.length; i++) {\n const ch = line[i]!;\n if (ch === \"'\" && !inDouble) {\n inSingle = !inSingle;\n } else if (ch === '\"' && !inSingle) {\n inDouble = !inDouble;\n } else if (ch === \" \" && !inSingle && !inDouble) {\n if (current.length > 0) {\n tokens.push(current);\n current = \"\";\n }\n } else {\n current += ch;\n }\n }\n if (current.length > 0) tokens.push(current);\n return tokens;\n}\n\nfunction printWelcome(): void {\n console.log(\"\");\n console.log(\"Pilfer CLI\");\n console.log(\"\");\n console.log(\" whoami verify token and current user\");\n console.log(\" status core resource counts\");\n console.log(\" projects list list projects\");\n console.log(\" scouts list list scouts\");\n console.log(\" sources list --scout-id <id> list sources for a scout\");\n console.log(\" config show inspect saved CLI host and token state\");\n console.log(\" help full command list\");\n console.log(\" exit / quit leave\");\n console.log(\"\");\n}\n\nexport async function interactiveLoop(program: Command): Promise<void> {\n printWelcome();\n\n program.exitOverride();\n program.showSuggestionAfterError(false);\n program.configureOutput({\n writeOut: (str) => process.stdout.write(str),\n writeErr: (str) => {\n const trimmed = str.trim();\n if (trimmed.length > 0) console.error(trimmed);\n },\n });\n\n for (;;) {\n const rl = readline.createInterface({ input, output });\n let line: string;\n try {\n line = (await rl.question(\"pilfer> \")).trim();\n } catch {\n rl.close();\n break;\n }\n rl.close();\n\n if (line.length === 0) continue;\n if (line === \"exit\" || line === \"quit\" || line === \"q\") break;\n const tokens = splitInputLine(line);\n\n try {\n await program.parseAsync([\"node\", \"pilfer\", ...tokens]);\n } catch (error) {\n if (\n error instanceof CommanderError &&\n (error.code === \"commander.helpDisplayed\" ||\n error.code === \"commander.help\" ||\n error.code === \"commander.version\")\n ) {\n continue;\n }\n }\n }\n}\n","import { createProgramForCLI, syncRootOptsFromCommand } from \"./build-program.js\";\nimport { interactiveLoop } from \"./shell.js\";\nimport { resolveToken } from \"./lib/auth.js\";\n\nexport { syncRootOptsFromCommand };\n\ncreateProgramForCLI()\n .then(async (program) => {\n const argv = process.argv.slice(2);\n if (argv.length === 0) {\n const token = resolveToken();\n if (!token) {\n console.log(\"Welcome to the Pilfer CLI!\");\n console.log(\"\");\n console.log(\"No API token found. Get started:\");\n console.log(\" pilfer login # enter your token interactively\");\n console.log(\" pilfer login <token> # pass token directly\");\n console.log(\"\");\n console.log(\"Or set the PILFER_API_TOKEN environment variable.\");\n console.log(\"\");\n console.log(\"Get your API token at: https://usepilfer.com (Settings > API Keys)\");\n process.exit(0);\n }\n await interactiveLoop(program);\n return;\n }\n await program.parseAsync(process.argv);\n })\n .catch((err) => {\n if (\n err?.code === \"commander.helpDisplayed\" ||\n err?.code === \"commander.version\"\n ) {\n process.exit(0);\n }\n console.error(err);\n process.exit(2);\n });\n"],"mappings":"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","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@getpilfer/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"private": false,
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/interfacingresearchlaboratory/pilfer",
|
|
9
|
+
"directory": "packages/cli"
|
|
10
|
+
},
|
|
11
|
+
"bin": {
|
|
12
|
+
"pilfer": "dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"exports": {
|
|
15
|
+
".": "./dist/index.js",
|
|
16
|
+
"./program": "./dist/build-program.js"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist",
|
|
20
|
+
"SKILL.md"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsup",
|
|
24
|
+
"generate": "tsx scripts/generate-from-openapi.ts",
|
|
25
|
+
"test": "tsx --test src/lib/client.test.ts src/lib/flag-coercion.test.ts",
|
|
26
|
+
"check-types": "tsc --noEmit",
|
|
27
|
+
"prepublishOnly": "pnpm run build"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"commander": "^12.1.0"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/node": "^22",
|
|
34
|
+
"tsup": "^8.3.5",
|
|
35
|
+
"tsx": "^4.19.2",
|
|
36
|
+
"typescript": "^5",
|
|
37
|
+
"yaml": "^2.6.1"
|
|
38
|
+
},
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=18"
|
|
41
|
+
},
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public"
|
|
44
|
+
}
|
|
45
|
+
}
|