@agent-native/core 0.7.52 → 0.7.53

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.
@@ -1,28 +1,30 @@
1
1
  ---
2
2
  title: "Forms Template"
3
- description: "Agent-native form builder — create, edit, and analyze forms through natural language, with a live preview and click-to-edit GUI."
3
+ description: "Agent-native form builder — create, edit, publish, and route form submissions through natural language plus a visual editor."
4
4
  ---
5
5
 
6
6
  # Forms
7
7
 
8
- A form builder where the form builder _is_ the agent. Drag fields around in the editor, or just say "add a 'how did you hear about us' dropdown with five options and make it required" — same result, same underlying data. Think Typeform, but you can build, edit, and analyze forms by talking to the agent.
8
+ Forms is an agent-native form builder. Describe the form you want, refine it in the editor, and publish a public form that stores submissions in your own SQL database.
9
9
 
10
- When you open the app, you'll see a list of your forms on the left and the editor in the middle. Open a form and you can click any field to fine-tune it, or ask the agent to make changes for you.
10
+ When you open the app, you see your forms, the current editor, and a live preview. The agent can create a form from a prompt, update field labels and options, change validation, and connect submission destinations using the same actions the UI uses.
11
11
 
12
12
  ## What you can do with it
13
13
 
14
- - **Build forms conversationally.** "Create a contact form," "add an NPS score question," "make the email field required." The agent updates the schema and the preview updates live.
15
- - **Click-to-edit fine-tuning.** Every field in the preview is editable in place label, placeholder, validation, conditional logic with the usual GUI controls.
16
- - **Field types out of the box:** short text, long text, email, phone, URL, number, date, single-select, multi-select, rating, file upload, section header, conditional branch.
17
- - **Responses dashboard.** Per-response view plus an aggregate dashboard the agent can pivot on request: "show me signups from the last 30 days grouped by source."
18
- - **Agent-driven analysis.** Ask the agent to cluster free-text responses, extract sentiments, or draft a reply to everyone who scored the NPS below 7.
19
- - **Publish anywhere.** Public share link, embed snippet, branded thank-you page, webhook on submit.
14
+ - **Build forms conversationally.** "Create a contact form," "add an NPS score question," "make the email field required." The agent updates the form schema and the preview updates from SQL-backed state.
15
+ - **Fine-tune visually.** Edit labels, placeholders, required state, options, and field order from the builder UI when you want direct control.
16
+ - **Use the shipped field types.** Text, email, number, long text, select, multi-select, checkbox, radio, date, rating, and scale fields are supported out of the box.
17
+ - **Collect responses.** Each submission is stored in SQL with a per-response detail view and a dashboard for reviewing entries.
18
+ - **Route submissions.** Send submission payloads to webhooks, Slack, Discord, or Google Sheets using the built-in integrations.
19
+ - **Publish public forms.** Share a public form URL and show a thank-you message after submission.
20
20
 
21
21
  ## Why it's interesting
22
22
 
23
- The hard part of a form builder isn't the editor UI it's everything around it: changing the questions after responses are already in, analyzing what people said, adding conditional logic, publishing, notifications, hooking it into Slack or your CRM. Most of that is just asking the agent. See [What is agent-native?](/docs/what-is-agent-native) for the bigger picture.
23
+ The useful part of an agent-native form builder is that setup and iteration happen in the same place. You can ask the agent to add fields, adjust copy, connect Slack notifications, or inspect the submission data, while the UI remains the direct editor for the same SQL records.
24
24
 
25
- ## For developers
25
+ See [What is agent-native?](/docs/what-is-agent-native) for the broader framework model.
26
+
27
+ ## For Developers
26
28
 
27
29
  ### Scaffolding
28
30
 
@@ -30,25 +32,28 @@ The hard part of a form builder isn't the editor UI — it's everything around i
30
32
  pnpm dlx @agent-native/core create my-forms --template forms --standalone
31
33
  ```
32
34
 
33
- For a workspace with forms alongside other apps:
35
+ For a workspace with Forms alongside other apps:
34
36
 
35
37
  ```bash
36
- pnpm dlx @agent-native/core create my-platform # pick Forms + other templates
38
+ pnpm dlx @agent-native/core create my-platform
37
39
  ```
38
40
 
39
- ### Customize it
41
+ Pick Forms and any other templates you want during the workspace setup.
42
+
43
+ ### Customize It
40
44
 
41
- Ask the agent for the outcome you want:
45
+ Ask the agent for shipped behavior first:
42
46
 
43
- - "Add a signature field where people can draw their name."
44
- - "When someone submits this form, post it in our #signups Slack channel." (Connect Slack first via [Messaging](/docs/messaging).)
47
+ - "Add a required radio field for preferred contact method."
48
+ - "Post every new submission to Slack." Connect Slack first via [Messaging](/docs/messaging).
49
+ - "Add a webhook destination for our CRM."
50
+ - "Create a customer feedback form with a 1-10 scale and a long-text follow-up."
45
51
  - "Make some forms public and others login-only."
46
- - "Send everyone who scored below 5 a follow-up email asking what we could do better."
47
52
 
48
- The agent figures out the schema changes, components, and storage on its own you just describe the result you want. See [Cloneable SaaS](/docs/cloneable-saas) for the full clone, customize, deploy flow.
53
+ If you need new capabilities such as file uploads, signatures, or custom field widgets, treat them as template extensions: add the SQL shape, actions, UI editor controls, public renderer support, and agent instructions together. See [Creating Templates](/docs/creating-templates) for the current build pattern.
49
54
 
50
- ## What's next
55
+ ## What's Next
51
56
 
52
57
  - [**Cloneable SaaS**](/docs/cloneable-saas) — the clone-and-own model
53
58
  - [**Actions**](/docs/actions) — the action system powering the builder
54
- - [**Real-Time Sync**](/docs/real-time-collaboration) — how the preview stays in sync with agent edits
59
+ - [**Messaging**](/docs/messaging) — Slack and other submission destinations
@@ -14,6 +14,7 @@ When you open the app, you'll see your inbox on the left, the open thread in the
14
14
  - **Read and triage email** with keyboard shortcuts (`J`/`K` to move, `E` to archive, `R` to reply, `C` to compose).
15
15
  - **Connect multiple Gmail accounts** — personal and work in one inbox.
16
16
  - **Ask the agent to do anything you can do.** "Summarize my unread emails." "Draft a reply that politely declines." "Archive all Netlify bot emails older than a week."
17
+ - **Queue drafts for review.** Teammates and Slack users can ask the agent to prepare an email for an org member; the owner reviews, edits, and sends it from Mail.
17
18
  - **Auto-triage with rules.** Set up automation rules in plain English ("from a newsletter") with actions (label, archive, mark read, star, trash).
18
19
  - **Track opens and clicks** on the emails you send.
19
20
  - **Search across every connected inbox** with one query.
@@ -96,6 +97,8 @@ agent-native add-app
96
97
 
97
98
  **Multiple compose drafts.** The compose panel supports multiple draft tabs at once. Each draft is stored as an `application_state` entry at `compose-{id}` and syncs live between the agent and the UI. The agent can create a new draft with `manage-draft --action=create`, edit your in-progress draft with `--action=update`, or close tabs with `--action=delete`. Drafts use markdown in the body field; the TipTap editor renders it as rich text and converts to HTML on send.
98
99
 
100
+ **Queued draft review.** Drafts requested by teammates or Slack are durable SQL rows in `queued_email_drafts`. The agent uses `queue-email-draft` to assign a draft to an org member, returns a review URL such as `/draft-queue/<id>`, and waits for the owner to review or explicitly send. The queue supports listing assigned drafts, editing them, opening one in the compose panel, dismissing it, and sending one or all reviewed drafts.
101
+
99
102
  **AI triage via automations.** Mail supports automation rules that run against new inbox email using AI. A rule has a natural-language condition (for example, `"from a newsletter"` or `"subject contains invoice"`) and a list of actions (`label`, `archive`, `mark_read`, `star`, `trash`). Manage them via `pnpm action manage-automations --action=create|list|update|delete|enable|disable`, or through the Settings page. Rules fire automatically and can be triggered manually with `pnpm action trigger-automations`.
100
103
 
101
104
  **Send tracking.** Sent messages get open-pixel and link-click tracking injected automatically. Settings live under `mail-settings.tracking` with `tracking.opens` and `tracking.clicks` (both default `true`). Only links in the new portion of a reply or forward are rewritten — quoted content is left alone. Pull stats for any sent message with `pnpm action get-tracking --id=<message-id>`, or from `GET /api/emails/:id/tracking`. Open and click events are stored in the `email_tracking` and `email_link_tracking` tables.
@@ -132,6 +135,7 @@ When a Google account is connected, email lives in Gmail — the app is a view o
132
135
  | `getSetting("labels")` | System and user labels, with unread counts |
133
136
  | `getSetting("mail-settings")` | User profile, tracking preferences, signature, aliases |
134
137
  | `getSetting("aliases")` | Email aliases |
138
+ | `queued_email_drafts` table | Teammate-requested drafts awaiting owner review/send |
135
139
  | `email_tracking` table | Open-pixel events for sent messages |
136
140
  | `email_link_tracking` table | Link-click events for sent messages |
137
141
  | `application_state` table | `navigation`, `navigate`, `compose-{id}` entries (ephemeral) |
@@ -124,7 +124,7 @@ User edits (track values, parameter values, prop overrides, composition settings
124
124
 
125
125
  The agent always knows which composition you have open. Navigation state (`{ view, compositionId }`) is written to the framework's `application_state` table, and the `view-screen` action returns it plus a hint pointing at `app/remotion/registry.ts`. You don't have to tell the agent which composition you're on — ask it to act on "this one" and it will.
126
126
 
127
- Under the hood the agent calls actions like `navigate`, `create-composition`, `generate-animated-component`, and edits `app/remotion/registry.ts` and `app/remotion/compositions/*.tsx` directly. Every change shows up in the timeline.
127
+ Under the hood the agent calls actions like `navigate`, `save-composition`, and `generate-animated-component`. SQL-backed composition records are created or updated through `save-composition`; code-backed Remotion components still live in `app/remotion/compositions/*.tsx` and are registered in `app/remotion/registry.ts`.
128
128
 
129
129
  ### Data model
130
130
 
@@ -151,10 +151,10 @@ The template folder is `templates/videos/` (the user-facing slug is `video`, but
151
151
 
152
152
  - `view-screen.ts` — returns current navigation state for the agent.
153
153
  - `navigate.ts` — navigate to a composition (`--compositionId <id>`) or the home view (`--view home`).
154
- - `create-composition.ts` — scaffold a new composition with the standard camera and cursor tracks.
155
- - `generate-animated-component.ts` — generate a new animated component file with boilerplate.
154
+ - `save-composition.ts` — create or update a SQL-backed composition record.
155
+ - `generate-animated-component.ts` — generate a new Remotion component file with boilerplate.
156
156
  - `validate-compositions.ts` — check all registered compositions for structural problems.
157
- - `list-compositions.ts`, `get-composition.ts`, `update-composition.ts`, `delete-composition.ts`, `save-composition.ts`CRUD over the SQL table.
157
+ - `list-compositions.ts`, `get-composition.ts`, `update-composition.ts`, `delete-composition.ts` — read, update, and delete SQL-backed composition records.
158
158
 
159
159
  **Routes** — `templates/videos/app/routes/`
160
160
 
@@ -120,7 +120,7 @@ The vision: fewer handoffs, one person doing the work of a small team.
120
120
 
121
121
  ## Fork and customize {#fork-and-customize}
122
122
 
123
- Agent-native apps follow a fork-and-customize model. You start from a **cloneable SaaS** template — Mail, Calendar, Analytics, Slides, Clips, Forms, Dispatch — and make it yours:
123
+ Agent-native apps follow a fork-and-customize model. You start from a **cloneable SaaS** template — Mail, Calendar, Analytics, Slides, Clips, Design, Forms, Dispatch — and make it yours:
124
124
 
125
125
  1. Pick a template on [agent-native.com/templates](/templates)
126
126
  2. Use it immediately as a hosted app (e.g. mail.agent-native.com)
@@ -7,7 +7,7 @@ description: "Claude-Code-level customization per user — skills, memory, instr
7
7
 
8
8
  > **See also:** Deploying multiple apps as one workspace? See [Multi-App Workspaces](/docs/multi-app-workspace). Governance, branching, and CODEOWNERS? See [Workspace Governance](/docs/workspace-management).
9
9
 
10
- Every agent-native app ships with a **workspace**: the customization layer that makes the agent yours. It contains team instructions (`AGENTS.md`), per-user memory (`learnings.md`), skills the agent pulls in on demand, custom sub-agents, scheduled jobs, and connected MCP servers — everything you'd expect from a Claude Code / Codex setup.
10
+ Every agent-native app ships with a **workspace**: the customization layer that makes the agent yours. It contains team instructions (`AGENTS.md`), shared learnings (`LEARNINGS.md`), personal structured memory (`memory/MEMORY.md`), skills the agent pulls in on demand, custom sub-agents, scheduled jobs, and connected MCP servers — everything you'd expect from a Claude Code / Codex setup.
11
11
 
12
12
  The twist: **it's SQL rows, not filesystem files.** Each user gets their own workspace stored in the database. There's no dev-box to spin up, no container per user, no files to mount. A multi-tenant SaaS can give every user a fully-customizable agent for essentially free, because all of it is rows — personal memory, personal MCP servers, personal skills, personal sub-agents — and the shared codebase hosts all of them at once.
13
13
 
@@ -17,7 +17,7 @@ The twist: **it's SQL rows, not filesystem files.** Each user gets their own wor
17
17
  | One codebase per developer | One codebase, many users |
18
18
  | Needs a dev-box or container | Runs on any serverless/edge host |
19
19
  | Customization at `~/.claude/` | Customization per-user, scoped `u:<email>:…` |
20
- | Per-project `CLAUDE.md` / skills | Per-app `AGENTS.md` + per-user `learnings.md` |
20
+ | Per-project `CLAUDE.md` / skills | Per-app `AGENTS.md` + workspace memory resources |
21
21
  | MCP config in a JSON file | MCP config in JSON _or_ the settings UI, per scope |
22
22
 
23
23
  Same capabilities. Different economics. See [Cloneable SaaS](/docs/cloneable-saas) for why this matters for SaaS.
@@ -32,19 +32,20 @@ The **Workspace** tab in the agent sidebar is where you and the agent share pers
32
32
  - Create files with the `+` menu. Upload with the upload button. Edit inline (visual or code view).
33
33
  - **Personal** is just you. **Shared** is your team/org.
34
34
  - The agent can read, write, and rename any of these files as part of a conversation.
35
- - Special files the agent always reads: `AGENTS.md` (team rules) and `learnings.md` (per-user memory the agent auto-updates when you correct it).
35
+ - Special files the agent preloads: shared `AGENTS.md`, shared `LEARNINGS.md`, and personal structured memory at `memory/MEMORY.md`.
36
36
 
37
37
  ## What goes in here? {#what-goes-in-here}
38
38
 
39
- | File / path | What it's for |
40
- | --------------------------- | -------------------------------------------------------------------------------------------------------------- |
41
- | `AGENTS.md` (Shared) | Team instructions the agent reads every turn — tone, rules, domain context, skill references. |
42
- | `learnings.md` (Personal) | **Agent memory.** Per-user file the agent auto-writes to on corrections/preferences and auto-reads every turn. |
43
- | `skills/<name>.md` | Focused domain guidance the agent pulls in on demand (invoked with `/` slash commands). |
44
- | `agents/<name>.md` | **Custom agents** reusable sub-agent profiles the agent can delegate to (invoked with `@` mentions). |
45
- | `remote-agents/<name>.json` | A2A manifests for connected remote agents edited via a form, not raw JSON. |
46
- | `jobs/<name>.md` | Scheduled tasks that run on a cron (see the recurring-jobs docs). |
47
- | Anything else | Notes, prompts, config, dataset snippets any text file. |
39
+ | File / path | What it's for |
40
+ | --------------------------- | ------------------------------------------------------------------------------------------------------ |
41
+ | `AGENTS.md` (Shared) | Team instructions the agent reads every turn — tone, rules, domain context, skill references. |
42
+ | `LEARNINGS.md` (Shared) | Shared corrections, conventions, and durable project memory the agent preloads. |
43
+ | `memory/MEMORY.md` | Personal structured memory the chat preloads for the current user. |
44
+ | `skills/<name>.md` | Focused domain guidance the agent pulls in on demand (invoked with `/` slash commands). |
45
+ | `agents/<name>.md` | **Custom agents** reusable sub-agent profiles the agent can delegate to (invoked with `@` mentions). |
46
+ | `remote-agents/<name>.json` | A2A manifests for connected remote agents — edited via a form, not raw JSON. |
47
+ | `jobs/<name>.md` | Scheduled tasks that run on a cron (see the recurring-jobs docs). |
48
+ | Anything else | Notes, prompts, config, dataset snippets — any text file. |
48
49
 
49
50
  ## Overview {#overview}
50
51
 
@@ -95,7 +96,7 @@ Change how the agent behaves, in 60 seconds.
95
96
  - **Skills** (`+` → **Skill**) — focused how-to files invoked in chat with `/skill-name`.
96
97
  - **Agents** (`+` → **Agent**) — reusable sub-agent personas invoked with `@agent-name`.
97
98
  - **Scheduled Tasks** (`+` → **Scheduled Task**) — prompts that run on a cron.
98
- - **learnings.md** — your Personal file the agent auto-updates whenever you correct it.
99
+ - **Memory** — shared `LEARNINGS.md` and personal `memory/MEMORY.md` keep durable context available across conversations.
99
100
 
100
101
  ## How the Agent Uses Resources {#how-the-agent-uses-resources}
101
102
 
@@ -126,11 +127,16 @@ Be concise. Lead with the answer.
126
127
  | data-analysis | `skills/data-analysis.md` | BigQuery and data workflows |
127
128
  ```
128
129
 
129
- ### learnings.md — agent memory {#learnings-md}
130
+ ### Memory {#memory}
130
131
 
131
- `learnings.md` is the agent's long-term memory about _you_. It's a **Personal-scope** resource (one per user) that the agent auto-reads at the start of every conversation and auto-writes to whenever it picks up something worth remembering.
132
+ The workspace has two current memory surfaces:
132
133
 
133
- **What gets saved.** When you correct the agent ("no, always use X instead of Y"), share a preference ("I prefer concise answers"), or reveal context ("my team calls this 'the dispatch layer'"), the agent appends the learning to `learnings.md` so it doesn't repeat the mistake or have to re-ask next time. This behavior lives in the framework system prompt (the `capture-learnings` skill spells out the rules for when and how).
134
+ - `LEARNINGS.md` in **Shared** scope for project-wide conventions, corrections, and durable team knowledge.
135
+ - `memory/MEMORY.md` in **Personal** scope for structured memory about the current user.
136
+
137
+ The resource system also seeds a personal `LEARNINGS.md` for compatibility with older workspaces, but the chat preload path is shared `LEARNINGS.md` plus personal `memory/MEMORY.md`.
138
+
139
+ **What gets saved.** When you correct the agent ("no, always use X instead of Y"), share a preference ("I prefer concise answers"), or reveal context ("my team calls this 'the dispatch layer'"), the agent can capture that learning so it doesn't repeat the mistake or have to re-ask next time. Project-wide learnings belong in shared `LEARNINGS.md`; user-specific memory belongs under `memory/`. This behavior lives in the framework system prompt and the `capture-learnings` skill spells out the rules for when and how.
134
140
 
135
141
  **What it looks like.**
136
142
 
@@ -152,13 +158,14 @@ Be concise. Lead with the answer.
152
158
 
153
159
  **Where it fits.**
154
160
 
155
- | Surface | Scope | Written by | Read when |
156
- | -------------- | -------- | ------------------------- | ---------------------------- |
157
- | `AGENTS.md` | Shared | Humans / agent on request | Every turn |
158
- | `learnings.md` | Personal | Agent, automatically | Every turn |
159
- | `skills/…` | Shared | Humans / agent on request | On demand (`/slash` command) |
161
+ | Surface | Scope | Written by | Read when |
162
+ | ------------------ | -------- | ------------------------- | ---------------------------- |
163
+ | `AGENTS.md` | Shared | Humans / agent on request | Every turn |
164
+ | `LEARNINGS.md` | Shared | Humans / agent on request | Every turn |
165
+ | `memory/MEMORY.md` | Personal | Agent / humans | Every turn |
166
+ | `skills/…` | Shared | Humans / agent on request | On demand (`/slash` command) |
160
167
 
161
- Users can edit `learnings.md` directly in the Workspace tab — it's a regular resource. Delete lines the agent got wrong or promote them into `AGENTS.md` if they apply to the whole team.
168
+ Users can edit these memory files directly in the Workspace tab — they're regular resources. Delete lines the agent got wrong, keep personal preferences in `memory/MEMORY.md`, or promote team-wide rules into `AGENTS.md`.
162
169
 
163
170
  ## Skills {#skills}
164
171
 
@@ -222,7 +229,7 @@ Recommended conventions:
222
229
  There are two agent types in Workspace:
223
230
 
224
231
  - **Custom agents** — local profiles in `agents/*.md`, executed inside the current app/runtime
225
- - **Connected agents** — remote A2A peers described by manifests in `agents/*.json`
232
+ - **Connected agents** — remote A2A peers described by manifests in `remote-agents/*.json` (legacy `agents/*.json` manifests are still recognized)
226
233
 
227
234
  Use custom agents for delegation within one app. Use connected agents when you need to call another app over A2A.
228
235
 
@@ -286,13 +293,13 @@ If no skills are configured, the dropdown shows a hint with a link to these docs
286
293
 
287
294
  The resource system works identically in both modes. The difference is what additional sources are available for `@` tagging and `/` commands:
288
295
 
289
- | Feature | Dev Mode | Production |
290
- | ------------------------ | ----------------------------------------------------------------------- | ------------------------------------------------------ |
291
- | @ tagging | Codebase files + workspace resources + custom agents + connected agents | Workspace resources + custom agents + connected agents |
292
- | / slash commands | .agents/skills/ + resource skills | Resource skills only |
293
- | Agent file access | Filesystem + resources | Resources only |
294
- | Workspace panel | Full access | Full access |
295
- | AGENTS.md / learnings.md | Available | Available |
296
+ | Feature | Dev Mode | Production |
297
+ | ------------------ | ----------------------------------------------------------------------- | ------------------------------------------------------ |
298
+ | @ tagging | Codebase files + workspace resources + custom agents + connected agents | Workspace resources + custom agents + connected agents |
299
+ | / slash commands | .agents/skills/ + resource skills | Resource skills only |
300
+ | Agent file access | Filesystem + resources | Resources only |
301
+ | Workspace panel | Full access | Full access |
302
+ | AGENTS.md / memory | Available | Available |
296
303
 
297
304
  ## Resource API {#resource-api}
298
305
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.7.52",
3
+ "version": "0.7.53",
4
4
  "type": "module",
5
5
  "description": "Framework for agent-native application development — where AI agents and UI share state via files",
6
6
  "license": "MIT",