Skip to content

Commit ee50879

Browse files
committed
rename: scene-views → scenecast
The package is about views/rendering, but "scene-views" reads as inventory not capability. "scenecast" carries triple meaning — type cast, theatrical cast, broadcast — and matches the scenegrad/scenebench brand family (no dash). - package.json name → scenecast - README, src docstrings, gallery, fixtures swept - vendor extension framing sharpened: scenecast core ships canonical types only; benchmark repos like scenebench deliver scenecast extensions for their domains
1 parent 7d9ad44 commit ee50879

9 files changed

Lines changed: 63 additions & 66 deletions

File tree

README.md

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# scene-views
1+
# scenecast
22

3-
> One asset definition. One typed JSON shape. Many rendering targets. The agent's view of the world, rendered for any surface.
3+
> One asset definition. One typed JSON shape. Many rendering targets. The agent's view of the world, cast onto any surface.
44
55
Typed asset shapes + visual + headless **views** for AI agents. Authors return **WidgetData** JSON per size; the framework converts:
66

@@ -11,22 +11,22 @@ Typed asset shapes + visual + headless **views** for AI agents. Authors return *
1111

1212
Ships with **6 canonical types** in core — abstract primitives any vendor can implement: **Email**, **Message**, **Contact**, **Event**, **Task**, **Document**. Plus a library of widget primitives (Table, Metric, List, KeyValue, Calendar, Status, Document, Image, Plan, Stack).
1313

14-
Vendor implementations (Gmail, Slack, Salesforce, SAP S/4HANA, etc.) live in **benchmark-scoped repos** like [`scene-bench`](https://github.com/daslabhq/scene-bench), where they belong with the benchmarks they came from. Each benchmark gets a magnet URL on `daslab.dev` (e.g. `daslab.dev/labs/automationbench`, `daslab.dev/s4bench`) showing its tasks, vendor schemas, and a leaderboard — scrubbable and scored.
14+
**Vendor extensions ship with benchmarks, not core.** Gmail, Slack, Salesforce, SAP S/4HANA — these live in **benchmark-scoped repos** like [`scenebench`](https://github.com/daslabhq/scenebench), which delivers scenecast extensions for every vendor in its benchmark domain. Each benchmark gets a magnet URL on `daslab.dev` (e.g. `daslab.dev/labs/automationbench`, `daslab.dev/s4bench`) showing its tasks, vendor schemas, and a leaderboard — scrubbable and scored.
1515

1616
Vendor types declare `extends: ["email/mailbox"]` etc. — tools that consume canonical types work uniformly across all vendors that implement them.
1717

18-
**[Live gallery →](https://daslabhq.github.io/scene-views/)**
18+
**[Live gallery →](https://daslabhq.github.io/scenecast/)**
1919

2020
## Install
2121

2222
```bash
23-
npm install scene-views
23+
npm install scenecast
2424
```
2525

2626
## Use
2727

2828
```ts
29-
import { Email } from "scene-views";
29+
import { Email } from "scenecast";
3030

3131
const inboxState = { messages: await fetchInbox() }; // any vendor — Gmail, Outlook, IMAP, …
3232

@@ -52,14 +52,14 @@ Today most agents do one of two things with their world state, and both are bad:
5252
1. **Dump raw JSON into the context** — wastes tokens, hurts comprehension, makes long-running agents expensive
5353
2. **Hand-write a custom summarizer per app** — every team rebuilds Gmail-summarize, Salesforce-summarize, Stripe-summarize, … — none consistent, none shared
5454

55-
scene-views gives you **one definition, three rendering targets, ten apps batteries-included.** Lazy users get good defaults. Power users override per view.
55+
scenecast gives you **one definition, three rendering targets, ten apps batteries-included.** Lazy users get good defaults. Power users override per view.
5656

5757
## API
5858

5959
### `defineAsset({ type, schema, defaultView, … })`
6060

6161
```ts
62-
import { defineAsset, defineView } from "scene-views";
62+
import { defineAsset, defineView } from "scenecast";
6363

6464
const Gmail = defineAsset({
6565
type: "gmail/account",
@@ -93,7 +93,7 @@ const GmailInboxView = defineView<GmailState>({
9393
Most asset views compose a small library of generic primitives:
9494

9595
```ts
96-
import { primitives } from "scene-views";
96+
import { primitives } from "scenecast";
9797

9898
const { TableView, MetricView, ListView, KeyValueView,
9999
CalendarView, StatusView, DocumentView, ImageView, PlanView } = primitives;
@@ -112,18 +112,13 @@ Each primitive ships HTML + Markdown out of the box.
112112
When emitting trace events with [scene-otel](https://github.com/daslabhq/scene-otel), pass the asset directly — the schema becomes the type contract for the snapshot, and the default view powers the scrubber's rendering automatically:
113113

114114
```ts
115-
import { Gmail } from "scene-views";
115+
import { Gmail } from "scenecast";
116116
import { scene } from "scene-otel";
117117

118118
scene.set(Gmail.type, world.gmail); // schema-validated emit
119-
scene.intent(Gmail.type, { tool: "gmail_send_email", args });
120-
scene.milestone("inbox_clean", {
121-
asset: Gmail.type,
122-
must_satisfy: { count: { unread: 0 } },
123-
});
124119
```
125120

126-
The scene-otel scrubber auto-detects registered scene-views assets and renders cards with the asset's default view.
121+
The scene-otel scrubber auto-detects registered scenecast assets and renders cards with the asset's default view.
127122

128123
## Schemas
129124

@@ -153,6 +148,8 @@ MIT. See [LICENSE](./LICENSE).
153148

154149
## Related
155150

156-
- [`scene-otel`](https://github.com/daslabhq/scene-otel) — wire format for snapshotting agent state to OTel events. Pairs naturally — scene-views renders what scene-otel snapshots.
151+
- [`scene-otel`](https://github.com/daslabhq/scene-otel) — wire format for snapshotting agent state to OTel events. Pairs naturally — scenecast renders what scene-otel snapshots.
152+
- [`scenebench`](https://github.com/daslabhq/scenebench) — open harness for running, measuring, and visualizing agent benchmarks. Vendor types are authored with scenecast.
153+
- [`scenegrad`](https://github.com/daslabhq/scenegrad) — runtime goal assertions for agents. Scenecast schemas describe what is; scenegrad asserts what must be.
157154
- [`agent-otel`](https://github.com/mirkokiefer/agent-otel) — OTel router for agent telemetry.
158155
- [`autocompile`](https://github.com/mirkokiefer/autocompile) — observes repeated agent runs, compiles invariant parts to code.

gallery/build.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -426,17 +426,17 @@ const html = `<!DOCTYPE html>
426426
<head>
427427
<meta charset="UTF-8">
428428
<meta name="viewport" content="width=device-width,initial-scale=1">
429-
<title>scene-state · view gallery</title>
429+
<title>scenecast · view gallery</title>
430430
<style>${css}</style>
431431
</head>
432432
<body>
433433
<header>
434434
<div class="header-inner">
435435
<div>
436-
<div class="brand">scene-state <small>· view gallery</small></div>
436+
<div class="brand">scenecast <small>· view gallery</small></div>
437437
<div class="subtitle">One asset definition · three rendering targets · the agent's view of the world.</div>
438438
</div>
439-
<a class="gh-link" href="https://github.com/daslabhq/scene-state">GitHub →</a>
439+
<a class="gh-link" href="https://github.com/daslabhq/scenecast">GitHub →</a>
440440
</div>
441441
</header>
442442
<main>
@@ -450,9 +450,9 @@ const html = `<!DOCTYPE html>
450450
451451
<div class="intro">
452452
<h2>What you're looking at</h2>
453-
<p>Each card below is one <code>defineAsset()</code> declaration from the scene-state library. Every asset comes with a default <code>view</code> that renders state at <b>five sizes</b> (icon · small · medium · large · xlarge — modeled on Apple WidgetKit + Daslab's <code>WidgetSize</code>) and <b>three formats</b> (HTML · Markdown · Text).</p>
453+
<p>Each card below is one <code>defineAsset()</code> declaration from the scenecast library. Every asset comes with a default <code>view</code> that renders state at <b>five sizes</b> (icon · small · medium · large · xlarge — modeled on Apple WidgetKit + Daslab's <code>WidgetSize</code>) and <b>three formats</b> (HTML · Markdown · Text).</p>
454454
<p>Same definition. Different consumers. The Markdown version is typically <b>3–5× cheaper in tokens</b> than dumping raw JSON. The icon version is ~95% cheaper.</p>
455-
<p>Vendor implementations (Gmail, Slack, Salesforce, SAP S/4HANA, …) live in benchmark-scoped repos like <a href="https://github.com/daslabhq/scene-bench">scene-bench</a>. Each benchmark owns its vendor types, scrubbable + scored at <a href="https://daslab.dev">daslab.dev</a>.</p>
455+
<p>Vendor implementations (Gmail, Slack, Salesforce, SAP S/4HANA, …) ship from benchmark-scoped repos like <a href="https://github.com/daslabhq/scenebench">scenebench</a> as scenecast extensions for that benchmark's domain. Each benchmark owns its vendor types, scrubbable + scored at <a href="https://daslab.dev">daslab.dev</a>.</p>
456456
<div class="toc">
457457
<span class="toc-section">Canonical:</span>
458458
${canonicalCards.map(c => `<a href="#${c.name.toLowerCase()}">${c.name}</a>`).join("")}
@@ -464,7 +464,7 @@ const html = `<!DOCTYPE html>
464464
${canonicalCards.map(cardHtml).join("")}
465465
</main>
466466
<footer>
467-
scene-state · MIT · <a href="https://github.com/daslabhq/scene-state">github.com/daslabhq/scene-state</a> · ${canonicalCards.length} canonical types
467+
scenecast · MIT · <a href="https://github.com/daslabhq/scenecast">github.com/daslabhq/scenecast</a> · ${canonicalCards.length} canonical types
468468
</footer>
469469
<script>
470470
// Format tabs — flip data-format on the strip below each tabs control

0 commit comments

Comments
 (0)