@sand.ai/vibable-cli 0.3.6 → 0.3.8
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/agent-control-context.d.ts +19 -0
- package/dist/agent-control-context.d.ts.map +1 -0
- package/dist/agent-control-context.js +67 -0
- package/dist/agent-control-context.js.map +1 -0
- package/dist/args.d.ts +9 -2
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +42 -16
- package/dist/args.js.map +1 -1
- package/dist/command-manifest.d.ts +476 -0
- package/dist/command-manifest.d.ts.map +1 -0
- package/dist/command-manifest.js +338 -0
- package/dist/command-manifest.js.map +1 -0
- package/dist/deployment-client.d.ts +3 -0
- package/dist/deployment-client.d.ts.map +1 -0
- package/dist/deployment-client.js +150 -0
- package/dist/deployment-client.js.map +1 -0
- package/dist/deployment-contract.d.ts +75 -0
- package/dist/deployment-contract.d.ts.map +1 -0
- package/dist/deployment-contract.js +2 -0
- package/dist/deployment-contract.js.map +1 -0
- package/dist/deployment.d.ts +55 -0
- package/dist/deployment.d.ts.map +1 -0
- package/dist/deployment.js +252 -0
- package/dist/deployment.js.map +1 -0
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +32 -121
- package/dist/help.js.map +1 -1
- package/dist/hosting.d.ts +1 -17
- package/dist/hosting.d.ts.map +1 -1
- package/dist/hosting.js +15 -233
- package/dist/hosting.js.map +1 -1
- package/dist/index.js +127 -115
- package/dist/index.js.map +1 -1
- package/dist/platform-commands.d.ts +6 -0
- package/dist/platform-commands.d.ts.map +1 -0
- package/dist/platform-commands.js +47 -0
- package/dist/platform-commands.js.map +1 -0
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +1 -0
- package/dist/sync.js.map +1 -1
- package/dist/workspace-client.d.ts +48 -0
- package/dist/workspace-client.d.ts.map +1 -0
- package/dist/workspace-client.js +112 -0
- package/dist/workspace-client.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
export async function readWorkspaceContext(cwd = process.cwd()) {
|
|
5
|
+
const [binding, auth] = await Promise.all([
|
|
6
|
+
readHostingBinding(cwd),
|
|
7
|
+
readAuthConfig(),
|
|
8
|
+
]);
|
|
9
|
+
if (trimSlash(auth.apiBaseUrl) !== trimSlash(binding.apiBaseUrl)) {
|
|
10
|
+
throw new Error(`Run vibable auth login --api ${binding.apiBaseUrl} first.`);
|
|
11
|
+
}
|
|
12
|
+
return { auth, binding };
|
|
13
|
+
}
|
|
14
|
+
export async function readHostingBinding(cwd) {
|
|
15
|
+
let directory = path.resolve(cwd);
|
|
16
|
+
while (true) {
|
|
17
|
+
try {
|
|
18
|
+
const parsed = JSON.parse(await readFile(path.join(directory, ".vibable", "hosting.json"), "utf8"));
|
|
19
|
+
if (parsed.apiBaseUrl &&
|
|
20
|
+
parsed.projectSlug &&
|
|
21
|
+
parsed.featureSlug &&
|
|
22
|
+
parsed.featureId) {
|
|
23
|
+
return { ...parsed, root: directory };
|
|
24
|
+
}
|
|
25
|
+
throw new Error("Invalid .vibable/hosting.json");
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (!isMissingFileError(error))
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
const parent = path.dirname(directory);
|
|
32
|
+
if (parent === directory) {
|
|
33
|
+
throw new Error("No .vibable/hosting.json found from current directory or parents.");
|
|
34
|
+
}
|
|
35
|
+
directory = parent;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export async function readAuthConfig() {
|
|
39
|
+
const parsed = JSON.parse(await readFile(authConfigPath(), "utf8"));
|
|
40
|
+
if (!parsed.apiBaseUrl || !parsed.token || !parsed.expiresAt) {
|
|
41
|
+
throw new Error("Invalid Vibable auth config.");
|
|
42
|
+
}
|
|
43
|
+
if (Date.parse(parsed.expiresAt) <= Date.now()) {
|
|
44
|
+
throw new Error("Vibable login expired. Run vibable auth login again.");
|
|
45
|
+
}
|
|
46
|
+
return parsed;
|
|
47
|
+
}
|
|
48
|
+
export function authConfigPath() {
|
|
49
|
+
return process.env.VIBABLE_AUTH_FILE ??
|
|
50
|
+
path.join(homedir(), ".config", "vibable", "auth.json");
|
|
51
|
+
}
|
|
52
|
+
export async function postJson(input) {
|
|
53
|
+
const response = await fetch(`${trimSlash(input.apiBaseUrl)}${input.path}`, {
|
|
54
|
+
method: "POST",
|
|
55
|
+
headers: {
|
|
56
|
+
"content-type": "application/json",
|
|
57
|
+
...(input.token ? { authorization: `Bearer ${input.token}` } : {}),
|
|
58
|
+
},
|
|
59
|
+
body: JSON.stringify(input.body),
|
|
60
|
+
});
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
throw new Error(await readResponseError(response));
|
|
63
|
+
}
|
|
64
|
+
return await response.json();
|
|
65
|
+
}
|
|
66
|
+
export async function getJson(input) {
|
|
67
|
+
const response = await fetch(`${trimSlash(input.apiBaseUrl)}${input.path}`, {
|
|
68
|
+
headers: { authorization: `Bearer ${input.token}` },
|
|
69
|
+
});
|
|
70
|
+
if (!response.ok) {
|
|
71
|
+
throw new Error(await readResponseError(response));
|
|
72
|
+
}
|
|
73
|
+
return await response.json();
|
|
74
|
+
}
|
|
75
|
+
export async function putJson(input) {
|
|
76
|
+
const response = await fetch(`${trimSlash(input.apiBaseUrl)}${input.path}`, {
|
|
77
|
+
method: "PUT",
|
|
78
|
+
headers: {
|
|
79
|
+
"content-type": "application/json",
|
|
80
|
+
authorization: `Bearer ${input.token}`,
|
|
81
|
+
},
|
|
82
|
+
body: JSON.stringify(input.body),
|
|
83
|
+
});
|
|
84
|
+
if (!response.ok) {
|
|
85
|
+
throw new Error(await readResponseError(response));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export async function deleteRequest(input) {
|
|
89
|
+
const response = await fetch(`${trimSlash(input.apiBaseUrl)}${input.path}`, {
|
|
90
|
+
method: "DELETE",
|
|
91
|
+
headers: { authorization: `Bearer ${input.token}` },
|
|
92
|
+
});
|
|
93
|
+
if (!response.ok) {
|
|
94
|
+
throw new Error(await readResponseError(response));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
export async function readResponseError(response) {
|
|
98
|
+
const value = await response.json().catch(() => null);
|
|
99
|
+
return typeof value?.message === "string"
|
|
100
|
+
? value.message
|
|
101
|
+
: `Vibable request failed (${response.status}).`;
|
|
102
|
+
}
|
|
103
|
+
export function trimSlash(value) {
|
|
104
|
+
return value.replace(/\/+$/u, "");
|
|
105
|
+
}
|
|
106
|
+
function isMissingFileError(error) {
|
|
107
|
+
return Boolean(error &&
|
|
108
|
+
typeof error === "object" &&
|
|
109
|
+
"code" in error &&
|
|
110
|
+
error.code === "ENOENT");
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=workspace-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-client.js","sourceRoot":"","sources":["../src/workspace-client.ts"],"names":[],"mappings":"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"}
|