@upstash/box-cli 0.1.10 → 0.1.13
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 +25 -20
- package/dist/agent-key.d.ts +10 -0
- package/dist/agent-key.d.ts.map +1 -0
- package/dist/agent-key.js +18 -0
- package/dist/agent-key.js.map +1 -0
- package/dist/cli.js +3 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +13 -5
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/create-wizard.d.ts +3 -0
- package/dist/commands/create-wizard.d.ts.map +1 -0
- package/dist/commands/create-wizard.js +170 -0
- package/dist/commands/create-wizard.js.map +1 -0
- package/dist/commands/create.d.ts +2 -3
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +18 -6
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/from-snapshot.d.ts +1 -1
- package/dist/commands/from-snapshot.d.ts.map +1 -1
- package/dist/commands/from-snapshot.js +3 -6
- package/dist/commands/from-snapshot.js.map +1 -1
- package/dist/commands/init-demo.d.ts +1 -1
- package/dist/commands/init-demo.d.ts.map +1 -1
- package/dist/commands/init-demo.js +8 -10
- package/dist/commands/init-demo.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +18 -2
- package/dist/commands/list.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/repl/client.d.ts +8 -3
- package/dist/repl/client.d.ts.map +1 -1
- package/dist/repl/client.js +30 -11
- package/dist/repl/client.js.map +1 -1
- package/dist/repl/commands/code.d.ts +12 -0
- package/dist/repl/commands/code.d.ts.map +1 -0
- package/dist/repl/commands/code.js +45 -0
- package/dist/repl/commands/code.js.map +1 -0
- package/dist/repl/commands/command.d.ts +7 -0
- package/dist/repl/commands/command.d.ts.map +1 -0
- package/dist/repl/commands/command.js +14 -0
- package/dist/repl/commands/command.js.map +1 -0
- package/dist/repl/commands/run.d.ts +9 -1
- package/dist/repl/commands/run.d.ts.map +1 -1
- package/dist/repl/commands/run.js +67 -0
- package/dist/repl/commands/run.js.map +1 -1
- package/dist/repl/terminal.d.ts +2 -1
- package/dist/repl/terminal.d.ts.map +1 -1
- package/dist/repl/terminal.js +123 -14
- package/dist/repl/terminal.js.map +1 -1
- package/dist/repl/types.d.ts +26 -1
- package/dist/repl/types.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -30,6 +30,13 @@ export UPSTASH_BOX_API_KEY=abx_...
|
|
|
30
30
|
Create a new box and enter an interactive REPL.
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
+
# Uses Upstash-managed key by default (no --agent-api-key needed)
|
|
34
|
+
box create --agent-model claude/sonnet_4_5
|
|
35
|
+
|
|
36
|
+
# Use a key stored in the Upstash console
|
|
37
|
+
box create --agent-model claude/sonnet_4_5 --agent-api-key stored
|
|
38
|
+
|
|
39
|
+
# Pass a direct API key
|
|
33
40
|
box create \
|
|
34
41
|
--agent-model claude/sonnet_4_5 \
|
|
35
42
|
--agent-api-key $CLAUDE_KEY \
|
|
@@ -39,14 +46,14 @@ box create \
|
|
|
39
46
|
--env DEBUG=true
|
|
40
47
|
```
|
|
41
48
|
|
|
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 —
|
|
48
|
-
| `--git-token` | GitHub personal access token
|
|
49
|
-
| `--env KEY=VAL` | Environment variable (repeatable)
|
|
49
|
+
| Flag | Description | Default |
|
|
50
|
+
| ----------------- | ------------------------------------------------------------------------------------------- | ------- |
|
|
51
|
+
| `--token` | Upstash Box API token | |
|
|
52
|
+
| `--runtime` | Runtime environment (`node`, `python`, `golang`, `ruby`, `rust`) | |
|
|
53
|
+
| `--agent-model` | Agent model identifier | |
|
|
54
|
+
| `--agent-api-key` | Agent API key — omit for Upstash-managed key, `stored` for a saved key, or a direct API key | Upstash |
|
|
55
|
+
| `--git-token` | GitHub personal access token | |
|
|
56
|
+
| `--env KEY=VAL` | Environment variable (repeatable) | |
|
|
50
57
|
|
|
51
58
|
### `box connect [box-id]`
|
|
52
59
|
|
|
@@ -62,9 +69,8 @@ box connect # connects to most recent
|
|
|
62
69
|
Create a new box from a snapshot and enter the REPL. Accepts the same flags as `create`.
|
|
63
70
|
|
|
64
71
|
```bash
|
|
65
|
-
box from-snapshot snap_abc123
|
|
66
|
-
|
|
67
|
-
--agent-api-key $CLAUDE_KEY
|
|
72
|
+
box from-snapshot snap_abc123 --agent-model claude/sonnet_4_5
|
|
73
|
+
box from-snapshot snap_abc123 --agent-model claude/sonnet_4_5 --agent-api-key $CLAUDE_KEY
|
|
68
74
|
```
|
|
69
75
|
|
|
70
76
|
### `box list`
|
|
@@ -91,20 +97,19 @@ Scaffold a standalone demo project that uses the `@upstash/box` SDK. Creates a d
|
|
|
91
97
|
box init-demo \
|
|
92
98
|
--token $UPSTASH_BOX_API_KEY \
|
|
93
99
|
--agent-model claude/sonnet_4_5 \
|
|
94
|
-
--agent-api-key $CLAUDE_KEY \
|
|
95
100
|
--runtime node \
|
|
96
101
|
--git-token $GITHUB_TOKEN \
|
|
97
102
|
--directory my-demo
|
|
98
103
|
```
|
|
99
104
|
|
|
100
|
-
| Flag | Description
|
|
101
|
-
| ----------------- |
|
|
102
|
-
| `--token` | Upstash Box API token
|
|
103
|
-
| `--agent-model` | Agent model identifier
|
|
104
|
-
| `--agent-api-key` | Agent API key
|
|
105
|
-
| `--runtime` | Runtime environment
|
|
106
|
-
| `--git-token` | GitHub personal access token
|
|
107
|
-
| `--directory` | Output directory
|
|
105
|
+
| Flag | Description | Default |
|
|
106
|
+
| ----------------- | ------------------------------------------------------------------------------------------- | ---------- |
|
|
107
|
+
| `--token` | Upstash Box API token | |
|
|
108
|
+
| `--agent-model` | Agent model identifier | |
|
|
109
|
+
| `--agent-api-key` | Agent API key — omit for Upstash-managed key, `stored` for a saved key, or a direct API key | Upstash |
|
|
110
|
+
| `--runtime` | Runtime environment | `node` |
|
|
111
|
+
| `--git-token` | GitHub personal access token | |
|
|
112
|
+
| `--directory` | Output directory | `box-demo` |
|
|
108
113
|
|
|
109
114
|
After scaffolding, the command offers to run the demo immediately. The generated project includes:
|
|
110
115
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BoxApiKey } from "@upstash/box";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the --agent-api-key flag value to a BoxApiKey or direct key string.
|
|
4
|
+
*
|
|
5
|
+
* - undefined / true (flag present with no value) → BoxApiKey.UpstashKey
|
|
6
|
+
* - "stored" → BoxApiKey.StoredKey
|
|
7
|
+
* - any other string → passed through as a direct API key
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolveAgentApiKey(flag?: string | true): BoxApiKey | string;
|
|
10
|
+
//# sourceMappingURL=agent-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-key.d.ts","sourceRoot":"","sources":["../src/agent-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAU3E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BoxApiKey } from "@upstash/box";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the --agent-api-key flag value to a BoxApiKey or direct key string.
|
|
4
|
+
*
|
|
5
|
+
* - undefined / true (flag present with no value) → BoxApiKey.UpstashKey
|
|
6
|
+
* - "stored" → BoxApiKey.StoredKey
|
|
7
|
+
* - any other string → passed through as a direct API key
|
|
8
|
+
*/
|
|
9
|
+
export function resolveAgentApiKey(flag) {
|
|
10
|
+
if (flag === undefined || flag === true) {
|
|
11
|
+
return BoxApiKey.UpstashKey;
|
|
12
|
+
}
|
|
13
|
+
if (flag.toLowerCase() === "stored") {
|
|
14
|
+
return BoxApiKey.StoredKey;
|
|
15
|
+
}
|
|
16
|
+
return flag;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=agent-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-key.js","sourceRoot":"","sources":["../src/agent-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IACrD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC,UAAU,CAAC;IAC9B,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC,SAAS,CAAC;IAC7B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -20,7 +20,7 @@ program
|
|
|
20
20
|
.option("--token <token>", "Upstash Box API token")
|
|
21
21
|
.option("--runtime <runtime>", "Runtime environment (node, python, golang, ruby, rust)")
|
|
22
22
|
.option("--agent-model <model>", "Agent model identifier")
|
|
23
|
-
.option("--agent-api-key
|
|
23
|
+
.option("--agent-api-key [key]", 'Agent API key — omit to use Upstash-managed key, or pass "stored" to use a key saved in the Upstash console')
|
|
24
24
|
.option("--git-token <token>", "GitHub personal access token")
|
|
25
25
|
.option("--env <KEY=VAL>", "Environment variable (repeatable)", (val, prev) => [...prev, val], [])
|
|
26
26
|
.action((opts) => createCommand(opts));
|
|
@@ -35,7 +35,7 @@ program
|
|
|
35
35
|
.option("--token <token>", "Upstash Box API token")
|
|
36
36
|
.option("--runtime <runtime>", "Runtime environment")
|
|
37
37
|
.option("--agent-model <model>", "Agent model identifier")
|
|
38
|
-
.option("--agent-api-key
|
|
38
|
+
.option("--agent-api-key [key]", 'Agent API key — omit to use Upstash-managed key, or pass "stored" to use a key saved in the Upstash console')
|
|
39
39
|
.option("--git-token <token>", "GitHub personal access token")
|
|
40
40
|
.option("--env <KEY=VAL>", "Environment variable (repeatable)", (val, prev) => [...prev, val], [])
|
|
41
41
|
.action((snapshotId, opts) => fromSnapshotCommand(snapshotId, opts));
|
|
@@ -60,7 +60,7 @@ program
|
|
|
60
60
|
.description("Scaffold a standalone demo project for @upstash/box")
|
|
61
61
|
.option("--token <token>", "Upstash Box API token")
|
|
62
62
|
.option("--agent-model <model>", "Agent model identifier")
|
|
63
|
-
.option("--agent-api-key
|
|
63
|
+
.option("--agent-api-key [key]", 'Agent API key — omit to use Upstash-managed key, or pass "stored" to use a key saved in the Upstash console')
|
|
64
64
|
.option("--runtime <runtime>", "Runtime environment", "node")
|
|
65
65
|
.option("--git-token <token>", "GitHub personal access token")
|
|
66
66
|
.option("--directory <dir>", "Output directory", "box-demo")
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.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;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,iEAAiE,CAAC;KAC9E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,wDAAwD,CAAC;KACvF,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;KACzD,MAAM,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,CAsDf"}
|
package/dist/commands/connect.js
CHANGED
|
@@ -17,14 +17,22 @@ export async function connectCommand(boxId, flags) {
|
|
|
17
17
|
if (process.stdin.isTTY && active.length > 1) {
|
|
18
18
|
const items = active.slice(0, 10);
|
|
19
19
|
const idWidth = Math.max(...items.map((b) => b.id.length));
|
|
20
|
+
const nameWidth = Math.max(...items.map((b) => (b.name ?? "").length), 0);
|
|
20
21
|
const statusWidth = Math.max(...items.map((b) => b.status.length));
|
|
21
22
|
const selected = await interactiveSelect({
|
|
22
23
|
prompt: "Select a box to connect to:",
|
|
23
|
-
items: items.map((b) =>
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
items: items.map((b) => {
|
|
25
|
+
const name = b.name
|
|
26
|
+
? ` ${b.name.padEnd(nameWidth)}`
|
|
27
|
+
: nameWidth > 0
|
|
28
|
+
? ` ${"".padEnd(nameWidth)}`
|
|
29
|
+
: "";
|
|
30
|
+
return {
|
|
31
|
+
label: `${b.id.padEnd(idWidth)}${name}`,
|
|
32
|
+
value: b.id,
|
|
33
|
+
description: `${b.status.padEnd(statusWidth)} ${b.model ?? ""}`,
|
|
34
|
+
};
|
|
35
|
+
}),
|
|
28
36
|
});
|
|
29
37
|
if (!selected) {
|
|
30
38
|
console.log(dim("Aborted."));
|
|
@@ -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,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;
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-wizard.d.ts","sourceRoot":"","sources":["../../src/commands/create-wizard.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiJ/C,wBAAsB,YAAY,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CA2CrE"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import readline from "node:readline";
|
|
2
|
+
import { interactiveSelect } from "../utils/interactive-select.js";
|
|
3
|
+
import { bold, cyan, dim, green } from "../utils/ansi.js";
|
|
4
|
+
// ── Data ────────────────────────────────────────────────────────────────────
|
|
5
|
+
const RUNTIMES = [
|
|
6
|
+
{ label: "Node.js", value: "node", description: "JavaScript / TypeScript" },
|
|
7
|
+
{ label: "Python", value: "python" },
|
|
8
|
+
{ label: "Go", value: "golang" },
|
|
9
|
+
{ label: "Ruby", value: "ruby" },
|
|
10
|
+
{ label: "Rust", value: "rust" },
|
|
11
|
+
];
|
|
12
|
+
const PROVIDERS = [
|
|
13
|
+
{ label: "Claude", value: "claude" },
|
|
14
|
+
{ label: "OpenAI Codex", value: "openai" },
|
|
15
|
+
];
|
|
16
|
+
const CLAUDE_MODELS = [
|
|
17
|
+
{ label: "Sonnet 4.5", value: "claude/sonnet_4_5" },
|
|
18
|
+
{ label: "Opus 4.5", value: "claude/opus_4_5" },
|
|
19
|
+
{ label: "Opus 4.6", value: "claude/opus_4_6" },
|
|
20
|
+
{ label: "Sonnet 4", value: "claude/sonnet_4" },
|
|
21
|
+
{ label: "Haiku 4.5", value: "claude/haiku_4_5" },
|
|
22
|
+
];
|
|
23
|
+
const OPENAI_MODELS = [
|
|
24
|
+
{ label: "GPT 5.3 Codex", value: "openai/gpt-5.3-codex" },
|
|
25
|
+
{ label: "GPT 5.3 Codex Spark", value: "openai/gpt-5.3-codex-spark" },
|
|
26
|
+
{ label: "GPT 5.2 Codex", value: "openai/gpt-5.2-codex" },
|
|
27
|
+
{ label: "GPT 5.1 Codex Max", value: "openai/gpt-5.1-codex-max" },
|
|
28
|
+
];
|
|
29
|
+
const API_KEY_OPTIONS = [
|
|
30
|
+
{ label: "Upstash-managed", value: "upstash" },
|
|
31
|
+
{ label: "Use stored key", value: "stored", description: "previously saved via UI or API" },
|
|
32
|
+
{ label: "Enter your own", value: "custom" },
|
|
33
|
+
];
|
|
34
|
+
function getActionItems(hasAgent) {
|
|
35
|
+
if (hasAgent) {
|
|
36
|
+
return [
|
|
37
|
+
{ label: green("Create box"), value: "create" },
|
|
38
|
+
{ label: "Reconfigure AI agent", value: "agent" },
|
|
39
|
+
{ label: "Add GitHub token", value: "git-token" },
|
|
40
|
+
{ label: "Add environment variables", value: "env-vars" },
|
|
41
|
+
];
|
|
42
|
+
}
|
|
43
|
+
return [
|
|
44
|
+
{ label: "Configure AI agent", value: "agent" },
|
|
45
|
+
{ label: "Add GitHub token", value: "git-token" },
|
|
46
|
+
{ label: "Add environment variables", value: "env-vars" },
|
|
47
|
+
{ label: green("Create box"), value: "create" },
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
// ── Helpers ─────────────────────────────────────────────────────────────────
|
|
51
|
+
function askQuestion(query) {
|
|
52
|
+
const rl = readline.createInterface({
|
|
53
|
+
input: process.stdin,
|
|
54
|
+
output: process.stdout,
|
|
55
|
+
});
|
|
56
|
+
return new Promise((resolve) => {
|
|
57
|
+
rl.question(query, (answer) => {
|
|
58
|
+
rl.close();
|
|
59
|
+
resolve(answer.trim());
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
const RULE = dim(" ─────────────────────────────────────");
|
|
64
|
+
function printSummary(flags) {
|
|
65
|
+
console.log(`\n${RULE}`);
|
|
66
|
+
console.log(` ${bold(cyan("Box configuration"))}`);
|
|
67
|
+
console.log(RULE);
|
|
68
|
+
console.log(` ${cyan("Runtime:")} ${flags.runtime ?? "node"}`);
|
|
69
|
+
if (flags.agentModel) {
|
|
70
|
+
console.log(` ${cyan("Agent:")} ${flags.agentModel}`);
|
|
71
|
+
const keyLabel = flags.agentApiKey === "stored"
|
|
72
|
+
? "stored key"
|
|
73
|
+
: flags.agentApiKey && flags.agentApiKey !== true
|
|
74
|
+
? "custom key"
|
|
75
|
+
: "Upstash-managed";
|
|
76
|
+
console.log(` ${cyan("API key:")} ${keyLabel}`);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.log(` ${cyan("Agent:")} ${dim("none")}`);
|
|
80
|
+
}
|
|
81
|
+
if (flags.gitToken) {
|
|
82
|
+
console.log(` ${cyan("Git token:")} set`);
|
|
83
|
+
}
|
|
84
|
+
if (flags.env && flags.env.length > 0) {
|
|
85
|
+
console.log(` ${cyan("Env vars:")} ${flags.env.length} set`);
|
|
86
|
+
}
|
|
87
|
+
console.log(`${RULE}\n`);
|
|
88
|
+
}
|
|
89
|
+
// ── Agent sub-flow ──────────────────────────────────────────────────────────
|
|
90
|
+
async function configureAgent(result) {
|
|
91
|
+
const provider = await interactiveSelect({
|
|
92
|
+
prompt: cyan("Select an agent provider:"),
|
|
93
|
+
items: PROVIDERS,
|
|
94
|
+
});
|
|
95
|
+
if (provider === undefined)
|
|
96
|
+
return false;
|
|
97
|
+
const models = provider === "claude" ? CLAUDE_MODELS : OPENAI_MODELS;
|
|
98
|
+
const model = await interactiveSelect({
|
|
99
|
+
prompt: cyan("Select a model:"),
|
|
100
|
+
items: models,
|
|
101
|
+
});
|
|
102
|
+
if (model === undefined)
|
|
103
|
+
return false;
|
|
104
|
+
result.agentModel = model;
|
|
105
|
+
const keyOption = await interactiveSelect({
|
|
106
|
+
prompt: cyan("Agent API key:"),
|
|
107
|
+
items: API_KEY_OPTIONS,
|
|
108
|
+
});
|
|
109
|
+
if (keyOption === undefined)
|
|
110
|
+
return false;
|
|
111
|
+
if (keyOption === "custom") {
|
|
112
|
+
const key = await askQuestion(" Enter API key: ");
|
|
113
|
+
if (key) {
|
|
114
|
+
result.agentApiKey = key;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
result.agentApiKey = undefined;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else if (keyOption === "stored") {
|
|
121
|
+
result.agentApiKey = "stored";
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
result.agentApiKey = undefined;
|
|
125
|
+
}
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
// ── Wizard ──────────────────────────────────────────────────────────────────
|
|
129
|
+
export async function createWizard() {
|
|
130
|
+
const result = {};
|
|
131
|
+
// 1. Select runtime
|
|
132
|
+
const runtime = await interactiveSelect({
|
|
133
|
+
prompt: cyan("Select a runtime:"),
|
|
134
|
+
items: RUNTIMES,
|
|
135
|
+
});
|
|
136
|
+
if (runtime === undefined)
|
|
137
|
+
return undefined;
|
|
138
|
+
result.runtime = runtime;
|
|
139
|
+
// 2. Action loop: configure agent, add tokens/env, or create
|
|
140
|
+
while (true) {
|
|
141
|
+
printSummary(result);
|
|
142
|
+
const action = await interactiveSelect({
|
|
143
|
+
prompt: cyan("Configure AI agent or environment:"),
|
|
144
|
+
items: getActionItems(result.agentModel !== undefined),
|
|
145
|
+
});
|
|
146
|
+
if (action === undefined)
|
|
147
|
+
return undefined;
|
|
148
|
+
if (action === "create")
|
|
149
|
+
break;
|
|
150
|
+
if (action === "agent") {
|
|
151
|
+
const ok = await configureAgent(result);
|
|
152
|
+
if (!ok)
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
if (action === "git-token") {
|
|
156
|
+
const token = await askQuestion(" GitHub token: ");
|
|
157
|
+
if (token)
|
|
158
|
+
result.gitToken = token;
|
|
159
|
+
}
|
|
160
|
+
if (action === "env-vars") {
|
|
161
|
+
const entry = await askQuestion(" Enter env var (KEY=VALUE): ");
|
|
162
|
+
if (entry && entry.includes("=")) {
|
|
163
|
+
result.env = result.env ?? [];
|
|
164
|
+
result.env.push(entry);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=create-wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-wizard.js","sourceRoot":"","sources":["../../src/commands/create-wizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
interface CreateFlags {
|
|
1
|
+
export interface CreateFlags {
|
|
2
2
|
token?: string;
|
|
3
3
|
runtime?: string;
|
|
4
4
|
agentModel?: string;
|
|
5
|
-
agentApiKey?: string;
|
|
5
|
+
agentApiKey?: string | true;
|
|
6
6
|
gitToken?: string;
|
|
7
7
|
env?: string[];
|
|
8
8
|
}
|
|
9
9
|
export declare function createCommand(flags: CreateFlags): Promise<void>;
|
|
10
|
-
export {};
|
|
11
10
|
//# sourceMappingURL=create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,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,CA2CrE"}
|
package/dist/commands/create.js
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import { Box } from "@upstash/box";
|
|
2
2
|
import { resolveToken } from "../auth.js";
|
|
3
|
+
import { resolveAgentApiKey } from "../agent-key.js";
|
|
3
4
|
import { startRepl } from "../repl/terminal.js";
|
|
5
|
+
import { createWizard } from "./create-wizard.js";
|
|
6
|
+
import { dim } from "../utils/ansi.js";
|
|
4
7
|
export async function createCommand(flags) {
|
|
5
8
|
const apiKey = resolveToken(flags.token);
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
const hasConfigFlags = flags.agentModel !== undefined ||
|
|
10
|
+
flags.agentApiKey !== undefined ||
|
|
11
|
+
flags.runtime !== undefined ||
|
|
12
|
+
flags.gitToken !== undefined ||
|
|
13
|
+
(flags.env !== undefined && flags.env.length > 0);
|
|
14
|
+
if (!hasConfigFlags && process.stdin.isTTY) {
|
|
15
|
+
const wizardResult = await createWizard();
|
|
16
|
+
if (!wizardResult) {
|
|
17
|
+
console.log(dim("Aborted."));
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
flags = { ...flags, ...wizardResult };
|
|
9
21
|
}
|
|
10
22
|
const env = {};
|
|
11
23
|
if (flags.env) {
|
|
@@ -18,12 +30,12 @@ export async function createCommand(flags) {
|
|
|
18
30
|
env[e.slice(0, idx)] = e.slice(idx + 1);
|
|
19
31
|
}
|
|
20
32
|
}
|
|
21
|
-
console.log("
|
|
33
|
+
console.log("\nCreating box...");
|
|
22
34
|
const box = await Box.create({
|
|
23
35
|
apiKey,
|
|
24
36
|
runtime: flags.runtime,
|
|
25
|
-
agent: flags.agentModel
|
|
26
|
-
? { model: flags.agentModel, apiKey: flags.agentApiKey }
|
|
37
|
+
agent: flags.agentModel
|
|
38
|
+
? { model: flags.agentModel, apiKey: resolveAgentApiKey(flags.agentApiKey) }
|
|
27
39
|
: undefined,
|
|
28
40
|
git: flags.gitToken ? { token: flags.gitToken } : undefined,
|
|
29
41
|
env: Object.keys(env).length > 0 ? env : undefined,
|
|
@@ -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,qBAAqB,CAAC;
|
|
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,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAWvC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAkB;IACpD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEzC,MAAM,cAAc,GAClB,KAAK,CAAC,UAAU,KAAK,SAAS;QAC9B,KAAK,CAAC,WAAW,KAAK,SAAS;QAC/B,KAAK,CAAC,OAAO,KAAK,SAAS;QAC3B,KAAK,CAAC,QAAQ,KAAK,SAAS;QAC5B,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEpD,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAM,YAAY,EAAE,CAAC;QAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,YAAY,EAAE,CAAC;IACxC,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,mBAAmB,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;QAC3B,MAAM;QACN,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,UAAU;YACrB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YAC5E,CAAC,CAAC,SAAS;QACb,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":"
|
|
1
|
+
{"version":3,"file":"from-snapshot.d.ts","sourceRoot":"","sources":["../../src/commands/from-snapshot.ts"],"names":[],"mappings":"AAKA,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,GAAG,IAAI,CAAC;IAC5B,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,CA2Bf"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { Box } from "@upstash/box";
|
|
2
2
|
import { resolveToken } from "../auth.js";
|
|
3
|
+
import { resolveAgentApiKey } from "../agent-key.js";
|
|
3
4
|
import { startRepl } from "../repl/terminal.js";
|
|
4
5
|
export async function fromSnapshotCommand(snapshotId, flags) {
|
|
5
6
|
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");
|
|
8
|
-
process.exit(1);
|
|
9
|
-
}
|
|
10
7
|
const env = {};
|
|
11
8
|
if (flags.env) {
|
|
12
9
|
for (const e of flags.env) {
|
|
@@ -22,8 +19,8 @@ export async function fromSnapshotCommand(snapshotId, flags) {
|
|
|
22
19
|
const box = await Box.fromSnapshot(snapshotId, {
|
|
23
20
|
apiKey,
|
|
24
21
|
runtime: flags.runtime,
|
|
25
|
-
agent: flags.agentModel
|
|
26
|
-
? { model: flags.agentModel, apiKey: flags.agentApiKey }
|
|
22
|
+
agent: flags.agentModel
|
|
23
|
+
? { model: flags.agentModel, apiKey: resolveAgentApiKey(flags.agentApiKey) }
|
|
27
24
|
: undefined,
|
|
28
25
|
git: flags.gitToken ? { token: flags.gitToken } : undefined,
|
|
29
26
|
env: Object.keys(env).length > 0 ? env : undefined,
|
|
@@ -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,qBAAqB,CAAC;AAWhD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB,EAClB,KAAwB;IAExB,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEzC,
|
|
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,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,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,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,EAAE,KAAK,CAAC,UAAU;YACrB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YAC5E,CAAC,CAAC,SAAS;QACb,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":"init-demo.d.ts","sourceRoot":"","sources":["../../src/commands/init-demo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init-demo.d.ts","sourceRoot":"","sources":["../../src/commands/init-demo.ts"],"names":[],"mappings":"AAQA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,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,CAUpE;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,CAuDzE;AAED,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -3,12 +3,14 @@ import path from "node:path";
|
|
|
3
3
|
import { execSync } from "node:child_process";
|
|
4
4
|
import readline from "node:readline";
|
|
5
5
|
import { resolveToken } from "../auth.js";
|
|
6
|
+
import { resolveAgentApiKey } from "../agent-key.js";
|
|
6
7
|
import { bold, cyan, green, dim, red, yellow } from "../utils/ansi.js";
|
|
7
8
|
function generateEnvFile(flags, token) {
|
|
9
|
+
const resolvedKey = flags.agentModel ? resolveAgentApiKey(flags.agentApiKey) : "";
|
|
8
10
|
const lines = [
|
|
9
11
|
`UPSTASH_BOX_API_KEY=${token}`,
|
|
10
12
|
`AGENT_MODEL=${flags.agentModel ?? ""}`,
|
|
11
|
-
`AGENT_API_KEY=${
|
|
13
|
+
`AGENT_API_KEY=${resolvedKey ?? ""}`,
|
|
12
14
|
`RUNTIME=${flags.runtime ?? "node"}`,
|
|
13
15
|
`GIT_TOKEN=${flags.gitToken ?? ""}`,
|
|
14
16
|
];
|
|
@@ -27,10 +29,10 @@ async function main() {
|
|
|
27
29
|
config.runtime = process.env.RUNTIME;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
|
-
if (process.env.AGENT_MODEL
|
|
32
|
+
if (process.env.AGENT_MODEL) {
|
|
31
33
|
config.agent = {
|
|
32
34
|
model: process.env.AGENT_MODEL,
|
|
33
|
-
apiKey: process.env.AGENT_API_KEY,
|
|
35
|
+
...(process.env.AGENT_API_KEY && { apiKey: process.env.AGENT_API_KEY }),
|
|
34
36
|
};
|
|
35
37
|
}
|
|
36
38
|
|
|
@@ -55,7 +57,7 @@ async function main() {
|
|
|
55
57
|
|
|
56
58
|
// Execute a command
|
|
57
59
|
console.log("\\nRunning: ls -la");
|
|
58
|
-
const run = await box.exec("ls -la");
|
|
60
|
+
const run = await box.exec.command("ls -la");
|
|
59
61
|
const output = run.result;
|
|
60
62
|
console.log(output);
|
|
61
63
|
|
|
@@ -65,7 +67,7 @@ async function main() {
|
|
|
65
67
|
console.log(files.map((f: { name: string }) => f.name).join(" "));
|
|
66
68
|
|
|
67
69
|
// Agent demo (if configured)
|
|
68
|
-
if (process.env.AGENT_MODEL
|
|
70
|
+
if (process.env.AGENT_MODEL) {
|
|
69
71
|
console.log("\\nRunning agent prompt...");
|
|
70
72
|
const stream = box.agent.stream({
|
|
71
73
|
prompt: "Create a file called demo.js that prints 'Hello World'",
|
|
@@ -79,7 +81,7 @@ async function main() {
|
|
|
79
81
|
// Git demo (if configured)
|
|
80
82
|
if (process.env.GIT_TOKEN) {
|
|
81
83
|
console.log("\\nGit status:");
|
|
82
|
-
const gitRun = await box.exec("git status");
|
|
84
|
+
const gitRun = await box.exec.command("git status");
|
|
83
85
|
const gitOutput = gitRun.result;
|
|
84
86
|
console.log(gitOutput);
|
|
85
87
|
}
|
|
@@ -144,10 +146,6 @@ function askQuestion(query) {
|
|
|
144
146
|
}
|
|
145
147
|
export async function initDemoCommand(flags) {
|
|
146
148
|
const token = resolveToken(flags.token);
|
|
147
|
-
if (flags.agentModel && !flags.agentApiKey) {
|
|
148
|
-
console.error(red("Error: --agent-api-key is required if --agent-model is set"));
|
|
149
|
-
process.exit(1);
|
|
150
|
-
}
|
|
151
149
|
const dir = flags.directory ?? "box-demo";
|
|
152
150
|
const absDir = path.resolve(dir);
|
|
153
151
|
if (fs.existsSync(absDir)) {
|