run402-mcp 3.8.3 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/index.js +12 -22
- package/dist/index.js.map +1 -1
- package/dist/tools/add-custom-domain.d.ts.map +1 -1
- package/dist/tools/add-custom-domain.js +4 -33
- package/dist/tools/add-custom-domain.js.map +1 -1
- package/dist/tools/check-domain-status.d.ts.map +1 -1
- package/dist/tools/check-domain-status.js +4 -33
- package/dist/tools/check-domain-status.js.map +1 -1
- package/dist/tools/domains.d.ts +84 -0
- package/dist/tools/domains.d.ts.map +1 -0
- package/dist/tools/domains.js +129 -0
- package/dist/tools/domains.js.map +1 -0
- package/dist/tools/list-custom-domains.d.ts.map +1 -1
- package/dist/tools/list-custom-domains.js +4 -29
- package/dist/tools/list-custom-domains.js.map +1 -1
- package/dist/tools/remove-custom-domain.d.ts.map +1 -1
- package/dist/tools/remove-custom-domain.js +4 -16
- package/dist/tools/remove-custom-domain.js.map +1 -1
- package/package.json +1 -1
- package/sdk/dist/namespaces/domains.d.ts +148 -55
- package/sdk/dist/namespaces/domains.d.ts.map +1 -1
- package/sdk/dist/namespaces/domains.js +114 -69
- package/sdk/dist/namespaces/domains.js.map +1 -1
- package/sdk/dist/namespaces/sender-domain.d.ts +12 -10
- package/sdk/dist/namespaces/sender-domain.d.ts.map +1 -1
- package/sdk/dist/namespaces/sender-domain.js +25 -43
- package/sdk/dist/namespaces/sender-domain.js.map +1 -1
- package/sdk/dist/scoped.d.ts +22 -7
- package/sdk/dist/scoped.d.ts.map +1 -1
- package/sdk/dist/scoped.js +33 -4
- package/sdk/dist/scoped.js.map +1 -1
|
@@ -1,36 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { getSdk } from "../sdk.js";
|
|
3
|
-
import { mapSdkError } from "../errors.js";
|
|
4
2
|
export const listCustomDomainsSchema = {
|
|
5
3
|
project_id: z.string().describe("The project ID"),
|
|
6
4
|
};
|
|
7
5
|
export async function handleListCustomDomains(args) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
return {
|
|
13
|
-
content: [
|
|
14
|
-
{
|
|
15
|
-
type: "text",
|
|
16
|
-
text: `## Custom Domains\n\n_No custom domains registered. Use \`add_custom_domain\` to register one._`,
|
|
17
|
-
},
|
|
18
|
-
],
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
const lines = [
|
|
22
|
-
`## Custom Domains (${domains.length})`,
|
|
23
|
-
``,
|
|
24
|
-
`| Domain | Subdomain | Status | Created |`,
|
|
25
|
-
`|--------|-----------|--------|---------|`,
|
|
26
|
-
];
|
|
27
|
-
for (const d of domains) {
|
|
28
|
-
lines.push(`| ${d.domain} | ${d.subdomain_url} | ${d.status} | ${d.created_at} |`);
|
|
29
|
-
}
|
|
30
|
-
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
31
|
-
}
|
|
32
|
-
catch (err) {
|
|
33
|
-
return mapSdkError(err, "listing custom domains");
|
|
34
|
-
}
|
|
6
|
+
return removed(`list_custom_domains has been removed. Use domains_list for project ${args.project_id}.`);
|
|
7
|
+
}
|
|
8
|
+
function removed(text) {
|
|
9
|
+
return { content: [{ type: "text", text: `Error: ${text}` }], isError: true };
|
|
35
10
|
}
|
|
36
11
|
//# sourceMappingURL=list-custom-domains.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-custom-domains.js","sourceRoot":"","sources":["../../src/tools/list-custom-domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"list-custom-domains.js","sourceRoot":"","sources":["../../src/tools/list-custom-domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CAClD,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAE7C;IACC,OAAO,OAAO,CACZ,sEAAsE,IAAI,CAAC,UAAU,GAAG,CACzF,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-custom-domain.d.ts","sourceRoot":"","sources":["../../src/tools/remove-custom-domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"remove-custom-domain.d.ts","sourceRoot":"","sources":["../../src/tools/remove-custom-domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;CAMpC,CAAC;AAEF,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAIjF"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { getSdk } from "../sdk.js";
|
|
3
|
-
import { mapSdkError } from "../errors.js";
|
|
4
2
|
export const removeCustomDomainSchema = {
|
|
5
3
|
domain: z.string().describe("The custom domain to release (e.g. 'example.com')"),
|
|
6
4
|
project_id: z
|
|
@@ -9,19 +7,9 @@ export const removeCustomDomainSchema = {
|
|
|
9
7
|
.describe("Optional project ID for ownership verification"),
|
|
10
8
|
};
|
|
11
9
|
export async function handleRemoveCustomDomain(args) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{
|
|
17
|
-
type: "text",
|
|
18
|
-
text: `## Custom Domain Removed\n\nDomain \`${args.domain}\` has been released. Traffic to this domain will no longer be routed to Run402.`,
|
|
19
|
-
},
|
|
20
|
-
],
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
catch (err) {
|
|
24
|
-
return mapSdkError(err, "removing custom domain");
|
|
25
|
-
}
|
|
10
|
+
return removed(`remove_custom_domain has been removed. Use domains_disconnect for ${args.domain}${args.project_id ? ` in project ${args.project_id}` : ""}.`);
|
|
11
|
+
}
|
|
12
|
+
function removed(text) {
|
|
13
|
+
return { content: [{ type: "text", text: `Error: ${text}` }], isError: true };
|
|
26
14
|
}
|
|
27
15
|
//# sourceMappingURL=remove-custom-domain.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-custom-domain.js","sourceRoot":"","sources":["../../src/tools/remove-custom-domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"remove-custom-domain.js","sourceRoot":"","sources":["../../src/tools/remove-custom-domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IAChF,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;CAC9D,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAG9C;IACC,OAAO,OAAO,CACZ,qEAAqE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAC9I,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "run402-mcp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "MCP server for Run402 — AI-native Postgres databases with REST API, auth, storage, and row-level security. Pay with x402 USDC micropayments.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -1,73 +1,166 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `domains` namespace —
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* `domains` namespace — ProjectDomain lifecycle.
|
|
3
|
+
*
|
|
4
|
+
* Domain operations are project-scoped control-plane actions. They use the
|
|
5
|
+
* SDK credential provider's server auth (SIWX, control-plane session, or
|
|
6
|
+
* delegate) and deliberately do not require local project-key cache entries.
|
|
5
7
|
*/
|
|
6
8
|
import type { Client } from "../kernel.js";
|
|
7
|
-
export type
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export type ProjectDomainStatus = "action_required" | "waiting" | "active" | "needs_repair" | "failed";
|
|
10
|
+
export type ProjectDomainReceiveStrategy = "auto" | "outbound_only" | "forwarding_mode" | "subdomain_mode" | "full_receive_takeover";
|
|
11
|
+
export type ProjectDomainMailboxAddressMode = "primary" | "alias" | "managed" | "none";
|
|
12
|
+
export type ProjectDomainActivationMode = "automatic_when_ready" | "manual";
|
|
13
|
+
export type ProjectDomainWaitUntil = "active" | "safe" | "receive-active";
|
|
14
|
+
export interface ProjectDomainMailboxAddressBinding {
|
|
15
|
+
local_part: string;
|
|
16
|
+
mailbox_slug: string;
|
|
17
|
+
create_mailbox?: boolean;
|
|
12
18
|
}
|
|
13
|
-
export interface
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
export interface ProjectDomainDesired {
|
|
20
|
+
web?: {
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
target?: string;
|
|
23
|
+
role?: "primary" | "alias";
|
|
24
|
+
};
|
|
25
|
+
email?: {
|
|
26
|
+
send?: {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
};
|
|
29
|
+
receive?: {
|
|
30
|
+
enabled: boolean;
|
|
31
|
+
strategy?: ProjectDomainReceiveStrategy;
|
|
32
|
+
resolved_strategy?: ProjectDomainReceiveStrategy;
|
|
33
|
+
observed_mx_fingerprint?: string;
|
|
34
|
+
mail_subdomain?: string;
|
|
35
|
+
};
|
|
36
|
+
mailbox_addresses?: {
|
|
37
|
+
mode: ProjectDomainMailboxAddressMode;
|
|
38
|
+
addresses: ProjectDomainMailboxAddressBinding[];
|
|
39
|
+
};
|
|
40
|
+
activation?: ProjectDomainActivationMode;
|
|
41
|
+
};
|
|
17
42
|
}
|
|
18
|
-
export interface
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
created_at: string;
|
|
43
|
+
export interface ProjectDomainCheck {
|
|
44
|
+
id: string;
|
|
45
|
+
status: "unknown" | "pending" | "passed" | "failed" | "drifted" | "blocked";
|
|
46
|
+
blocking: boolean;
|
|
47
|
+
reason_code?: string;
|
|
48
|
+
summary?: string;
|
|
49
|
+
blocked_by?: string[];
|
|
50
|
+
checked_at?: string;
|
|
27
51
|
}
|
|
28
|
-
export interface
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
52
|
+
export interface ProjectDomainDnsRecord {
|
|
53
|
+
id: string;
|
|
54
|
+
purpose: string;
|
|
55
|
+
type: string;
|
|
56
|
+
name: string;
|
|
57
|
+
value: string;
|
|
58
|
+
priority?: number;
|
|
59
|
+
required: boolean;
|
|
60
|
+
status: "unknown" | "missing" | "present" | "conflict";
|
|
61
|
+
safety: {
|
|
62
|
+
safe_to_auto_run: boolean;
|
|
63
|
+
confirmation_required: boolean;
|
|
64
|
+
destructive: boolean;
|
|
65
|
+
external_required: boolean;
|
|
66
|
+
conflict_policy?: string;
|
|
67
|
+
[key: string]: unknown;
|
|
68
|
+
};
|
|
69
|
+
bind?: string;
|
|
35
70
|
}
|
|
36
|
-
export interface
|
|
37
|
-
|
|
71
|
+
export interface ProjectDomainNextAction {
|
|
72
|
+
type: string;
|
|
73
|
+
method?: string;
|
|
74
|
+
path?: string;
|
|
75
|
+
auth?: string;
|
|
76
|
+
why?: string;
|
|
77
|
+
safe_to_auto_run?: boolean;
|
|
78
|
+
destructive?: boolean;
|
|
79
|
+
confirmation_required?: boolean;
|
|
80
|
+
external_required?: boolean;
|
|
81
|
+
affected_record_ids?: string[];
|
|
82
|
+
[key: string]: unknown;
|
|
38
83
|
}
|
|
39
|
-
export interface
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
84
|
+
export interface ProjectDomainReceiveTest {
|
|
85
|
+
id: string;
|
|
86
|
+
local_part: string;
|
|
87
|
+
address: string;
|
|
88
|
+
target_managed_address: string;
|
|
89
|
+
token: string;
|
|
90
|
+
status: "pending" | "passed" | "failed" | "stale";
|
|
46
91
|
created_at: string;
|
|
92
|
+
passed_at?: string | null;
|
|
47
93
|
}
|
|
48
|
-
export interface
|
|
49
|
-
|
|
50
|
-
authMode?: DomainAuthMode;
|
|
51
|
-
}
|
|
52
|
-
export interface CustomDomainRemoveResult {
|
|
53
|
-
status: string;
|
|
94
|
+
export interface ProjectDomain {
|
|
95
|
+
project_id: string;
|
|
54
96
|
domain: string;
|
|
97
|
+
status: ProjectDomainStatus;
|
|
98
|
+
desired: ProjectDomainDesired;
|
|
99
|
+
observed: Record<string, unknown>;
|
|
100
|
+
effective: Record<string, unknown>;
|
|
101
|
+
authority: {
|
|
102
|
+
recommended_mode: string;
|
|
103
|
+
options: Array<Record<string, unknown>>;
|
|
104
|
+
};
|
|
105
|
+
dns_records: ProjectDomainDnsRecord[];
|
|
106
|
+
checks: ProjectDomainCheck[];
|
|
107
|
+
next_action: ProjectDomainNextAction | null;
|
|
108
|
+
alternate_actions: ProjectDomainNextAction[];
|
|
109
|
+
provenance: {
|
|
110
|
+
project: "server_control_plane";
|
|
111
|
+
desired: "server_control_plane";
|
|
112
|
+
observed_dns: "public_dns_resolvers";
|
|
113
|
+
effective: "run402_control_plane";
|
|
114
|
+
local_cache: "not_used";
|
|
115
|
+
};
|
|
116
|
+
created_at?: string;
|
|
117
|
+
updated_at?: string;
|
|
118
|
+
}
|
|
119
|
+
export interface ProjectDomainListResult {
|
|
120
|
+
domains: ProjectDomain[];
|
|
121
|
+
}
|
|
122
|
+
export interface ProjectDomainEnsureOptions {
|
|
123
|
+
desired: ProjectDomainDesired;
|
|
55
124
|
}
|
|
56
|
-
export interface
|
|
57
|
-
|
|
125
|
+
export interface ProjectDomainTestReceiveResult extends ProjectDomain {
|
|
126
|
+
receive_test: ProjectDomainReceiveTest;
|
|
58
127
|
}
|
|
128
|
+
export interface ProjectDomainWaitOptions {
|
|
129
|
+
until?: ProjectDomainWaitUntil;
|
|
130
|
+
timeoutMs?: number;
|
|
131
|
+
intervalMs?: number;
|
|
132
|
+
}
|
|
133
|
+
export type DomainAddOptions = {
|
|
134
|
+
domain: string;
|
|
135
|
+
subdomainName?: string;
|
|
136
|
+
};
|
|
137
|
+
export type DomainRequestOptions = Record<string, never>;
|
|
138
|
+
export type CustomDomainRemoveOptions = {
|
|
139
|
+
projectId?: string;
|
|
140
|
+
};
|
|
59
141
|
export declare class Domains {
|
|
60
142
|
private readonly client;
|
|
61
143
|
constructor(client: Client);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
144
|
+
ensure(projectId: string, domain: string, opts: ProjectDomainEnsureOptions): Promise<ProjectDomain>;
|
|
145
|
+
get(projectId: string, domain: string): Promise<ProjectDomain>;
|
|
146
|
+
list(projectId: string): Promise<ProjectDomainListResult>;
|
|
147
|
+
check(projectId: string, domain: string): Promise<ProjectDomain>;
|
|
148
|
+
apply(projectId: string, domain: string): Promise<ProjectDomain>;
|
|
149
|
+
repair(projectId: string, domain: string): Promise<ProjectDomain>;
|
|
150
|
+
testReceive(projectId: string, domain: string, to: string): Promise<ProjectDomainTestReceiveResult>;
|
|
151
|
+
activate(projectId: string, domain: string): Promise<ProjectDomain>;
|
|
152
|
+
disconnect(projectId: string, domain: string): Promise<{
|
|
153
|
+
status: string;
|
|
154
|
+
domain: string;
|
|
155
|
+
}>;
|
|
156
|
+
wait(projectId: string, domain: string, opts?: ProjectDomainWaitOptions): Promise<ProjectDomain>;
|
|
157
|
+
/** @deprecated Removed. Use ensure(projectId, domain, { desired }). */
|
|
158
|
+
add(projectId: string, opts: DomainAddOptions): Promise<never>;
|
|
159
|
+
/** @deprecated Removed. Use ensure(projectId, domain, { desired }). */
|
|
160
|
+
add(projectId: string, domain: string, subdomainName: string): Promise<never>;
|
|
161
|
+
/** @deprecated Removed. Use get(projectId, domain). */
|
|
162
|
+
status(projectId: string, domain: string): Promise<never>;
|
|
163
|
+
/** @deprecated Removed. Use disconnect(projectId, domain). */
|
|
164
|
+
remove(domain: string, opts?: CustomDomainRemoveOptions): Promise<never>;
|
|
72
165
|
}
|
|
73
166
|
//# sourceMappingURL=domains.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/namespaces/domains.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/namespaces/domains.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,89 +1,134 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `domains` namespace —
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* `domains` namespace — ProjectDomain lifecycle.
|
|
3
|
+
*
|
|
4
|
+
* Domain operations are project-scoped control-plane actions. They use the
|
|
5
|
+
* SDK credential provider's server auth (SIWX, control-plane session, or
|
|
6
|
+
* delegate) and deliberately do not require local project-key cache entries.
|
|
5
7
|
*/
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
import { LocalError } from "../errors.js";
|
|
9
|
+
function domainPath(projectId, domain) {
|
|
10
|
+
return `/projects/v1/${encodeURIComponent(projectId)}/domains/${encodeURIComponent(domain)}`;
|
|
11
|
+
}
|
|
12
|
+
function authMeta(method, projectId) {
|
|
13
|
+
return { method, target: { project_id: projectId } };
|
|
14
|
+
}
|
|
15
|
+
function removed(command, replacement) {
|
|
16
|
+
throw new LocalError(`${command} has been removed. Use ${replacement}.`, command, {
|
|
17
|
+
code: "COMMAND_REMOVED",
|
|
18
|
+
details: { command, replacement },
|
|
19
|
+
next_actions: [{ type: "use_replacement_command", command: replacement }],
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function waitSatisfied(domain, until) {
|
|
23
|
+
if (until === "active")
|
|
24
|
+
return domain.status === "active";
|
|
25
|
+
if (until === "receive-active") {
|
|
26
|
+
const email = domain.effective.email;
|
|
27
|
+
return email?.receive?.active === true;
|
|
28
|
+
}
|
|
29
|
+
return domain.checks.every((check) => !check.blocking || check.status === "passed");
|
|
30
|
+
}
|
|
31
|
+
function sleep(ms) {
|
|
32
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
11
33
|
}
|
|
12
34
|
export class Domains {
|
|
13
35
|
client;
|
|
14
36
|
constructor(client) {
|
|
15
37
|
this.client = client;
|
|
16
38
|
}
|
|
17
|
-
async
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
return this.client.request("/domains/v1", {
|
|
39
|
+
async ensure(projectId, domain, opts) {
|
|
40
|
+
return this.client.request(domainPath(projectId, domain), {
|
|
41
|
+
method: "PUT",
|
|
42
|
+
body: { desired: opts.desired },
|
|
43
|
+
authMeta: authMeta("domains.ensure", projectId),
|
|
44
|
+
context: "ensuring project domain",
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
async get(projectId, domain) {
|
|
48
|
+
return this.client.request(domainPath(projectId, domain), {
|
|
49
|
+
authMeta: authMeta("domains.get", projectId),
|
|
50
|
+
context: "getting project domain",
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async list(projectId) {
|
|
54
|
+
return this.client.request(`/projects/v1/${encodeURIComponent(projectId)}/domains`, {
|
|
55
|
+
authMeta: authMeta("domains.list", projectId),
|
|
56
|
+
context: "listing project domains",
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
async check(projectId, domain) {
|
|
60
|
+
return this.client.request(`${domainPath(projectId, domain)}/actions/check`, {
|
|
41
61
|
method: "POST",
|
|
42
|
-
|
|
43
|
-
context: "
|
|
62
|
+
authMeta: authMeta("domains.check", projectId),
|
|
63
|
+
context: "checking project domain",
|
|
44
64
|
});
|
|
45
65
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
52
|
-
context: "listing custom domains",
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
return this.client.request(withProjectId("/domains/v1", projectId), {
|
|
56
|
-
context: "listing custom domains",
|
|
66
|
+
async apply(projectId, domain) {
|
|
67
|
+
return this.client.request(`${domainPath(projectId, domain)}/actions/apply`, {
|
|
68
|
+
method: "POST",
|
|
69
|
+
authMeta: authMeta("domains.apply", projectId),
|
|
70
|
+
context: "applying project domain",
|
|
57
71
|
});
|
|
58
72
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
65
|
-
context: "checking domain status",
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
return this.client.request(withProjectId(`/domains/v1/${encodeURIComponent(domain)}`, projectId), {
|
|
69
|
-
context: "checking domain status",
|
|
73
|
+
async repair(projectId, domain) {
|
|
74
|
+
return this.client.request(`${domainPath(projectId, domain)}/actions/repair`, {
|
|
75
|
+
method: "POST",
|
|
76
|
+
authMeta: authMeta("domains.repair", projectId),
|
|
77
|
+
context: "repairing project domain",
|
|
70
78
|
});
|
|
71
79
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
async testReceive(projectId, domain, to) {
|
|
81
|
+
return this.client.request(`${domainPath(projectId, domain)}/actions/test_receive`, {
|
|
82
|
+
method: "POST",
|
|
83
|
+
body: { to },
|
|
84
|
+
authMeta: authMeta("domains.testReceive", projectId),
|
|
85
|
+
context: "creating project domain receive test",
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
async activate(projectId, domain) {
|
|
89
|
+
return this.client.request(`${domainPath(projectId, domain)}/actions/activate_mailbox_addresses`, {
|
|
90
|
+
method: "POST",
|
|
91
|
+
authMeta: authMeta("domains.activate", projectId),
|
|
92
|
+
context: "activating project domain mailbox addresses",
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
async disconnect(projectId, domain) {
|
|
96
|
+
return this.client.request(domainPath(projectId, domain), {
|
|
83
97
|
method: "DELETE",
|
|
84
|
-
|
|
85
|
-
context: "
|
|
98
|
+
authMeta: authMeta("domains.disconnect", projectId),
|
|
99
|
+
context: "disconnecting project domain",
|
|
86
100
|
});
|
|
87
101
|
}
|
|
102
|
+
async wait(projectId, domain, opts = {}) {
|
|
103
|
+
const until = opts.until ?? "active";
|
|
104
|
+
const timeoutMs = opts.timeoutMs ?? 120_000;
|
|
105
|
+
const intervalMs = opts.intervalMs ?? 5_000;
|
|
106
|
+
const started = Date.now();
|
|
107
|
+
let last = await this.check(projectId, domain);
|
|
108
|
+
while (!waitSatisfied(last, until)) {
|
|
109
|
+
if (Date.now() - started >= timeoutMs) {
|
|
110
|
+
throw new LocalError(`Timed out waiting for project domain ${domain} to reach ${until}`, "waiting for project domain", {
|
|
111
|
+
code: "DOMAIN_WAIT_TIMEOUT",
|
|
112
|
+
details: { project_id: projectId, domain, until, last_status: last.status, checks: last.checks },
|
|
113
|
+
next_actions: [{ type: "check", command: `run402 domains check ${domain} --project ${projectId}` }],
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
await sleep(intervalMs);
|
|
117
|
+
last = await this.check(projectId, domain);
|
|
118
|
+
}
|
|
119
|
+
return last;
|
|
120
|
+
}
|
|
121
|
+
async add(projectId, domainOrOpts) {
|
|
122
|
+
const domain = typeof domainOrOpts === "string" ? domainOrOpts : domainOrOpts.domain;
|
|
123
|
+
return removed("domains.add", `run402 domains connect ${domain} --project ${projectId} --web`);
|
|
124
|
+
}
|
|
125
|
+
/** @deprecated Removed. Use get(projectId, domain). */
|
|
126
|
+
async status(projectId, domain) {
|
|
127
|
+
return removed("domains.status", `run402 domains status ${domain} --project ${projectId}`);
|
|
128
|
+
}
|
|
129
|
+
/** @deprecated Removed. Use disconnect(projectId, domain). */
|
|
130
|
+
async remove(domain, opts = {}) {
|
|
131
|
+
return removed("domains.remove", `run402 domains disconnect ${domain}${opts.projectId ? ` --project ${opts.projectId}` : ""} --confirm`);
|
|
132
|
+
}
|
|
88
133
|
}
|
|
89
134
|
//# sourceMappingURL=domains.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/namespaces/domains.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/namespaces/domains.ts"],"names":[],"mappings":"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"}
|