ff1-cli 1.0.1 → 1.0.3
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 +12 -2
- package/config.json.example +11 -9
- package/dist/index.js +271 -82
- package/dist/src/ai-orchestrator/index.js +62 -5
- package/dist/src/config.js +16 -38
- package/dist/src/intent-parser/index.js +58 -16
- package/dist/src/intent-parser/utils.js +5 -2
- package/dist/src/logger.js +10 -0
- package/dist/src/utilities/ff1-compatibility.js +269 -0
- package/dist/src/utilities/ff1-device.js +9 -27
- package/dist/src/utilities/ff1-discovery.js +147 -0
- package/dist/src/utilities/functions.js +8 -26
- package/dist/src/utilities/index.js +9 -3
- package/dist/src/utilities/playlist-send.js +36 -17
- package/dist/src/utilities/playlist-source.js +77 -0
- package/dist/src/utilities/ssh-access.js +145 -0
- package/docs/CONFIGURATION.md +22 -8
- package/docs/EXAMPLES.md +5 -1
- package/docs/README.md +24 -4
- package/docs/RELEASING.md +33 -4
- package/package.json +3 -10
package/docs/README.md
CHANGED
|
@@ -49,7 +49,7 @@ See the full configuration reference here: `./CONFIGURATION.md`.
|
|
|
49
49
|
"gemini": {
|
|
50
50
|
"apiKey": "your-gemini-key-here",
|
|
51
51
|
"baseURL": "https://generativelanguage.googleapis.com/v1beta/openai/",
|
|
52
|
-
"model": "gemini-2.
|
|
52
|
+
"model": "gemini-2.5-flash",
|
|
53
53
|
"supportsFunctionCalling": true
|
|
54
54
|
}
|
|
55
55
|
},
|
|
@@ -57,7 +57,7 @@ See the full configuration reference here: `./CONFIGURATION.md`.
|
|
|
57
57
|
"playlist": {
|
|
58
58
|
"privateKey": "your_ed25519_private_key_base64_here"
|
|
59
59
|
},
|
|
60
|
-
"feed": { "baseURLs": ["https://feed.
|
|
60
|
+
"feed": { "baseURLs": ["https://dp1-feed-operator-api-prod.autonomy-system.workers.dev/api/v1"] },
|
|
61
61
|
"ff1Devices": {
|
|
62
62
|
"devices": [
|
|
63
63
|
{
|
|
@@ -128,13 +128,15 @@ Notes:
|
|
|
128
128
|
- Options: `-o, --output <file>`, `-v, --verbose`
|
|
129
129
|
- `play <url>` – Send a media URL directly to an FF1 device
|
|
130
130
|
- Options: `-d, --device <name>`, `--skip-verify`
|
|
131
|
-
- `validate <file>` / `verify <file>` – Validate a DP1 playlist file
|
|
131
|
+
- `validate <file-or-url>` / `verify <file-or-url>` – Validate a DP1 playlist file
|
|
132
132
|
- `sign <file>` – Sign playlist with Ed25519
|
|
133
133
|
- Options: `-k, --key <base64>`, `-o, --output <file>`
|
|
134
|
-
- `send <file>` – Send playlist to an FF1 device
|
|
134
|
+
- `send <file>` – Send a local or hosted DP-1 playlist to an FF1 device
|
|
135
135
|
- Options: `-d, --device <name>`, `--skip-verify`
|
|
136
136
|
- `publish <file>` – Publish a playlist to a feed server
|
|
137
137
|
- Options: `-s, --server <index>` (server index if multiple configured)
|
|
138
|
+
- `ssh <enable|disable>` – Manage SSH access on an FF1 device
|
|
139
|
+
- Options: `-d, --device <name>`, `--pubkey <path>`, `--ttl <duration>`
|
|
138
140
|
- `config <init|show|validate>` – Manage configuration
|
|
139
141
|
|
|
140
142
|
## Usage Highlights
|
|
@@ -205,10 +207,28 @@ npm run dev -- sign playlist.json -o signed.json
|
|
|
205
207
|
# Send to device (verifies by default)
|
|
206
208
|
npm run dev -- send playlist.json -d "Living Room Display"
|
|
207
209
|
|
|
210
|
+
# The send path now performs a compatibility preflight check against the target FF1.
|
|
211
|
+
# If the device reports an unsupported FF1 OS version, the command fails with
|
|
212
|
+
# a clear version message before any cast request is sent.
|
|
213
|
+
# Send a hosted DP-1 playlist
|
|
214
|
+
npm run dev -- send "https://cdn.example.com/playlist.json" -d "Living Room Display"
|
|
215
|
+
|
|
208
216
|
# Play a direct URL
|
|
209
217
|
npm run dev -- play "https://example.com/video.mp4" -d "Living Room Display" --skip-verify
|
|
210
218
|
```
|
|
211
219
|
|
|
220
|
+
### SSH access
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# Enable SSH access for 30 minutes
|
|
224
|
+
ff1 ssh enable --pubkey ~/.ssh/id_ed25519.pub --ttl 30m -d "Living Room Display"
|
|
225
|
+
|
|
226
|
+
# Disable SSH access
|
|
227
|
+
ff1 ssh disable -d "Living Room Display"
|
|
228
|
+
|
|
229
|
+
# `ff1 ssh` also performs the same FF1 OS compatibility preflight used by `send`.
|
|
230
|
+
```
|
|
231
|
+
|
|
212
232
|
### Publish to feed server
|
|
213
233
|
|
|
214
234
|
```bash
|
package/docs/RELEASING.md
CHANGED
|
@@ -4,16 +4,45 @@ The curl installer downloads prebuilt binaries from GitHub Releases. Build one a
|
|
|
4
4
|
|
|
5
5
|
## Build a Release Asset (local)
|
|
6
6
|
|
|
7
|
+
**macOS / Linux:**
|
|
8
|
+
|
|
7
9
|
```bash
|
|
8
10
|
./scripts/release/build-asset.sh
|
|
9
11
|
```
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
**Windows (PowerShell):**
|
|
14
|
+
|
|
15
|
+
```powershell
|
|
16
|
+
.\scripts\release\build-asset-windows.ps1
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
This produces (names vary by OS/arch):
|
|
20
|
+
|
|
21
|
+
- `release/ff1-cli-darwin-arm64.tar.gz` (and `.sha256`) on macOS
|
|
22
|
+
- `release/ff1-cli-linux-x64.tar.gz` (and `.sha256`) on Linux
|
|
23
|
+
- `release/ff1-cli-windows-x64.zip` (and `.sha256`) on Windows
|
|
24
|
+
|
|
25
|
+
Run the appropriate script on each target platform and upload each pair to the GitHub release.
|
|
26
|
+
|
|
27
|
+
## GitHub Actions
|
|
12
28
|
|
|
13
|
-
- `
|
|
14
|
-
- `release
|
|
29
|
+
- **Build** (`build.yml`): Trigger manually (Actions → Build → Run workflow) or on pull requests. Builds binaries on macOS, Linux, and Windows and uploads them as workflow artifacts for download.
|
|
30
|
+
- **Release** (`release.yml`): Triggered when you **publish a release** (create a release from the repo Releases page, or publish an existing draft). Validates that `package.json` matches the tag, publishes to npm, builds binaries, then uploads them to that release. Pushing a tag alone does not run this; only creating/publishing a release does.
|
|
31
|
+
|
|
32
|
+
## npm Publish Requirements
|
|
33
|
+
|
|
34
|
+
- Set `NPM_TOKEN` in GitHub Actions secrets with an npm automation token.
|
|
35
|
+
- Ensure `package.json` version matches the release tag (e.g. tag `1.0.2` → `"version": "1.0.2"`). The release job fails fast when they differ.
|
|
36
|
+
|
|
37
|
+
## Installer Redirect
|
|
38
|
+
|
|
39
|
+
`https://feralfile.com/ff1-cli-install` should redirect to:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
https://raw.githubusercontent.com/feral-file/ff1-cli/main/scripts/install.sh
|
|
43
|
+
```
|
|
15
44
|
|
|
16
|
-
The
|
|
45
|
+
The installer script then fetches the release assets from GitHub Releases.
|
|
17
46
|
|
|
18
47
|
## Environment Overrides
|
|
19
48
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ff1-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "CLI to fetch NFT information and build DP1 playlists using Grok API",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"start": "node dist/index.js",
|
|
22
22
|
"dev": "tsx index.ts",
|
|
23
23
|
"prepublishOnly": "npm run build",
|
|
24
|
-
"test": "
|
|
24
|
+
"test": "tsx tests/ff1-compatibility.test.ts",
|
|
25
25
|
"lint": "eslint .",
|
|
26
26
|
"lint:fix": "eslint . --fix",
|
|
27
27
|
"format": "prettier --write \"**/*.{js,ts}\"",
|
|
@@ -43,24 +43,17 @@
|
|
|
43
43
|
"author": "",
|
|
44
44
|
"license": "MIT",
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@lancedb/lancedb": "^0.22.1",
|
|
47
|
-
"@mozilla/readability": "^0.6.0",
|
|
48
|
-
"@xenova/transformers": "^2.17.2",
|
|
49
46
|
"axios": "^1.6.2",
|
|
47
|
+
"bonjour-service": "^1.3.0",
|
|
50
48
|
"chalk": "^4.1.2",
|
|
51
|
-
"cheerio": "^1.0.0-rc.12",
|
|
52
49
|
"commander": "^11.1.0",
|
|
53
50
|
"dotenv": "^16.3.1",
|
|
54
51
|
"dp1-js": "^1.1.0",
|
|
55
52
|
"fuzzysort": "^3.1.0",
|
|
56
|
-
"jsdom": "^27.0.0",
|
|
57
53
|
"openai": "^4.58.1",
|
|
58
|
-
"ora": "^5.4.1",
|
|
59
|
-
"puppeteer": "^24.22.3",
|
|
60
54
|
"viem": "^2.38.2"
|
|
61
55
|
},
|
|
62
56
|
"devDependencies": {
|
|
63
|
-
"@types/jsdom": "^27.0.0",
|
|
64
57
|
"@types/node": "^24.7.1",
|
|
65
58
|
"@typescript-eslint/eslint-plugin": "^8.46.0",
|
|
66
59
|
"@typescript-eslint/parser": "^8.46.0",
|