@upstash/box-cli 0.1.3 → 0.1.4
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 +29 -0
- package/dist/auth.d.ts +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +7 -9
- package/dist/auth.js.map +1 -1
- package/dist/commands/connect.d.ts +3 -6
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +15 -15
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/create.d.ts +7 -7
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +26 -27
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/from-snapshot.d.ts +8 -11
- package/dist/commands/from-snapshot.d.ts.map +1 -1
- package/dist/commands/from-snapshot.js +26 -27
- package/dist/commands/from-snapshot.js.map +1 -1
- package/dist/commands/get.d.ts +2 -2
- package/dist/commands/get.js +4 -4
- package/dist/commands/init-demo.d.ts +15 -0
- package/dist/commands/init-demo.d.ts.map +1 -0
- package/dist/commands/init-demo.js +202 -0
- package/dist/commands/init-demo.js.map +1 -0
- package/dist/commands/list.d.ts +2 -2
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +15 -15
- package/dist/commands/list.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +45 -34
- package/dist/index.js.map +1 -1
- package/dist/output.d.ts +1 -1
- package/dist/output.js +3 -3
- package/dist/repl-commands/delete.d.ts +1 -1
- package/dist/repl-commands/delete.js +4 -4
- package/dist/repl-commands/exec.d.ts +1 -1
- package/dist/repl-commands/exec.js +9 -8
- package/dist/repl-commands/files.d.ts +1 -1
- package/dist/repl-commands/files.js +53 -53
- package/dist/repl-commands/git.d.ts +1 -1
- package/dist/repl-commands/git.js +32 -32
- package/dist/repl-commands/pause.d.ts +6 -0
- package/dist/repl-commands/pause.d.ts.map +1 -0
- package/dist/repl-commands/pause.js +9 -0
- package/dist/repl-commands/pause.js.map +1 -0
- package/dist/repl-commands/run.d.ts +1 -1
- package/dist/repl-commands/run.js +9 -9
- package/dist/repl-commands/snapshot.d.ts +1 -1
- package/dist/repl-commands/snapshot.js +4 -4
- package/dist/repl.d.ts +1 -1
- package/dist/repl.d.ts.map +1 -1
- package/dist/repl.js +51 -47
- package/dist/repl.js.map +1 -1
- package/package.json +4 -3
- package/dist/repl-commands/stop.d.ts +0 -6
- package/dist/repl-commands/stop.d.ts.map +0 -1
- package/dist/repl-commands/stop.js +0 -9
- package/dist/repl-commands/stop.js.map +0 -1
package/README.md
CHANGED
|
@@ -83,6 +83,35 @@ Print box details as JSON.
|
|
|
83
83
|
box get box_abc123
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
+
### `box init-demo`
|
|
87
|
+
|
|
88
|
+
Scaffold a standalone demo project that uses the `@upstash/box` SDK. Creates a directory with a ready-to-run TypeScript script, `.env` file, and README.
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
box init-demo \
|
|
92
|
+
--token $UPSTASH_BOX_API_KEY \
|
|
93
|
+
--agent-model claude/sonnet_4_5 \
|
|
94
|
+
--agent-api-key $CLAUDE_KEY \
|
|
95
|
+
--runtime node \
|
|
96
|
+
--git-token $GITHUB_TOKEN \
|
|
97
|
+
--directory my-demo
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
| Flag | Description | Default |
|
|
101
|
+
| ----------------- | -------------------------------------------------- | ---------- |
|
|
102
|
+
| `--token` | Upstash Box API token | |
|
|
103
|
+
| `--agent-model` | Agent model identifier | |
|
|
104
|
+
| `--agent-api-key` | Agent API key (required if `--agent-model` is set) | |
|
|
105
|
+
| `--runtime` | Runtime environment | `node` |
|
|
106
|
+
| `--git-token` | GitHub personal access token | |
|
|
107
|
+
| `--directory` | Output directory | `box-demo` |
|
|
108
|
+
|
|
109
|
+
After scaffolding, the command offers to run the demo immediately. The generated project includes:
|
|
110
|
+
|
|
111
|
+
- `main.ts` — demo script that creates a box, writes/reads files, executes commands, and cleans up
|
|
112
|
+
- `.env` — pre-filled environment variables
|
|
113
|
+
- `README.md` — usage documentation
|
|
114
|
+
|
|
86
115
|
## Interactive REPL
|
|
87
116
|
|
|
88
117
|
After `create`, `connect`, or `from-snapshot`, you enter an interactive REPL session:
|
package/dist/auth.d.ts
CHANGED
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CASvD"}
|
package/dist/auth.js
CHANGED
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
* Resolves the API token from flag or environment variable.
|
|
3
3
|
*/
|
|
4
4
|
export function resolveToken(flagToken) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
return token;
|
|
5
|
+
const token = flagToken ?? process.env.UPSTASH_BOX_API_KEY;
|
|
6
|
+
if (!token) {
|
|
7
|
+
console.error("Error: API token required. Use --token flag or set UPSTASH_BOX_API_KEY env var.");
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
return token;
|
|
13
11
|
}
|
|
14
|
-
//# sourceMappingURL=auth.js.map
|
|
12
|
+
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,SAAkB;IAC7C,MAAM,KAAK,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,SAAkB;IAC7C,MAAM,KAAK,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CACX,iFAAiF,CAClF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
interface ConnectFlags {
|
|
2
|
-
|
|
2
|
+
token?: string;
|
|
3
3
|
}
|
|
4
|
-
export declare function connectCommand(
|
|
5
|
-
boxId: string | undefined,
|
|
6
|
-
flags: ConnectFlags,
|
|
7
|
-
): Promise<void>;
|
|
4
|
+
export declare function connectCommand(boxId: string | undefined, flags: ConnectFlags): Promise<void>;
|
|
8
5
|
export {};
|
|
9
|
-
//# sourceMappingURL=connect.d.ts.map
|
|
6
|
+
//# sourceMappingURL=connect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAIA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAIA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|
package/dist/commands/connect.js
CHANGED
|
@@ -2,20 +2,20 @@ import { Box } from "@upstash/box";
|
|
|
2
2
|
import { resolveToken } from "../auth.js";
|
|
3
3
|
import { startRepl } from "../repl.js";
|
|
4
4
|
export async function connectCommand(boxId, flags) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
const apiKey = resolveToken(flags.token);
|
|
6
|
+
let targetId = boxId;
|
|
7
|
+
// If no box ID provided, connect to most recent
|
|
8
|
+
if (!targetId) {
|
|
9
|
+
console.log("No box ID specified, connecting to most recent...");
|
|
10
|
+
const boxes = await Box.list({ apiKey });
|
|
11
|
+
if (boxes.length === 0) {
|
|
12
|
+
console.error("No boxes found.");
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
targetId = boxes[0].id;
|
|
14
16
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const box = await Box.get(targetId, { apiKey });
|
|
19
|
-
await startRepl(box);
|
|
17
|
+
console.log(`Connecting to box ${targetId}...`);
|
|
18
|
+
const box = await Box.get(targetId, { apiKey });
|
|
19
|
+
await startRepl(box);
|
|
20
20
|
}
|
|
21
|
-
//# sourceMappingURL=connect.js.map
|
|
21
|
+
//# sourceMappingURL=connect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMvC,MAAM,CAAC,KAAK,UAAU,cAAc,
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMvC,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAyB,EACzB,KAAmB;IAEnB,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEzC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,gDAAgD;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,KAAK,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
interface CreateFlags {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
token?: string;
|
|
3
|
+
runtime?: string;
|
|
4
|
+
agentModel?: string;
|
|
5
|
+
agentApiKey?: string;
|
|
6
|
+
gitToken?: string;
|
|
7
|
+
env?: string[];
|
|
8
8
|
}
|
|
9
9
|
export declare function createCommand(flags: CreateFlags): Promise<void>;
|
|
10
10
|
export {};
|
|
11
|
-
//# sourceMappingURL=create.d.ts.map
|
|
11
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCrE"}
|
package/dist/commands/create.js
CHANGED
|
@@ -2,33 +2,32 @@ import { Box } from "@upstash/box";
|
|
|
2
2
|
import { resolveToken } from "../auth.js";
|
|
3
3
|
import { startRepl } from "../repl.js";
|
|
4
4
|
export async function createCommand(flags) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
process.exit(1);
|
|
9
|
-
}
|
|
10
|
-
const env = {};
|
|
11
|
-
if (flags.env) {
|
|
12
|
-
for (const e of flags.env) {
|
|
13
|
-
const idx = e.indexOf("=");
|
|
14
|
-
if (idx === -1) {
|
|
15
|
-
console.error(`Invalid env format: ${e} (expected KEY=VAL)`);
|
|
5
|
+
const apiKey = resolveToken(flags.token);
|
|
6
|
+
if (flags.agentModel && !flags.agentApiKey) {
|
|
7
|
+
console.error("Error: --agent-api-key is required if --agent-model is set");
|
|
16
8
|
process.exit(1);
|
|
17
|
-
}
|
|
18
|
-
env[e.slice(0, idx)] = e.slice(idx + 1);
|
|
19
9
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
10
|
+
const env = {};
|
|
11
|
+
if (flags.env) {
|
|
12
|
+
for (const e of flags.env) {
|
|
13
|
+
const idx = e.indexOf("=");
|
|
14
|
+
if (idx === -1) {
|
|
15
|
+
console.error(`Invalid env format: ${e} (expected KEY=VAL)`);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
env[e.slice(0, idx)] = e.slice(idx + 1);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
console.log("Creating box...");
|
|
22
|
+
const box = await Box.create({
|
|
23
|
+
apiKey,
|
|
24
|
+
runtime: flags.runtime,
|
|
25
|
+
agent: flags.agentModel && flags.agentApiKey
|
|
26
|
+
? { model: flags.agentModel, apiKey: flags.agentApiKey }
|
|
27
|
+
: undefined,
|
|
28
|
+
git: flags.gitToken ? { token: flags.gitToken } : undefined,
|
|
29
|
+
env: Object.keys(env).length > 0 ? env : undefined,
|
|
30
|
+
});
|
|
31
|
+
await startRepl(box);
|
|
33
32
|
}
|
|
34
|
-
//# sourceMappingURL=create.js.map
|
|
33
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAWvC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAkB;IACpD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEzC,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;QAC3B,MAAM;QACN,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAWvC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAkB;IACpD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEzC,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;QAC3B,MAAM;QACN,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EACH,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,WAAW;YACnC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE;YACxD,CAAC,CAAC,SAAS;QACf,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;QAC3D,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;KACnD,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
interface FromSnapshotFlags {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
token?: string;
|
|
3
|
+
runtime?: string;
|
|
4
|
+
agentModel?: string;
|
|
5
|
+
agentApiKey?: string;
|
|
6
|
+
gitToken?: string;
|
|
7
|
+
env?: string[];
|
|
8
8
|
}
|
|
9
|
-
export declare function fromSnapshotCommand(
|
|
10
|
-
snapshotId: string,
|
|
11
|
-
flags: FromSnapshotFlags,
|
|
12
|
-
): Promise<void>;
|
|
9
|
+
export declare function fromSnapshotCommand(snapshotId: string, flags: FromSnapshotFlags): Promise<void>;
|
|
13
10
|
export {};
|
|
14
|
-
//# sourceMappingURL=from-snapshot.d.ts.map
|
|
11
|
+
//# sourceMappingURL=from-snapshot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-snapshot.d.ts","sourceRoot":"","sources":["../../src/commands/from-snapshot.ts"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAsB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"from-snapshot.d.ts","sourceRoot":"","sources":["../../src/commands/from-snapshot.ts"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,IAAI,CAAC,CAiCf"}
|
|
@@ -2,33 +2,32 @@ import { Box } from "@upstash/box";
|
|
|
2
2
|
import { resolveToken } from "../auth.js";
|
|
3
3
|
import { startRepl } from "../repl.js";
|
|
4
4
|
export async function fromSnapshotCommand(snapshotId, flags) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
process.exit(1);
|
|
9
|
-
}
|
|
10
|
-
const env = {};
|
|
11
|
-
if (flags.env) {
|
|
12
|
-
for (const e of flags.env) {
|
|
13
|
-
const idx = e.indexOf("=");
|
|
14
|
-
if (idx === -1) {
|
|
15
|
-
console.error(`Invalid env format: ${e} (expected KEY=VAL)`);
|
|
5
|
+
const apiKey = resolveToken(flags.token);
|
|
6
|
+
if (flags.agentModel && !flags.agentApiKey) {
|
|
7
|
+
console.error("Error: --agent-api-key is required if --agent-model is set");
|
|
16
8
|
process.exit(1);
|
|
17
|
-
}
|
|
18
|
-
env[e.slice(0, idx)] = e.slice(idx + 1);
|
|
19
9
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
10
|
+
const env = {};
|
|
11
|
+
if (flags.env) {
|
|
12
|
+
for (const e of flags.env) {
|
|
13
|
+
const idx = e.indexOf("=");
|
|
14
|
+
if (idx === -1) {
|
|
15
|
+
console.error(`Invalid env format: ${e} (expected KEY=VAL)`);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
env[e.slice(0, idx)] = e.slice(idx + 1);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
console.log("Creating box from snapshot...");
|
|
22
|
+
const box = await Box.fromSnapshot(snapshotId, {
|
|
23
|
+
apiKey,
|
|
24
|
+
runtime: flags.runtime,
|
|
25
|
+
agent: flags.agentModel && flags.agentApiKey
|
|
26
|
+
? { model: flags.agentModel, apiKey: flags.agentApiKey }
|
|
27
|
+
: undefined,
|
|
28
|
+
git: flags.gitToken ? { token: flags.gitToken } : undefined,
|
|
29
|
+
env: Object.keys(env).length > 0 ? env : undefined,
|
|
30
|
+
});
|
|
31
|
+
await startRepl(box);
|
|
33
32
|
}
|
|
34
|
-
//# sourceMappingURL=from-snapshot.js.map
|
|
33
|
+
//# sourceMappingURL=from-snapshot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-snapshot.js","sourceRoot":"","sources":["../../src/commands/from-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAWvC,MAAM,CAAC,KAAK,UAAU,mBAAmB,
|
|
1
|
+
{"version":3,"file":"from-snapshot.js","sourceRoot":"","sources":["../../src/commands/from-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAWvC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB,EAClB,KAAwB;IAExB,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEzC,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE;QAC7C,MAAM;QACN,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EACH,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,WAAW;YACnC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE;YACxD,CAAC,CAAC,SAAS;QACf,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;QAC3D,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;KACnD,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
package/dist/commands/get.d.ts
CHANGED
package/dist/commands/get.js
CHANGED
|
@@ -2,8 +2,8 @@ import { Box } from "@upstash/box";
|
|
|
2
2
|
import { resolveToken } from "../auth.js";
|
|
3
3
|
import { formatJSON } from "../output.js";
|
|
4
4
|
export async function getCommand(boxId, flags) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const apiKey = resolveToken(flags.token);
|
|
6
|
+
const box = await Box.get(boxId, { apiKey });
|
|
7
|
+
console.log(formatJSON({ id: box.id }));
|
|
8
8
|
}
|
|
9
|
-
//# sourceMappingURL=get.js.map
|
|
9
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface InitDemoFlags {
|
|
2
|
+
token?: string;
|
|
3
|
+
agentModel?: string;
|
|
4
|
+
agentApiKey?: string;
|
|
5
|
+
runtime?: string;
|
|
6
|
+
gitToken?: string;
|
|
7
|
+
directory?: string;
|
|
8
|
+
}
|
|
9
|
+
declare function generateEnvFile(flags: InitDemoFlags, token: string): string;
|
|
10
|
+
declare function generateMainTs(dir: string): string;
|
|
11
|
+
declare function generateReadme(dir: string): string;
|
|
12
|
+
export declare function initDemoCommand(flags: InitDemoFlags): Promise<void>;
|
|
13
|
+
export { generateEnvFile, generateMainTs, generateReadme };
|
|
14
|
+
export type { InitDemoFlags };
|
|
15
|
+
//# sourceMappingURL=init-demo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-demo.d.ts","sourceRoot":"","sources":["../../src/commands/init-demo.ts"],"names":[],"mappings":"AAaA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CASpE;AAED,iBAAS,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgF3C;AAED,iBAAS,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAkC3C;AAeD,wBAAsB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DzE;AAED,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { execSync } from "node:child_process";
|
|
4
|
+
import readline from "node:readline";
|
|
5
|
+
import { resolveToken } from "../auth.js";
|
|
6
|
+
const bold = (s) => `\x1b[1m${s}\x1b[22m`;
|
|
7
|
+
const cyan = (s) => `\x1b[36m${s}\x1b[39m`;
|
|
8
|
+
const green = (s) => `\x1b[32m${s}\x1b[39m`;
|
|
9
|
+
const dim = (s) => `\x1b[2m${s}\x1b[22m`;
|
|
10
|
+
const red = (s) => `\x1b[31m${s}\x1b[39m`;
|
|
11
|
+
const yellow = (s) => `\x1b[33m${s}\x1b[39m`;
|
|
12
|
+
function generateEnvFile(flags, token) {
|
|
13
|
+
const lines = [
|
|
14
|
+
`UPSTASH_BOX_API_KEY=${token}`,
|
|
15
|
+
`AGENT_MODEL=${flags.agentModel ?? ""}`,
|
|
16
|
+
`AGENT_API_KEY=${flags.agentApiKey ?? ""}`,
|
|
17
|
+
`RUNTIME=${flags.runtime ?? "node"}`,
|
|
18
|
+
`GIT_TOKEN=${flags.gitToken ?? ""}`,
|
|
19
|
+
];
|
|
20
|
+
return lines.join("\n") + "\n";
|
|
21
|
+
}
|
|
22
|
+
function generateMainTs(dir) {
|
|
23
|
+
return `import "dotenv/config";
|
|
24
|
+
import { Box } from "@upstash/box";
|
|
25
|
+
|
|
26
|
+
async function main() {
|
|
27
|
+
const config: Parameters<typeof Box.create>[0] = {
|
|
28
|
+
apiKey: process.env.UPSTASH_BOX_API_KEY!,
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
if (process.env.RUNTIME) {
|
|
32
|
+
config.runtime = process.env.RUNTIME;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (process.env.AGENT_MODEL && process.env.AGENT_API_KEY) {
|
|
36
|
+
config.agent = {
|
|
37
|
+
model: process.env.AGENT_MODEL,
|
|
38
|
+
apiKey: process.env.AGENT_API_KEY,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (process.env.GIT_TOKEN) {
|
|
43
|
+
config.git = { token: process.env.GIT_TOKEN };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
console.log("Creating box...");
|
|
47
|
+
const box = await Box.create(config);
|
|
48
|
+
console.log(\`Box created: \${box.id}\`);
|
|
49
|
+
|
|
50
|
+
try {
|
|
51
|
+
// Write a file
|
|
52
|
+
console.log("\\nWriting hello.txt...");
|
|
53
|
+
await box.files.write({ path: "hello.txt", content: "Hello from Upstash Box!" });
|
|
54
|
+
console.log("File written.");
|
|
55
|
+
|
|
56
|
+
// Read it back
|
|
57
|
+
console.log("\\nReading hello.txt...");
|
|
58
|
+
const content = await box.files.read("hello.txt");
|
|
59
|
+
console.log(\`Content: \${content}\`);
|
|
60
|
+
|
|
61
|
+
// Execute a command
|
|
62
|
+
console.log("\\nRunning: ls -la");
|
|
63
|
+
const run = await box.exec("ls -la");
|
|
64
|
+
const output = await run.result();
|
|
65
|
+
console.log(output);
|
|
66
|
+
|
|
67
|
+
// List files
|
|
68
|
+
console.log("Listing files...");
|
|
69
|
+
const files = await box.files.list(".");
|
|
70
|
+
console.log(files.map((f: { name: string }) => f.name).join(" "));
|
|
71
|
+
|
|
72
|
+
// Agent demo (if configured)
|
|
73
|
+
if (process.env.AGENT_MODEL && process.env.AGENT_API_KEY) {
|
|
74
|
+
console.log("\\nRunning agent prompt...");
|
|
75
|
+
const stream = box.agent.stream({
|
|
76
|
+
prompt: "Create a file called demo.js that prints 'Hello World'",
|
|
77
|
+
});
|
|
78
|
+
for await (const chunk of stream) {
|
|
79
|
+
process.stdout.write(chunk);
|
|
80
|
+
}
|
|
81
|
+
console.log();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Git demo (if configured)
|
|
85
|
+
if (process.env.GIT_TOKEN) {
|
|
86
|
+
console.log("\\nGit status:");
|
|
87
|
+
const gitRun = await box.exec("git status");
|
|
88
|
+
const gitOutput = await gitRun.result();
|
|
89
|
+
console.log(gitOutput);
|
|
90
|
+
}
|
|
91
|
+
} finally {
|
|
92
|
+
// Pause so you can check logs on the Upstash console
|
|
93
|
+
console.log("\\nPausing box...");
|
|
94
|
+
await box.pause();
|
|
95
|
+
console.log(\`Box \${box.id} paused. You can check your logs on the Upstash console.\`);
|
|
96
|
+
console.log(\`\\n\\x1b[2mTo reconnect to this box:\\x1b[22m\\n\\n \\x1b[36mcd ${dir} && npx @upstash/box-cli connect \${box.id}\\x1b[39m\\n\`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
main().catch(console.error);
|
|
101
|
+
`;
|
|
102
|
+
}
|
|
103
|
+
function generateReadme(dir) {
|
|
104
|
+
return `# Box Demo
|
|
105
|
+
|
|
106
|
+
A standalone demo project for the [@upstash/box](https://www.npmjs.com/package/@upstash/box) SDK.
|
|
107
|
+
|
|
108
|
+
## Environment Variables
|
|
109
|
+
|
|
110
|
+
Configure these in the \`.env\` file:
|
|
111
|
+
|
|
112
|
+
| Variable | Description | Required |
|
|
113
|
+
| ---------------------- | ------------------------------------------------ | -------- |
|
|
114
|
+
| \`UPSTASH_BOX_API_KEY\` | Your Upstash Box API token | Yes |
|
|
115
|
+
| \`AGENT_MODEL\` | Agent model identifier (e.g. \`claude/sonnet_4_5\`) | No |
|
|
116
|
+
| \`AGENT_API_KEY\` | API key for the agent model | No |
|
|
117
|
+
| \`RUNTIME\` | Runtime environment (default: \`node\`) | No |
|
|
118
|
+
| \`GIT_TOKEN\` | GitHub personal access token | No |
|
|
119
|
+
|
|
120
|
+
## What the demo does
|
|
121
|
+
|
|
122
|
+
1. Creates a new box
|
|
123
|
+
2. Writes a file and reads it back
|
|
124
|
+
3. Executes a shell command (\`ls -la\`)
|
|
125
|
+
4. Lists files in the box
|
|
126
|
+
5. (If agent configured) Runs an agent prompt with streaming
|
|
127
|
+
6. (If git configured) Shows git status
|
|
128
|
+
7. Pauses the box so you can check logs on the Upstash console
|
|
129
|
+
|
|
130
|
+
## Running
|
|
131
|
+
|
|
132
|
+
\`\`\`bash
|
|
133
|
+
cd ${dir}
|
|
134
|
+
npx tsx main.ts
|
|
135
|
+
\`\`\`
|
|
136
|
+
`;
|
|
137
|
+
}
|
|
138
|
+
function askQuestion(query) {
|
|
139
|
+
const rl = readline.createInterface({
|
|
140
|
+
input: process.stdin,
|
|
141
|
+
output: process.stdout,
|
|
142
|
+
});
|
|
143
|
+
return new Promise((resolve) => {
|
|
144
|
+
rl.question(query, (answer) => {
|
|
145
|
+
rl.close();
|
|
146
|
+
resolve(answer.trim().toLowerCase());
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
export async function initDemoCommand(flags) {
|
|
151
|
+
const token = resolveToken(flags.token);
|
|
152
|
+
if (flags.agentModel && !flags.agentApiKey) {
|
|
153
|
+
console.error(red("Error: --agent-api-key is required if --agent-model is set"));
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
const dir = flags.directory ?? "box-demo";
|
|
157
|
+
const absDir = path.resolve(dir);
|
|
158
|
+
if (fs.existsSync(absDir)) {
|
|
159
|
+
console.error(red(`Error: Directory "${dir}" already exists.`));
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
// Confirmation prompt
|
|
163
|
+
console.log(`\nThis command will:\n`);
|
|
164
|
+
console.log(` ${cyan("1.")} Create a directory ${bold(cyan(dir))}`);
|
|
165
|
+
console.log(` ${cyan("2.")} Install ${bold("@upstash/box")} and dependencies`);
|
|
166
|
+
console.log(` ${cyan("3.")} Prepare an example script to showcase Upstash Box\n`);
|
|
167
|
+
const confirm = await askQuestion(`Proceed? ${dim("(Y/n)")} `);
|
|
168
|
+
if (confirm !== "" && confirm !== "y" && confirm !== "yes") {
|
|
169
|
+
console.log(dim("Aborted."));
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
fs.mkdirSync(absDir, { recursive: true });
|
|
173
|
+
console.log(`\nInitializing demo project in ${cyan(dir)}/...`);
|
|
174
|
+
execSync('npm init -y && npm pkg set type="module"', {
|
|
175
|
+
cwd: absDir,
|
|
176
|
+
stdio: "ignore",
|
|
177
|
+
});
|
|
178
|
+
console.log(`Installing dependencies...`);
|
|
179
|
+
execSync("npm install @upstash/box dotenv", { cwd: absDir, stdio: "ignore" });
|
|
180
|
+
execSync("npm install --save-dev @types/node", {
|
|
181
|
+
cwd: absDir,
|
|
182
|
+
stdio: "ignore",
|
|
183
|
+
});
|
|
184
|
+
fs.writeFileSync(path.join(absDir, ".env"), generateEnvFile(flags, token));
|
|
185
|
+
fs.writeFileSync(path.join(absDir, "main.ts"), generateMainTs(dir));
|
|
186
|
+
fs.writeFileSync(path.join(absDir, "README.md"), generateReadme(dir));
|
|
187
|
+
console.log(`\n${green("Demo project created in")} ${bold(cyan(dir))}/`);
|
|
188
|
+
console.log(` ${cyan(".env")} ${dim("—")} environment variables`);
|
|
189
|
+
console.log(` ${cyan("main.ts")} ${dim("—")} demo script`);
|
|
190
|
+
console.log(` ${cyan("README.md")} ${dim("—")} documentation\n`);
|
|
191
|
+
console.log(`See ${cyan("README.md")} for details on configuration and usage.\n`);
|
|
192
|
+
const answer = await askQuestion(`Run the demo now? ${dim("(Y/n)")} `);
|
|
193
|
+
if (answer === "" || answer === "y" || answer === "yes") {
|
|
194
|
+
console.log(yellow("\nRunning demo...\n"));
|
|
195
|
+
execSync("npx tsx main.ts", { cwd: absDir, stdio: "inherit" });
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
console.log(`\nTo run later:\n ${cyan(`cd ${dir} && npx tsx main.ts`)}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
export { generateEnvFile, generateMainTs, generateReadme };
|
|
202
|
+
//# sourceMappingURL=init-demo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-demo.js","sourceRoot":"","sources":["../../src/commands/init-demo.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/list.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBjE"}
|