@sand.ai/vibable-cli 0.3.5 → 0.3.7

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.
@@ -0,0 +1,299 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { startHostingSync } from "./hosting.js";
4
+ import { deleteRequest, getJson, postJson, putJson, readWorkspaceContext, } from "./workspace-client.js";
5
+ export function createDeploymentOperations(adapter) {
6
+ async function readCurrentDeployment(cwd) {
7
+ const context = await adapter.readContext(cwd);
8
+ const [deployment] = await adapter.listDeployments(context);
9
+ return { context, deployment: deployment ?? null };
10
+ }
11
+ return {
12
+ async status(cwd = process.cwd()) {
13
+ const { context, deployment } = await readCurrentDeployment(cwd);
14
+ adapter.write(`${JSON.stringify({
15
+ project: context.binding.projectSlug,
16
+ feature: context.binding.featureSlug,
17
+ deployment,
18
+ }, null, 2)}\n`);
19
+ },
20
+ async revisions(cwd = process.cwd()) {
21
+ const { context, deployment } = await readCurrentDeployment(cwd);
22
+ if (!deployment) {
23
+ throw new Error("No Deployment exists for this project.");
24
+ }
25
+ const revisions = await adapter.listRevisions(context, deployment.id);
26
+ adapter.write(`${JSON.stringify({
27
+ deployment: {
28
+ id: deployment.id,
29
+ url: deployment.url,
30
+ activeRevisionId: deployment.activeRevision?.id ?? null,
31
+ latestRevisionId: deployment.latestRevision?.id ?? null,
32
+ },
33
+ revisions: revisions.map((revision) => ({
34
+ id: revision.id,
35
+ sequence: revision.sequence,
36
+ sourceCommit: revision.sourceCommit ?? null,
37
+ publishAttempt: revision.publishAttempt ?? null,
38
+ status: revision.status,
39
+ runtimePhase: revision.runtimePhase,
40
+ active: revision.id === deployment.activeRevision?.id,
41
+ latest: revision.id === deployment.latestRevision?.id,
42
+ errorMessage: revision.errorMessage,
43
+ createdAt: revision.createdAt ?? null,
44
+ updatedAt: revision.updatedAt ?? null,
45
+ readyAt: revision.readyAt ?? null,
46
+ failedAt: revision.failedAt ?? null,
47
+ })),
48
+ }, null, 2)}\n`);
49
+ },
50
+ async logs(input) {
51
+ const { context, deployment } = await readCurrentDeployment(input.cwd ?? process.cwd());
52
+ if (!deployment) {
53
+ throw new Error("No Deployment exists for this project.");
54
+ }
55
+ const revision = await resolveDeploymentRevision({
56
+ adapter,
57
+ context,
58
+ deployment,
59
+ ...(input.revision ? { selector: input.revision } : {}),
60
+ });
61
+ if (!revision) {
62
+ throw new Error("The Deployment does not have a Revision yet.");
63
+ }
64
+ const seenLogIds = new Set();
65
+ let previousPhase = null;
66
+ while (true) {
67
+ const response = await adapter.readRevisionLogs(context, deployment.id, revision.id);
68
+ if (!response.historyComplete) {
69
+ throw new Error("Vibable did not return the complete Deployment Revision log history.");
70
+ }
71
+ if (response.runtimePhase !== previousPhase) {
72
+ previousPhase = response.runtimePhase;
73
+ adapter.write(`[revision ${revision.sequence}] ${response.status} / ${response.runtimePhase}\n`);
74
+ }
75
+ for (const log of response.logs) {
76
+ if (seenLogIds.has(log.id))
77
+ continue;
78
+ seenLogIds.add(log.id);
79
+ adapter.write(formatDeploymentLog(log));
80
+ }
81
+ if (!input.follow ||
82
+ isTerminalDeploymentRuntimePhase(response.runtimePhase)) {
83
+ return;
84
+ }
85
+ await adapter.wait(2_000);
86
+ }
87
+ },
88
+ async stop(cwd = process.cwd()) {
89
+ const { context, deployment } = await readCurrentDeployment(cwd);
90
+ if (!deployment) {
91
+ throw new Error("No Deployment exists for this project.");
92
+ }
93
+ await adapter.stopDeployment(context, deployment.id);
94
+ adapter.write(`Deployment stopped: ${deployment.url}\n`);
95
+ },
96
+ };
97
+ }
98
+ async function resolveDeploymentRevision(input) {
99
+ if (!input.selector || input.selector === "latest") {
100
+ return input.deployment.latestRevision;
101
+ }
102
+ if (input.selector === "active") {
103
+ return input.deployment.activeRevision;
104
+ }
105
+ const revisions = await input.adapter.listRevisions(input.context, input.deployment.id);
106
+ const sequence = Number(input.selector);
107
+ const revision = revisions.find((candidate) => candidate.id === input.selector ||
108
+ (Number.isSafeInteger(sequence) && candidate.sequence === sequence));
109
+ if (!revision) {
110
+ throw new Error(`Deployment Revision not found: ${input.selector}`);
111
+ }
112
+ return revision;
113
+ }
114
+ export function isTerminalDeploymentRuntimePhase(phase) {
115
+ return phase === "ready" || phase === "stopped" || phase === "failed";
116
+ }
117
+ export function formatDeploymentLog(log) {
118
+ const level = log.level.toUpperCase().padEnd(5);
119
+ return `${log.createdAt} ${level} ${log.source ?? "service"} ${log.message}\n`;
120
+ }
121
+ export async function deployHostedProject(input) {
122
+ const context = await readWorkspaceContext(input.cwd ?? process.cwd());
123
+ process.stdout.write("Synchronizing and checkpointing the latest local code.\n");
124
+ await startHostingSync(context.binding.root);
125
+ const deployments = await listHostedDeployments(context);
126
+ const response = await postJson({
127
+ apiBaseUrl: context.binding.apiBaseUrl,
128
+ token: context.auth.token,
129
+ path: `/api/workspace/features/${encodeURIComponent(context.binding.featureSlug)}/deployments/apply`,
130
+ body: {
131
+ spec: {
132
+ ...(input.subdomain || deployments.length === 0
133
+ ? {
134
+ subdomain: input.subdomain ?? context.binding.projectSlug,
135
+ }
136
+ : {}),
137
+ ...(input.accessMode
138
+ ? { accessMode: input.accessMode }
139
+ : {}),
140
+ },
141
+ release: { source: "feature-worktree" },
142
+ },
143
+ });
144
+ process.stdout.write(`Deployment queued: ${response.deployment.url}\n`);
145
+ await waitForDeploymentReady({
146
+ context,
147
+ deploymentId: response.deployment.id,
148
+ revisionId: response.revision.id,
149
+ });
150
+ process.stdout.write(`Deployment URL: ${response.deployment.url}\n`);
151
+ process.stdout.write(`Deployment access: ${input.accessMode ?? response.deployment.accessMode}\n`);
152
+ }
153
+ export async function setDeploymentEnvironment(input) {
154
+ const value = await readEnvironmentValue(input);
155
+ await ensureHostedDeployment();
156
+ const { context, deployment } = await requireCurrentDeployment();
157
+ await putJson({
158
+ apiBaseUrl: context.binding.apiBaseUrl,
159
+ token: context.auth.token,
160
+ path: `/api/workspace/deployments/${encodeURIComponent(deployment.id)}/env/${encodeURIComponent(input.key)}`,
161
+ body: { value, secret: input.secret },
162
+ });
163
+ process.stdout.write(`Deployment environment variable ${input.key} saved.\n`);
164
+ if (input.redeploy) {
165
+ await deployHostedProject({});
166
+ }
167
+ else {
168
+ process.stdout.write("Run vibable deploy to apply this change to a new Revision.\n");
169
+ }
170
+ }
171
+ export async function listDeploymentEnvironment(_input) {
172
+ const { context, deployment } = await requireCurrentDeployment();
173
+ const response = await getJson({
174
+ apiBaseUrl: context.binding.apiBaseUrl,
175
+ token: context.auth.token,
176
+ path: `/api/workspace/deployments/${encodeURIComponent(deployment.id)}/env`,
177
+ });
178
+ for (const variable of response.variables) {
179
+ process.stdout.write(`${variable.key}\t${variable.secret ? "secret" : "plain"}\t${variable.scope}\t${variable.updatedAt}\n`);
180
+ }
181
+ }
182
+ export async function unsetDeploymentEnvironment(input) {
183
+ const { context, deployment } = await requireCurrentDeployment();
184
+ await deleteRequest({
185
+ apiBaseUrl: context.binding.apiBaseUrl,
186
+ token: context.auth.token,
187
+ path: `/api/workspace/deployments/${encodeURIComponent(deployment.id)}/env/${encodeURIComponent(input.key)}`,
188
+ });
189
+ process.stdout.write(`Deployment environment variable ${input.key} removed.\n`);
190
+ if (input.redeploy) {
191
+ await deployHostedProject({});
192
+ }
193
+ else {
194
+ process.stdout.write("Run vibable deploy to apply this change to a new Revision.\n");
195
+ }
196
+ }
197
+ async function requireCurrentDeployment(cwd = process.cwd()) {
198
+ const context = await readWorkspaceContext(cwd);
199
+ const [deployment] = await listHostedDeployments(context);
200
+ if (!deployment) {
201
+ throw new Error("Create the Deployment first with vibable deploy, then configure its environment variables.");
202
+ }
203
+ return { context, deployment };
204
+ }
205
+ async function ensureHostedDeployment(cwd = process.cwd()) {
206
+ const context = await readWorkspaceContext(cwd);
207
+ await postJson({
208
+ apiBaseUrl: context.binding.apiBaseUrl,
209
+ token: context.auth.token,
210
+ path: `/api/workspace/features/${encodeURIComponent(context.binding.featureSlug)}/deployments/ensure`,
211
+ body: {
212
+ subdomain: context.binding.projectSlug,
213
+ visibility: "public",
214
+ },
215
+ });
216
+ }
217
+ async function listHostedDeployments(context) {
218
+ return (await getJson({
219
+ apiBaseUrl: context.binding.apiBaseUrl,
220
+ token: context.auth.token,
221
+ path: `/api/workspace/features/${encodeURIComponent(context.binding.featureSlug)}/deployments`,
222
+ })).deployments;
223
+ }
224
+ async function waitForDeploymentReady(input) {
225
+ const deadline = Date.now() + 10 * 60 * 1000;
226
+ while (Date.now() < deadline) {
227
+ const revision = (await getJson({
228
+ apiBaseUrl: input.context.binding.apiBaseUrl,
229
+ token: input.context.auth.token,
230
+ path: `/api/workspace/deployments/${encodeURIComponent(input.deploymentId)}/revisions`,
231
+ })).revisions.find((candidate) => candidate.id === input.revisionId);
232
+ if (!revision) {
233
+ throw new Error("Deployment revision disappeared while publishing.");
234
+ }
235
+ if (revision.status === "ready")
236
+ return;
237
+ if (revision.status === "failed") {
238
+ throw new Error(revision.errorMessage ?? "Deployment failed.");
239
+ }
240
+ await new Promise((resolve) => setTimeout(resolve, 2_000));
241
+ }
242
+ throw new Error("Timed out waiting for the Deployment to become ready.");
243
+ }
244
+ async function readEnvironmentValue(input) {
245
+ if (input.stdin)
246
+ return readStandardInput();
247
+ if (input.fromFile) {
248
+ if (path.basename(input.fromFile) === ".env") {
249
+ throw new Error("Refusing to upload .env by default. Pass the value through --stdin instead.");
250
+ }
251
+ return readFile(input.fromFile, "utf8");
252
+ }
253
+ return input.value ?? "";
254
+ }
255
+ async function readStandardInput() {
256
+ const chunks = [];
257
+ for await (const chunk of process.stdin) {
258
+ chunks.push(Buffer.from(chunk));
259
+ }
260
+ return Buffer.concat(chunks).toString("utf8").replace(/\r?\n$/u, "");
261
+ }
262
+ const defaultAdapter = {
263
+ readContext: readWorkspaceContext,
264
+ listDeployments: listHostedDeployments,
265
+ listRevisions: (context, deploymentId) => getJson({
266
+ apiBaseUrl: context.binding.apiBaseUrl,
267
+ token: context.auth.token,
268
+ path: `/api/workspace/deployments/${encodeURIComponent(deploymentId)}/revisions`,
269
+ }).then((response) => response.revisions),
270
+ readRevisionLogs: (context, deploymentId, revisionId) => getJson({
271
+ apiBaseUrl: context.binding.apiBaseUrl,
272
+ token: context.auth.token,
273
+ path: `/api/workspace/deployments/${encodeURIComponent(deploymentId)}/revisions/${encodeURIComponent(revisionId)}/logs?history=all`,
274
+ }),
275
+ stopDeployment: async (context, deploymentId) => {
276
+ await postJson({
277
+ apiBaseUrl: context.binding.apiBaseUrl,
278
+ token: context.auth.token,
279
+ path: `/api/workspace/deployments/${encodeURIComponent(deploymentId)}/stop`,
280
+ body: {},
281
+ });
282
+ },
283
+ write: (value) => process.stdout.write(value),
284
+ wait: (durationMs) => new Promise((resolve) => setTimeout(resolve, durationMs)),
285
+ };
286
+ const deploymentOperations = createDeploymentOperations(defaultAdapter);
287
+ export async function showDeploymentStatus(cwd = process.cwd()) {
288
+ await deploymentOperations.status(cwd);
289
+ }
290
+ export async function showDeploymentRevisions(cwd = process.cwd()) {
291
+ await deploymentOperations.revisions(cwd);
292
+ }
293
+ export async function showDeploymentLogs(input) {
294
+ await deploymentOperations.logs(input);
295
+ }
296
+ export async function stopDeployment(cwd = process.cwd()) {
297
+ await deploymentOperations.stop(cwd);
298
+ }
299
+ //# sourceMappingURL=deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAoHA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAW5D"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAQA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAW5D"}
package/dist/help.js CHANGED
@@ -1,134 +1,45 @@
1
- const helpByCommand = new Map([
2
- [
3
- "",
4
- `Vibable CLI
5
-
6
- Usage:
7
- vibable <command> [options]
8
-
9
- Commands:
10
- auth login Authorize the CLI through Vibable Web
11
- guide Read the Agent Skill catalog or one Skill
12
- dev Create and manage a local development session
13
- config apply Apply vibable.yaml and rebuild Preview
14
- deploy Build and publish a Deployment
15
- env Manage Deployment environment variables
16
- status Show Feature runtime status and service URL
17
- logs Read or follow Feature logs
18
- exec Run a command in the Feature Pod
19
- data migrate Apply a Managed Data schema operation
20
- app-auth enable Enable Vibable App Auth
21
-
22
- Run 'vibable <command> --help' for command details.`,
23
- ],
24
- [
25
- "auth",
26
- `Usage:
27
- vibable auth login --api <url>`,
28
- ],
29
- [
30
- "auth login",
31
- `Authorize the CLI through the user's existing Vibable Web login.
32
-
33
- Usage:
34
- vibable auth login --api <url>`,
35
- ],
36
- [
37
- "guide",
38
- `Read the public Agent Skill catalog or one Skill. Authentication is not required.
39
-
40
- Usage:
41
- vibable guide [skill] [--api <url>]
42
-
43
- Examples:
44
- vibable guide
45
- vibable guide vibable-runtime`,
46
- ],
47
- [
48
- "dev",
49
- `Create and manage a CLI-backed local development session.
50
-
51
- Usage:
52
- vibable dev init [--api <url>] [--config <path>] <directory>
53
- vibable dev connect --api <url> --session <id> --token <token> <directory>
54
- vibable dev start
55
- vibable dev status
56
- vibable dev stop`,
57
- ],
58
- [
59
- "dev init",
60
- `Upload a local project, create or resume its Feature, and start synchronization.
61
-
62
- Usage:
63
- vibable dev init [--api <url>] [--config <path>] <directory>`,
64
- ],
65
- [
66
- "dev connect",
67
- `Connect to an existing Feature using the command generated by Vibable.
68
-
69
- Usage:
70
- vibable dev connect --api <url> --session <id> --token <token> <directory>`,
71
- ],
72
- ["dev start", "Usage:\n vibable dev start"],
73
- ["dev status", "Usage:\n vibable dev status"],
74
- ["dev stop", "Usage:\n vibable dev stop"],
75
- ["config", "Usage:\n vibable config apply [--config <path>]"],
76
- ["deploy", "Usage:\n vibable deploy [--subdomain <subdomain>]"],
77
- ["env", "Usage:\n vibable env <set|list|unset> --deployment"],
78
- ["env set", "Usage:\n vibable env set KEY=value --deployment [--secret] [--redeploy]\n vibable env set KEY --deployment --stdin [--secret] [--redeploy]\n vibable env set KEY --deployment --from-file <path> [--secret] [--redeploy]"],
79
- ["env list", "Usage:\n vibable env list --deployment"],
80
- ["env unset", "Usage:\n vibable env unset KEY --deployment [--redeploy]"],
81
- [
82
- "config apply",
83
- `Apply the local Vibable runtime configuration and rebuild the Feature Pod.
84
-
85
- Usage:
86
- vibable config apply [--config <path>]`,
87
- ],
88
- ["status", "Usage:\n vibable status"],
89
- ["logs", "Usage:\n vibable logs [--follow]"],
90
- [
91
- "exec",
92
- `Run a command in the active Feature Pod.
93
-
94
- Usage:
95
- vibable exec [--api <url> --session <id> --token <token>] [--shell] -- <command>`,
96
- ],
97
- ["data", "Usage:\n vibable data migrate [--wait] <operation.json|->"],
98
- [
99
- "data migrate",
100
- `Apply a Managed Data schema operation from a file or stdin.
101
-
102
- Usage:
103
- vibable data migrate [--wait] <operation.json|->`,
104
- ],
105
- ["app-auth", "Usage:\n vibable app-auth enable"],
106
- [
107
- "app-auth enable",
108
- `Enable Vibable App Auth for the bound project.
109
-
110
- Usage:
111
- vibable app-auth enable`,
112
- ],
113
- ]);
1
+ import { cliCommandManifest, findCliCommandForHelp, } from "./command-manifest.js";
114
2
  const helpFlags = new Set(["-h", "--help"]);
115
3
  export function resolveCliHelp(args) {
116
4
  const separatorIndex = args.indexOf("--");
117
5
  const cliArgs = separatorIndex >= 0 ? args.slice(0, separatorIndex) : args;
118
6
  if (cliArgs[0] === "help") {
119
- return findCommandHelp(cliArgs.slice(1));
7
+ return renderCliHelp(findCliCommandForHelp(cliArgs.slice(1)));
120
8
  }
121
9
  const helpIndex = cliArgs.findIndex((argument) => helpFlags.has(argument));
122
10
  if (helpIndex < 0)
123
11
  return null;
124
- return findCommandHelp(cliArgs.slice(0, helpIndex));
12
+ return renderCliHelp(findCliCommandForHelp(cliArgs.slice(0, helpIndex)));
125
13
  }
126
- function findCommandHelp(args) {
127
- for (let length = args.length; length >= 0; length -= 1) {
128
- const help = helpByCommand.get(args.slice(0, length).join(" "));
129
- if (help)
130
- return `${help}\n`;
14
+ function renderCliHelp(command) {
15
+ if (command.path.length === 0) {
16
+ const summaries = cliCommandManifest.flatMap((candidate) => "rootSummary" in candidate
17
+ ? [{ label: candidate.path.join(" "), summary: candidate.rootSummary }]
18
+ : []);
19
+ const labelWidth = Math.max(...summaries.map(({ label }) => label.length));
20
+ return `Vibable CLI
21
+
22
+ Usage:
23
+ ${command.usage?.[0]}
24
+
25
+ Commands:
26
+ ${summaries
27
+ .map(({ label, summary }) => ` ${label.padEnd(labelWidth)} ${summary}`)
28
+ .join("\n")}
29
+
30
+ Run 'vibable <command> --help' for command details.\n`;
131
31
  }
132
- return `${helpByCommand.get("")}\n`;
32
+ const sections = [
33
+ command.description,
34
+ command.usage && command.usage.length > 0
35
+ ? `Usage:\n${command.usage.map((usage) => ` ${usage}`).join("\n")}`
36
+ : undefined,
37
+ command.examples && command.examples.length > 0
38
+ ? `Examples:\n${command.examples
39
+ .map((example) => ` ${example}`)
40
+ .join("\n")}`
41
+ : undefined,
42
+ ].filter((section) => Boolean(section));
43
+ return `${sections.join("\n\n")}\n`;
133
44
  }
134
45
  //# sourceMappingURL=help.js.map
package/dist/help.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAiB;IAC5C;QACE,EAAE;QACF;;;;;;;;;;;;;;;;;;oDAkBgD;KACjD;IACD;QACE,MAAM;QACN;iCAC6B;KAC9B;IACD;QACE,YAAY;QACZ;;;iCAG6B;KAC9B;IACD;QACE,OAAO;QACP;;;;;;;gCAO4B;KAC7B;IACD;QACE,KAAK;QACL;;;;;;;mBAOe;KAChB;IACD;QACE,UAAU;QACV;;;+DAG2D;KAC5D;IACD;QACE,aAAa;QACb;;;6EAGyE;KAC1E;IACD,CAAC,WAAW,EAAE,6BAA6B,CAAC;IAC5C,CAAC,YAAY,EAAE,8BAA8B,CAAC;IAC9C,CAAC,UAAU,EAAE,4BAA4B,CAAC;IAC1C,CAAC,QAAQ,EAAE,kDAAkD,CAAC;IAC9D,CAAC,QAAQ,EAAE,oDAAoD,CAAC;IAChE,CAAC,KAAK,EAAE,qDAAqD,CAAC;IAC9D,CAAC,SAAS,EAAE,6NAA6N,CAAC;IAC1O,CAAC,UAAU,EAAE,yCAAyC,CAAC;IACvD,CAAC,WAAW,EAAE,2DAA2D,CAAC;IAC1E;QACE,cAAc;QACd;;;yCAGqC;KACtC;IACD,CAAC,QAAQ,EAAE,0BAA0B,CAAC;IACtC,CAAC,MAAM,EAAE,mCAAmC,CAAC;IAC7C;QACE,MAAM;QACN;;;mFAG+E;KAChF;IACD,CAAC,MAAM,EAAE,4DAA4D,CAAC;IACtE;QACE,cAAc;QACd;;;mDAG+C;KAChD;IACD,CAAC,UAAU,EAAE,mCAAmC,CAAC;IACjD;QACE,iBAAiB;QACjB;;;0BAGsB;KACvB;CACF,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE5C,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3E,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,eAAe,CAAC,IAAc;IACrC,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,IAAI,IAAI;YAAE,OAAO,GAAG,IAAI,IAAI,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE5C,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3E,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,aAAa,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,aAAa,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,aAAa,CAAC,OAA6B;IAClD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CACzD,aAAa,IAAI,SAAS;YACxB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC;YACvE,CAAC,CAAC,EAAE,CACP,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,OAAO;;;IAGP,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;;EAGpB,SAAS;aACR,GAAG,CACF,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CACrB,KAAK,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,OAAO,EAAE,CAC9C;aACA,IAAI,CAAC,IAAI,CAAC;;sDAEyC,CAAC;IACrD,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,OAAO,CAAC,WAAW;QACnB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACvC,CAAC,CAAC,WAAW,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpE,CAAC,CAAC,SAAS;QACb,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC7C,CAAC,CAAC,cAAc,OAAO,CAAC,QAAQ;iBAC3B,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC;iBAChC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjB,CAAC,CAAC,SAAS;KACd,CAAC,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,CAAC"}
package/dist/hosting.d.ts CHANGED
@@ -16,25 +16,9 @@ export declare function applyHostingConfig(input: {
16
16
  cwd?: string;
17
17
  }): Promise<void>;
18
18
  export declare function showHostingStatus(cwd?: string): Promise<void>;
19
- export declare function deployHostedProject(input: {
20
- subdomain?: string;
21
- cwd?: string;
22
- }): Promise<void>;
23
- export declare function setDeploymentEnvironment(input: {
24
- key: string;
25
- value?: string;
26
- secret: boolean;
27
- stdin: boolean;
28
- fromFile?: string;
29
- redeploy: boolean;
30
- }): Promise<void>;
31
- export declare function listDeploymentEnvironment(_input: Record<string, never>): Promise<void>;
32
- export declare function unsetDeploymentEnvironment(input: {
33
- key: string;
34
- redeploy: boolean;
35
- }): Promise<void>;
36
19
  export declare function showHostingLogs(input: {
37
20
  follow: boolean;
38
21
  cwd?: string;
39
22
  }): Promise<void>;
23
+ export declare function parseCompleteLogSnapshot(data: string): boolean;
40
24
  //# sourceMappingURL=hosting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hosting.d.ts","sourceRoot":"","sources":["../src/hosting.ts"],"names":[],"mappings":"AAoDA,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,iBA2B3D;AAmCD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,iBAmEA;AAED,wBAAsB,gBAAgB,CAAC,GAAG,SAAgB,iBAiBzD;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,iBA8BA;AA2BD,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,iBAsDA;AAwDD,wBAAsB,iBAAiB,CAAC,GAAG,SAAgB,iBAwB1D;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,iBAuBpF;AASD,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB,iBAaA;AAED,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,iBAU5E;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,iBAUzF;AA2ED,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,iBAqEA"}
1
+ {"version":3,"file":"hosting.d.ts","sourceRoot":"","sources":["../src/hosting.ts"],"names":[],"mappings":"AAmDA,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,iBA2B3D;AAmCD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,iBAmEA;AAED,wBAAsB,gBAAgB,CAAC,GAAG,SAAgB,iBAiBzD;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,iBA8BA;AA2BD,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,iBAsDA;AAwDD,wBAAsB,iBAAiB,CAAC,GAAG,SAAgB,iBAwB1D;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,iBA4EA;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,WAGpD"}