@fragment-dev/cli 2026.6.29 → 2026.6.30-3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -2
- package/dist/{chunk-I5JFFWZM.js → chunk-2VYJABNZ.js} +2 -2
- package/dist/{chunk-BBZDU3B4.js → chunk-34NLRFFT.js} +1 -1
- package/dist/{chunk-T5GGVB7Q.js → chunk-46HQGYHT.js} +32 -28
- package/dist/{chunk-7O5S6DOP.js → chunk-4H2VTNQ3.js} +3 -3
- package/dist/{chunk-UMAUSCLS.js → chunk-5A52AXRT.js} +3 -3
- package/dist/{chunk-LNYDUY5F.js → chunk-5HH4NNSE.js} +2 -2
- package/dist/{chunk-CMB5L4GJ.js → chunk-B2BG7TCY.js} +5 -5
- package/dist/{chunk-ECSXGVPP.js → chunk-C7ROAUIM.js} +1 -1
- package/dist/{chunk-Q25QYAZ7.js → chunk-FELYEHSZ.js} +1 -1
- package/dist/{chunk-6BF2IGEK.js → chunk-HCTAYKGL.js} +2 -2
- package/dist/{chunk-VKFC45KB.js → chunk-J6GQWO4E.js} +2 -2
- package/dist/{chunk-QI5VSJMP.js → chunk-J73JTDHN.js} +4 -4
- package/dist/{chunk-UGKG4UKY.js → chunk-KLPHEBPJ.js} +3 -3
- package/dist/{chunk-A43XU7QS.js → chunk-LB3C4WTL.js} +1 -1
- package/dist/{chunk-JN7B4RNC.js → chunk-LDDNVG3E.js} +3 -0
- package/dist/{chunk-BPA2ZDP4.js → chunk-MOZRABR6.js} +2 -2
- package/dist/{chunk-PCAB73GF.js → chunk-NWPJRN3W.js} +1 -1
- package/dist/{chunk-2BXFOBDR.js → chunk-NYTFP5AV.js} +1 -1
- package/dist/{chunk-L3XNEX33.js → chunk-OZQUYOQH.js} +2 -2
- package/dist/{chunk-TRYLEOKB.js → chunk-PILLZB3E.js} +8 -8
- package/dist/{chunk-NM7ENVG2.js → chunk-QDA5BIHP.js} +2 -2
- package/dist/{chunk-IJBNTQ7H.js → chunk-QJOWCJUB.js} +1 -1
- package/dist/{chunk-IO6HR226.js → chunk-QRP56DLY.js} +2 -2
- package/dist/chunk-RRQXUXAS.js +108 -0
- package/dist/{chunk-XKTOP23Z.js → chunk-SQL643PS.js} +1 -1
- package/dist/{chunk-WS2PJBP6.js → chunk-TLM4VKIC.js} +2 -0
- package/dist/{chunk-PFGF27Z7.js → chunk-UHVWN34X.js} +2 -2
- package/dist/{chunk-G5N2UVKQ.js → chunk-UMIUGX6O.js} +2 -2
- package/dist/{chunk-3QZ3TI7I.js → chunk-UOXPSGVC.js} +1 -1
- package/dist/{chunk-OVTTESEV.js → chunk-VGBDSE7K.js} +2 -2
- package/dist/{chunk-GT4DQ3S5.js → chunk-VIVSBPCD.js} +2 -2
- package/dist/{chunk-7X2QSWZ4.js → chunk-VJS4Z4XI.js} +4 -4
- package/dist/{chunk-YKRLZ565.js → chunk-WMBVWK2M.js} +1 -1
- package/dist/{chunk-DTKNXMNB.js → chunk-XDGKUJ32.js} +2 -2
- package/dist/{chunk-ESEZRPTU.js → chunk-YYTKYSJW.js} +73 -10
- package/dist/{chunk-F4X6QF3A.js → chunk-ZCK2KXOV.js} +1 -1
- package/dist/{chunk-NTVQKBTC.js → chunk-ZMSR4Z3E.js} +2 -2
- package/dist/chunk-ZQUZATVE.js +185 -0
- package/dist/commands/add-ledger-entry.js +7 -7
- package/dist/commands/api-client/create.js +18 -0
- package/dist/commands/create-custom-link.js +7 -7
- package/dist/commands/create-ledger.js +7 -7
- package/dist/commands/delete-custom-txs.js +7 -7
- package/dist/commands/delete-ledger.js +7 -7
- package/dist/commands/delete-schema.js +7 -7
- package/dist/commands/gen-graphql.js +11 -11
- package/dist/commands/get-schema.js +8 -8
- package/dist/commands/init.js +6 -6
- package/dist/commands/login.js +8 -7
- package/dist/commands/migrate-ledger-entry.js +7 -7
- package/dist/commands/query/ledgerAccounts.js +7 -7
- package/dist/commands/query/ledgers.js +7 -7
- package/dist/commands/query/schema.js +7 -7
- package/dist/commands/query/schemas.js +7 -7
- package/dist/commands/reverse-ledger-entry.js +7 -7
- package/dist/commands/start.js +6 -6
- package/dist/commands/store-schema.js +7 -7
- package/dist/commands/token.js +7 -7
- package/dist/commands/update-ledger-account.js +7 -7
- package/dist/commands/update.js +7 -7
- package/dist/commands/verify-schema.js +11 -11
- package/dist/commands/workspace.js +7 -7
- package/dist/commands.js +40 -38
- package/dist/graphql.js +4 -4
- package/dist/index.js +40 -38
- package/dist/lib/auth.js +2 -2
- package/dist/lib/authenticatedCommand.js +6 -6
- package/dist/lib/baseCommand.js +5 -5
- package/dist/lib/browserAuth.js +13 -0
- package/dist/lib/constants.js +5 -3
- package/dist/open-SJMVVA3H.js +551 -0
- package/dist/utils/formatValidationErrors.js +3 -3
- package/dist/utils/schemaValidation.js +6 -6
- package/dist/version.js +2 -2
- package/oclif.manifest.json +101 -1
- package/package.json +4 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
inquirer_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QJOWCJUB.js";
|
|
4
4
|
import {
|
|
5
5
|
FragmentCommand,
|
|
6
6
|
require_lib
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-PILLZB3E.js";
|
|
8
8
|
import {
|
|
9
9
|
require_source
|
|
10
10
|
} from "./chunk-XK2D2Z44.js";
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
getSchemaObjectParameters,
|
|
9
9
|
getStructuralSubpaths
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ZCK2KXOV.js";
|
|
11
|
+
import {
|
|
12
|
+
require_source
|
|
13
|
+
} from "./chunk-XK2D2Z44.js";
|
|
11
14
|
import {
|
|
12
15
|
require_parser,
|
|
13
16
|
require_printer
|
|
14
17
|
} from "./chunk-7K4RMTU4.js";
|
|
15
|
-
import {
|
|
16
|
-
require_source
|
|
17
|
-
} from "./chunk-XK2D2Z44.js";
|
|
18
18
|
import {
|
|
19
19
|
__toESM,
|
|
20
20
|
init_cjs_shims
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
inquirer_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QJOWCJUB.js";
|
|
4
|
+
import {
|
|
5
|
+
defaultBrowserAuthDeps,
|
|
6
|
+
provisionApiClient
|
|
7
|
+
} from "./chunk-ZQUZATVE.js";
|
|
4
8
|
import {
|
|
5
9
|
FragmentCommand,
|
|
6
10
|
require_lib
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import {
|
|
9
|
-
FRAGMENT_ACCESS_TOKEN_PATH,
|
|
10
|
-
FRAGMENT_AUTH_PATH
|
|
11
|
-
} from "./chunk-WS2PJBP6.js";
|
|
11
|
+
} from "./chunk-PILLZB3E.js";
|
|
12
12
|
import {
|
|
13
13
|
require_source
|
|
14
14
|
} from "./chunk-XK2D2Z44.js";
|
|
15
|
+
import {
|
|
16
|
+
FRAGMENT_ACCESS_TOKEN_PATH,
|
|
17
|
+
FRAGMENT_AUTH_PATH,
|
|
18
|
+
FRAGMENT_HOME,
|
|
19
|
+
resolveMcpBaseUrl
|
|
20
|
+
} from "./chunk-TLM4VKIC.js";
|
|
15
21
|
import {
|
|
16
22
|
__toESM,
|
|
17
23
|
init_cjs_shims
|
|
@@ -22,7 +28,7 @@ init_cjs_shims();
|
|
|
22
28
|
var import_core = __toESM(require_lib(), 1);
|
|
23
29
|
var import_chalk = __toESM(require_source(), 1);
|
|
24
30
|
import { AssertionError } from "node:assert";
|
|
25
|
-
import { writeFile } from "node:fs/promises";
|
|
31
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
26
32
|
var Login = class _Login extends FragmentCommand {
|
|
27
33
|
static {
|
|
28
34
|
this.summary = "Authenticate with FRAGMENT.";
|
|
@@ -35,6 +41,7 @@ var Login = class _Login extends FragmentCommand {
|
|
|
35
41
|
static {
|
|
36
42
|
this.examples = [
|
|
37
43
|
"<%= config.bin %> <%= command.id %>",
|
|
44
|
+
"<%= config.bin %> <%= command.id %> --browser --workspace <workspace-id>",
|
|
38
45
|
"<%= config.bin %> <%= command.id %> --client-id <client-id> --client-secret <client-secret> --api-url <api-url> --oauth-url <oauth-url>"
|
|
39
46
|
];
|
|
40
47
|
}
|
|
@@ -43,6 +50,18 @@ var Login = class _Login extends FragmentCommand {
|
|
|
43
50
|
}
|
|
44
51
|
static {
|
|
45
52
|
this.flags = {
|
|
53
|
+
browser: import_core.Flags.boolean({
|
|
54
|
+
required: false,
|
|
55
|
+
description: "Authenticate in the browser and provision an API client automatically."
|
|
56
|
+
}),
|
|
57
|
+
workspace: import_core.Flags.string({
|
|
58
|
+
required: false,
|
|
59
|
+
description: "The Workspace id to authenticate against (required with --browser)."
|
|
60
|
+
}),
|
|
61
|
+
"mcp-url": import_core.Flags.string({
|
|
62
|
+
required: false,
|
|
63
|
+
description: "The Workspace MCP server origin (ex: https://mcp.us-west-2.fragment.dev). Used with --browser."
|
|
64
|
+
}),
|
|
46
65
|
"client-id": import_core.Flags.string({
|
|
47
66
|
description: "The API Client ID for your FRAGMENT Workspace.",
|
|
48
67
|
required: false
|
|
@@ -76,14 +95,54 @@ var Login = class _Login extends FragmentCommand {
|
|
|
76
95
|
});
|
|
77
96
|
await this.validateClientCredentials(config);
|
|
78
97
|
}
|
|
79
|
-
async saveCredentials(auth) {
|
|
98
|
+
async saveCredentials(auth, { persistBeforeValidate = false } = {}) {
|
|
99
|
+
await mkdir(FRAGMENT_HOME, { recursive: true });
|
|
100
|
+
const writeOpts = { mode: 384 };
|
|
101
|
+
if (persistBeforeValidate) {
|
|
102
|
+
await writeFile(
|
|
103
|
+
FRAGMENT_AUTH_PATH,
|
|
104
|
+
JSON.stringify(auth, null, 2),
|
|
105
|
+
writeOpts
|
|
106
|
+
);
|
|
107
|
+
}
|
|
80
108
|
const { token } = await this.validateClientCredentials(auth);
|
|
81
109
|
await Promise.all([
|
|
82
|
-
writeFile(FRAGMENT_AUTH_PATH, JSON.stringify(auth, null, 2)),
|
|
83
|
-
writeFile(
|
|
110
|
+
writeFile(FRAGMENT_AUTH_PATH, JSON.stringify(auth, null, 2), writeOpts),
|
|
111
|
+
writeFile(
|
|
112
|
+
FRAGMENT_ACCESS_TOKEN_PATH,
|
|
113
|
+
JSON.stringify(token, null, 2),
|
|
114
|
+
writeOpts
|
|
115
|
+
)
|
|
84
116
|
]);
|
|
85
117
|
this.log(`Credentials written to ${FRAGMENT_AUTH_PATH}`);
|
|
86
118
|
}
|
|
119
|
+
async browserLogin(flags) {
|
|
120
|
+
this.assert(flags.workspace, {
|
|
121
|
+
message: "Must provide --workspace with --browser"
|
|
122
|
+
});
|
|
123
|
+
const mcpBaseUrl = resolveMcpBaseUrl(flags["mcp-url"]);
|
|
124
|
+
this.assert(mcpBaseUrl, {
|
|
125
|
+
message: "Must provide --mcp-url (or set FRAGMENT_MCP_URL) with --browser, e.g. https://mcp.us-west-2.fragment.dev"
|
|
126
|
+
});
|
|
127
|
+
const credentials = await provisionApiClient(
|
|
128
|
+
{
|
|
129
|
+
mcpBaseUrl,
|
|
130
|
+
workspaceId: flags.workspace,
|
|
131
|
+
clientName: "Fragment CLI"
|
|
132
|
+
},
|
|
133
|
+
defaultBrowserAuthDeps((msg) => this.log(msg))
|
|
134
|
+
);
|
|
135
|
+
await this.saveCredentials(
|
|
136
|
+
{
|
|
137
|
+
clientId: credentials.clientId,
|
|
138
|
+
clientSecret: credentials.clientSecret,
|
|
139
|
+
apiUrl: credentials.apiUrl,
|
|
140
|
+
oauthUrl: credentials.oauthUrl,
|
|
141
|
+
oauthScope: credentials.oauthScope
|
|
142
|
+
},
|
|
143
|
+
{ persistBeforeValidate: true }
|
|
144
|
+
);
|
|
145
|
+
}
|
|
87
146
|
async run() {
|
|
88
147
|
const { flags } = await this.parse(_Login);
|
|
89
148
|
if (flags.test) {
|
|
@@ -91,6 +150,10 @@ var Login = class _Login extends FragmentCommand {
|
|
|
91
150
|
await this.test();
|
|
92
151
|
return;
|
|
93
152
|
}
|
|
153
|
+
if (flags.browser) {
|
|
154
|
+
await this.browserLogin(flags);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
94
157
|
let authConfig = null;
|
|
95
158
|
try {
|
|
96
159
|
authConfig = await this.loadFragmentAuthConfigFromDisk();
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import {
|
|
2
|
+
init_cjs_shims
|
|
3
|
+
} from "./chunk-7GH3YGSC.js";
|
|
4
|
+
|
|
5
|
+
// src/lib/browserAuth.ts
|
|
6
|
+
init_cjs_shims();
|
|
7
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
8
|
+
import { createServer } from "node:http";
|
|
9
|
+
var AUTH_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
10
|
+
var defaultBrowserAuthDeps = (log) => ({
|
|
11
|
+
fetchFn: fetch,
|
|
12
|
+
openBrowser: async (url) => {
|
|
13
|
+
const open = (await import("./open-SJMVVA3H.js")).default;
|
|
14
|
+
return open(url);
|
|
15
|
+
},
|
|
16
|
+
startLoopback: startLoopbackServer,
|
|
17
|
+
log
|
|
18
|
+
});
|
|
19
|
+
var pkcePair = () => {
|
|
20
|
+
const verifier = randomBytes(32).toString("base64url");
|
|
21
|
+
const challenge = createHash("sha256").update(verifier).digest("base64url");
|
|
22
|
+
return { verifier, challenge };
|
|
23
|
+
};
|
|
24
|
+
var trimSlash = (url) => url.replace(/\/$/, "");
|
|
25
|
+
var mcpResourceUrl = (mcpBaseUrl, workspaceId) => `${trimSlash(mcpBaseUrl)}/mcp/w/${encodeURIComponent(workspaceId)}`;
|
|
26
|
+
var protectedResourceMetadataUrl = (mcpBaseUrl, workspaceId) => `${trimSlash(
|
|
27
|
+
mcpBaseUrl
|
|
28
|
+
)}/.well-known/oauth-protected-resource/mcp/w/${encodeURIComponent(
|
|
29
|
+
workspaceId
|
|
30
|
+
)}`;
|
|
31
|
+
var jsonOk = async (response, what) => {
|
|
32
|
+
if (!response.ok) {
|
|
33
|
+
const body = await response.text().catch(() => "");
|
|
34
|
+
throw new Error(`${what} failed (${response.status}): ${body}`);
|
|
35
|
+
}
|
|
36
|
+
return response.json();
|
|
37
|
+
};
|
|
38
|
+
var errorPage = (message) => `<html><body>${message} You can close this window and return to the CLI.</body></html>`;
|
|
39
|
+
var startLoopbackServer = (expectedState) => new Promise((resolveServer) => {
|
|
40
|
+
let resolveCode;
|
|
41
|
+
let rejectCode;
|
|
42
|
+
const codePromise = new Promise((res, rej) => {
|
|
43
|
+
resolveCode = res;
|
|
44
|
+
rejectCode = rej;
|
|
45
|
+
});
|
|
46
|
+
const server = createServer((req, res) => {
|
|
47
|
+
const url = new URL(req.url ?? "/", "http://127.0.0.1");
|
|
48
|
+
if (url.pathname !== "/callback") {
|
|
49
|
+
res.writeHead(404).end("Not found");
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const state = url.searchParams.get("state") ?? "";
|
|
53
|
+
if (state !== expectedState) {
|
|
54
|
+
res.writeHead(400, { "Content-Type": "text/html" }).end(errorPage("Invalid authorization state."));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const error = url.searchParams.get("error");
|
|
58
|
+
const code = url.searchParams.get("code");
|
|
59
|
+
if (error) {
|
|
60
|
+
res.writeHead(400, { "Content-Type": "text/html" }).end(errorPage("Authorization was denied."));
|
|
61
|
+
rejectCode(new Error(`authorization denied: ${error}`));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (!code) {
|
|
65
|
+
res.writeHead(400, { "Content-Type": "text/html" }).end(errorPage("Authorization response was missing a code."));
|
|
66
|
+
rejectCode(new Error("callback missing code"));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
res.writeHead(200, { "Content-Type": "text/html" }).end(errorPage("Authorized."));
|
|
70
|
+
resolveCode(code);
|
|
71
|
+
});
|
|
72
|
+
server.listen(0, "127.0.0.1", () => {
|
|
73
|
+
const { port } = server.address();
|
|
74
|
+
resolveServer({
|
|
75
|
+
redirectUri: `http://127.0.0.1:${port}/callback`,
|
|
76
|
+
waitForCode: () => new Promise((resolve, reject) => {
|
|
77
|
+
const timer = setTimeout(() => {
|
|
78
|
+
server.close();
|
|
79
|
+
reject(new Error("timed out waiting for browser authorization"));
|
|
80
|
+
}, AUTH_TIMEOUT_MS);
|
|
81
|
+
codePromise.then(
|
|
82
|
+
(code) => {
|
|
83
|
+
clearTimeout(timer);
|
|
84
|
+
resolve(code);
|
|
85
|
+
},
|
|
86
|
+
(err) => {
|
|
87
|
+
clearTimeout(timer);
|
|
88
|
+
reject(err);
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
}),
|
|
92
|
+
close: () => server.close()
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
var provisionApiClient = async ({ mcpBaseUrl, workspaceId, clientName, role }, deps) => {
|
|
97
|
+
const { fetchFn, openBrowser, startLoopback, log } = deps;
|
|
98
|
+
const resourceMetadata = await jsonOk(
|
|
99
|
+
await fetchFn(protectedResourceMetadataUrl(mcpBaseUrl, workspaceId)),
|
|
100
|
+
"discovering authorization server"
|
|
101
|
+
);
|
|
102
|
+
const issuer = resourceMetadata.authorization_servers?.[0];
|
|
103
|
+
if (!issuer) {
|
|
104
|
+
throw new Error("no authorization server advertised for this workspace");
|
|
105
|
+
}
|
|
106
|
+
const metadata = await jsonOk(
|
|
107
|
+
await fetchFn(
|
|
108
|
+
`${trimSlash(issuer)}/.well-known/oauth-authorization-server`
|
|
109
|
+
),
|
|
110
|
+
"fetching issuer metadata"
|
|
111
|
+
);
|
|
112
|
+
if (!metadata.registration_endpoint) {
|
|
113
|
+
throw new Error("issuer does not support dynamic client registration");
|
|
114
|
+
}
|
|
115
|
+
const { verifier, challenge } = pkcePair();
|
|
116
|
+
const state = randomBytes(16).toString("base64url");
|
|
117
|
+
const loopback = await startLoopback(state);
|
|
118
|
+
try {
|
|
119
|
+
const registration = await jsonOk(
|
|
120
|
+
await fetchFn(metadata.registration_endpoint, {
|
|
121
|
+
method: "POST",
|
|
122
|
+
headers: { "Content-Type": "application/json" },
|
|
123
|
+
body: JSON.stringify({
|
|
124
|
+
redirect_uris: [loopback.redirectUri],
|
|
125
|
+
client_name: clientName
|
|
126
|
+
})
|
|
127
|
+
}),
|
|
128
|
+
"registering client"
|
|
129
|
+
);
|
|
130
|
+
const authorizeUrl = new URL(`${trimSlash(issuer)}/authorize`);
|
|
131
|
+
authorizeUrl.search = new URLSearchParams({
|
|
132
|
+
response_type: "code",
|
|
133
|
+
client_id: registration.client_id,
|
|
134
|
+
redirect_uri: loopback.redirectUri,
|
|
135
|
+
state,
|
|
136
|
+
code_challenge: challenge,
|
|
137
|
+
code_challenge_method: "S256",
|
|
138
|
+
resource: mcpResourceUrl(mcpBaseUrl, workspaceId),
|
|
139
|
+
intent: "api_client"
|
|
140
|
+
}).toString();
|
|
141
|
+
log(
|
|
142
|
+
`Opening your browser to authorize. If it doesn't open, visit:
|
|
143
|
+
${authorizeUrl.toString()}`
|
|
144
|
+
);
|
|
145
|
+
await openBrowser(authorizeUrl.toString());
|
|
146
|
+
const code = await loopback.waitForCode();
|
|
147
|
+
const token = await jsonOk(
|
|
148
|
+
await fetchFn(metadata.token_endpoint, {
|
|
149
|
+
method: "POST",
|
|
150
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
151
|
+
body: new URLSearchParams({
|
|
152
|
+
grant_type: "authorization_code",
|
|
153
|
+
code,
|
|
154
|
+
redirect_uri: loopback.redirectUri,
|
|
155
|
+
client_id: registration.client_id,
|
|
156
|
+
code_verifier: verifier
|
|
157
|
+
})
|
|
158
|
+
}),
|
|
159
|
+
"exchanging authorization code"
|
|
160
|
+
);
|
|
161
|
+
const authHeader = { Authorization: `Bearer ${token.access_token}` };
|
|
162
|
+
const credentials = await jsonOk(
|
|
163
|
+
await fetchFn(`${trimSlash(mcpBaseUrl)}/api-clients`, {
|
|
164
|
+
method: "POST",
|
|
165
|
+
headers: { ...authHeader, "Content-Type": "application/json" },
|
|
166
|
+
body: JSON.stringify({ name: clientName, ...role ? { role } : {} })
|
|
167
|
+
}),
|
|
168
|
+
"creating API client"
|
|
169
|
+
);
|
|
170
|
+
await fetchFn(`${trimSlash(mcpBaseUrl)}/mcp-clients/self`, {
|
|
171
|
+
method: "DELETE",
|
|
172
|
+
headers: authHeader
|
|
173
|
+
}).catch(() => void 0);
|
|
174
|
+
return credentials;
|
|
175
|
+
} finally {
|
|
176
|
+
loopback.close();
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
export {
|
|
181
|
+
AUTH_TIMEOUT_MS,
|
|
182
|
+
defaultBrowserAuthDeps,
|
|
183
|
+
startLoopbackServer,
|
|
184
|
+
provisionApiClient
|
|
185
|
+
};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AddLedgerEntry
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-J6GQWO4E.js";
|
|
4
|
+
import "../chunk-FELYEHSZ.js";
|
|
5
5
|
import "../chunk-JSQLWL2J.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-PILLZB3E.js";
|
|
7
7
|
import "../chunk-O7AE4SQS.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-34NLRFFT.js";
|
|
9
9
|
import "../chunk-QF5EN33L.js";
|
|
10
10
|
import "../chunk-CW4UI44G.js";
|
|
11
|
+
import "../chunk-XK2D2Z44.js";
|
|
11
12
|
import "../chunk-7K4RMTU4.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-NYTFP5AV.js";
|
|
13
14
|
import "../chunk-L7ZGDLYU.js";
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-XK2D2Z44.js";
|
|
15
|
+
import "../chunk-TLM4VKIC.js";
|
|
16
16
|
import "../chunk-7GH3YGSC.js";
|
|
17
17
|
export {
|
|
18
18
|
AddLedgerEntry as default
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ApiClientCreate
|
|
3
|
+
} from "../../chunk-RRQXUXAS.js";
|
|
4
|
+
import "../../chunk-ZQUZATVE.js";
|
|
5
|
+
import "../../chunk-PILLZB3E.js";
|
|
6
|
+
import "../../chunk-O7AE4SQS.js";
|
|
7
|
+
import "../../chunk-34NLRFFT.js";
|
|
8
|
+
import "../../chunk-QF5EN33L.js";
|
|
9
|
+
import "../../chunk-CW4UI44G.js";
|
|
10
|
+
import "../../chunk-XK2D2Z44.js";
|
|
11
|
+
import "../../chunk-7K4RMTU4.js";
|
|
12
|
+
import "../../chunk-NYTFP5AV.js";
|
|
13
|
+
import "../../chunk-L7ZGDLYU.js";
|
|
14
|
+
import "../../chunk-TLM4VKIC.js";
|
|
15
|
+
import "../../chunk-7GH3YGSC.js";
|
|
16
|
+
export {
|
|
17
|
+
ApiClientCreate as default
|
|
18
|
+
};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CreateCustomLink
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-QDA5BIHP.js";
|
|
4
|
+
import "../chunk-FELYEHSZ.js";
|
|
5
5
|
import "../chunk-JSQLWL2J.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-PILLZB3E.js";
|
|
7
7
|
import "../chunk-O7AE4SQS.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-34NLRFFT.js";
|
|
9
9
|
import "../chunk-QF5EN33L.js";
|
|
10
10
|
import "../chunk-CW4UI44G.js";
|
|
11
|
+
import "../chunk-XK2D2Z44.js";
|
|
11
12
|
import "../chunk-7K4RMTU4.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-NYTFP5AV.js";
|
|
13
14
|
import "../chunk-L7ZGDLYU.js";
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-XK2D2Z44.js";
|
|
15
|
+
import "../chunk-TLM4VKIC.js";
|
|
16
16
|
import "../chunk-7GH3YGSC.js";
|
|
17
17
|
export {
|
|
18
18
|
CreateCustomLink as default
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CreateLedger
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-QRP56DLY.js";
|
|
4
|
+
import "../chunk-FELYEHSZ.js";
|
|
5
5
|
import "../chunk-JSQLWL2J.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-PILLZB3E.js";
|
|
7
7
|
import "../chunk-O7AE4SQS.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-34NLRFFT.js";
|
|
9
9
|
import "../chunk-QF5EN33L.js";
|
|
10
10
|
import "../chunk-CW4UI44G.js";
|
|
11
|
+
import "../chunk-XK2D2Z44.js";
|
|
11
12
|
import "../chunk-7K4RMTU4.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-NYTFP5AV.js";
|
|
13
14
|
import "../chunk-L7ZGDLYU.js";
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-XK2D2Z44.js";
|
|
15
|
+
import "../chunk-TLM4VKIC.js";
|
|
16
16
|
import "../chunk-7GH3YGSC.js";
|
|
17
17
|
export {
|
|
18
18
|
CreateLedger as default
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeleteCustomTxs
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-VIVSBPCD.js";
|
|
4
|
+
import "../chunk-FELYEHSZ.js";
|
|
5
5
|
import "../chunk-JSQLWL2J.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-PILLZB3E.js";
|
|
7
7
|
import "../chunk-O7AE4SQS.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-34NLRFFT.js";
|
|
9
9
|
import "../chunk-QF5EN33L.js";
|
|
10
10
|
import "../chunk-CW4UI44G.js";
|
|
11
|
+
import "../chunk-XK2D2Z44.js";
|
|
11
12
|
import "../chunk-7K4RMTU4.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-NYTFP5AV.js";
|
|
13
14
|
import "../chunk-L7ZGDLYU.js";
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-XK2D2Z44.js";
|
|
15
|
+
import "../chunk-TLM4VKIC.js";
|
|
16
16
|
import "../chunk-7GH3YGSC.js";
|
|
17
17
|
export {
|
|
18
18
|
DeleteCustomTxs as default
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeleteLedger
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-HCTAYKGL.js";
|
|
4
|
+
import "../chunk-FELYEHSZ.js";
|
|
5
5
|
import "../chunk-JSQLWL2J.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-PILLZB3E.js";
|
|
7
7
|
import "../chunk-O7AE4SQS.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-34NLRFFT.js";
|
|
9
9
|
import "../chunk-QF5EN33L.js";
|
|
10
10
|
import "../chunk-CW4UI44G.js";
|
|
11
|
+
import "../chunk-XK2D2Z44.js";
|
|
11
12
|
import "../chunk-7K4RMTU4.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-NYTFP5AV.js";
|
|
13
14
|
import "../chunk-L7ZGDLYU.js";
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-XK2D2Z44.js";
|
|
15
|
+
import "../chunk-TLM4VKIC.js";
|
|
16
16
|
import "../chunk-7GH3YGSC.js";
|
|
17
17
|
export {
|
|
18
18
|
DeleteLedger as default
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeleteSchema
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-5HH4NNSE.js";
|
|
4
|
+
import "../chunk-FELYEHSZ.js";
|
|
5
5
|
import "../chunk-JSQLWL2J.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-PILLZB3E.js";
|
|
7
7
|
import "../chunk-O7AE4SQS.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-34NLRFFT.js";
|
|
9
9
|
import "../chunk-QF5EN33L.js";
|
|
10
10
|
import "../chunk-CW4UI44G.js";
|
|
11
|
+
import "../chunk-XK2D2Z44.js";
|
|
11
12
|
import "../chunk-7K4RMTU4.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-NYTFP5AV.js";
|
|
13
14
|
import "../chunk-L7ZGDLYU.js";
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-XK2D2Z44.js";
|
|
15
|
+
import "../chunk-TLM4VKIC.js";
|
|
16
16
|
import "../chunk-7GH3YGSC.js";
|
|
17
17
|
export {
|
|
18
18
|
DeleteSchema as default
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GenGraphQL
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-B2BG7TCY.js";
|
|
4
|
+
import "../chunk-VJS4Z4XI.js";
|
|
5
5
|
import "../chunk-FMY4RHS4.js";
|
|
6
6
|
import "../chunk-ZMFGVGZP.js";
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-UHVWN34X.js";
|
|
8
|
+
import "../chunk-J73JTDHN.js";
|
|
9
|
+
import "../chunk-ZCK2KXOV.js";
|
|
10
|
+
import "../chunk-LDDNVG3E.js";
|
|
11
|
+
import "../chunk-PILLZB3E.js";
|
|
12
12
|
import "../chunk-O7AE4SQS.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-34NLRFFT.js";
|
|
14
14
|
import "../chunk-QF5EN33L.js";
|
|
15
15
|
import "../chunk-CW4UI44G.js";
|
|
16
|
+
import "../chunk-XK2D2Z44.js";
|
|
16
17
|
import "../chunk-7K4RMTU4.js";
|
|
17
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-NYTFP5AV.js";
|
|
18
19
|
import "../chunk-L7ZGDLYU.js";
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-XK2D2Z44.js";
|
|
20
|
+
import "../chunk-TLM4VKIC.js";
|
|
21
21
|
import "../chunk-7GH3YGSC.js";
|
|
22
22
|
export {
|
|
23
23
|
GenGraphQL as default
|