@tempr/cli 0.9.9
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 +275 -0
- package/bin/tempr.js +22 -0
- package/package.json +17 -0
package/README.md
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
# Tempr CLI
|
|
2
|
+
|
|
3
|
+
Sign in, chat, and run agentic coding tasks against your Tempr license from the terminal.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
The standalone builds need nothing installed first -- no .NET, no Node.
|
|
8
|
+
|
|
9
|
+
**macOS and Linux**
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
curl -fsSL https://temprhq.io/cli/install.sh | sh
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Windows**
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
irm https://temprhq.io/cli/install.ps1 | iex
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Or download an archive for your platform from https://temprhq.io/cli#downloads (the current release
|
|
22
|
+
is always at `https://temprhq.io/cli/latest/tempr-<rid>.zip` or `.tar.gz`, for `win-x64`,
|
|
23
|
+
`win-arm64`, `osx-arm64`, `osx-x64`, `linux-x64` and `linux-arm64`) and put `tempr` on your `PATH`;
|
|
24
|
+
each one ships with a `.sha256` next to it. `tempr update` checks for a newer release and tells you
|
|
25
|
+
the command that installs it.
|
|
26
|
+
|
|
27
|
+
`install.sh` installs to `~/.local/bin` (override with `TEMPR_INSTALL_DIR`); `install.ps1` installs
|
|
28
|
+
to `%LOCALAPPDATA%\Programs\tempr` (override with `-InstallDir`) and adds it to your user `PATH`.
|
|
29
|
+
|
|
30
|
+
Binaries aren't code-signed yet, so the first run may meet a SmartScreen or Gatekeeper warning.
|
|
31
|
+
The install scripts avoid it on macOS and Linux.
|
|
32
|
+
|
|
33
|
+
## Quick start
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
tempr auth # sign in through your browser, or with your license key
|
|
37
|
+
tempr keys add # add a key for a model provider (OpenAI, Anthropic, ...)
|
|
38
|
+
tempr config set-model <id> # set a default model
|
|
39
|
+
tempr doctor # check everything is set up (exits non-zero if not)
|
|
40
|
+
tempr "explain this repo" # one-shot
|
|
41
|
+
tempr # interactive session
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
- `tempr "<prompt>"` -- one-shot agent turn with real tool-calling (file read/write/edit, run_command, semantic search).
|
|
47
|
+
- `tempr` -- interactive REPL with persistent history and tab-completion for `/commands` and `@personas`. The first run plays a short animated ASCII logo; `TEMPR_LOGO=1` plays it again, `TEMPR_NO_LOGO` skips it, and `NO_COLOR` shows a plain one-line name instead of the animation.
|
|
48
|
+
- `<something> | tempr` -- headless/piped mode: with no prompt argument, stdin is the whole prompt (`{ echo "review this:"; git diff; } | tempr`). Given a prompt argument, stdin is ignored.
|
|
49
|
+
- `tempr --ask "<prompt>"` -- plain chat, no tools.
|
|
50
|
+
- `tempr "@debugger why does this fail"` -- run a specialist persona. In the REPL, `/persona` opens a picker to switch personas for the rest of the session instead of typing `@name` every turn.
|
|
51
|
+
- `@workspace`/`#codebase` anywhere in a message attaches a brief workspace overview; `@problems`/`@diagnostics` attaches current compiler errors/warnings (via `dotnet build`/`tsc --noEmit`); `@relative/path/to/file` attaches that file -- images (`.png`/`.jpg`/`.gif`/`.webp`/`.bmp`) go in as real image content, other files as inline text.
|
|
52
|
+
- Workspace instructions: every agent turn carries `AGENTS.md` and `.github/copilot-instructions.md` from the current directory, other agents' files (`CLAUDE.md`, `GEMINI.md`, `.cursorrules` and Cursor rules in `.cursor/rules` that always apply; the others are listed with their description for the agent to read when relevant), then a global `~/.tempr/AGENTS.md` for every workspace, each under its own heading and 16 KB combined at most. Where they disagree, AGENTS.md wins. `--verbose` names the files it found.
|
|
53
|
+
- `tempr auth` signs in through your browser: it shows a code, opens the Tempr portal, and you approve the sign-in there -- on any device, so it works over SSH too. `tempr auth --browser` skips the question; `tempr auth <key>` or `TEMPR_LICENSE_KEY` still sign in with a license key, for scripts and CI. Running `tempr` for the first time walks through signing in, adding a provider key and picking a model.
|
|
54
|
+
- `tempr -c` resumes this folder's most recent session; `/resume` picks one from a list.
|
|
55
|
+
- `!command` in the REPL runs a command yourself -- `!git status` -- in this folder, and its output goes in front of your next message. No approval: it's your own command.
|
|
56
|
+
- A turn that runs 30 seconds or more rings the terminal bell when it's done or needs approval, with a desktop notification where the terminal shows one; `tempr config set-notifications off` or `TEMPR_NO_NOTIFY` turns it off.
|
|
57
|
+
- `/diff` shows what the last turn changed on disk, and `/undo` puts it back -- skipping any file that has changed since, so an undo never overwrites work it didn't make.
|
|
58
|
+
- `tempr keys` lists your provider keys -- Tempr calls every model with your own key for its provider. `tempr keys add [provider]` adds or replaces one (no provider opens a picker), and `tempr keys remove <provider>` removes one; `/keys` does the same inside the REPL. The key is typed at a hidden prompt, piped in on stdin, or read with `--from-env VARIABLE` -- never passed as an argument, where it would land in shell history. Tempr checks it with the provider before saving it; a key the provider rejects isn't saved unless you say so or pass `--force`, and one that couldn't be checked (the provider was down, or offers no way to check) is saved with a note. Azure OpenAI, Azure AI Foundry, AWS Bedrock and custom endpoints need more than a key, so they're set up on the Portal's Provider keys page; on a Team plan, your organization's admin manages keys.
|
|
59
|
+
- `tempr models` lists the models your licence can use, with prices and context sizes; `/model` with no argument opens a picker over the same list.
|
|
60
|
+
- `tempr init` drafts an `AGENTS.md` for this workspace from a scan of what's in it.
|
|
61
|
+
- `tempr usage` shows what this machine's turns have cost, by model.
|
|
62
|
+
- `tempr completion bash|zsh|fish|powershell` prints a completion script.
|
|
63
|
+
- `tempr config`, `tempr history`, `tempr mcp`, `tempr doctor` -- manage config, saved sessions, MCP servers, and connectivity. `tempr mcp browse` (or `/mcp browse` in the REPL) opens a picker over Tempr's curated MCP catalog.
|
|
64
|
+
- Agent-mode tools also include `get_diagnostics`, `search_symbols` (where a name is defined, then where it's used, in C#, TypeScript and JavaScript, Python, Go, Rust, Java, Kotlin, C and C++, Swift, Ruby and PHP), `get_callers`/`get_callees` (lexical, not a real language server), and `get_solution`/`get_projects`/`get_project_references`/`get_tests`/`run_tests`/`get_test_results` for .NET workspaces.
|
|
65
|
+
- Web search: on an Anthropic, OpenAI or xAI model, the agent can search the web with the provider's own search, shown as `Searching the web for "…"`. The provider runs the search and bills it to your key for that provider, on top of the tokens: $10 per 1,000 searches on Anthropic and OpenAI, and $5 per 1,000 on xAI, where opening a page counts as a search too; the cost `tempr usage` and the Portal show includes it. It's on in an interactive session and off in scripts (`--json`, piped input, `CI`); `--search` and `--no-search` decide for one run, and `tempr config set-web-search off` turns it off for interactive sessions too. The pages a search finds are ones the agent may then open with `web_fetch`.
|
|
66
|
+
- Chat history (`~/.tempr/sessions/`) and auth tokens are both encrypted at rest (DPAPI on Windows, AES-256-GCM elsewhere).
|
|
67
|
+
|
|
68
|
+
## Approval modes
|
|
69
|
+
|
|
70
|
+
Mutating tool calls -- file writes, patches, commands and MCP calls -- are gated by an approval
|
|
71
|
+
mode. `tempr config set-approval-mode <mode>` sets the default; `--yolo` uses `autopilot` for one
|
|
72
|
+
run without changing it, and on Linux puts its commands in the sandbox (see below).
|
|
73
|
+
|
|
74
|
+
| Mode | File edits and MCP calls | Commands |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| `interactive` (default) | asks | asks |
|
|
77
|
+
| `autopilot` | run | allow-listed commands run; ones that delete, publish, force-push, reset or reboot, and anything not allow-listed, ask |
|
|
78
|
+
| `bypass` | run | always asks -- **stricter than `autopilot`**, despite the name |
|
|
79
|
+
|
|
80
|
+
The mode names are shared with Tempr's IDE extensions, which is why `bypass` reads the way it does.
|
|
81
|
+
`autopilot` is the one to use unattended. With no terminal to ask on (piped input, `--json`, CI), a
|
|
82
|
+
call that would have asked is refused and the model is told why.
|
|
83
|
+
|
|
84
|
+
The allow-list starts with read-only commands and each ecosystem's build, test, lint and type-check
|
|
85
|
+
commands: `dotnet build`/`test`, `npm test` and `npm run build`/`test`/`lint`/`typecheck` (and
|
|
86
|
+
the pnpm, yarn and bun equivalents), `pytest`, `go build`/`test`/`vet`, `cargo
|
|
87
|
+
build`/`check`/`test`/`clippy`, `mvn compile`/`test`, `gradle build`/`test` and their wrapper
|
|
88
|
+
scripts, `git status`, `git log` and the like. Other `package.json` scripts (`npm run deploy`)
|
|
89
|
+
aren't on it. A prefix covers whole words: `npm run build` doesn't cover `npm run build-and-deploy`.
|
|
90
|
+
Add to it per machine with `tempr config allow-command <prefix>`, or per repository with an
|
|
91
|
+
`.agentcommands.json` file at the workspace root: `{ "allowedPrefixes": ["docker build"] }`.
|
|
92
|
+
|
|
93
|
+
Each turn tells the model which projects the workspace holds -- a few folders deep, so a monorepo's
|
|
94
|
+
projects are listed with their folders -- and how each one builds and tests. A command runs in the
|
|
95
|
+
workspace root or, with `working_directory`, a folder inside it (chaining `cd` is refused). It's
|
|
96
|
+
stopped after 2 minutes unless the model asks for longer, up to 10, and long output keeps its start
|
|
97
|
+
and its end. The .NET-only tools (projects, references, tests) are offered only where there's a .NET
|
|
98
|
+
project.
|
|
99
|
+
|
|
100
|
+
Every tool path is checked against the current directory, including through symbolic links and
|
|
101
|
+
Windows junctions, so a link inside the workspace can't be used to read or write outside it.
|
|
102
|
+
|
|
103
|
+
## Sandbox (Linux)
|
|
104
|
+
|
|
105
|
+
`--sandbox` runs the agent's commands inside a sandbox. They can change files only in the current
|
|
106
|
+
folder, the temp folders and the package stores and caches builds write to (npm's, pip's, NuGet's,
|
|
107
|
+
Go's, Cargo's, Gradle's and Maven's), and they can't open network connections. Reading is open.
|
|
108
|
+
`tempr config set-sandbox on` turns it on for every run; `--no-sandbox` turns it off for one.
|
|
109
|
+
|
|
110
|
+
**On by default for `--yolo` and CI.** A run on autopilot with nobody deciding command by command
|
|
111
|
+
(`--yolo`, `--approval-mode autopilot`, or autopilot in CI) runs its commands in the sandbox with the
|
|
112
|
+
network on: the file limits hold, and installs, restores and tests that use localhost still work.
|
|
113
|
+
Where the sandbox can't run, those runs go ahead unsandboxed, as before, and an interactive session
|
|
114
|
+
says so. `--sandbox` asks for the network off as well; `--no-sandbox`, or
|
|
115
|
+
`tempr config set-sandbox off`, keeps `--yolo` out of the sandbox. Other runs aren't sandboxed
|
|
116
|
+
unless asked: the sandbox would let their commands run without asking.
|
|
117
|
+
|
|
118
|
+
Inside the sandbox any command runs without asking, in every approval mode, so an unattended run can
|
|
119
|
+
build, test and try things it has no allow-list entry for. Commands that delete, publish or
|
|
120
|
+
force-push still ask. When a command fails because the sandbox blocked it -- a download, say -- the
|
|
121
|
+
agent can ask to run it outside the sandbox, which always asks you first; a run with nobody to ask
|
|
122
|
+
refuses it.
|
|
123
|
+
|
|
124
|
+
dotnet in the sandbox keeps its own per-user files in `~/.cache/tempr/sandbox-dotnet` rather than
|
|
125
|
+
`~/.dotnet`, which holds global tools and stays read-only; it restores into your own
|
|
126
|
+
`~/.nuget/packages` and reads your NuGet package sources.
|
|
127
|
+
|
|
128
|
+
- **What it covers:** `run_command`, the .NET test tools and `get_diagnostics`. Not `!command`,
|
|
129
|
+
which you type yourself, and not MCP servers.
|
|
130
|
+
- **Git hooks:** a command may not keep changes to `.git/hooks`, `.git/config` or
|
|
131
|
+
`.agentcommands.json`, which run or allow things later, outside the sandbox. Tempr puts back
|
|
132
|
+
anything a command changed there and tells the agent.
|
|
133
|
+
- **The network:** `--sandbox-network` (or `set-sandbox network`) keeps the file limits and leaves
|
|
134
|
+
the network on. Cutting the network off blocks TCP only, so name lookups still work.
|
|
135
|
+
- **Where it runs:** Linux 5.13 or later, and 6.7 or later to cut off the network, through the
|
|
136
|
+
kernel's Landlock. It needs no install and no privileges, and works in a container and on
|
|
137
|
+
Ubuntu 24.04. On macOS and Windows it isn't available yet (inside WSL2 it works). If you ask for
|
|
138
|
+
the sandbox where it can't run, nothing runs: the CLI exits with code 7 rather than run your
|
|
139
|
+
commands unsandboxed. `tempr doctor` says what this machine supports.
|
|
140
|
+
|
|
141
|
+
## Your own commands and agents
|
|
142
|
+
|
|
143
|
+
Markdown files, shared with Tempr Code. Put them in `.tempr/` in a project to commit them with it,
|
|
144
|
+
or in `~/.tempr/` to have them everywhere.
|
|
145
|
+
|
|
146
|
+
`.tempr/commands/deploy.md` — invoked as `/deploy staging`:
|
|
147
|
+
|
|
148
|
+
```markdown
|
|
149
|
+
---
|
|
150
|
+
description: Walk through a deploy
|
|
151
|
+
persona: devops
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
Deploy to $ARGUMENTS. Check the health endpoint afterwards and report what you saw.
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
`$ARGUMENTS` is everything after the command name; `$1`…`$9` are its whitespace-separated words.
|
|
158
|
+
|
|
159
|
+
`.tempr/agents/dba.md` — invoked as `@dba what's slow about this query`:
|
|
160
|
+
|
|
161
|
+
```markdown
|
|
162
|
+
---
|
|
163
|
+
description: Database specialist
|
|
164
|
+
allowed-tools: read_file, search_files, run_command
|
|
165
|
+
model: anthropic/claude-opus-4-5
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
You know this schema inside out. Prefer an index over a rewrite, and always explain the plan.
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
`/commands` and `/agents` list what's available, and both complete on Tab.
|
|
172
|
+
|
|
173
|
+
## Headless and CI
|
|
174
|
+
|
|
175
|
+
`--json` writes one event per line and then a final result object:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
tempr --json --yolo "fix the failing test" | tail -1 | jq '{status, summary, files: .filesChanged}'
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
| Exit code | Meaning |
|
|
182
|
+
|---|---|
|
|
183
|
+
| 0 | the turn finished |
|
|
184
|
+
| 1 | something went wrong (server, network, tool, unhandled error) |
|
|
185
|
+
| 2 | the command line didn't make sense |
|
|
186
|
+
| 3 | not signed in, session expired, or no active plan |
|
|
187
|
+
| 4 | hit the step limit with work still to do |
|
|
188
|
+
| 5 | a tool call was refused and the turn carried on without it |
|
|
189
|
+
| 6 | stopped at `--max-cost` |
|
|
190
|
+
| 7 | the sandbox was asked for and can't run here, so nothing ran |
|
|
191
|
+
| 130 | interrupted (Ctrl+C) |
|
|
192
|
+
|
|
193
|
+
Useful flags for an unattended run: `--max-turns`, `--max-cost` (stop once the run's model calls
|
|
194
|
+
have cost this many dollars), `--allowed-tools`, `--disallowed-tools`, `--approval-mode`,
|
|
195
|
+
`--prompt-file`, and `--search` to let the model search the web, which a script doesn't do unless
|
|
196
|
+
asked. The first `--json` line is a `session` object (session id, model, settings), and each tool the
|
|
197
|
+
CLI runs locally adds a `tool-result` line with its output. Sign in with `TEMPR_LICENSE_KEY` rather than on a command line,
|
|
198
|
+
where the key would land in shell history and in every process listing on the machine. Setting `CI`
|
|
199
|
+
turns off the logo, the update check and crash reports, and makes any call that would have asked a
|
|
200
|
+
question refuse instead of waiting.
|
|
201
|
+
|
|
202
|
+
There's a GitHub Action at the repository root; `docs/examples/tempr-agent-workflows.md` has a
|
|
203
|
+
PR-review workflow and a fix-the-build workflow built on it.
|
|
204
|
+
|
|
205
|
+
## In your editor (Agent Client Protocol)
|
|
206
|
+
|
|
207
|
+
`tempr acp` runs Tempr as an [Agent Client Protocol](https://agentclientprotocol.com) agent, which
|
|
208
|
+
an editor starts and talks to over stdin and stdout: Zed, JetBrains AI Assistant, Neovim
|
|
209
|
+
(CodeCompanion, avante.nvim) and Emacs (agent-shell) among them. In Zed's `settings.json`:
|
|
210
|
+
|
|
211
|
+
```json
|
|
212
|
+
{
|
|
213
|
+
"agent_servers": {
|
|
214
|
+
"Tempr": { "type": "custom", "command": "tempr", "args": ["acp"] }
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
In JetBrains IDEs, the same entry goes under `agent_servers` in `~/.jetbrains/acp.json`, with the
|
|
220
|
+
full path to `tempr` as the command; AI Chat's ⋮ menu > Add Custom Agent opens that file.
|
|
221
|
+
|
|
222
|
+
The editor shows Tempr's replies, its tool calls (edits as diffs) and its questions, and you answer
|
|
223
|
+
them there. Tempr runs its tools itself, so the allow-list, the approval mode and, on Linux, the
|
|
224
|
+
[sandbox](#sandbox-linux) work as they do here; autopilot in an editor counts like `--yolo`. Sign in
|
|
225
|
+
with `tempr auth` first, or from the editor, which offers the browser sign-in.
|
|
226
|
+
|
|
227
|
+
- **Sessions** are saved like any other, so `tempr history` lists them and `tempr -c` in the same
|
|
228
|
+
folder carries one on. The editor's own session list shows them too, and opening one there
|
|
229
|
+
replays its conversation (the text; tool calls aren't kept).
|
|
230
|
+
- **Settings:** the approval mode, the model, its reasoning level and web search, for that session.
|
|
231
|
+
A new session starts on the model last picked in an editor, or on your default until you pick one
|
|
232
|
+
(`tempr config set-model` makes the default the starting model again). A reasoning level is kept
|
|
233
|
+
per model, as `/reasoning` keeps it.
|
|
234
|
+
- **Slash commands:** your command templates, plus `/undo`, `/diff` and `/agents`.
|
|
235
|
+
- **MCP servers** the editor passes run beside yours from `~/.tempr/mcp.json`; one with the same name
|
|
236
|
+
as one of yours takes its place for the session.
|
|
237
|
+
- **Command output** streams into a terminal under the call, in editors that draw one (Zed); in
|
|
238
|
+
others it shows when the command ends.
|
|
239
|
+
- **Sub-agents** answer under the call that delegated to them, apart from the reply.
|
|
240
|
+
|
|
241
|
+
It passes the ACP conformance kit ([acp-tck](https://github.com/agentclientprotocol/acp-tck)). The
|
|
242
|
+
setup for each editor is at <https://temprhq.io/docs/cli-editors>.
|
|
243
|
+
|
|
244
|
+
## What leaves your machine
|
|
245
|
+
|
|
246
|
+
Everything below goes to your Tempr server (`api.temprhq.io` unless the `TEMPRAPP_SERVER_URL`
|
|
247
|
+
environment variable or a `serverUrl` entry in `~/.tempr/config.json` says otherwise), which relays model calls to the providers your license has keys for.
|
|
248
|
+
|
|
249
|
+
**Sent on every turn you send**
|
|
250
|
+
|
|
251
|
+
- Your message, and the conversation so far in this session.
|
|
252
|
+
- `AGENTS.md`, `.github/copilot-instructions.md`, `CLAUDE.md`, `GEMINI.md` and Cursor rules from the
|
|
253
|
+
current directory, and `~/.tempr/AGENTS.md`, up to 16 KB combined.
|
|
254
|
+
- Files you attach with `@path`, including images, and anything `@workspace` or `@problems` pulls
|
|
255
|
+
in (a workspace overview, or your current build errors).
|
|
256
|
+
- The contents of files the agent reads or searches, as tool results.
|
|
257
|
+
- Your operating system, CPU architecture and which shell `run_command` would use, so the model
|
|
258
|
+
writes commands that work on your machine, and the projects found in the current directory, with
|
|
259
|
+
their folders and build and test commands.
|
|
260
|
+
|
|
261
|
+
**Sent only if you say yes**
|
|
262
|
+
|
|
263
|
+
- Crash reports: the error type and message, the stack trace, the CLI version and your OS version.
|
|
264
|
+
Off by default. The first interactive session asks once and remembers your answer; change it with
|
|
265
|
+
`tempr config set-crash-reports on|off`. Nothing is ever sent when there's no terminal to ask on
|
|
266
|
+
(piped input, `--json`), or when `CI`, `DO_NOT_TRACK` or `TEMPR_NO_CRASH_REPORTS` is set.
|
|
267
|
+
|
|
268
|
+
**Never sent**
|
|
269
|
+
|
|
270
|
+
- Your license key after sign-in (it is exchanged once for a session token).
|
|
271
|
+
- Any file the agent didn't read, and any command output you didn't approve.
|
|
272
|
+
- Telemetry: there is none beyond the requests above.
|
|
273
|
+
|
|
274
|
+
See `tempr --help` for the full command reference, and `docs/plans/plan-tempr-cli-v1-roadmap.md` in
|
|
275
|
+
the Tempr repo for design notes.
|
package/bin/tempr.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Hands off to the platform package npm installed for this machine. A shim rather than a
|
|
3
|
+
// postinstall download: nothing is fetched at install time, so the package works behind a proxy,
|
|
4
|
+
// in an offline cache, and in a lockfile that means what it says.
|
|
5
|
+
const { spawnSync } = require('node:child_process');
|
|
6
|
+
|
|
7
|
+
const pkg = `@tempr/cli-${process.platform}-${process.arch}`;
|
|
8
|
+
let binary;
|
|
9
|
+
try {
|
|
10
|
+
binary = require.resolve(`${pkg}/bin/tempr${process.platform === 'win32' ? '.exe' : ''}`);
|
|
11
|
+
} catch {
|
|
12
|
+
console.error(`The Tempr CLI has no build for ${process.platform} ${process.arch}.`);
|
|
13
|
+
console.error(`Expected ${pkg} to be installed. If your installer skips optional dependencies, install it directly.`);
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const result = spawnSync(binary, process.argv.slice(2), { stdio: 'inherit' });
|
|
18
|
+
if (result.error) {
|
|
19
|
+
console.error(result.error.message);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
process.exit(result.status === null ? 1 : result.status);
|
package/package.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tempr/cli",
|
|
3
|
+
"version": "0.9.9",
|
|
4
|
+
"description": "Sign in, chat, and run agentic coding tasks against your Tempr license from the terminal.",
|
|
5
|
+
"homepage": "https://temprhq.io",
|
|
6
|
+
"license": "SEE LICENSE IN README.md",
|
|
7
|
+
"bin": { "tempr": "bin/tempr.js" },
|
|
8
|
+
"files": ["bin/"],
|
|
9
|
+
"optionalDependencies": {
|
|
10
|
+
"@tempr/cli-win32-x64": "0.9.9",
|
|
11
|
+
"@tempr/cli-win32-arm64": "0.9.9",
|
|
12
|
+
"@tempr/cli-linux-x64": "0.9.9",
|
|
13
|
+
"@tempr/cli-linux-arm64": "0.9.9",
|
|
14
|
+
"@tempr/cli-darwin-x64": "0.9.9",
|
|
15
|
+
"@tempr/cli-darwin-arm64": "0.9.9"
|
|
16
|
+
}
|
|
17
|
+
}
|