autopreso 0.1.1 → 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 +20 -16
- package/package.json +9 -3
- package/public/app.js +742 -188
- package/public/style.css +134 -11
- package/src/cli.js +2 -2
- package/src/openai-transcription.js +136 -19
- package/src/server.js +157 -28
- package/src/session-cost.js +128 -0
- package/src/settings-store.js +10 -0
- package/src/transcript-turn-queue.js +1 -1
- package/src/whiteboard-keywords.js +43 -0
- package/src/whiteboard-session.js +35 -1
package/README.md
CHANGED
|
@@ -29,13 +29,11 @@ Stage a few seed elements, hit start, and present.
|
|
|
29
29
|
```sh
|
|
30
30
|
$ npx autopreso # boots the server, opens the browser
|
|
31
31
|
autopreso listening at http://127.0.0.1:3210
|
|
32
|
-
whiteboard agent: openai gpt-5.5
|
|
33
|
-
settings file: /Users/you/.config/autopreso/settings.json
|
|
34
32
|
|
|
35
33
|
# In the browser:
|
|
36
34
|
# 1. Drop reference materials onto the staging canvas (title, agenda, etc).
|
|
37
|
-
# 2. Pick your microphone,
|
|
38
|
-
# 3. Click "Start
|
|
35
|
+
# 2. Pick your microphone, transcription model, agent model, and optional Agent instructions.
|
|
36
|
+
# 3. Click "Start Preso" and start talking.
|
|
39
37
|
```
|
|
40
38
|
|
|
41
39
|
## Install
|
|
@@ -80,10 +78,10 @@ npm start
|
|
|
80
78
|
└────────────────┘
|
|
81
79
|
```
|
|
82
80
|
|
|
83
|
-
- **Two modes** - "staging" lets you sketch seed content client-side; "live" hands the canvas over to the agent and starts streaming transcripts.
|
|
81
|
+
- **Two modes** - "staging" lets you sketch seed content client-side; "live" hands the canvas over to the agent, biases OpenAI Realtime transcription toward staging text and labels, and starts streaming transcripts.
|
|
84
82
|
- **Local server, local network only** - the Express + WebSocket server binds to 127.0.0.1; nothing is exposed beyond your machine.
|
|
85
|
-
- **Persistent settings** - models, API keys,
|
|
86
|
-
- **Warmup loop** - after you hit start the agent primes itself against your staging content so the first sentence you say doesn't get a cold model.
|
|
83
|
+
- **Persistent settings** - models, API keys, STT engine choices, and Agent instructions live in `~/.config/autopreso/settings.json` and survive restarts.
|
|
84
|
+
- **Warmup loop** - after you hit start the agent primes itself against your staging content and Agent instructions so the first sentence you say doesn't get a cold model.
|
|
87
85
|
|
|
88
86
|
## CLI Reference
|
|
89
87
|
|
|
@@ -102,6 +100,9 @@ npm start
|
|
|
102
100
|
## Configuration
|
|
103
101
|
|
|
104
102
|
Settings persist at `~/.config/autopreso/settings.json` and are managed from the in-app status panel.
|
|
103
|
+
Agent instructions are saved automatically from staging, can be up to 100,000 characters, and take effect on the next Start Preso.
|
|
104
|
+
The live Session cost card estimates agent token costs and OpenAI Realtime audio costs for the current presentation, resetting on Start Preso or session reset.
|
|
105
|
+
OpenAI prices use the built-in May 2026 rate table; local providers show `$0.0000`, Codex shows token volume because it routes through your subscription, and unknown models show `n/a`.
|
|
105
106
|
|
|
106
107
|
### Defaults on first run
|
|
107
108
|
|
|
@@ -119,22 +120,24 @@ Auto-detection precedence: **Codex CLI auth wins over `OLLAMA_MODEL` wins over `
|
|
|
119
120
|
|
|
120
121
|
### Environment variables
|
|
121
122
|
|
|
122
|
-
|
|
123
|
+
Provider variables only seed `settings.json` on first run. Once the file exists, they're ignored - edit the file or use the in-app panel. Log path variables are read on each process start.
|
|
123
124
|
|
|
124
|
-
| Variable
|
|
125
|
-
|
|
|
126
|
-
| `PORT`
|
|
127
|
-
| `OPENAI_API_KEY`
|
|
128
|
-
| `OPENAI_MODEL`
|
|
129
|
-
| `CODEX_MODEL`
|
|
130
|
-
| `OLLAMA_MODEL`
|
|
125
|
+
| Variable | Purpose |
|
|
126
|
+
| ---------------------- | ----------------------------------------------------- |
|
|
127
|
+
| `PORT` | Port to listen on. Default: `3210`. |
|
|
128
|
+
| `OPENAI_API_KEY` | Seeds the OpenAI key for both agent and Realtime STT. |
|
|
129
|
+
| `OPENAI_MODEL` | Seeds the OpenAI agent model. |
|
|
130
|
+
| `CODEX_MODEL` | Seeds the Codex model. |
|
|
131
|
+
| `OLLAMA_MODEL` | Seeds the Ollama model. |
|
|
132
|
+
| `AUTOPRESO_CACHE_LOG` | Cache usage log path. Default: `~/.config/autopreso/logs/cache.log`. |
|
|
133
|
+
| `AUTOPRESO_DEBUG_LOG` | Agent debug log path. Default: `~/.config/autopreso/logs/debug.log`. |
|
|
131
134
|
|
|
132
135
|
Local Moonshine transcription ships as an optional native sidecar for `darwin-arm64` and `darwin-x64`. On other platforms, choose OpenAI Realtime in the STT panel.
|
|
133
136
|
|
|
134
137
|
## Credits
|
|
135
138
|
|
|
136
139
|
- [Excalidraw](https://github.com/excalidraw/excalidraw) - the whiteboard canvas, scene model, and rendering.
|
|
137
|
-
- [Moonshine](https://github.com/
|
|
140
|
+
- [Moonshine](https://github.com/moonshine-ai/moonshine) the local speech-to-text model that makes the offline path possible.
|
|
138
141
|
- [Vercel AI SDK](https://github.com/vercel/ai) - tool-calling agent loop and provider abstraction.
|
|
139
142
|
|
|
140
143
|
## Development
|
|
@@ -142,6 +145,7 @@ Local Moonshine transcription ships as an optional native sidecar for `darwin-ar
|
|
|
142
145
|
```sh
|
|
143
146
|
npm install # install deps
|
|
144
147
|
npm run dev # run the CLI from source
|
|
148
|
+
npm run typecheck # tsc --noEmit
|
|
145
149
|
npm test # node --test
|
|
146
150
|
npm run build:moonshine-sidecars # build the Python sidecar binaries
|
|
147
151
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "autopreso",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Realtime speech to presentation. Let the whiteboard whiteboard itself.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Kun Chen <kun@kunchenguid.com>",
|
|
@@ -41,7 +41,8 @@
|
|
|
41
41
|
"dev": "node ./src/cli.js",
|
|
42
42
|
"prepare:release-packages": "node ./scripts/prepare-release-packages.js",
|
|
43
43
|
"test": "node --test",
|
|
44
|
-
"start": "node ./src/cli.js"
|
|
44
|
+
"start": "node ./src/cli.js",
|
|
45
|
+
"typecheck": "tsc --noEmit"
|
|
45
46
|
},
|
|
46
47
|
"dependencies": {
|
|
47
48
|
"@ai-sdk/openai": "^3.0.63",
|
|
@@ -55,5 +56,10 @@
|
|
|
55
56
|
"@autopreso/moonshine-darwin-arm64": "0.1.1",
|
|
56
57
|
"@autopreso/moonshine-darwin-x64": "0.1.1"
|
|
57
58
|
},
|
|
58
|
-
"devDependencies": {
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@types/express": "^5.0.6",
|
|
61
|
+
"@types/node": "^25.6.2",
|
|
62
|
+
"@types/ws": "^8.18.1",
|
|
63
|
+
"typescript": "^6.0.3"
|
|
64
|
+
}
|
|
59
65
|
}
|