@upstash/box-cli 0.1.3 → 0.1.5
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/completion.d.ts +2 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +37 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/connect.d.ts +3 -6
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +39 -16
- 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 +27 -28
- 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 +27 -28
- 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 +197 -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 +55 -39
- package/dist/index.js.map +1 -1
- package/dist/output.d.ts +1 -1
- package/dist/output.js +3 -3
- package/dist/repl/client.d.ts +30 -0
- package/dist/repl/client.d.ts.map +1 -0
- package/dist/repl/client.js +128 -0
- package/dist/repl/client.js.map +1 -0
- package/dist/repl/commands/delete.d.ts +7 -0
- package/dist/repl/commands/delete.d.ts.map +1 -0
- package/dist/repl/commands/delete.js +9 -0
- package/dist/repl/commands/delete.js.map +1 -0
- package/dist/repl/commands/exec.d.ts +7 -0
- package/dist/repl/commands/exec.d.ts.map +1 -0
- package/dist/repl/commands/exec.js +14 -0
- package/dist/repl/commands/exec.js.map +1 -0
- package/dist/repl/commands/files.d.ts +7 -0
- package/dist/repl/commands/files.d.ts.map +1 -0
- package/dist/repl/commands/files.js +59 -0
- package/dist/repl/commands/files.js.map +1 -0
- package/dist/repl/commands/git.d.ts +7 -0
- package/dist/repl/commands/git.d.ts.map +1 -0
- package/dist/repl/commands/git.js +38 -0
- package/dist/repl/commands/git.js.map +1 -0
- package/dist/repl/commands/pause.d.ts +7 -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 +7 -0
- package/dist/repl/commands/run.d.ts.map +1 -0
- package/dist/repl/commands/run.js +14 -0
- package/dist/repl/commands/run.js.map +1 -0
- package/dist/repl/commands/snapshot.d.ts +7 -0
- package/dist/repl/commands/snapshot.d.ts.map +1 -0
- package/dist/repl/commands/snapshot.js +9 -0
- package/dist/repl/commands/snapshot.js.map +1 -0
- package/dist/repl/spinner.d.ts +5 -0
- package/dist/repl/spinner.d.ts.map +1 -0
- package/dist/repl/spinner.js +39 -0
- package/dist/repl/spinner.js.map +1 -0
- package/dist/repl/terminal.d.ts +6 -0
- package/dist/repl/terminal.d.ts.map +1 -0
- package/dist/repl/terminal.js +141 -0
- package/dist/repl/terminal.js.map +1 -0
- package/dist/utils/ansi.d.ts +19 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +24 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/fuzzy.d.ts +9 -0
- package/dist/utils/fuzzy.d.ts.map +1 -0
- package/dist/utils/fuzzy.js +30 -0
- package/dist/utils/fuzzy.js.map +1 -0
- package/dist/utils/interactive-select.d.ts +16 -0
- package/dist/utils/interactive-select.d.ts.map +1 -0
- package/dist/utils/interactive-select.js +75 -0
- package/dist/utils/interactive-select.js.map +1 -0
- package/package.json +12 -4
- package/dist/repl-commands/delete.d.ts +0 -6
- package/dist/repl-commands/delete.d.ts.map +0 -1
- package/dist/repl-commands/delete.js +0 -9
- package/dist/repl-commands/delete.js.map +0 -1
- package/dist/repl-commands/exec.d.ts +0 -6
- package/dist/repl-commands/exec.d.ts.map +0 -1
- package/dist/repl-commands/exec.js +0 -13
- package/dist/repl-commands/exec.js.map +0 -1
- package/dist/repl-commands/files.d.ts +0 -6
- package/dist/repl-commands/files.d.ts.map +0 -1
- package/dist/repl-commands/files.js +0 -59
- package/dist/repl-commands/files.js.map +0 -1
- package/dist/repl-commands/git.d.ts +0 -6
- package/dist/repl-commands/git.d.ts.map +0 -1
- package/dist/repl-commands/git.js +0 -38
- package/dist/repl-commands/git.js.map +0 -1
- package/dist/repl-commands/run.d.ts +0 -6
- package/dist/repl-commands/run.d.ts.map +0 -1
- package/dist/repl-commands/run.js +0 -14
- package/dist/repl-commands/run.js.map +0 -1
- package/dist/repl-commands/snapshot.d.ts +0 -6
- package/dist/repl-commands/snapshot.d.ts.map +0 -1
- package/dist/repl-commands/snapshot.js +0 -9
- package/dist/repl-commands/snapshot.js.map +0 -1
- 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/dist/repl.d.ts +0 -6
- package/dist/repl.d.ts.map +0 -1
- package/dist/repl.js +0 -64
- package/dist/repl.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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AA6BA,wBAAgB,iBAAiB,IAAI,IAAI,CAOxC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const BASH_COMPLETION = `
|
|
2
|
+
_box_completions() {
|
|
3
|
+
local cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
4
|
+
local commands="create connect from-snapshot list get init-demo completion"
|
|
5
|
+
COMPREPLY=( $(compgen -W "$commands" -- "$cur") )
|
|
6
|
+
}
|
|
7
|
+
complete -F _box_completions box
|
|
8
|
+
`;
|
|
9
|
+
const ZSH_COMPLETION = `
|
|
10
|
+
#compdef box
|
|
11
|
+
|
|
12
|
+
_box() {
|
|
13
|
+
local -a commands
|
|
14
|
+
commands=(
|
|
15
|
+
'create:Create a new box and enter the REPL'
|
|
16
|
+
'connect:Connect to an existing box and enter the REPL'
|
|
17
|
+
'from-snapshot:Create a new box from a snapshot'
|
|
18
|
+
'list:List all boxes'
|
|
19
|
+
'get:Get details about a box'
|
|
20
|
+
'init-demo:Scaffold a standalone demo project'
|
|
21
|
+
'completion:Output shell completion script'
|
|
22
|
+
)
|
|
23
|
+
_describe 'command' commands
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
_box
|
|
27
|
+
`;
|
|
28
|
+
export function completionCommand() {
|
|
29
|
+
const shell = process.env.SHELL ?? "";
|
|
30
|
+
if (shell.includes("zsh")) {
|
|
31
|
+
console.log(ZSH_COMPLETION.trim());
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
console.log(BASH_COMPLETION.trim());
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG;;;;;;;CAOvB,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;CAkBtB,CAAC;AAEF,MAAM,UAAU,iBAAiB;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,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":"
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAMA,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,CA0Cf"}
|
package/dist/commands/connect.js
CHANGED
|
@@ -1,21 +1,44 @@
|
|
|
1
1
|
import { Box } from "@upstash/box";
|
|
2
2
|
import { resolveToken } from "../auth.js";
|
|
3
|
-
import { startRepl } from "../repl.js";
|
|
3
|
+
import { startRepl } from "../repl/terminal.js";
|
|
4
|
+
import { interactiveSelect } from "../utils/interactive-select.js";
|
|
5
|
+
import { dim } from "../utils/ansi.js";
|
|
4
6
|
export async function connectCommand(boxId, flags) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
const apiKey = resolveToken(flags.token);
|
|
8
|
+
let targetId = boxId;
|
|
9
|
+
// If no box ID provided, pick interactively or fall back to most recent
|
|
10
|
+
if (!targetId) {
|
|
11
|
+
const boxes = await Box.list({ apiKey });
|
|
12
|
+
const active = boxes.filter((b) => b.status !== "deleted");
|
|
13
|
+
if (active.length === 0) {
|
|
14
|
+
console.error("No boxes found.");
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
if (process.stdin.isTTY && active.length > 1) {
|
|
18
|
+
const items = active.slice(0, 10);
|
|
19
|
+
const idWidth = Math.max(...items.map((b) => b.id.length));
|
|
20
|
+
const statusWidth = Math.max(...items.map((b) => b.status.length));
|
|
21
|
+
const selected = await interactiveSelect({
|
|
22
|
+
prompt: "Select a box to connect to:",
|
|
23
|
+
items: items.map((b) => ({
|
|
24
|
+
label: b.id.padEnd(idWidth),
|
|
25
|
+
value: b.id,
|
|
26
|
+
description: `${b.status.padEnd(statusWidth)} ${b.model ?? ""}`,
|
|
27
|
+
})),
|
|
28
|
+
});
|
|
29
|
+
if (!selected) {
|
|
30
|
+
console.log(dim("Aborted."));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
targetId = selected;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
console.log("No box ID specified, connecting to most recent...");
|
|
37
|
+
targetId = active[0].id;
|
|
38
|
+
}
|
|
14
39
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const box = await Box.get(targetId, { apiKey });
|
|
19
|
-
await startRepl(box);
|
|
40
|
+
console.log(`\nConnecting to box ${targetId}...`);
|
|
41
|
+
const box = await Box.get(targetId, { apiKey });
|
|
42
|
+
await startRepl(box);
|
|
20
43
|
}
|
|
21
|
-
//# sourceMappingURL=connect.js.map
|
|
44
|
+
//# 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,
|
|
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,qBAAqB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,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,wEAAwE;IACxE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAEnE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC;gBACvC,MAAM,EAAE,6BAA6B;gBACrC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACvB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;oBAC3B,KAAK,EAAE,CAAC,CAAC,EAAE;oBACX,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE;iBACjE,CAAC,CAAC;aACJ,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACjE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,KAAK,CAAC,CAAC;IAClD,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
|
@@ -1,34 +1,33 @@
|
|
|
1
1
|
import { Box } from "@upstash/box";
|
|
2
2
|
import { resolveToken } from "../auth.js";
|
|
3
|
-
import { startRepl } from "../repl.js";
|
|
3
|
+
import { startRepl } from "../repl/terminal.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,
|
|
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,qBAAqB,CAAC;AAWhD,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"}
|
|
@@ -1,34 +1,33 @@
|
|
|
1
1
|
import { Box } from "@upstash/box";
|
|
2
2
|
import { resolveToken } from "../auth.js";
|
|
3
|
-
import { startRepl } from "../repl.js";
|
|
3
|
+
import { startRepl } from "../repl/terminal.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,
|
|
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,qBAAqB,CAAC;AAWhD,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":"AAOA,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"}
|