@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.
- package/LICENSE +1 -1
- package/README.md +215 -11
- package/dist/agent.js +3 -2
- package/dist/agent.js.map +1 -1
- package/dist/api-error.js +6 -6
- package/dist/api-error.js.map +1 -1
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +860 -149
- package/dist/cli.js.map +1 -1
- package/dist/command-tree.d.ts +3 -0
- package/dist/command-tree.js +10 -0
- package/dist/command-tree.js.map +1 -0
- package/dist/commands/agents.d.ts +54 -17
- package/dist/commands/agents.js +246 -136
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/analytics.js +6 -5
- package/dist/commands/analytics.js.map +1 -1
- package/dist/commands/api.js +71 -86
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/appearance.js +5 -6
- package/dist/commands/appearance.js.map +1 -1
- package/dist/commands/artifact.js +7 -6
- package/dist/commands/artifact.js.map +1 -1
- package/dist/commands/audit-log.js +2 -1
- package/dist/commands/audit-log.js.map +1 -1
- package/dist/commands/auth.js +26 -6
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/caps.js +11 -15
- package/dist/commands/caps.js.map +1 -1
- package/dist/commands/deploy.js +25 -10
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts +10 -1
- package/dist/commands/dev.js +56 -25
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.js +60 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/embed-keys.js +4 -13
- package/dist/commands/embed-keys.js.map +1 -1
- package/dist/commands/env.js +4 -7
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/files.js +3 -4
- package/dist/commands/files.js.map +1 -1
- package/dist/commands/fleet.d.ts +129 -0
- package/dist/commands/fleet.js +408 -0
- package/dist/commands/fleet.js.map +1 -0
- package/dist/commands/genui.d.ts +2 -0
- package/dist/commands/genui.js +53 -0
- package/dist/commands/genui.js.map +1 -0
- package/dist/commands/git-credential.js +2 -3
- package/dist/commands/git-credential.js.map +1 -1
- package/dist/commands/kartas.d.ts +9 -0
- package/dist/commands/kartas.js +33 -11
- package/dist/commands/kartas.js.map +1 -1
- package/dist/commands/keys.d.ts +17 -18
- package/dist/commands/keys.js +108 -19
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/login.js +2 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/members.d.ts +10 -0
- package/dist/commands/members.js +20 -6
- package/dist/commands/members.js.map +1 -1
- package/dist/commands/model-connections.d.ts +44 -0
- package/dist/commands/model-connections.js +435 -0
- package/dist/commands/model-connections.js.map +1 -0
- package/dist/commands/open.d.ts +2 -2
- package/dist/commands/open.js +4 -3
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/org.d.ts +9 -0
- package/dist/commands/org.js +42 -0
- package/dist/commands/org.js.map +1 -0
- package/dist/commands/organization.d.ts +16 -0
- package/dist/commands/organization.js +118 -0
- package/dist/commands/organization.js.map +1 -0
- package/dist/commands/parity.js +1 -3
- package/dist/commands/parity.js.map +1 -1
- package/dist/commands/repos.d.ts +4 -0
- package/dist/commands/repos.js +17 -0
- package/dist/commands/repos.js.map +1 -0
- package/dist/commands/rollback.js +2 -3
- package/dist/commands/rollback.js.map +1 -1
- package/dist/commands/schedules.js +26 -21
- package/dist/commands/schedules.js.map +1 -1
- package/dist/commands/scopes.js +8 -1
- package/dist/commands/scopes.js.map +1 -1
- package/dist/commands/sessions.js +9 -3
- package/dist/commands/sessions.js.map +1 -1
- package/dist/commands/setup.js +5 -4
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/update.d.ts +1 -0
- package/dist/commands/update.js +24 -11
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/webhooks.d.ts +4 -1
- package/dist/commands/webhooks.js +21 -16
- package/dist/commands/webhooks.js.map +1 -1
- package/dist/completions.js +24 -13
- package/dist/completions.js.map +1 -1
- package/dist/config.d.ts +12 -0
- package/dist/config.js +121 -7
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +2 -0
- package/dist/context.js +23 -7
- package/dist/context.js.map +1 -1
- package/dist/docs/cli-reference.d.ts +2 -0
- package/dist/docs/cli-reference.js +191 -0
- package/dist/docs/cli-reference.js.map +1 -0
- package/dist/exit-codes.d.ts +25 -0
- package/dist/exit-codes.js +107 -0
- package/dist/exit-codes.js.map +1 -0
- package/dist/genui.d.ts +178 -0
- package/dist/genui.js +1130 -0
- package/dist/genui.js.map +1 -0
- package/dist/harnesses.js +2 -1
- package/dist/harnesses.js.map +1 -1
- package/dist/jq.d.ts +4 -0
- package/dist/jq.js +91 -0
- package/dist/jq.js.map +1 -0
- package/dist/login-offer.js +6 -2
- package/dist/login-offer.js.map +1 -1
- package/dist/manifest.d.ts +12 -0
- package/dist/manifest.js +126 -0
- package/dist/manifest.js.map +1 -1
- package/dist/model-auth.d.ts +29 -0
- package/dist/model-auth.js +117 -0
- package/dist/model-auth.js.map +1 -0
- package/dist/model-settings.d.ts +23 -0
- package/dist/model-settings.js +186 -0
- package/dist/model-settings.js.map +1 -0
- package/dist/money.js +2 -1
- package/dist/money.js.map +1 -1
- package/dist/output.d.ts +6 -0
- package/dist/output.js +54 -0
- package/dist/output.js.map +1 -1
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +1 -1
- package/dist/scaffold.js +2 -1
- package/dist/scaffold.js.map +1 -1
- package/dist/validators.js +17 -11
- package/dist/validators.js.map +1 -1
- package/dist/version-check.d.ts +1 -1
- package/dist/version-check.js +1 -1
- package/dist/version-check.js.map +1 -1
- package/node_modules/@dharta/contracts/LICENSE +21 -0
- package/node_modules/@dharta/contracts/README.md +45 -0
- package/node_modules/@dharta/contracts/artifact-runtime.json +750 -0
- package/node_modules/@dharta/contracts/dist/activity.d.ts +62 -0
- package/node_modules/@dharta/contracts/dist/activity.d.ts.map +1 -0
- package/node_modules/@dharta/contracts/dist/activity.js +178 -0
- package/node_modules/@dharta/contracts/dist/activity.js.map +1 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime-formats.d.ts +20 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime-formats.d.ts.map +1 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime-formats.js +53 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime-formats.js.map +1 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime-validators.generated.d.ts +37 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime-validators.generated.d.ts.map +1 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime-validators.generated.js +5107 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime-validators.generated.js.map +1 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime.d.ts +154 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime.d.ts.map +1 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime.generated.d.ts +1670 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime.generated.d.ts.map +1 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime.generated.js +1903 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime.generated.js.map +1 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime.js +377 -0
- package/node_modules/@dharta/contracts/dist/artifact-runtime.js.map +1 -0
- package/node_modules/@dharta/contracts/dist/index.d.ts +6 -0
- package/node_modules/@dharta/contracts/dist/index.d.ts.map +1 -0
- package/node_modules/@dharta/contracts/dist/index.js +6 -0
- package/node_modules/@dharta/contracts/dist/index.js.map +1 -0
- package/node_modules/@dharta/contracts/dist/model-auth.d.ts +31 -0
- package/node_modules/@dharta/contracts/dist/model-auth.d.ts.map +1 -0
- package/node_modules/@dharta/contracts/dist/model-auth.js +45 -0
- package/node_modules/@dharta/contracts/dist/model-auth.js.map +1 -0
- package/node_modules/@dharta/contracts/dist/tasks.d.ts +44 -0
- package/node_modules/@dharta/contracts/dist/tasks.d.ts.map +1 -0
- package/node_modules/@dharta/contracts/dist/tasks.js +127 -0
- package/node_modules/@dharta/contracts/dist/tasks.js.map +1 -0
- package/node_modules/@dharta/contracts/dist/wire-events.d.ts +71 -0
- package/node_modules/@dharta/contracts/dist/wire-events.d.ts.map +1 -0
- package/node_modules/@dharta/contracts/dist/wire-events.js +48 -0
- package/node_modules/@dharta/contracts/dist/wire-events.js.map +1 -0
- package/node_modules/@dharta/contracts/model-auth-capabilities-v1.json +168 -0
- package/node_modules/@dharta/contracts/model-auth-reasons-v1.json +38 -0
- package/node_modules/@dharta/contracts/package.json +44 -0
- package/node_modules/@dharta/contracts/src/activity.ts +215 -0
- package/node_modules/@dharta/contracts/src/artifact-runtime-formats.ts +54 -0
- package/node_modules/@dharta/contracts/src/artifact-runtime-validators.generated.ts +29 -0
- package/node_modules/@dharta/contracts/src/artifact-runtime.generated.ts +2093 -0
- package/node_modules/@dharta/contracts/src/artifact-runtime.ts +520 -0
- package/node_modules/@dharta/contracts/src/index.ts +5 -0
- package/node_modules/@dharta/contracts/src/model-auth.ts +82 -0
- package/node_modules/@dharta/contracts/src/tasks.ts +142 -0
- package/node_modules/@dharta/contracts/src/wire-events.ts +150 -0
- package/node_modules/@dharta/contracts/wire-events.json +29 -0
- package/node_modules/@dharta/sdk/LICENSE +1 -1
- package/node_modules/@dharta/sdk/README.md +22 -8
- package/node_modules/@dharta/sdk/dist/errors.d.ts +9 -7
- package/node_modules/@dharta/sdk/dist/errors.d.ts.map +1 -1
- package/node_modules/@dharta/sdk/dist/errors.js +36 -18
- package/node_modules/@dharta/sdk/dist/errors.js.map +1 -1
- package/node_modules/@dharta/sdk/dist/fleet.d.ts +69 -0
- package/node_modules/@dharta/sdk/dist/fleet.d.ts.map +1 -0
- package/node_modules/@dharta/sdk/dist/fleet.js +240 -0
- package/node_modules/@dharta/sdk/dist/fleet.js.map +1 -0
- package/node_modules/@dharta/sdk/dist/http.d.ts +6 -2
- package/node_modules/@dharta/sdk/dist/http.d.ts.map +1 -1
- package/node_modules/@dharta/sdk/dist/http.js +71 -12
- package/node_modules/@dharta/sdk/dist/http.js.map +1 -1
- package/node_modules/@dharta/sdk/dist/idempotency.d.ts +12 -0
- package/node_modules/@dharta/sdk/dist/idempotency.d.ts.map +1 -0
- package/node_modules/@dharta/sdk/dist/idempotency.js +72 -0
- package/node_modules/@dharta/sdk/dist/idempotency.js.map +1 -0
- package/node_modules/@dharta/sdk/dist/index.d.ts +20 -6
- package/node_modules/@dharta/sdk/dist/index.d.ts.map +1 -1
- package/node_modules/@dharta/sdk/dist/index.js +27 -4
- package/node_modules/@dharta/sdk/dist/index.js.map +1 -1
- package/node_modules/@dharta/sdk/dist/resources.d.ts +108 -13
- package/node_modules/@dharta/sdk/dist/resources.d.ts.map +1 -1
- package/node_modules/@dharta/sdk/dist/resources.js +403 -57
- package/node_modules/@dharta/sdk/dist/resources.js.map +1 -1
- package/node_modules/@dharta/sdk/dist/types.d.ts +436 -16
- package/node_modules/@dharta/sdk/dist/types.d.ts.map +1 -1
- package/node_modules/@dharta/sdk/dist/types.js +31 -2
- package/node_modules/@dharta/sdk/dist/types.js.map +1 -1
- package/node_modules/@dharta/sdk/package.json +9 -3
- package/node_modules/@dharta/sdk/src/errors.ts +41 -18
- package/node_modules/@dharta/sdk/src/fleet.ts +339 -0
- package/node_modules/@dharta/sdk/src/http.ts +110 -17
- package/node_modules/@dharta/sdk/src/idempotency.ts +101 -0
- package/node_modules/@dharta/sdk/src/index.ts +50 -11
- package/node_modules/@dharta/sdk/src/resources.ts +549 -68
- package/node_modules/@dharta/sdk/src/types.ts +629 -20
- package/package.json +16 -6
- package/src/agent.ts +3 -2
- package/src/api-error.ts +6 -5
- package/src/cli.ts +978 -163
- package/src/command-tree.ts +13 -0
- package/src/commands/agents.ts +365 -167
- package/src/commands/analytics.ts +6 -5
- package/src/commands/api.ts +73 -92
- package/src/commands/appearance.ts +5 -6
- package/src/commands/artifact.ts +7 -6
- package/src/commands/audit-log.ts +2 -1
- package/src/commands/auth.ts +25 -5
- package/src/commands/caps.ts +11 -15
- package/src/commands/deploy.ts +18 -4
- package/src/commands/dev.ts +86 -25
- package/src/commands/doctor.ts +69 -0
- package/src/commands/embed-keys.ts +4 -14
- package/src/commands/env.ts +4 -7
- package/src/commands/files.ts +3 -4
- package/src/commands/fleet.ts +672 -0
- package/src/commands/genui.ts +59 -0
- package/src/commands/git-credential.ts +2 -3
- package/src/commands/kartas.ts +45 -11
- package/src/commands/keys.ts +152 -35
- package/src/commands/login.ts +2 -1
- package/src/commands/members.ts +31 -6
- package/src/commands/model-connections.ts +547 -0
- package/src/commands/open.ts +5 -4
- package/src/commands/org.ts +57 -0
- package/src/commands/organization.ts +153 -0
- package/src/commands/parity.ts +1 -3
- package/src/commands/repos.ts +23 -0
- package/src/commands/rollback.ts +2 -3
- package/src/commands/schedules.ts +33 -22
- package/src/commands/scopes.ts +8 -1
- package/src/commands/sessions.ts +9 -3
- package/src/commands/setup.ts +5 -4
- package/src/commands/update.ts +28 -12
- package/src/commands/webhooks.ts +30 -19
- package/src/completions.ts +25 -13
- package/src/config.ts +141 -9
- package/src/context.ts +34 -7
- package/src/docs/cli-reference.ts +206 -0
- package/src/exit-codes.ts +122 -0
- package/src/genui.ts +1398 -0
- package/src/harnesses.ts +2 -1
- package/src/jq.ts +109 -0
- package/src/login-offer.ts +6 -2
- package/src/manifest.ts +134 -0
- package/src/model-auth.ts +173 -0
- package/src/model-settings.ts +222 -0
- package/src/money.ts +5 -1
- package/src/output.ts +60 -0
- package/src/runtime.ts +1 -1
- package/src/scaffold.ts +2 -1
- package/src/validators.ts +18 -11
- package/src/version-check.ts +1 -1
- package/dist/commands/model-keys.d.ts +0 -22
- package/dist/commands/model-keys.js +0 -222
- package/dist/commands/model-keys.js.map +0 -1
- package/src/commands/model-keys.ts +0 -278
package/dist/commands/login.js
CHANGED
|
@@ -5,6 +5,7 @@ import { cliFormatError, cliFormatNetworkError } from "../api-error.js";
|
|
|
5
5
|
import { DEFAULT_BASE_URL, DEFAULT_GIT_BASE_URL, saveProfile, } from "../config.js";
|
|
6
6
|
import { deviceFlowLogin } from "../device-flow.js";
|
|
7
7
|
import { normalizeHttpUrl, normalizeNonBlank } from "../validators.js";
|
|
8
|
+
import { CliUsageError } from "../exit-codes.js";
|
|
8
9
|
// Default path is the RFC 8628 device flow (no key ever pasted); the
|
|
9
10
|
// `--with-token` / apiKey path is the gh-parity fallback for CI and
|
|
10
11
|
// air-gapped boxes.
|
|
@@ -21,7 +22,7 @@ export async function login(opts = {}) {
|
|
|
21
22
|
...opts.deviceFlow,
|
|
22
23
|
}));
|
|
23
24
|
if (!key) {
|
|
24
|
-
throw new
|
|
25
|
+
throw new CliUsageError("No API key provided. Run `dharta login` for the browser flow, or pipe a key: " +
|
|
25
26
|
"echo $DHARTA_API_KEY | dharta login --with-token");
|
|
26
27
|
}
|
|
27
28
|
// Validate the credential and learn who it is in one round-trip.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAA0B,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CliContext } from "../context.js";
|
|
2
|
+
import type { MemberInvitation } from "@dharta/sdk";
|
|
2
3
|
export interface MemberRow {
|
|
3
4
|
id: number;
|
|
4
5
|
email: string;
|
|
@@ -29,4 +30,13 @@ export declare function membersRemoveData(ctx: CliContext, id: string): Promise<
|
|
|
29
30
|
removed: boolean;
|
|
30
31
|
}>;
|
|
31
32
|
export declare function membersRemove(ctx: CliContext, id: string): Promise<string>;
|
|
33
|
+
export declare function membersRevokeInvitationData(ctx: CliContext, id: string): Promise<{
|
|
34
|
+
id: string;
|
|
35
|
+
revoked: boolean;
|
|
36
|
+
}>;
|
|
37
|
+
export declare function membersRevokeInvitation(ctx: CliContext, id: string): Promise<string>;
|
|
38
|
+
export declare function membersResendInvitationData(ctx: CliContext, id: string): Promise<{
|
|
39
|
+
invitation: MemberInvitation;
|
|
40
|
+
}>;
|
|
41
|
+
export declare function membersResendInvitation(ctx: CliContext, id: string): Promise<string>;
|
|
32
42
|
export {};
|
package/dist/commands/members.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
1
|
import { table } from "../output.js";
|
|
3
2
|
import { closestChoice, normalizeNonBlank, parsePositiveInteger } from "../validators.js";
|
|
3
|
+
import { CliUsageError } from "../exit-codes.js";
|
|
4
4
|
const MEMBER_ROLES = ["owner", "admin", "developer", "billing", "viewer"];
|
|
5
5
|
export async function membersListData(ctx) {
|
|
6
6
|
return ctx.http.request({ path: "/api/members" });
|
|
@@ -21,7 +21,6 @@ export async function membersInviteData(ctx, email, role) {
|
|
|
21
21
|
method: "POST",
|
|
22
22
|
path: "/api/members/invitations",
|
|
23
23
|
body: { email: normalizedEmail, role: normalizedRole },
|
|
24
|
-
headers: { "Idempotency-Key": randomUUID() },
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
26
|
export async function membersInvite(ctx, email, role) {
|
|
@@ -38,7 +37,6 @@ export async function membersSetRoleData(ctx, id, role) {
|
|
|
38
37
|
method: "PATCH",
|
|
39
38
|
path: `/api/members/${encodeURIComponent(memberId)}`,
|
|
40
39
|
body: { role: normalizedRole },
|
|
41
|
-
headers: { "Idempotency-Key": randomUUID() },
|
|
42
40
|
});
|
|
43
41
|
}
|
|
44
42
|
export async function membersSetRole(ctx, id, role) {
|
|
@@ -50,7 +48,6 @@ export async function membersRemoveData(ctx, id) {
|
|
|
50
48
|
await ctx.http.request({
|
|
51
49
|
method: "DELETE",
|
|
52
50
|
path: `/api/members/${encodeURIComponent(memberId)}`,
|
|
53
|
-
headers: { "Idempotency-Key": randomUUID() },
|
|
54
51
|
});
|
|
55
52
|
return { id: String(memberId), removed: true };
|
|
56
53
|
}
|
|
@@ -58,10 +55,27 @@ export async function membersRemove(ctx, id) {
|
|
|
58
55
|
const res = await membersRemoveData(ctx, id);
|
|
59
56
|
return `Removed member ${res.id}.`;
|
|
60
57
|
}
|
|
58
|
+
export async function membersRevokeInvitationData(ctx, id) {
|
|
59
|
+
const invitationId = parsePositiveInteger(id, "invitation id");
|
|
60
|
+
await ctx.sdk.members.revokeInvitation(invitationId);
|
|
61
|
+
return { id: String(invitationId), revoked: true };
|
|
62
|
+
}
|
|
63
|
+
export async function membersRevokeInvitation(ctx, id) {
|
|
64
|
+
const res = await membersRevokeInvitationData(ctx, id);
|
|
65
|
+
return `Revoked invitation ${res.id}.`;
|
|
66
|
+
}
|
|
67
|
+
export async function membersResendInvitationData(ctx, id) {
|
|
68
|
+
const invitationId = parsePositiveInteger(id, "invitation id");
|
|
69
|
+
return { invitation: await ctx.sdk.members.resendInvitation(invitationId) };
|
|
70
|
+
}
|
|
71
|
+
export async function membersResendInvitation(ctx, id) {
|
|
72
|
+
const res = await membersResendInvitationData(ctx, id);
|
|
73
|
+
return `Re-sent the invitation to ${res.invitation.email}. The original link still works.`;
|
|
74
|
+
}
|
|
61
75
|
function normalizeEmail(email) {
|
|
62
76
|
const normalized = email.trim();
|
|
63
77
|
if (!normalized) {
|
|
64
|
-
throw new
|
|
78
|
+
throw new CliUsageError("Member email cannot be blank.");
|
|
65
79
|
}
|
|
66
80
|
return normalized;
|
|
67
81
|
}
|
|
@@ -71,7 +85,7 @@ function normalizeRole(role) {
|
|
|
71
85
|
return normalized;
|
|
72
86
|
}
|
|
73
87
|
const suggestion = closestChoice(normalized, MEMBER_ROLES);
|
|
74
|
-
throw new
|
|
88
|
+
throw new CliUsageError(`Unknown member role ${normalized}. Allowed roles: ${MEMBER_ROLES.join(", ")}.` +
|
|
75
89
|
(suggestion ? ` Did you mean ${suggestion}?` : ""));
|
|
76
90
|
}
|
|
77
91
|
//# sourceMappingURL=members.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/commands/members.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/commands/members.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { CliContext } from "../context.js";
|
|
2
|
+
import type { ModelConnection, ModelConnectionOffers, ModelConnectionProvider } from "@dharta/sdk";
|
|
3
|
+
export declare const MODEL_API_FORMATS: readonly ["anthropic_messages", "openai_chat_completions", "openai_responses"];
|
|
4
|
+
export interface ModelConnectionCreateOptions {
|
|
5
|
+
key?: string;
|
|
6
|
+
keyStdin?: boolean;
|
|
7
|
+
slug?: string;
|
|
8
|
+
endpointUrl?: string;
|
|
9
|
+
apiFormat?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ModelConnectionRotateOptions {
|
|
12
|
+
key?: string;
|
|
13
|
+
keyStdin?: boolean;
|
|
14
|
+
name?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ModelConnectionModelsOptions {
|
|
17
|
+
enable?: string;
|
|
18
|
+
enableStdin?: boolean;
|
|
19
|
+
default?: string;
|
|
20
|
+
clearDefault?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function modelConnectionsListData(ctx: CliContext): Promise<ModelConnection[]>;
|
|
23
|
+
export declare function modelConnectionsList(ctx: CliContext): Promise<string>;
|
|
24
|
+
export declare function modelConnectionsCreateData(ctx: CliContext, provider: ModelConnectionProvider, name: string, opts?: ModelConnectionCreateOptions): Promise<ModelConnection>;
|
|
25
|
+
export declare function modelConnectionsCreate(ctx: CliContext, provider: ModelConnectionProvider, name: string, opts?: ModelConnectionCreateOptions): Promise<string>;
|
|
26
|
+
export declare function validateModelConnectionsCreateOptions(provider: ModelConnectionProvider, name: string, opts?: ModelConnectionCreateOptions): void;
|
|
27
|
+
export declare function prepareModelConnectionsCreateOptions(provider: ModelConnectionProvider, name: string, opts?: ModelConnectionCreateOptions, read?: () => Promise<string>): Promise<ModelConnectionCreateOptions>;
|
|
28
|
+
export declare function modelConnectionsRotateData(ctx: CliContext, reference: string, opts: ModelConnectionRotateOptions): Promise<ModelConnection>;
|
|
29
|
+
export declare function modelConnectionsRotate(ctx: CliContext, reference: string, opts: ModelConnectionRotateOptions): Promise<string>;
|
|
30
|
+
export declare function validateModelConnectionsRotateOptions(reference: string, opts: ModelConnectionRotateOptions): void;
|
|
31
|
+
export declare function prepareModelConnectionsRotateOptions(reference: string, opts: ModelConnectionRotateOptions, read?: () => Promise<string>): Promise<ModelConnectionRotateOptions>;
|
|
32
|
+
export declare function modelConnectionsModelsData(ctx: CliContext, reference: string): Promise<ModelConnectionOffers>;
|
|
33
|
+
export declare function modelConnectionsModels(ctx: CliContext, reference: string): Promise<string>;
|
|
34
|
+
export declare function modelConnectionsConfigureModelsData(ctx: CliContext, reference: string, opts: ModelConnectionModelsOptions): Promise<ModelConnectionOffers>;
|
|
35
|
+
export declare function modelConnectionsConfigureModels(ctx: CliContext, reference: string, opts: ModelConnectionModelsOptions): Promise<string>;
|
|
36
|
+
export declare function modelConnectionsModelsWritesOffers(opts: ModelConnectionModelsOptions): boolean;
|
|
37
|
+
export declare function validateModelConnectionsModelsOptions(reference: string, opts: ModelConnectionModelsOptions): void;
|
|
38
|
+
export declare function prepareModelConnectionsModelsOptions(reference: string, opts: ModelConnectionModelsOptions, read?: () => Promise<string>): Promise<ModelConnectionModelsOptions>;
|
|
39
|
+
export declare function modelConnectionsRevokeData(ctx: CliContext, reference: string): Promise<{
|
|
40
|
+
id: number | string;
|
|
41
|
+
revoked: boolean;
|
|
42
|
+
}>;
|
|
43
|
+
export declare function modelConnectionsRevoke(ctx: CliContext, reference: string): Promise<string>;
|
|
44
|
+
export declare function validateModelConnectionReference(reference: string): void;
|
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
import { fmtTs, table } from "../output.js";
|
|
2
|
+
import { normalizeStoredConnectorSlug } from "../model-settings.js";
|
|
3
|
+
import { CliUsageError } from "../exit-codes.js";
|
|
4
|
+
import { closestChoice, normalizeHttpUrl, normalizeNonBlank, parsePositiveInteger } from "../validators.js";
|
|
5
|
+
import { MODEL_CONNECTION_PROVIDERS } from "../model-auth.js";
|
|
6
|
+
// At most this many models in one enabled set, matching the server.
|
|
7
|
+
const MAX_OFFER_MODELS = 256;
|
|
8
|
+
export const MODEL_API_FORMATS = [
|
|
9
|
+
"anthropic_messages",
|
|
10
|
+
"openai_chat_completions",
|
|
11
|
+
"openai_responses",
|
|
12
|
+
];
|
|
13
|
+
export async function modelConnectionsListData(ctx) {
|
|
14
|
+
const res = await ctx.http.request({ path: "/model_connections" });
|
|
15
|
+
return res.data;
|
|
16
|
+
}
|
|
17
|
+
export async function modelConnectionsList(ctx) {
|
|
18
|
+
const keys = await modelConnectionsListData(ctx);
|
|
19
|
+
if (keys.length === 0)
|
|
20
|
+
return "No model connections. Store one with: dharta models auth create <provider> <name> --key-stdin";
|
|
21
|
+
return table(keys.map((key) => ({
|
|
22
|
+
id: String(key.id),
|
|
23
|
+
slug: key.slug ?? "",
|
|
24
|
+
provider: key.provider,
|
|
25
|
+
name: key.name,
|
|
26
|
+
tail: key.tail,
|
|
27
|
+
created: fmtTs(key.created_at),
|
|
28
|
+
revoked: fmtTs(key.revoked_at),
|
|
29
|
+
})));
|
|
30
|
+
}
|
|
31
|
+
export async function modelConnectionsCreateData(ctx, provider, name, opts = {}) {
|
|
32
|
+
validateModelConnectionsCreateOptions(provider, name, opts);
|
|
33
|
+
const normalizedProvider = normalizeProvider(provider);
|
|
34
|
+
const normalizedName = normalizeModelConnectionName(name);
|
|
35
|
+
const plaintext = await resolvePlaintext(opts);
|
|
36
|
+
const body = { provider: normalizedProvider, name: normalizedName, plaintext };
|
|
37
|
+
if (opts.slug !== undefined)
|
|
38
|
+
body.slug = normalizeStoredConnectorSlug(opts.slug, "--slug");
|
|
39
|
+
if (opts.endpointUrl)
|
|
40
|
+
body.endpoint_url = normalizeEndpointUrl(opts.endpointUrl);
|
|
41
|
+
if (opts.apiFormat)
|
|
42
|
+
body.api_format = normalizeApiFormat(opts.apiFormat);
|
|
43
|
+
try {
|
|
44
|
+
const res = await ctx.http.request({
|
|
45
|
+
method: "POST",
|
|
46
|
+
path: "/model_connections",
|
|
47
|
+
body,
|
|
48
|
+
});
|
|
49
|
+
return res.model_connection;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
throw addModelConnectionsWriteScopeGuidance(error);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export async function modelConnectionsCreate(ctx, provider, name, opts = {}) {
|
|
56
|
+
const key = await modelConnectionsCreateData(ctx, provider, name, opts);
|
|
57
|
+
// RFC 0070 §4.2.5: a stored connector with no enabled offer row resolves
|
|
58
|
+
// nothing, so name the command that finishes the job.
|
|
59
|
+
return `Stored ${key.provider} connector ${connectorLabel(key)} (${key.id}).\n` +
|
|
60
|
+
`It serves no turns until you enable a model: ${enableModelsHint(connectorLabel(key))}`;
|
|
61
|
+
}
|
|
62
|
+
// One spelling of the enable-and-default command, so every place that has to
|
|
63
|
+
// point at it points at the same thing.
|
|
64
|
+
function enableModelsHint(slug) {
|
|
65
|
+
return `dharta models auth models ${slug} --enable <model> --default <model>`;
|
|
66
|
+
}
|
|
67
|
+
// Address the connector by its slug: that is what a model reference and a
|
|
68
|
+
// connector order use.
|
|
69
|
+
function connectorLabel(key) {
|
|
70
|
+
return key.slug;
|
|
71
|
+
}
|
|
72
|
+
export function validateModelConnectionsCreateOptions(provider, name, opts = {}) {
|
|
73
|
+
normalizeProvider(provider);
|
|
74
|
+
normalizeModelConnectionName(name);
|
|
75
|
+
if (opts.slug !== undefined) {
|
|
76
|
+
normalizeStoredConnectorSlug(opts.slug, "--slug");
|
|
77
|
+
}
|
|
78
|
+
if (opts.key !== undefined && opts.keyStdin) {
|
|
79
|
+
throw new CliUsageError("Use either --key or --key-stdin, not both.");
|
|
80
|
+
}
|
|
81
|
+
if (opts.key !== undefined) {
|
|
82
|
+
normalizePlaintext(opts.key, "--key");
|
|
83
|
+
}
|
|
84
|
+
else if (!opts.keyStdin) {
|
|
85
|
+
throw new CliUsageError("Model connection plaintext is required. Pass --key or --key-stdin.");
|
|
86
|
+
}
|
|
87
|
+
else if (process.stdin.isTTY) {
|
|
88
|
+
throw new CliUsageError("No piped input. Usage: echo $PROVIDER_API_KEY | dharta models auth create anthropic Claude --key-stdin");
|
|
89
|
+
}
|
|
90
|
+
if (opts.endpointUrl !== undefined) {
|
|
91
|
+
normalizeEndpointUrl(opts.endpointUrl);
|
|
92
|
+
}
|
|
93
|
+
if (opts.apiFormat !== undefined) {
|
|
94
|
+
normalizeApiFormat(opts.apiFormat);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function normalizeProvider(provider) {
|
|
98
|
+
const normalized = normalizeNonBlank(provider, "Model connection provider");
|
|
99
|
+
if (MODEL_CONNECTION_PROVIDERS.includes(normalized)) {
|
|
100
|
+
return normalized;
|
|
101
|
+
}
|
|
102
|
+
const suggestion = closestChoice(normalized, MODEL_CONNECTION_PROVIDERS);
|
|
103
|
+
throw new CliUsageError(`Unknown model connection provider ${normalized}. Allowed providers: ${MODEL_CONNECTION_PROVIDERS.join(", ")}.` +
|
|
104
|
+
(suggestion ? ` Did you mean ${suggestion}?` : ""));
|
|
105
|
+
}
|
|
106
|
+
function normalizeApiFormat(apiFormat) {
|
|
107
|
+
const normalized = normalizeNonBlank(apiFormat, "--api-format");
|
|
108
|
+
if (MODEL_API_FORMATS.includes(normalized)) {
|
|
109
|
+
return normalized;
|
|
110
|
+
}
|
|
111
|
+
const suggestion = closestChoice(normalized, MODEL_API_FORMATS);
|
|
112
|
+
throw new CliUsageError(`Unknown --api-format ${normalized}. Allowed API formats: ${MODEL_API_FORMATS.join(", ")}.` +
|
|
113
|
+
(suggestion ? ` Did you mean ${suggestion}?` : ""));
|
|
114
|
+
}
|
|
115
|
+
export async function prepareModelConnectionsCreateOptions(provider, name, opts = {}, read = readModelConnectionStdin) {
|
|
116
|
+
validateModelConnectionsCreateOptions(provider, name, opts);
|
|
117
|
+
if (!opts.keyStdin)
|
|
118
|
+
return opts;
|
|
119
|
+
return { ...opts, key: normalizeModelConnectionStdin(await read()), keyStdin: false };
|
|
120
|
+
}
|
|
121
|
+
export async function modelConnectionsRotateData(ctx, reference, opts) {
|
|
122
|
+
const normalizedReference = normalizeModelConnectionReference(reference);
|
|
123
|
+
validateModelConnectionsRotateOptions(reference, opts);
|
|
124
|
+
const body = { plaintext: await resolveRotatePlaintext(opts) };
|
|
125
|
+
if (opts.name !== undefined)
|
|
126
|
+
body.name = normalizeModelConnectionName(opts.name);
|
|
127
|
+
try {
|
|
128
|
+
// Through the SDK resource, not a hand-built request: a new endpoint ships
|
|
129
|
+
// an @dharta/sdk method and the curated command calls it (RFC 0048 D2), so
|
|
130
|
+
// the path, the wire shape, and the idempotency header have one owner.
|
|
131
|
+
return await ctx.sdk.modelConnections.rotate(modelConnectionReferenceId(normalizedReference), body);
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
throw addModelConnectionsWriteScopeGuidance(error);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
export async function modelConnectionsRotate(ctx, reference, opts) {
|
|
138
|
+
const key = await modelConnectionsRotateData(ctx, reference, opts);
|
|
139
|
+
return `Rotated ${key.provider} connector ${connectorLabel(key)} (${key.id}).`;
|
|
140
|
+
}
|
|
141
|
+
export function validateModelConnectionsRotateOptions(reference, opts) {
|
|
142
|
+
normalizeModelConnectionReference(reference);
|
|
143
|
+
if (opts.name !== undefined)
|
|
144
|
+
normalizeModelConnectionName(opts.name);
|
|
145
|
+
if (opts.key !== undefined && opts.keyStdin) {
|
|
146
|
+
throw new CliUsageError("Use either --key or --key-stdin, not both.");
|
|
147
|
+
}
|
|
148
|
+
if (opts.key !== undefined) {
|
|
149
|
+
normalizePlaintext(opts.key, "--key");
|
|
150
|
+
}
|
|
151
|
+
else if (!opts.keyStdin) {
|
|
152
|
+
throw new CliUsageError("Model connection plaintext is required. Pass --key or --key-stdin.");
|
|
153
|
+
}
|
|
154
|
+
else if (process.stdin.isTTY) {
|
|
155
|
+
throw new CliUsageError(ROTATE_STDIN.tty);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Read the piped secret before the command runs so `--json` output stays a
|
|
159
|
+
// single payload, mirroring prepareModelConnectionsCreateOptions.
|
|
160
|
+
export async function prepareModelConnectionsRotateOptions(reference, opts, read = () => readPipedStdin(ROTATE_STDIN)) {
|
|
161
|
+
validateModelConnectionsRotateOptions(reference, opts);
|
|
162
|
+
if (!opts.keyStdin)
|
|
163
|
+
return opts;
|
|
164
|
+
return { ...opts, key: normalizePipedStdin(await read(), ROTATE_STDIN), keyStdin: false };
|
|
165
|
+
}
|
|
166
|
+
export async function modelConnectionsModelsData(ctx, reference) {
|
|
167
|
+
const normalizedReference = normalizeModelConnectionReference(reference);
|
|
168
|
+
return ctx.sdk.modelConnections.models(modelConnectionReferenceId(normalizedReference));
|
|
169
|
+
}
|
|
170
|
+
export async function modelConnectionsModels(ctx, reference) {
|
|
171
|
+
return formatModelConnectionOffers(await modelConnectionsModelsData(ctx, reference));
|
|
172
|
+
}
|
|
173
|
+
export async function modelConnectionsConfigureModelsData(ctx, reference, opts) {
|
|
174
|
+
const normalizedReference = normalizeModelConnectionReference(reference);
|
|
175
|
+
validateModelConnectionsModelsOptions(reference, opts);
|
|
176
|
+
const enabled = parseEnabledModels(await resolveEnabledModels(opts));
|
|
177
|
+
const body = { enabled };
|
|
178
|
+
if (opts.clearDefault)
|
|
179
|
+
body.default = null;
|
|
180
|
+
if (opts.default !== undefined)
|
|
181
|
+
body.default = normalizeDefaultModel(opts.default, enabled);
|
|
182
|
+
try {
|
|
183
|
+
return await ctx.sdk.modelConnections.configureModels(modelConnectionReferenceId(normalizedReference), body);
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
throw addModelConnectionsWriteScopeGuidance(error);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
export async function modelConnectionsConfigureModels(ctx, reference, opts) {
|
|
190
|
+
return formatModelConnectionOffers(await modelConnectionsConfigureModelsData(ctx, reference, opts));
|
|
191
|
+
}
|
|
192
|
+
// `dharta models auth models <id|slug>` reads the offers; the same command
|
|
193
|
+
// writes them once you pass an enabled set.
|
|
194
|
+
export function modelConnectionsModelsWritesOffers(opts) {
|
|
195
|
+
return opts.enable !== undefined || opts.enableStdin === true;
|
|
196
|
+
}
|
|
197
|
+
export function validateModelConnectionsModelsOptions(reference, opts) {
|
|
198
|
+
normalizeModelConnectionReference(reference);
|
|
199
|
+
if (opts.enable !== undefined && opts.enableStdin) {
|
|
200
|
+
throw new CliUsageError("Use either --enable or --enable-stdin, not both.");
|
|
201
|
+
}
|
|
202
|
+
if (opts.default !== undefined && opts.clearDefault) {
|
|
203
|
+
throw new CliUsageError("Use either --default or --clear-default, not both.");
|
|
204
|
+
}
|
|
205
|
+
// A write replaces the whole enabled set, so a default-only call would
|
|
206
|
+
// disable every model. Make the caller state the set it wants.
|
|
207
|
+
if (!modelConnectionsModelsWritesOffers(opts)) {
|
|
208
|
+
if (opts.default !== undefined || opts.clearDefault) {
|
|
209
|
+
throw new CliUsageError("--default and --clear-default replace the enabled model set, so pass --enable <models> or --enable-stdin with them.");
|
|
210
|
+
}
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
if (opts.enable !== undefined)
|
|
214
|
+
parseEnabledModels(opts.enable);
|
|
215
|
+
if (opts.enableStdin && process.stdin.isTTY) {
|
|
216
|
+
throw new CliUsageError(ENABLE_STDIN.tty);
|
|
217
|
+
}
|
|
218
|
+
if (opts.default !== undefined && opts.enable !== undefined) {
|
|
219
|
+
normalizeDefaultModel(opts.default, parseEnabledModels(opts.enable));
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Read the piped model list before the command runs so `--json` output stays
|
|
223
|
+
// a single payload.
|
|
224
|
+
export async function prepareModelConnectionsModelsOptions(reference, opts, read = () => readPipedStdin(ENABLE_STDIN)) {
|
|
225
|
+
validateModelConnectionsModelsOptions(reference, opts);
|
|
226
|
+
if (!opts.enableStdin)
|
|
227
|
+
return opts;
|
|
228
|
+
const piped = normalizePipedStdin(await read(), ENABLE_STDIN);
|
|
229
|
+
const prepared = { ...opts, enable: piped, enableStdin: false };
|
|
230
|
+
validateModelConnectionsModelsOptions(reference, prepared);
|
|
231
|
+
return prepared;
|
|
232
|
+
}
|
|
233
|
+
// Revoking returns 204 with no body, so the payload reports what you asked to
|
|
234
|
+
// revoke: the numeric id for an all-digit argument, the slug otherwise.
|
|
235
|
+
export async function modelConnectionsRevokeData(ctx, reference) {
|
|
236
|
+
const normalizedReference = normalizeModelConnectionReference(reference);
|
|
237
|
+
try {
|
|
238
|
+
await ctx.http.request({
|
|
239
|
+
method: "DELETE",
|
|
240
|
+
path: `/model_connections/${encodeURIComponent(normalizedReference)}`,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
throw addModelConnectionsWriteScopeGuidance(error);
|
|
245
|
+
}
|
|
246
|
+
return { id: modelConnectionReferenceId(normalizedReference), revoked: true };
|
|
247
|
+
}
|
|
248
|
+
export async function modelConnectionsRevoke(ctx, reference) {
|
|
249
|
+
const res = await modelConnectionsRevokeData(ctx, reference);
|
|
250
|
+
return `Revoked ${res.id}.`;
|
|
251
|
+
}
|
|
252
|
+
export function validateModelConnectionReference(reference) {
|
|
253
|
+
normalizeModelConnectionReference(reference);
|
|
254
|
+
}
|
|
255
|
+
const CREATE_STDIN = {
|
|
256
|
+
tty: "No piped input. Usage: echo $PROVIDER_API_KEY | dharta models auth create anthropic Claude --key-stdin",
|
|
257
|
+
empty: "No model connection on stdin. Usage: echo $PROVIDER_API_KEY | dharta models auth create anthropic Claude --key-stdin",
|
|
258
|
+
};
|
|
259
|
+
const ROTATE_STDIN = {
|
|
260
|
+
tty: "No piped input. Usage: echo $PROVIDER_API_KEY | dharta models auth rotate openai-primary --key-stdin",
|
|
261
|
+
empty: "No model connection on stdin. Usage: echo $PROVIDER_API_KEY | dharta models auth rotate openai-primary --key-stdin",
|
|
262
|
+
};
|
|
263
|
+
const ENABLE_STDIN = {
|
|
264
|
+
tty: "No piped input. Usage: dharta models auth models openai-primary --enable-stdin < models.txt",
|
|
265
|
+
empty: "No model ids on stdin. Usage: dharta models auth models openai-primary --enable-stdin < models.txt",
|
|
266
|
+
};
|
|
267
|
+
function formatModelConnectionOffers(offers) {
|
|
268
|
+
const head = `Connector: ${offers.connector.slug} (${offers.connector.provider}, ${offers.connector.id})`;
|
|
269
|
+
const hint = enableModelsHint(offers.connector.slug);
|
|
270
|
+
if (offers.models.length === 0) {
|
|
271
|
+
return `${head}\n\nNo models. Enable some with: ${hint}`;
|
|
272
|
+
}
|
|
273
|
+
const rows = table(offers.models.map((offer) => ({
|
|
274
|
+
model: offer.model_id,
|
|
275
|
+
enabled: offer.enabled ? "yes" : "no",
|
|
276
|
+
default: offer.default ? "yes" : "",
|
|
277
|
+
})));
|
|
278
|
+
// A full catalog with nothing enabled reads as healthy but resolves nothing,
|
|
279
|
+
// so say it rather than leaving it to be read off the enabled column.
|
|
280
|
+
if (offers.models.every((offer) => !offer.enabled)) {
|
|
281
|
+
return `${head}\n\n${rows}\n\nNo models are enabled, so this connector serves no turns. Enable one with: ${hint}`;
|
|
282
|
+
}
|
|
283
|
+
return `${head}\n\n${rows}`;
|
|
284
|
+
}
|
|
285
|
+
// Accept the numeric connector id or its organization-unique slug; both
|
|
286
|
+
// address the same connector on every /model_connections path. An all-digit argument
|
|
287
|
+
// is always an id, never a slug, so there is nothing to disambiguate: the
|
|
288
|
+
// console never mints an all-digit slug.
|
|
289
|
+
function normalizeModelConnectionReference(reference) {
|
|
290
|
+
const normalized = normalizeNonBlank(reference, "Model connection id");
|
|
291
|
+
if (/^\d+$/.test(normalized))
|
|
292
|
+
return String(parseModelConnectionId(normalized));
|
|
293
|
+
try {
|
|
294
|
+
return normalizeStoredConnectorSlug(normalized, "Model connection slug");
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
// The argument is neither shape, so name both rather than only the one
|
|
298
|
+
// the slug validator happened to check. CliUsageError, because the numeric
|
|
299
|
+
// branch above already exits 2 through parsePositiveInteger and the same
|
|
300
|
+
// argument must not exit differently depending on which shape it missed.
|
|
301
|
+
throw new CliUsageError(`${error instanceof Error ? error.message : String(error)} ` +
|
|
302
|
+
"Pass the numeric connector id or its slug from `dharta models auth list`.");
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
function modelConnectionReferenceId(normalizedReference) {
|
|
306
|
+
return /^\d+$/.test(normalizedReference) ? Number(normalizedReference) : normalizedReference;
|
|
307
|
+
}
|
|
308
|
+
// An empty value is a deliberate empty set: `--enable ""` disables every
|
|
309
|
+
// model on the connector. It is not the same as omitting --enable, which
|
|
310
|
+
// makes the command a read.
|
|
311
|
+
function parseEnabledModels(value) {
|
|
312
|
+
const models = value.split(/[\s,]+/).map((part) => part.trim()).filter(Boolean);
|
|
313
|
+
if (models.length > MAX_OFFER_MODELS) {
|
|
314
|
+
throw new CliUsageError(`--enable accepts at most ${MAX_OFFER_MODELS} models.`);
|
|
315
|
+
}
|
|
316
|
+
const seen = new Set();
|
|
317
|
+
for (const model of models) {
|
|
318
|
+
if (seen.has(model))
|
|
319
|
+
throw new CliUsageError(`--enable lists ${model} more than once.`);
|
|
320
|
+
seen.add(model);
|
|
321
|
+
}
|
|
322
|
+
return models;
|
|
323
|
+
}
|
|
324
|
+
function normalizeDefaultModel(value, enabled) {
|
|
325
|
+
const normalized = normalizeNonBlank(value, "--default");
|
|
326
|
+
if (enabled.length === 0) {
|
|
327
|
+
throw new CliUsageError("--default cannot be set when --enable is empty. Pass --clear-default to leave the connector with no default.");
|
|
328
|
+
}
|
|
329
|
+
if (!enabled.includes(normalized)) {
|
|
330
|
+
throw new CliUsageError(`--default ${normalized} is not in the enabled set. Add it to --enable, or pick one of: ${enabled.join(", ")}.`);
|
|
331
|
+
}
|
|
332
|
+
return normalized;
|
|
333
|
+
}
|
|
334
|
+
async function resolveRotatePlaintext(opts) {
|
|
335
|
+
if (opts.key !== undefined && opts.keyStdin) {
|
|
336
|
+
throw new CliUsageError("Use either --key or --key-stdin, not both.");
|
|
337
|
+
}
|
|
338
|
+
if (opts.key !== undefined)
|
|
339
|
+
return normalizePlaintext(opts.key, "--key");
|
|
340
|
+
if (opts.keyStdin)
|
|
341
|
+
return readPipedStdin(ROTATE_STDIN);
|
|
342
|
+
throw new CliUsageError("Model connection plaintext is required. Pass --key or --key-stdin.");
|
|
343
|
+
}
|
|
344
|
+
async function resolveEnabledModels(opts) {
|
|
345
|
+
if (opts.enable !== undefined && opts.enableStdin) {
|
|
346
|
+
throw new CliUsageError("Use either --enable or --enable-stdin, not both.");
|
|
347
|
+
}
|
|
348
|
+
if (opts.enable !== undefined)
|
|
349
|
+
return opts.enable;
|
|
350
|
+
if (opts.enableStdin)
|
|
351
|
+
return readPipedStdin(ENABLE_STDIN);
|
|
352
|
+
throw new CliUsageError("Pass --enable <models> or --enable-stdin to change the enabled model set.");
|
|
353
|
+
}
|
|
354
|
+
async function resolvePlaintext(opts) {
|
|
355
|
+
if (opts.key !== undefined && opts.keyStdin) {
|
|
356
|
+
throw new CliUsageError("Use either --key or --key-stdin, not both.");
|
|
357
|
+
}
|
|
358
|
+
if (opts.key !== undefined)
|
|
359
|
+
return normalizePlaintext(opts.key, "--key");
|
|
360
|
+
if (opts.keyStdin) {
|
|
361
|
+
return readModelConnectionStdin();
|
|
362
|
+
}
|
|
363
|
+
throw new CliUsageError("Model connection plaintext is required. Pass --key or --key-stdin.");
|
|
364
|
+
}
|
|
365
|
+
async function readModelConnectionStdin() {
|
|
366
|
+
return readPipedStdin(CREATE_STDIN);
|
|
367
|
+
}
|
|
368
|
+
function normalizeModelConnectionStdin(value) {
|
|
369
|
+
return normalizePipedStdin(value, CREATE_STDIN);
|
|
370
|
+
}
|
|
371
|
+
async function readPipedStdin(prompt) {
|
|
372
|
+
if (process.stdin.isTTY)
|
|
373
|
+
throw new CliUsageError(prompt.tty);
|
|
374
|
+
const chunks = [];
|
|
375
|
+
for await (const chunk of process.stdin)
|
|
376
|
+
chunks.push(Buffer.from(chunk));
|
|
377
|
+
return normalizePipedStdin(Buffer.concat(chunks).toString("utf8"), prompt);
|
|
378
|
+
}
|
|
379
|
+
function normalizePipedStdin(value, prompt) {
|
|
380
|
+
const text = value.trim();
|
|
381
|
+
if (text)
|
|
382
|
+
return text;
|
|
383
|
+
throw new CliUsageError(prompt.empty);
|
|
384
|
+
}
|
|
385
|
+
function normalizeModelConnectionName(name) {
|
|
386
|
+
const normalized = name.trim();
|
|
387
|
+
if (!normalized) {
|
|
388
|
+
throw new CliUsageError("Model connection name cannot be blank.");
|
|
389
|
+
}
|
|
390
|
+
return normalized;
|
|
391
|
+
}
|
|
392
|
+
function parseModelConnectionId(id) {
|
|
393
|
+
return parsePositiveInteger(id, "Model connection id");
|
|
394
|
+
}
|
|
395
|
+
function normalizePlaintext(value, flag) {
|
|
396
|
+
const normalized = value.trim();
|
|
397
|
+
if (!normalized) {
|
|
398
|
+
throw new CliUsageError(`${flag} cannot be blank.`);
|
|
399
|
+
}
|
|
400
|
+
return normalized;
|
|
401
|
+
}
|
|
402
|
+
function normalizeEndpointUrl(value) {
|
|
403
|
+
const normalized = normalizeHttpUrl(value, "--endpoint-url");
|
|
404
|
+
const parsed = new URL(normalized);
|
|
405
|
+
if (parsed.protocol !== "https:") {
|
|
406
|
+
throw new CliUsageError("--endpoint-url must use https.");
|
|
407
|
+
}
|
|
408
|
+
if (parsed.username || parsed.password || parsed.search || parsed.hash) {
|
|
409
|
+
throw new CliUsageError("--endpoint-url cannot include credentials, a query string, or a fragment.");
|
|
410
|
+
}
|
|
411
|
+
return normalized;
|
|
412
|
+
}
|
|
413
|
+
// Storing or revoking a connector needs `model_connections:write`, a tenant-admin
|
|
414
|
+
// scope that the `dharta login` device-flow credential deliberately never
|
|
415
|
+
// carries (that key is long-lived and non-admin, so it can't hold a
|
|
416
|
+
// forced-expiry admin scope). A CLI login therefore always 403s here. The
|
|
417
|
+
// generic scope hint says "manage key scopes", but the login key's scopes are
|
|
418
|
+
// fixed — you cannot add the scope to it — so name the real path: store the
|
|
419
|
+
// connector in the dashboard, or mint a bounded key and re-auth with a token.
|
|
420
|
+
function addModelConnectionsWriteScopeGuidance(error) {
|
|
421
|
+
if (!(error instanceof Error))
|
|
422
|
+
return new Error(String(error));
|
|
423
|
+
const status = error.status;
|
|
424
|
+
if (status === 403 &&
|
|
425
|
+
/model_connections:write/.test(error.message) &&
|
|
426
|
+
!error.message.includes("dharta login --with-token")) {
|
|
427
|
+
error.message +=
|
|
428
|
+
`${error.message.endsWith(".") ? "" : "."} ` +
|
|
429
|
+
"The `dharta login` credential cannot hold model_connections:write. Store the connector from the dashboard " +
|
|
430
|
+
"(`dharta open model-connections`), or mint a bounded key with model_connections:write there (`dharta open api-keys`) " +
|
|
431
|
+
"and re-authenticate with `dharta login --with-token`.";
|
|
432
|
+
}
|
|
433
|
+
return error;
|
|
434
|
+
}
|
|
435
|
+
//# sourceMappingURL=model-connections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-connections.js","sourceRoot":"","sources":["../../src/commands/model-connections.ts"],"names":[],"mappings":"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"}
|