@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.
Files changed (45) hide show
  1. package/dist/agent-control-context.d.ts +19 -0
  2. package/dist/agent-control-context.d.ts.map +1 -0
  3. package/dist/agent-control-context.js +67 -0
  4. package/dist/agent-control-context.js.map +1 -0
  5. package/dist/args.d.ts +9 -2
  6. package/dist/args.d.ts.map +1 -1
  7. package/dist/args.js +42 -16
  8. package/dist/args.js.map +1 -1
  9. package/dist/command-manifest.d.ts +476 -0
  10. package/dist/command-manifest.d.ts.map +1 -0
  11. package/dist/command-manifest.js +338 -0
  12. package/dist/command-manifest.js.map +1 -0
  13. package/dist/deployment-client.d.ts +3 -0
  14. package/dist/deployment-client.d.ts.map +1 -0
  15. package/dist/deployment-client.js +150 -0
  16. package/dist/deployment-client.js.map +1 -0
  17. package/dist/deployment-contract.d.ts +75 -0
  18. package/dist/deployment-contract.d.ts.map +1 -0
  19. package/dist/deployment-contract.js +2 -0
  20. package/dist/deployment-contract.js.map +1 -0
  21. package/dist/deployment.d.ts +55 -0
  22. package/dist/deployment.d.ts.map +1 -0
  23. package/dist/deployment.js +252 -0
  24. package/dist/deployment.js.map +1 -0
  25. package/dist/help.d.ts.map +1 -1
  26. package/dist/help.js +32 -121
  27. package/dist/help.js.map +1 -1
  28. package/dist/hosting.d.ts +1 -17
  29. package/dist/hosting.d.ts.map +1 -1
  30. package/dist/hosting.js +15 -233
  31. package/dist/hosting.js.map +1 -1
  32. package/dist/index.js +127 -115
  33. package/dist/index.js.map +1 -1
  34. package/dist/platform-commands.d.ts +6 -0
  35. package/dist/platform-commands.d.ts.map +1 -0
  36. package/dist/platform-commands.js +47 -0
  37. package/dist/platform-commands.js.map +1 -0
  38. package/dist/sync.d.ts.map +1 -1
  39. package/dist/sync.js +1 -0
  40. package/dist/sync.js.map +1 -1
  41. package/dist/workspace-client.d.ts +48 -0
  42. package/dist/workspace-client.d.ts.map +1 -0
  43. package/dist/workspace-client.js +112 -0
  44. package/dist/workspace-client.js.map +1 -0
  45. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,KAAK,2BAA2B,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,uBAAuB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACnE,eAAe,EAAE,CACf,OAAO,EAAE,2BAA2B,KACjC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAClC,aAAa,EAAE,CACb,OAAO,EAAE,2BAA2B,EACpC,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAC;IAC1C,gBAAgB,EAAE,CAChB,OAAO,EAAE,2BAA2B,EACpC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrC,cAAc,EAAE,CACd,OAAO,EAAE,2BAA2B,EACpC,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B;;;gBAwDhB;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd;;EA6DJ;AA+BD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,sBAAsB,2CAG9B;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,kBAAkB,UAG1D;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,QAAQ,GAAG,eAAe,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,iBA6BA;AAED,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,iBAoBA;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,iBAU9B;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;CACnB,iBAcA;AA0FD,wBAAsB,oBAAoB,CAAC,GAAG,SAAgB,iBAE7D;AAED,wBAAsB,uBAAuB,CAAC,GAAG,SAAgB,iBAEhE;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,iBAEA;AAED,wBAAsB,cAAc,CAAC,GAAG,SAAgB,iBAEvD"}
@@ -0,0 +1,252 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { resolveDeploymentControlClient } from "./deployment-client.js";
4
+ export function createDeploymentOperations(adapter) {
5
+ async function readCurrentDeployment(cwd) {
6
+ const context = await adapter.readContext(cwd);
7
+ const [deployment] = await adapter.listDeployments(context);
8
+ return { context, deployment: deployment ?? null };
9
+ }
10
+ return {
11
+ async status(cwd = process.cwd()) {
12
+ const { context, deployment } = await readCurrentDeployment(cwd);
13
+ adapter.write(`${JSON.stringify({
14
+ project: context.projectSlug,
15
+ feature: context.featureSlug,
16
+ deployment,
17
+ }, null, 2)}\n`);
18
+ },
19
+ async revisions(cwd = process.cwd()) {
20
+ const { context, deployment } = await readCurrentDeployment(cwd);
21
+ if (!deployment) {
22
+ throw new Error("No Deployment exists for this project.");
23
+ }
24
+ const revisions = await adapter.listRevisions(context, deployment.id);
25
+ adapter.write(`${JSON.stringify({
26
+ deployment: {
27
+ id: deployment.id,
28
+ url: deployment.url,
29
+ activeRevisionId: deployment.activeRevision?.id ?? null,
30
+ latestRevisionId: deployment.latestRevision?.id ?? null,
31
+ },
32
+ revisions: revisions.map((revision) => ({
33
+ id: revision.id,
34
+ sequence: revision.sequence,
35
+ sourceCommit: revision.sourceCommit ?? null,
36
+ publishAttempt: revision.publishAttempt ?? null,
37
+ status: revision.status,
38
+ runtimePhase: revision.runtimePhase,
39
+ active: revision.id === deployment.activeRevision?.id,
40
+ latest: revision.id === deployment.latestRevision?.id,
41
+ errorMessage: revision.errorMessage,
42
+ createdAt: revision.createdAt ?? null,
43
+ updatedAt: revision.updatedAt ?? null,
44
+ readyAt: revision.readyAt ?? null,
45
+ failedAt: revision.failedAt ?? null,
46
+ })),
47
+ }, null, 2)}\n`);
48
+ },
49
+ async logs(input) {
50
+ const { context, deployment } = await readCurrentDeployment(input.cwd ?? process.cwd());
51
+ if (!deployment) {
52
+ throw new Error("No Deployment exists for this project.");
53
+ }
54
+ const revision = await resolveDeploymentRevision({
55
+ adapter,
56
+ context,
57
+ deployment,
58
+ ...(input.revision ? { selector: input.revision } : {}),
59
+ });
60
+ if (!revision) {
61
+ throw new Error("The Deployment does not have a Revision yet.");
62
+ }
63
+ const seenLogIds = new Set();
64
+ let previousPhase = null;
65
+ while (true) {
66
+ const response = await adapter.readRevisionLogs(context, deployment.id, revision.id);
67
+ if (!response.historyComplete) {
68
+ throw new Error("Vibable did not return the complete Deployment Revision log history.");
69
+ }
70
+ if (response.runtimePhase !== previousPhase) {
71
+ previousPhase = response.runtimePhase;
72
+ adapter.write(`[revision ${revision.sequence}] ${response.status} / ${response.runtimePhase}\n`);
73
+ }
74
+ for (const log of response.logs) {
75
+ if (seenLogIds.has(log.id))
76
+ continue;
77
+ seenLogIds.add(log.id);
78
+ adapter.write(formatDeploymentLog(log));
79
+ }
80
+ if (!input.follow ||
81
+ isTerminalDeploymentRuntimePhase(response.runtimePhase)) {
82
+ return;
83
+ }
84
+ await adapter.wait(2_000);
85
+ }
86
+ },
87
+ async stop(cwd = process.cwd()) {
88
+ const { context, deployment } = await readCurrentDeployment(cwd);
89
+ if (!deployment) {
90
+ throw new Error("No Deployment exists for this project.");
91
+ }
92
+ await adapter.stopDeployment(context, deployment.id);
93
+ adapter.write(`Deployment stopped: ${deployment.url}\n`);
94
+ },
95
+ };
96
+ }
97
+ async function resolveDeploymentRevision(input) {
98
+ if (!input.selector || input.selector === "latest") {
99
+ return input.deployment.latestRevision;
100
+ }
101
+ if (input.selector === "active") {
102
+ return input.deployment.activeRevision;
103
+ }
104
+ const revisions = await input.adapter.listRevisions(input.context, input.deployment.id);
105
+ const sequence = Number(input.selector);
106
+ const revision = revisions.find((candidate) => candidate.id === input.selector ||
107
+ (Number.isSafeInteger(sequence) && candidate.sequence === sequence));
108
+ if (!revision) {
109
+ throw new Error(`Deployment Revision not found: ${input.selector}`);
110
+ }
111
+ return revision;
112
+ }
113
+ export function isTerminalDeploymentRuntimePhase(phase) {
114
+ return phase === "ready" || phase === "stopped" || phase === "failed";
115
+ }
116
+ export function formatDeploymentLog(log) {
117
+ const level = log.level.toUpperCase().padEnd(5);
118
+ return `${log.createdAt} ${level} ${log.source ?? "service"} ${log.message}\n`;
119
+ }
120
+ export async function deployHostedProject(input) {
121
+ const control = await resolveDeploymentControlClient(input.cwd ?? process.cwd());
122
+ process.stdout.write(control.mode === "local-user"
123
+ ? "Synchronizing and checkpointing the latest local code.\n"
124
+ : "Checkpointing the latest Feature code.\n");
125
+ await control.preparePublish();
126
+ const deployments = await control.listDeployments();
127
+ const response = await control.apply({
128
+ ...(input.subdomain || deployments.length === 0
129
+ ? { subdomain: input.subdomain ?? control.projectSlug }
130
+ : {}),
131
+ ...(input.accessMode ? { accessMode: input.accessMode } : {}),
132
+ });
133
+ process.stdout.write(`Deployment queued: ${response.deployment.url}\n`);
134
+ await waitForDeploymentReady({
135
+ control,
136
+ deploymentId: response.deployment.id,
137
+ revisionId: response.revision.id,
138
+ });
139
+ process.stdout.write(`Deployment URL: ${response.deployment.url}\n`);
140
+ process.stdout.write(`Deployment access: ${input.accessMode ?? response.deployment.accessMode}\n`);
141
+ }
142
+ export async function setDeploymentEnvironment(input) {
143
+ const value = await readEnvironmentValue(input);
144
+ const control = await resolveDeploymentControlClient();
145
+ await control.ensure({ subdomain: control.projectSlug });
146
+ const deployment = await requireCurrentDeployment(control);
147
+ await control.setEnvironment(deployment.id, input.key, { value, secret: input.secret });
148
+ process.stdout.write(`Deployment environment variable ${input.key} saved.\n`);
149
+ if (input.redeploy) {
150
+ await deployHostedProject({});
151
+ }
152
+ else {
153
+ process.stdout.write("Run vibable deploy to apply this change to a new Revision.\n");
154
+ }
155
+ }
156
+ export async function listDeploymentEnvironment(_input) {
157
+ const control = await resolveDeploymentControlClient();
158
+ const deployment = await requireCurrentDeployment(control);
159
+ const variables = await control.listEnvironment(deployment.id);
160
+ for (const variable of variables) {
161
+ process.stdout.write(`${variable.key}\t${variable.secret ? "secret" : "plain"}\t${variable.scope}\t${variable.updatedAt}\n`);
162
+ }
163
+ }
164
+ export async function unsetDeploymentEnvironment(input) {
165
+ const control = await resolveDeploymentControlClient();
166
+ const deployment = await requireCurrentDeployment(control);
167
+ await control.unsetEnvironment(deployment.id, input.key);
168
+ process.stdout.write(`Deployment environment variable ${input.key} removed.\n`);
169
+ if (input.redeploy) {
170
+ await deployHostedProject({});
171
+ }
172
+ else {
173
+ process.stdout.write("Run vibable deploy to apply this change to a new Revision.\n");
174
+ }
175
+ }
176
+ async function requireCurrentDeployment(control) {
177
+ const [deployment] = await control.listDeployments();
178
+ if (!deployment) {
179
+ throw new Error("Create the Deployment first with vibable deploy, then configure its environment variables.");
180
+ }
181
+ return deployment;
182
+ }
183
+ async function waitForDeploymentReady(input) {
184
+ const deadline = Date.now() + 10 * 60 * 1000;
185
+ while (Date.now() < deadline) {
186
+ const revision = (await input.control.listRevisions(input.deploymentId)).find((candidate) => candidate.id === input.revisionId);
187
+ if (!revision) {
188
+ throw new Error("Deployment revision disappeared while publishing.");
189
+ }
190
+ if (revision.status === "ready")
191
+ return;
192
+ if (revision.status === "failed") {
193
+ throw new Error(revision.errorMessage ?? "Deployment failed.");
194
+ }
195
+ await new Promise((resolve) => setTimeout(resolve, 2_000));
196
+ }
197
+ throw new Error("Timed out waiting for the Deployment to become ready.");
198
+ }
199
+ async function readEnvironmentValue(input) {
200
+ if (input.stdin)
201
+ return readStandardInput();
202
+ if (input.fromFile) {
203
+ if (path.basename(input.fromFile) === ".env") {
204
+ throw new Error("Refusing to upload .env by default. Pass the value through --stdin instead.");
205
+ }
206
+ return readFile(input.fromFile, "utf8");
207
+ }
208
+ return input.value ?? "";
209
+ }
210
+ async function readStandardInput() {
211
+ const chunks = [];
212
+ for await (const chunk of process.stdin) {
213
+ chunks.push(Buffer.from(chunk));
214
+ }
215
+ return Buffer.concat(chunks).toString("utf8").replace(/\r?\n$/u, "");
216
+ }
217
+ const defaultAdapter = {
218
+ readContext: async (cwd) => {
219
+ const control = await resolveDeploymentControlClient(cwd);
220
+ return {
221
+ projectSlug: control.projectSlug,
222
+ featureSlug: control.featureSlug,
223
+ control,
224
+ };
225
+ },
226
+ listDeployments: (context) => requireControl(context).listDeployments(),
227
+ listRevisions: (context, deploymentId) => requireControl(context).listRevisions(deploymentId),
228
+ readRevisionLogs: (context, deploymentId, revisionId) => requireControl(context).readRevisionLogs(deploymentId, revisionId),
229
+ stopDeployment: (context, deploymentId) => requireControl(context).stop(deploymentId),
230
+ write: (value) => process.stdout.write(value),
231
+ wait: (durationMs) => new Promise((resolve) => setTimeout(resolve, durationMs)),
232
+ };
233
+ const deploymentOperations = createDeploymentOperations(defaultAdapter);
234
+ export async function showDeploymentStatus(cwd = process.cwd()) {
235
+ await deploymentOperations.status(cwd);
236
+ }
237
+ export async function showDeploymentRevisions(cwd = process.cwd()) {
238
+ await deploymentOperations.revisions(cwd);
239
+ }
240
+ export async function showDeploymentLogs(input) {
241
+ await deploymentOperations.logs(input);
242
+ }
243
+ export async function stopDeployment(cwd = process.cwd()) {
244
+ await deploymentOperations.stop(cwd);
245
+ }
246
+ function requireControl(context) {
247
+ if (!context.control) {
248
+ throw new Error("Deployment control client is unavailable.");
249
+ }
250
+ return context.control;
251
+ }
252
+ //# 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"}