@agent-native/core 0.84.21 → 0.84.23
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/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +16 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/model-config.ts +1 -1
- package/corpus/core/src/cli/skills.ts +17 -3
- package/corpus/core/src/client/AssistantChat.tsx +27 -4
- package/corpus/core/src/client/guided-questions.tsx +11 -6
- package/corpus/core/src/client/tool-display.ts +8 -0
- package/corpus/core/src/file-upload/builder.ts +7 -2
- package/corpus/core/src/notifications/channels.ts +235 -38
- package/corpus/core/src/notifications/index.ts +1 -0
- package/corpus/core/src/notifications/registry.ts +13 -1
- package/corpus/core/src/server/analytics.ts +32 -6
- package/corpus/core/src/server/ssr-handler.ts +31 -12
- package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/analytics/AGENTS.md +21 -0
- package/corpus/templates/analytics/README.md +35 -0
- package/corpus/templates/analytics/actions/delete-analytics-alert-rule.ts +23 -0
- package/corpus/templates/analytics/actions/list-analytics-alert-rules.ts +20 -0
- package/corpus/templates/analytics/actions/run-analytics-alerts.ts +23 -0
- package/corpus/templates/analytics/actions/save-analytics-alert-rule.ts +69 -0
- package/corpus/templates/analytics/changelog/2026-07-01-analytics-can-alert-when-first-party-events-spike.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-01-session-replays-play-back-in-production-instead-of-showing.md +6 -0
- package/corpus/templates/analytics/netlify.toml +3 -0
- package/corpus/templates/analytics/scripts/emit-netlify-dashboard-report-cron.ts +126 -0
- package/corpus/templates/analytics/server/db/schema.ts +55 -0
- package/corpus/templates/analytics/server/handlers/session-replay.ts +5 -2
- package/corpus/templates/analytics/server/jobs/analytics-alerts.ts +74 -0
- package/corpus/templates/analytics/server/lib/analytics-alerts.ts +803 -0
- package/corpus/templates/analytics/server/lib/session-replay.ts +10 -3
- package/corpus/templates/analytics/server/plugins/analytics-alert-jobs.ts +54 -0
- package/corpus/templates/analytics/server/plugins/db.ts +100 -0
- package/corpus/templates/analytics/server/routes/api/analytics-alerts/run.post.ts +60 -0
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/assets/README.md +30 -8
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/brain/README.md +20 -552
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/calendar/README.md +22 -28
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/chat/README.md +32 -0
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/clips/.agents/skills/recording/SKILL.md +30 -1
- package/corpus/templates/clips/README.md +37 -0
- package/corpus/templates/clips/actions/finalize-recording.ts +84 -4
- package/corpus/templates/clips/actions/lib/ensure-seekable-video.ts +256 -0
- package/corpus/templates/clips/actions/reprocess-recording.ts +160 -0
- package/corpus/templates/clips/app/components/library/library-grid.tsx +18 -7
- package/corpus/templates/clips/app/components/library/recording-card.tsx +42 -5
- package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +41 -1
- package/corpus/templates/clips/changelog/2026-07-01-move-to-folder-now-opens-folder-choices-directly-instead-of.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-01-shared-clips-now-start-playing-and-scrub-instantly-instead-o.md +6 -0
- package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -1
- package/corpus/templates/clips/server/lib/video-remux.ts +222 -0
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +37 -0
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/content/AGENTS.md +7 -3
- package/corpus/templates/content/README.md +22 -34
- package/corpus/templates/content/actions/list-trashed-content-databases.ts +4 -0
- package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +58 -6
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +257 -24
- package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +41 -15
- package/corpus/templates/content/app/i18n/zh-TW.ts +25 -7
- package/corpus/templates/content/app/i18n-data.ts +278 -40
- package/corpus/templates/content/changelog/2026-06-30-database-once-again-creates-an-inline-database-in-the-curren.md +6 -0
- package/corpus/templates/content/shared/api.ts +1 -0
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +75 -19
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/design/AGENTS.md +7 -6
- package/corpus/templates/design/README.md +33 -0
- package/corpus/templates/design/actions/delete-file.ts +86 -10
- package/corpus/templates/design/actions/get-design-snapshot.ts +13 -0
- package/corpus/templates/design/actions/present-design-variants.ts +11 -13
- package/corpus/templates/design/app/hooks/use-question-flow.ts +2 -2
- package/corpus/templates/design/app/pages/DesignEditor.tsx +13 -3
- package/corpus/templates/design/changelog/2026-07-01-design-chat-no-longer-shows-an-empty-state-selection-chip-in-the-composer.md +6 -0
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/dispatch/README.md +34 -0
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/forms/README.md +34 -0
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/macros/README.md +28 -0
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/mail/README.md +35 -0
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/plan/README.md +30 -118
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/slides/README.md +34 -0
- package/corpus/templates/videos/.agents/skills/frontend-design/SKILL.md +2 -0
- package/corpus/templates/videos/README.md +22 -201
- package/dist/agent/model-config.js +1 -1
- package/dist/agent/model-config.js.map +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +17 -3
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +28 -4
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/guided-questions.d.ts.map +1 -1
- package/dist/client/guided-questions.js +10 -6
- package/dist/client/guided-questions.js.map +1 -1
- package/dist/client/tool-display.d.ts.map +1 -1
- package/dist/client/tool-display.js +8 -0
- package/dist/client/tool-display.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/file-upload/builder.d.ts.map +1 -1
- package/dist/file-upload/builder.js +6 -2
- package/dist/file-upload/builder.js.map +1 -1
- package/dist/notifications/channels.d.ts +10 -0
- package/dist/notifications/channels.d.ts.map +1 -1
- package/dist/notifications/channels.js +172 -20
- package/dist/notifications/channels.js.map +1 -1
- package/dist/notifications/index.d.ts +1 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +1 -1
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/registry.d.ts +5 -0
- package/dist/notifications/registry.d.ts.map +1 -1
- package/dist/notifications/registry.js +4 -1
- package/dist/notifications/registry.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/server/analytics.d.ts +16 -0
- package/dist/server/analytics.d.ts.map +1 -1
- package/dist/server/analytics.js +30 -7
- package/dist/server/analytics.js.map +1 -1
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +28 -12
- package/dist/server/ssr-handler.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +2 -0
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +2 -0
- package/package.json +1 -1
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +2 -0
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +2 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Mail
|
|
2
|
+
|
|
3
|
+
An open-source, agent-native alternative to Superhuman. An agent-powered,
|
|
4
|
+
keyboard-first email client for Gmail — the agent can read, draft, send, and
|
|
5
|
+
organize email for you, and the codebase is yours to own.
|
|
6
|
+
|
|
7
|
+
**Live app: [mail.agent-native.com](https://mail.agent-native.com)**
|
|
8
|
+
|
|
9
|
+
Connect one or more Gmail accounts and drive a fast, keyboard-first inbox
|
|
10
|
+
yourself, or ask the agent to do anything you can. The agent always knows which
|
|
11
|
+
view you're in and which thread is open, so "archive this" just works.
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- Keyboard-first triage (`J`/`K` to move, `E` to archive, `R` to reply, `C` to compose).
|
|
16
|
+
- Multiple Gmail accounts in one inbox.
|
|
17
|
+
- Ask the agent to summarize, draft, reply, archive, or bulk-clean your inbox.
|
|
18
|
+
- Natural-language auto-triage rules (label, archive, mark read, star, trash).
|
|
19
|
+
- Open and click tracking on emails you send.
|
|
20
|
+
- Search across every connected inbox with one query.
|
|
21
|
+
- Queue drafts for review from teammates or Slack.
|
|
22
|
+
|
|
23
|
+
## Develop locally
|
|
24
|
+
|
|
25
|
+
Scaffold your own copy and run it:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx @agent-native/core@latest create my-mail --standalone --template mail
|
|
29
|
+
cd my-mail
|
|
30
|
+
pnpm install
|
|
31
|
+
pnpm dev
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Connecting Gmail in dev needs a Google OAuth client — see the docs for setup.
|
|
35
|
+
Full docs: [agent-native.com/docs/template-mail](https://agent-native.com/docs/template-mail).
|
|
@@ -53,6 +53,8 @@ Default to Apple/Linear-level restraint: make the primary workflow obvious, then
|
|
|
53
53
|
- **Visual assets**: Websites, games, and object-focused pages need real or generated media when images help users understand the subject.
|
|
54
54
|
- **Responsive fit**: Text must not overflow buttons, cards, tabs, sidebars, or fixed-format tools. Use stable dimensions for boards, grids, toolbars, and counters.
|
|
55
55
|
|
|
56
|
+
**Beat convergence, not just defaults.** You sample toward the "on-distribution" center, so naming what to avoid is not enough: every "don't" needs a "do", or you converge on the next safe option (ban Inter and you reach for Roboto; ban purple gradients and you reach for Space Grotesk + a teal accent on every screen). Commit to one named direction, pair any reference with the reason it fits ("Linear: the quiet confidence of its spacing" — a bare "Linear" collapses back to the average), and match implementation effort to the vision: maximalist wants elaborate motion and effects, minimal wants restraint and precise spacing. When building on an existing app, inspect its tokens/type/components first and treat any drift back to a default as a missing token to pin, not something to re-prompt.
|
|
57
|
+
|
|
56
58
|
## Agent-Native UI Rules
|
|
57
59
|
|
|
58
60
|
- Agent-native apps use React, Vite, Tailwind CSS, shadcn/ui, and `@tabler/icons-react`.
|
|
@@ -1,133 +1,45 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Plan
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
and HTML export.
|
|
3
|
+
Structured visual plan mode for coding agents. Plan turns an ordinary
|
|
4
|
+
Codex / Claude Code / Markdown plan into a reviewable document — diagrams,
|
|
5
|
+
wireframes, prototype options, annotated code walkthroughs, file trees, comments,
|
|
6
|
+
share links, and HTML export.
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
**Live app: [plan.agent-native.com](https://plan.agent-native.com)**
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
## Install (recommended)
|
|
11
|
+
|
|
12
|
+
Most people install Plan as a skill, not a scaffolded app. One CLI command adds
|
|
13
|
+
the `/visual-plan` and `/visual-recap` skills plus the hosted Plan connector to
|
|
14
|
+
your coding agent:
|
|
14
15
|
|
|
15
16
|
```sh
|
|
16
17
|
npx @agent-native/core@latest skills add visual-plan
|
|
17
18
|
```
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
- `npx @agent-native/core@latest skills add visual-plan`
|
|
24
|
-
- `npx @agent-native/core@latest skills add visual-recap`
|
|
25
|
-
|
|
26
|
-
Restart or reload the host if the tools are not visible immediately.
|
|
27
|
-
|
|
28
|
-
## Use
|
|
29
|
-
|
|
30
|
-
It comes down to two commands: `/visual-plan` to plan before the agent builds,
|
|
31
|
-
and `/visual-recap` to review a change after it lands.
|
|
32
|
-
|
|
33
|
-
Type `/visual-plan` when you want a fresh plan before the agent builds, or when
|
|
34
|
-
you already have a Codex, Claude Code, Markdown, or pasted plan and want the
|
|
35
|
-
agent to preserve it while adding a richer visual review surface.
|
|
36
|
-
|
|
37
|
-
Type `/visual-recap` when you want a high-level visual code-review recap from a
|
|
38
|
-
PR, commit, branch, or git diff. A recap is an aid for review, not a replacement
|
|
39
|
-
for reading the actual diff.
|
|
40
|
-
|
|
41
|
-
Command behavior:
|
|
42
|
-
|
|
43
|
-
- `/visual-plan` creates a new rich visual plan with docs-level detail, diagrams,
|
|
44
|
-
detailed wireframes/mockups when UI is involved, functional prototypes when
|
|
45
|
-
the interaction feel matters, tradeoffs, open questions, annotated code
|
|
46
|
-
walkthroughs and file trees for code work, code previews, and feedback prompts.
|
|
47
|
-
When an existing plan is provided, it builds from that plan instead of starting
|
|
48
|
-
over.
|
|
49
|
-
- `/visual-recap` creates a reverse plan from code that already changed:
|
|
50
|
-
file-tree, diff, data-model, API, and columns blocks that let a
|
|
51
|
-
reviewer scan the shape of a PR before reading line-by-line.
|
|
52
|
-
|
|
53
|
-
## Normal Planning Flow
|
|
54
|
-
|
|
55
|
-
`/visual-plan` remains the main planning command. Agents should use their normal
|
|
56
|
-
planning flow first: inspect the codebase, gather context, ask clarifying
|
|
57
|
-
questions through the host's native ask-user-question tools when needed, then
|
|
58
|
-
create the visual plan.
|
|
59
|
-
|
|
60
|
-
The document should stay close to the Markdown plan a coding agent would
|
|
61
|
-
normally produce. Diagrams, wireframes, mockups, and annotations are additive
|
|
62
|
-
review aids.
|
|
63
|
-
|
|
64
|
-
Plans should be visual by default:
|
|
20
|
+
Then use `/visual-plan` to plan before the agent builds, and `/visual-recap` to
|
|
21
|
+
review a change after it lands. Reviewers you share with edit as a guest and sign
|
|
22
|
+
in only to save or share.
|
|
65
23
|
|
|
66
|
-
|
|
67
|
-
- detailed wireframes and quick mockups for UI work, including layout regions,
|
|
68
|
-
controls, states, empty/loading/error paths, and copy placeholders
|
|
69
|
-
- tabs for multiple diagrams, wireframes, mockups, and design options so rich
|
|
70
|
-
plans do not become long stacks of visuals
|
|
71
|
-
- prototype options when interaction or design direction is uncertain
|
|
72
|
-
- annotated code walkthroughs and file trees for code work: files,
|
|
73
|
-
symbols/components/functions, planned changes, concise code snippets, and
|
|
74
|
-
explicit editor-open affordances
|
|
75
|
-
- plannotator-style comments, corrections, and annotations
|
|
76
|
-
- review prompts for options, open questions, risky assumptions, and choices
|
|
77
|
-
- README-like details when helpful: commands, MCP/link fallback, tool behavior,
|
|
78
|
-
data shape, scope, and what is deferred
|
|
24
|
+
## Features
|
|
79
25
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
26
|
+
- Rich, editable plan blocks: diagrams, wireframes, prototypes, and annotations.
|
|
27
|
+
- Annotated code walkthroughs and file trees for code work.
|
|
28
|
+
- Reviewer comments, feedback, and private share links.
|
|
29
|
+
- `/visual-recap` reverse-plans a PR, commit, branch, or diff for review.
|
|
30
|
+
- MDX source sync so plans can be committed to a repo.
|
|
31
|
+
- Optional PR Visual Recap GitHub Action.
|
|
85
32
|
|
|
86
|
-
##
|
|
33
|
+
## Develop locally
|
|
87
34
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
3. The user annotates, corrects, chooses options, or asks for a clearer visual.
|
|
91
|
-
4. The agent reads structured feedback before editing and updates the plan or
|
|
92
|
-
implementation.
|
|
93
|
-
5. The user can keep the plan local or sign in to share a private review link.
|
|
35
|
+
Forking the template is the secondary path, for self-hosting or customizing the
|
|
36
|
+
Plan app itself:
|
|
94
37
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
The hosted MCP app is expected at:
|
|
102
|
-
|
|
103
|
-
- App: `https://plan.agent-native.com`
|
|
104
|
-
- MCP: `https://plan.agent-native.com/_agent-native/mcp`
|
|
105
|
-
|
|
106
|
-
The local template remains useful for development and self-hosting.
|
|
107
|
-
|
|
108
|
-
## PR Visual Recaps
|
|
109
|
-
|
|
110
|
-
When you install Plans interactively, the CLI asks whether you also want the PR
|
|
111
|
-
Visual Recap GitHub Action. You can add it explicitly at any time:
|
|
112
|
-
|
|
113
|
-
```sh
|
|
114
|
-
npx @agent-native/core@latest skills add visual-plan --with-github-action
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
That writes `.github/workflows/pr-visual-recap.yml`. Then run the setup helper to
|
|
118
|
-
configure GitHub Actions secrets/variables where possible and print any missing
|
|
119
|
-
manual steps:
|
|
120
|
-
|
|
121
|
-
```sh
|
|
122
|
-
npx @agent-native/core@latest recap setup
|
|
123
|
-
npx @agent-native/core@latest recap doctor
|
|
38
|
+
```bash
|
|
39
|
+
npx @agent-native/core@latest create my-plan --standalone --template plan
|
|
40
|
+
cd my-plan
|
|
41
|
+
pnpm install
|
|
42
|
+
pnpm dev
|
|
124
43
|
```
|
|
125
44
|
|
|
126
|
-
|
|
127
|
-
default Claude backend. `PLAN_RECAP_APP_URL` is only needed when self-hosting the
|
|
128
|
-
Plan app, and Codex users can set `VISUAL_RECAP_AGENT=codex` with
|
|
129
|
-
`OPENAI_API_KEY`.
|
|
130
|
-
|
|
131
|
-
The workflow should treat recap generation as informational only: it can show a
|
|
132
|
-
non-required `Visual Recap` check while it runs and update a sticky PR comment
|
|
133
|
-
with the recap link, but reviewers still own the real diff review.
|
|
45
|
+
Full docs: [agent-native.com/docs/template-plan](https://agent-native.com/docs/template-plan).
|
|
@@ -53,6 +53,8 @@ Default to Apple/Linear-level restraint: make the primary workflow obvious, then
|
|
|
53
53
|
- **Visual assets**: Websites, games, and object-focused pages need real or generated media when images help users understand the subject.
|
|
54
54
|
- **Responsive fit**: Text must not overflow buttons, cards, tabs, sidebars, or fixed-format tools. Use stable dimensions for boards, grids, toolbars, and counters.
|
|
55
55
|
|
|
56
|
+
**Beat convergence, not just defaults.** You sample toward the "on-distribution" center, so naming what to avoid is not enough: every "don't" needs a "do", or you converge on the next safe option (ban Inter and you reach for Roboto; ban purple gradients and you reach for Space Grotesk + a teal accent on every screen). Commit to one named direction, pair any reference with the reason it fits ("Linear: the quiet confidence of its spacing" — a bare "Linear" collapses back to the average), and match implementation effort to the vision: maximalist wants elaborate motion and effects, minimal wants restraint and precise spacing. When building on an existing app, inspect its tokens/type/components first and treat any drift back to a default as a missing token to pin, not something to re-prompt.
|
|
57
|
+
|
|
56
58
|
## Agent-Native UI Rules
|
|
57
59
|
|
|
58
60
|
- Agent-native apps use React, Vite, Tailwind CSS, shadcn/ui, and `@tabler/icons-react`.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Slides
|
|
2
|
+
|
|
3
|
+
An open-source, agent-native alternative to Google Slides, Pitch, and PowerPoint.
|
|
4
|
+
Generate full decks from a prompt, edit slides visually, and present full-screen.
|
|
5
|
+
|
|
6
|
+
**Live app: [slides.agent-native.com](https://slides.agent-native.com)**
|
|
7
|
+
|
|
8
|
+
Ask the agent for "a 10-slide pitch deck for a coffee subscription service" and
|
|
9
|
+
watch it stream in slide-by-slide, then refine it visually or by prompt. Anything
|
|
10
|
+
you can do in the editor, the agent can do too.
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
- Generate full presentation decks from a prompt.
|
|
15
|
+
- Edit slides visually with a bubble menu and slash-menu blocks.
|
|
16
|
+
- AI image generation, stock photo search, and company logo lookup.
|
|
17
|
+
- Present full-screen with keyboard navigation and speaker notes.
|
|
18
|
+
- Real-time collaboration, comments, and public read-only share links.
|
|
19
|
+
- Import from PDF, PPTX, DOCX, Google Docs, or a URL; export to PPTX, Google
|
|
20
|
+
Slides, or HTML.
|
|
21
|
+
- Design systems and per-deck version history.
|
|
22
|
+
|
|
23
|
+
## Develop locally
|
|
24
|
+
|
|
25
|
+
Scaffold your own copy and run it:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx @agent-native/core@latest create my-slides --standalone --template slides
|
|
29
|
+
cd my-slides
|
|
30
|
+
pnpm install
|
|
31
|
+
pnpm dev
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Full docs: [agent-native.com/docs/template-slides](https://agent-native.com/docs/template-slides).
|
|
@@ -53,6 +53,8 @@ Default to Apple/Linear-level restraint: make the primary workflow obvious, then
|
|
|
53
53
|
- **Visual assets**: Websites, games, and object-focused pages need real or generated media when images help users understand the subject.
|
|
54
54
|
- **Responsive fit**: Text must not overflow buttons, cards, tabs, sidebars, or fixed-format tools. Use stable dimensions for boards, grids, toolbars, and counters.
|
|
55
55
|
|
|
56
|
+
**Beat convergence, not just defaults.** You sample toward the "on-distribution" center, so naming what to avoid is not enough: every "don't" needs a "do", or you converge on the next safe option (ban Inter and you reach for Roboto; ban purple gradients and you reach for Space Grotesk + a teal accent on every screen). Commit to one named direction, pair any reference with the reason it fits ("Linear: the quiet confidence of its spacing" — a bare "Linear" collapses back to the average), and match implementation effort to the vision: maximalist wants elaborate motion and effects, minimal wants restraint and precise spacing. When building on an existing app, inspect its tokens/type/components first and treat any drift back to a default as a missing token to pin, not something to re-prompt.
|
|
57
|
+
|
|
56
58
|
## Agent-Native UI Rules
|
|
57
59
|
|
|
58
60
|
- Agent-native apps use React, Vite, Tailwind CSS, shadcn/ui, and `@tabler/icons-react`.
|
|
@@ -1,212 +1,33 @@
|
|
|
1
|
-
# Video
|
|
1
|
+
# Video
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
An agent-native, Remotion-based video composition studio. Describe a video in
|
|
4
|
+
plain English and the agent generates animated React compositions with camera
|
|
5
|
+
moves, interactive cursor animations, and a full timeline editor.
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
**Live app: [videos.agent-native.com](https://videos.agent-native.com)**
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
Open http://localhost:8080 to access the studio.
|
|
13
|
-
|
|
14
|
-
## ✨ Features
|
|
15
|
-
|
|
16
|
-
### 🎬 AI-Powered Generation
|
|
17
|
-
|
|
18
|
-
- Describe videos in natural language
|
|
19
|
-
- Attach reference images, logos, and assets
|
|
20
|
-
- Generates React components and animation tracks automatically
|
|
21
|
-
|
|
22
|
-
### 🎥 Camera System
|
|
23
|
-
|
|
24
|
-
- 6 animatable properties: translate X/Y, scale, rotate X/Y, perspective
|
|
25
|
-
- Multi-keyframe selection with box-select and shift-click
|
|
26
|
-
- Visual camera controls with real-time preview
|
|
27
|
-
|
|
28
|
-
### 🖱️ Interactive Cursor
|
|
29
|
-
|
|
30
|
-
- Position tracking with smooth animations
|
|
31
|
-
- Hover and click detection
|
|
32
|
-
- Component-type based interactions
|
|
33
|
-
- Visual cursor with multiple states
|
|
34
|
-
|
|
35
|
-
### 🎭 Cursor Interactions
|
|
36
|
-
|
|
37
|
-
- Add hover animations to any component type
|
|
38
|
-
- Click effects with timing control
|
|
39
|
-
- Scale, translate, and rotate on interaction
|
|
40
|
-
- Duration and easing customization
|
|
41
|
-
|
|
42
|
-
### ⚡ Advanced Timeline
|
|
43
|
-
|
|
44
|
-
- Multi-keyframe selection and editing
|
|
45
|
-
- Visual easing selector (20+ curves)
|
|
46
|
-
- View range control for focused editing
|
|
47
|
-
- Track properties panel with live preview
|
|
48
|
-
- Expression-controlled animations (programmatic)
|
|
49
|
-
|
|
50
|
-
### 🎨 Built-in Components
|
|
51
|
-
|
|
52
|
-
- Kinetic Text (typing reveal, drift, explode)
|
|
53
|
-
- Logo Reveal (particle burst)
|
|
54
|
-
- Logo Explode (SVG scatter)
|
|
55
|
-
- Interactive Demo (hover buttons)
|
|
56
|
-
- Interactive Card Grid (cursor-reactive cards)
|
|
57
|
-
- Slideshow (multi-slide transitions)
|
|
58
|
-
|
|
59
|
-
## 🛠️ Helper Functions
|
|
60
|
-
|
|
61
|
-
```typescript
|
|
62
|
-
import { createBlankComposition, addComposition } from "@/remotion/registry";
|
|
63
|
-
|
|
64
|
-
import {
|
|
65
|
-
createCameraTrack,
|
|
66
|
-
createCursorTrack,
|
|
67
|
-
createAnimationTrack,
|
|
68
|
-
createFadeInTrack,
|
|
69
|
-
createSlideInTrack,
|
|
70
|
-
createCursorPath,
|
|
71
|
-
createClickEvents,
|
|
72
|
-
validateComposition,
|
|
73
|
-
} from "@/utils/compositionHelpers";
|
|
74
|
-
|
|
75
|
-
// Create a new composition
|
|
76
|
-
const comp = createBlankComposition("My Video");
|
|
77
|
-
addComposition(comp);
|
|
78
|
-
|
|
79
|
-
// Or build manually with full control
|
|
80
|
-
const tracks = [
|
|
81
|
-
createCameraTrack(240),
|
|
82
|
-
createCursorTrack(240),
|
|
83
|
-
createFadeInTrack("title", "Title Entrance", 0, 30),
|
|
84
|
-
];
|
|
85
|
-
|
|
86
|
-
validateComposition(tracks); // Ensure it has required tracks
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## 📖 Key Concepts
|
|
90
|
-
|
|
91
|
-
### Compositions
|
|
92
|
-
|
|
93
|
-
- **ID**: URL-friendly slug (auto-generated from title)
|
|
94
|
-
- **Tracks**: Animation timelines (camera, cursor, custom)
|
|
95
|
-
- **Props**: Component configuration (colors, text, etc.)
|
|
96
|
-
- **Dimensions**: Default 1920×1080 @ 30fps
|
|
97
|
-
|
|
98
|
-
### Tracks
|
|
99
|
-
|
|
100
|
-
- **Camera**: Controls viewport (required)
|
|
101
|
-
- **Cursor**: Tracks pointer position (required for interactions)
|
|
102
|
-
- **Custom**: Element-specific animations (optional)
|
|
9
|
+
Compositions are code-driven and yours to own. Generate with AI or build manually
|
|
10
|
+
with the same track system, then refine keyframes, easing, and cursor
|
|
11
|
+
interactions on the timeline.
|
|
103
12
|
|
|
104
|
-
|
|
13
|
+
## Features
|
|
105
14
|
|
|
106
|
-
-
|
|
107
|
-
-
|
|
108
|
-
-
|
|
15
|
+
- Describe videos in natural language and get React components + animation tracks.
|
|
16
|
+
- Camera system with animatable translate, scale, rotate, and perspective.
|
|
17
|
+
- Interactive cursor with hover/click detection and component-type interactions.
|
|
18
|
+
- Advanced timeline: multi-keyframe editing, easing curves, and view ranges.
|
|
19
|
+
- Built-in components: kinetic text, logo reveal/explode, slideshows, and more.
|
|
20
|
+
- Standardized 1920×1080 @ 30fps compositions.
|
|
109
21
|
|
|
110
|
-
|
|
22
|
+
## Develop locally
|
|
111
23
|
|
|
112
|
-
|
|
113
|
-
- **Click**: Trigger on cursor click events
|
|
114
|
-
- **Component-Type Based**: Apply to all instances globally
|
|
115
|
-
|
|
116
|
-
## 🎯 Common Workflows
|
|
117
|
-
|
|
118
|
-
### Create with AI
|
|
119
|
-
|
|
120
|
-
1. Click "+ New Composition"
|
|
121
|
-
2. Describe your video
|
|
122
|
-
3. Attach references (optional)
|
|
123
|
-
4. Press Enter
|
|
124
|
-
5. Edit and customize
|
|
125
|
-
|
|
126
|
-
### Create Manually
|
|
127
|
-
|
|
128
|
-
1. Copy `BlankComposition.tsx` as template
|
|
129
|
-
2. Modify component code
|
|
130
|
-
3. Register in `registry.ts`
|
|
131
|
-
4. Export in `compositions/index.ts`
|
|
132
|
-
5. Navigate to `/c/your-comp-id`
|
|
133
|
-
|
|
134
|
-
### Add Cursor Interactions
|
|
135
|
-
|
|
136
|
-
1. Ensure cursor track exists
|
|
137
|
-
2. Add `<Cursor>` to component
|
|
138
|
-
3. Use `useHoverAnimation()` hook
|
|
139
|
-
4. Configure in Properties → Cursor Interactions
|
|
140
|
-
|
|
141
|
-
### Multi-Keyframe Editing
|
|
142
|
-
|
|
143
|
-
1. Box-select: Click+drag in timeline
|
|
144
|
-
2. Shift-click: Add individual keyframes
|
|
145
|
-
3. Drag selection: Move all together
|
|
146
|
-
4. Maintains relative timing
|
|
147
|
-
|
|
148
|
-
## 📁 Project Structure
|
|
149
|
-
|
|
150
|
-
```
|
|
151
|
-
app/
|
|
152
|
-
├── remotion/
|
|
153
|
-
│ ├── compositions/ # Video components
|
|
154
|
-
│ ├── ui-components/ # Reusable elements (Cursor, etc.)
|
|
155
|
-
│ ├── hooks/ # Animation hooks
|
|
156
|
-
│ ├── CameraHost.tsx # Camera wrapper
|
|
157
|
-
│ ├── registry.ts # Composition registry
|
|
158
|
-
│ └── trackAnimation.ts # Track utilities
|
|
159
|
-
├── components/ # Studio UI components
|
|
160
|
-
├── pages/ # Routes (Index, CompositionView)
|
|
161
|
-
├── utils/ # Helpers and utilities
|
|
162
|
-
└── contexts/ # React context providers
|
|
163
|
-
|
|
164
|
-
server/
|
|
165
|
-
├── routes/ # API endpoints
|
|
166
|
-
└── index.ts # Express server
|
|
167
|
-
|
|
168
|
-
docs/examples/
|
|
169
|
-
└── create-composition.example.ts # Example creation script
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
## 🔧 Development
|
|
173
|
-
|
|
174
|
-
### Commands
|
|
24
|
+
Scaffold your own copy and run it:
|
|
175
25
|
|
|
176
26
|
```bash
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
pnpm run build # Build client and server
|
|
182
|
-
|
|
183
|
-
# Production
|
|
184
|
-
pnpm start # Run production server
|
|
185
|
-
|
|
186
|
-
# Testing
|
|
187
|
-
pnpm test # Run tests
|
|
188
|
-
pnpm typecheck # Type checking
|
|
189
|
-
pnpm format.fix # Format code
|
|
27
|
+
npx @agent-native/core@latest create my-videos --standalone --template videos
|
|
28
|
+
cd my-videos
|
|
29
|
+
pnpm install
|
|
30
|
+
pnpm dev
|
|
190
31
|
```
|
|
191
32
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
All compositions run at:
|
|
195
|
-
|
|
196
|
-
- **30fps** (standardized)
|
|
197
|
-
- **1920×1080** (Wide format default)
|
|
198
|
-
- **240 frames** (8 seconds default duration)
|
|
199
|
-
|
|
200
|
-
## 🎓 Learn More
|
|
201
|
-
|
|
202
|
-
- **Remotion Docs**: https://remotion.dev/docs
|
|
203
|
-
- **Builder.io Docs**: https://www.builder.io/c/docs/projects
|
|
204
|
-
- **Example Compositions**: Check `app/remotion/compositions/` folder
|
|
205
|
-
|
|
206
|
-
## 📝 License
|
|
207
|
-
|
|
208
|
-
Private project.
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
**Ready to create?** Click "+ New Composition" and describe your first video! 🎬
|
|
33
|
+
Full docs: [agent-native.com/docs/template-videos](https://agent-native.com/docs/template-videos).
|
|
@@ -103,7 +103,7 @@ export function getContextWindowForModel(modelId) {
|
|
|
103
103
|
return 1_048_576;
|
|
104
104
|
return DEFAULT_CONTEXT_WINDOW;
|
|
105
105
|
}
|
|
106
|
-
const ENABLE_CLAUDE_SONNET_5 =
|
|
106
|
+
const ENABLE_CLAUDE_SONNET_5 = true;
|
|
107
107
|
export const CLAUDE_SONNET_MODEL_ID = ENABLE_CLAUDE_SONNET_5
|
|
108
108
|
? "claude-sonnet-5"
|
|
109
109
|
: "claude-sonnet-4-6";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-config.js","sourceRoot":"","sources":["../../src/agent/model-config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Central model catalog for built-in agent engines.\n *\n * To bump the framework's managed default, update the Anthropic/OpenAI\n * constants below. Builder gateway and OpenRouter IDs are derived here so the\n * usual default bump stays in one file.\n */\n\n// ---------------------------------------------------------------------------\n// Per-model context window table (input token limit)\n//\n// Sources (June 2026):\n// Anthropic https://platform.claude.com/docs/en/about-claude/models/overview\n// OpenAI https://developers.openai.com/api/docs/models/gpt-5.5\n// https://developers.openai.com/api/docs/models/gpt-5.4\n// Google https://ai.google.dev/gemini-api/docs/models\n// OpenRouter https://openrouter.ai/api/v1/models\n//\n// Family defaults (used when a model id isn't listed explicitly):\n// claude-* → 200_000 (Haiku 4.5 and earlier models)\n// gpt-5* → 1_050_000 (GPT-5.4/5.5 flagship context)\n// gemini-2* / gemini-3* → 1_048_576\n// everything else → 128_000 (safe conservative floor)\n//\n// Note: Fable 5, Sonnet 5, Sonnet 4.6, and Opus 4.6/4.7/4.8 support 1M via the API\n// at standard prices.\n// ---------------------------------------------------------------------------\n\nconst MODEL_CONTEXT_WINDOWS: Record<string, number> = {\n // ── Anthropic / Claude (via Builder gateway or Anthropic direct) ──────────\n \"claude-fable-5\": 1_000_000,\n \"claude-opus-4-8\": 1_000_000,\n \"claude-opus-4-7\": 1_000_000,\n \"claude-sonnet-5\": 1_000_000,\n \"claude-sonnet-4-6\": 1_000_000,\n \"claude-haiku-4-5\": 200_000,\n \"claude-haiku-4-5-20251001\": 200_000,\n\n // ── Builder gateway OpenAI IDs (dot→dash) ────────────────────────────────\n \"gpt-5-5\": 1_050_000,\n \"gpt-5-4\": 1_050_000,\n \"gpt-5-4-mini\": 400_000,\n\n // ── Gemini (Builder gateway IDs) ─────────────────────────────────────────\n \"gemini-3-1-pro\": 1_048_576,\n \"gemini-3-5-flash\": 1_048_576,\n \"gemini-3-1-flash-lite\": 1_048_576,\n\n // ── OpenRouter model IDs ──────────────────────────────────────────────────\n \"anthropic/claude-fable-5\": 1_000_000,\n \"anthropic/claude-opus-4.8\": 1_000_000,\n \"anthropic/claude-opus-4.7\": 1_000_000,\n \"anthropic/claude-sonnet-5\": 1_000_000,\n \"anthropic/claude-sonnet-4.6\": 1_000_000,\n \"openai/gpt-5.5\": 1_050_000,\n \"openai/gpt-5.4\": 1_050_000,\n \"google/gemini-2.5-flash\": 1_048_576,\n \"z-ai/glm-5.2\": 1_048_576,\n\n // ── AI-SDK native OpenAI IDs ──────────────────────────────────────────────\n \"gpt-5.5\": 1_050_000,\n \"gpt-5.4\": 1_050_000,\n \"gpt-5.4-mini\": 400_000,\n\n // ── AI-SDK native Google IDs ──────────────────────────────────────────────\n \"gemini-3.5-flash\": 1_048_576,\n \"gemini-3.1-pro-preview\": 1_048_576,\n \"gemini-2.5-flash\": 1_048_576,\n \"gemini-2.5-pro\": 1_048_576,\n};\n\n/** Conservative safe default when a model is not in the table. */\nconst DEFAULT_CONTEXT_WINDOW = 128_000;\n\n/**\n * Return the known input-token context window for the given model ID.\n *\n * Uses an exact-match table first, then falls back to family-prefix heuristics,\n * then a conservative 128 K default. Never throws — always returns a positive\n * integer.\n */\nexport function getContextWindowForModel(modelId: string): number {\n if (!modelId) return DEFAULT_CONTEXT_WINDOW;\n\n const exact = MODEL_CONTEXT_WINDOWS[modelId];\n if (exact !== undefined) return exact;\n\n // Family heuristics for unlisted model IDs\n const id = modelId.toLowerCase();\n\n // Anthropic Fable 5, Opus 4.x, Sonnet 5, and Sonnet 4.6 = 1M\n if (\n id === \"claude-fable-5\" ||\n id.includes(\"claude-fable-5\") ||\n id.startsWith(\"claude-opus-4\") ||\n id.includes(\"claude-sonnet-5\") ||\n id.includes(\"claude-sonnet-4-6\") ||\n id.includes(\"claude-sonnet-4.6\")\n )\n return 1_000_000;\n\n // All other Claude models — default 200K\n if (id.startsWith(\"claude-\")) return 200_000;\n\n // GPT-5.x family — 1.05M\n if (id.startsWith(\"gpt-5\") || id.startsWith(\"openai/gpt-5\")) return 1_050_000;\n\n // Gemini 2.x / 3.x — 1M\n if (\n id.startsWith(\"gemini-2\") ||\n id.startsWith(\"gemini-3\") ||\n id.includes(\"/gemini-2\") ||\n id.includes(\"/gemini-3\")\n )\n return 1_048_576;\n\n // Z.ai GLM 5.x on OpenRouter — 1M context.\n if (id.startsWith(\"glm-5\") || id.includes(\"/glm-5\")) return 1_048_576;\n\n return DEFAULT_CONTEXT_WINDOW;\n}\n\nconst ENABLE_CLAUDE_SONNET_5 = false;\n\nexport const CLAUDE_SONNET_MODEL_ID = ENABLE_CLAUDE_SONNET_5\n ? \"claude-sonnet-5\"\n : \"claude-sonnet-4-6\";\nexport const CLAUDE_SONNET_MODEL_LABEL = ENABLE_CLAUDE_SONNET_5\n ? \"Claude Sonnet 5\"\n : \"Claude Sonnet 4.6\";\n\nconst OPENROUTER_CLAUDE_SONNET_MODEL_ID = ENABLE_CLAUDE_SONNET_5\n ? \"anthropic/claude-sonnet-5\"\n : \"anthropic/claude-sonnet-4.6\";\n\nconst ANTHROPIC_DEFAULT_MODEL_ID = CLAUDE_SONNET_MODEL_ID;\n\nfunction builderGatewayModelId(model: string): string {\n return model.replace(/\\./g, \"-\");\n}\n\nfunction openRouterModelId(provider: string, model: string): string {\n return `${provider}/${model}`;\n}\n\nconst FRAMEWORK_DEFAULT_OPENAI_MODEL = \"gpt-5.5\";\nconst FRAMEWORK_DEFAULT_BUILDER_MODEL = ANTHROPIC_DEFAULT_MODEL_ID;\nconst FRAMEWORK_DEFAULT_BUILDER_OPENAI_MODEL = builderGatewayModelId(\n FRAMEWORK_DEFAULT_OPENAI_MODEL,\n);\nconst FRAMEWORK_DEFAULT_OPENROUTER_MODEL = openRouterModelId(\n \"openai\",\n FRAMEWORK_DEFAULT_OPENAI_MODEL,\n);\n\nexport const AGENT_MODEL_CONFIG = {\n builder: {\n defaultModel: FRAMEWORK_DEFAULT_BUILDER_MODEL,\n supportedModels: [\n \"auto\",\n \"claude-opus-4-8\",\n CLAUDE_SONNET_MODEL_ID,\n \"claude-haiku-4-5\",\n FRAMEWORK_DEFAULT_BUILDER_OPENAI_MODEL,\n \"gpt-5-4\",\n \"gpt-5-4-mini\",\n \"gemini-3-1-pro\",\n \"gemini-3-5-flash\",\n \"gemini-3-1-flash-lite\",\n \"grok-code-fast\",\n \"qwen3-coder\",\n ],\n },\n anthropic: {\n defaultModel: ANTHROPIC_DEFAULT_MODEL_ID,\n supportedModels: [\n \"claude-fable-5\",\n \"claude-opus-4-8\",\n CLAUDE_SONNET_MODEL_ID,\n \"claude-haiku-4-5-20251001\",\n ],\n },\n aiSdk: {\n anthropic: {\n defaultModel: ANTHROPIC_DEFAULT_MODEL_ID,\n supportedModels: [\n \"claude-fable-5\",\n \"claude-opus-4-8\",\n CLAUDE_SONNET_MODEL_ID,\n \"claude-haiku-4-5-20251001\",\n ],\n },\n openai: {\n defaultModel: FRAMEWORK_DEFAULT_OPENAI_MODEL,\n supportedModels: [\n FRAMEWORK_DEFAULT_OPENAI_MODEL,\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n ],\n },\n openrouter: {\n defaultModel: FRAMEWORK_DEFAULT_OPENROUTER_MODEL,\n supportedModels: [\n \"anthropic/claude-fable-5\",\n \"anthropic/claude-opus-4.8\",\n OPENROUTER_CLAUDE_SONNET_MODEL_ID,\n FRAMEWORK_DEFAULT_OPENROUTER_MODEL,\n \"openai/gpt-5.4\",\n // Current stable Gemini on OpenRouter (2.5 Flash is GA)\n \"google/gemini-2.5-flash\",\n \"z-ai/glm-5.2\",\n ],\n },\n google: {\n defaultModel: \"gemini-3.5-flash\",\n supportedModels: [\"gemini-3.5-flash\", \"gemini-3.1-pro-preview\"],\n },\n groq: {\n // llama-3.1-70b-versatile and mixtral-8x7b-32768 were decommissioned\n // (errors since Jan 2025 and Mar 2025 respectively). Replace with current\n // Groq production models.\n defaultModel: \"llama-3.3-70b-versatile\",\n supportedModels: [\n \"llama-3.3-70b-versatile\",\n \"llama3-8b-8192\",\n \"llama-3.1-8b-instant\",\n ],\n },\n mistral: {\n defaultModel: \"mistral-large-latest\",\n supportedModels: [\n \"mistral-large-latest\",\n \"mistral-medium-latest\",\n \"mistral-small-latest\",\n ],\n },\n cohere: {\n // command-r-plus (unversioned) is an alias that may lag; the stable\n // dated release is command-r-plus-08-2024.\n defaultModel: \"command-r-plus-08-2024\",\n supportedModels: [\n \"command-r-plus-08-2024\",\n \"command-r-plus\",\n \"command-r\",\n ],\n },\n ollama: {\n defaultModel: \"llama3.1\",\n supportedModels: [\"llama3.1\", \"llama3.2\", \"mistral\", \"codestral\"],\n },\n },\n} as const;\n\nexport const BUILDER_MODEL_CONFIG = AGENT_MODEL_CONFIG.builder;\nexport const ANTHROPIC_MODEL_CONFIG = AGENT_MODEL_CONFIG.anthropic;\nexport const AI_SDK_MODEL_CONFIG = AGENT_MODEL_CONFIG.aiSdk;\n\nexport type AISDKProvider = keyof typeof AI_SDK_MODEL_CONFIG;\n\nexport const DEFAULT_MODEL = BUILDER_MODEL_CONFIG.defaultModel;\nexport const DEFAULT_OPENAI_MODEL = AI_SDK_MODEL_CONFIG.openai.defaultModel;\nexport const DEFAULT_ANTHROPIC_MODEL = ANTHROPIC_MODEL_CONFIG.defaultModel;\n"]}
|
|
1
|
+
{"version":3,"file":"model-config.js","sourceRoot":"","sources":["../../src/agent/model-config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Central model catalog for built-in agent engines.\n *\n * To bump the framework's managed default, update the Anthropic/OpenAI\n * constants below. Builder gateway and OpenRouter IDs are derived here so the\n * usual default bump stays in one file.\n */\n\n// ---------------------------------------------------------------------------\n// Per-model context window table (input token limit)\n//\n// Sources (June 2026):\n// Anthropic https://platform.claude.com/docs/en/about-claude/models/overview\n// OpenAI https://developers.openai.com/api/docs/models/gpt-5.5\n// https://developers.openai.com/api/docs/models/gpt-5.4\n// Google https://ai.google.dev/gemini-api/docs/models\n// OpenRouter https://openrouter.ai/api/v1/models\n//\n// Family defaults (used when a model id isn't listed explicitly):\n// claude-* → 200_000 (Haiku 4.5 and earlier models)\n// gpt-5* → 1_050_000 (GPT-5.4/5.5 flagship context)\n// gemini-2* / gemini-3* → 1_048_576\n// everything else → 128_000 (safe conservative floor)\n//\n// Note: Fable 5, Sonnet 5, Sonnet 4.6, and Opus 4.6/4.7/4.8 support 1M via the API\n// at standard prices.\n// ---------------------------------------------------------------------------\n\nconst MODEL_CONTEXT_WINDOWS: Record<string, number> = {\n // ── Anthropic / Claude (via Builder gateway or Anthropic direct) ──────────\n \"claude-fable-5\": 1_000_000,\n \"claude-opus-4-8\": 1_000_000,\n \"claude-opus-4-7\": 1_000_000,\n \"claude-sonnet-5\": 1_000_000,\n \"claude-sonnet-4-6\": 1_000_000,\n \"claude-haiku-4-5\": 200_000,\n \"claude-haiku-4-5-20251001\": 200_000,\n\n // ── Builder gateway OpenAI IDs (dot→dash) ────────────────────────────────\n \"gpt-5-5\": 1_050_000,\n \"gpt-5-4\": 1_050_000,\n \"gpt-5-4-mini\": 400_000,\n\n // ── Gemini (Builder gateway IDs) ─────────────────────────────────────────\n \"gemini-3-1-pro\": 1_048_576,\n \"gemini-3-5-flash\": 1_048_576,\n \"gemini-3-1-flash-lite\": 1_048_576,\n\n // ── OpenRouter model IDs ──────────────────────────────────────────────────\n \"anthropic/claude-fable-5\": 1_000_000,\n \"anthropic/claude-opus-4.8\": 1_000_000,\n \"anthropic/claude-opus-4.7\": 1_000_000,\n \"anthropic/claude-sonnet-5\": 1_000_000,\n \"anthropic/claude-sonnet-4.6\": 1_000_000,\n \"openai/gpt-5.5\": 1_050_000,\n \"openai/gpt-5.4\": 1_050_000,\n \"google/gemini-2.5-flash\": 1_048_576,\n \"z-ai/glm-5.2\": 1_048_576,\n\n // ── AI-SDK native OpenAI IDs ──────────────────────────────────────────────\n \"gpt-5.5\": 1_050_000,\n \"gpt-5.4\": 1_050_000,\n \"gpt-5.4-mini\": 400_000,\n\n // ── AI-SDK native Google IDs ──────────────────────────────────────────────\n \"gemini-3.5-flash\": 1_048_576,\n \"gemini-3.1-pro-preview\": 1_048_576,\n \"gemini-2.5-flash\": 1_048_576,\n \"gemini-2.5-pro\": 1_048_576,\n};\n\n/** Conservative safe default when a model is not in the table. */\nconst DEFAULT_CONTEXT_WINDOW = 128_000;\n\n/**\n * Return the known input-token context window for the given model ID.\n *\n * Uses an exact-match table first, then falls back to family-prefix heuristics,\n * then a conservative 128 K default. Never throws — always returns a positive\n * integer.\n */\nexport function getContextWindowForModel(modelId: string): number {\n if (!modelId) return DEFAULT_CONTEXT_WINDOW;\n\n const exact = MODEL_CONTEXT_WINDOWS[modelId];\n if (exact !== undefined) return exact;\n\n // Family heuristics for unlisted model IDs\n const id = modelId.toLowerCase();\n\n // Anthropic Fable 5, Opus 4.x, Sonnet 5, and Sonnet 4.6 = 1M\n if (\n id === \"claude-fable-5\" ||\n id.includes(\"claude-fable-5\") ||\n id.startsWith(\"claude-opus-4\") ||\n id.includes(\"claude-sonnet-5\") ||\n id.includes(\"claude-sonnet-4-6\") ||\n id.includes(\"claude-sonnet-4.6\")\n )\n return 1_000_000;\n\n // All other Claude models — default 200K\n if (id.startsWith(\"claude-\")) return 200_000;\n\n // GPT-5.x family — 1.05M\n if (id.startsWith(\"gpt-5\") || id.startsWith(\"openai/gpt-5\")) return 1_050_000;\n\n // Gemini 2.x / 3.x — 1M\n if (\n id.startsWith(\"gemini-2\") ||\n id.startsWith(\"gemini-3\") ||\n id.includes(\"/gemini-2\") ||\n id.includes(\"/gemini-3\")\n )\n return 1_048_576;\n\n // Z.ai GLM 5.x on OpenRouter — 1M context.\n if (id.startsWith(\"glm-5\") || id.includes(\"/glm-5\")) return 1_048_576;\n\n return DEFAULT_CONTEXT_WINDOW;\n}\n\nconst ENABLE_CLAUDE_SONNET_5 = true;\n\nexport const CLAUDE_SONNET_MODEL_ID = ENABLE_CLAUDE_SONNET_5\n ? \"claude-sonnet-5\"\n : \"claude-sonnet-4-6\";\nexport const CLAUDE_SONNET_MODEL_LABEL = ENABLE_CLAUDE_SONNET_5\n ? \"Claude Sonnet 5\"\n : \"Claude Sonnet 4.6\";\n\nconst OPENROUTER_CLAUDE_SONNET_MODEL_ID = ENABLE_CLAUDE_SONNET_5\n ? \"anthropic/claude-sonnet-5\"\n : \"anthropic/claude-sonnet-4.6\";\n\nconst ANTHROPIC_DEFAULT_MODEL_ID = CLAUDE_SONNET_MODEL_ID;\n\nfunction builderGatewayModelId(model: string): string {\n return model.replace(/\\./g, \"-\");\n}\n\nfunction openRouterModelId(provider: string, model: string): string {\n return `${provider}/${model}`;\n}\n\nconst FRAMEWORK_DEFAULT_OPENAI_MODEL = \"gpt-5.5\";\nconst FRAMEWORK_DEFAULT_BUILDER_MODEL = ANTHROPIC_DEFAULT_MODEL_ID;\nconst FRAMEWORK_DEFAULT_BUILDER_OPENAI_MODEL = builderGatewayModelId(\n FRAMEWORK_DEFAULT_OPENAI_MODEL,\n);\nconst FRAMEWORK_DEFAULT_OPENROUTER_MODEL = openRouterModelId(\n \"openai\",\n FRAMEWORK_DEFAULT_OPENAI_MODEL,\n);\n\nexport const AGENT_MODEL_CONFIG = {\n builder: {\n defaultModel: FRAMEWORK_DEFAULT_BUILDER_MODEL,\n supportedModels: [\n \"auto\",\n \"claude-opus-4-8\",\n CLAUDE_SONNET_MODEL_ID,\n \"claude-haiku-4-5\",\n FRAMEWORK_DEFAULT_BUILDER_OPENAI_MODEL,\n \"gpt-5-4\",\n \"gpt-5-4-mini\",\n \"gemini-3-1-pro\",\n \"gemini-3-5-flash\",\n \"gemini-3-1-flash-lite\",\n \"grok-code-fast\",\n \"qwen3-coder\",\n ],\n },\n anthropic: {\n defaultModel: ANTHROPIC_DEFAULT_MODEL_ID,\n supportedModels: [\n \"claude-fable-5\",\n \"claude-opus-4-8\",\n CLAUDE_SONNET_MODEL_ID,\n \"claude-haiku-4-5-20251001\",\n ],\n },\n aiSdk: {\n anthropic: {\n defaultModel: ANTHROPIC_DEFAULT_MODEL_ID,\n supportedModels: [\n \"claude-fable-5\",\n \"claude-opus-4-8\",\n CLAUDE_SONNET_MODEL_ID,\n \"claude-haiku-4-5-20251001\",\n ],\n },\n openai: {\n defaultModel: FRAMEWORK_DEFAULT_OPENAI_MODEL,\n supportedModels: [\n FRAMEWORK_DEFAULT_OPENAI_MODEL,\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n ],\n },\n openrouter: {\n defaultModel: FRAMEWORK_DEFAULT_OPENROUTER_MODEL,\n supportedModels: [\n \"anthropic/claude-fable-5\",\n \"anthropic/claude-opus-4.8\",\n OPENROUTER_CLAUDE_SONNET_MODEL_ID,\n FRAMEWORK_DEFAULT_OPENROUTER_MODEL,\n \"openai/gpt-5.4\",\n // Current stable Gemini on OpenRouter (2.5 Flash is GA)\n \"google/gemini-2.5-flash\",\n \"z-ai/glm-5.2\",\n ],\n },\n google: {\n defaultModel: \"gemini-3.5-flash\",\n supportedModels: [\"gemini-3.5-flash\", \"gemini-3.1-pro-preview\"],\n },\n groq: {\n // llama-3.1-70b-versatile and mixtral-8x7b-32768 were decommissioned\n // (errors since Jan 2025 and Mar 2025 respectively). Replace with current\n // Groq production models.\n defaultModel: \"llama-3.3-70b-versatile\",\n supportedModels: [\n \"llama-3.3-70b-versatile\",\n \"llama3-8b-8192\",\n \"llama-3.1-8b-instant\",\n ],\n },\n mistral: {\n defaultModel: \"mistral-large-latest\",\n supportedModels: [\n \"mistral-large-latest\",\n \"mistral-medium-latest\",\n \"mistral-small-latest\",\n ],\n },\n cohere: {\n // command-r-plus (unversioned) is an alias that may lag; the stable\n // dated release is command-r-plus-08-2024.\n defaultModel: \"command-r-plus-08-2024\",\n supportedModels: [\n \"command-r-plus-08-2024\",\n \"command-r-plus\",\n \"command-r\",\n ],\n },\n ollama: {\n defaultModel: \"llama3.1\",\n supportedModels: [\"llama3.1\", \"llama3.2\", \"mistral\", \"codestral\"],\n },\n },\n} as const;\n\nexport const BUILDER_MODEL_CONFIG = AGENT_MODEL_CONFIG.builder;\nexport const ANTHROPIC_MODEL_CONFIG = AGENT_MODEL_CONFIG.anthropic;\nexport const AI_SDK_MODEL_CONFIG = AGENT_MODEL_CONFIG.aiSdk;\n\nexport type AISDKProvider = keyof typeof AI_SDK_MODEL_CONFIG;\n\nexport const DEFAULT_MODEL = BUILDER_MODEL_CONFIG.defaultModel;\nexport const DEFAULT_OPENAI_MODEL = AI_SDK_MODEL_CONFIG.openai.defaultModel;\nexport const DEFAULT_ANTHROPIC_MODEL = ANTHROPIC_MODEL_CONFIG.defaultModel;\n"]}
|
package/dist/cli/skills.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EAKL,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAC;AAUxB,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGjE,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/skills.js
CHANGED
|
@@ -343,14 +343,28 @@ iteration, or a human-in-the-loop choice among design directions.
|
|
|
343
343
|
|
|
344
344
|
## Design Quality Bar
|
|
345
345
|
|
|
346
|
+
Generic "AI slop" comes from letting one prompt set taste, explore, and emit code
|
|
347
|
+
at once — so the model returns the training-average (Inter, an indigo/violet
|
|
348
|
+
gradient, a centered hero, three rounded cards). The variant flow above exists to
|
|
349
|
+
separate those jobs; use it, and hold this bar:
|
|
350
|
+
|
|
346
351
|
- Before generating, name the concrete audience, the screen's primary job, and
|
|
347
352
|
the visual thesis. If the brief is vague, make a reasonable choice and state
|
|
348
353
|
it instead of producing a generic dashboard/landing-page default.
|
|
349
|
-
-
|
|
350
|
-
|
|
354
|
+
- Refuse the defaults, and pair every "don't" with a "do" (banning Inter alone
|
|
355
|
+
just makes you reach for Roboto). Avoid Inter/Roboto/system fonts, the
|
|
356
|
+
indigo/violet slop palette (\`#6366F1\`/\`#8B5CF6\`/\`#A855F7\`) and purple-on-white
|
|
357
|
+
gradients, and centered-hero + three-icon-card layouts; instead pick a
|
|
358
|
+
distinctive font pairing, one non-default palette family with a single decisive
|
|
359
|
+
accent, and an asymmetric layout with a clear focal point.
|
|
351
360
|
- Make each direction distinct in structure and behavior, not just palette.
|
|
352
361
|
Give every variant one memorable signature choice, then keep the surrounding
|
|
353
|
-
chrome disciplined.
|
|
362
|
+
chrome disciplined. Even your creative picks converge (Space Grotesk
|
|
363
|
+
everywhere) — vary deliberately so two directions never share a fingerprint.
|
|
364
|
+
- For existing products, inspect the current screen, design system, tokens, and
|
|
365
|
+
component language before inventing a new direction. Treat any drift back to a
|
|
366
|
+
default as a missing token to pin, and vary layout per screen so on-brand does
|
|
367
|
+
not become same-in-your-colors.
|
|
354
368
|
- Treat copy, data, and imagery as design material. Use realistic domain
|
|
355
369
|
content and first-party/generated assets when images matter; avoid lorem
|
|
356
370
|
ipsum, vague SaaS filler, and decorative placeholder boxes.
|