@sylphx/cue 0.1.5 → 0.2.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 CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
  # Cue
4
4
 
5
- ### Timeline proof for agents
5
+ ### Timeline proof for agents
6
6
 
7
- **Cue** (transitional package `@sylphx/video-reader-mcp`) local video timeline evidence, not frame-by-frame VLM.
7
+ Canonical package: **`@sylphx/cue`** · bin **`cue`** · public tools: `read_video`, `video_evidence` only.
8
+
9
+ **Cue** (canonical package `@sylphx/cue`) — local video timeline evidence, not frame-by-frame VLM.
8
10
 
9
11
  <p align="center">
10
12
  <img src="https://mark.sylphx.com/api/v1/banner?type=mesh&theme=tokyonight&text=video+reader+mcp&desc=Evidence-first+video+reading+for+AI+agents+%E2%80%94+ffprobe%2C+subtitles%2C+scenes%2C+transcr&height=200&animation=rise&credit=0" alt="video-reader-mcp — Sylphx Mark banner" width="100%" />
@@ -16,7 +18,7 @@ Evidence-first video reading for AI agents. One call turns any local video into
16
18
  **timeline document** — ffprobe streams, chapters, embedded subtitles, scene
17
19
  boundaries, and warnings you can cite without frame-by-frame vision LLM calls.
18
20
 
19
- [![npm version](https://img.shields.io/npm/v/@sylphx/video-reader-mcp?style=flat-square)](https://www.npmjs.com/package/@sylphx/video-reader-mcp)
21
+ [![npm version](https://img.shields.io/npm/v/@sylphx/cue?style=flat-square)](https://www.npmjs.com/package/@sylphx/cue)
20
22
  [![License](https://img.shields.io/badge/License-MIT-blue?style=flat-square)](https://opensource.org/licenses/MIT)
21
23
  [![CI/CD](https://img.shields.io/github/actions/workflow/status/SylphxAI/video-reader-mcp/ci.yml?style=flat-square&label=CI/CD)](https://github.com/SylphxAI/video-reader-mcp/actions/workflows/ci.yml)
22
24
  [![TypeScript](https://img.shields.io/badge/TypeScript-7.0-blue.svg?style=flat-square)](https://www.typescriptlang.org/)
@@ -45,6 +47,8 @@ Spec: [docs/specs/agent-video-read-contract.md](docs/specs/agent-video-read-cont
45
47
 
46
48
  **Local-first frontier:** ffmpeg/ffprobe + structural keyframes, optional local whisper ASR. No cloud required.
47
49
 
50
+ Docs: [Cue→Iris semantic timeline](docs/compose-iris.md) — structural keyframes become timestamped objects via Iris L2.
51
+
48
52
  ## Product docs
49
53
 
50
54
  | Doc | Purpose |
@@ -86,15 +90,15 @@ not a slideshow summary.**
86
90
  ### Install (30 seconds)
87
91
 
88
92
  ```bash
89
- npm install -g @sylphx/video-reader-mcp
93
+ npm install -g @sylphx/cue
90
94
  cue doctor
91
- claude mcp add cue -- npx @sylphx/video-reader-mcp
95
+ claude mcp add cue -- npx @sylphx/cue
92
96
  ```
93
97
 
94
98
  **Install once. Call once.**
95
99
 
96
100
  ```bash
97
- claude mcp add video-reader -- npx @sylphx/video-reader-mcp
101
+ claude mcp add video-reader -- npx @sylphx/cue
98
102
  ```
99
103
 
100
104
  ```json
@@ -172,7 +176,7 @@ Supported formats: MP4, M4V, MKV, MOV, WebM, and other formats ffprobe can inspe
172
176
  ### Claude Code
173
177
 
174
178
  ```bash
175
- claude mcp add video-reader -- npx @sylphx/video-reader-mcp
179
+ claude mcp add video-reader -- npx @sylphx/cue
176
180
  ```
177
181
 
178
182
  ### Claude Desktop
@@ -184,7 +188,7 @@ Add this to `claude_desktop_config.json`:
184
188
  "mcpServers": {
185
189
  "video-reader": {
186
190
  "command": "npx",
187
- "args": ["@sylphx/video-reader-mcp"]
191
+ "args": ["@sylphx/cue"]
188
192
  }
189
193
  }
190
194
  }
@@ -193,13 +197,13 @@ Add this to `claude_desktop_config.json`:
193
197
  ### Any MCP Client
194
198
 
195
199
  ```bash
196
- npx @sylphx/video-reader-mcp
200
+ npx @sylphx/cue
197
201
  ```
198
202
 
199
203
  ### HTTP transport (optional)
200
204
 
201
205
  ```bash
202
- MCP_TRANSPORT=http MCP_HTTP_PORT=8080 npx @sylphx/video-reader-mcp
206
+ MCP_TRANSPORT=http MCP_HTTP_PORT=8080 npx @sylphx/cue
203
207
  ```
204
208
 
205
209
  ## Security model
@@ -246,7 +250,7 @@ when available on the runner.
246
250
  ## Support
247
251
 
248
252
  - [Issues](https://github.com/SylphxAI/video-reader-mcp/issues)
249
- - [npm package](https://www.npmjs.com/package/@sylphx/video-reader-mcp)
253
+ - [npm package](https://www.npmjs.com/package/@sylphx/cue)
250
254
  - Portfolio orchestration: [smart-reader-mcp](https://github.com/SylphxAI/smart-reader-mcp)
251
255
 
252
256
  ## Help this reach more builders
@@ -23,10 +23,10 @@ host_platform_key() {
23
23
 
24
24
  platform_package_name() {
25
25
  case "$(host_platform_key)" in
26
- darwin-arm64) printf '%s\n' '@sylphx/video-reader-mcp-darwin-arm64' ;;
27
- darwin-x64) printf '%s\n' '@sylphx/video-reader-mcp-darwin-x64' ;;
28
- linux-x64) printf '%s\n' '@sylphx/video-reader-mcp-linux-x64-gnu' ;;
29
- linux-arm64) printf '%s\n' '@sylphx/video-reader-mcp-linux-arm64-gnu' ;;
26
+ darwin-arm64) printf '%s\n' '@sylphx/cue-darwin-arm64' ;;
27
+ darwin-x64) printf '%s\n' '@sylphx/cue-darwin-x64' ;;
28
+ linux-x64) printf '%s\n' '@sylphx/cue-linux-x64-gnu' ;;
29
+ linux-arm64) printf '%s\n' '@sylphx/cue-linux-arm64-gnu' ;;
30
30
  *) return 1 ;;
31
31
  esac
32
32
  }
@@ -47,7 +47,7 @@ resolve_from_optional_dep() {
47
47
  "$PACKAGE_ROOT/../../node_modules"
48
48
  )
49
49
  for root in "${search_roots[@]}"; do
50
- candidate="$root/$pkg_name/video-reader-mcp-server"
50
+ candidate="$root/$pkg_name/cue-mcp-server"
51
51
  if is_runnable_native "$candidate"; then
52
52
  printf '%s\n' "$candidate"
53
53
  return 0
@@ -61,7 +61,7 @@ resolve_from_optional_dep() {
61
61
  const { createRequire } = require('node:module');
62
62
  const r = createRequire(p.join(process.argv[1], 'package.json'));
63
63
  const pkg = r.resolve(process.argv[2] + '/package.json');
64
- process.stdout.write(p.join(p.dirname(pkg), 'video-reader-mcp-server'));
64
+ process.stdout.write(p.join(p.dirname(pkg), 'cue-mcp-server'));
65
65
  } catch { process.exit(1); }
66
66
  " "$PACKAGE_ROOT" "$pkg_name" 2>/dev/null || true
67
67
  )"
@@ -74,8 +74,8 @@ resolve_from_optional_dep() {
74
74
  }
75
75
 
76
76
  resolve_rust_bin() {
77
- if [[ -n "${VIDEO_READER_MCP_RUST_BIN:-}" && -x "${VIDEO_READER_MCP_RUST_BIN}" ]]; then
78
- printf '%s\n' "${VIDEO_READER_MCP_RUST_BIN}"
77
+ if [[ -n "${CUE_RUST_BIN:-}" && -x "${CUE_RUST_BIN}" ]]; then
78
+ printf '%s\n' "${CUE_RUST_BIN}"
79
79
  return 0
80
80
  fi
81
81
  if bin="$(resolve_from_optional_dep)"; then
@@ -83,9 +83,9 @@ resolve_rust_bin() {
83
83
  return 0
84
84
  fi
85
85
  for candidate in \
86
- "$PACKAGE_ROOT/bin/native/video-reader-mcp-server" \
87
- "$PACKAGE_ROOT/target/release/video-reader-mcp-server" \
88
- "$PACKAGE_ROOT/target/debug/video-reader-mcp-server"; do
86
+ "$PACKAGE_ROOT/bin/native/cue-mcp-server" \
87
+ "$PACKAGE_ROOT/target/release/cue-mcp-server" \
88
+ "$PACKAGE_ROOT/target/debug/cue-mcp-server"; do
89
89
  if is_runnable_native "$candidate"; then
90
90
  printf '%s\n' "$candidate"
91
91
  return 0
package/package.json CHANGED
@@ -1,19 +1,18 @@
1
1
  {
2
2
  "name": "@sylphx/cue",
3
- "version": "0.1.5",
4
- "mcpName": "io.github.SylphxAI/video-reader-mcp",
5
- "description": "Cue Evidence-first video reading for AI agents ffprobe, subtitles, scenes, transcripts, and timelines without frame-by-frame LLM vision. (brand alias of @sylphx/video-reader-mcp)",
3
+ "version": "0.2.0",
4
+ "mcpName": "io.github.SylphxAI/cue",
5
+ "description": "Cue \u2014 timeline proof for agents. Local video evidence (ffprobe, subtitles, scenes) via MCP/CLI/SDK. Not frame-by-frame VLM.",
6
6
  "type": "module",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
10
10
  "license": "MIT",
11
11
  "bin": {
12
- "video-reader-mcp": "./bin/video-reader-mcp",
13
- "cue": "./bin/video-reader-mcp"
12
+ "cue": "./bin/cue"
14
13
  },
15
14
  "files": [
16
- "bin/video-reader-mcp",
15
+ "bin/cue",
17
16
  "dist/",
18
17
  "README.md",
19
18
  "LICENSE",
@@ -21,8 +20,7 @@
21
20
  ],
22
21
  "exports": {
23
22
  ".": "./dist/doctor-cli.js",
24
- "./sdk": "./src/sdk.ts",
25
- "./cue": "./src/sdk.ts"
23
+ "./sdk": "./src/sdk.ts"
26
24
  },
27
25
  "repository": {
28
26
  "type": "git",
@@ -54,13 +52,15 @@
54
52
  "check:fix": "biome check --write .",
55
53
  "sync:server-json": "bun scripts/sync-server-json.ts",
56
54
  "version-packages": "changeset version && bun run sync:server-json",
57
- "start": "./bin/video-reader-mcp",
55
+ "start": "./bin/cue",
58
56
  "clean": "rm -rf dist coverage",
57
+ "prepublishOnly": "bun run clean && bun run build && bun run build:rust",
59
58
  "release": "bun run typecheck && bun run check && bun run build && bun test && changeset publish",
60
59
  "doctor": "bun run src/doctor-cli.ts",
61
60
  "benchmark:release-gate": "bun scripts/release-gate.ts",
62
61
  "benchmark:public-proof": "bun scripts/public-proof.ts",
63
- "brand:pack-plan": "bun scripts/brand-pack-plan.ts"
62
+ "brand:pack-plan": "bun scripts/brand-pack-plan.ts",
63
+ "compose:iris": "bun scripts/compose-iris.ts"
64
64
  },
65
65
  "dependencies": {
66
66
  "@modelcontextprotocol/sdk": "^1.29.0",
@@ -77,9 +77,9 @@
77
77
  "packageManager": "bun@1.3.12",
78
78
  "private": false,
79
79
  "optionalDependencies": {
80
- "@sylphx/video-reader-mcp-darwin-arm64": "0.1.5",
81
- "@sylphx/video-reader-mcp-darwin-x64": "0.1.5",
82
- "@sylphx/video-reader-mcp-linux-x64-gnu": "0.1.5",
83
- "@sylphx/video-reader-mcp-linux-arm64-gnu": "0.1.5"
80
+ "@sylphx/cue-darwin-arm64": "0.2.0",
81
+ "@sylphx/cue-darwin-x64": "0.2.0",
82
+ "@sylphx/cue-linux-x64-gnu": "0.2.0",
83
+ "@sylphx/cue-linux-arm64-gnu": "0.2.0"
84
84
  }
85
- }
85
+ }
@@ -0,0 +1,29 @@
1
+ export interface ComposedKeyframeObject {
2
+ id: string;
3
+ label: string;
4
+ category?: string | undefined;
5
+ bbox?: { x: number; y: number; width: number; height: number } | undefined;
6
+ score?: number | undefined;
7
+ mask_ref?: string | null | undefined;
8
+ }
9
+
10
+ export interface ComposedKeyframe {
11
+ time_ms: number;
12
+ frame: string;
13
+ semantics_available: boolean;
14
+ skipped_reason?: string | undefined;
15
+ objects: ComposedKeyframeObject[];
16
+ caption?: string | undefined;
17
+ model?: string | undefined;
18
+ }
19
+
20
+ export interface ComposedIrisResult {
21
+ policy: 'cue_compose_iris_v1';
22
+ video: string;
23
+ keyframe_policy: string;
24
+ generated_at: string;
25
+ keyframe_count: number;
26
+ total_objects: number;
27
+ keyframes: ComposedKeyframe[];
28
+ warnings: string[];
29
+ }