@thingd/cli 0.51.3 → 0.52.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/dist/commands/cloud.d.ts.map +1 -1
- package/dist/commands/cloud.js +30 -0
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.js +57 -24
- package/dist/lib/cloud-api.d.ts +1 -0
- package/dist/lib/cloud-api.d.ts.map +1 -1
- package/dist/lib/cloud-api.js +1 -1
- package/dist/lib/cloud-config.d.ts +2 -0
- package/dist/lib/cloud-config.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAA6B,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAA6B,MAAM,aAAa,CAAC;AAqIzE,wBAAsB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjE"}
|
package/dist/commands/cloud.js
CHANGED
|
@@ -76,6 +76,32 @@ async function pickAndSaveInstance(context, cloudConfig) {
|
|
|
76
76
|
rl.close();
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Ensure a data-plane API key exists in the cloud config.
|
|
81
|
+
* Best-effort — if creation fails, the JWT is still usable for management API.
|
|
82
|
+
*/
|
|
83
|
+
async function ensureApiKey(context, cloudConfig) {
|
|
84
|
+
if (cloudConfig.apiKey) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
const { projects } = await listProjects(cloudConfig);
|
|
89
|
+
if (projects.length === 0) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const project = projects[0];
|
|
93
|
+
if (!project) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const result = await createApiKey(cloudConfig, project.id);
|
|
97
|
+
cloudConfig.apiKey = result.token;
|
|
98
|
+
writeCloudConfig(cloudConfig);
|
|
99
|
+
context.stderr.write(` ${pc.dim("API key created for data access\n")}`);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// API key creation is best-effort
|
|
103
|
+
}
|
|
104
|
+
}
|
|
79
105
|
export async function runCloud(context) {
|
|
80
106
|
const sub = requiredToken(context.parsed, 1, "subcommand");
|
|
81
107
|
switch (sub) {
|
|
@@ -119,6 +145,8 @@ async function runLogin(context) {
|
|
|
119
145
|
context.stdout.write(pc.green(`✓ Logged in as ${user.email}\n`));
|
|
120
146
|
// Discover and select an instance (interactive if multiple)
|
|
121
147
|
await pickAndSaveInstance(context, cloudConfig);
|
|
148
|
+
// Create a data-plane API key for REST/MCP operations
|
|
149
|
+
await ensureApiKey(context, cloudConfig);
|
|
122
150
|
}
|
|
123
151
|
catch (err) {
|
|
124
152
|
if (err instanceof CloudApiError && err.status === 401) {
|
|
@@ -164,6 +192,8 @@ async function runLogin(context) {
|
|
|
164
192
|
context.stdout.write(pc.green(`\r✓ Logged in as ${user.email}\n`));
|
|
165
193
|
// Discover and select an instance (interactive if multiple)
|
|
166
194
|
await pickAndSaveInstance(context, cloudConfig);
|
|
195
|
+
// Create a data-plane API key for REST/MCP operations
|
|
196
|
+
await ensureApiKey(context, cloudConfig);
|
|
167
197
|
return;
|
|
168
198
|
}
|
|
169
199
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAmkEA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqDvD"}
|
package/dist/interactive.js
CHANGED
|
@@ -234,7 +234,9 @@ async function fetchResourcesFallback() {
|
|
|
234
234
|
const listed = await db.listQueues();
|
|
235
235
|
queues = (listed ?? []).sort();
|
|
236
236
|
}
|
|
237
|
-
catch {
|
|
237
|
+
catch (err) {
|
|
238
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
239
|
+
cloudError = cloudError ?? `Failed to load queues: ${msg}`;
|
|
238
240
|
queues = [];
|
|
239
241
|
}
|
|
240
242
|
// Link count
|
|
@@ -740,6 +742,9 @@ async function loadContent(node) {
|
|
|
740
742
|
content += ` ${pc.dim("Writes".padEnd(14))} ${pc.cyan(wLine)} ${pc.cyan(String(currentWrite).padEnd(4))} ${pc.dim(`w/s`)}\n`;
|
|
741
743
|
content += ` ${pc.dim("Appends".padEnd(14))} ${pc.green(apLine)} ${pc.green(String(currentAppend).padEnd(4))} ${pc.dim(`e/s`)}\n\n`;
|
|
742
744
|
content += ` ${pc.dim("Shortcuts:")} ${pc.bold("[c]")} Create ${pc.bold("[r]")} Refresh ${pc.bold("[/]")} Search\n`;
|
|
745
|
+
if (cloudError) {
|
|
746
|
+
content += `\n ${pc.yellow("⚠")} ${pc.dim(cloudError)}\n`;
|
|
747
|
+
}
|
|
743
748
|
}
|
|
744
749
|
else if (node.type === "category") {
|
|
745
750
|
content = pc.dim("Expand to browse items.");
|
|
@@ -1253,34 +1258,61 @@ async function handleInfo() {
|
|
|
1253
1258
|
const baseUrl = dbPath.startsWith("thingd://")
|
|
1254
1259
|
? `http://${dbPath.slice("thingd://".length)}`
|
|
1255
1260
|
: dbPath;
|
|
1256
|
-
const
|
|
1257
|
-
if (urlObj.pathname === "/mcp") {
|
|
1258
|
-
urlObj.pathname = "/";
|
|
1259
|
-
}
|
|
1261
|
+
const apiRoot = baseUrl.replace(/\/+$/, "");
|
|
1260
1262
|
const fetchJson = async (p) => {
|
|
1261
|
-
const u =
|
|
1263
|
+
const u = `${apiRoot}${p}`;
|
|
1262
1264
|
const headers = {};
|
|
1263
1265
|
if (authToken) {
|
|
1264
1266
|
headers.Authorization = `Bearer ${authToken}`;
|
|
1265
1267
|
}
|
|
1266
1268
|
const res = await fetch(u, { headers });
|
|
1269
|
+
const json = await res.json();
|
|
1267
1270
|
if (!res.ok) {
|
|
1268
|
-
|
|
1271
|
+
const detail = json?.error?.detail ?? json?.error?.message ?? `HTTP ${res.status}`;
|
|
1272
|
+
throw new Error(`${res.status}: ${detail}`);
|
|
1269
1273
|
}
|
|
1270
|
-
return
|
|
1274
|
+
return json;
|
|
1271
1275
|
};
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1276
|
+
// Health check
|
|
1277
|
+
let healthError = null;
|
|
1278
|
+
let health = null;
|
|
1279
|
+
try {
|
|
1280
|
+
health = await fetchJson("/v1/health");
|
|
1281
|
+
}
|
|
1282
|
+
catch (err) {
|
|
1283
|
+
healthError = err instanceof Error ? err.message : String(err);
|
|
1284
|
+
}
|
|
1285
|
+
// Collections check
|
|
1286
|
+
let collectionsResult = null;
|
|
1287
|
+
if (!healthError) {
|
|
1288
|
+
try {
|
|
1289
|
+
const colResp = await fetchJson("/v1/collections");
|
|
1290
|
+
collectionsResult = colResp?.data ?? null;
|
|
1291
|
+
}
|
|
1292
|
+
catch {
|
|
1293
|
+
// collections endpoint may not be available on all setups
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1279
1296
|
lines.push("");
|
|
1280
|
-
lines.push(` ${pc.bold("Cloud
|
|
1281
|
-
|
|
1282
|
-
.
|
|
1283
|
-
.
|
|
1297
|
+
lines.push(` ${pc.bold("Cloud REST API")}`);
|
|
1298
|
+
if (healthError) {
|
|
1299
|
+
lines.push(` ${pc.red("Health check failed:")} ${healthError}`);
|
|
1300
|
+
lines.push(` ${pc.dim("API URL:")} ${apiRoot}/v1/...`);
|
|
1301
|
+
lines.push(` ${pc.dim("Auth:")} ${authToken ? pc.green("Bearer token set") : pc.red("No token")}`);
|
|
1302
|
+
}
|
|
1303
|
+
else {
|
|
1304
|
+
const h = health;
|
|
1305
|
+
const status = h?.data?.status ?? h?.status ?? "ok";
|
|
1306
|
+
lines.push(` ${pc.dim("Status:")} ${pc.green(String(status))}`);
|
|
1307
|
+
lines.push(` ${pc.dim("Collections:")} ${collectionsResult ? pc.cyan(String(collectionsResult.length)) : pc.yellow("unknown")}`);
|
|
1308
|
+
if (collectionsResult && collectionsResult.length > 0) {
|
|
1309
|
+
lines.push(` ${pc.dim("Names:")} ${collectionsResult.join(", ")}`);
|
|
1310
|
+
}
|
|
1311
|
+
}
|
|
1312
|
+
if (cloudError) {
|
|
1313
|
+
lines.push("");
|
|
1314
|
+
lines.push(` ${pc.yellow("⚠ Recent error:")} ${cloudError}`);
|
|
1315
|
+
}
|
|
1284
1316
|
}
|
|
1285
1317
|
catch (err) {
|
|
1286
1318
|
const errMsg = err instanceof Error ? err.message : String(err);
|
|
@@ -1674,14 +1706,14 @@ async function handleConnect(node) {
|
|
|
1674
1706
|
cloudCfg.projectSlug = selected.projectSlug;
|
|
1675
1707
|
cloudCfg.instanceSlug = selected.instanceSlug;
|
|
1676
1708
|
writeCloudConfig(cloudCfg);
|
|
1677
|
-
await connectToDriver("cloud", deriveRestUrl(selected.mcpUrl), deriveRestUrl(selected.mcpUrl), cloudCfg.token);
|
|
1709
|
+
await connectToDriver("cloud", deriveRestUrl(selected.mcpUrl), deriveRestUrl(selected.mcpUrl), cloudCfg.apiKey ?? cloudCfg.token);
|
|
1678
1710
|
});
|
|
1679
1711
|
return;
|
|
1680
1712
|
}
|
|
1681
1713
|
// No instances found — try saved URL or show error
|
|
1682
1714
|
if (cloudCfg.instanceUrl) {
|
|
1683
1715
|
const restUrl = deriveRestUrl(cloudCfg.instanceUrl);
|
|
1684
|
-
await connectToDriver("cloud", restUrl, restUrl, cloudCfg.token);
|
|
1716
|
+
await connectToDriver("cloud", restUrl, restUrl, cloudCfg.apiKey ?? cloudCfg.token);
|
|
1685
1717
|
return;
|
|
1686
1718
|
}
|
|
1687
1719
|
viewerLines = [
|
|
@@ -1694,7 +1726,7 @@ async function handleConnect(node) {
|
|
|
1694
1726
|
catch {
|
|
1695
1727
|
if (cloudCfg.instanceUrl) {
|
|
1696
1728
|
const restUrl = deriveRestUrl(cloudCfg.instanceUrl);
|
|
1697
|
-
await connectToDriver("cloud", restUrl, restUrl, cloudCfg.token);
|
|
1729
|
+
await connectToDriver("cloud", restUrl, restUrl, cloudCfg.apiKey ?? cloudCfg.token);
|
|
1698
1730
|
return;
|
|
1699
1731
|
}
|
|
1700
1732
|
viewerLines = [
|
|
@@ -1784,7 +1816,7 @@ async function handleConnect(node) {
|
|
|
1784
1816
|
// Save manual credentials to cloud config
|
|
1785
1817
|
writeCloudConfig({ token: vals.token || "", url: cloudUrl });
|
|
1786
1818
|
}
|
|
1787
|
-
await connectToDriver(selectedDriver, cloudUrl, cloudUrl, vals.token);
|
|
1819
|
+
await connectToDriver(selectedDriver, cloudUrl, cloudUrl, cloudCfg?.apiKey ?? vals.token);
|
|
1788
1820
|
}
|
|
1789
1821
|
else {
|
|
1790
1822
|
await connectToDriver(selectedDriver, vals.path || "", undefined, undefined);
|
|
@@ -1908,7 +1940,8 @@ export async function runInteractiveCli() {
|
|
|
1908
1940
|
const cloudUrl = resolveCloudUrl(cloudCfg);
|
|
1909
1941
|
if (cloudUrl) {
|
|
1910
1942
|
try {
|
|
1911
|
-
|
|
1943
|
+
const restUrl = deriveRestUrl(cloudUrl);
|
|
1944
|
+
await connectToDriver("cloud", restUrl, restUrl, cloudCfg.apiKey ?? cloudCfg.token);
|
|
1912
1945
|
}
|
|
1913
1946
|
catch (err) {
|
|
1914
1947
|
const msg = err instanceof Error ? err.message : String(err);
|
package/dist/lib/cloud-api.d.ts
CHANGED
|
@@ -59,6 +59,7 @@ export declare function createInstance(config: CloudConfig, projectId: string, n
|
|
|
59
59
|
}>;
|
|
60
60
|
export declare function createApiKey(config: CloudConfig, projectId: string, name?: string): Promise<{
|
|
61
61
|
key: CloudApiKey;
|
|
62
|
+
token: string;
|
|
62
63
|
}>;
|
|
63
64
|
export declare function createOrganization(config: CloudConfig, name: string): Promise<{
|
|
64
65
|
organization: CloudOrganization;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-api.d.ts","sourceRoot":"","sources":["../../src/lib/cloud-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AASrD,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,qBAAa,aAAc,SAAQ,KAAK;IACtC,MAAM,EAAE,MAAM,CAAC;IAEf,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAI1C;CACF;AA0BD,wBAAsB,KAAK,CACzB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IAAE,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,CAE9E;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAE7F;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAMpC;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,SAAS,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC,CAEzC;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,CAAA;CAAE,CAAC,CAKtC;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,GAAG,EAAE,WAAW,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"cloud-api.d.ts","sourceRoot":"","sources":["../../src/lib/cloud-api.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/cloud-api.js
CHANGED
|
@@ -52,7 +52,7 @@ export async function createInstance(config, projectId, name) {
|
|
|
52
52
|
export async function createApiKey(config, projectId, name) {
|
|
53
53
|
return request(config, `/projects/${projectId}/api-keys`, {
|
|
54
54
|
method: "POST",
|
|
55
|
-
body: { name: name ?? "CLI
|
|
55
|
+
body: { name: name ?? "thingd CLI" },
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
// ── Organization API ─────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-config.d.ts","sourceRoot":"","sources":["../../src/lib/cloud-config.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8GAA8G;IAC9G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAUpD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAG1D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAKvE;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC"}
|
|
1
|
+
{"version":3,"file":"cloud-config.d.ts","sourceRoot":"","sources":["../../src/lib/cloud-config.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8GAA8G;IAC9G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAUpD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAG1D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAKvE;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thingd/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.52.0",
|
|
4
4
|
"description": "CLI, Interactive TUI Dashboard, and MCP server for thingd — a fast object-first data engine for applications and AI agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://engine.thingd.cloud",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"cli-table3": "^0.6.5",
|
|
46
46
|
"picocolors": "^1.1.1",
|
|
47
47
|
"zod": "^4.4.3",
|
|
48
|
-
"@thingd/sdk": "0.
|
|
48
|
+
"@thingd/sdk": "0.52.0"
|
|
49
49
|
},
|
|
50
50
|
"engines": {
|
|
51
51
|
"node": ">=24.0.0"
|