@dharta/cli 0.6.77 → 0.6.78

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 (293) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +215 -11
  3. package/dist/agent.js +3 -2
  4. package/dist/agent.js.map +1 -1
  5. package/dist/api-error.js +6 -6
  6. package/dist/api-error.js.map +1 -1
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.js +860 -149
  9. package/dist/cli.js.map +1 -1
  10. package/dist/command-tree.d.ts +3 -0
  11. package/dist/command-tree.js +10 -0
  12. package/dist/command-tree.js.map +1 -0
  13. package/dist/commands/agents.d.ts +54 -17
  14. package/dist/commands/agents.js +246 -136
  15. package/dist/commands/agents.js.map +1 -1
  16. package/dist/commands/analytics.js +6 -5
  17. package/dist/commands/analytics.js.map +1 -1
  18. package/dist/commands/api.js +71 -86
  19. package/dist/commands/api.js.map +1 -1
  20. package/dist/commands/appearance.js +5 -6
  21. package/dist/commands/appearance.js.map +1 -1
  22. package/dist/commands/artifact.js +7 -6
  23. package/dist/commands/artifact.js.map +1 -1
  24. package/dist/commands/audit-log.js +2 -1
  25. package/dist/commands/audit-log.js.map +1 -1
  26. package/dist/commands/auth.js +26 -6
  27. package/dist/commands/auth.js.map +1 -1
  28. package/dist/commands/caps.js +11 -15
  29. package/dist/commands/caps.js.map +1 -1
  30. package/dist/commands/deploy.js +25 -10
  31. package/dist/commands/deploy.js.map +1 -1
  32. package/dist/commands/dev.d.ts +10 -1
  33. package/dist/commands/dev.js +56 -25
  34. package/dist/commands/dev.js.map +1 -1
  35. package/dist/commands/doctor.d.ts +2 -0
  36. package/dist/commands/doctor.js +60 -0
  37. package/dist/commands/doctor.js.map +1 -1
  38. package/dist/commands/embed-keys.js +4 -13
  39. package/dist/commands/embed-keys.js.map +1 -1
  40. package/dist/commands/env.js +4 -7
  41. package/dist/commands/env.js.map +1 -1
  42. package/dist/commands/files.js +3 -4
  43. package/dist/commands/files.js.map +1 -1
  44. package/dist/commands/fleet.d.ts +129 -0
  45. package/dist/commands/fleet.js +408 -0
  46. package/dist/commands/fleet.js.map +1 -0
  47. package/dist/commands/genui.d.ts +2 -0
  48. package/dist/commands/genui.js +53 -0
  49. package/dist/commands/genui.js.map +1 -0
  50. package/dist/commands/git-credential.js +2 -3
  51. package/dist/commands/git-credential.js.map +1 -1
  52. package/dist/commands/kartas.d.ts +9 -0
  53. package/dist/commands/kartas.js +33 -11
  54. package/dist/commands/kartas.js.map +1 -1
  55. package/dist/commands/keys.d.ts +17 -18
  56. package/dist/commands/keys.js +108 -19
  57. package/dist/commands/keys.js.map +1 -1
  58. package/dist/commands/login.js +2 -1
  59. package/dist/commands/login.js.map +1 -1
  60. package/dist/commands/members.d.ts +10 -0
  61. package/dist/commands/members.js +20 -6
  62. package/dist/commands/members.js.map +1 -1
  63. package/dist/commands/model-connections.d.ts +44 -0
  64. package/dist/commands/model-connections.js +435 -0
  65. package/dist/commands/model-connections.js.map +1 -0
  66. package/dist/commands/open.d.ts +2 -2
  67. package/dist/commands/open.js +4 -3
  68. package/dist/commands/open.js.map +1 -1
  69. package/dist/commands/org.d.ts +9 -0
  70. package/dist/commands/org.js +42 -0
  71. package/dist/commands/org.js.map +1 -0
  72. package/dist/commands/organization.d.ts +16 -0
  73. package/dist/commands/organization.js +118 -0
  74. package/dist/commands/organization.js.map +1 -0
  75. package/dist/commands/parity.js +1 -3
  76. package/dist/commands/parity.js.map +1 -1
  77. package/dist/commands/repos.d.ts +4 -0
  78. package/dist/commands/repos.js +17 -0
  79. package/dist/commands/repos.js.map +1 -0
  80. package/dist/commands/rollback.js +2 -3
  81. package/dist/commands/rollback.js.map +1 -1
  82. package/dist/commands/schedules.js +26 -21
  83. package/dist/commands/schedules.js.map +1 -1
  84. package/dist/commands/scopes.js +8 -1
  85. package/dist/commands/scopes.js.map +1 -1
  86. package/dist/commands/sessions.js +9 -3
  87. package/dist/commands/sessions.js.map +1 -1
  88. package/dist/commands/setup.js +5 -4
  89. package/dist/commands/setup.js.map +1 -1
  90. package/dist/commands/update.d.ts +1 -0
  91. package/dist/commands/update.js +24 -11
  92. package/dist/commands/update.js.map +1 -1
  93. package/dist/commands/webhooks.d.ts +4 -1
  94. package/dist/commands/webhooks.js +21 -16
  95. package/dist/commands/webhooks.js.map +1 -1
  96. package/dist/completions.js +24 -13
  97. package/dist/completions.js.map +1 -1
  98. package/dist/config.d.ts +12 -0
  99. package/dist/config.js +121 -7
  100. package/dist/config.js.map +1 -1
  101. package/dist/context.d.ts +2 -0
  102. package/dist/context.js +23 -7
  103. package/dist/context.js.map +1 -1
  104. package/dist/docs/cli-reference.d.ts +2 -0
  105. package/dist/docs/cli-reference.js +191 -0
  106. package/dist/docs/cli-reference.js.map +1 -0
  107. package/dist/exit-codes.d.ts +25 -0
  108. package/dist/exit-codes.js +107 -0
  109. package/dist/exit-codes.js.map +1 -0
  110. package/dist/genui.d.ts +178 -0
  111. package/dist/genui.js +1130 -0
  112. package/dist/genui.js.map +1 -0
  113. package/dist/harnesses.js +2 -1
  114. package/dist/harnesses.js.map +1 -1
  115. package/dist/jq.d.ts +4 -0
  116. package/dist/jq.js +91 -0
  117. package/dist/jq.js.map +1 -0
  118. package/dist/login-offer.js +6 -2
  119. package/dist/login-offer.js.map +1 -1
  120. package/dist/manifest.d.ts +12 -0
  121. package/dist/manifest.js +126 -0
  122. package/dist/manifest.js.map +1 -1
  123. package/dist/model-auth.d.ts +29 -0
  124. package/dist/model-auth.js +117 -0
  125. package/dist/model-auth.js.map +1 -0
  126. package/dist/model-settings.d.ts +23 -0
  127. package/dist/model-settings.js +186 -0
  128. package/dist/model-settings.js.map +1 -0
  129. package/dist/money.js +2 -1
  130. package/dist/money.js.map +1 -1
  131. package/dist/output.d.ts +6 -0
  132. package/dist/output.js +54 -0
  133. package/dist/output.js.map +1 -1
  134. package/dist/runtime.d.ts +1 -1
  135. package/dist/runtime.js +1 -1
  136. package/dist/scaffold.js +2 -1
  137. package/dist/scaffold.js.map +1 -1
  138. package/dist/validators.js +17 -11
  139. package/dist/validators.js.map +1 -1
  140. package/dist/version-check.d.ts +1 -1
  141. package/dist/version-check.js +1 -1
  142. package/dist/version-check.js.map +1 -1
  143. package/node_modules/@dharta/contracts/LICENSE +21 -0
  144. package/node_modules/@dharta/contracts/README.md +45 -0
  145. package/node_modules/@dharta/contracts/artifact-runtime.json +750 -0
  146. package/node_modules/@dharta/contracts/dist/activity.d.ts +62 -0
  147. package/node_modules/@dharta/contracts/dist/activity.d.ts.map +1 -0
  148. package/node_modules/@dharta/contracts/dist/activity.js +178 -0
  149. package/node_modules/@dharta/contracts/dist/activity.js.map +1 -0
  150. package/node_modules/@dharta/contracts/dist/artifact-runtime-formats.d.ts +20 -0
  151. package/node_modules/@dharta/contracts/dist/artifact-runtime-formats.d.ts.map +1 -0
  152. package/node_modules/@dharta/contracts/dist/artifact-runtime-formats.js +53 -0
  153. package/node_modules/@dharta/contracts/dist/artifact-runtime-formats.js.map +1 -0
  154. package/node_modules/@dharta/contracts/dist/artifact-runtime-validators.generated.d.ts +37 -0
  155. package/node_modules/@dharta/contracts/dist/artifact-runtime-validators.generated.d.ts.map +1 -0
  156. package/node_modules/@dharta/contracts/dist/artifact-runtime-validators.generated.js +5107 -0
  157. package/node_modules/@dharta/contracts/dist/artifact-runtime-validators.generated.js.map +1 -0
  158. package/node_modules/@dharta/contracts/dist/artifact-runtime.d.ts +154 -0
  159. package/node_modules/@dharta/contracts/dist/artifact-runtime.d.ts.map +1 -0
  160. package/node_modules/@dharta/contracts/dist/artifact-runtime.generated.d.ts +1670 -0
  161. package/node_modules/@dharta/contracts/dist/artifact-runtime.generated.d.ts.map +1 -0
  162. package/node_modules/@dharta/contracts/dist/artifact-runtime.generated.js +1903 -0
  163. package/node_modules/@dharta/contracts/dist/artifact-runtime.generated.js.map +1 -0
  164. package/node_modules/@dharta/contracts/dist/artifact-runtime.js +377 -0
  165. package/node_modules/@dharta/contracts/dist/artifact-runtime.js.map +1 -0
  166. package/node_modules/@dharta/contracts/dist/index.d.ts +6 -0
  167. package/node_modules/@dharta/contracts/dist/index.d.ts.map +1 -0
  168. package/node_modules/@dharta/contracts/dist/index.js +6 -0
  169. package/node_modules/@dharta/contracts/dist/index.js.map +1 -0
  170. package/node_modules/@dharta/contracts/dist/model-auth.d.ts +31 -0
  171. package/node_modules/@dharta/contracts/dist/model-auth.d.ts.map +1 -0
  172. package/node_modules/@dharta/contracts/dist/model-auth.js +45 -0
  173. package/node_modules/@dharta/contracts/dist/model-auth.js.map +1 -0
  174. package/node_modules/@dharta/contracts/dist/tasks.d.ts +44 -0
  175. package/node_modules/@dharta/contracts/dist/tasks.d.ts.map +1 -0
  176. package/node_modules/@dharta/contracts/dist/tasks.js +127 -0
  177. package/node_modules/@dharta/contracts/dist/tasks.js.map +1 -0
  178. package/node_modules/@dharta/contracts/dist/wire-events.d.ts +71 -0
  179. package/node_modules/@dharta/contracts/dist/wire-events.d.ts.map +1 -0
  180. package/node_modules/@dharta/contracts/dist/wire-events.js +48 -0
  181. package/node_modules/@dharta/contracts/dist/wire-events.js.map +1 -0
  182. package/node_modules/@dharta/contracts/model-auth-capabilities-v1.json +168 -0
  183. package/node_modules/@dharta/contracts/model-auth-reasons-v1.json +38 -0
  184. package/node_modules/@dharta/contracts/package.json +44 -0
  185. package/node_modules/@dharta/contracts/src/activity.ts +215 -0
  186. package/node_modules/@dharta/contracts/src/artifact-runtime-formats.ts +54 -0
  187. package/node_modules/@dharta/contracts/src/artifact-runtime-validators.generated.ts +29 -0
  188. package/node_modules/@dharta/contracts/src/artifact-runtime.generated.ts +2093 -0
  189. package/node_modules/@dharta/contracts/src/artifact-runtime.ts +520 -0
  190. package/node_modules/@dharta/contracts/src/index.ts +5 -0
  191. package/node_modules/@dharta/contracts/src/model-auth.ts +82 -0
  192. package/node_modules/@dharta/contracts/src/tasks.ts +142 -0
  193. package/node_modules/@dharta/contracts/src/wire-events.ts +150 -0
  194. package/node_modules/@dharta/contracts/wire-events.json +29 -0
  195. package/node_modules/@dharta/sdk/LICENSE +1 -1
  196. package/node_modules/@dharta/sdk/README.md +22 -8
  197. package/node_modules/@dharta/sdk/dist/errors.d.ts +9 -7
  198. package/node_modules/@dharta/sdk/dist/errors.d.ts.map +1 -1
  199. package/node_modules/@dharta/sdk/dist/errors.js +36 -18
  200. package/node_modules/@dharta/sdk/dist/errors.js.map +1 -1
  201. package/node_modules/@dharta/sdk/dist/fleet.d.ts +69 -0
  202. package/node_modules/@dharta/sdk/dist/fleet.d.ts.map +1 -0
  203. package/node_modules/@dharta/sdk/dist/fleet.js +240 -0
  204. package/node_modules/@dharta/sdk/dist/fleet.js.map +1 -0
  205. package/node_modules/@dharta/sdk/dist/http.d.ts +6 -2
  206. package/node_modules/@dharta/sdk/dist/http.d.ts.map +1 -1
  207. package/node_modules/@dharta/sdk/dist/http.js +71 -12
  208. package/node_modules/@dharta/sdk/dist/http.js.map +1 -1
  209. package/node_modules/@dharta/sdk/dist/idempotency.d.ts +12 -0
  210. package/node_modules/@dharta/sdk/dist/idempotency.d.ts.map +1 -0
  211. package/node_modules/@dharta/sdk/dist/idempotency.js +72 -0
  212. package/node_modules/@dharta/sdk/dist/idempotency.js.map +1 -0
  213. package/node_modules/@dharta/sdk/dist/index.d.ts +20 -6
  214. package/node_modules/@dharta/sdk/dist/index.d.ts.map +1 -1
  215. package/node_modules/@dharta/sdk/dist/index.js +27 -4
  216. package/node_modules/@dharta/sdk/dist/index.js.map +1 -1
  217. package/node_modules/@dharta/sdk/dist/resources.d.ts +108 -13
  218. package/node_modules/@dharta/sdk/dist/resources.d.ts.map +1 -1
  219. package/node_modules/@dharta/sdk/dist/resources.js +403 -57
  220. package/node_modules/@dharta/sdk/dist/resources.js.map +1 -1
  221. package/node_modules/@dharta/sdk/dist/types.d.ts +436 -16
  222. package/node_modules/@dharta/sdk/dist/types.d.ts.map +1 -1
  223. package/node_modules/@dharta/sdk/dist/types.js +31 -2
  224. package/node_modules/@dharta/sdk/dist/types.js.map +1 -1
  225. package/node_modules/@dharta/sdk/package.json +9 -3
  226. package/node_modules/@dharta/sdk/src/errors.ts +41 -18
  227. package/node_modules/@dharta/sdk/src/fleet.ts +339 -0
  228. package/node_modules/@dharta/sdk/src/http.ts +110 -17
  229. package/node_modules/@dharta/sdk/src/idempotency.ts +101 -0
  230. package/node_modules/@dharta/sdk/src/index.ts +50 -11
  231. package/node_modules/@dharta/sdk/src/resources.ts +549 -68
  232. package/node_modules/@dharta/sdk/src/types.ts +629 -20
  233. package/package.json +16 -6
  234. package/src/agent.ts +3 -2
  235. package/src/api-error.ts +6 -5
  236. package/src/cli.ts +978 -163
  237. package/src/command-tree.ts +13 -0
  238. package/src/commands/agents.ts +365 -167
  239. package/src/commands/analytics.ts +6 -5
  240. package/src/commands/api.ts +73 -92
  241. package/src/commands/appearance.ts +5 -6
  242. package/src/commands/artifact.ts +7 -6
  243. package/src/commands/audit-log.ts +2 -1
  244. package/src/commands/auth.ts +25 -5
  245. package/src/commands/caps.ts +11 -15
  246. package/src/commands/deploy.ts +18 -4
  247. package/src/commands/dev.ts +86 -25
  248. package/src/commands/doctor.ts +69 -0
  249. package/src/commands/embed-keys.ts +4 -14
  250. package/src/commands/env.ts +4 -7
  251. package/src/commands/files.ts +3 -4
  252. package/src/commands/fleet.ts +672 -0
  253. package/src/commands/genui.ts +59 -0
  254. package/src/commands/git-credential.ts +2 -3
  255. package/src/commands/kartas.ts +45 -11
  256. package/src/commands/keys.ts +152 -35
  257. package/src/commands/login.ts +2 -1
  258. package/src/commands/members.ts +31 -6
  259. package/src/commands/model-connections.ts +547 -0
  260. package/src/commands/open.ts +5 -4
  261. package/src/commands/org.ts +57 -0
  262. package/src/commands/organization.ts +153 -0
  263. package/src/commands/parity.ts +1 -3
  264. package/src/commands/repos.ts +23 -0
  265. package/src/commands/rollback.ts +2 -3
  266. package/src/commands/schedules.ts +33 -22
  267. package/src/commands/scopes.ts +8 -1
  268. package/src/commands/sessions.ts +9 -3
  269. package/src/commands/setup.ts +5 -4
  270. package/src/commands/update.ts +28 -12
  271. package/src/commands/webhooks.ts +30 -19
  272. package/src/completions.ts +25 -13
  273. package/src/config.ts +141 -9
  274. package/src/context.ts +34 -7
  275. package/src/docs/cli-reference.ts +206 -0
  276. package/src/exit-codes.ts +122 -0
  277. package/src/genui.ts +1398 -0
  278. package/src/harnesses.ts +2 -1
  279. package/src/jq.ts +109 -0
  280. package/src/login-offer.ts +6 -2
  281. package/src/manifest.ts +134 -0
  282. package/src/model-auth.ts +173 -0
  283. package/src/model-settings.ts +222 -0
  284. package/src/money.ts +5 -1
  285. package/src/output.ts +60 -0
  286. package/src/runtime.ts +1 -1
  287. package/src/scaffold.ts +2 -1
  288. package/src/validators.ts +18 -11
  289. package/src/version-check.ts +1 -1
  290. package/dist/commands/model-keys.d.ts +0 -22
  291. package/dist/commands/model-keys.js +0 -222
  292. package/dist/commands/model-keys.js.map +0 -1
  293. package/src/commands/model-keys.ts +0 -278
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-keys.js","sourceRoot":"","sources":["../../src/commands/model-keys.ts"],"names":[],"mappings":"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"}
@@ -1,278 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import type { CliContext } from "../context.js";
3
- import type { ModelApiFormat, ModelKey, ModelKeyProvider } from "@dharta/sdk";
4
- import { fmtTs, table } from "../output.js";
5
- import { closestChoice, normalizeHttpUrl, normalizeNonBlank, parsePositiveInteger } from "../validators.js";
6
-
7
- interface ListEnvelope<T> {
8
- data: T[];
9
- }
10
-
11
- interface ModelKeyEnvelope {
12
- model_key: ModelKey;
13
- }
14
-
15
- const MODEL_KEY_PROVIDERS = ["anthropic", "openai", "bedrock", "vertex", "openrouter", "xai", "google"] as const;
16
- export const MODEL_API_FORMATS = [
17
- "anthropic_messages",
18
- "openai_chat_completions",
19
- "openai_responses",
20
- "bedrock_converse",
21
- "vertex_generate_content",
22
- ] as const satisfies readonly ModelApiFormat[];
23
- const MODEL_KEY_AUTH_TYPES = ["api_key", "oauth_subscription"] as const;
24
- type ModelKeyAuthType = (typeof MODEL_KEY_AUTH_TYPES)[number];
25
-
26
- export interface ModelKeyCreateOptions {
27
- key?: string;
28
- keyStdin?: boolean;
29
- authType?: string;
30
- endpointUrl?: string;
31
- apiFormat?: string;
32
- }
33
-
34
- export async function modelKeysListData(ctx: CliContext): Promise<ModelKey[]> {
35
- const res = await ctx.http.request<ListEnvelope<ModelKey>>({ path: "/model_keys" });
36
- return res.data;
37
- }
38
-
39
- export async function modelKeysList(ctx: CliContext): Promise<string> {
40
- const keys = await modelKeysListData(ctx);
41
- if (keys.length === 0) return "No model keys. Store one with: dharta model-keys create <provider> <name> --key-stdin";
42
- return table(keys.map((key) => ({
43
- id: String(key.id),
44
- provider: key.provider,
45
- name: key.name,
46
- tail: key.tail,
47
- created: fmtTs(key.created_at),
48
- revoked: fmtTs(key.revoked_at),
49
- })));
50
- }
51
-
52
- export async function modelKeysCreateData(
53
- ctx: CliContext,
54
- provider: ModelKeyProvider,
55
- name: string,
56
- opts: ModelKeyCreateOptions = {},
57
- ): Promise<ModelKey> {
58
- validateModelKeysCreateOptions(provider, name, opts);
59
- const normalizedProvider = normalizeProvider(provider);
60
- const normalizedName = normalizeModelKeyName(name);
61
- const plaintext = await resolvePlaintext(opts);
62
- const normalizedAuthType = opts.authType === undefined ? undefined : normalizeAuthType(opts.authType);
63
- const body: Record<string, string> = { provider: normalizedProvider, name: normalizedName, plaintext };
64
- if (normalizedAuthType) body.auth_type = normalizedAuthType;
65
- if (opts.endpointUrl) body.endpoint_url = normalizeEndpointUrl(opts.endpointUrl);
66
- if (opts.apiFormat) body.api_format = normalizeApiFormat(opts.apiFormat);
67
- try {
68
- const res = await ctx.http.request<ModelKeyEnvelope>({
69
- method: "POST",
70
- path: "/model_keys",
71
- body,
72
- headers: { "Idempotency-Key": randomUUID() },
73
- });
74
- return res.model_key;
75
- } catch (error) {
76
- throw addModelKeysWriteScopeGuidance(error);
77
- }
78
- }
79
-
80
- export async function modelKeysCreate(
81
- ctx: CliContext,
82
- provider: ModelKeyProvider,
83
- name: string,
84
- opts: ModelKeyCreateOptions = {},
85
- ): Promise<string> {
86
- const key = await modelKeysCreateData(ctx, provider, name, opts);
87
- return `Stored ${key.provider} connector ${key.name} (${key.id}).`;
88
- }
89
-
90
- export function validateModelKeysCreateOptions(provider: ModelKeyProvider, name: string, opts: ModelKeyCreateOptions = {}): void {
91
- const normalizedProvider = normalizeProvider(provider);
92
- normalizeModelKeyName(name);
93
- const normalizedAuthType = opts.authType === undefined ? undefined : normalizeAuthType(opts.authType);
94
- if (normalizedAuthType === "oauth_subscription" && normalizedProvider !== "anthropic") {
95
- throw new Error("--auth-type oauth_subscription is only supported for the anthropic provider.");
96
- }
97
- if (opts.key !== undefined && opts.keyStdin) {
98
- throw new Error("Use either --key or --key-stdin, not both.");
99
- }
100
- if (opts.key !== undefined) {
101
- normalizePlaintext(opts.key, "--key");
102
- } else if (!opts.keyStdin) {
103
- throw new Error("Model key plaintext is required. Pass --key or --key-stdin.");
104
- } else if (process.stdin.isTTY) {
105
- throw new Error(
106
- "No piped input. Usage: echo $PROVIDER_API_KEY | dharta model-keys create anthropic Claude --key-stdin",
107
- );
108
- }
109
- if (opts.endpointUrl !== undefined) {
110
- normalizeEndpointUrl(opts.endpointUrl);
111
- }
112
- if (opts.apiFormat !== undefined) {
113
- normalizeApiFormat(opts.apiFormat);
114
- }
115
- }
116
-
117
- function normalizeProvider(provider: ModelKeyProvider): ModelKeyProvider {
118
- const normalized = normalizeNonBlank(provider, "Model key provider");
119
- if ((MODEL_KEY_PROVIDERS as readonly string[]).includes(normalized)) {
120
- return normalized as ModelKeyProvider;
121
- }
122
- const suggestion = closestChoice(normalized, MODEL_KEY_PROVIDERS);
123
- throw new Error(
124
- `Unknown model key provider ${normalized}. Allowed providers: ${MODEL_KEY_PROVIDERS.join(", ")}.` +
125
- (suggestion ? ` Did you mean ${suggestion}?` : ""),
126
- );
127
- }
128
-
129
- function normalizeAuthType(authType: string): ModelKeyAuthType {
130
- const normalized = normalizeNonBlank(authType, "--auth-type");
131
- if ((MODEL_KEY_AUTH_TYPES as readonly string[]).includes(normalized)) {
132
- return normalized as ModelKeyAuthType;
133
- }
134
- const suggestion = closestChoice(normalized, MODEL_KEY_AUTH_TYPES);
135
- throw new Error(
136
- `Unknown --auth-type ${normalized}. Allowed auth types: ${MODEL_KEY_AUTH_TYPES.join(", ")}.` +
137
- (suggestion ? ` Did you mean ${suggestion}?` : ""),
138
- );
139
- }
140
-
141
- function normalizeApiFormat(apiFormat: string): ModelApiFormat {
142
- const normalized = normalizeNonBlank(apiFormat, "--api-format");
143
- if ((MODEL_API_FORMATS as readonly string[]).includes(normalized)) {
144
- return normalized as ModelApiFormat;
145
- }
146
- const suggestion = closestChoice(normalized, MODEL_API_FORMATS);
147
- throw new Error(
148
- `Unknown --api-format ${normalized}. Allowed API formats: ${MODEL_API_FORMATS.join(", ")}.` +
149
- (suggestion ? ` Did you mean ${suggestion}?` : ""),
150
- );
151
- }
152
-
153
- export async function prepareModelKeysCreateOptions(
154
- provider: ModelKeyProvider,
155
- name: string,
156
- opts: ModelKeyCreateOptions = {},
157
- read: () => Promise<string> = readModelKeyStdin,
158
- ): Promise<ModelKeyCreateOptions> {
159
- validateModelKeysCreateOptions(provider, name, opts);
160
- if (!opts.keyStdin) return opts;
161
- return { ...opts, key: normalizeModelKeyStdin(await read()), keyStdin: false };
162
- }
163
-
164
- export async function modelKeysRevokeData(ctx: CliContext, id: string): Promise<{ id: number; revoked: boolean }> {
165
- const normalizedId = normalizeNonBlank(id, "Model key id");
166
- const numericId = parseModelKeyId(normalizedId);
167
- try {
168
- await ctx.http.request<void>({
169
- method: "DELETE",
170
- path: `/model_keys/${encodeURIComponent(normalizedId)}`,
171
- headers: { "Idempotency-Key": randomUUID() },
172
- });
173
- } catch (error) {
174
- throw addModelKeysWriteScopeGuidance(error);
175
- }
176
- return { id: numericId, revoked: true };
177
- }
178
-
179
- export async function modelKeysRevoke(ctx: CliContext, id: string): Promise<string> {
180
- const res = await modelKeysRevokeData(ctx, id);
181
- return `Revoked ${res.id}.`;
182
- }
183
-
184
- export function validateModelKeyId(id: string): void {
185
- normalizeModelKeyId(id);
186
- }
187
-
188
- async function resolvePlaintext(opts: ModelKeyCreateOptions): Promise<string> {
189
- if (opts.key !== undefined && opts.keyStdin) {
190
- throw new Error("Use either --key or --key-stdin, not both.");
191
- }
192
- if (opts.key !== undefined) return normalizePlaintext(opts.key, "--key");
193
- if (opts.keyStdin) {
194
- return readModelKeyStdin();
195
- }
196
- throw new Error("Model key plaintext is required. Pass --key or --key-stdin.");
197
- }
198
-
199
- async function readModelKeyStdin(): Promise<string> {
200
- if (process.stdin.isTTY) {
201
- throw new Error(
202
- "No piped input. Usage: echo $PROVIDER_API_KEY | dharta model-keys create anthropic Claude --key-stdin",
203
- );
204
- }
205
- const chunks: Buffer[] = [];
206
- for await (const chunk of process.stdin) chunks.push(Buffer.from(chunk));
207
- return normalizeModelKeyStdin(Buffer.concat(chunks).toString("utf8"));
208
- }
209
-
210
- function normalizeModelKeyStdin(value: string): string {
211
- const text = value.trim();
212
- if (text) return text;
213
- throw new Error(
214
- "No model key on stdin. Usage: echo $PROVIDER_API_KEY | dharta model-keys create anthropic Claude --key-stdin",
215
- );
216
- }
217
-
218
- function normalizeModelKeyName(name: string): string {
219
- const normalized = name.trim();
220
- if (!normalized) {
221
- throw new Error("Model key name cannot be blank.");
222
- }
223
- return normalized;
224
- }
225
-
226
- function normalizeModelKeyId(id: string): string {
227
- const normalized = normalizeNonBlank(id, "Model key id");
228
- parseModelKeyId(normalized);
229
- return normalized;
230
- }
231
-
232
- function parseModelKeyId(id: string): number {
233
- return parsePositiveInteger(id, "Model key id");
234
- }
235
-
236
- function normalizePlaintext(value: string, flag: string): string {
237
- const normalized = value.trim();
238
- if (!normalized) {
239
- throw new Error(`${flag} cannot be blank.`);
240
- }
241
- return normalized;
242
- }
243
-
244
- function normalizeEndpointUrl(value: string): string {
245
- const normalized = normalizeHttpUrl(value, "--endpoint-url");
246
- const parsed = new URL(normalized);
247
- if (parsed.protocol !== "https:") {
248
- throw new Error("--endpoint-url must use https.");
249
- }
250
- if (parsed.username || parsed.password || parsed.search || parsed.hash) {
251
- throw new Error("--endpoint-url cannot include credentials, a query string, or a fragment.");
252
- }
253
- return normalized;
254
- }
255
-
256
- // Storing or revoking a connector needs `model_keys:write`, a tenant-admin
257
- // scope that the `dharta login` device-flow credential deliberately never
258
- // carries (that key is long-lived and non-admin, so it can't hold a
259
- // forced-expiry admin scope). A CLI login therefore always 403s here. The
260
- // generic scope hint says "manage key scopes", but the login key's scopes are
261
- // fixed — you cannot add the scope to it — so name the real path: store the
262
- // connector in the dashboard, or mint a bounded key and re-auth with a token.
263
- function addModelKeysWriteScopeGuidance(error: unknown): Error {
264
- if (!(error instanceof Error)) return new Error(String(error));
265
- const status = (error as Error & { status?: unknown }).status;
266
- if (
267
- status === 403 &&
268
- /model_keys:write/.test(error.message) &&
269
- !error.message.includes("dharta login --with-token")
270
- ) {
271
- error.message +=
272
- `${error.message.endsWith(".") ? "" : "."} ` +
273
- "The `dharta login` credential cannot hold model_keys:write. Store the connector from the dashboard " +
274
- "(`dharta open model-keys`), or mint a bounded key with model_keys:write there (`dharta open api-keys`) " +
275
- "and re-authenticate with `dharta login --with-token`.";
276
- }
277
- return error;
278
- }