@agent-native/core 0.68.1 → 0.68.3

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.
Files changed (129) hide show
  1. package/README.md +4 -4
  2. package/corpus/README.md +2 -2
  3. package/corpus/core/CHANGELOG.md +16 -0
  4. package/corpus/core/docs/content/authentication.md +16 -2
  5. package/corpus/core/docs/content/template-analytics.md +14 -9
  6. package/corpus/core/docs/content/template-clips.md +35 -2
  7. package/corpus/core/package.json +1 -1
  8. package/corpus/core/src/cli/pr-visual-recap-workflow.ts +1 -1
  9. package/corpus/core/src/client/AgentPanel.tsx +2 -4
  10. package/corpus/core/src/client/CommandMenu.tsx +98 -3
  11. package/corpus/core/src/client/ConnectBuilderCard.tsx +11 -2
  12. package/corpus/core/src/client/index.ts +2 -0
  13. package/corpus/core/src/extensions/content-patch.ts +12 -2
  14. package/corpus/core/src/oauth-tokens/google-refresh.ts +32 -17
  15. package/corpus/core/src/provider-api/index.ts +37 -17
  16. package/corpus/core/src/server/auth.ts +6 -8
  17. package/corpus/core/src/server/better-auth-instance.ts +19 -4
  18. package/corpus/core/src/server/core-routes-plugin.ts +157 -5
  19. package/corpus/core/src/server/google-oauth-credentials.ts +51 -0
  20. package/corpus/core/src/server/index.ts +8 -0
  21. package/corpus/core/src/server/onboarding-html.ts +2 -1
  22. package/corpus/core/src/server/social-og-image.ts +6 -1
  23. package/corpus/core/src/vite/client.ts +83 -1
  24. package/corpus/templates/analytics/app/routes/$.tsx +9 -0
  25. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +33 -1
  26. package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +11 -3
  27. package/corpus/templates/calendar/app/components/calendar/EventCard.tsx +25 -2
  28. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +12 -0
  29. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +7 -2
  30. package/corpus/templates/calendar/app/components/calendar/GoogleConnectBanner.tsx +37 -78
  31. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +33 -1
  32. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +46 -3
  33. package/corpus/templates/calendar/app/hooks/use-google-auth.ts +203 -2
  34. package/corpus/templates/calendar/app/lib/event-colors.ts +1 -4
  35. package/corpus/templates/calendar/app/lib/rsvp-status.tsx +6 -0
  36. package/corpus/templates/calendar/app/pages/CalendarView.tsx +9 -4
  37. package/corpus/templates/calendar/app/pages/NotFound.tsx +1 -1
  38. package/corpus/templates/calendar/app/pages/Settings.tsx +25 -1
  39. package/corpus/templates/calendar/app/routes/_app.$.tsx +9 -0
  40. package/corpus/templates/calendar/server/handlers/google-auth.ts +152 -12
  41. package/corpus/templates/calendar/server/lib/google-calendar.ts +63 -14
  42. package/corpus/templates/calendar/server/plugins/auth.ts +4 -20
  43. package/corpus/templates/calendar/shared/api.ts +4 -0
  44. package/corpus/templates/clips/.agents/skills/recording/SKILL.md +17 -0
  45. package/corpus/templates/clips/actions/sync-calendars.ts +6 -7
  46. package/corpus/templates/clips/app/components/capture-install-options.tsx +157 -0
  47. package/corpus/templates/clips/app/components/library/library-layout.tsx +9 -8
  48. package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +4 -6
  49. package/corpus/templates/clips/app/lib/capture-install-options.ts +14 -0
  50. package/corpus/templates/clips/app/root.tsx +54 -2
  51. package/corpus/templates/clips/app/routes/_app.dictate.tsx +9 -13
  52. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +5 -7
  53. package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +5 -7
  54. package/corpus/templates/clips/app/routes/download.tsx +49 -0
  55. package/corpus/templates/clips/app/routes/record.tsx +4 -4
  56. package/corpus/templates/clips/app/routes/share.$shareId.tsx +5 -6
  57. package/corpus/templates/clips/chrome-extension/STORE_DRAFT.md +29 -0
  58. package/corpus/templates/clips/server/lib/calendar-event-meetings.ts +6 -7
  59. package/corpus/templates/clips/server/lib/google-calendar-client.ts +61 -0
  60. package/corpus/templates/clips/server/routes/_agent-native/google/auth-url.get.ts +19 -12
  61. package/corpus/templates/clips/server/routes/_agent-native/google/callback.get.ts +6 -6
  62. package/corpus/templates/content/vite.config.ts +37 -1
  63. package/corpus/templates/design/app/pages/NotFound.tsx +1 -1
  64. package/corpus/templates/design/app/routes/$.tsx +9 -0
  65. package/corpus/templates/mail/app/pages/NotFound.tsx +1 -1
  66. package/corpus/templates/mail/app/routes/$.tsx +9 -0
  67. package/corpus/templates/plan/app/global.css +2 -2
  68. package/corpus/templates/slides/app/pages/NotFound.tsx +1 -1
  69. package/corpus/templates/slides/app/routes/$.tsx +9 -0
  70. package/corpus/templates/slides/server/lib/google-docs-oauth.ts +81 -25
  71. package/corpus/templates/videos/app/pages/NotFound.tsx +1 -1
  72. package/dist/cli/pr-visual-recap-workflow.d.ts +1 -1
  73. package/dist/cli/pr-visual-recap-workflow.d.ts.map +1 -1
  74. package/dist/cli/pr-visual-recap-workflow.js +1 -1
  75. package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
  76. package/dist/client/AgentPanel.d.ts +1 -1
  77. package/dist/client/AgentPanel.d.ts.map +1 -1
  78. package/dist/client/AgentPanel.js +1 -1
  79. package/dist/client/AgentPanel.js.map +1 -1
  80. package/dist/client/CommandMenu.d.ts +15 -2
  81. package/dist/client/CommandMenu.d.ts.map +1 -1
  82. package/dist/client/CommandMenu.js +46 -3
  83. package/dist/client/CommandMenu.js.map +1 -1
  84. package/dist/client/ConnectBuilderCard.d.ts.map +1 -1
  85. package/dist/client/ConnectBuilderCard.js +11 -2
  86. package/dist/client/ConnectBuilderCard.js.map +1 -1
  87. package/dist/client/index.d.ts +1 -1
  88. package/dist/client/index.d.ts.map +1 -1
  89. package/dist/client/index.js.map +1 -1
  90. package/dist/extensions/content-patch.d.ts.map +1 -1
  91. package/dist/extensions/content-patch.js +10 -2
  92. package/dist/extensions/content-patch.js.map +1 -1
  93. package/dist/oauth-tokens/google-refresh.d.ts.map +1 -1
  94. package/dist/oauth-tokens/google-refresh.js +29 -17
  95. package/dist/oauth-tokens/google-refresh.js.map +1 -1
  96. package/dist/provider-api/index.d.ts.map +1 -1
  97. package/dist/provider-api/index.js +28 -16
  98. package/dist/provider-api/index.js.map +1 -1
  99. package/dist/server/auth.d.ts.map +1 -1
  100. package/dist/server/auth.js +6 -6
  101. package/dist/server/auth.js.map +1 -1
  102. package/dist/server/better-auth-instance.d.ts.map +1 -1
  103. package/dist/server/better-auth-instance.js +18 -4
  104. package/dist/server/better-auth-instance.js.map +1 -1
  105. package/dist/server/core-routes-plugin.d.ts +5 -0
  106. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  107. package/dist/server/core-routes-plugin.js +107 -5
  108. package/dist/server/core-routes-plugin.js.map +1 -1
  109. package/dist/server/google-oauth-credentials.d.ts +15 -0
  110. package/dist/server/google-oauth-credentials.d.ts.map +1 -0
  111. package/dist/server/google-oauth-credentials.js +34 -0
  112. package/dist/server/google-oauth-credentials.js.map +1 -0
  113. package/dist/server/index.d.ts +1 -0
  114. package/dist/server/index.d.ts.map +1 -1
  115. package/dist/server/index.js +1 -0
  116. package/dist/server/index.js.map +1 -1
  117. package/dist/server/onboarding-html.d.ts.map +1 -1
  118. package/dist/server/onboarding-html.js +2 -1
  119. package/dist/server/onboarding-html.js.map +1 -1
  120. package/dist/server/social-og-image.d.ts.map +1 -1
  121. package/dist/server/social-og-image.js +5 -1
  122. package/dist/server/social-og-image.js.map +1 -1
  123. package/dist/vite/client.d.ts.map +1 -1
  124. package/dist/vite/client.js +83 -1
  125. package/dist/vite/client.js.map +1 -1
  126. package/docs/content/authentication.md +16 -2
  127. package/docs/content/template-analytics.md +14 -9
  128. package/docs/content/template-clips.md +35 -2
  129. package/package.json +1 -1
@@ -104,6 +104,11 @@ Set environment variables to enable social login. Better Auth auto-detects them:
104
104
 
105
105
  ```bash
106
106
  # Google OAuth
107
+ GOOGLE_SIGN_IN_CLIENT_ID=your-low-scope-sign-in-client-id
108
+ GOOGLE_SIGN_IN_CLIENT_SECRET=your-low-scope-sign-in-client-secret
109
+
110
+ # Backwards-compatible fallback, and provider OAuth credentials for templates
111
+ # that connect to Google APIs such as Gmail or Calendar.
107
112
  GOOGLE_CLIENT_ID=your-client-id
108
113
  GOOGLE_CLIENT_SECRET=your-client-secret
109
114
 
@@ -114,6 +119,13 @@ GITHUB_CLIENT_SECRET=your-client-secret
114
119
 
115
120
  Templates that use `createGoogleAuthPlugin()` show a "Sign in with Google" page. The Google OAuth callback handles mobile deep linking for native apps automatically.
116
121
 
122
+ Prefer `GOOGLE_SIGN_IN_CLIENT_ID` / `GOOGLE_SIGN_IN_CLIENT_SECRET` for normal
123
+ app login. That client should request only identity scopes. Keep
124
+ `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET` for product integrations that need
125
+ Google API scopes, or as the legacy fallback when a deploy has not been split
126
+ yet. Mail and Calendar-style apps should use their own provider OAuth clients so
127
+ high-scope consent screens do not affect generic app sign-in.
128
+
117
129
  ### OAuth State Signing {#oauth-state-secret}
118
130
 
119
131
  Set `OAUTH_STATE_SECRET` to a random 32+ char value in production so OAuth state envelopes (Google, Atlassian, Zoom) are HMAC-signed with a dedicated key independent of any third-party secret. See [Security — OAuth State Signing](/docs/security#oauth-state) for the full requirements and threat model.
@@ -309,8 +321,10 @@ The default `/_agent-native/google/auth-url` route does this automatically — o
309
321
  | `AGENT_NATIVE_WORKSPACE` | `1` runs in workspace mode — one shared session realm across workspace apps |
310
322
  | `AGENT_NATIVE_SHARE_COOKIE_DOMAIN` | Set with `COOKIE_DOMAIN` to share one auth database across first-party subdomains |
311
323
  | `OAUTH_STATE_SECRET` | Dedicated HMAC key for OAuth state envelopes (see [Security — OAuth State Signing](/docs/security#oauth-state)) |
312
- | `GOOGLE_CLIENT_ID` | Enable Google OAuth |
313
- | `GOOGLE_CLIENT_SECRET` | Google OAuth secret |
324
+ | `GOOGLE_SIGN_IN_CLIENT_ID` | Preferred low-scope Google OAuth client ID for app login |
325
+ | `GOOGLE_SIGN_IN_CLIENT_SECRET` | Preferred low-scope Google OAuth secret for app login |
326
+ | `GOOGLE_CLIENT_ID` | Legacy Google login fallback, and provider OAuth client ID for Google API integrations |
327
+ | `GOOGLE_CLIENT_SECRET` | Legacy Google login fallback, and provider OAuth secret for Google API integrations |
314
328
  | `GITHUB_CLIENT_ID` | Enable GitHub OAuth |
315
329
  | `GITHUB_CLIENT_SECRET` | GitHub OAuth secret |
316
330
  | `ACCESS_TOKEN` | Static bearer fallback for MCP/connect clients; not browser auth |
@@ -140,18 +140,23 @@ truth choices, metric definitions, dashboards, and analyses.
140
140
 
141
141
  Credentials are stored via the framework's settings/env layer — no secrets in git. Production requires:
142
142
 
143
- | Variable | Purpose |
144
- | ---------------------------------------- | ----------------------------- |
145
- | `DATABASE_URL` | Persistent SQL connection URL |
146
- | `BETTER_AUTH_SECRET` / `BETTER_AUTH_URL` | Auth |
147
- | `GOOGLE_CLIENT_ID` / `_SECRET` | Google sign-in (OAuth 2.0) |
148
- | `BIGQUERY_PROJECT_ID` | BigQuery project |
149
- | `GOOGLE_APPLICATION_CREDENTIALS_JSON` | BigQuery service-account JSON |
150
- | `ANTHROPIC_API_KEY` | Agent chat |
143
+ | Variable | Purpose |
144
+ | ---------------------------------------- | ------------------------------------------------------- |
145
+ | `DATABASE_URL` | Persistent SQL connection URL |
146
+ | `BETTER_AUTH_SECRET` / `BETTER_AUTH_URL` | Auth |
147
+ | `GOOGLE_SIGN_IN_CLIENT_ID` / `_SECRET` | Preferred Google sign-in client (OAuth 2.0) |
148
+ | `GOOGLE_CLIENT_ID` / `_SECRET` | Legacy sign-in fallback / Google API integration client |
149
+ | `BIGQUERY_PROJECT_ID` | BigQuery project |
150
+ | `GOOGLE_APPLICATION_CREDENTIALS_JSON` | BigQuery service-account JSON |
151
+ | `ANTHROPIC_API_KEY` | Agent chat |
151
152
 
152
153
  Provider-specific keys (HubSpot, Jira, Gong, Pylon, etc.) are documented in each source's walkthrough on the Data Sources page. If you add a new action that needs an API key, it appears as a new source on that page via the template's onboarding registration.
153
154
 
154
- Note: the BigQuery OAuth credential for Google sign-in is a **separate** credential from the BigQuery service account JSON. Create the sign-in client at GCP Console → APIs & Services → Credentials → OAuth client ID.
155
+ Note: the BigQuery OAuth credential for Google sign-in is a **separate**
156
+ credential from the BigQuery service account JSON. Create the sign-in client at
157
+ GCP Console → APIs & Services → Credentials → OAuth client ID, and prefer the
158
+ `GOOGLE_SIGN_IN_CLIENT_ID` / `GOOGLE_SIGN_IN_CLIENT_SECRET` env names so this
159
+ low-scope login client stays separate from Google API integration clients.
155
160
 
156
161
  ### Data model
157
162
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: "Clips"
3
3
  description: "Async screen recording, calendar-synced meeting notes, and push-to-talk voice dictation — paste Clips links into agents and they can read transcripts, visuals, and summaries."
4
+ search: "Clips browser logs developer logs console logs network logs fetch XHR Chrome extension diagnostics recorder desktop app"
4
5
  ---
5
6
 
6
7
  # Clips
@@ -33,10 +34,34 @@ Think along the lines of Loom + Granola + Wispr Flow rolled into one app — but
33
34
  - **Share clips** with per-clip permissions (public, team, private). Link tracking and threaded comments work too.
34
35
  - **Preview public clips in Slack** with a Loom-style playable unfurl after the
35
36
  workspace installs your Clips Slack app.
37
+ - **Capture browser logs with the Chrome extension.** Browser recordings can
38
+ attach redacted console logs and fetch/XHR metadata, which is helpful for
39
+ product bugs and browser-only repros.
36
40
  - **Paste Clips links into agents** so they can discover the agent-readable context: metadata, transcript segments, recommended frames, and timestamped frame images without receiving the raw video file.
37
41
  - **Smart library views.** Group by project, filter by speaker, auto-tag based on content.
38
42
  - **Edit the transcript through chat.** "Fix the mis-transcribed word at 1:42." "Pull three quotes for a blog post." The agent edits the transcript and the UI updates live.
39
43
 
44
+ ## Browser logs and developer diagnostics
45
+
46
+ Use the Clips Chrome extension when you need a recording plus browser logs from
47
+ the tab you are debugging. The extension starts an active-tab recording and can
48
+ save redacted console logs, JavaScript exceptions, and fetch/XHR network
49
+ metadata such as method, redacted URL, status, duration, and failure text. It
50
+ does not save request bodies, response bodies, or headers.
51
+
52
+ The regular browser recorder page can save diagnostics from the recorder page
53
+ itself. The Chrome extension is the path for active-tab developer logs and
54
+ browser-only repros. In the Clips UI, use the Chrome option for browser logs and
55
+ the desktop app for the most seamless everyday capture path.
56
+
57
+ The Agent-Native Clips Chrome extension listing is
58
+ `https://chromewebstore.google.com/detail/baoipacpchggcdigagnajakiidcgcffn`.
59
+ If you host your own Clips server, keep the Chrome extension option hidden until
60
+ your Web Store listing is live. Set `VITE_CLIPS_CHROME_EXTENSION_ENABLED=1`
61
+ after approval to show the extension beside desktop-app download prompts. Set
62
+ `VITE_CLIPS_CHROME_EXTENSION_URL` only if you need to override the default
63
+ listing URL.
64
+
40
65
  ## Agent-readable clips
41
66
 
42
67
  Paste a normal public Clips share link into an agent. The share page advertises
@@ -143,7 +168,7 @@ Clips is a larger template with a native recorder (it ships a desktop companion
143
168
 
144
169
  1. **Video storage (required).** Connect a storage backend through the onboarding wizard. The easiest path is Builder.io (free during beta, one-click). For self-hosted storage, set `S3_ENDPOINT`, `S3_BUCKET`, `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, and optionally `S3_REGION` and `S3_PUBLIC_BASE_URL`. Cloudflare R2 and DigitalOcean Spaces use the same env vars with the `R2_*` prefix.
145
170
  2. **Google Calendar (optional).** To sync upcoming meetings, connect a Google Calendar account from Settings. The OAuth callback URL in dev is `http://localhost:8094/_agent-native/google/callback`. Set up a Google OAuth client in [Google Cloud Console](https://console.cloud.google.com/) with the Gmail and Google Calendar APIs enabled.
146
- 3. **Screen-capture permissions.** On macOS, grant Screen Recording permission to the browser (or the desktop companion app) in System Settings → Privacy & Security → Screen Recording.
171
+ 3. **Screen-capture permissions.** On macOS, grant Screen Recording permission to the browser (or the desktop companion app) in System Settings → Privacy & Security → Screen Recording. Browser recordings can save redacted console and fetch/XHR diagnostics from the recorder page. Once the Chrome extension listing is available, enable `VITE_CLIPS_CHROME_EXTENSION_ENABLED=1` so users can choose the extension for active-tab browser logs or the desktop app for the smoothest native capture path.
147
172
  4. **Slack previews (optional).** Create a Slack app with `links:read`, `links:write`, and `links.embed:write`; subscribe to `link_shared`; add your Clips share domain under **App Unfurl Domains**; set the Request URL to `https://your-clips.example.com/api/slack/unfurl`; and add the OAuth redirect URL `https://your-clips.example.com/api/slack/oauth/callback`. Configure `SLACK_CLIENT_ID`, `SLACK_CLIENT_SECRET`, and `SLACK_SIGNING_SECRET`, then connect workspaces from Clips Settings.
148
173
 
149
174
  ### Host your own Clips server
@@ -185,7 +210,15 @@ tray app at your deployment.
185
210
  include that path, such as `https://example.com/clips`. Click **Connect**,
186
211
  then sign in with an account on that Clips server.
187
212
 
188
- 5. **Connect optional integrations.** Google Calendar powers the Meetings tab,
213
+ 5. **Enable the Chrome extension after publishing.** Keep
214
+ `VITE_CLIPS_CHROME_EXTENSION_ENABLED` unset until the Chrome Web Store listing
215
+ is approved. Then set it to `1` to reveal the browser-log option beside the
216
+ desktop app prompts. The default listing URL is
217
+ `https://chromewebstore.google.com/detail/baoipacpchggcdigagnajakiidcgcffn`;
218
+ set `VITE_CLIPS_CHROME_EXTENSION_URL` only if your deployment uses a
219
+ different extension listing.
220
+
221
+ 6. **Connect optional integrations.** Google Calendar powers the Meetings tab,
189
222
  `GEMINI_API_KEY` or Builder.io Connect powers transcript cleanup and titles,
190
223
  `GROQ_API_KEY` can provide speech-to-text fallback, and the Slack OAuth
191
224
  connection in Settings enables playable Slack unfurls.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.68.1",
3
+ "version": "0.68.3",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=22"