@runcofactor/cli 0.16.0 → 0.18.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/dist/{account-ZMV7NEFM.js → account-ZSM2Q3RB.js} +4 -4
- package/dist/{api-catalog-6HNOGVPA.js → api-catalog-MMPFWS52.js} +4 -4
- package/dist/{attachment-QAHR54HQ.js → attachment-NSYL5X3S.js} +4 -4
- package/dist/{augmentor-7T3L6ZR4.js → augmentor-LSJLMJYP.js} +4 -4
- package/dist/{auth-DURHUZDW.js → auth-OYF5A4BY.js} +4 -2
- package/dist/{chunk-RGDIVW3O.js → chunk-2R6544Z3.js} +2 -2
- package/dist/{chunk-AI3Y3AZH.js → chunk-7OO3RJYR.js} +1396 -185
- package/dist/chunk-7OO3RJYR.js.map +1 -0
- package/dist/{chunk-4NRDONSC.js → chunk-A6TH5VUI.js} +209 -79
- package/dist/chunk-A6TH5VUI.js.map +1 -0
- package/dist/{chunk-CEXV3MOC.js → chunk-E2FUQJVO.js} +4 -4
- package/dist/{chunk-D6AVOPOS.js → chunk-GFP4UEUT.js} +3 -3
- package/dist/{chunk-G5SXUXSU.js → chunk-H7ZML5QL.js} +2 -2
- package/dist/{chunk-LFFWD5JZ.js → chunk-IHCPMYKU.js} +3 -3
- package/dist/{chunk-UAJUZLDE.js → chunk-PVWG3V62.js} +3 -3
- package/dist/{chunk-3CZU7XCS.js → chunk-PWZ4ULCB.js} +20 -14
- package/dist/chunk-PWZ4ULCB.js.map +1 -0
- package/dist/{chunk-A4ISG3VX.js → chunk-U7OMQJ7V.js} +52 -4
- package/dist/chunk-U7OMQJ7V.js.map +1 -0
- package/dist/{chunk-DT2CEH2V.js → chunk-VHVOTGBQ.js} +3 -3
- package/dist/{chunk-IGHDIWZU.js → chunk-VYTIJ6HJ.js} +17 -2
- package/dist/{chunk-IGHDIWZU.js.map → chunk-VYTIJ6HJ.js.map} +1 -1
- package/dist/{credential-X6QKX473.js → credential-WOATCWOU.js} +4 -4
- package/dist/{credential-template-GD3D4MBI.js → credential-template-Q3DQE2AH.js} +4 -4
- package/dist/{debug-workflow-AAEOAME2.js → debug-workflow-ZNP5XZQF.js} +4 -4
- package/dist/{dist-QLTVBUMD.js → dist-4COOAKY3.js} +22 -2
- package/dist/{docs-BVUEXBY3.js → docs-XVU4LA7G.js} +4 -4
- package/dist/{doctor-RHMKD4W5.js → doctor-PGNHD3TI.js} +3 -3
- package/dist/{environment-WE7VVE6I.js → environment-MRDNWU47.js} +4 -4
- package/dist/{feature-flag-VJO2TJFT.js → feature-flag-D3DQZ6DX.js} +4 -4
- package/dist/index.js +51 -48
- package/dist/index.js.map +1 -1
- package/dist/{init-RQHHKJJD.js → init-DHWKUYIR.js} +4 -4
- package/dist/{install-CQLHNZ6U.js → install-DMEFGQHD.js} +4 -4
- package/dist/{issues-HK2JA5JS.js → issues-E4YQ4DVC.js} +4 -4
- package/dist/{knobs-ETJAV6YM.js → knobs-NA6SPLHX.js} +4 -4
- package/dist/{list-F6DGGW3Z.js → list-GJNGFQMC.js} +4 -4
- package/dist/{local-CMAY54I5.js → local-NSKOZHHA.js} +6 -6
- package/dist/{login-6CKG664C.js → login-AMSRVPXG.js} +4 -4
- package/dist/{mcp-GC2WOOZO.js → mcp-57VVZTXM.js} +5 -5
- package/dist/{metrics-IXICURAA.js → metrics-DM4YQQZN.js} +4 -4
- package/dist/{product-BUJWPYKB.js → product-WGOLTBRI.js} +4 -4
- package/dist/{property-4EXPWRNT.js → property-B7QMGLVW.js} +4 -4
- package/dist/{psql-XGLBI6T7.js → psql-4JHPJ2CO.js} +3 -3
- package/dist/{record-HL4QA7OX.js → record-RWVGZZSW.js} +5 -5
- package/dist/{redis-VJGCUJPV.js → redis-N44ZZ6VB.js} +3 -3
- package/dist/{release-2SMK5Y3V.js → release-R7GKLEAI.js} +4 -4
- package/dist/{sandbox-ORAPKOH3.js → sandbox-6D54ZQCG.js} +5 -5
- package/dist/{scenarios-DM5FDCAF.js → scenarios-WUUUKP2S.js} +4 -4
- package/dist/{session-X6IYGWYG.js → session-GDCMTNB3.js} +6 -6
- package/dist/{skill-ZU5V2EE5.js → skill-3SP7MAA4.js} +153 -2
- package/dist/skill-3SP7MAA4.js.map +1 -0
- package/dist/skills/optimize-cache/SKILL.md +25 -0
- package/dist/{spec-KO5QD6AY.js → spec-ESPA3H26.js} +3 -3
- package/dist/{src-DSD34JIX.js → src-5YXGM2KB.js} +18 -2
- package/dist/src-5YXGM2KB.js.map +1 -0
- package/dist/{src-PDYXACRP.js → src-B7CPYFLS.js} +4 -2
- package/dist/{src-HTGNKBUF.js → src-GRO2QR7U.js} +61 -23
- package/dist/{src-HTGNKBUF.js.map → src-GRO2QR7U.js.map} +1 -1
- package/dist/{start-2ECN4LX5.js → start-KDDRLUFN.js} +4 -4
- package/dist/{tag-R5I72HJ6.js → tag-DAGHQZAR.js} +5 -5
- package/dist/{task-V3JMSJIM.js → task-PRR75HI4.js} +4 -4
- package/dist/{test-suite-NOYVK6YX.js → test-suite-O3UY7EER.js} +6 -6
- package/dist/{trace-NOYEKNO4.js → trace-7LRHSPWN.js} +4 -4
- package/dist/{triage-4RFATHBE.js → triage-2BKUBMMX.js} +5 -5
- package/dist/{utilities-3WMXE743.js → utilities-O3OO64T5.js} +4 -4
- package/dist/{workflow-DC7WOTTW.js → workflow-5BFRS4CE.js} +10 -11
- package/dist/workflow-5BFRS4CE.js.map +1 -0
- package/dist/{workflow-cache-SDSI6SMF.js → workflow-cache-VVP3SPFM.js} +7 -7
- package/dist/{workflow-debug-6UQYP67Q.js → workflow-debug-XGOHNZ4E.js} +7 -7
- package/dist/{workflow-proposals-67AVGMHX.js → workflow-proposals-PGURJ6ZI.js} +4 -4
- package/package.json +5 -5
- package/dist/chunk-3CZU7XCS.js.map +0 -1
- package/dist/chunk-4NRDONSC.js.map +0 -1
- package/dist/chunk-A4ISG3VX.js.map +0 -1
- package/dist/chunk-AI3Y3AZH.js.map +0 -1
- package/dist/skill-ZU5V2EE5.js.map +0 -1
- package/dist/src-DSD34JIX.js.map +0 -1
- package/dist/workflow-DC7WOTTW.js.map +0 -1
- /package/dist/{account-ZMV7NEFM.js.map → account-ZSM2Q3RB.js.map} +0 -0
- /package/dist/{api-catalog-6HNOGVPA.js.map → api-catalog-MMPFWS52.js.map} +0 -0
- /package/dist/{attachment-QAHR54HQ.js.map → attachment-NSYL5X3S.js.map} +0 -0
- /package/dist/{augmentor-7T3L6ZR4.js.map → augmentor-LSJLMJYP.js.map} +0 -0
- /package/dist/{auth-DURHUZDW.js.map → auth-OYF5A4BY.js.map} +0 -0
- /package/dist/{chunk-RGDIVW3O.js.map → chunk-2R6544Z3.js.map} +0 -0
- /package/dist/{chunk-CEXV3MOC.js.map → chunk-E2FUQJVO.js.map} +0 -0
- /package/dist/{chunk-D6AVOPOS.js.map → chunk-GFP4UEUT.js.map} +0 -0
- /package/dist/{chunk-G5SXUXSU.js.map → chunk-H7ZML5QL.js.map} +0 -0
- /package/dist/{chunk-LFFWD5JZ.js.map → chunk-IHCPMYKU.js.map} +0 -0
- /package/dist/{chunk-UAJUZLDE.js.map → chunk-PVWG3V62.js.map} +0 -0
- /package/dist/{chunk-DT2CEH2V.js.map → chunk-VHVOTGBQ.js.map} +0 -0
- /package/dist/{credential-X6QKX473.js.map → credential-WOATCWOU.js.map} +0 -0
- /package/dist/{credential-template-GD3D4MBI.js.map → credential-template-Q3DQE2AH.js.map} +0 -0
- /package/dist/{debug-workflow-AAEOAME2.js.map → debug-workflow-ZNP5XZQF.js.map} +0 -0
- /package/dist/{dist-QLTVBUMD.js.map → dist-4COOAKY3.js.map} +0 -0
- /package/dist/{docs-BVUEXBY3.js.map → docs-XVU4LA7G.js.map} +0 -0
- /package/dist/{doctor-RHMKD4W5.js.map → doctor-PGNHD3TI.js.map} +0 -0
- /package/dist/{environment-WE7VVE6I.js.map → environment-MRDNWU47.js.map} +0 -0
- /package/dist/{feature-flag-VJO2TJFT.js.map → feature-flag-D3DQZ6DX.js.map} +0 -0
- /package/dist/{init-RQHHKJJD.js.map → init-DHWKUYIR.js.map} +0 -0
- /package/dist/{install-CQLHNZ6U.js.map → install-DMEFGQHD.js.map} +0 -0
- /package/dist/{issues-HK2JA5JS.js.map → issues-E4YQ4DVC.js.map} +0 -0
- /package/dist/{knobs-ETJAV6YM.js.map → knobs-NA6SPLHX.js.map} +0 -0
- /package/dist/{list-F6DGGW3Z.js.map → list-GJNGFQMC.js.map} +0 -0
- /package/dist/{local-CMAY54I5.js.map → local-NSKOZHHA.js.map} +0 -0
- /package/dist/{login-6CKG664C.js.map → login-AMSRVPXG.js.map} +0 -0
- /package/dist/{mcp-GC2WOOZO.js.map → mcp-57VVZTXM.js.map} +0 -0
- /package/dist/{metrics-IXICURAA.js.map → metrics-DM4YQQZN.js.map} +0 -0
- /package/dist/{product-BUJWPYKB.js.map → product-WGOLTBRI.js.map} +0 -0
- /package/dist/{property-4EXPWRNT.js.map → property-B7QMGLVW.js.map} +0 -0
- /package/dist/{psql-XGLBI6T7.js.map → psql-4JHPJ2CO.js.map} +0 -0
- /package/dist/{record-HL4QA7OX.js.map → record-RWVGZZSW.js.map} +0 -0
- /package/dist/{redis-VJGCUJPV.js.map → redis-N44ZZ6VB.js.map} +0 -0
- /package/dist/{release-2SMK5Y3V.js.map → release-R7GKLEAI.js.map} +0 -0
- /package/dist/{sandbox-ORAPKOH3.js.map → sandbox-6D54ZQCG.js.map} +0 -0
- /package/dist/{scenarios-DM5FDCAF.js.map → scenarios-WUUUKP2S.js.map} +0 -0
- /package/dist/{session-X6IYGWYG.js.map → session-GDCMTNB3.js.map} +0 -0
- /package/dist/{spec-KO5QD6AY.js.map → spec-ESPA3H26.js.map} +0 -0
- /package/dist/{src-PDYXACRP.js.map → src-B7CPYFLS.js.map} +0 -0
- /package/dist/{start-2ECN4LX5.js.map → start-KDDRLUFN.js.map} +0 -0
- /package/dist/{tag-R5I72HJ6.js.map → tag-DAGHQZAR.js.map} +0 -0
- /package/dist/{task-V3JMSJIM.js.map → task-PRR75HI4.js.map} +0 -0
- /package/dist/{test-suite-NOYVK6YX.js.map → test-suite-O3UY7EER.js.map} +0 -0
- /package/dist/{trace-NOYEKNO4.js.map → trace-7LRHSPWN.js.map} +0 -0
- /package/dist/{triage-4RFATHBE.js.map → triage-2BKUBMMX.js.map} +0 -0
- /package/dist/{utilities-3WMXE743.js.map → utilities-O3OO64T5.js.map} +0 -0
- /package/dist/{workflow-cache-SDSI6SMF.js.map → workflow-cache-VVP3SPFM.js.map} +0 -0
- /package/dist/{workflow-debug-6UQYP67Q.js.map → workflow-debug-XGOHNZ4E.js.map} +0 -0
- /package/dist/{workflow-proposals-67AVGMHX.js.map → workflow-proposals-PGURJ6ZI.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/auth.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport process from 'node:process';\nimport { readBrandEnv } from './brand.js';\n\ntype StoredAuth = {\n token?: string;\n apiUrl?: string;\n orgId?: string;\n orgName?: string;\n};\n\n/** Multi-profile auth file format */\ntype MultiProfileAuth = {\n profiles: Record<string, StoredAuth>;\n default: string;\n};\n\n/** Legacy flat format (single profile) */\ntype LegacyAuth = StoredAuth;\n\nconst AUTH_DIR = path.join(os.homedir(), '.config', 'canary-cli');\nconst AUTH_FILE = path.join(AUTH_DIR, 'auth.json');\n\n/* ── Shared argv helpers ─────────────────────────────────────────────── */\n\nexport function getArgValue(argv: string[], key: string): string | undefined {\n const index = argv.indexOf(key);\n if (index === -1 || index >= argv.length - 1) return undefined;\n return argv[index + 1];\n}\n\nexport function hasFlag(argv: string[], ...flags: string[]): boolean {\n return flags.some((flag) => argv.includes(flag));\n}\n\n/* ── Environment / profile mapping ───────────────────────────────────── */\n\n/** Map --env values to profile names for multi-profile auth storage */\nexport function envToProfile(env: string): string {\n if (env === 'prod' || env === 'production') return 'production';\n if (env === 'dev') return 'dev';\n if (env === 'local') return 'local';\n return env;\n}\n\nconst VALID_ENVS = ['prod', 'dev', 'local'];\n\n/** Environment URL mappings shared across CLI commands */\nexport const ENV_URLS: Record<string, { api: string; app: string }> = {\n prod: {\n api: 'https://api.trycanary.ai',\n app: 'https://app.trycanary.ai',\n },\n production: {\n api: 'https://api.trycanary.ai',\n app: 'https://app.trycanary.ai',\n },\n dev: {\n api: 'https://api.dev.trycanary.ai',\n app: 'https://app.dev.trycanary.ai',\n },\n local: {\n api: 'http://localhost:3000',\n app: 'http://localhost:5173',\n },\n};\n\n/** Derive the web-app URL that corresponds to a given API URL. */\nexport function resolveAppUrl(apiUrl: string): string {\n for (const env of Object.values(ENV_URLS)) {\n if (env.api === apiUrl) return env.app;\n }\n // Fallback for custom API URLs: replace \"api.\" at protocol boundary or \"/api\" path\n return apiUrl.replace(/(:\\/\\/)api\\./, '$1app.').replace(/:3000\\b/, ':5173');\n}\n\nfunction isMultiProfile(data: unknown): data is MultiProfileAuth {\n return typeof data === 'object' && data !== null && 'profiles' in data;\n}\n\n/** Read the raw auth file and normalize to multi-profile format */\nasync function readAuthFile(): Promise<MultiProfileAuth | null> {\n try {\n const content = await fs.readFile(AUTH_FILE, 'utf8');\n const data = JSON.parse(content) as unknown;\n\n if (isMultiProfile(data)) {\n return data;\n }\n\n // Legacy flat format — treat as the \"default\" profile\n const legacy = data as LegacyAuth;\n return {\n profiles: { default: legacy },\n default: 'default',\n };\n } catch {\n return null;\n }\n}\n\nexport async function readStoredAuth(profile?: string): Promise<StoredAuth | null> {\n const auth = await readAuthFile();\n if (!auth) return null;\n\n const key = profile ?? auth.default;\n return auth.profiles[key] ?? null;\n}\n\nexport async function readStoredToken(profile?: string): Promise<string | null> {\n const auth = await readStoredAuth(profile);\n return auth?.token ?? null;\n}\n\nexport async function readStoredApiUrl(profile?: string): Promise<string | null> {\n const auth = await readStoredAuth(profile);\n return auth?.apiUrl ?? null;\n}\n\n/** Return all stored tokens across every profile */\nexport async function readAllStoredTokens(): Promise<string[]> {\n const auth = await readAuthFile();\n if (!auth) return [];\n return Object.values(auth.profiles)\n .map((p) => p.token)\n .filter((t): t is string => !!t);\n}\n\nexport async function saveAuth(auth: StoredAuth, profile?: string): Promise<string> {\n await fs.mkdir(AUTH_DIR, { recursive: true, mode: 0o700 });\n\n // Read existing file (may be legacy or multi-profile)\n let existing: MultiProfileAuth;\n try {\n const content = await fs.readFile(AUTH_FILE, 'utf8');\n const data = JSON.parse(content) as unknown;\n\n if (isMultiProfile(data)) {\n existing = data;\n } else {\n // Migrate legacy flat format into profiles.default\n existing = {\n profiles: { default: data as LegacyAuth },\n default: 'default',\n };\n }\n } catch {\n existing = { profiles: {}, default: 'default' };\n }\n\n const key = profile ?? 'default';\n existing.profiles[key] = auth;\n\n // Set default to this profile if no default exists yet\n if (!existing.profiles[existing.default]) {\n existing.default = key;\n }\n\n await fs.writeFile(AUTH_FILE, JSON.stringify(existing, null, 2), {\n encoding: 'utf8',\n mode: 0o600,\n });\n return AUTH_FILE;\n}\n\n/* ── Shared config resolution ────────────────────────────────────────── */\n\ntype ResolvedConfig = { apiUrl: string; token: string };\n\nasync function resolveConfigInternal(\n argv: string[],\n opts: { required: boolean }\n): Promise<ResolvedConfig | null> {\n const env = getArgValue(argv, '--env');\n const profile = env ? envToProfile(env) : undefined;\n\n if (env && !ENV_URLS[env]) {\n if (opts.required) {\n console.error(`Unknown environment: ${env}`);\n console.error(`Valid environments: ${VALID_ENVS.join(', ')}`);\n process.exit(1);\n }\n return null;\n }\n\n const storedApiUrl = await readStoredApiUrl(profile);\n const apiUrl =\n getArgValue(argv, '--api-url') ??\n (env ? ENV_URLS[env].api : undefined) ??\n readBrandEnv('CANARY_API_URL') ??\n storedApiUrl ??\n 'https://api.trycanary.ai';\n\n const explicitToken = getArgValue(argv, '--token');\n\n let token: string | null;\n if (explicitToken) {\n token = explicitToken;\n } else if (profile) {\n token = (await readStoredToken(profile)) ?? readBrandEnv('CANARY_API_TOKEN') ?? null;\n if (!token && opts.required) {\n console.error(`Error: No token found for \"${env}\" profile.`);\n console.error(`Run: canary login --env ${env}`);\n process.exit(1);\n }\n } else {\n token = readBrandEnv('CANARY_API_TOKEN') ?? (await readStoredToken()) ?? null;\n if (!token && opts.required) {\n console.error('Error: No API token found.');\n console.error('Run: canary login');\n process.exit(1);\n }\n }\n\n return token ? { apiUrl, token } : null;\n}\n\n/**\n * Resolve API URL and auth token from argv flags, env vars, and stored profiles.\n * Used by knobs, feature-flag, release, and debug-session commands.\n */\nexport async function resolveConfig(argv: string[]): Promise<ResolvedConfig> {\n return (await resolveConfigInternal(argv, { required: true }))!;\n}\n\nexport async function resolveOptionalConfig(argv: string[]): Promise<ResolvedConfig | null> {\n return resolveConfigInternal(argv, { required: false });\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/auth.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport process from 'node:process';\nimport { readBrandEnv } from './brand.js';\n\ntype StoredAuth = {\n token?: string;\n apiUrl?: string;\n orgId?: string;\n orgName?: string;\n};\n\n/** Multi-profile auth file format */\ntype MultiProfileAuth = {\n profiles: Record<string, StoredAuth>;\n default: string;\n};\n\n/** Legacy flat format (single profile) */\ntype LegacyAuth = StoredAuth;\n\nconst AUTH_DIR = path.join(os.homedir(), '.config', 'canary-cli');\nconst AUTH_FILE = path.join(AUTH_DIR, 'auth.json');\n\n/* ── Shared argv helpers ─────────────────────────────────────────────── */\n\nexport function getArgValue(argv: string[], key: string): string | undefined {\n const index = argv.indexOf(key);\n if (index === -1 || index >= argv.length - 1) return undefined;\n return argv[index + 1];\n}\n\nexport function hasFlag(argv: string[], ...flags: string[]): boolean {\n return flags.some((flag) => argv.includes(flag));\n}\n\n/* ── Environment / profile mapping ───────────────────────────────────── */\n\n/** Map --env values to profile names for multi-profile auth storage */\nexport function envToProfile(env: string): string {\n if (env === 'prod' || env === 'production') return 'production';\n if (env === 'dev') return 'dev';\n if (env === 'local') return 'local';\n return env;\n}\n\nconst VALID_ENVS = ['prod', 'dev', 'local'];\n\n/** Environment URL mappings shared across CLI commands */\nexport const ENV_URLS: Record<string, { api: string; app: string }> = {\n prod: {\n api: 'https://api.trycanary.ai',\n app: 'https://app.trycanary.ai',\n },\n production: {\n api: 'https://api.trycanary.ai',\n app: 'https://app.trycanary.ai',\n },\n dev: {\n api: 'https://api.dev.trycanary.ai',\n app: 'https://app.dev.trycanary.ai',\n },\n local: {\n api: 'http://localhost:3000',\n app: 'http://localhost:5173',\n },\n};\n\n/** Derive the web-app URL that corresponds to a given API URL. */\nexport function resolveAppUrl(apiUrl: string): string {\n for (const env of Object.values(ENV_URLS)) {\n if (env.api === apiUrl) return env.app;\n }\n // Fallback for custom API URLs: replace \"api.\" at protocol boundary or \"/api\" path\n return apiUrl.replace(/(:\\/\\/)api\\./, '$1app.').replace(/:3000\\b/, ':5173');\n}\n\nfunction isMultiProfile(data: unknown): data is MultiProfileAuth {\n return typeof data === 'object' && data !== null && 'profiles' in data;\n}\n\n/** Read the raw auth file and normalize to multi-profile format */\nasync function readAuthFile(): Promise<MultiProfileAuth | null> {\n try {\n const content = await fs.readFile(AUTH_FILE, 'utf8');\n const data = JSON.parse(content) as unknown;\n\n if (isMultiProfile(data)) {\n return data;\n }\n\n // Legacy flat format — treat as the \"default\" profile\n const legacy = data as LegacyAuth;\n return {\n profiles: { default: legacy },\n default: 'default',\n };\n } catch {\n return null;\n }\n}\n\nexport async function readStoredAuth(profile?: string): Promise<StoredAuth | null> {\n const auth = await readAuthFile();\n if (!auth) return null;\n\n const key = profile ?? auth.default;\n return auth.profiles[key] ?? null;\n}\n\nexport async function readStoredToken(profile?: string): Promise<string | null> {\n const auth = await readStoredAuth(profile);\n return auth?.token ?? null;\n}\n\nexport async function readStoredApiUrl(profile?: string): Promise<string | null> {\n const auth = await readStoredAuth(profile);\n return auth?.apiUrl ?? null;\n}\n\n/** Return all stored tokens across every profile */\nexport async function readAllStoredTokens(): Promise<string[]> {\n const auth = await readAuthFile();\n if (!auth) return [];\n return Object.values(auth.profiles)\n .map((p) => p.token)\n .filter((t): t is string => !!t);\n}\n\nexport async function saveAuth(auth: StoredAuth, profile?: string): Promise<string> {\n await fs.mkdir(AUTH_DIR, { recursive: true, mode: 0o700 });\n\n // Read existing file (may be legacy or multi-profile)\n let existing: MultiProfileAuth;\n try {\n const content = await fs.readFile(AUTH_FILE, 'utf8');\n const data = JSON.parse(content) as unknown;\n\n if (isMultiProfile(data)) {\n existing = data;\n } else {\n // Migrate legacy flat format into profiles.default\n existing = {\n profiles: { default: data as LegacyAuth },\n default: 'default',\n };\n }\n } catch {\n existing = { profiles: {}, default: 'default' };\n }\n\n const key = profile ?? 'default';\n existing.profiles[key] = auth;\n\n // Set default to this profile if no default exists yet\n if (!existing.profiles[existing.default]) {\n existing.default = key;\n }\n\n await fs.writeFile(AUTH_FILE, JSON.stringify(existing, null, 2), {\n encoding: 'utf8',\n mode: 0o600,\n });\n return AUTH_FILE;\n}\n\n/* ── Shared config resolution ────────────────────────────────────────── */\n\ntype ResolvedConfig = { apiUrl: string; token: string };\n\nasync function resolveConfigInternal(\n argv: string[],\n opts: { required: boolean }\n): Promise<ResolvedConfig | null> {\n const env = getArgValue(argv, '--env');\n const profile = env ? envToProfile(env) : undefined;\n\n if (env && !ENV_URLS[env]) {\n if (opts.required) {\n console.error(`Unknown environment: ${env}`);\n console.error(`Valid environments: ${VALID_ENVS.join(', ')}`);\n process.exit(1);\n }\n return null;\n }\n\n const storedApiUrl = await readStoredApiUrl(profile);\n const apiUrl =\n getArgValue(argv, '--api-url') ??\n (env ? ENV_URLS[env].api : undefined) ??\n readBrandEnv('CANARY_API_URL') ??\n storedApiUrl ??\n 'https://api.trycanary.ai';\n\n const explicitToken = getArgValue(argv, '--token');\n\n let token: string | null;\n if (explicitToken) {\n token = explicitToken;\n } else if (profile) {\n token = (await readStoredToken(profile)) ?? readBrandEnv('CANARY_API_TOKEN') ?? null;\n if (!token && opts.required) {\n console.error(`Error: No token found for \"${env}\" profile.`);\n console.error(`Run: canary login --env ${env}`);\n process.exit(1);\n }\n } else {\n token = readBrandEnv('CANARY_API_TOKEN') ?? (await readStoredToken()) ?? null;\n if (!token && opts.required) {\n console.error('Error: No API token found.');\n console.error('Run: canary login');\n process.exit(1);\n }\n }\n\n return token ? { apiUrl, token } : null;\n}\n\n/**\n * Resolve API URL and auth token from argv flags, env vars, and stored profiles.\n * Used by knobs, feature-flag, release, and debug-session commands.\n */\nexport async function resolveConfig(argv: string[]): Promise<ResolvedConfig> {\n return (await resolveConfigInternal(argv, { required: true }))!;\n}\n\nexport async function resolveOptionalConfig(argv: string[]): Promise<ResolvedConfig | null> {\n return resolveConfigInternal(argv, { required: false });\n}\n\n/**\n * Where the effective auth token would come from for this invocation:\n * - `flag` — explicit `--token`\n * - `env` — CANARY_API_TOKEN / COFACTOR_API_TOKEN\n * - `stored` — an interactive `canary login` session in auth.json\n * - `none` — no token resolvable\n *\n * Mirrors the precedence in `resolveConfigInternal` exactly (which differs by\n * whether a profile is selected). `stored` is the only \"logged in interactively\"\n * source; `flag`/`env` are API-key style auth used by CI/automation.\n */\nexport async function resolveAuthSource(\n argv: string[]\n): Promise<'flag' | 'env' | 'stored' | 'none'> {\n const env = getArgValue(argv, '--env');\n if (env && !ENV_URLS[env]) return 'none';\n const profile = env ? envToProfile(env) : undefined;\n\n if (getArgValue(argv, '--token')) return 'flag';\n\n if (profile) {\n // With a profile, stored auth wins over the env var.\n if (await readStoredToken(profile)) return 'stored';\n if (readBrandEnv('CANARY_API_TOKEN')) return 'env';\n return 'none';\n }\n\n // Without a profile, the env var wins over stored auth.\n if (readBrandEnv('CANARY_API_TOKEN')) return 'env';\n if (await readStoredToken()) return 'stored';\n return 'none';\n}\n"],"mappings":"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","names":[]}
|
|
@@ -3,16 +3,16 @@ import {
|
|
|
3
3
|
apiRequest,
|
|
4
4
|
fetchProperties,
|
|
5
5
|
getApplicationArg
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PVWG3V62.js";
|
|
7
7
|
import {
|
|
8
8
|
apiFetch,
|
|
9
9
|
exitOnFailure
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PWZ4ULCB.js";
|
|
11
11
|
import {
|
|
12
12
|
getArgValue,
|
|
13
13
|
hasFlag,
|
|
14
14
|
resolveConfig
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-VYTIJ6HJ.js";
|
|
16
16
|
import "./chunk-32P26BZT.js";
|
|
17
17
|
import "./chunk-JWHYXEA2.js";
|
|
18
18
|
import "./chunk-GZVCNYR4.js";
|
|
@@ -451,4 +451,4 @@ async function runCredential(argv) {
|
|
|
451
451
|
export {
|
|
452
452
|
runCredential
|
|
453
453
|
};
|
|
454
|
-
//# sourceMappingURL=credential-
|
|
454
|
+
//# sourceMappingURL=credential-WOATCWOU.js.map
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
apiRequest,
|
|
4
4
|
fetchProperties,
|
|
5
5
|
getApplicationArg
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-PVWG3V62.js";
|
|
7
|
+
import "./chunk-PWZ4ULCB.js";
|
|
8
8
|
import {
|
|
9
9
|
getArgValue,
|
|
10
10
|
hasFlag,
|
|
11
11
|
resolveConfig
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-VYTIJ6HJ.js";
|
|
13
13
|
import "./chunk-32P26BZT.js";
|
|
14
14
|
import "./chunk-JWHYXEA2.js";
|
|
15
15
|
import "./chunk-GZVCNYR4.js";
|
|
@@ -290,4 +290,4 @@ async function runCredentialTemplate(argv) {
|
|
|
290
290
|
export {
|
|
291
291
|
runCredentialTemplate
|
|
292
292
|
};
|
|
293
|
-
//# sourceMappingURL=credential-template-
|
|
293
|
+
//# sourceMappingURL=credential-template-Q3DQE2AH.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __cr } from "module"; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
downloadStorageState
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-PVWG3V62.js";
|
|
5
|
+
import "./chunk-PWZ4ULCB.js";
|
|
6
6
|
import {
|
|
7
7
|
acquireCloudLock,
|
|
8
8
|
createSessionWithRelay,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
getArgValue,
|
|
14
14
|
hasFlag,
|
|
15
15
|
resolveConfig
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-VYTIJ6HJ.js";
|
|
17
17
|
import "./chunk-32P26BZT.js";
|
|
18
18
|
import "./chunk-JWHYXEA2.js";
|
|
19
19
|
import "./chunk-GZVCNYR4.js";
|
|
@@ -257,4 +257,4 @@ async function runDebugWorkflow(argv) {
|
|
|
257
257
|
export {
|
|
258
258
|
runDebugWorkflow
|
|
259
259
|
};
|
|
260
|
-
//# sourceMappingURL=debug-workflow-
|
|
260
|
+
//# sourceMappingURL=debug-workflow-ZNP5XZQF.js.map
|
|
@@ -3,8 +3,12 @@ import {
|
|
|
3
3
|
BROWSER_LIFECYCLE_TOOLS,
|
|
4
4
|
BrowserToolExecutor,
|
|
5
5
|
CdpScreencastManager,
|
|
6
|
+
CpuOffloadPool,
|
|
7
|
+
CpuOffloadTimeoutError,
|
|
8
|
+
CpuOffloadWorkerError,
|
|
6
9
|
CursorOverlay,
|
|
7
10
|
DEFAULTS,
|
|
11
|
+
DEFAULT_CPU_OFFLOAD_TIMEOUT_MS,
|
|
8
12
|
DEFAULT_VIEWPORT,
|
|
9
13
|
FfmpegProcess,
|
|
10
14
|
LARGE_GRID_CHAR_THRESHOLD,
|
|
@@ -34,9 +38,11 @@ import {
|
|
|
34
38
|
compareEditingContexts,
|
|
35
39
|
compareSnapshots,
|
|
36
40
|
computeFingerprint,
|
|
41
|
+
configureCpuOffload,
|
|
37
42
|
consoleLogger,
|
|
38
43
|
cropImage,
|
|
39
44
|
decodeV2Value,
|
|
45
|
+
defaultCpuOffloadSize,
|
|
40
46
|
detectGrid,
|
|
41
47
|
detectModal,
|
|
42
48
|
detectModalFromYaml,
|
|
@@ -82,6 +88,7 @@ import {
|
|
|
82
88
|
formatGridRow,
|
|
83
89
|
formatSemanticDiff,
|
|
84
90
|
formatSemanticSnapshot,
|
|
91
|
+
formatSnapshotMaybeOffloaded,
|
|
85
92
|
getBrowserToolDefinitions,
|
|
86
93
|
getBrowserToolDefinitionsWithLifecycle,
|
|
87
94
|
getConsolidatedBrowserToolDefinitions,
|
|
@@ -92,6 +99,7 @@ import {
|
|
|
92
99
|
hashFingerprint,
|
|
93
100
|
highlightElement,
|
|
94
101
|
identifyLargeGridRefs,
|
|
102
|
+
isCpuOffloadEnabled,
|
|
95
103
|
isFfmpegAvailable,
|
|
96
104
|
isMCPContentWithImages,
|
|
97
105
|
isStableElement,
|
|
@@ -107,17 +115,19 @@ import {
|
|
|
107
115
|
populateSearchContext,
|
|
108
116
|
reconcileCellColumn,
|
|
109
117
|
renderIfTimeout,
|
|
118
|
+
resolveCpuOffloadWorkerPath,
|
|
110
119
|
restoreIndexedDB,
|
|
111
120
|
searchElements,
|
|
112
121
|
setCdpScreencastLogger,
|
|
113
122
|
setPdfExtractLogger,
|
|
114
123
|
setSnapshotAnalyzerLogger,
|
|
124
|
+
shutdownCpuOffload,
|
|
115
125
|
sortMatchesByContext,
|
|
116
126
|
withBrowserLaunchRetry,
|
|
117
127
|
withRecoveryNotice,
|
|
118
128
|
withRecoveryNoticeMCP,
|
|
119
129
|
withToolTimeout
|
|
120
|
-
} from "./chunk-
|
|
130
|
+
} from "./chunk-7OO3RJYR.js";
|
|
121
131
|
import "./chunk-JWHYXEA2.js";
|
|
122
132
|
import "./chunk-GZVCNYR4.js";
|
|
123
133
|
import "./chunk-6LEZCKKV.js";
|
|
@@ -126,8 +136,12 @@ export {
|
|
|
126
136
|
BROWSER_LIFECYCLE_TOOLS,
|
|
127
137
|
BrowserToolExecutor,
|
|
128
138
|
CdpScreencastManager,
|
|
139
|
+
CpuOffloadPool,
|
|
140
|
+
CpuOffloadTimeoutError,
|
|
141
|
+
CpuOffloadWorkerError,
|
|
129
142
|
CursorOverlay,
|
|
130
143
|
DEFAULTS,
|
|
144
|
+
DEFAULT_CPU_OFFLOAD_TIMEOUT_MS,
|
|
131
145
|
DEFAULT_VIEWPORT,
|
|
132
146
|
FfmpegProcess,
|
|
133
147
|
LARGE_GRID_CHAR_THRESHOLD,
|
|
@@ -158,9 +172,11 @@ export {
|
|
|
158
172
|
compareEditingContexts,
|
|
159
173
|
compareSnapshots,
|
|
160
174
|
computeFingerprint,
|
|
175
|
+
configureCpuOffload,
|
|
161
176
|
consoleLogger,
|
|
162
177
|
cropImage,
|
|
163
178
|
decodeV2Value,
|
|
179
|
+
defaultCpuOffloadSize,
|
|
164
180
|
detectGrid,
|
|
165
181
|
detectModal,
|
|
166
182
|
detectModalFromYaml,
|
|
@@ -206,6 +222,7 @@ export {
|
|
|
206
222
|
formatGridRow,
|
|
207
223
|
formatSemanticDiff,
|
|
208
224
|
formatSemanticSnapshot,
|
|
225
|
+
formatSnapshotMaybeOffloaded,
|
|
209
226
|
getBrowserToolDefinitions,
|
|
210
227
|
getBrowserToolDefinitionsWithLifecycle,
|
|
211
228
|
getConsolidatedBrowserToolDefinitions,
|
|
@@ -216,6 +233,7 @@ export {
|
|
|
216
233
|
hashFingerprint,
|
|
217
234
|
highlightElement,
|
|
218
235
|
identifyLargeGridRefs,
|
|
236
|
+
isCpuOffloadEnabled,
|
|
219
237
|
isFfmpegAvailable,
|
|
220
238
|
isMCPContentWithImages,
|
|
221
239
|
isStableElement,
|
|
@@ -231,15 +249,17 @@ export {
|
|
|
231
249
|
populateSearchContext,
|
|
232
250
|
reconcileCellColumn,
|
|
233
251
|
renderIfTimeout,
|
|
252
|
+
resolveCpuOffloadWorkerPath,
|
|
234
253
|
restoreIndexedDB,
|
|
235
254
|
searchElements,
|
|
236
255
|
setCdpScreencastLogger,
|
|
237
256
|
setPdfExtractLogger,
|
|
238
257
|
setSnapshotAnalyzerLogger,
|
|
258
|
+
shutdownCpuOffload,
|
|
239
259
|
sortMatchesByContext,
|
|
240
260
|
withBrowserLaunchRetry,
|
|
241
261
|
withRecoveryNotice,
|
|
242
262
|
withRecoveryNoticeMCP,
|
|
243
263
|
withToolTimeout
|
|
244
264
|
};
|
|
245
|
-
//# sourceMappingURL=dist-
|
|
265
|
+
//# sourceMappingURL=dist-4COOAKY3.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createRequire as __cr } from "module"; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
apiRequest
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-PVWG3V62.js";
|
|
5
|
+
import "./chunk-PWZ4ULCB.js";
|
|
6
6
|
import {
|
|
7
7
|
getArgValue,
|
|
8
8
|
hasFlag,
|
|
9
9
|
resolveConfig
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-VYTIJ6HJ.js";
|
|
11
11
|
import "./chunk-32P26BZT.js";
|
|
12
12
|
import {
|
|
13
13
|
getSubDir
|
|
@@ -448,4 +448,4 @@ async function runDocs(argv) {
|
|
|
448
448
|
export {
|
|
449
449
|
runDocs
|
|
450
450
|
};
|
|
451
|
-
//# sourceMappingURL=docs-
|
|
451
|
+
//# sourceMappingURL=docs-XVU4LA7G.js.map
|
|
@@ -2,13 +2,13 @@ import { createRequire as __cr } from "module"; const require = __cr(import.meta
|
|
|
2
2
|
import {
|
|
3
3
|
apiFetch,
|
|
4
4
|
decodeJwtPayload
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-PWZ4ULCB.js";
|
|
6
6
|
import {
|
|
7
7
|
ENV_URLS,
|
|
8
8
|
envToProfile,
|
|
9
9
|
getArgValue,
|
|
10
10
|
readStoredAuth
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-VYTIJ6HJ.js";
|
|
12
12
|
import {
|
|
13
13
|
readBrandEnv
|
|
14
14
|
} from "./chunk-32P26BZT.js";
|
|
@@ -133,4 +133,4 @@ async function runAuthDoctor(argv) {
|
|
|
133
133
|
export {
|
|
134
134
|
runAuthDoctor
|
|
135
135
|
};
|
|
136
|
-
//# sourceMappingURL=doctor-
|
|
136
|
+
//# sourceMappingURL=doctor-PGNHD3TI.js.map
|
|
@@ -2,13 +2,13 @@ import { createRequire as __cr } from "module"; const require = __cr(import.meta
|
|
|
2
2
|
import {
|
|
3
3
|
apiRequest,
|
|
4
4
|
fetchProperties
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-PVWG3V62.js";
|
|
6
|
+
import "./chunk-PWZ4ULCB.js";
|
|
7
7
|
import {
|
|
8
8
|
getArgValue,
|
|
9
9
|
hasFlag,
|
|
10
10
|
resolveConfig
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-VYTIJ6HJ.js";
|
|
12
12
|
import "./chunk-32P26BZT.js";
|
|
13
13
|
import "./chunk-JWHYXEA2.js";
|
|
14
14
|
import "./chunk-GZVCNYR4.js";
|
|
@@ -218,4 +218,4 @@ async function runEnvironment(argv) {
|
|
|
218
218
|
export {
|
|
219
219
|
runEnvironment
|
|
220
220
|
};
|
|
221
|
-
//# sourceMappingURL=environment-
|
|
221
|
+
//# sourceMappingURL=environment-MRDNWU47.js.map
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
fetchList,
|
|
5
5
|
parseLifecycleStage,
|
|
6
6
|
toLifecycleLabel
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-PVWG3V62.js";
|
|
8
|
+
import "./chunk-PWZ4ULCB.js";
|
|
9
9
|
import {
|
|
10
10
|
getArgValue,
|
|
11
11
|
hasFlag,
|
|
12
12
|
resolveConfig
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-VYTIJ6HJ.js";
|
|
14
14
|
import "./chunk-32P26BZT.js";
|
|
15
15
|
import "./chunk-JWHYXEA2.js";
|
|
16
16
|
import "./chunk-GZVCNYR4.js";
|
|
@@ -429,4 +429,4 @@ async function runFeatureFlag(argv) {
|
|
|
429
429
|
export {
|
|
430
430
|
runFeatureFlag
|
|
431
431
|
};
|
|
432
|
-
//# sourceMappingURL=feature-flag-
|
|
432
|
+
//# sourceMappingURL=feature-flag-D3DQZ6DX.js.map
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { createRequire as __cr } from "module"; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
runRemoteTest
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-IHCPMYKU.js";
|
|
5
|
+
import "./chunk-VHVOTGBQ.js";
|
|
6
|
+
import "./chunk-PVWG3V62.js";
|
|
7
7
|
import {
|
|
8
|
+
debug,
|
|
8
9
|
fetchOrExit,
|
|
9
10
|
isSuperadminToken
|
|
10
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-PWZ4ULCB.js";
|
|
11
12
|
import {
|
|
12
13
|
runLogin
|
|
13
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-H7ZML5QL.js";
|
|
14
15
|
import {
|
|
15
16
|
checkForUpdate
|
|
16
17
|
} from "./chunk-AQPJQ5AE.js";
|
|
@@ -20,9 +21,10 @@ import {
|
|
|
20
21
|
hasFlag,
|
|
21
22
|
readAllStoredTokens,
|
|
22
23
|
readStoredAuth,
|
|
24
|
+
resolveAuthSource,
|
|
23
25
|
resolveConfig,
|
|
24
26
|
resolveOptionalConfig
|
|
25
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-VYTIJ6HJ.js";
|
|
26
28
|
import {
|
|
27
29
|
installConsoleBranding,
|
|
28
30
|
readBrandEnv,
|
|
@@ -444,8 +446,7 @@ async function createCliUserEventRecorder(argv, cliVersion) {
|
|
|
444
446
|
origin: "cli",
|
|
445
447
|
onError: (error) => {
|
|
446
448
|
const message = error instanceof Error ? error.message : String(error);
|
|
447
|
-
|
|
448
|
-
`);
|
|
449
|
+
debug(`user event tracking skipped: ${message}`);
|
|
449
450
|
}
|
|
450
451
|
}),
|
|
451
452
|
metadata: buildBaseMetadata(argv, cliVersion, config.apiUrl)
|
|
@@ -476,11 +477,11 @@ async function recordCliInstrumentationFailure(argv, cliVersion, stage, error) {
|
|
|
476
477
|
}
|
|
477
478
|
|
|
478
479
|
// src/index.ts
|
|
479
|
-
var loadMcp = () => import("./mcp-
|
|
480
|
-
var loadDebugWorkflow = () => import("./debug-workflow-
|
|
481
|
-
var loadRecord = () => import("./record-
|
|
482
|
-
var loadSession = () => import("./session-
|
|
483
|
-
var loadLocal = () => import("./local-
|
|
480
|
+
var loadMcp = () => import("./mcp-57VVZTXM.js").then((m) => m.runMcp);
|
|
481
|
+
var loadDebugWorkflow = () => import("./debug-workflow-ZNP5XZQF.js").then((m) => m.runDebugWorkflow);
|
|
482
|
+
var loadRecord = () => import("./record-RWVGZZSW.js").then((m) => m.runRecord);
|
|
483
|
+
var loadSession = () => import("./session-GDCMTNB3.js").then((m) => m.runSession);
|
|
484
|
+
var loadLocal = () => import("./local-NSKOZHHA.js").then((m) => m.runLocal);
|
|
484
485
|
function printVersion() {
|
|
485
486
|
console.log(`canary v${version}`);
|
|
486
487
|
}
|
|
@@ -804,7 +805,7 @@ async function executeCommand(command, rest) {
|
|
|
804
805
|
return;
|
|
805
806
|
}
|
|
806
807
|
if (command === "install") {
|
|
807
|
-
const { runInstall } = await import("./install-
|
|
808
|
+
const { runInstall } = await import("./install-DMEFGQHD.js");
|
|
808
809
|
await runInstall(rest);
|
|
809
810
|
return;
|
|
810
811
|
}
|
|
@@ -841,79 +842,79 @@ async function executeCommand(command, rest) {
|
|
|
841
842
|
return;
|
|
842
843
|
}
|
|
843
844
|
if (command === "psql") {
|
|
844
|
-
const { runPsql } = await import("./psql-
|
|
845
|
+
const { runPsql } = await import("./psql-4JHPJ2CO.js");
|
|
845
846
|
await runPsql(rest);
|
|
846
847
|
return;
|
|
847
848
|
}
|
|
848
849
|
if (command === "redis") {
|
|
849
|
-
const { runRedis } = await import("./redis-
|
|
850
|
+
const { runRedis } = await import("./redis-N44ZZ6VB.js");
|
|
850
851
|
await runRedis(rest);
|
|
851
852
|
return;
|
|
852
853
|
}
|
|
853
854
|
if (command === "release") {
|
|
854
|
-
const { runRelease } = await import("./release-
|
|
855
|
+
const { runRelease } = await import("./release-R7GKLEAI.js");
|
|
855
856
|
await runRelease(rest);
|
|
856
857
|
return;
|
|
857
858
|
}
|
|
858
859
|
if (command === "docs") {
|
|
859
|
-
const { runDocs } = await import("./docs-
|
|
860
|
+
const { runDocs } = await import("./docs-XVU4LA7G.js");
|
|
860
861
|
await runDocs(rest);
|
|
861
862
|
return;
|
|
862
863
|
}
|
|
863
864
|
if (command === "feature-flag") {
|
|
864
|
-
const { runFeatureFlag } = await import("./feature-flag-
|
|
865
|
+
const { runFeatureFlag } = await import("./feature-flag-D3DQZ6DX.js");
|
|
865
866
|
await runFeatureFlag(rest);
|
|
866
867
|
return;
|
|
867
868
|
}
|
|
868
869
|
if (command === "product") {
|
|
869
|
-
const { runProduct } = await import("./product-
|
|
870
|
+
const { runProduct } = await import("./product-WGOLTBRI.js");
|
|
870
871
|
await runProduct(rest);
|
|
871
872
|
return;
|
|
872
873
|
}
|
|
873
874
|
if (command === "metrics") {
|
|
874
|
-
const { runMetrics } = await import("./metrics-
|
|
875
|
+
const { runMetrics } = await import("./metrics-DM4YQQZN.js");
|
|
875
876
|
await runMetrics(rest);
|
|
876
877
|
return;
|
|
877
878
|
}
|
|
878
879
|
if (command === "account") {
|
|
879
|
-
const { runAccount } = await import("./account-
|
|
880
|
+
const { runAccount } = await import("./account-ZSM2Q3RB.js");
|
|
880
881
|
await runAccount(rest);
|
|
881
882
|
return;
|
|
882
883
|
}
|
|
883
884
|
if (command === "scenarios" || command === "scenario") {
|
|
884
|
-
const { runScenarios } = await import("./scenarios-
|
|
885
|
+
const { runScenarios } = await import("./scenarios-WUUUKP2S.js");
|
|
885
886
|
await runScenarios(rest);
|
|
886
887
|
return;
|
|
887
888
|
}
|
|
888
889
|
if (command === "knobs") {
|
|
889
|
-
const { runKnobs } = await import("./knobs-
|
|
890
|
+
const { runKnobs } = await import("./knobs-NA6SPLHX.js");
|
|
890
891
|
await runKnobs(rest);
|
|
891
892
|
return;
|
|
892
893
|
}
|
|
893
894
|
if (command === "issues") {
|
|
894
|
-
const { runIssues } = await import("./issues-
|
|
895
|
+
const { runIssues } = await import("./issues-E4YQ4DVC.js");
|
|
895
896
|
await runIssues(rest);
|
|
896
897
|
return;
|
|
897
898
|
}
|
|
898
899
|
if (command === "credential") {
|
|
899
|
-
const { runCredential } = await import("./credential-
|
|
900
|
+
const { runCredential } = await import("./credential-WOATCWOU.js");
|
|
900
901
|
await runCredential(rest);
|
|
901
902
|
return;
|
|
902
903
|
}
|
|
903
904
|
if (command === "persona" || command === "personas" || // Backwards-compat aliases for the former "credential template" name.
|
|
904
905
|
command === "credential-template" || command === "credential-templates") {
|
|
905
|
-
const { runCredentialTemplate } = await import("./credential-template-
|
|
906
|
+
const { runCredentialTemplate } = await import("./credential-template-Q3DQE2AH.js");
|
|
906
907
|
await runCredentialTemplate(rest);
|
|
907
908
|
return;
|
|
908
909
|
}
|
|
909
910
|
if (command === "workflow") {
|
|
910
|
-
const { runWorkflow } = await import("./workflow-
|
|
911
|
+
const { runWorkflow } = await import("./workflow-5BFRS4CE.js");
|
|
911
912
|
await runWorkflow(rest);
|
|
912
913
|
return;
|
|
913
914
|
}
|
|
914
915
|
if (command === "spec") {
|
|
915
|
-
const { resolveConfig: resolveConfig2 } = await import("./auth-
|
|
916
|
-
const { handleSpec } = await import("./spec-
|
|
916
|
+
const { resolveConfig: resolveConfig2 } = await import("./auth-OYF5A4BY.js");
|
|
917
|
+
const { handleSpec } = await import("./spec-ESPA3H26.js");
|
|
917
918
|
const wantsAuth = rest[0] === "compile" || rest[0] === "pull" || rest[0] === "diff";
|
|
918
919
|
if (wantsAuth) {
|
|
919
920
|
const { apiUrl, token } = await resolveConfig2(rest);
|
|
@@ -924,8 +925,8 @@ async function executeCommand(command, rest) {
|
|
|
924
925
|
return;
|
|
925
926
|
}
|
|
926
927
|
if (command === "augmentor" || command === "augmentors") {
|
|
927
|
-
const { resolveConfig: resolveConfig2 } = await import("./auth-
|
|
928
|
-
const { runAugmentor } = await import("./augmentor-
|
|
928
|
+
const { resolveConfig: resolveConfig2 } = await import("./auth-OYF5A4BY.js");
|
|
929
|
+
const { runAugmentor } = await import("./augmentor-LSJLMJYP.js");
|
|
929
930
|
if (rest[0] === void 0 || rest[0] === "help" || rest[0] === "--help") {
|
|
930
931
|
await runAugmentor(rest, "", "");
|
|
931
932
|
} else {
|
|
@@ -935,71 +936,71 @@ async function executeCommand(command, rest) {
|
|
|
935
936
|
return;
|
|
936
937
|
}
|
|
937
938
|
if (command === "api-catalog") {
|
|
938
|
-
const { resolveConfig: resolveConfig2 } = await import("./auth-
|
|
939
|
-
const { runApiCatalog } = await import("./api-catalog-
|
|
939
|
+
const { resolveConfig: resolveConfig2 } = await import("./auth-OYF5A4BY.js");
|
|
940
|
+
const { runApiCatalog } = await import("./api-catalog-MMPFWS52.js");
|
|
940
941
|
const { apiUrl, token } = await resolveConfig2(rest);
|
|
941
942
|
await runApiCatalog(rest, apiUrl, token);
|
|
942
943
|
return;
|
|
943
944
|
}
|
|
944
945
|
if (command === "skill" || command === "skills") {
|
|
945
|
-
const { runSkill } = await import("./skill-
|
|
946
|
+
const { runSkill } = await import("./skill-3SP7MAA4.js");
|
|
946
947
|
await runSkill(rest);
|
|
947
948
|
return;
|
|
948
949
|
}
|
|
949
950
|
if (command === "task") {
|
|
950
|
-
const { runTask } = await import("./task-
|
|
951
|
+
const { runTask } = await import("./task-PRR75HI4.js");
|
|
951
952
|
await runTask(rest);
|
|
952
953
|
return;
|
|
953
954
|
}
|
|
954
955
|
if (command === "test-suite") {
|
|
955
|
-
const { runTestSuite } = await import("./test-suite-
|
|
956
|
+
const { runTestSuite } = await import("./test-suite-O3UY7EER.js");
|
|
956
957
|
await runTestSuite(rest);
|
|
957
958
|
return;
|
|
958
959
|
}
|
|
959
960
|
if (command === "triage") {
|
|
960
|
-
const { runTriage } = await import("./triage-
|
|
961
|
+
const { runTriage } = await import("./triage-2BKUBMMX.js");
|
|
961
962
|
await runTriage(rest);
|
|
962
963
|
return;
|
|
963
964
|
}
|
|
964
965
|
if (command === "application" || command === "applications" || command === "property" || command === "properties") {
|
|
965
|
-
const { runProperty } = await import("./property-
|
|
966
|
+
const { runProperty } = await import("./property-B7QMGLVW.js");
|
|
966
967
|
await runProperty(rest);
|
|
967
968
|
return;
|
|
968
969
|
}
|
|
969
970
|
if (command === "environment" || command === "env") {
|
|
970
|
-
const { runEnvironment } = await import("./environment-
|
|
971
|
+
const { runEnvironment } = await import("./environment-MRDNWU47.js");
|
|
971
972
|
await runEnvironment(rest);
|
|
972
973
|
return;
|
|
973
974
|
}
|
|
974
975
|
if (command === "sandbox") {
|
|
975
|
-
const { runSandbox } = await import("./sandbox-
|
|
976
|
+
const { runSandbox } = await import("./sandbox-6D54ZQCG.js");
|
|
976
977
|
await runSandbox(rest);
|
|
977
978
|
return;
|
|
978
979
|
}
|
|
979
980
|
if (command === "attachment" || command === "attachments") {
|
|
980
|
-
const { runAttachment } = await import("./attachment-
|
|
981
|
+
const { runAttachment } = await import("./attachment-NSYL5X3S.js");
|
|
981
982
|
await runAttachment(rest);
|
|
982
983
|
return;
|
|
983
984
|
}
|
|
984
985
|
if (command === "utilities") {
|
|
985
|
-
const { runUtilities } = await import("./utilities-
|
|
986
|
+
const { runUtilities } = await import("./utilities-O3OO64T5.js");
|
|
986
987
|
await runUtilities(rest);
|
|
987
988
|
return;
|
|
988
989
|
}
|
|
989
990
|
if (command === "tag" || command === "tags") {
|
|
990
|
-
const { runTag } = await import("./tag-
|
|
991
|
+
const { runTag } = await import("./tag-DAGHQZAR.js");
|
|
991
992
|
await runTag(rest);
|
|
992
993
|
return;
|
|
993
994
|
}
|
|
994
995
|
if (command === "trace") {
|
|
995
|
-
const { runTrace } = await import("./trace-
|
|
996
|
+
const { runTrace } = await import("./trace-7LRHSPWN.js");
|
|
996
997
|
await runTrace(rest);
|
|
997
998
|
return;
|
|
998
999
|
}
|
|
999
1000
|
if (command === "auth") {
|
|
1000
1001
|
const sub = rest[0];
|
|
1001
1002
|
if (sub === "doctor") {
|
|
1002
|
-
const { runAuthDoctor } = await import("./doctor-
|
|
1003
|
+
const { runAuthDoctor } = await import("./doctor-PGNHD3TI.js");
|
|
1003
1004
|
await runAuthDoctor(rest.slice(1));
|
|
1004
1005
|
return;
|
|
1005
1006
|
}
|
|
@@ -1033,8 +1034,10 @@ async function main(argv) {
|
|
|
1033
1034
|
printVersion();
|
|
1034
1035
|
return;
|
|
1035
1036
|
}
|
|
1036
|
-
if (command && COMMANDS_WITH_UPDATE_CHECK.has(command)) {
|
|
1037
|
-
await
|
|
1037
|
+
if (command && COMMANDS_WITH_UPDATE_CHECK.has(command) && !wantsMachineOutput) {
|
|
1038
|
+
if (await resolveAuthSource(argv) === "stored") {
|
|
1039
|
+
await checkForUpdate(version);
|
|
1040
|
+
}
|
|
1038
1041
|
}
|
|
1039
1042
|
let tracking = null;
|
|
1040
1043
|
try {
|