@tantawowa/hosanna-tools 2.21.0 → 2.23.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/README.md +156 -46
- package/dist/build-info.json +3 -3
- package/dist/cli.js +549 -156
- package/dist/cli.js.map +1 -1
- package/dist/device/device-cli.d.ts +22 -0
- package/dist/device/device-cli.js +159 -0
- package/dist/device/device-cli.js.map +1 -0
- package/dist/device/device-driver.d.ts +1 -0
- package/dist/device/device-driver.js +3 -0
- package/dist/device/device-driver.js.map +1 -0
- package/dist/device/devices-file.d.ts +12 -0
- package/dist/device/devices-file.js +120 -0
- package/dist/device/devices-file.js.map +1 -0
- package/dist/device/discovery/roku-ssdp.d.ts +16 -0
- package/dist/device/discovery/roku-ssdp.js +116 -0
- package/dist/device/discovery/roku-ssdp.js.map +1 -0
- package/dist/device/driver-registry.d.ts +12 -0
- package/dist/device/driver-registry.js +114 -0
- package/dist/device/driver-registry.js.map +1 -0
- package/dist/device/drivers/roku-driver.d.ts +30 -0
- package/dist/device/drivers/roku-driver.js +245 -0
- package/dist/device/drivers/roku-driver.js.map +1 -0
- package/dist/device/log-stream.d.ts +16 -0
- package/dist/device/log-stream.js +121 -0
- package/dist/device/log-stream.js.map +1 -0
- package/dist/device/types.d.ts +59 -0
- package/dist/device/types.js +3 -0
- package/dist/device/types.js.map +1 -0
- package/dist/index.d.ts +51 -2
- package/dist/index.js +44 -7
- package/dist/index.js.map +1 -1
- package/dist/lib/env-info.d.ts +3 -1
- package/dist/lib/env-info.js +144 -24
- package/dist/lib/env-info.js.map +1 -1
- package/dist/lib/hosanna-config.d.ts +51 -0
- package/dist/lib/hosanna-config.js +323 -0
- package/dist/lib/hosanna-config.js.map +1 -0
- package/dist/run/android-emulator.d.ts +40 -0
- package/dist/run/android-emulator.js +590 -0
- package/dist/run/android-emulator.js.map +1 -0
- package/dist/run/apple-tv.d.ts +32 -0
- package/dist/run/apple-tv.js +367 -0
- package/dist/run/apple-tv.js.map +1 -0
- package/dist/run/ios-device.d.ts +17 -0
- package/dist/run/ios-device.js +229 -0
- package/dist/run/ios-device.js.map +1 -0
- package/dist/run/ios-simulator.d.ts +21 -0
- package/dist/run/ios-simulator.js +187 -0
- package/dist/run/ios-simulator.js.map +1 -0
- package/dist/run/process-utils.d.ts +2 -0
- package/dist/run/process-utils.js +31 -0
- package/dist/run/process-utils.js.map +1 -0
- package/dist/run/run-config.d.ts +20 -0
- package/dist/run/run-config.js +72 -0
- package/dist/run/run-config.js.map +1 -0
- package/dist/run/run-controller.d.ts +66 -0
- package/dist/run/run-controller.js +1017 -0
- package/dist/run/run-controller.js.map +1 -0
- package/dist/run/session-manager.d.ts +25 -0
- package/dist/run/session-manager.js +99 -0
- package/dist/run/session-manager.js.map +1 -0
- package/dist/run/targets.d.ts +60 -0
- package/dist/run/targets.js +210 -0
- package/dist/run/targets.js.map +1 -0
- package/dist/run/types.d.ts +60 -0
- package/dist/run/types.js +32 -0
- package/dist/run/types.js.map +1 -0
- package/dist/support-tools/framework-sync.d.ts +75 -0
- package/dist/support-tools/framework-sync.js +346 -0
- package/dist/support-tools/framework-sync.js.map +1 -0
- package/dist/support-tools/mcp-server/cli-test-recorder.js +1 -1
- package/dist/support-tools/mcp-server/cli-test-recorder.js.map +1 -1
- package/dist/support-tools/mcp-server/cli-test-runner.js +1 -1
- package/dist/support-tools/mcp-server/cli-test-runner.js.map +1 -1
- package/dist/support-tools/mcp-server/game-tools.js +1 -1
- package/dist/support-tools/mcp-server/game-tools.js.map +1 -1
- package/dist/support-tools/mcp-server/index.d.ts +1 -1
- package/dist/support-tools/mcp-server/instance-lock.js +1 -1
- package/dist/support-tools/mcp-server/tools.js +3 -3
- package/dist/support-tools/mcp-server/tools.js.map +1 -1
- package/dist/support-tools/run-roku.d.ts +4 -16
- package/dist/support-tools/run-roku.js +18 -275
- package/dist/support-tools/run-roku.js.map +1 -1
- package/dist/updater/compiler-installer.d.ts +17 -0
- package/dist/updater/compiler-installer.js +102 -0
- package/dist/updater/compiler-installer.js.map +1 -1
- package/dist/updater/framework-installer.d.ts +43 -0
- package/dist/updater/framework-installer.js +260 -0
- package/dist/updater/framework-installer.js.map +1 -0
- package/dist/updater/license-manager.d.ts +57 -0
- package/dist/updater/license-manager.js +265 -0
- package/dist/updater/license-manager.js.map +1 -0
- package/dist/updater/sdk-manager.d.ts +7 -1
- package/dist/updater/sdk-manager.js +19 -53
- package/dist/updater/sdk-manager.js.map +1 -1
- package/dist/updater/symlink-manager.d.ts +33 -0
- package/dist/updater/symlink-manager.js +237 -0
- package/dist/updater/symlink-manager.js.map +1 -0
- package/dist/updater/symlink-registry.d.ts +29 -0
- package/dist/updater/symlink-registry.js +250 -0
- package/dist/updater/symlink-registry.js.map +1 -0
- package/package.json +1 -1
- package/dist/lib/env-cloud-agent-setup-help.d.ts +0 -5
- package/dist/lib/env-cloud-agent-setup-help.js +0 -26
- package/dist/lib/env-cloud-agent-setup-help.js.map +0 -1
- package/dist/support-tools/cloud-agent-setup.d.ts +0 -41
- package/dist/support-tools/cloud-agent-setup.js +0 -132
- package/dist/support-tools/cloud-agent-setup.js.map +0 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Documentation
|
|
4
4
|
|
|
5
|
-
- **[MCP debugger & UI tests](src/support-tools/mcp-server/README.md)** — `hst
|
|
5
|
+
- **[MCP debugger & UI tests](src/support-tools/mcp-server/README.md)** — `hst mcp:start`, all MCP tools, commands by use case, examples, `hst test:ui` / `hst test:record`.
|
|
6
6
|
- **[docs/README.md](docs/README.md)** — index of docs in this repo (MCP + source-map note).
|
|
7
7
|
- **hosanna-ui** (separate repo): `docs/README.md` for agentic debugging and links back to this README.
|
|
8
8
|
|
|
@@ -23,7 +23,7 @@ npm install . -g # path to the hosanna-tools directory
|
|
|
23
23
|
Hosanna Tools can also be imported by app build chains. The CLI remains available as `hst`, but package imports are library-safe and do not parse CLI arguments or call `process.exit` during import. Public wrappers for process-oriented commands use no-exit mode where supported, so API callers receive structured results or thrown errors instead of forced process termination.
|
|
24
24
|
|
|
25
25
|
```ts
|
|
26
|
-
import { buildConfig, env, generate,
|
|
26
|
+
import { buildConfig, compiler, env, generate, roku, secrets } from '@tantawowa/hosanna-tools';
|
|
27
27
|
|
|
28
28
|
await generate.all({
|
|
29
29
|
rootFolder: './src',
|
|
@@ -37,7 +37,7 @@ await buildConfig.resolve({
|
|
|
37
37
|
out: 'assets/meta/build-config.json',
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
await install
|
|
40
|
+
await compiler.install({ version: '0.33.7' });
|
|
41
41
|
await roku.package({ env: 'prod', prebuild: 'npm run roku:build:prod' });
|
|
42
42
|
```
|
|
43
43
|
|
|
@@ -45,13 +45,13 @@ Common build-script replacements:
|
|
|
45
45
|
|
|
46
46
|
| CLI command | Programmatic API |
|
|
47
47
|
| --- | --- |
|
|
48
|
-
| `npx hst generate --rootFolder ./src` | `await generate.all({ rootFolder: './src' })` |
|
|
48
|
+
| `npx hst generate:all --rootFolder ./src` | `await generate.all({ rootFolder: './src' })` |
|
|
49
49
|
| `npx hst generate:clean` | `await generate.clean()` |
|
|
50
|
-
| `npx hst build-config
|
|
51
|
-
| `npx hst install
|
|
50
|
+
| `npx hst build-config:resolve --env dev --platform roku --out assets/meta/build-config.json` | `await buildConfig.resolve({ env: 'dev', platform: 'roku', out: 'assets/meta/build-config.json' })` |
|
|
51
|
+
| `npx hst compiler:install 0.33.7` | `await compiler.install({ version: '0.33.7' })` |
|
|
52
52
|
| `npx hst roku:package --env prod --prebuild 'npm run roku:build:prod'` | `await roku.package({ env: 'prod', prebuild: 'npm run roku:build:prod' })` |
|
|
53
53
|
| `npx hst secrets:check` | `await secrets.check({ cwd: process.cwd() })` |
|
|
54
|
-
| `npx hst env` | `await env.check({ cwd: process.cwd() })` |
|
|
54
|
+
| `npx hst env check` | `await env.check({ cwd: process.cwd() })` |
|
|
55
55
|
|
|
56
56
|
Long-running APIs such as `dev.run`, `debugger.start`, `mcp.start`, `test.record`, and RASP capture-style workflows keep the same operational behavior as the corresponding CLI commands: they start services, attach to debuggers, or wait for user/session activity. `mcp.start`, `dev.run`, and `test.ui` are wired for programmatic no-exit behavior through the top-level API.
|
|
57
57
|
|
|
@@ -143,9 +143,35 @@ Hosanna Tools is a comprehensive CLI toolset for the Hosanna framework that prov
|
|
|
143
143
|
|
|
144
144
|
The CLI commands are organized into logical groups using colon-separated namespacing:
|
|
145
145
|
|
|
146
|
-
###
|
|
147
|
-
- `run
|
|
148
|
-
- `
|
|
146
|
+
### Development Commands
|
|
147
|
+
- `run` - Canonical cross-platform app launcher. Requires `--platform` and supports web, Roku, iOS, Apple TV, Android, and Android TV launch targets.
|
|
148
|
+
- `target:list` - List launch targets for humans or agents, including web previews, simulators, and physical devices.
|
|
149
|
+
- `dev:start` - Run dev processes: vite, generator watch, and optional debugger
|
|
150
|
+
- `debugger:start` - Start the command debugger WebSocket proxy (only one debugger is needed for multiple apps; if the port is already in use, a friendly message is shown instead of crashing)
|
|
151
|
+
|
|
152
|
+
Examples:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
hst run --platform web
|
|
156
|
+
hst run --platform roku --target web
|
|
157
|
+
hst run --platform roku --target simulated
|
|
158
|
+
hst run --platform roku --target emulated
|
|
159
|
+
hst run --platform ios --target simulator --device "iPhone 17 Pro"
|
|
160
|
+
hst run --platform ios --target device --device "George iPhone" --no-logs
|
|
161
|
+
hst run --platform android --target emulator --device "Pixel_8" --no-logs
|
|
162
|
+
hst run --platform android --target device --device "RF8M62694QT" --no-logs
|
|
163
|
+
hst run --platform android-tv --target emulator --device "Television_1080p" --no-logs
|
|
164
|
+
hst run --platform apple-tv --target simulator --device "Apple TV 4K"
|
|
165
|
+
hst run --platform roku --target device --device "Living Room"
|
|
166
|
+
hst run --platform roku --target device --device "Living Room" --replace
|
|
167
|
+
hst target:list --platform ios --target device --json
|
|
168
|
+
hst target:list --platform android --target emulator --json
|
|
169
|
+
hst target:list --platform android-tv --target emulator --json
|
|
170
|
+
hst target:list --platform apple-tv --target simulator --json
|
|
171
|
+
hst target:list --form-factor tv --json
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
`hst run` is platform-explicit by design, so non-interactive agents do not guess between iOS, Apple TV, Android, Android TV, Roku, or web. For Roku, `web`, `simulated`, and `emulated` all launch the web preview; `device` deploys to a physical Roku. For iOS and Apple TV, `simulator` launches an Apple simulator and `device` launches paired physical hardware. For Android and Android TV, `emulator` launches an Android emulator and `device` launches ADB-connected physical hardware. Device/emulator runs record the target and refuse to overwrite a recorded session or safe-to-kill occupied resource in non-interactive mode unless `--replace` is passed. Preferred run defaults live in `.hosanna-tools/run.json`, and preferred devices live in `.hosanna-tools/devices.json` or `~/.hosanna-tools/devices.json`. Legacy `.hs-devices.json` files are still read for compatibility.
|
|
149
175
|
|
|
150
176
|
### Roku Commands (`roku:*`) - Roku Deployment & Packaging
|
|
151
177
|
- `roku:run` - Deploy a Roku app to a device (supports .zip file or folder)
|
|
@@ -168,37 +194,39 @@ hst roku:map-stack --text "file/line: pkg:/components/source_0.brs(7475)"
|
|
|
168
194
|
Supported inputs include `file/line: pkg:/components/source_0.brs(7475)`, `at ... (pkg:/components/source_1.brs:6636)`, `in pkg:/components/source_3.brs(4710)`, and bare generated references such as `source_10.brs:8211`. See [docs/roku-map-stack.md](docs/roku-map-stack.md).
|
|
169
195
|
|
|
170
196
|
### Generate Commands (`generate:*`) - Code Generation
|
|
171
|
-
- `generate` - Generate structs and command handler maps
|
|
197
|
+
- `generate:all` - Generate structs and command handler maps
|
|
172
198
|
- `generate:structs` - Generate structs only for the specified files
|
|
173
199
|
- `generate:clean` - Clean generated files in the generated folder
|
|
174
200
|
|
|
175
|
-
###
|
|
176
|
-
- `install` - Install the SDK by creating hosanna.json
|
|
177
|
-
- `install
|
|
178
|
-
- `
|
|
201
|
+
### Setup Commands
|
|
202
|
+
- `sdk:install` - Install the SDK by creating hosanna.json
|
|
203
|
+
- `compiler:install` - Install or update the Hosanna compiler (hsc)
|
|
204
|
+
- `compiler:status` - Print local compiler status for this project
|
|
205
|
+
- `compiler:list` - List compiler versions known from local config, install, and cache
|
|
206
|
+
- `template:create` - Create a new template app with the Hosanna SDK
|
|
179
207
|
|
|
180
208
|
### Build Config Commands (`build-config`) - Runtime Configuration
|
|
181
|
-
- `build-config
|
|
209
|
+
- `build-config:resolve` - Resolve `build-config/base.json`, env/platform overlays, secrets, and optional developer profiles into the canonical runtime `build-config.json`
|
|
182
210
|
|
|
183
211
|
Native builds can resolve config immediately before the platform build:
|
|
184
212
|
|
|
185
213
|
```bash
|
|
186
|
-
npx hst build-config
|
|
214
|
+
npx hst build-config:resolve --env dev --platform roku --out assets/meta/build-config.json
|
|
187
215
|
npm run roku:build
|
|
188
216
|
|
|
189
|
-
HS_ENV=dev HS_PLATFORM=android npx hst build-config
|
|
217
|
+
HS_ENV=dev HS_PLATFORM=android npx hst build-config:resolve --out assets/meta/build-config.json
|
|
190
218
|
npm run android:build-code
|
|
191
219
|
|
|
192
|
-
HS_ENV=dev HS_PLATFORM=apple HS_BUILD_PROFILE=george npx hst build-config
|
|
220
|
+
HS_ENV=dev HS_PLATFORM=apple HS_BUILD_PROFILE=george npx hst build-config:resolve --out assets/meta/build-config.json
|
|
193
221
|
npm run apple:build-code
|
|
194
222
|
```
|
|
195
223
|
|
|
196
224
|
### CI Commands (`ci:*`) - Continuous Integration
|
|
197
225
|
- `ci:extract-pkg-key` - Extract signing key from an existing signed Roku package as base64
|
|
198
|
-
- `
|
|
226
|
+
- `config set --git-url` - Configure hosanna.json git-url from argument or environment
|
|
199
227
|
|
|
200
228
|
### Build Config Commands (`build-config:*`) - Build/runtime config
|
|
201
|
-
- `build-config
|
|
229
|
+
- `build-config:resolve` - Merge build config overlays into `assets/meta/build-config.json`
|
|
202
230
|
- `build-config:restore-secrets` - Restore ignored `secrets/*.json` overlays from `BUILD_CONFIG_SECRETS_*_BASE64`
|
|
203
231
|
|
|
204
232
|
### Secrets Commands (`secrets:*`) - Portable `.secrets` files
|
|
@@ -209,16 +237,83 @@ npm run apple:build-code
|
|
|
209
237
|
|
|
210
238
|
Shared options: `--file` (secrets path), `--template` (template path for `check` / `init` / `list --template`), `--format text|json`.
|
|
211
239
|
|
|
212
|
-
### Environment Commands (`env
|
|
213
|
-
- `env` - Print environment information and run checks
|
|
214
|
-
- `env
|
|
215
|
-
- `env
|
|
240
|
+
### Environment Commands (`env ...`) - Environment Management
|
|
241
|
+
- `env check` - Print environment information and run checks
|
|
242
|
+
- `env fix` - Check and repair environment issues
|
|
243
|
+
- `env prepare-gitignore` - Ensure .gitignore contains required entries
|
|
244
|
+
|
|
245
|
+
### Framework Source Symlinks (semver-keyed registry)
|
|
246
|
+
|
|
247
|
+
`hst` symlinks framework source folders from the `hosanna-ui/` checkout into the
|
|
248
|
+
project (`src/hosanna-ui -> ../hosanna-ui/src/hosanna-ui`, etc.). Which folders
|
|
249
|
+
get linked is decided by a **semver-keyed registry**: an entry applies when the
|
|
250
|
+
installed framework version is **>=** its key, and the highest applicable key
|
|
251
|
+
wins. The installed version is read from `hosanna-ui/package.json` (prerelease
|
|
252
|
+
suffixes are ignored, so `1.31.0-next` counts as `1.31.0`) — this works for
|
|
253
|
+
tags, branches, `@latest`, and `LOCAL_SDK` alike.
|
|
254
|
+
|
|
255
|
+
**Built-in defaults** (`src/updater/symlink-registry.ts`):
|
|
256
|
+
|
|
257
|
+
| Installed hosanna-ui version | Symlinks under `src/` |
|
|
258
|
+
|---|---|
|
|
259
|
+
| >= 1.0.0 | `hosanna-bridge-http`, `hosanna-bridge-lib`, `hosanna-bridge-targets`, `hosanna-list`, `hosanna-ui` |
|
|
260
|
+
| >= 1.31.0 | the above + `hosanna-bridge-core` |
|
|
261
|
+
|
|
262
|
+
`hst env check` always prints the active set, the matched registry version, and the
|
|
263
|
+
source (`built-in`, `hosanna.json override`, `+ N extra`). `hst env fix`
|
|
264
|
+
creates missing links, repairs wrong targets, and removes obsolete ones — with
|
|
265
|
+
no git/network access when only symlinks are wrong. Symlinks are also re-synced
|
|
266
|
+
as part of every SDK update.
|
|
267
|
+
|
|
268
|
+
**Adding folders (`symlink-extra-folders`)** — the common customization. Appends
|
|
269
|
+
to the resolved defaults; cannot break them. Folder names are forgiving
|
|
270
|
+
(`"hosanna-game/"`, `"hosanna-game"`, and `"src/hosanna-game"` are equivalent):
|
|
271
|
+
|
|
272
|
+
```json
|
|
273
|
+
{
|
|
274
|
+
"git-url": "git@github.com:TantaWowa/hosanna-ui.git",
|
|
275
|
+
"sdk-version": "v1.31.0",
|
|
276
|
+
"symlink-extra-folders": ["hosanna-game/", "hosanna-game-examples/"]
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
Use this for game projects (`hosanna-game`, `hosanna-game-examples`) or when a
|
|
281
|
+
project wants the example rigs (`hosanna-ui-examples`). Removing an entry makes
|
|
282
|
+
its symlink obsolete; the next `env fix` cleans it up.
|
|
283
|
+
|
|
284
|
+
**Replacing the registry (`symlink-registry`)** — rare; total control. A valid
|
|
285
|
+
key fully replaces the built-in registry (extras still append on top). Folders
|
|
286
|
+
absent from the set become obsolete and are removed by `--fix`, so list
|
|
287
|
+
everything the project needs:
|
|
288
|
+
|
|
289
|
+
```json
|
|
290
|
+
{
|
|
291
|
+
"symlink-registry": {
|
|
292
|
+
"1.0.0": ["hosanna-bridge-http/", "hosanna-bridge-lib/", "hosanna-bridge-targets/", "hosanna-list/", "hosanna-ui/"],
|
|
293
|
+
"1.31.0": ["hosanna-bridge-http/", "hosanna-bridge-lib/", "hosanna-bridge-core/", "hosanna-bridge-targets/", "hosanna-list/", "hosanna-ui/"]
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
An invalid `symlink-registry`/`symlink-extra-folders` value falls back to the
|
|
299
|
+
built-in registry and is reported as an issue by `hst env check` — a typo cannot
|
|
300
|
+
silently break an install.
|
|
301
|
+
|
|
302
|
+
**Safety rules:**
|
|
303
|
+
- A registry folder that does not exist in the checkout is skipped with a
|
|
304
|
+
warning, never an error (older framework versions predate some folders).
|
|
305
|
+
- Obsolete cleanup only ever deletes **symlinks** at known framework paths
|
|
306
|
+
(registry union, extras, retired folders such as `src/hosanna-game`).
|
|
307
|
+
Real directories and files are never deleted; `env fix` reports them for
|
|
308
|
+
manual handling instead.
|
|
309
|
+
- `.gitignore` (via `env prepare-gitignore` or any SDK update) covers the union
|
|
310
|
+
of the built-in registry, any override, and any extras for the project.
|
|
216
311
|
|
|
217
|
-
### MCP Debugging Commands (`
|
|
218
|
-
- `
|
|
219
|
-
- `stop
|
|
312
|
+
### MCP Debugging Commands (`mcp:start`, `mcp:stop`) - AI Agent Debugging
|
|
313
|
+
- `mcp:start` - Start the Hosanna MCP server for AI agent debugging
|
|
314
|
+
- `mcp:stop` - Stop the Hosanna MCP server
|
|
220
315
|
|
|
221
|
-
**Cursor
|
|
316
|
+
**Cursor and MCP:** Cursor does not magically attach to a terminal `hst mcp:start`. Add Hosanna as a Command MCP server (project **`.cursor/mcp.json`** or **Cursor Settings → MCP → Add Custom MCP**) so Cursor spawns **`hosanna-mcp`** over stdio. Start the command debugger/app explicitly with `hst run --platform web`, `hst run --platform roku --target web`, or `hst run --platform roku --target device`.
|
|
222
317
|
|
|
223
318
|
### UI Test Commands (`test:*`) - UI Test Automation
|
|
224
319
|
- `test:ui` - Replay UI test recordings against a running Hosanna app
|
|
@@ -228,23 +323,39 @@ Shared options: `--file` (secrets path), `--template` (template path for `check`
|
|
|
228
323
|
|
|
229
324
|
```bash
|
|
230
325
|
# Development workflow
|
|
231
|
-
hst run
|
|
232
|
-
hst
|
|
233
|
-
hst
|
|
326
|
+
hst run --platform web # Start/reuse web dev services
|
|
327
|
+
hst run --platform roku --target web
|
|
328
|
+
hst run --platform roku --target simulated
|
|
329
|
+
hst run --platform roku --target emulated
|
|
330
|
+
hst run --platform ios --target simulator --device "iPhone 17 Pro"
|
|
331
|
+
hst run --platform ios --target device --device "George iPhone" --no-logs
|
|
332
|
+
hst run --platform android --target emulator --device "Pixel_8" --no-logs
|
|
333
|
+
hst run --platform android --target device --device "RF8M62694QT" --no-logs
|
|
334
|
+
hst run --platform android-tv --target emulator --device "Television_1080p" --no-logs
|
|
335
|
+
hst run --platform apple-tv --target simulator --device "Apple TV 4K"
|
|
336
|
+
hst run --platform roku --target device --device "Living Room"
|
|
337
|
+
hst run --platform roku --target device --device "Living Room" --replace
|
|
338
|
+
hst target:list --platform ios --target device --json
|
|
339
|
+
hst target:list --platform android --target emulator --json
|
|
340
|
+
hst target:list --platform android-tv --target emulator --json
|
|
341
|
+
hst target:list --platform apple-tv --target simulator --json
|
|
342
|
+
hst target:list --form-factor tv --json
|
|
343
|
+
hst generate:all --watch # Generate code with file watching
|
|
344
|
+
hst dev:start # Lower-level dev server command
|
|
234
345
|
|
|
235
346
|
# Building and packaging
|
|
236
347
|
hst roku:package --ip 192.168.1.10 # Package and deploy Roku app
|
|
237
348
|
hst generate:clean # Clean generated files
|
|
238
349
|
|
|
239
350
|
# Setup and installation
|
|
240
|
-
hst install
|
|
241
|
-
hst install
|
|
242
|
-
hst
|
|
351
|
+
hst sdk:install # Initialize Hosanna SDK
|
|
352
|
+
hst compiler:install # Install Hosanna compiler
|
|
353
|
+
hst template:create # Create new template app
|
|
243
354
|
|
|
244
355
|
# CI/CD operations
|
|
245
356
|
hst ci:extract-pkg-key myapp.pkg # Extract signing key for CI
|
|
246
357
|
hst build-config:restore-secrets
|
|
247
|
-
hst build-config
|
|
358
|
+
hst build-config:resolve --env prod --platform roku --out assets/meta/build-config.json
|
|
248
359
|
|
|
249
360
|
# Secrets (.secrets / .secrets.example)
|
|
250
361
|
hst secrets:list
|
|
@@ -254,13 +365,12 @@ hst secrets:exec -- npm run build
|
|
|
254
365
|
hst secrets:init
|
|
255
366
|
|
|
256
367
|
# Environment management
|
|
257
|
-
hst env
|
|
258
|
-
hst env
|
|
259
|
-
hst env:cloud-agent-setup --start-debugger --start-app
|
|
368
|
+
hst env fix # Check and fix environment issues
|
|
369
|
+
hst env prepare-gitignore # Update .gitignore
|
|
260
370
|
|
|
261
371
|
# MCP debugging (AI agent integration)
|
|
262
|
-
hst
|
|
263
|
-
hst
|
|
372
|
+
hst debugger:start # Start debug proxy (required)
|
|
373
|
+
hst mcp:start # Start MCP server for Cursor/Claude
|
|
264
374
|
|
|
265
375
|
# UI test automation
|
|
266
376
|
hst test:record --name "My test" # Record UI test interactively
|
|
@@ -283,7 +393,7 @@ Use **Type: Command** (not URL). Cursor spawns one long-lived process and speaks
|
|
|
283
393
|
| **Type** | **Command** |
|
|
284
394
|
| **Command** | `hosanna-mcp` if `@tantawowa/hosanna-tools` is on your `PATH` (e.g. `npm install -g` or project `node_modules/.bin`). Otherwise use **`npx`** and put the package + binary in **Arguments** (see JSON below). |
|
|
285
395
|
| **Arguments** | Usually empty when **Command** is `hosanna-mcp`. With `npx`: `-y --package=@tantawowa/hosanna-tools hosanna-mcp` (one token per argv if the UI supports a list; otherwise a single line matching the JSON `args` array). |
|
|
286
|
-
| **Environment** | Optional; defaults match `hst
|
|
396
|
+
| **Environment** | Optional; defaults match `hst debugger:start`. Use only if you use non-default ports. |
|
|
287
397
|
|
|
288
398
|
Equivalent **`~/.cursor/mcp.json`** or **`.cursor/mcp.json`** (project) entry:
|
|
289
399
|
|
|
@@ -317,20 +427,20 @@ Equivalent **`~/.cursor/mcp.json`** or **`.cursor/mcp.json`** (project) entry:
|
|
|
317
427
|
|-----|----------------|
|
|
318
428
|
| `HOSANNA_MANAGEMENT_PORT` | `59150` |
|
|
319
429
|
| `HOSANNA_MANAGEMENT_HOST` | `localhost` |
|
|
320
|
-
| `HOSANNA_EXTENSION_PORT` | `59153` (must match `hst
|
|
430
|
+
| `HOSANNA_EXTENSION_PORT` | `59153` (must match `hst debugger:start`) |
|
|
321
431
|
|
|
322
|
-
After saving, enable the server in the MCP list. **`hst
|
|
432
|
+
After saving, enable the server in the MCP list. **`hst mcp:start`** is still useful in a terminal for manual runs; Cursor agents use the configured MCP spawn instead.
|
|
323
433
|
|
|
324
434
|
### Quick Start
|
|
325
435
|
|
|
326
436
|
```bash
|
|
327
437
|
# 1. Start the debug proxy (required for both MCP and test automation)
|
|
328
|
-
hst
|
|
438
|
+
hst debugger:start
|
|
329
439
|
|
|
330
440
|
# 2. Start your Hosanna app with remote debugging enabled
|
|
331
441
|
|
|
332
442
|
# 3. For AI debugging (Cursor, Claude Code):
|
|
333
|
-
# Add MCP server (see "Cursor Settings → MCP" above) or hst
|
|
443
|
+
# Add MCP server (see "Cursor Settings → MCP" above) or hst mcp:start in a terminal
|
|
334
444
|
|
|
335
445
|
# 4. For UI test recording:
|
|
336
446
|
hst test:record --name "My test flow"
|
package/dist/build-info.json
CHANGED