@agent-native/core 0.172.3 → 0.172.6
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/templates/calendar/actions/get-settings.ts +2 -5
- package/corpus/templates/calendar/actions/list-events.ts +21 -80
- package/corpus/templates/calendar/actions/update-settings.ts +11 -16
- package/corpus/templates/calendar/actions/view-screen.ts +25 -10
- package/corpus/templates/calendar/app/components/calendar/CommandPalette.tsx +7 -1
- package/corpus/templates/calendar/app/components/calendar/EventCard.tsx +5 -2
- package/corpus/templates/calendar/app/lib/calendar-timezone.ts +3 -18
- package/corpus/templates/calendar/app/lib/event-form-utils.ts +3 -62
- package/corpus/templates/calendar/changelog/2026-07-22-calendar-grid-local-time.md +6 -0
- package/corpus/templates/calendar/changelog/2026-08-19-the-calendar-loads-again-for-accounts-whose-saved-timezone-w.md +6 -0
- package/corpus/templates/calendar/server/handlers/settings.ts +8 -24
- package/corpus/templates/calendar/server/lib/calendar-settings.ts +58 -0
- package/corpus/templates/calendar/server/lib/find-time.ts +15 -93
- package/corpus/templates/calendar/shared/settings.ts +15 -9
- package/corpus/templates/calendar/shared/timezone.ts +127 -0
- package/corpus/templates/factory/AGENTS.md +5 -3
- package/corpus/templates/factory/actions/babysit-pull-request.ts +6 -0
- package/corpus/templates/factory/actions/list-factory-automations.ts +2 -2
- package/corpus/templates/factory/actions/save-factory-automation.ts +0 -5
- package/corpus/templates/factory/changelog/2026-08-24-slack-checking-works-for-teammate-created-factories.md +6 -0
- package/corpus/templates/factory/changelog/2026-08-24-teammates-can-edit-and-run-factory-jobs.md +6 -0
- package/corpus/templates/factory/server/lib/factory-scope.ts +8 -0
- package/corpus/templates/factory/server/lib/require-factory-automation.ts +1 -9
- package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +2 -1
- package/corpus/templates/slides/actions/list-decks.ts +79 -5
- package/corpus/templates/slides/app/components/deck/DeckCard.tsx +21 -1
- package/corpus/templates/slides/app/components/editor/ShareDialog.tsx +49 -21
- package/corpus/templates/slides/app/context/DeckContext.tsx +49 -21
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +2 -2
- package/corpus/templates/slides/app/pages/Index.tsx +11 -13
- package/corpus/templates/slides/changelog/2026-08-24-deck-previews-and-sharing-live-in-the-overflow-menu.md +5 -0
- package/dist/agent/production-agent.js +5 -1
- package/dist/agent/types.d.ts +5 -0
- package/dist/automations/service.d.ts +6 -0
- package/dist/automations/service.js +20 -0
- package/dist/client/settings/SettingsPanel.js +80 -33
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/jobs/run-now.js +2 -2
- package/dist/observability/posthog-ai.d.ts +36 -11
- package/dist/observability/posthog-ai.js +99 -30
- package/dist/observability/routes.js +9 -2
- package/dist/observability/traces.js +330 -142
- package/dist/tracking/providers.js +9 -3
- package/dist/vite/client.js +5 -2
- package/docs/content/docs-components.mdx +20 -1
- package/docs/content/observability.mdx +27 -10
- package/docs/content/template-calendar-agent.mdx +63 -26
- package/docs/content/template-calendar-developers.mdx +165 -40
- package/docs/content/template-calendar-features.mdx +276 -0
- package/docs/content/template-calendar-integrations.mdx +78 -0
- package/docs/content/template-calendar.mdx +56 -123
- package/package.json +1 -1
- package/docs/content/template-calendar-booking-links.mdx +0 -73
- package/docs/content/template-calendar-scheduling.mdx +0 -128
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Calendar: Features"
|
|
3
|
+
description: "Every core Calendar feature, including views, availability, finding time, and booking links, with setup steps for each."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Features
|
|
7
|
+
|
|
8
|
+
Every core Calendar feature: how it works, and how to set it up. See
|
|
9
|
+
[Calendar](/docs/template-calendar) for the overview and
|
|
10
|
+
[Talk to the Agent](/docs/template-calendar-agent) for the full list of
|
|
11
|
+
prompts.
|
|
12
|
+
|
|
13
|
+
## Calendar views
|
|
14
|
+
|
|
15
|
+
<Video
|
|
16
|
+
src="https://cdn.builder.io/o/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fd033f1071872452687ea570ed2ab6da3?alt=media&token=c6318aee-94cc-4898-be16-32b8fbf4fb2f&apiKey=YJIGb4i01jvw0SRdL5Bt"
|
|
17
|
+
alt="A brief tour of the calendar view."
|
|
18
|
+
caption="A tour of the calendar view, including viewing another person's calendar and adding events."
|
|
19
|
+
autoplay={true}
|
|
20
|
+
loop={true}
|
|
21
|
+
/>
|
|
22
|
+
|
|
23
|
+
Switch between day, week, and month view from the toolbar. Every view reads
|
|
24
|
+
your real, connected Google Calendar. Nothing is cached or synthetic.
|
|
25
|
+
|
|
26
|
+
- **Multiple accounts** show in the same grid, color-coded, if you connect
|
|
27
|
+
more than one Google account (work + personal).
|
|
28
|
+
- **Read-only ICS/`webcal://` feeds** cover things like company holidays, a
|
|
29
|
+
conference schedule, or a teammate's public calendar. They mix into the
|
|
30
|
+
same view with their own color, though you can't edit events that come
|
|
31
|
+
from a feed.
|
|
32
|
+
- **Overlay a teammate's calendar** so their events show alongside yours,
|
|
33
|
+
each in their own color. This helps when a manager needs to check a direct
|
|
34
|
+
report's schedule.
|
|
35
|
+
- **Attendee timezones** show a guest's local start time when Google reports
|
|
36
|
+
it, or from a saved per-guest override when it doesn't.
|
|
37
|
+
- **Working locations** (home, office, elsewhere) show as a real status, not
|
|
38
|
+
a generic all-day event, and never block your availability. **Recurring
|
|
39
|
+
events** are supported end to end. Edit a single occurrence or the whole
|
|
40
|
+
series.
|
|
41
|
+
|
|
42
|
+
<Callout tone="warning">
|
|
43
|
+
|
|
44
|
+
If part of your schedule fails to load, whether one account's token expired
|
|
45
|
+
or a feed URL times out, the app tells you which source failed instead of
|
|
46
|
+
quietly showing an empty day. A blank calendar and a broken connection look
|
|
47
|
+
different on purpose, so you never mistake "nothing loaded" for "nothing
|
|
48
|
+
scheduled."
|
|
49
|
+
|
|
50
|
+
</Callout>
|
|
51
|
+
|
|
52
|
+
<Steps>
|
|
53
|
+
|
|
54
|
+
### Connect your calendar
|
|
55
|
+
|
|
56
|
+
Open **Settings**, click **Connect Google Calendar**, and approve. Connect
|
|
57
|
+
more accounts the same way if you want personal + work overlayed.
|
|
58
|
+
|
|
59
|
+
### Subscribe to a read-only feed
|
|
60
|
+
|
|
61
|
+
In **Settings → External Calendars**, paste an ICS or `webcal://` URL.
|
|
62
|
+
|
|
63
|
+
### Overlay a teammate's calendar
|
|
64
|
+
|
|
65
|
+
Ask the agent to "Add Priya's calendar to my view in blue," or add them from
|
|
66
|
+
**Settings → Overlays**.
|
|
67
|
+
|
|
68
|
+
</Steps>
|
|
69
|
+
|
|
70
|
+
## Finding time
|
|
71
|
+
|
|
72
|
+
Ask the agent to find time and it checks your availability and your real
|
|
73
|
+
Google Calendar events. When you name other people, it also checks their
|
|
74
|
+
free/busy status, then proposes concrete slots. Once you pick one, the agent
|
|
75
|
+
books it directly on Google Calendar.
|
|
76
|
+
|
|
77
|
+
When you're scheduling with someone new, search by name or email instead of
|
|
78
|
+
typing an exact address. Calendar searches your Google Contacts plus your
|
|
79
|
+
Workspace directory, so you can ask "who is Dana at Acme" or "find people
|
|
80
|
+
named Priya" and get real matches to pick from.
|
|
81
|
+
|
|
82
|
+
<Diagram id="doc-block-calendar3" title="From availability to a booked event" summary="The agent combines your availability rules, your existing events, and (when named) other attendees' free/busy before proposing slots.">
|
|
83
|
+
|
|
84
|
+
```html
|
|
85
|
+
<div class="diagram-flow">
|
|
86
|
+
<div class="diagram-col">
|
|
87
|
+
<div class="diagram-box">
|
|
88
|
+
Your availability<br /><small class="diagram-muted"
|
|
89
|
+
>weekly hours, buffer, notice</small
|
|
90
|
+
>
|
|
91
|
+
</div>
|
|
92
|
+
<div class="diagram-box">
|
|
93
|
+
Existing events<br /><small class="diagram-muted"
|
|
94
|
+
>Google Calendar, live</small
|
|
95
|
+
>
|
|
96
|
+
</div>
|
|
97
|
+
<div class="diagram-box">
|
|
98
|
+
Attendees' free/busy<br /><small class="diagram-muted"
|
|
99
|
+
>when you name people</small
|
|
100
|
+
>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
<div class="diagram-arrow diagram-muted" aria-hidden="true">→</div>
|
|
104
|
+
<div class="diagram-panel center">
|
|
105
|
+
<span class="diagram-pill accent">Find a time</span
|
|
106
|
+
><small class="diagram-muted">candidate slots</small>
|
|
107
|
+
</div>
|
|
108
|
+
<div class="diagram-arrow diagram-muted" aria-hidden="true">→</div>
|
|
109
|
+
<div class="diagram-box">You pick one</div>
|
|
110
|
+
<div class="diagram-arrow diagram-muted" aria-hidden="true">→</div>
|
|
111
|
+
<div class="diagram-box">Event created on Google Calendar</div>
|
|
112
|
+
</div>
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
```css
|
|
116
|
+
.diagram-flow {
|
|
117
|
+
display: flex;
|
|
118
|
+
align-items: center;
|
|
119
|
+
gap: 12px;
|
|
120
|
+
flex-wrap: wrap;
|
|
121
|
+
}
|
|
122
|
+
.diagram-flow .diagram-col {
|
|
123
|
+
display: flex;
|
|
124
|
+
flex-direction: column;
|
|
125
|
+
gap: 10px;
|
|
126
|
+
}
|
|
127
|
+
.diagram-flow .diagram-arrow {
|
|
128
|
+
font-size: 22px;
|
|
129
|
+
line-height: 1;
|
|
130
|
+
}
|
|
131
|
+
.diagram-flow .center {
|
|
132
|
+
display: flex;
|
|
133
|
+
flex-direction: column;
|
|
134
|
+
align-items: center;
|
|
135
|
+
gap: 4px;
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
</Diagram>
|
|
140
|
+
|
|
141
|
+
<Steps>
|
|
142
|
+
|
|
143
|
+
### Ask for a slot
|
|
144
|
+
|
|
145
|
+
"Find a 1-hour slot next week with Sam and Priya."
|
|
146
|
+
|
|
147
|
+
### Pick one
|
|
148
|
+
|
|
149
|
+
The agent proposes concrete slots. Pick one in chat, or from the suggested
|
|
150
|
+
options in the UI.
|
|
151
|
+
|
|
152
|
+
### It's booked
|
|
153
|
+
|
|
154
|
+
The agent creates the event directly on Google Calendar and it shows up in
|
|
155
|
+
your view immediately.
|
|
156
|
+
|
|
157
|
+
</Steps>
|
|
158
|
+
|
|
159
|
+
## Booking links
|
|
160
|
+
|
|
161
|
+
Booking links are public pages where anyone can pick a time and book it
|
|
162
|
+
directly onto your calendar. This is the Calendly-style part of Calendar: set
|
|
163
|
+
up meeting types, the availability they draw from, and track who books.
|
|
164
|
+
|
|
165
|
+
### Meeting Types
|
|
166
|
+
|
|
167
|
+
A meeting type is one specific booking link, like "15 min intro" or "30 min
|
|
168
|
+
demo," each with its own duration, fields, and conferencing choice.
|
|
169
|
+
|
|
170
|
+
<Steps>
|
|
171
|
+
|
|
172
|
+
### Create a meeting type
|
|
173
|
+
|
|
174
|
+
Give it a title and duration (like "15 min intro" at 15 minutes), then ask
|
|
175
|
+
the agent or click **New booking link**.
|
|
176
|
+
|
|
177
|
+
### Add options
|
|
178
|
+
|
|
179
|
+
Set alternate durations so a visitor can choose 15, 30, or 60 minutes on the
|
|
180
|
+
same link, custom fields to collect a company name or topic, a conferencing
|
|
181
|
+
choice (Google Meet, Zoom, or a custom link), a color, and required
|
|
182
|
+
co-hosts, other people who must also be free before a slot is offered. When
|
|
183
|
+
someone books, everyone (you and your co-hosts) gets invited to the resulting
|
|
184
|
+
Google Calendar event.
|
|
185
|
+
|
|
186
|
+
### Connect Zoom (optional)
|
|
187
|
+
|
|
188
|
+
Google Meet needs no setup. It's added the same way any Google Calendar
|
|
189
|
+
invite gets a Meet link. For Zoom, connect your account once from
|
|
190
|
+
**Settings**. After that, any meeting type set to Zoom creates a real Zoom
|
|
191
|
+
meeting for each new booking and attaches the join link to the confirmation.
|
|
192
|
+
|
|
193
|
+
### Share it
|
|
194
|
+
|
|
195
|
+
Share the public URL anywhere. Grant a teammate viewer/editor/admin access
|
|
196
|
+
from the link's **Share** menu if they should help manage it too. That's
|
|
197
|
+
separate from public booking access, which anyone with the URL always has
|
|
198
|
+
while the link is active.
|
|
199
|
+
|
|
200
|
+
</Steps>
|
|
201
|
+
|
|
202
|
+
Every meeting type has a public URL at `/book/{your-booking-name}/{slug}`,
|
|
203
|
+
for example `/book/steve/30min`. Your booking name is generated automatically
|
|
204
|
+
from your email the first time you create a link, and you can change it later
|
|
205
|
+
from Settings (up to three times every 30 days, since it's part of every
|
|
206
|
+
public link you've shared).
|
|
207
|
+
|
|
208
|
+
<Video
|
|
209
|
+
src="https://cdn.builder.io/o/assets%2FYJIGb4i01jvw0SRdL5Bt%2F3dda132ad91b44dfa11c9d4e4b9e1b79?alt=media&token=b25577a1-ef91-48f8-a474-e5a39b246c25&apiKey=YJIGb4i01jvw0SRdL5Bt"
|
|
210
|
+
alt="Video showing how to create a new booking meeting type."
|
|
211
|
+
caption="Video showing how to create a new booking meeting type."
|
|
212
|
+
autoplay={true}
|
|
213
|
+
loop={true}
|
|
214
|
+
/>
|
|
215
|
+
|
|
216
|
+
- **Renaming a meeting type**: change its URL slug at any time, for example
|
|
217
|
+
from `/book/steve/into-call` to `/book/steve/intro`. The old URL keeps
|
|
218
|
+
working: visitors who still have it are automatically forwarded to the new
|
|
219
|
+
one, so nothing you've already shared breaks.
|
|
220
|
+
|
|
221
|
+
### Availability
|
|
222
|
+
|
|
223
|
+
Availability is a weekly schedule: which days you work and what hours you're
|
|
224
|
+
open on each one, plus your timezone. On top of that you can set **buffer
|
|
225
|
+
time** between meetings so back-to-back bookings don't happen, **minimum
|
|
226
|
+
notice** so people can't book you five minutes from now, **how far ahead**
|
|
227
|
+
people can book (advance window), and a **default slot length** for new
|
|
228
|
+
meeting types.
|
|
229
|
+
|
|
230
|
+
The agent reads the same schedule the UI edits, so "set my hours to 9-5
|
|
231
|
+
weekdays" and dragging the sliders in the Availability tab produce the same
|
|
232
|
+
result.
|
|
233
|
+
|
|
234
|
+
<Steps>
|
|
235
|
+
|
|
236
|
+
### Set your weekly hours
|
|
237
|
+
|
|
238
|
+
Switch to the **Availability** tab and toggle on the days and hours you're
|
|
239
|
+
open, per day if needed.
|
|
240
|
+
|
|
241
|
+
### Add buffer and notice
|
|
242
|
+
|
|
243
|
+
Set **buffer time** between meetings and a **minimum notice** window so
|
|
244
|
+
people can't book you five minutes from now.
|
|
245
|
+
|
|
246
|
+
### Set your advance window and default slot length
|
|
247
|
+
|
|
248
|
+
Choose how far ahead people can book, and the default duration new meeting
|
|
249
|
+
types start with.
|
|
250
|
+
|
|
251
|
+
</Steps>
|
|
252
|
+
|
|
253
|
+
Or just ask the agent: "Block Friday afternoons on my availability."
|
|
254
|
+
|
|
255
|
+
### Bookings
|
|
256
|
+
|
|
257
|
+
A visitor picks an available time from your real availability, fills in
|
|
258
|
+
their name, email, and any custom fields you added, then confirms. They get a
|
|
259
|
+
confirmation with a private manage link. No sign-in is required, since the
|
|
260
|
+
link itself is the credential.
|
|
261
|
+
|
|
262
|
+
- **Managing bookings**: you (the host) see every booking, past and
|
|
263
|
+
upcoming, filtered by all, confirmed, or cancelled, in the **Bookings** tab.
|
|
264
|
+
- **Rescheduling or cancelling**: visitors use their manage link to move to
|
|
265
|
+
a different open slot or cancel outright, without needing an account. You
|
|
266
|
+
can also cancel a booking yourself from the **Bookings** tab.
|
|
267
|
+
|
|
268
|
+
Or ask the agent: "Show me this week's bookings."
|
|
269
|
+
|
|
270
|
+
## What's next
|
|
271
|
+
|
|
272
|
+
- [**Calendar**](/docs/template-calendar) — the overview and getting-started steps
|
|
273
|
+
- [**Talk to the Agent**](/docs/template-calendar-agent) — every prompt by task, application state, and Extensions
|
|
274
|
+
- [**Calendar in a Multi-App Workspace**](/docs/template-calendar-integrations) — integration strategies and connecting to Dispatch
|
|
275
|
+
- [**Developer Guide**](/docs/template-calendar-developers) — the actions and data model behind these features
|
|
276
|
+
- [**Sharing**](/docs/sharing) — the share-grant model booking links build on
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Calendar in a Multi-App Workspace"
|
|
3
|
+
description: "How Calendar connects to Dispatch and other apps, the real events other apps can automate against, and natural-language delegation across a multi-app workspace."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Calendar in a Multi-App Workspace
|
|
7
|
+
|
|
8
|
+
Calendar is one app among many in a [Dispatch](/docs/template-dispatch)
|
|
9
|
+
workspace. This page covers what that actually means in practice: how the
|
|
10
|
+
connection works, and concrete ways other apps can act on your calendar or
|
|
11
|
+
react to what happens on it. See [Calendar](/docs/template-calendar) for the
|
|
12
|
+
overview.
|
|
13
|
+
|
|
14
|
+
## How Calendar connects to Dispatch
|
|
15
|
+
|
|
16
|
+
Whether this is automatic depends on how Calendar and Dispatch were set up
|
|
17
|
+
together, not on whether either one is hosted or running locally.
|
|
18
|
+
|
|
19
|
+
### Same workspace: automatic
|
|
20
|
+
|
|
21
|
+
If Calendar and Dispatch were generated or added together into one Agent
|
|
22
|
+
Native workspace (via `create` or `add-app`) and deployed as one unit, they
|
|
23
|
+
already share one `.env`, one `A2A_SECRET`, and one workspace registry.
|
|
24
|
+
Discovery and authenticated A2A calling both just work, with nothing to set
|
|
25
|
+
up, whether that workspace is running on your machine or in production.
|
|
26
|
+
This is the expected setup for a real multi-app product built on Calendar.
|
|
27
|
+
|
|
28
|
+
### Separate deployments: one manual step
|
|
29
|
+
|
|
30
|
+
If Calendar and Dispatch are two independently created Agent Native
|
|
31
|
+
projects, they don't share a secret and can't call each other yet.
|
|
32
|
+
Connecting them takes one manual step on each side: add a
|
|
33
|
+
`remote-agents/<id>.json` resource with a shared secret, from Settings →
|
|
34
|
+
Connected Agents, the Agent page's Connections tab, or Dispatch → Agents →
|
|
35
|
+
Add external agent. See [A2A Protocol](/docs/a2a-protocol) for the full
|
|
36
|
+
walkthrough.
|
|
37
|
+
|
|
38
|
+
To check which situation you're in, ask either app's agent "what apps can
|
|
39
|
+
you see?" If Calendar is missing from Dispatch's answer, you're in the
|
|
40
|
+
second case.
|
|
41
|
+
|
|
42
|
+
## Integration strategies
|
|
43
|
+
|
|
44
|
+
**Automating off calendar events.** Creating an event and creating a booking
|
|
45
|
+
both fire a real event on the shared framework event bus
|
|
46
|
+
(`calendar.event.created`, `calendar.booking.created`). Any app's
|
|
47
|
+
[automation](/docs/automations) can subscribe to either one, regardless of
|
|
48
|
+
which app defines it. A booking landing on your calendar could trigger a
|
|
49
|
+
welcome email draft in Mail, or a meeting agenda in Slides, built before the
|
|
50
|
+
meeting happens. Calendar doesn't ship one of these automations out of the
|
|
51
|
+
box, but the event is real and ready to hook into whenever you want to build
|
|
52
|
+
one.
|
|
53
|
+
|
|
54
|
+
**Natural-language delegation through Dispatch.** A sibling app doesn't need
|
|
55
|
+
a special integration to work with Calendar. It can hand Calendar's agent a
|
|
56
|
+
plain-English request, like "find 30 minutes with Sam next week," the same
|
|
57
|
+
way you would in chat, and Calendar answers or acts on it directly. This is
|
|
58
|
+
the real mechanism behind something like a scheduling request that arrives
|
|
59
|
+
in Mail or Slack turning into a booked event: Dispatch (or the app that
|
|
60
|
+
received the message) delegates the request to Calendar's agent, and
|
|
61
|
+
Calendar handles it like any other prompt.
|
|
62
|
+
|
|
63
|
+
**Staying decoupled.** Calendar never needs to know Mail's or Slack's
|
|
64
|
+
credentials, or vice versa, for any of this. The event bus and the
|
|
65
|
+
automations that subscribe to it sit between apps, so Calendar only has to
|
|
66
|
+
emit a real event or answer a real request. It doesn't need to know who's
|
|
67
|
+
listening, or how.
|
|
68
|
+
|
|
69
|
+
## What's next
|
|
70
|
+
|
|
71
|
+
- [**Calendar**](/docs/template-calendar) — the overview and getting-started steps
|
|
72
|
+
- [**Features**](/docs/template-calendar-features) — views, availability, finding time, and booking links
|
|
73
|
+
- [**Talk to the Agent**](/docs/template-calendar-agent) — prompts by task, application state, and Extensions
|
|
74
|
+
- [**Developer Guide**](/docs/template-calendar-developers) — quick start, actions, data model, and routes
|
|
75
|
+
- [**Dispatch**](/docs/template-dispatch) — the workspace control plane these patterns run under
|
|
76
|
+
- [**Automations**](/docs/automations) — declaring an automation that reacts to a calendar event
|
|
77
|
+
- [**A2A Protocol**](/docs/a2a-protocol) — how apps discover, authenticate with, and call each other
|
|
78
|
+
- [**Multi-App Workspace**](/docs/multi-app-workspace) — the general pattern of composing first-party apps instead of nesting them
|
|
@@ -1,135 +1,68 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Calendar"
|
|
3
|
-
description: "An agent-powered calendar
|
|
3
|
+
description: "An agent-powered calendar that replaces Google Calendar and Calendly with one app you own. Schedule, manage availability, and handle booking links through the agent or the UI."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Calendar
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
```css
|
|
61
|
-
.diagram-flow {
|
|
62
|
-
display: flex;
|
|
63
|
-
align-items: center;
|
|
64
|
-
gap: 12px;
|
|
65
|
-
flex-wrap: wrap;
|
|
66
|
-
}
|
|
67
|
-
.diagram-flow .diagram-col {
|
|
68
|
-
display: flex;
|
|
69
|
-
flex-direction: column;
|
|
70
|
-
gap: 10px;
|
|
71
|
-
}
|
|
72
|
-
.diagram-flow .diagram-arrow {
|
|
73
|
-
font-size: 22px;
|
|
74
|
-
line-height: 1;
|
|
75
|
-
}
|
|
76
|
-
.diagram-flow .center {
|
|
77
|
-
display: flex;
|
|
78
|
-
flex-direction: column;
|
|
79
|
-
align-items: center;
|
|
80
|
-
gap: 4px;
|
|
81
|
-
}
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
</Diagram>
|
|
85
|
-
|
|
86
|
-
## What you can do with it
|
|
87
|
-
|
|
88
|
-
- **See your real Google Calendar** in day, week, or month view, with multiple accounts overlayed in one grid.
|
|
89
|
-
- **Subscribe to ICS feeds** (HR time off, conference schedules, team calendars) — read-only, mixed into the same view.
|
|
90
|
-
- **Set weekly availability** with timezone support, buffer time, and minimum notice — the agent uses this when finding free slots.
|
|
91
|
-
- **Create public booking links** at `/book/{your-name}/{slug}` for things like "15-minute intro" or "30-minute demo." Configure durations, custom fields, required co-hosts, and whether visitors get Google Meet or Zoom.
|
|
92
|
-
- **Ask the agent anything schedule-related**: "Am I free Thursday afternoon?" "Find a 1-hour slot next week and put 'Planning with Alex' on it." "Pause my demo booking link."
|
|
93
|
-
- **Share booking links** with teammates so they can manage them too.
|
|
94
|
-
|
|
95
|
-
See [Scheduling, Availability & Finding Time](/docs/template-calendar-scheduling) and [Booking Links](/docs/template-calendar-booking-links) for the full detail on each.
|
|
96
|
-
|
|
97
|
-
## Getting started
|
|
98
|
-
|
|
99
|
-
Live demo: [calendar.agent-native.com](https://calendar.agent-native.com).
|
|
100
|
-
|
|
101
|
-
When you first open the app:
|
|
102
|
-
|
|
103
|
-
1. Click **Settings**.
|
|
104
|
-
2. Click **Connect Google Calendar** and approve.
|
|
105
|
-
3. (Optional) Connect more Google accounts if you want personal + work overlayed.
|
|
106
|
-
4. Open the main view — your real calendar will load.
|
|
107
|
-
|
|
108
|
-
To create your first booking link:
|
|
109
|
-
|
|
110
|
-
1. Click **Booking Links** in the sidebar.
|
|
111
|
-
2. Click **New booking link**, set a title and duration.
|
|
112
|
-
3. Share the public URL — visitors pick from your available slots.
|
|
113
|
-
|
|
114
|
-
Or just ask the agent: "Create a 15-minute intro booking link with a name field."
|
|
115
|
-
|
|
116
|
-
### Useful prompts
|
|
117
|
-
|
|
118
|
-
- "What is on my calendar today?"
|
|
119
|
-
- "Am I free Thursday afternoon for 30 minutes?"
|
|
120
|
-
- "Find a 1-hour slot next week and put 'Planning with Alex' on it."
|
|
121
|
-
- "Create a booking link called '15 min intro' at 15 minutes with a note field."
|
|
122
|
-
- "Block Friday afternoons on my availability."
|
|
123
|
-
|
|
124
|
-
See [Talking to the Agent](/docs/template-calendar-agent) for the full list of prompts by task.
|
|
125
|
-
|
|
126
|
-
The agent will query Google Calendar live for any schedule question — it never guesses.
|
|
8
|
+
Calendar is an agent-powered scheduling app. Connect your Google Calendar and
|
|
9
|
+
the agent can read your schedule, find free time, create events, and manage
|
|
10
|
+
Calendly-style booking links, in plain English or with a click. It replaces
|
|
11
|
+
the Google Calendar + Calendly combo with one app, so your real schedule and
|
|
12
|
+
your public booking pages are never two things you have to keep in sync by
|
|
13
|
+
hand.
|
|
14
|
+
|
|
15
|
+
<Cards columns={1}>
|
|
16
|
+
|
|
17
|
+
### :calendar: [Try it out now →](https://calendar.agent-native.com)
|
|
18
|
+
|
|
19
|
+
See Calendar live with a real Google Calendar connected.
|
|
20
|
+
|
|
21
|
+
</Cards>
|
|
22
|
+
|
|
23
|
+
<Video
|
|
24
|
+
src="https://cdn.builder.io/o/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fafb81b5670d44030960cf8b60ec77c53?alt=media&token=59a6171c-f074-4507-91fe-db820cbe007e&apiKey=YJIGb4i01jvw0SRdL5Bt"
|
|
25
|
+
alt="A short screen recording of logging in and touring the calendar app."
|
|
26
|
+
caption="A brief tour of the calendar application."
|
|
27
|
+
autoplay={true}
|
|
28
|
+
loop={true}
|
|
29
|
+
/>
|
|
30
|
+
|
|
31
|
+
## What it replaces
|
|
32
|
+
|
|
33
|
+
<Comparison>
|
|
34
|
+
|
|
35
|
+
### Before
|
|
36
|
+
|
|
37
|
+
- Google Calendar for your real schedule
|
|
38
|
+
- Calendly (or similar) for public booking links, kept in sync by hand
|
|
39
|
+
- A separate contacts search when you need someone's email
|
|
40
|
+
- Copy-pasting a Zoom link into every invite
|
|
41
|
+
|
|
42
|
+
### After
|
|
43
|
+
|
|
44
|
+
- One view: your real calendar and your booking links together
|
|
45
|
+
- One availability model that booking links and the agent both read from
|
|
46
|
+
- People search built into the same prompt as scheduling
|
|
47
|
+
- Zoom or Google Meet attached automatically when someone books
|
|
48
|
+
|
|
49
|
+
</Comparison>
|
|
50
|
+
|
|
51
|
+
## Calendar in a multi-app workspace
|
|
52
|
+
|
|
53
|
+
If you're running Calendar alongside other apps under
|
|
54
|
+
[Dispatch](/docs/template-dispatch), your calendar stops being just a page you
|
|
55
|
+
open. It becomes something other channels and apps can act on, from
|
|
56
|
+
automations that fire off a new booking to a sibling app handing Calendar a
|
|
57
|
+
scheduling request directly. See [Calendar in a Multi-App
|
|
58
|
+
Workspace](/docs/template-calendar-integrations) for how the connection
|
|
59
|
+
actually works and the real mechanisms behind it.
|
|
127
60
|
|
|
128
61
|
## What's next
|
|
129
62
|
|
|
130
|
-
- [**
|
|
131
|
-
- [**
|
|
132
|
-
- [**
|
|
63
|
+
- [**Features**](/docs/template-calendar-features) — views, availability, finding time, and booking links, with setup steps for each
|
|
64
|
+
- [**Talk to the Agent**](/docs/template-calendar-agent) — prompts by task, application state, and Extensions
|
|
65
|
+
- [**Calendar in a Multi-App Workspace**](/docs/template-calendar-integrations) — integration strategies and connecting to Dispatch
|
|
133
66
|
- [**Developer Guide**](/docs/template-calendar-developers) — quick start, actions, data model, and routes
|
|
134
67
|
- [**Templates**](/docs/cloneable-saas) — the Cloneable SaaS model, and every other domain template to start from
|
|
135
68
|
- [**Getting Started**](/docs/getting-started) — the framework fundamentals: actions, application state, and live sync
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/core",
|
|
3
|
-
"version": "0.172.
|
|
3
|
+
"version": "0.172.6",
|
|
4
4
|
"description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
|
|
5
5
|
"homepage": "https://github.com/BuilderIO/agent-native#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Calendar: Booking Links"
|
|
3
|
-
description: "Create Calendly-style public booking pages, connect Zoom or Google Meet, and manage bookings people make with you."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Booking Links
|
|
7
|
-
|
|
8
|
-
Booking links are public pages where anyone can pick a time and book it directly onto your calendar — the Calendly-style part of Calendar. This page covers creating, sharing, and managing them. See [Calendar](/docs/template-calendar) for the overview and [Events, Availability & Finding Time](/docs/template-calendar-scheduling) for the availability rules booking links use.
|
|
9
|
-
|
|
10
|
-
## Creating a booking link
|
|
11
|
-
|
|
12
|
-
A booking link needs a title and a duration (like "15 min intro" at 15 minutes). From there you can add:
|
|
13
|
-
|
|
14
|
-
- **Alternate durations** so a visitor can choose 15, 30, or 60 minutes on the same link
|
|
15
|
-
- **Custom fields** to collect a company name, a topic, or anything else before the meeting
|
|
16
|
-
- **A conferencing choice** — Google Meet, Zoom (once connected — see below), or a custom link
|
|
17
|
-
- **A color** so the link's bookings stand out on your calendar
|
|
18
|
-
- **Required co-hosts** — other people who must also be free before a slot is offered. When someone books, everyone (you and your co-hosts) gets invited to the resulting Google Calendar event.
|
|
19
|
-
|
|
20
|
-
Ask the agent to create one ("Create a 15-minute intro link with a name and company field") or use **New booking link** in the sidebar.
|
|
21
|
-
|
|
22
|
-
## Connecting Zoom or Google Meet
|
|
23
|
-
|
|
24
|
-
Booking links can generate a real video meeting automatically when someone books:
|
|
25
|
-
|
|
26
|
-
- **Google Meet** needs no setup — it's added the same way any Google Calendar invite gets a Meet link.
|
|
27
|
-
- **Zoom** needs your Zoom account connected first. Connect it once from Settings; after that, any booking link set to Zoom creates a real Zoom meeting for each new booking and attaches the join link to the confirmation.
|
|
28
|
-
|
|
29
|
-
If Zoom isn't connected yet and a link is set to use it, ask the agent to help you connect it, or do it from Settings directly.
|
|
30
|
-
|
|
31
|
-
## Sharing a booking link with teammates
|
|
32
|
-
|
|
33
|
-
Sharing controls who can _manage_ the link — edit its duration, pause it, or see its bookings — through the standard viewer/editor/admin roles. It's separate from public access: anyone with the URL can still book as long as the link is active, whether or not they have management access.
|
|
34
|
-
|
|
35
|
-
## The public booking page
|
|
36
|
-
|
|
37
|
-
Every booking link has a public URL at `/book/{your-booking-name}/{slug}` — for example `/book/steve/30min`. Your booking name is generated automatically from your email the first time you create a link, and you can change it later from Settings (up to three times every 30 days, since it's part of every public link you've shared).
|
|
38
|
-
|
|
39
|
-
A visitor picks an available time from your real availability, fills in their name, email, and any custom fields you added, then confirms. They get a confirmation with a link to manage their own booking.
|
|
40
|
-
|
|
41
|
-
<WireframeBlock id="doc-block-calendar4">
|
|
42
|
-
<Screen
|
|
43
|
-
surface="desktop"
|
|
44
|
-
html={
|
|
45
|
-
"<div style='display:flex;flex-direction:column;min-height:480px;box-sizing:border-box;padding:36px 60px;gap:16px'><h2 style='margin:0'>30 min with Steve</h2><p class='wf-muted' style='margin:0'>Quick intro call — tell me a bit about what you're working on.</p><div style='display:flex;gap:20px;flex:1'><div class='wf-card' style='flex:1;display:flex;flex-direction:column;gap:8px'><strong>May 2026</strong><div style='display:grid;grid-template-columns:repeat(7,1fr);gap:6px'><span class='wf-muted'>Su</span><span class='wf-muted'>Mo</span><span class='wf-muted'>Tu</span><span class='wf-muted'>We</span><span class='wf-muted'>Th</span><span class='wf-muted'>Fr</span><span class='wf-muted'>Sa</span><span></span><span></span><span></span><span></span><span></span><span class='wf-pill accent'>1</span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div></div><div class='wf-card' style='flex:1;display:flex;flex-direction:column;gap:8px'><strong>Friday, May 1</strong><button>9:00 AM</button><button>9:30 AM</button><button class='primary'>10:00 AM</button><button>10:30 AM</button><button>2:00 PM</button></div></div></div>"
|
|
46
|
-
}
|
|
47
|
-
/>
|
|
48
|
-
</WireframeBlock>
|
|
49
|
-
|
|
50
|
-
## Managing, rescheduling, or cancelling a booking
|
|
51
|
-
|
|
52
|
-
Every confirmation includes a private manage link. Visitors use it to reschedule to a different open slot or cancel outright, without needing an account — no sign-in, since the link itself is the credential. You (the host) see all bookings, past and upcoming, in the **Bookings** list.
|
|
53
|
-
|
|
54
|
-
## Renaming a link
|
|
55
|
-
|
|
56
|
-
You can change a booking link's URL slug at any time — for example from `/book/steve/into-call` to `/book/steve/intro`. The old URL keeps working: visitors who still have the old link are automatically forwarded to the new one, so nothing you've already shared (an email signature, a website) breaks.
|
|
57
|
-
|
|
58
|
-
### Useful prompts
|
|
59
|
-
|
|
60
|
-
- "Create a 15-minute intro booking link with a name and company field."
|
|
61
|
-
- "Add Brent as a required co-host on my 'Steve + Brent' link."
|
|
62
|
-
- "Switch my '30 min demo' link to Zoom."
|
|
63
|
-
- "Pause my '30 min demo' booking link."
|
|
64
|
-
- "Rename my intro link's URL to '/intro'."
|
|
65
|
-
- "Show me this week's bookings."
|
|
66
|
-
|
|
67
|
-
## What's next
|
|
68
|
-
|
|
69
|
-
- [**Calendar**](/docs/template-calendar) — the overview and getting-started steps
|
|
70
|
-
- [**Events, Availability & Finding Time**](/docs/template-calendar-scheduling) — the availability rules booking links draw from
|
|
71
|
-
- [**Talking to the Agent**](/docs/template-calendar-agent) — group/co-host links and more prompts
|
|
72
|
-
- [**Developer Guide**](/docs/template-calendar-developers) — the booking data model and actions
|
|
73
|
-
- [**Sharing**](/docs/sharing) — the share-grant model booking links build on
|