@vm0/cli 9.276.2 → 9.276.3

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.
Files changed (107) hide show
  1. package/{agent-6ITXJMRI.js → agent-DVXFZD4R.js} +6 -6
  2. package/{banking-42ENCWTB.js → banking-EJVF4KKJ.js} +4 -4
  3. package/{browser-SO3OMW7W.js → browser-6NCHD7HI.js} +4 -4
  4. package/{chat-HKPUUBZ5.js → chat-YTXE3G2X.js} +5 -5
  5. package/{chunk-QFLEPOFZ.js → chunk-2QVU2TRP.js} +2 -2
  6. package/{chunk-QFLEPOFZ.js.map → chunk-2QVU2TRP.js.map} +1 -1
  7. package/{chunk-PWTMDZXF.js → chunk-3CNC4K2X.js} +2 -2
  8. package/{chunk-VBS2LZRM.js → chunk-5GQGFQJ3.js} +213 -126
  9. package/chunk-5GQGFQJ3.js.map +1 -0
  10. package/{chunk-3HO2YPJ7.js → chunk-5IGKA7BS.js} +257 -470
  11. package/chunk-5IGKA7BS.js.map +1 -0
  12. package/{chunk-YEA6WZTH.js → chunk-B7TK7FO4.js} +2 -2
  13. package/{chunk-HP56K4IH.js → chunk-BDOANREY.js} +3 -3
  14. package/chunk-BDOANREY.js.map +1 -0
  15. package/{chunk-VEPOQ7CY.js → chunk-DC4HTHC2.js} +4 -4
  16. package/{chunk-FLFZ47WJ.js → chunk-HTTADLT3.js} +1 -22
  17. package/{chunk-FLFZ47WJ.js.map → chunk-HTTADLT3.js.map} +1 -1
  18. package/{chunk-H5EY44XP.js → chunk-ONHQ3KTK.js} +2 -2
  19. package/{chunk-RSN3T2HL.js → chunk-VUCHS2QO.js} +2 -2
  20. package/{computer-use-VOM7GCLC.js → computer-use-VDP6IPBW.js} +4 -4
  21. package/{connector-5KE577OI.js → connector-ODH6PC2R.js} +6 -6
  22. package/{credit-LJEZMXAC.js → credit-B7YTX5LO.js} +5 -5
  23. package/{developer-support-CTGXYJ76.js → developer-support-RNIEBQEO.js} +4 -4
  24. package/{doctor-M7J2DURH.js → doctor-GMFAPWIO.js} +5 -5
  25. package/{feishu-WNA7YZU5.js → feishu-FQDCRBBC.js} +4 -4
  26. package/{finance-MZKXGURA.js → finance-UW6ILMND.js} +4 -4
  27. package/{generate-YCT7EXEC.js → generate-KJTVWXNA.js} +6 -6
  28. package/{github-KSDGGF6A.js → github-OMF7MJWS.js} +4 -4
  29. package/{goal-X3HQ72QS.js → goal-MTAJWPOE.js} +4 -4
  30. package/{host-WY2FGWZC.js → host-LR6CEAS5.js} +4 -4
  31. package/{logs-IBV7W6ZE.js → logs-EQTVJIBB.js} +7 -7
  32. package/{mail-YQMBJDYH.js → mail-3CCW73GS.js} +6 -6
  33. package/{maps-4DLR4ZXS.js → maps-SXFI36KF.js} +4 -4
  34. package/{model-SATA2MAX.js → model-T2F74FZP.js} +5 -5
  35. package/{model-provider-JUMPLHAH.js → model-provider-EZQMWLK5.js} +5 -5
  36. package/{org-IS5U6VUN.js → org-7S3MA3MB.js} +13 -55
  37. package/org-7S3MA3MB.js.map +1 -0
  38. package/package.json +1 -1
  39. package/{people-search-AGKDK64T.js → people-search-W5F5F2SS.js} +4 -4
  40. package/{phone-GLY2FEBE.js → phone-L3B7FH3Q.js} +4 -4
  41. package/{recognize-6IIZXIA7.js → recognize-UDSXFIX3.js} +4 -4
  42. package/{resource-ZPUBGTPE.js → resource-S7HFVWBC.js} +4 -4
  43. package/{scrape-77OQC5UK.js → scrape-AOXC7B6D.js} +4 -4
  44. package/{search-GXDC6G5B.js → search-I6I3MO7W.js} +7 -7
  45. package/{slack-73645HEZ.js → slack-ODGAN7LF.js} +4 -4
  46. package/{teams-M2AJTHIS.js → teams-6YLFS2F4.js} +4 -4
  47. package/{telegram-ARAHFEGY.js → telegram-3XTVZBV5.js} +4 -4
  48. package/{upgrade-6OWI3JS2.js → upgrade-TNYSAH6M.js} +3 -3
  49. package/{video-SQTSIULB.js → video-B4LQFRHZ.js} +3 -3
  50. package/{weather-RUVZN7YL.js → weather-ODGUO3UI.js} +4 -4
  51. package/{web-QL4CLTB7.js → web-Z6AD6JJE.js} +4 -4
  52. package/{web-search-3EXUOOVM.js → web-search-ZVHXNBO5.js} +4 -4
  53. package/{whoami-4PHYIXKP.js → whoami-23NVQ5FU.js} +5 -5
  54. package/{workflow-YP2JTAKU.js → workflow-6SRSR3RV.js} +6 -6
  55. package/zero.js +41 -62
  56. package/zero.js.map +1 -1
  57. package/chunk-3HO2YPJ7.js.map +0 -1
  58. package/chunk-HP56K4IH.js.map +0 -1
  59. package/chunk-VBS2LZRM.js.map +0 -1
  60. package/org-IS5U6VUN.js.map +0 -1
  61. package/preference-DJHZ6S6Z.js +0 -109
  62. package/preference-DJHZ6S6Z.js.map +0 -1
  63. package/secret-TVTCDFMW.js +0 -150
  64. package/secret-TVTCDFMW.js.map +0 -1
  65. package/variable-4U4DJTTI.js +0 -119
  66. package/variable-4U4DJTTI.js.map +0 -1
  67. /package/{agent-6ITXJMRI.js.map → agent-DVXFZD4R.js.map} +0 -0
  68. /package/{banking-42ENCWTB.js.map → banking-EJVF4KKJ.js.map} +0 -0
  69. /package/{browser-SO3OMW7W.js.map → browser-6NCHD7HI.js.map} +0 -0
  70. /package/{chat-HKPUUBZ5.js.map → chat-YTXE3G2X.js.map} +0 -0
  71. /package/{chunk-PWTMDZXF.js.map → chunk-3CNC4K2X.js.map} +0 -0
  72. /package/{chunk-YEA6WZTH.js.map → chunk-B7TK7FO4.js.map} +0 -0
  73. /package/{chunk-VEPOQ7CY.js.map → chunk-DC4HTHC2.js.map} +0 -0
  74. /package/{chunk-H5EY44XP.js.map → chunk-ONHQ3KTK.js.map} +0 -0
  75. /package/{chunk-RSN3T2HL.js.map → chunk-VUCHS2QO.js.map} +0 -0
  76. /package/{computer-use-VOM7GCLC.js.map → computer-use-VDP6IPBW.js.map} +0 -0
  77. /package/{connector-5KE577OI.js.map → connector-ODH6PC2R.js.map} +0 -0
  78. /package/{credit-LJEZMXAC.js.map → credit-B7YTX5LO.js.map} +0 -0
  79. /package/{developer-support-CTGXYJ76.js.map → developer-support-RNIEBQEO.js.map} +0 -0
  80. /package/{doctor-M7J2DURH.js.map → doctor-GMFAPWIO.js.map} +0 -0
  81. /package/{feishu-WNA7YZU5.js.map → feishu-FQDCRBBC.js.map} +0 -0
  82. /package/{finance-MZKXGURA.js.map → finance-UW6ILMND.js.map} +0 -0
  83. /package/{generate-YCT7EXEC.js.map → generate-KJTVWXNA.js.map} +0 -0
  84. /package/{github-KSDGGF6A.js.map → github-OMF7MJWS.js.map} +0 -0
  85. /package/{goal-X3HQ72QS.js.map → goal-MTAJWPOE.js.map} +0 -0
  86. /package/{host-WY2FGWZC.js.map → host-LR6CEAS5.js.map} +0 -0
  87. /package/{logs-IBV7W6ZE.js.map → logs-EQTVJIBB.js.map} +0 -0
  88. /package/{mail-YQMBJDYH.js.map → mail-3CCW73GS.js.map} +0 -0
  89. /package/{maps-4DLR4ZXS.js.map → maps-SXFI36KF.js.map} +0 -0
  90. /package/{model-SATA2MAX.js.map → model-T2F74FZP.js.map} +0 -0
  91. /package/{model-provider-JUMPLHAH.js.map → model-provider-EZQMWLK5.js.map} +0 -0
  92. /package/{people-search-AGKDK64T.js.map → people-search-W5F5F2SS.js.map} +0 -0
  93. /package/{phone-GLY2FEBE.js.map → phone-L3B7FH3Q.js.map} +0 -0
  94. /package/{recognize-6IIZXIA7.js.map → recognize-UDSXFIX3.js.map} +0 -0
  95. /package/{resource-ZPUBGTPE.js.map → resource-S7HFVWBC.js.map} +0 -0
  96. /package/{scrape-77OQC5UK.js.map → scrape-AOXC7B6D.js.map} +0 -0
  97. /package/{search-GXDC6G5B.js.map → search-I6I3MO7W.js.map} +0 -0
  98. /package/{slack-73645HEZ.js.map → slack-ODGAN7LF.js.map} +0 -0
  99. /package/{teams-M2AJTHIS.js.map → teams-6YLFS2F4.js.map} +0 -0
  100. /package/{telegram-ARAHFEGY.js.map → telegram-3XTVZBV5.js.map} +0 -0
  101. /package/{upgrade-6OWI3JS2.js.map → upgrade-TNYSAH6M.js.map} +0 -0
  102. /package/{video-SQTSIULB.js.map → video-B4LQFRHZ.js.map} +0 -0
  103. /package/{weather-RUVZN7YL.js.map → weather-ODGUO3UI.js.map} +0 -0
  104. /package/{web-QL4CLTB7.js.map → web-Z6AD6JJE.js.map} +0 -0
  105. /package/{web-search-3EXUOOVM.js.map → web-search-ZVHXNBO5.js.map} +0 -0
  106. /package/{whoami-4PHYIXKP.js.map → whoami-23NVQ5FU.js.map} +0 -0
  107. /package/{workflow-YP2JTAKU.js.map → workflow-6SRSR3RV.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/zero/org/index.ts","../src/commands/zero/org/status.ts","../src/commands/zero/org/set.ts","../src/commands/zero/org/list.ts","../src/commands/zero/org/members.ts","../src/commands/zero/org/invite.ts","../src/commands/zero/org/remove.ts","../src/commands/zero/org/leave.ts","../src/commands/zero/org/delete.ts","../src/commands/zero/org/secret/index.ts","../src/commands/zero/org/secret/list.ts","../src/commands/zero/org/secret/set.ts","../src/commands/zero/org/secret/remove.ts","../src/commands/zero/org/variable/index.ts","../src/commands/zero/org/variable/list.ts","../src/commands/zero/org/variable/set.ts","../src/commands/zero/org/variable/remove.ts","../src/commands/zero/org/model-provider/index.ts","../src/commands/zero/org/model-provider/list.ts","../src/commands/zero/org/model-provider/setup.ts","../src/lib/domain/model-provider/shared.ts","../src/commands/zero/org/model-provider/remove.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { statusCommand } from \"./status\";\nimport { setCommand } from \"./set\";\nimport { listCommand } from \"./list\";\nimport { membersCommand } from \"./members\";\nimport { inviteCommand } from \"./invite\";\nimport { removeCommand } from \"./remove\";\nimport { leaveCommand } from \"./leave\";\nimport { deleteCommand } from \"./delete\";\nimport { zeroOrgSecretCommand } from \"./secret\";\nimport { zeroOrgVariableCommand } from \"./variable\";\nimport { zeroOrgModelProviderCommand } from \"./model-provider\";\n\nexport const zeroOrgCommand = new Command()\n .name(\"org\")\n .description(\"Manage organization settings, members, and providers\")\n .addCommand(statusCommand)\n .addCommand(setCommand)\n .addCommand(listCommand)\n .addCommand(membersCommand)\n .addCommand(inviteCommand)\n .addCommand(removeCommand)\n .addCommand(leaveCommand)\n .addCommand(deleteCommand)\n .addCommand(zeroOrgSecretCommand)\n .addCommand(zeroOrgVariableCommand)\n .addCommand(zeroOrgModelProviderCommand);\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getZeroOrg } from \"../../../lib/api\";\nimport { ApiRequestError } from \"../../../lib/api/core/client-factory\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const statusCommand = new Command()\n .name(\"status\")\n .description(\"View current organization status\")\n .action(\n withErrorHandler(async () => {\n try {\n const org = await getZeroOrg();\n\n console.log(chalk.bold(\"Organization Information:\"));\n console.log(` Slug: ${chalk.green(org.slug)}`);\n } catch (error) {\n if (error instanceof ApiRequestError && error.status === 404) {\n throw new Error(\"No organization configured\", {\n cause: new Error(\"Set your organization with: zero org set <slug>\"),\n });\n }\n throw error;\n }\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getZeroOrg, updateZeroOrg } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const setCommand = new Command()\n .name(\"set\")\n .description(\"Rename your organization slug\")\n .argument(\"<slug>\", \"The new organization slug\")\n .option(\n \"--force\",\n \"Force change existing organization (may break references)\",\n )\n .action(\n withErrorHandler(async (slug: string, options: { force?: boolean }) => {\n try {\n const existingOrg = await getZeroOrg();\n\n if (!options.force) {\n throw new Error(\n `You already have an organization: ${existingOrg.slug}`,\n {\n cause: new Error(`To change, use: zero org set ${slug} --force`),\n },\n );\n }\n\n const org = await updateZeroOrg({ slug, force: true });\n\n console.log(chalk.green(`✓ Organization updated to ${org.slug}`));\n console.log();\n console.log(\"Your agents will now be namespaced as:\");\n console.log(chalk.cyan(` ${org.slug}/<agent-name>`));\n } catch (error) {\n if (\n error instanceof Error &&\n error.message.includes(\"already exists\")\n ) {\n throw new Error(\n `Organization \"${slug}\" is already taken. Please choose a different slug.`,\n );\n }\n throw error;\n }\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { listZeroOrgs } from \"../../../lib/api\";\nimport { getActiveOrg } from \"../../../lib/api/config\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const listCommand = new Command()\n .name(\"list\")\n .description(\"List all accessible organizations\")\n .action(\n withErrorHandler(async () => {\n const result = await listZeroOrgs();\n const activeOrg = await getActiveOrg();\n\n console.log(chalk.bold(\"Available organizations:\"));\n for (const org of result.orgs) {\n const isCurrent = org.slug === activeOrg;\n const marker = isCurrent ? chalk.green(\"* \") : \" \";\n const roleLabel = org.role ? ` (${org.role})` : \"\";\n const currentLabel = isCurrent ? chalk.dim(\" ← current\") : \"\";\n console.log(`${marker}${org.slug}${roleLabel}${currentLabel}`);\n }\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getZeroOrgMembers } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const membersCommand = new Command()\n .name(\"members\")\n .description(\"View organization members\")\n .action(\n withErrorHandler(async () => {\n const status = await getZeroOrgMembers();\n\n console.log(chalk.bold(`Organization: ${status.slug}`));\n console.log(` Role: ${status.role}`);\n console.log(\n ` Created: ${new Date(status.createdAt).toLocaleDateString()}`,\n );\n console.log();\n console.log(chalk.bold(\"Members:\"));\n for (const member of status.members) {\n const roleTag =\n member.role === \"admin\"\n ? chalk.yellow(` (${member.role})`)\n : chalk.dim(` (${member.role})`);\n console.log(` ${member.email}${roleTag}`);\n }\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { inviteZeroOrgMember } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const inviteCommand = new Command()\n .name(\"invite\")\n .description(\"Invite a member to the current organization\")\n .requiredOption(\"--email <email>\", \"Email address of the member to invite\")\n .option(\n \"--role <role>\",\n \"Role for the invited member (member or admin)\",\n \"member\",\n )\n .action(\n withErrorHandler(async (options: { email: string; role: string }) => {\n if (options.role !== \"member\" && options.role !== \"admin\") {\n throw new Error(\n `Invalid role \"${options.role}\". Must be \"member\" or \"admin\".`,\n );\n }\n await inviteZeroOrgMember(options.email, options.role);\n console.log(\n chalk.green(`✓ Invitation sent to ${options.email} as ${options.role}`),\n );\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { removeZeroOrgMember } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const removeCommand = new Command()\n .name(\"remove\")\n .description(\"Remove a member from the current organization\")\n .argument(\"<email>\", \"Email address of the member to remove\")\n .action(\n withErrorHandler(async (email: string) => {\n await removeZeroOrgMember(email);\n console.log(chalk.green(`✓ Removed ${email} from organization`));\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { leaveZeroOrg } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const leaveCommand = new Command()\n .name(\"leave\")\n .description(\"Leave the current organization\")\n .action(\n withErrorHandler(async () => {\n await leaveZeroOrg();\n console.log(chalk.green(\"✓ Left organization.\"));\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { deleteZeroOrg } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const deleteCommand = new Command()\n .name(\"delete\")\n .description(\"Delete the current organization (admin only)\")\n .argument(\"<slug>\", \"Organization slug to confirm deletion\")\n .action(\n withErrorHandler(async (slug: string) => {\n await deleteZeroOrg(slug);\n console.log(chalk.green(`✓ Organization '${slug}' has been deleted.`));\n }),\n );\n","import { Command } from \"commander\";\nimport { listCommand } from \"./list\";\nimport { setCommand } from \"./set\";\nimport { removeCommand } from \"./remove\";\n\nexport const zeroOrgSecretCommand = new Command()\n .name(\"secret\")\n .description(\"Manage org-level secrets (admin)\")\n .addCommand(listCommand)\n .addCommand(setCommand)\n .addCommand(removeCommand);\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { listZeroOrgSecrets } from \"../../../../lib/api\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\nexport const listCommand = new Command()\n .name(\"list\")\n .alias(\"ls\")\n .description(\"List all org-level secrets\")\n .action(\n withErrorHandler(async () => {\n const result = await listZeroOrgSecrets();\n\n if (result.secrets.length === 0) {\n console.log(chalk.dim(\"No org secrets found\"));\n console.log();\n console.log(\"To add an org secret:\");\n console.log(\n chalk.cyan(\" zero org secret set MY_API_KEY --body <value>\"),\n );\n return;\n }\n\n console.log(chalk.bold(\"Org Secrets:\"));\n console.log();\n\n for (const secret of result.secrets) {\n console.log(` ${chalk.cyan(secret.name)}`);\n if (secret.description) {\n console.log(` ${chalk.dim(secret.description)}`);\n }\n console.log(\n ` ${chalk.dim(`Updated: ${new Date(secret.updatedAt).toLocaleString()}`)}`,\n );\n console.log();\n }\n\n console.log(chalk.dim(`Total: ${result.secrets.length} secret(s)`));\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { setZeroOrgSecret } from \"../../../../lib/api\";\nimport {\n isInteractive,\n promptPassword,\n} from \"../../../../lib/utils/prompt-utils\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\nexport const setCommand = new Command()\n .name(\"set\")\n .description(\"Create or update an org-level secret (admin only)\")\n .argument(\"<name>\", \"Secret name (uppercase, e.g., MY_API_KEY)\")\n .option(\n \"-b, --body <value>\",\n \"Secret value (required in non-interactive mode)\",\n )\n .option(\"-d, --description <description>\", \"Optional description\")\n .action(\n withErrorHandler(\n async (\n name: string,\n options: { body?: string; description?: string },\n ) => {\n let value: string;\n\n if (options.body !== undefined) {\n value = options.body;\n } else if (isInteractive()) {\n const prompted = await promptPassword(\"Enter secret value:\");\n if (prompted === undefined) {\n console.log(chalk.dim(\"Cancelled\"));\n return;\n }\n value = prompted;\n } else {\n throw new Error(\"--body is required in non-interactive mode\", {\n cause: new Error(\n `Usage: zero org secret set ${name} --body \"your-secret-value\"`,\n ),\n });\n }\n\n let secret;\n try {\n secret = await setZeroOrgSecret({\n name,\n value,\n description: options.description,\n });\n } catch (error) {\n if (\n error instanceof Error &&\n error.message.includes(\"must contain only uppercase\")\n ) {\n throw new Error(error.message, {\n cause: new Error(\n \"Examples of valid secret names: MY_API_KEY, GITHUB_TOKEN, AWS_ACCESS_KEY_ID\",\n ),\n });\n }\n throw error;\n }\n\n console.log(chalk.green(`✓ Org secret \"${secret.name}\" saved`));\n },\n ),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { deleteZeroOrgSecret } from \"../../../../lib/api\";\nimport {\n isInteractive,\n promptConfirm,\n} from \"../../../../lib/utils/prompt-utils\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\nexport const removeCommand = new Command()\n .name(\"remove\")\n .description(\"Delete an org-level secret (admin only)\")\n .argument(\"<name>\", \"Secret name to delete\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .action(\n withErrorHandler(async (name: string, options: { yes?: boolean }) => {\n if (!options.yes) {\n if (!isInteractive()) {\n throw new Error(\"--yes flag is required in non-interactive mode\");\n }\n\n const confirmed = await promptConfirm(\n `Are you sure you want to delete org secret \"${name}\"?`,\n false,\n );\n\n if (!confirmed) {\n console.log(chalk.dim(\"Cancelled\"));\n return;\n }\n }\n\n await deleteZeroOrgSecret(name);\n console.log(chalk.green(`✓ Org secret \"${name}\" deleted`));\n }),\n );\n","import { Command } from \"commander\";\nimport { listCommand } from \"./list\";\nimport { setCommand } from \"./set\";\nimport { removeCommand } from \"./remove\";\n\nexport const zeroOrgVariableCommand = new Command()\n .name(\"variable\")\n .description(\"Manage org-level variables (admin)\")\n .addCommand(listCommand)\n .addCommand(setCommand)\n .addCommand(removeCommand);\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { listZeroOrgVariables } from \"../../../../lib/api\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\n/**\n * Truncate value for display if too long\n */\nfunction truncateValue(value: string, maxLength: number = 60): string {\n if (value.length <= maxLength) {\n return value;\n }\n return value.slice(0, maxLength - 15) + \"... [truncated]\";\n}\n\nexport const listCommand = new Command()\n .name(\"list\")\n .alias(\"ls\")\n .description(\"List all org-level variables\")\n .action(\n withErrorHandler(async () => {\n const result = await listZeroOrgVariables();\n\n if (result.variables.length === 0) {\n console.log(chalk.dim(\"No org variables found\"));\n console.log();\n console.log(\"To add an org variable:\");\n console.log(chalk.cyan(\" zero org variable set MY_VAR <value>\"));\n return;\n }\n\n console.log(chalk.bold(\"Org Variables:\"));\n console.log();\n\n for (const variable of result.variables) {\n const displayValue = truncateValue(variable.value);\n console.log(` ${chalk.cyan(variable.name)} = ${displayValue}`);\n if (variable.description) {\n console.log(` ${chalk.dim(variable.description)}`);\n }\n console.log(\n ` ${chalk.dim(`Updated: ${new Date(variable.updatedAt).toLocaleString()}`)}`,\n );\n console.log();\n }\n\n console.log(chalk.dim(`Total: ${result.variables.length} variable(s)`));\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { setZeroOrgVariable } from \"../../../../lib/api\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\nexport const setCommand = new Command()\n .name(\"set\")\n .description(\"Create or update an org-level variable (admin only)\")\n .argument(\"<name>\", \"Variable name (uppercase, e.g., MY_VAR)\")\n .argument(\"<value>\", \"Variable value\")\n .option(\"-d, --description <description>\", \"Optional description\")\n .action(\n withErrorHandler(\n async (\n name: string,\n value: string,\n options: { description?: string },\n ) => {\n let variable;\n try {\n variable = await setZeroOrgVariable({\n name,\n value,\n description: options.description,\n });\n } catch (error) {\n if (\n error instanceof Error &&\n error.message.includes(\"must contain only uppercase\")\n ) {\n throw new Error(error.message, {\n cause: new Error(\n \"Examples of valid variable names: MY_VAR, API_URL, DEBUG_MODE\",\n ),\n });\n }\n throw error;\n }\n\n console.log(chalk.green(`✓ Org variable \"${variable.name}\" saved`));\n },\n ),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { deleteZeroOrgVariable } from \"../../../../lib/api\";\nimport {\n isInteractive,\n promptConfirm,\n} from \"../../../../lib/utils/prompt-utils\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\nexport const removeCommand = new Command()\n .name(\"remove\")\n .description(\"Delete an org-level variable (admin only)\")\n .argument(\"<name>\", \"Variable name to delete\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .action(\n withErrorHandler(async (name: string, options: { yes?: boolean }) => {\n if (!options.yes) {\n if (!isInteractive()) {\n throw new Error(\"--yes flag is required in non-interactive mode\");\n }\n\n const confirmed = await promptConfirm(\n `Are you sure you want to delete org variable \"${name}\"?`,\n false,\n );\n\n if (!confirmed) {\n console.log(chalk.dim(\"Cancelled\"));\n return;\n }\n }\n\n await deleteZeroOrgVariable(name);\n console.log(chalk.green(`✓ Org variable \"${name}\" deleted`));\n }),\n );\n","import { Command } from \"commander\";\nimport { createListCommand } from \"./list\";\nimport { createSetupCommand } from \"./setup\";\nimport { createRemoveCommand } from \"./remove\";\n\nexport const zeroOrgModelProviderCommand = new Command()\n .name(\"model-provider\")\n .description(\"Manage org-level model providers\")\n .addCommand(\n createListCommand({\n scopeLabel: \"org-level\",\n title: \"Org Model Providers\",\n setupCommand: \"zero org model-provider setup\",\n }),\n )\n .addCommand(\n createSetupCommand({\n commandPrefix: \"zero org model-provider setup\",\n description: \"Configure an org-level model provider\",\n scopeLabel: \"Org\",\n }),\n )\n .addCommand(createRemoveCommand({ scopeLabel: \"Org\" }));\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { listZeroOrgModelProviders } from \"../../../../lib/api\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\ninterface CreateListCommandOptions {\n scopeLabel?: string;\n title?: string;\n setupCommand?: string;\n}\n\nexport function createListCommand(\n options: CreateListCommandOptions = {},\n): Command {\n const scopeLabel = options.scopeLabel ?? \"org-level\";\n const title = options.title ?? \"Org Model Providers\";\n const setupCommand = options.setupCommand ?? \"zero org model-provider setup\";\n\n return new Command()\n .name(\"list\")\n .alias(\"ls\")\n .description(`List all ${scopeLabel} model providers`)\n .action(\n withErrorHandler(async () => {\n const result = await listZeroOrgModelProviders();\n\n if (result.modelProviders.length === 0) {\n console.log(chalk.dim(`No ${scopeLabel} model providers configured`));\n console.log();\n console.log(`To add a ${scopeLabel} model provider:`);\n console.log(chalk.cyan(` ${setupCommand}`));\n return;\n }\n\n // Group by framework\n const byFramework = result.modelProviders.reduce(\n (acc, p) => {\n const fw = p.framework;\n if (!acc[fw]) {\n acc[fw] = [];\n }\n acc[fw].push(p);\n return acc;\n },\n {} as Record<string, typeof result.modelProviders>,\n );\n\n console.log(chalk.bold(`${title}:`));\n console.log();\n\n for (const [framework, providers] of Object.entries(byFramework)) {\n console.log(` ${chalk.cyan(framework)}:`);\n for (const provider of providers) {\n console.log(` ${provider.type}`);\n console.log(chalk.dim(` ID: ${provider.id}`));\n console.log(\n chalk.dim(\n ` Updated: ${new Date(provider.updatedAt).toLocaleString()}`,\n ),\n );\n }\n console.log();\n }\n\n console.log(\n chalk.dim(`Total: ${result.modelProviders.length} provider(s)`),\n );\n }),\n );\n}\n\nexport const listCommand = createListCommand();\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport prompts from \"prompts\";\nimport {\n listZeroOrgModelProviders,\n upsertZeroOrgModelProvider,\n} from \"../../../../lib/api\";\nimport {\n MODEL_PROVIDER_TYPES,\n hasAuthMethods,\n getSelectableProviderTypes,\n type ModelProviderType,\n} from \"@vm0/api-contracts/contracts/model-providers\";\nimport { isInteractive } from \"../../../../lib/utils/prompt-utils\";\nimport { withErrorHandler } from \"../../../../lib/command\";\nimport {\n type SetupInput,\n handleNonInteractiveMode,\n promptForAuthMethod,\n promptForSecrets,\n collectSecrets,\n} from \"../../../../lib/domain/model-provider/shared\";\n\ninterface CreateSetupCommandOptions {\n commandPrefix?: string;\n description?: string;\n scopeLabel?: string;\n}\n\nasync function handleInteractiveMode(\n commandPrefix: string,\n): Promise<SetupInput | null> {\n if (!isInteractive()) {\n throw new Error(\"Interactive mode requires a TTY\", {\n cause: new Error(\n `Use non-interactive mode: ${commandPrefix} --type <type> --secret \"<value>\"`,\n ),\n });\n }\n\n let cancelled = false;\n const onCancel = () => {\n cancelled = true;\n return false;\n };\n\n // Fetch configured org providers to annotate choices\n const { modelProviders: configuredProviders } =\n await listZeroOrgModelProviders();\n const configuredTypes = new Set(\n configuredProviders.map((p) => {\n return p.type;\n }),\n );\n\n // Build provider choices with configuration status (only selectable providers)\n const annotatedChoices = getSelectableProviderTypes().map((type) => {\n const config = MODEL_PROVIDER_TYPES[type];\n const isConfigured = configuredTypes.has(type);\n const isExperimental = hasAuthMethods(type);\n let title: string = config.label;\n if (isConfigured) {\n title = `${title} ✓`;\n }\n if (isExperimental) {\n title = `${title} ${chalk.dim(\"(experimental)\")}`;\n }\n return {\n title,\n value: type,\n };\n });\n\n const typeResponse = await prompts(\n {\n type: \"select\",\n name: \"type\",\n message: \"Select provider type:\",\n choices: annotatedChoices,\n },\n { onCancel },\n );\n\n if (cancelled) {\n console.log(chalk.dim(\"Cancelled\"));\n return null;\n }\n\n const type = typeResponse.type as ModelProviderType;\n\n // Check if provider is already configured using the list we already fetched\n const existingProvider = configuredProviders.find((p) => {\n return p.type === type;\n });\n\n if (existingProvider) {\n console.log();\n console.log(`\"${type}\" is already configured`);\n console.log();\n\n const actionResponse = await prompts(\n {\n type: \"select\",\n name: \"action\",\n message: \"\",\n choices: [\n { title: \"Keep existing secret\", value: \"keep\" },\n { title: \"Update secret\", value: \"update\" },\n ],\n },\n { onCancel },\n );\n\n if (cancelled) {\n console.log(chalk.dim(\"Cancelled\"));\n return null;\n }\n\n if (actionResponse.action === \"keep\") {\n return {\n type,\n keepExistingSecret: true,\n isInteractiveMode: true,\n };\n }\n // Fall through to secret prompt for \"update\"\n }\n\n const config = MODEL_PROVIDER_TYPES[type];\n\n console.log();\n if (\"helpText\" in config) {\n console.log(chalk.dim(config.helpText));\n }\n console.log();\n\n // Handle multi-auth providers\n if (hasAuthMethods(type)) {\n const authMethod = await promptForAuthMethod(type);\n const secrets = await promptForSecrets(type, authMethod);\n\n return {\n type,\n authMethod,\n secrets,\n isInteractiveMode: true,\n };\n }\n\n // Single-secret provider (legacy)\n const secretLabel = \"secretLabel\" in config ? config.secretLabel : \"secret\";\n\n const secretResponse = await prompts(\n {\n type: \"password\",\n name: \"secret\",\n message: `Enter your ${secretLabel}:`,\n validate: (value: string) => {\n return value.length > 0 || `${secretLabel} is required`;\n },\n },\n { onCancel },\n );\n\n if (cancelled) {\n console.log(chalk.dim(\"Cancelled\"));\n return null;\n }\n\n const secret = secretResponse.secret as string;\n\n return { type, secret, isInteractiveMode: true };\n}\n\nexport function createSetupCommand(\n options: CreateSetupCommandOptions = {},\n): Command {\n const commandPrefix =\n options.commandPrefix ?? \"zero org model-provider setup\";\n const description =\n options.description ?? \"Configure an org-level model provider\";\n const scopeLabel = options.scopeLabel ?? \"Org\";\n\n return new Command()\n .name(\"setup\")\n .description(description)\n .option(\"-t, --type <type>\", \"Provider type (for non-interactive mode)\")\n .option(\n \"-s, --secret <value>\",\n \"Secret value (can be used multiple times, supports VALUE or KEY=VALUE format)\",\n collectSecrets,\n [],\n )\n .option(\n \"-a, --auth-method <method>\",\n \"Auth method (required for multi-auth providers like aws-bedrock)\",\n )\n .action(\n withErrorHandler(\n async (options: {\n type?: string;\n secret?: string[];\n authMethod?: string;\n }) => {\n let input: SetupInput;\n const secretArgs = options.secret ?? [];\n\n if (options.type && secretArgs.length > 0) {\n input = handleNonInteractiveMode({\n type: options.type,\n secret: secretArgs,\n authMethod: options.authMethod,\n commandPrefix,\n });\n } else if (options.type || secretArgs.length > 0) {\n throw new Error(\"Both --type and --secret are required\");\n } else {\n const result = await handleInteractiveMode(commandPrefix);\n if (result === null) {\n return;\n }\n input = result;\n }\n\n // Handle \"keep existing secret\" flow\n if (input.keepExistingSecret) {\n console.log(\n chalk.green(\n `✓ ${scopeLabel} model provider \"${input.type}\" unchanged`,\n ),\n );\n return;\n }\n\n // Standard upsert flow with secret\n const { created } = await upsertZeroOrgModelProvider({\n type: input.type,\n secret: input.secret,\n authMethod: input.authMethod,\n secrets: input.secrets,\n });\n\n const action = created ? \"created\" : \"updated\";\n console.log(\n chalk.green(\n `✓ ${scopeLabel} model provider \"${input.type}\" ${action}`,\n ),\n );\n },\n ),\n );\n}\n\nexport const setupCommand = createSetupCommand();\n","import chalk from \"chalk\";\nimport prompts from \"prompts\";\nimport {\n MODEL_PROVIDER_TYPES,\n hasAuthMethods,\n getAuthMethodsForType,\n getDefaultAuthMethod,\n getSecretsForAuthMethod,\n type ModelProviderType,\n} from \"@vm0/api-contracts/contracts/model-providers\";\n\nexport interface SetupInput {\n type: ModelProviderType;\n secret?: string;\n // Multi-auth support\n authMethod?: string;\n secrets?: Record<string, string>;\n keepExistingSecret?: boolean;\n isInteractiveMode?: boolean;\n}\n\nfunction validateProviderType(typeStr: string): ModelProviderType {\n if (!Object.keys(MODEL_PROVIDER_TYPES).includes(typeStr)) {\n const validTypes = Object.keys(MODEL_PROVIDER_TYPES).join(\", \");\n throw new Error(`Invalid type \"${typeStr}\"`, {\n cause: new Error(`Valid types: ${validTypes}`),\n });\n }\n return typeStr as ModelProviderType;\n}\n\nfunction validateAuthMethod(\n type: ModelProviderType,\n authMethodStr: string,\n): string | never {\n const authMethods = getAuthMethodsForType(type);\n if (!authMethods || !(authMethodStr in authMethods)) {\n const validMethods = authMethods\n ? Object.keys(authMethods).join(\", \")\n : \"none\";\n throw new Error(`Invalid auth method \"${authMethodStr}\"`, {\n cause: new Error(`Valid auth methods: ${validMethods}`),\n });\n }\n return authMethodStr;\n}\n\n/**\n * Parse secret arguments into a secrets object.\n * Supports two formats:\n * - Single value (e.g., \"sk-xxx\") - auto-mapped to the provider's secret name\n * - KEY=VALUE format (e.g., \"AWS_REGION=us-east-1\") - explicit mapping\n */\nfunction parseSecrets(\n type: ModelProviderType,\n authMethod: string,\n secretArgs: string[],\n): Record<string, string> {\n const secretsConfig = getSecretsForAuthMethod(type, authMethod);\n if (!secretsConfig) {\n throw new Error(`Invalid auth method \"${authMethod}\"`);\n }\n\n const secretNames = Object.keys(secretsConfig);\n\n // Single value without = sign: only allowed for single-secret auth methods\n const firstArg = secretArgs[0];\n if (secretArgs.length === 1 && firstArg && !firstArg.includes(\"=\")) {\n if (secretNames.length !== 1) {\n throw new Error(\n \"Must use KEY=VALUE format for multi-secret auth methods\",\n { cause: new Error(`Required secrets: ${secretNames.join(\", \")}`) },\n );\n }\n const firstSecretName = secretNames[0];\n if (!firstSecretName) {\n throw new Error(\"No secrets defined for this auth method\");\n }\n return { [firstSecretName]: firstArg };\n }\n\n // KEY=VALUE format\n const secrets: Record<string, string> = {};\n for (const arg of secretArgs) {\n const eqIndex = arg.indexOf(\"=\");\n if (eqIndex === -1) {\n throw new Error(`Invalid secret format \"${arg}\"`, {\n cause: new Error(\"Use KEY=VALUE format (e.g., AWS_REGION=us-east-1)\"),\n });\n }\n const key = arg.slice(0, eqIndex);\n const value = arg.slice(eqIndex + 1);\n secrets[key] = value;\n }\n return secrets;\n}\n\n/**\n * Validate secrets against the auth method config.\n */\nfunction validateSecrets(\n type: ModelProviderType,\n authMethod: string,\n secrets: Record<string, string>,\n): void {\n const secretsConfig = getSecretsForAuthMethod(type, authMethod);\n if (!secretsConfig) {\n throw new Error(`Invalid auth method \"${authMethod}\"`);\n }\n\n // Check required fields\n for (const [name, fieldConfig] of Object.entries(secretsConfig)) {\n if (fieldConfig.required && !secrets[name]) {\n const requiredNames = Object.entries(secretsConfig)\n .filter(([, fc]) => {\n return fc.required;\n })\n .map(([n]) => {\n return n;\n })\n .join(\", \");\n throw new Error(`Missing required secret: ${name}`, {\n cause: new Error(`Required secrets: ${requiredNames}`),\n });\n }\n }\n\n // Check for unknown fields\n for (const name of Object.keys(secrets)) {\n if (!(name in secretsConfig)) {\n const validNames = Object.keys(secretsConfig).join(\", \");\n throw new Error(`Unknown secret: ${name}`, {\n cause: new Error(`Valid secrets: ${validNames}`),\n });\n }\n }\n}\n\nexport function handleNonInteractiveMode(options: {\n type: string;\n secret: string[];\n authMethod?: string;\n commandPrefix?: string;\n}): SetupInput {\n const type = validateProviderType(options.type);\n const cmdPrefix = options.commandPrefix ?? \"zero org model-provider setup\";\n\n // Handle multi-auth providers\n if (hasAuthMethods(type)) {\n // Determine auth method\n let authMethod: string;\n if (options.authMethod) {\n authMethod = validateAuthMethod(type, options.authMethod);\n } else {\n const defaultAuthMethod = getDefaultAuthMethod(type);\n const authMethods = getAuthMethodsForType(type);\n if (!defaultAuthMethod || !authMethods) {\n throw new Error(`Provider \"${type}\" requires --auth-method`);\n }\n // If there's only one auth method, use it; otherwise require explicit selection\n const authMethodNames = Object.keys(authMethods);\n if (authMethodNames.length === 1) {\n authMethod = authMethodNames[0]!;\n } else {\n const methods = authMethodNames.join(\", \");\n throw new Error(\n `--auth-method is required for \"${type}\" (multiple auth methods available)`,\n {\n cause: new Error(\n `Available: ${methods}. Example: ${cmdPrefix} --type ${type} --auth-method ${authMethodNames[0]} --secret KEY=VALUE`,\n ),\n },\n );\n }\n }\n\n // Parse and validate secrets\n const secrets = parseSecrets(type, authMethod, options.secret);\n validateSecrets(type, authMethod, secrets);\n\n return {\n type,\n authMethod,\n secrets,\n isInteractiveMode: false,\n };\n }\n\n // Single-secret provider (legacy)\n // Accept single value or KEY=VALUE format\n const secretArgs = options.secret;\n const firstArg = secretArgs[0];\n if (!firstArg) {\n throw new Error(\"Secret is required\");\n }\n\n // If KEY=VALUE format, extract the value\n let secret: string;\n if (firstArg.includes(\"=\")) {\n secret = firstArg.slice(firstArg.indexOf(\"=\") + 1);\n } else {\n secret = firstArg;\n }\n\n return {\n type,\n secret,\n isInteractiveMode: false,\n };\n}\n\n/**\n * Prompt for auth method selection (only for multi-auth providers)\n */\nexport async function promptForAuthMethod(\n type: ModelProviderType,\n): Promise<string> {\n const authMethods = getAuthMethodsForType(type);\n const defaultAuthMethod = getDefaultAuthMethod(type);\n\n if (!authMethods) {\n return \"default\";\n }\n\n const choices = Object.entries(authMethods).map(([method, config]) => {\n return {\n title:\n method === defaultAuthMethod\n ? `${config.label} (Recommended)`\n : config.label,\n value: method,\n };\n });\n\n const response = await prompts(\n {\n type: \"select\",\n name: \"authMethod\",\n message: \"Select authentication method:\",\n choices,\n },\n {\n onCancel: () => {\n return process.exit(0);\n },\n },\n );\n\n return response.authMethod as string;\n}\n\n/**\n * Determine if a secret should be masked (password type)\n * Non-secret values like region should be visible\n */\nfunction isSensitiveSecret(name: string): boolean {\n const nonSecretPatterns = [\"REGION\", \"ENDPOINT\", \"URL\"];\n return !nonSecretPatterns.some((pattern) => {\n return name.toUpperCase().includes(pattern);\n });\n}\n\nexport async function promptForSecrets(\n type: ModelProviderType,\n authMethod: string,\n): Promise<Record<string, string>> {\n const secretsConfig = getSecretsForAuthMethod(type, authMethod);\n\n if (!secretsConfig) {\n throw new Error(`Invalid auth method \"${authMethod}\"`);\n }\n\n const secrets: Record<string, string> = {};\n\n for (const [name, fieldConfig] of Object.entries(secretsConfig)) {\n if (fieldConfig.helpText) {\n console.log(chalk.dim(fieldConfig.helpText));\n }\n\n const isSensitive = isSensitiveSecret(name);\n const placeholder =\n \"placeholder\" in fieldConfig ? (fieldConfig.placeholder as string) : \"\";\n\n if (fieldConfig.required) {\n const response = await prompts(\n {\n type: isSensitive ? \"password\" : \"text\",\n name: \"value\",\n message: `${fieldConfig.label}:`,\n initial: placeholder ? \"\" : undefined,\n validate: (value: string) => {\n return value.length > 0 || `${fieldConfig.label} is required`;\n },\n },\n {\n onCancel: () => {\n return process.exit(0);\n },\n },\n );\n secrets[name] = response.value as string;\n } else {\n // Optional field\n const response = await prompts(\n {\n type: isSensitive ? \"password\" : \"text\",\n name: \"value\",\n message: `${fieldConfig.label} (optional):`,\n },\n {\n onCancel: () => {\n return process.exit(0);\n },\n },\n );\n const value = response.value as string;\n if (value && value.trim()) {\n secrets[name] = value.trim();\n }\n }\n }\n\n return secrets;\n}\n\n/**\n * Collect secret values from repeatable --secret option\n */\nexport function collectSecrets(value: string, previous: string[]): string[] {\n return previous.concat([value]);\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { deleteZeroOrgModelProvider } from \"../../../../lib/api\";\nimport { withErrorHandler } from \"../../../../lib/command\";\nimport {\n MODEL_PROVIDER_TYPES,\n type ModelProviderType,\n} from \"@vm0/api-contracts/contracts/model-providers\";\n\ninterface CreateRemoveCommandOptions {\n scopeLabel?: string;\n}\n\nexport function createRemoveCommand(\n options: CreateRemoveCommandOptions = {},\n): Command {\n const scopeLabel = options.scopeLabel ?? \"Org\";\n\n return new Command()\n .name(\"remove\")\n .description(`Remove a ${scopeLabel.toLowerCase()} model provider`)\n .argument(\"<type>\", \"Model provider type to remove\")\n .action(\n withErrorHandler(async (type: string) => {\n if (!Object.keys(MODEL_PROVIDER_TYPES).includes(type)) {\n const validTypes = Object.keys(MODEL_PROVIDER_TYPES).join(\", \");\n throw new Error(`Invalid type \"${type}\"`, {\n cause: new Error(`Valid types: ${validTypes}`),\n });\n }\n\n await deleteZeroOrgModelProvider(type as ModelProviderType);\n console.log(\n chalk.green(`✓ ${scopeLabel} model provider \"${type}\" removed`),\n );\n }),\n );\n}\n\nexport const removeCommand = createRemoveCommand();\n"],"mappings":"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","names":["listCommand","setCommand","removeCommand","listCommand","setCommand","removeCommand","listCommand","setCommand","removeCommand","listCommand","setCommand","removeCommand","setupCommand","listCommand","import_prompts","prompts","type","config","prompts","options","removeCommand"]}
@@ -1,109 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire as __createRequire } from "node:module";
3
- const require = __createRequire(import.meta.url);
4
- import {
5
- isInteractive,
6
- promptText
7
- } from "./chunk-FLFZ47WJ.js";
8
- import {
9
- getZeroUserPreferences,
10
- updateZeroUserPreferences
11
- } from "./chunk-3HO2YPJ7.js";
12
- import "./chunk-YEA6WZTH.js";
13
- import "./chunk-ANOLYIPL.js";
14
- import {
15
- source_default,
16
- withErrorHandler
17
- } from "./chunk-QFLEPOFZ.js";
18
- import "./chunk-32FE3MDA.js";
19
- import {
20
- Command
21
- } from "./chunk-JAUTPXVK.js";
22
- import {
23
- init_esm_shims
24
- } from "./chunk-AUWSMG4F.js";
25
-
26
- // src/commands/zero/preference/index.ts
27
- init_esm_shims();
28
- function detectTimezone() {
29
- return Intl.DateTimeFormat().resolvedOptions().timeZone;
30
- }
31
- function isValidTimezone(timezone) {
32
- try {
33
- Intl.DateTimeFormat(void 0, { timeZone: timezone });
34
- return true;
35
- } catch {
36
- return false;
37
- }
38
- }
39
- function displayPreferences(prefs) {
40
- console.log(source_default.bold("Current preferences:"));
41
- console.log(
42
- ` Timezone: ${prefs.timezone ? source_default.cyan(prefs.timezone) : source_default.dim("not set")}`
43
- );
44
- }
45
- function buildUpdates(opts) {
46
- if (opts.timezone === void 0) return null;
47
- if (!isValidTimezone(opts.timezone)) {
48
- throw new Error(`Invalid timezone: ${opts.timezone}`, {
49
- cause: new Error(
50
- "Use an IANA timezone identifier (e.g., America/New_York, Asia/Shanghai)"
51
- )
52
- });
53
- }
54
- return { timezone: opts.timezone };
55
- }
56
- function printUpdateResult(updates, result) {
57
- if (updates.timezone !== void 0) {
58
- console.log(
59
- source_default.green(
60
- `Timezone set to ${source_default.cyan(result.timezone ?? updates.timezone)}`
61
- )
62
- );
63
- }
64
- }
65
- async function interactiveSetup(prefs) {
66
- if (!prefs.timezone) {
67
- const detectedTz = detectTimezone();
68
- console.log(source_default.dim(`
69
- System timezone detected: ${detectedTz}`));
70
- const tz = await promptText(
71
- "Set timezone? (enter timezone or leave empty to skip)",
72
- detectedTz
73
- );
74
- if (tz?.trim()) {
75
- if (!isValidTimezone(tz.trim())) {
76
- throw new Error(`Invalid timezone: ${tz.trim()}`);
77
- }
78
- await updateZeroUserPreferences({ timezone: tz.trim() });
79
- console.log(source_default.green(`Timezone set to ${source_default.cyan(tz.trim())}`));
80
- }
81
- }
82
- }
83
- var zeroPreferenceCommand = new Command().name("preference").description("View or update user preferences (timezone, notifications)").option("--timezone <timezone>", "IANA timezone (e.g., America/New_York)").action(
84
- withErrorHandler(async (opts) => {
85
- const updates = buildUpdates(opts);
86
- if (updates) {
87
- const result = await updateZeroUserPreferences(updates);
88
- printUpdateResult(updates, result);
89
- return;
90
- }
91
- const prefs = await getZeroUserPreferences();
92
- displayPreferences(prefs);
93
- if (isInteractive()) {
94
- await interactiveSetup(prefs);
95
- } else if (!prefs.timezone) {
96
- console.log();
97
- console.log(
98
- `To set timezone: ${source_default.cyan("zero preference --timezone <timezone>")}`
99
- );
100
- console.log(
101
- source_default.dim("Example: zero preference --timezone America/New_York")
102
- );
103
- }
104
- })
105
- );
106
- export {
107
- zeroPreferenceCommand
108
- };
109
- //# sourceMappingURL=preference-DJHZ6S6Z.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/zero/preference/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport {\n getZeroUserPreferences,\n updateZeroUserPreferences,\n} from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { isInteractive, promptText } from \"../../../lib/utils/prompt-utils\";\n\n/**\n * Detect system timezone using Intl API\n */\nfunction detectTimezone(): string {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n}\n\n/**\n * Validate timezone using Intl.DateTimeFormat\n */\nfunction isValidTimezone(timezone: string): boolean {\n try {\n Intl.DateTimeFormat(undefined, { timeZone: timezone });\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Display current preferences\n */\nfunction displayPreferences(prefs: { timezone: string | null }): void {\n console.log(chalk.bold(\"Current preferences:\"));\n console.log(\n ` Timezone: ${prefs.timezone ? chalk.cyan(prefs.timezone) : chalk.dim(\"not set\")}`,\n );\n}\n\ninterface PreferenceOpts {\n timezone?: string;\n}\n\n/**\n * Build updates from CLI flags, exiting on invalid input\n */\nfunction buildUpdates(opts: PreferenceOpts): { timezone?: string } | null {\n if (opts.timezone === undefined) return null;\n\n if (!isValidTimezone(opts.timezone)) {\n throw new Error(`Invalid timezone: ${opts.timezone}`, {\n cause: new Error(\n \"Use an IANA timezone identifier (e.g., America/New_York, Asia/Shanghai)\",\n ),\n });\n }\n\n return { timezone: opts.timezone };\n}\n\n/**\n * Print confirmation after a successful update\n */\nfunction printUpdateResult(\n updates: { timezone?: string },\n result: { timezone: string | null },\n): void {\n if (updates.timezone !== undefined) {\n console.log(\n chalk.green(\n `Timezone set to ${chalk.cyan(result.timezone ?? updates.timezone)}`,\n ),\n );\n }\n}\n\n/**\n * Interactive prompts when no flags provided\n */\nasync function interactiveSetup(prefs: {\n timezone: string | null;\n}): Promise<void> {\n if (!prefs.timezone) {\n const detectedTz = detectTimezone();\n console.log(chalk.dim(`\\nSystem timezone detected: ${detectedTz}`));\n const tz = await promptText(\n \"Set timezone? (enter timezone or leave empty to skip)\",\n detectedTz,\n );\n if (tz?.trim()) {\n if (!isValidTimezone(tz.trim())) {\n throw new Error(`Invalid timezone: ${tz.trim()}`);\n }\n await updateZeroUserPreferences({ timezone: tz.trim() });\n console.log(chalk.green(`Timezone set to ${chalk.cyan(tz.trim())}`));\n }\n }\n}\n\n/**\n * zero preference\n *\n * View or update user preferences (timezone).\n */\nexport const zeroPreferenceCommand = new Command()\n .name(\"preference\")\n .description(\"View or update user preferences (timezone, notifications)\")\n .option(\"--timezone <timezone>\", \"IANA timezone (e.g., America/New_York)\")\n .action(\n withErrorHandler(async (opts: PreferenceOpts) => {\n const updates = buildUpdates(opts);\n\n if (updates) {\n const result = await updateZeroUserPreferences(updates);\n printUpdateResult(updates, result);\n return;\n }\n\n // No flags: display current preferences\n const prefs = await getZeroUserPreferences();\n displayPreferences(prefs);\n\n if (isInteractive()) {\n await interactiveSetup(prefs);\n } else if (!prefs.timezone) {\n console.log();\n console.log(\n `To set timezone: ${chalk.cyan(\"zero preference --timezone <timezone>\")}`,\n );\n console.log(\n chalk.dim(\"Example: zero preference --timezone America/New_York\"),\n );\n }\n }),\n );\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAYA,SAAS,iBAAyB;AAChC,SAAO,KAAK,eAAe,EAAE,gBAAgB,EAAE;AACjD;AAKA,SAAS,gBAAgB,UAA2B;AAClD,MAAI;AACF,SAAK,eAAe,QAAW,EAAE,UAAU,SAAS,CAAC;AACrD,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAKA,SAAS,mBAAmB,OAA0C;AACpE,UAAQ,IAAI,eAAM,KAAK,sBAAsB,CAAC;AAC9C,UAAQ;AAAA,IACN,oBAAoB,MAAM,WAAW,eAAM,KAAK,MAAM,QAAQ,IAAI,eAAM,IAAI,SAAS,CAAC;AAAA,EACxF;AACF;AASA,SAAS,aAAa,MAAoD;AACxE,MAAI,KAAK,aAAa,OAAW,QAAO;AAExC,MAAI,CAAC,gBAAgB,KAAK,QAAQ,GAAG;AACnC,UAAM,IAAI,MAAM,qBAAqB,KAAK,QAAQ,IAAI;AAAA,MACpD,OAAO,IAAI;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO,EAAE,UAAU,KAAK,SAAS;AACnC;AAKA,SAAS,kBACP,SACA,QACM;AACN,MAAI,QAAQ,aAAa,QAAW;AAClC,YAAQ;AAAA,MACN,eAAM;AAAA,QACJ,mBAAmB,eAAM,KAAK,OAAO,YAAY,QAAQ,QAAQ,CAAC;AAAA,MACpE;AAAA,IACF;AAAA,EACF;AACF;AAKA,eAAe,iBAAiB,OAEd;AAChB,MAAI,CAAC,MAAM,UAAU;AACnB,UAAM,aAAa,eAAe;AAClC,YAAQ,IAAI,eAAM,IAAI;AAAA,4BAA+B,UAAU,EAAE,CAAC;AAClE,UAAM,KAAK,MAAM;AAAA,MACf;AAAA,MACA;AAAA,IACF;AACA,QAAI,IAAI,KAAK,GAAG;AACd,UAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,GAAG;AAC/B,cAAM,IAAI,MAAM,qBAAqB,GAAG,KAAK,CAAC,EAAE;AAAA,MAClD;AACA,YAAM,0BAA0B,EAAE,UAAU,GAAG,KAAK,EAAE,CAAC;AACvD,cAAQ,IAAI,eAAM,MAAM,mBAAmB,eAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;AAAA,IACrE;AAAA,EACF;AACF;AAOO,IAAM,wBAAwB,IAAI,QAAQ,EAC9C,KAAK,YAAY,EACjB,YAAY,2DAA2D,EACvE,OAAO,yBAAyB,wCAAwC,EACxE;AAAA,EACC,iBAAiB,OAAO,SAAyB;AAC/C,UAAM,UAAU,aAAa,IAAI;AAEjC,QAAI,SAAS;AACX,YAAM,SAAS,MAAM,0BAA0B,OAAO;AACtD,wBAAkB,SAAS,MAAM;AACjC;AAAA,IACF;AAGA,UAAM,QAAQ,MAAM,uBAAuB;AAC3C,uBAAmB,KAAK;AAExB,QAAI,cAAc,GAAG;AACnB,YAAM,iBAAiB,KAAK;AAAA,IAC9B,WAAW,CAAC,MAAM,UAAU;AAC1B,cAAQ,IAAI;AACZ,cAAQ;AAAA,QACN,oBAAoB,eAAM,KAAK,uCAAuC,CAAC;AAAA,MACzE;AACA,cAAQ;AAAA,QACN,eAAM,IAAI,sDAAsD;AAAA,MAClE;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -1,150 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire as __createRequire } from "node:module";
3
- const require = __createRequire(import.meta.url);
4
- import {
5
- isInteractive,
6
- promptConfirm,
7
- promptPassword
8
- } from "./chunk-FLFZ47WJ.js";
9
- import {
10
- deleteZeroSecret,
11
- listZeroSecrets,
12
- setZeroSecret
13
- } from "./chunk-3HO2YPJ7.js";
14
- import "./chunk-YEA6WZTH.js";
15
- import "./chunk-ANOLYIPL.js";
16
- import {
17
- source_default,
18
- withErrorHandler
19
- } from "./chunk-QFLEPOFZ.js";
20
- import "./chunk-32FE3MDA.js";
21
- import {
22
- Command
23
- } from "./chunk-JAUTPXVK.js";
24
- import {
25
- init_esm_shims
26
- } from "./chunk-AUWSMG4F.js";
27
-
28
- // src/commands/zero/secret/index.ts
29
- init_esm_shims();
30
-
31
- // src/commands/zero/secret/list.ts
32
- init_esm_shims();
33
- var listCommand = new Command().name("list").alias("ls").description("List all secrets").action(
34
- withErrorHandler(async () => {
35
- const result = await listZeroSecrets();
36
- if (result.secrets.length === 0) {
37
- console.log(source_default.dim("No secrets found"));
38
- console.log();
39
- console.log("To add a secret:");
40
- console.log(source_default.cyan(" zero secret set MY_API_KEY --body <value>"));
41
- return;
42
- }
43
- console.log(source_default.bold("Secrets:"));
44
- console.log();
45
- for (const secret of result.secrets) {
46
- let typeIndicator = "";
47
- let derivedLine = null;
48
- if (secret.type === "model-provider") {
49
- typeIndicator = source_default.dim(" [model-provider]");
50
- } else if (secret.connectorDisplay) {
51
- typeIndicator = source_default.dim(
52
- ` [${secret.connectorDisplay.label} connector]`
53
- );
54
- derivedLine = source_default.dim(
55
- `Available as: ${secret.connectorDisplay.environmentNames.join(", ")}`
56
- );
57
- } else if (secret.type === "connector") {
58
- typeIndicator = source_default.dim(" [connector]");
59
- }
60
- console.log(` ${source_default.cyan(secret.name)}${typeIndicator}`);
61
- if (derivedLine) {
62
- console.log(` ${derivedLine}`);
63
- }
64
- if (secret.description) {
65
- console.log(` ${source_default.dim(secret.description)}`);
66
- }
67
- console.log(
68
- ` ${source_default.dim(`Updated: ${new Date(secret.updatedAt).toLocaleString()}`)}`
69
- );
70
- console.log();
71
- }
72
- console.log(source_default.dim(`Total: ${result.secrets.length} secret(s)`));
73
- })
74
- );
75
-
76
- // src/commands/zero/secret/set.ts
77
- init_esm_shims();
78
- var setCommand = new Command().name("set").description("Create or update a secret").argument("<name>", "Secret name (uppercase, e.g., MY_API_KEY)").option(
79
- "-b, --body <value>",
80
- "Secret value (required in non-interactive mode)"
81
- ).option("-d, --description <description>", "Optional description").action(
82
- withErrorHandler(
83
- async (name, options) => {
84
- let value;
85
- if (options.body !== void 0) {
86
- value = options.body;
87
- } else if (isInteractive()) {
88
- const prompted = await promptPassword("Enter secret value:");
89
- if (prompted === void 0) {
90
- console.log(source_default.dim("Cancelled"));
91
- return;
92
- }
93
- value = prompted;
94
- } else {
95
- throw new Error("--body is required in non-interactive mode", {
96
- cause: new Error(
97
- `Usage: zero secret set ${name} --body "your-secret-value"`
98
- )
99
- });
100
- }
101
- let secret;
102
- try {
103
- secret = await setZeroSecret({
104
- name,
105
- value,
106
- description: options.description
107
- });
108
- } catch (error) {
109
- if (error instanceof Error && error.message.includes("must contain only uppercase")) {
110
- throw new Error(error.message, {
111
- cause: new Error(
112
- "Examples of valid secret names: MY_API_KEY, GITHUB_TOKEN, AWS_ACCESS_KEY_ID"
113
- )
114
- });
115
- }
116
- throw error;
117
- }
118
- console.log(source_default.green(`\u2713 Secret "${secret.name}" saved`));
119
- }
120
- )
121
- );
122
-
123
- // src/commands/zero/secret/delete.ts
124
- init_esm_shims();
125
- var deleteCommand = new Command().name("delete").description("Delete a secret").argument("<name>", "Secret name to delete").option("-y, --yes", "Skip confirmation prompt").action(
126
- withErrorHandler(async (name, options) => {
127
- if (!options.yes) {
128
- if (!isInteractive()) {
129
- throw new Error("--yes flag is required in non-interactive mode");
130
- }
131
- const confirmed = await promptConfirm(
132
- `Are you sure you want to delete secret "${name}"?`,
133
- false
134
- );
135
- if (!confirmed) {
136
- console.log(source_default.dim("Cancelled"));
137
- return;
138
- }
139
- }
140
- await deleteZeroSecret(name);
141
- console.log(source_default.green(`\u2713 Secret "${name}" deleted`));
142
- })
143
- );
144
-
145
- // src/commands/zero/secret/index.ts
146
- var zeroSecretCommand = new Command().name("secret").description("Read or write secrets (API keys, tokens)").addCommand(listCommand).addCommand(setCommand).addCommand(deleteCommand);
147
- export {
148
- zeroSecretCommand
149
- };
150
- //# sourceMappingURL=secret-TVTCDFMW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/zero/secret/index.ts","../src/commands/zero/secret/list.ts","../src/commands/zero/secret/set.ts","../src/commands/zero/secret/delete.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { listCommand } from \"./list\";\nimport { setCommand } from \"./set\";\nimport { deleteCommand } from \"./delete\";\n\nexport const zeroSecretCommand = new Command()\n .name(\"secret\")\n .description(\"Read or write secrets (API keys, tokens)\")\n .addCommand(listCommand)\n .addCommand(setCommand)\n .addCommand(deleteCommand);\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { listZeroSecrets } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const listCommand = new Command()\n .name(\"list\")\n .alias(\"ls\")\n .description(\"List all secrets\")\n .action(\n withErrorHandler(async () => {\n const result = await listZeroSecrets();\n\n if (result.secrets.length === 0) {\n console.log(chalk.dim(\"No secrets found\"));\n console.log();\n console.log(\"To add a secret:\");\n console.log(chalk.cyan(\" zero secret set MY_API_KEY --body <value>\"));\n return;\n }\n\n console.log(chalk.bold(\"Secrets:\"));\n console.log();\n\n for (const secret of result.secrets) {\n let typeIndicator = \"\";\n let derivedLine: string | null = null;\n\n if (secret.type === \"model-provider\") {\n typeIndicator = chalk.dim(\" [model-provider]\");\n } else if (secret.connectorDisplay) {\n typeIndicator = chalk.dim(\n ` [${secret.connectorDisplay.label} connector]`,\n );\n derivedLine = chalk.dim(\n `Available as: ${secret.connectorDisplay.environmentNames.join(\", \")}`,\n );\n } else if (secret.type === \"connector\") {\n typeIndicator = chalk.dim(\" [connector]\");\n }\n\n console.log(` ${chalk.cyan(secret.name)}${typeIndicator}`);\n if (derivedLine) {\n console.log(` ${derivedLine}`);\n }\n if (secret.description) {\n console.log(` ${chalk.dim(secret.description)}`);\n }\n console.log(\n ` ${chalk.dim(`Updated: ${new Date(secret.updatedAt).toLocaleString()}`)}`,\n );\n console.log();\n }\n\n console.log(chalk.dim(`Total: ${result.secrets.length} secret(s)`));\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { setZeroSecret } from \"../../../lib/api\";\nimport { isInteractive, promptPassword } from \"../../../lib/utils/prompt-utils\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const setCommand = new Command()\n .name(\"set\")\n .description(\"Create or update a secret\")\n .argument(\"<name>\", \"Secret name (uppercase, e.g., MY_API_KEY)\")\n .option(\n \"-b, --body <value>\",\n \"Secret value (required in non-interactive mode)\",\n )\n .option(\"-d, --description <description>\", \"Optional description\")\n .action(\n withErrorHandler(\n async (\n name: string,\n options: { body?: string; description?: string },\n ) => {\n let value: string;\n\n if (options.body !== undefined) {\n value = options.body;\n } else if (isInteractive()) {\n const prompted = await promptPassword(\"Enter secret value:\");\n if (prompted === undefined) {\n console.log(chalk.dim(\"Cancelled\"));\n return;\n }\n value = prompted;\n } else {\n throw new Error(\"--body is required in non-interactive mode\", {\n cause: new Error(\n `Usage: zero secret set ${name} --body \"your-secret-value\"`,\n ),\n });\n }\n\n let secret;\n try {\n secret = await setZeroSecret({\n name,\n value,\n description: options.description,\n });\n } catch (error) {\n if (\n error instanceof Error &&\n error.message.includes(\"must contain only uppercase\")\n ) {\n throw new Error(error.message, {\n cause: new Error(\n \"Examples of valid secret names: MY_API_KEY, GITHUB_TOKEN, AWS_ACCESS_KEY_ID\",\n ),\n });\n }\n throw error;\n }\n\n console.log(chalk.green(`✓ Secret \"${secret.name}\" saved`));\n },\n ),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { deleteZeroSecret } from \"../../../lib/api\";\nimport { isInteractive, promptConfirm } from \"../../../lib/utils/prompt-utils\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const deleteCommand = new Command()\n .name(\"delete\")\n .description(\"Delete a secret\")\n .argument(\"<name>\", \"Secret name to delete\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .action(\n withErrorHandler(async (name: string, options: { yes?: boolean }) => {\n if (!options.yes) {\n if (!isInteractive()) {\n throw new Error(\"--yes flag is required in non-interactive mode\");\n }\n\n const confirmed = await promptConfirm(\n `Are you sure you want to delete secret \"${name}\"?`,\n false,\n );\n\n if (!confirmed) {\n console.log(chalk.dim(\"Cancelled\"));\n return;\n }\n }\n\n await deleteZeroSecret(name);\n console.log(chalk.green(`✓ Secret \"${name}\" deleted`));\n }),\n );\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;ACAA;AAKO,IAAM,cAAc,IAAI,QAAQ,EACpC,KAAK,MAAM,EACX,MAAM,IAAI,EACV,YAAY,kBAAkB,EAC9B;AAAA,EACC,iBAAiB,YAAY;AAC3B,UAAM,SAAS,MAAM,gBAAgB;AAErC,QAAI,OAAO,QAAQ,WAAW,GAAG;AAC/B,cAAQ,IAAI,eAAM,IAAI,kBAAkB,CAAC;AACzC,cAAQ,IAAI;AACZ,cAAQ,IAAI,kBAAkB;AAC9B,cAAQ,IAAI,eAAM,KAAK,6CAA6C,CAAC;AACrE;AAAA,IACF;AAEA,YAAQ,IAAI,eAAM,KAAK,UAAU,CAAC;AAClC,YAAQ,IAAI;AAEZ,eAAW,UAAU,OAAO,SAAS;AACnC,UAAI,gBAAgB;AACpB,UAAI,cAA6B;AAEjC,UAAI,OAAO,SAAS,kBAAkB;AACpC,wBAAgB,eAAM,IAAI,mBAAmB;AAAA,MAC/C,WAAW,OAAO,kBAAkB;AAClC,wBAAgB,eAAM;AAAA,UACpB,KAAK,OAAO,iBAAiB,KAAK;AAAA,QACpC;AACA,sBAAc,eAAM;AAAA,UAClB,iBAAiB,OAAO,iBAAiB,iBAAiB,KAAK,IAAI,CAAC;AAAA,QACtE;AAAA,MACF,WAAW,OAAO,SAAS,aAAa;AACtC,wBAAgB,eAAM,IAAI,cAAc;AAAA,MAC1C;AAEA,cAAQ,IAAI,KAAK,eAAM,KAAK,OAAO,IAAI,CAAC,GAAG,aAAa,EAAE;AAC1D,UAAI,aAAa;AACf,gBAAQ,IAAI,OAAO,WAAW,EAAE;AAAA,MAClC;AACA,UAAI,OAAO,aAAa;AACtB,gBAAQ,IAAI,OAAO,eAAM,IAAI,OAAO,WAAW,CAAC,EAAE;AAAA,MACpD;AACA,cAAQ;AAAA,QACN,OAAO,eAAM,IAAI,YAAY,IAAI,KAAK,OAAO,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC;AAAA,MAC7E;AACA,cAAQ,IAAI;AAAA,IACd;AAEA,YAAQ,IAAI,eAAM,IAAI,UAAU,OAAO,QAAQ,MAAM,YAAY,CAAC;AAAA,EACpE,CAAC;AACH;;;ACxDF;AAMO,IAAM,aAAa,IAAI,QAAQ,EACnC,KAAK,KAAK,EACV,YAAY,2BAA2B,EACvC,SAAS,UAAU,2CAA2C,EAC9D;AAAA,EACC;AAAA,EACA;AACF,EACC,OAAO,mCAAmC,sBAAsB,EAChE;AAAA,EACC;AAAA,IACE,OACE,MACA,YACG;AACH,UAAI;AAEJ,UAAI,QAAQ,SAAS,QAAW;AAC9B,gBAAQ,QAAQ;AAAA,MAClB,WAAW,cAAc,GAAG;AAC1B,cAAM,WAAW,MAAM,eAAe,qBAAqB;AAC3D,YAAI,aAAa,QAAW;AAC1B,kBAAQ,IAAI,eAAM,IAAI,WAAW,CAAC;AAClC;AAAA,QACF;AACA,gBAAQ;AAAA,MACV,OAAO;AACL,cAAM,IAAI,MAAM,8CAA8C;AAAA,UAC5D,OAAO,IAAI;AAAA,YACT,0BAA0B,IAAI;AAAA,UAChC;AAAA,QACF,CAAC;AAAA,MACH;AAEA,UAAI;AACJ,UAAI;AACF,iBAAS,MAAM,cAAc;AAAA,UAC3B;AAAA,UACA;AAAA,UACA,aAAa,QAAQ;AAAA,QACvB,CAAC;AAAA,MACH,SAAS,OAAO;AACd,YACE,iBAAiB,SACjB,MAAM,QAAQ,SAAS,6BAA6B,GACpD;AACA,gBAAM,IAAI,MAAM,MAAM,SAAS;AAAA,YAC7B,OAAO,IAAI;AAAA,cACT;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AACA,cAAM;AAAA,MACR;AAEA,cAAQ,IAAI,eAAM,MAAM,kBAAa,OAAO,IAAI,SAAS,CAAC;AAAA,IAC5D;AAAA,EACF;AACF;;;AChEF;AAMO,IAAM,gBAAgB,IAAI,QAAQ,EACtC,KAAK,QAAQ,EACb,YAAY,iBAAiB,EAC7B,SAAS,UAAU,uBAAuB,EAC1C,OAAO,aAAa,0BAA0B,EAC9C;AAAA,EACC,iBAAiB,OAAO,MAAc,YAA+B;AACnE,QAAI,CAAC,QAAQ,KAAK;AAChB,UAAI,CAAC,cAAc,GAAG;AACpB,cAAM,IAAI,MAAM,gDAAgD;AAAA,MAClE;AAEA,YAAM,YAAY,MAAM;AAAA,QACtB,2CAA2C,IAAI;AAAA,QAC/C;AAAA,MACF;AAEA,UAAI,CAAC,WAAW;AACd,gBAAQ,IAAI,eAAM,IAAI,WAAW,CAAC;AAClC;AAAA,MACF;AAAA,IACF;AAEA,UAAM,iBAAiB,IAAI;AAC3B,YAAQ,IAAI,eAAM,MAAM,kBAAa,IAAI,WAAW,CAAC;AAAA,EACvD,CAAC;AACH;;;AH3BK,IAAM,oBAAoB,IAAI,QAAQ,EAC1C,KAAK,QAAQ,EACb,YAAY,0CAA0C,EACtD,WAAW,WAAW,EACtB,WAAW,UAAU,EACrB,WAAW,aAAa;","names":[]}
@@ -1,119 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire as __createRequire } from "node:module";
3
- const require = __createRequire(import.meta.url);
4
- import {
5
- isInteractive,
6
- promptConfirm
7
- } from "./chunk-FLFZ47WJ.js";
8
- import {
9
- deleteZeroVariable,
10
- listZeroVariables,
11
- setZeroVariable
12
- } from "./chunk-3HO2YPJ7.js";
13
- import "./chunk-YEA6WZTH.js";
14
- import "./chunk-ANOLYIPL.js";
15
- import {
16
- source_default,
17
- withErrorHandler
18
- } from "./chunk-QFLEPOFZ.js";
19
- import "./chunk-32FE3MDA.js";
20
- import {
21
- Command
22
- } from "./chunk-JAUTPXVK.js";
23
- import {
24
- init_esm_shims
25
- } from "./chunk-AUWSMG4F.js";
26
-
27
- // src/commands/zero/variable/index.ts
28
- init_esm_shims();
29
-
30
- // src/commands/zero/variable/list.ts
31
- init_esm_shims();
32
- function truncateValue(value, maxLength = 60) {
33
- if (value.length <= maxLength) {
34
- return value;
35
- }
36
- return value.slice(0, maxLength - 15) + "... [truncated]";
37
- }
38
- var listCommand = new Command().name("list").alias("ls").description("List all variables").action(
39
- withErrorHandler(async () => {
40
- const result = await listZeroVariables();
41
- if (result.variables.length === 0) {
42
- console.log(source_default.dim("No variables found"));
43
- console.log();
44
- console.log("To add a variable:");
45
- console.log(source_default.cyan(" zero variable set MY_VAR <value>"));
46
- return;
47
- }
48
- console.log(source_default.bold("Variables:"));
49
- console.log();
50
- for (const variable of result.variables) {
51
- const displayValue = truncateValue(variable.value);
52
- console.log(` ${source_default.cyan(variable.name)} = ${displayValue}`);
53
- if (variable.description) {
54
- console.log(` ${source_default.dim(variable.description)}`);
55
- }
56
- console.log(
57
- ` ${source_default.dim(`Updated: ${new Date(variable.updatedAt).toLocaleString()}`)}`
58
- );
59
- console.log();
60
- }
61
- console.log(source_default.dim(`Total: ${result.variables.length} variable(s)`));
62
- })
63
- );
64
-
65
- // src/commands/zero/variable/set.ts
66
- init_esm_shims();
67
- var setCommand = new Command().name("set").description("Create or update a variable").argument("<name>", "Variable name (uppercase, e.g., MY_VAR)").argument("<value>", "Variable value").option("-d, --description <description>", "Optional description").action(
68
- withErrorHandler(
69
- async (name, value, options) => {
70
- let variable;
71
- try {
72
- variable = await setZeroVariable({
73
- name,
74
- value,
75
- description: options.description
76
- });
77
- } catch (error) {
78
- if (error instanceof Error && error.message.includes("must contain only uppercase")) {
79
- throw new Error(error.message, {
80
- cause: new Error(
81
- "Examples of valid variable names: MY_VAR, API_URL, DEBUG_MODE"
82
- )
83
- });
84
- }
85
- throw error;
86
- }
87
- console.log(source_default.green(`\u2713 Variable "${variable.name}" saved`));
88
- }
89
- )
90
- );
91
-
92
- // src/commands/zero/variable/delete.ts
93
- init_esm_shims();
94
- var deleteCommand = new Command().name("delete").description("Delete a variable").argument("<name>", "Variable name to delete").option("-y, --yes", "Skip confirmation prompt").action(
95
- withErrorHandler(async (name, options) => {
96
- if (!options.yes) {
97
- if (!isInteractive()) {
98
- throw new Error("--yes flag is required in non-interactive mode");
99
- }
100
- const confirmed = await promptConfirm(
101
- `Are you sure you want to delete variable "${name}"?`,
102
- false
103
- );
104
- if (!confirmed) {
105
- console.log(source_default.dim("Cancelled"));
106
- return;
107
- }
108
- }
109
- await deleteZeroVariable(name);
110
- console.log(source_default.green(`\u2713 Variable "${name}" deleted`));
111
- })
112
- );
113
-
114
- // src/commands/zero/variable/index.ts
115
- var zeroVariableCommand = new Command().name("variable").description("Read or write non-sensitive configuration values").addCommand(listCommand).addCommand(setCommand).addCommand(deleteCommand);
116
- export {
117
- zeroVariableCommand
118
- };
119
- //# sourceMappingURL=variable-4U4DJTTI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/zero/variable/index.ts","../src/commands/zero/variable/list.ts","../src/commands/zero/variable/set.ts","../src/commands/zero/variable/delete.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { listCommand } from \"./list\";\nimport { setCommand } from \"./set\";\nimport { deleteCommand } from \"./delete\";\n\nexport const zeroVariableCommand = new Command()\n .name(\"variable\")\n .description(\"Read or write non-sensitive configuration values\")\n .addCommand(listCommand)\n .addCommand(setCommand)\n .addCommand(deleteCommand);\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { listZeroVariables } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\n/**\n * Truncate value for display if too long\n */\nfunction truncateValue(value: string, maxLength: number = 60): string {\n if (value.length <= maxLength) {\n return value;\n }\n return value.slice(0, maxLength - 15) + \"... [truncated]\";\n}\n\nexport const listCommand = new Command()\n .name(\"list\")\n .alias(\"ls\")\n .description(\"List all variables\")\n .action(\n withErrorHandler(async () => {\n const result = await listZeroVariables();\n\n if (result.variables.length === 0) {\n console.log(chalk.dim(\"No variables found\"));\n console.log();\n console.log(\"To add a variable:\");\n console.log(chalk.cyan(\" zero variable set MY_VAR <value>\"));\n return;\n }\n\n console.log(chalk.bold(\"Variables:\"));\n console.log();\n\n for (const variable of result.variables) {\n const displayValue = truncateValue(variable.value);\n console.log(` ${chalk.cyan(variable.name)} = ${displayValue}`);\n if (variable.description) {\n console.log(` ${chalk.dim(variable.description)}`);\n }\n console.log(\n ` ${chalk.dim(`Updated: ${new Date(variable.updatedAt).toLocaleString()}`)}`,\n );\n console.log();\n }\n\n console.log(chalk.dim(`Total: ${result.variables.length} variable(s)`));\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { setZeroVariable } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const setCommand = new Command()\n .name(\"set\")\n .description(\"Create or update a variable\")\n .argument(\"<name>\", \"Variable name (uppercase, e.g., MY_VAR)\")\n .argument(\"<value>\", \"Variable value\")\n .option(\"-d, --description <description>\", \"Optional description\")\n .action(\n withErrorHandler(\n async (\n name: string,\n value: string,\n options: { description?: string },\n ) => {\n let variable;\n try {\n variable = await setZeroVariable({\n name,\n value,\n description: options.description,\n });\n } catch (error) {\n if (\n error instanceof Error &&\n error.message.includes(\"must contain only uppercase\")\n ) {\n throw new Error(error.message, {\n cause: new Error(\n \"Examples of valid variable names: MY_VAR, API_URL, DEBUG_MODE\",\n ),\n });\n }\n throw error;\n }\n\n console.log(chalk.green(`✓ Variable \"${variable.name}\" saved`));\n },\n ),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { deleteZeroVariable } from \"../../../lib/api\";\nimport { isInteractive, promptConfirm } from \"../../../lib/utils/prompt-utils\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const deleteCommand = new Command()\n .name(\"delete\")\n .description(\"Delete a variable\")\n .argument(\"<name>\", \"Variable name to delete\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .action(\n withErrorHandler(async (name: string, options: { yes?: boolean }) => {\n if (!options.yes) {\n if (!isInteractive()) {\n throw new Error(\"--yes flag is required in non-interactive mode\");\n }\n\n const confirmed = await promptConfirm(\n `Are you sure you want to delete variable \"${name}\"?`,\n false,\n );\n\n if (!confirmed) {\n console.log(chalk.dim(\"Cancelled\"));\n return;\n }\n }\n\n await deleteZeroVariable(name);\n console.log(chalk.green(`✓ Variable \"${name}\" deleted`));\n }),\n );\n"],"mappings":"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","names":[]}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes