@bentoai/cli 0.0.0-stage → 1.1.0
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/LICENSE +661 -0
- package/NOTICE-syncthing.md +25 -0
- package/README.md +110 -2
- package/THIRD-PARTY-NOTICES.txt +3460 -0
- package/dist/cli-entry.js +305759 -0
- package/package.json +37 -4
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Third-party notice: Syncthing
|
|
2
|
+
|
|
3
|
+
`bento sync` runs **Syncthing**, the file-transfer engine, as an unmodified,
|
|
4
|
+
stock, official binary. Syncthing is not forked, patched, or statically linked
|
|
5
|
+
into bento — the pinned per-arch binaries ship in separate npm
|
|
6
|
+
`optionalDependencies` platform packages and are executed as a child process.
|
|
7
|
+
|
|
8
|
+
- Project: Syncthing — https://syncthing.net
|
|
9
|
+
- Source: https://github.com/syncthing/syncthing
|
|
10
|
+
- Pinned release: **v2.1.2** (must match the VM image pin in
|
|
11
|
+
`packages/vm-image`; see `src/sync/binary.ts` `SYNCTHING_PIN`)
|
|
12
|
+
- License: **Mozilla Public License 2.0 (MPL-2.0)** —
|
|
13
|
+
https://github.com/syncthing/syncthing/blob/main/LICENSE
|
|
14
|
+
|
|
15
|
+
The macOS binaries bento bundles are the upstream Developer-ID signed and
|
|
16
|
+
notarized releases, sha256-verified on resolve against the values recorded from
|
|
17
|
+
the official signed `sha256sum.txt.asc` for v2.1.2:
|
|
18
|
+
|
|
19
|
+
| Platform | Archive sha256 | Binary sha256 |
|
|
20
|
+
| ----------- | ------------------------------------------------------------------ | ------------------------------------------------------------------ |
|
|
21
|
+
| macOS arm64 | `fa2002f320170b64f226ff65831ccec516b59d7bba365acb51731dd079e52d1a` | `0325655f864024e0eecd78df07bdedbad46cefc91f480503ff615b6211081869` |
|
|
22
|
+
| macOS x64 | `f04b3d7f1492457e929119b91561f0ddc6bada070f46b68bd2464cda04983424` | `24cd4219041087bf67a2773fe0aa8ad976b8e579b4768c31df365a58058f1743` |
|
|
23
|
+
|
|
24
|
+
Under MPL-2.0, the corresponding source is available at the URL above. This
|
|
25
|
+
notice is distributed with the bento package.
|
package/README.md
CHANGED
|
@@ -1,3 +1,111 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Bento CLI
|
|
2
2
|
|
|
3
|
-
This
|
|
3
|
+
This workspace composes the bento command: local agent work, terminal UI, and
|
|
4
|
+
workspace/file/sync operations under one login. The npm
|
|
5
|
+
identity remains @bentoai/cli.
|
|
6
|
+
|
|
7
|
+
Copyright (c) 2026 dzhng, LLC. Licensed under
|
|
8
|
+
[AGPL-3.0-only](LICENSE); bundled dependencies retain their licenses and notices.
|
|
9
|
+
|
|
10
|
+
External agents use the [consumer skill](../../skills/bento/SKILL.md) to
|
|
11
|
+
install and operate the released command from their own computer. The root
|
|
12
|
+
[agent setup](../../README.md#agent-setup) owns skill installation.
|
|
13
|
+
|
|
14
|
+
Install Bun 1.3.14 and Node 22 or newer before installing the public command:
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
npm install -g @bentoai/cli
|
|
18
|
+
bento login
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The command runs on Bun; npm supplies the external package. `bento login` saves
|
|
22
|
+
one human credential for workspace commands and Mac sync. Use `bento workspace
|
|
23
|
+
use <slug>` to choose a default workspace and `bento --help` for the command surface.
|
|
24
|
+
|
|
25
|
+
Harness runtime and protocol ownership belong to the private
|
|
26
|
+
[agent workspace](../agent/README.md). The CLI consumes that owner directly;
|
|
27
|
+
it owns dispatch and user configuration. Local memory and training remain
|
|
28
|
+
local unless --workspace explicitly selects a remote operation. A saved default
|
|
29
|
+
selects remote operation targets and model billing; it never changes execution
|
|
30
|
+
mode. Explicit file addresses and workspace flags must agree.
|
|
31
|
+
|
|
32
|
+
The [HTML tool factory](src/cli/html-render-tools.ts) is a hosted composition
|
|
33
|
+
boundary: it consumes gateway/session context and the contract's shared schema,
|
|
34
|
+
while the gateway owns rendering and publication. It adds no terminal command.
|
|
35
|
+
|
|
36
|
+
Named API operations consume the shared [customer bindings](../contract/src/endpoints/customer-bindings.ts).
|
|
37
|
+
Their help derives from those bindings. Complete body input comes from a file
|
|
38
|
+
or stdin; query and declared header inputs stay separate. JSON results retain
|
|
39
|
+
API fields on stdout, while HTTP status and headers are NDJSON metadata on stderr.
|
|
40
|
+
Named binary writes stream a local file with `--in`, or stdin with `--in -`.
|
|
41
|
+
CLI JSON body files also accept the shared
|
|
42
|
+
[binary request representations](../contract/README.md#customer-adapter-representations)
|
|
43
|
+
for arbitrary bytes. Declared content type and conditional headers are retained.
|
|
44
|
+
Empty conditional/optional reads preserve HTTP metadata without replacing a
|
|
45
|
+
local destination. Binary reads use the existing `src/file-transfers.ts` streaming owner for stdout
|
|
46
|
+
or a local destination. With `--json`, failures retain the complete upstream body
|
|
47
|
+
inside `apiError`; a non-scope refusal keeps its own code. Local file handling and process exit codes remain CLI-owned.
|
|
48
|
+
|
|
49
|
+
[Service calls](src/commands/services.ts) use named vendor operations rather than
|
|
50
|
+
an arbitrary Bento REST caller. The API retains route admission, vendor
|
|
51
|
+
credentials, funding and accounting. Calls preserve repeated query/form values,
|
|
52
|
+
complete JSON and raw bytes; HTTP status and all returned headers go to stderr.
|
|
53
|
+
An output file can contain a vendor refusal, so callers must retain the exit
|
|
54
|
+
status and metadata. Installed help owns the input flags.
|
|
55
|
+
|
|
56
|
+
Named `model` operations use the gateway's separate origin and existing billing
|
|
57
|
+
workspace. Their complete native bodies, protocol choices and headers are
|
|
58
|
+
advertised by command help; the gateway owns admission and exact model IDs.
|
|
59
|
+
Native streams require a protocol ending. Media bytes use ordinary local files,
|
|
60
|
+
and machine results retain surrounding native metadata. A delivery failure keeps
|
|
61
|
+
that result and any successfully saved files on stdout, and exits nonzero.
|
|
62
|
+
With `--json`, stderr includes indexed delivery errors. Generation is never
|
|
63
|
+
repeated for recovery.
|
|
64
|
+
Detached video receipts and raw status outcomes remain resumable without another
|
|
65
|
+
client job system.
|
|
66
|
+
The prompt convenience and native commands share SDK media and output owners.
|
|
67
|
+
|
|
68
|
+
Remote conversations use durable input outcomes from the shared
|
|
69
|
+
[session contract](../contract/README.md). Submission writes its recovery request
|
|
70
|
+
identity to stderr before HTTP, then returns a terminal result or resumable handle.
|
|
71
|
+
A pending result does not cancel work; result/wait only observe that input.
|
|
72
|
+
Exit 0 means successful completion, 1 means failed/cancelled, and 2 requires
|
|
73
|
+
inspecting the body. Re-wait only on `status: "pending"`. A terminal `ask` needs
|
|
74
|
+
an answer with a new input handle; other terminal outcomes, including `sleep`
|
|
75
|
+
and `interrupted`, remain final for their handle. Transport closure cannot
|
|
76
|
+
establish completion.
|
|
77
|
+
|
|
78
|
+
`bento app credentials` manages external runtime keys for an already registered
|
|
79
|
+
app using the same saved human login or process-provided VM key. Workspace and
|
|
80
|
+
app selections are explicit. Export returns the complete API response on stdout, including the one-time
|
|
81
|
+
plaintext key and deployment URLs; HTTP metadata goes to stderr. Capture the
|
|
82
|
+
key in memory and pass it through stdin to the host's server-side secret store.
|
|
83
|
+
The command never saves exported keys or retries an ambiguous mint. Inspect the
|
|
84
|
+
live inventory and revoke unwanted entries before explicitly exporting again.
|
|
85
|
+
Rotation uses a second export, host deployment and verification, then revocation
|
|
86
|
+
of the prior credential. `bento app credentials --help` owns the command surface.
|
|
87
|
+
|
|
88
|
+
The local `.duet` directory remains the persisted state boundary for existing logins, memory, training, sync identities, and VM compatibility. Bento reads those bytes in place so an upgrade does not migrate or rewrite established state.
|
|
89
|
+
|
|
90
|
+
The saved human login and default API/workspace live in config.json. Other
|
|
91
|
+
provider keys remain in provider env files, and connected subscriptions keep
|
|
92
|
+
their own store. Login approval identifies the person; access follows current
|
|
93
|
+
workspace memberships. Mac mirroring has its own non-secret machine identity,
|
|
94
|
+
so removing a Mac does not revoke the login.
|
|
95
|
+
|
|
96
|
+
Both repository and public builds keep native packages external through
|
|
97
|
+
`scripts/native-packages.ts`, preserving their import-relative assets. Public
|
|
98
|
+
packaging also inlines private workspace code and preserves the Pi patch. npm is an external distribution channel. VM commands use the
|
|
99
|
+
managed runtime release, including interactive shell invocation.
|
|
100
|
+
|
|
101
|
+
Use the package scripts for builds, checks and focused disposable-container
|
|
102
|
+
tests. This CLI remains Bun-native. The root lockfile owns dependencies, and
|
|
103
|
+
the root repository owns publication and VM release delivery. Actual publication
|
|
104
|
+
refuses until every pinned optional native package exists in the registry.
|
|
105
|
+
Stage those payloads with `scripts/stage-syncthing-packages.ts` and publish the
|
|
106
|
+
platform packages before the CLI. After a verified CLI release, the publication
|
|
107
|
+
workflow deprecates the old npm package with the new installation instructions;
|
|
108
|
+
existing `.duet` state stays in place.
|
|
109
|
+
|
|
110
|
+
[Mac sync](src/sync/README.md) keeps one computer identity across separate
|
|
111
|
+
workspace transfer instances, with account removal independent of user login.
|