@upstash/box-cli 0.0.0 → 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 +56 -27
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +2 -2
- package/dist/auth.js.map +1 -1
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +5 -7
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/from-snapshot.d.ts.map +1 -1
- package/dist/commands/from-snapshot.js +5 -7
- package/dist/commands/from-snapshot.js.map +1 -1
- 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.map +1 -1
- package/dist/commands/list.js +7 -2
- package/dist/commands/list.js.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- 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.d.ts.map +1 -1
- package/dist/repl.js +2 -2
- package/dist/repl.js.map +1 -1
- package/package.json +6 -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
|
@@ -17,10 +17,10 @@ node packages/cli/dist/index.js --help
|
|
|
17
17
|
|
|
18
18
|
## Authentication
|
|
19
19
|
|
|
20
|
-
Provide your Upstash Box API token via the `--token` flag or the `
|
|
20
|
+
Provide your Upstash Box API token via the `--token` flag or the `UPSTASH_BOX_API_KEY` environment variable:
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
export
|
|
23
|
+
export UPSTASH_BOX_API_KEY=abx_...
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
## Commands
|
|
@@ -39,14 +39,14 @@ box create \
|
|
|
39
39
|
--env DEBUG=true
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
| Flag
|
|
43
|
-
|
|
44
|
-
| `--token`
|
|
45
|
-
| `--runtime`
|
|
46
|
-
| `--agent-model`
|
|
47
|
-
| `--agent-api-key` | Agent API key — Anthropic or OpenAI (required) |
|
|
48
|
-
| `--git-token`
|
|
49
|
-
| `--env KEY=VAL`
|
|
42
|
+
| Flag | Description |
|
|
43
|
+
| ----------------- | ------------------------------------------------------------------------ |
|
|
44
|
+
| `--token` | Upstash Box API token |
|
|
45
|
+
| `--runtime` | Runtime environment (`node`, `python`, `golang`, `ruby`, `rust`) |
|
|
46
|
+
| `--agent-model` | Agent model identifier |
|
|
47
|
+
| `--agent-api-key` | Agent API key — Anthropic or OpenAI (required if `--agent-model` is set) |
|
|
48
|
+
| `--git-token` | GitHub personal access token |
|
|
49
|
+
| `--env KEY=VAL` | Environment variable (repeatable) |
|
|
50
50
|
|
|
51
51
|
### `box connect [box-id]`
|
|
52
52
|
|
|
@@ -83,13 +83,42 @@ 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:
|
|
89
118
|
|
|
90
119
|
```
|
|
91
120
|
Connected to box box_abc123
|
|
92
|
-
Type a prompt to run the agent, or use commands: run, exec, files, git, snapshot,
|
|
121
|
+
Type a prompt to run the agent, or use commands: run, exec, files, git, snapshot, pause, delete, exit
|
|
93
122
|
|
|
94
123
|
box_abc123> Fix the bug in auth.ts
|
|
95
124
|
```
|
|
@@ -98,22 +127,22 @@ box_abc123> Fix the bug in auth.ts
|
|
|
98
127
|
|
|
99
128
|
Any text entered is sent to the agent by default. You can also use explicit commands (with or without a `/` prefix):
|
|
100
129
|
|
|
101
|
-
| Command
|
|
102
|
-
|
|
103
|
-
| `run <prompt>`
|
|
104
|
-
| `exec <command>`
|
|
105
|
-
| `files read <path>`
|
|
106
|
-
| `files write <path> <content>` | Write a file
|
|
107
|
-
| `files list [path]`
|
|
108
|
-
| `files upload <local> <dest>`
|
|
109
|
-
| `files download [path]`
|
|
110
|
-
| `git clone <repo> [branch]`
|
|
111
|
-
| `git diff`
|
|
112
|
-
| `git create-pr <title>`
|
|
113
|
-
| `snapshot [name]`
|
|
114
|
-
| `
|
|
115
|
-
| `delete`
|
|
116
|
-
| `exit`
|
|
130
|
+
| Command | Description |
|
|
131
|
+
| ------------------------------ | ---------------------------------------------- |
|
|
132
|
+
| `run <prompt>` | Run the agent with a prompt (streaming output) |
|
|
133
|
+
| `exec <command>` | Execute a shell command in the box |
|
|
134
|
+
| `files read <path>` | Read a file |
|
|
135
|
+
| `files write <path> <content>` | Write a file |
|
|
136
|
+
| `files list [path]` | List files in a directory |
|
|
137
|
+
| `files upload <local> <dest>` | Upload a local file |
|
|
138
|
+
| `files download [path]` | Download files from the box |
|
|
139
|
+
| `git clone <repo> [branch]` | Clone a repository |
|
|
140
|
+
| `git diff` | Show git diff |
|
|
141
|
+
| `git create-pr <title>` | Create a pull request |
|
|
142
|
+
| `snapshot [name]` | Save a snapshot of the current state |
|
|
143
|
+
| `pause` | Pause the box and exit |
|
|
144
|
+
| `delete` | Delete the box and exit |
|
|
145
|
+
| `exit` | Exit the REPL (box keeps running) |
|
|
117
146
|
|
|
118
147
|
### Examples
|
|
119
148
|
|
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,9 +2,9 @@
|
|
|
2
2
|
* Resolves the API token from flag or environment variable.
|
|
3
3
|
*/
|
|
4
4
|
export function resolveToken(flagToken) {
|
|
5
|
-
const token = flagToken ?? process.env.
|
|
5
|
+
const token = flagToken ?? process.env.UPSTASH_BOX_API_KEY;
|
|
6
6
|
if (!token) {
|
|
7
|
-
console.error("Error: API token required. Use --token flag or set
|
|
7
|
+
console.error("Error: API token required. Use --token flag or set UPSTASH_BOX_API_KEY env var.");
|
|
8
8
|
process.exit(1);
|
|
9
9
|
}
|
|
10
10
|
return token;
|
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,
|
|
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 +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"}
|
|
@@ -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 +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
|
@@ -3,12 +3,8 @@ import { resolveToken } from "../auth.js";
|
|
|
3
3
|
import { startRepl } from "../repl.js";
|
|
4
4
|
export async function createCommand(flags) {
|
|
5
5
|
const apiKey = resolveToken(flags.token);
|
|
6
|
-
if (!flags.
|
|
7
|
-
console.error("Error: --agent-model is
|
|
8
|
-
process.exit(1);
|
|
9
|
-
}
|
|
10
|
-
if (!flags.agentApiKey) {
|
|
11
|
-
console.error("Error: --agent-api-key is required");
|
|
6
|
+
if (flags.agentModel && !flags.agentApiKey) {
|
|
7
|
+
console.error("Error: --agent-api-key is required if --agent-model is set");
|
|
12
8
|
process.exit(1);
|
|
13
9
|
}
|
|
14
10
|
const env = {};
|
|
@@ -26,7 +22,9 @@ export async function createCommand(flags) {
|
|
|
26
22
|
const box = await Box.create({
|
|
27
23
|
apiKey,
|
|
28
24
|
runtime: flags.runtime,
|
|
29
|
-
agent:
|
|
25
|
+
agent: flags.agentModel && flags.agentApiKey
|
|
26
|
+
? { model: flags.agentModel, apiKey: flags.agentApiKey }
|
|
27
|
+
: undefined,
|
|
30
28
|
git: flags.gitToken ? { token: flags.gitToken } : undefined,
|
|
31
29
|
env: Object.keys(env).length > 0 ? env : undefined,
|
|
32
30
|
});
|
|
@@ -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,
|
|
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 +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"}
|
|
@@ -3,12 +3,8 @@ import { resolveToken } from "../auth.js";
|
|
|
3
3
|
import { startRepl } from "../repl.js";
|
|
4
4
|
export async function fromSnapshotCommand(snapshotId, flags) {
|
|
5
5
|
const apiKey = resolveToken(flags.token);
|
|
6
|
-
if (!flags.
|
|
7
|
-
console.error("Error: --agent-model is
|
|
8
|
-
process.exit(1);
|
|
9
|
-
}
|
|
10
|
-
if (!flags.agentApiKey) {
|
|
11
|
-
console.error("Error: --agent-api-key is required");
|
|
6
|
+
if (flags.agentModel && !flags.agentApiKey) {
|
|
7
|
+
console.error("Error: --agent-api-key is required if --agent-model is set");
|
|
12
8
|
process.exit(1);
|
|
13
9
|
}
|
|
14
10
|
const env = {};
|
|
@@ -26,7 +22,9 @@ export async function fromSnapshotCommand(snapshotId, flags) {
|
|
|
26
22
|
const box = await Box.fromSnapshot(snapshotId, {
|
|
27
23
|
apiKey,
|
|
28
24
|
runtime: flags.runtime,
|
|
29
|
-
agent:
|
|
25
|
+
agent: flags.agentModel && flags.agentApiKey
|
|
26
|
+
? { model: flags.agentModel, apiKey: flags.agentApiKey }
|
|
27
|
+
: undefined,
|
|
30
28
|
git: flags.gitToken ? { token: flags.gitToken } : undefined,
|
|
31
29
|
env: Object.keys(env).length > 0 ? env : undefined,
|
|
32
30
|
});
|
|
@@ -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"}
|
|
@@ -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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"}
|
|
@@ -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"}
|
package/dist/commands/list.js
CHANGED
|
@@ -7,8 +7,13 @@ export async function listCommand(flags) {
|
|
|
7
7
|
console.log("No boxes found.");
|
|
8
8
|
return;
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const headers = ["ID", "STATUS", "MODEL", "CREATED"];
|
|
11
|
+
const rows = boxes.map((b) => [b.id, b.status, b.model ?? "", String(b.created_at)]);
|
|
12
|
+
const colWidths = headers.map((h, i) => Math.max(h.length, ...rows.map((r) => r[i].length)));
|
|
13
|
+
const formatRow = (row) => row.map((val, i) => val.padEnd(colWidths[i])).join(" ");
|
|
14
|
+
console.log(formatRow(headers));
|
|
15
|
+
for (const row of rows) {
|
|
16
|
+
console.log(formatRow(row));
|
|
12
17
|
}
|
|
13
18
|
}
|
|
14
19
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAgB;IAChD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAEzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,KAAK,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAgB;IAChD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAEzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAErF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE9F,MAAM,SAAS,GAAG,CAAC,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/F,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { connectCommand } from "./commands/connect.js";
|
|
|
6
6
|
import { fromSnapshotCommand } from "./commands/from-snapshot.js";
|
|
7
7
|
import { listCommand } from "./commands/list.js";
|
|
8
8
|
import { getCommand } from "./commands/get.js";
|
|
9
|
+
import { initDemoCommand } from "./commands/init-demo.js";
|
|
9
10
|
const program = new Command();
|
|
10
11
|
program
|
|
11
12
|
.name("box")
|
|
@@ -46,5 +47,15 @@ program
|
|
|
46
47
|
.description("Get details about a box")
|
|
47
48
|
.option("--token <token>", "Upstash Box API token")
|
|
48
49
|
.action((boxId, opts) => getCommand(boxId, opts));
|
|
50
|
+
program
|
|
51
|
+
.command("init-demo")
|
|
52
|
+
.description("Scaffold a standalone demo project for @upstash/box")
|
|
53
|
+
.option("--token <token>", "Upstash Box API token")
|
|
54
|
+
.option("--agent-model <model>", "Agent model identifier")
|
|
55
|
+
.option("--agent-api-key <key>", "Agent API key (required if --agent-model is set)")
|
|
56
|
+
.option("--runtime <runtime>", "Runtime environment", "node")
|
|
57
|
+
.option("--git-token <token>", "GitHub personal access token")
|
|
58
|
+
.option("--directory <dir>", "Output directory", "box-demo")
|
|
59
|
+
.action((opts) => initDemoCommand(opts));
|
|
49
60
|
program.parse();
|
|
50
61
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pause.d.ts","sourceRoot":"","sources":["../../src/repl-commands/pause.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI3E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pause.js","sourceRoot":"","sources":["../../src/repl-commands/pause.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAQ,EAAE,KAAa;IACvD,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/repl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAmBxC;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAmBxC;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CvD"}
|
package/dist/repl.js
CHANGED
|
@@ -5,7 +5,7 @@ import { handleExec } from "./repl-commands/exec.js";
|
|
|
5
5
|
import { handleFiles } from "./repl-commands/files.js";
|
|
6
6
|
import { handleGit } from "./repl-commands/git.js";
|
|
7
7
|
import { handleSnapshot } from "./repl-commands/snapshot.js";
|
|
8
|
-
import {
|
|
8
|
+
import { handlePause } from "./repl-commands/pause.js";
|
|
9
9
|
import { handleDelete } from "./repl-commands/delete.js";
|
|
10
10
|
const COMMANDS = {
|
|
11
11
|
run: handleRun,
|
|
@@ -13,7 +13,7 @@ const COMMANDS = {
|
|
|
13
13
|
files: handleFiles,
|
|
14
14
|
git: handleGit,
|
|
15
15
|
snapshot: handleSnapshot,
|
|
16
|
-
|
|
16
|
+
pause: handlePause,
|
|
17
17
|
delete: handleDelete,
|
|
18
18
|
};
|
|
19
19
|
/**
|
package/dist/repl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@upstash/box-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "CLI for Upstash Box — REPL-first interface for AI coding agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -18,10 +18,11 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"commander": "^13.0.0",
|
|
20
20
|
"dotenv": "^17.3.1",
|
|
21
|
-
"@upstash/box": "0.
|
|
21
|
+
"@upstash/box": "0.1.3"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@types/node": "^20.10.0",
|
|
25
|
+
"prettier": "^3.8.1",
|
|
25
26
|
"typescript": "^5.3.0"
|
|
26
27
|
},
|
|
27
28
|
"publishConfig": {
|
|
@@ -36,6 +37,8 @@
|
|
|
36
37
|
"scripts": {
|
|
37
38
|
"build": "tsc",
|
|
38
39
|
"dev": "tsc --watch",
|
|
39
|
-
"test": "vitest run"
|
|
40
|
+
"test": "vitest run",
|
|
41
|
+
"lint": "prettier --check . --write",
|
|
42
|
+
"ci:lint": "prettier --check ."
|
|
40
43
|
}
|
|
41
44
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/repl-commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI1E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/repl-commands/stop.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAQ,EAAE,KAAa;IACtD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC"}
|