@agent-native/core 0.91.1 → 0.91.2

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 (209) hide show
  1. package/blueprints/action/crud.md +1 -1
  2. package/blueprints/channel/discord.md +1 -1
  3. package/blueprints/provider/stripe.md +1 -1
  4. package/blueprints/sandbox/docker.md +1 -1
  5. package/corpus/README.md +1 -1
  6. package/corpus/core/CHANGELOG.md +14 -0
  7. package/corpus/core/blueprints/action/crud.md +1 -1
  8. package/corpus/core/blueprints/channel/discord.md +1 -1
  9. package/corpus/core/blueprints/provider/stripe.md +1 -1
  10. package/corpus/core/blueprints/sandbox/docker.md +1 -1
  11. package/corpus/core/package.json +6 -5
  12. package/corpus/core/src/agent/run-manager.ts +23 -2
  13. package/corpus/core/src/agent/run-store.ts +2 -2
  14. package/corpus/core/src/cli/add.ts +1 -1
  15. package/corpus/core/src/cli/create.ts +8 -3
  16. package/corpus/core/src/cli/index.ts +5 -4
  17. package/corpus/core/src/client/extensions/ExtensionSlot.tsx +7 -0
  18. package/corpus/core/src/client/session-replay.ts +97 -3
  19. package/corpus/core/src/jobs/scheduler.ts +30 -1
  20. package/corpus/core/src/localization/default-messages.ts +21 -0
  21. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +21 -0
  22. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +21 -0
  23. package/corpus/core/src/templates/default/app/i18n/en-US.ts +21 -0
  24. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +21 -0
  25. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +21 -0
  26. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +20 -0
  27. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +21 -0
  28. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +20 -0
  29. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +21 -0
  30. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +20 -0
  31. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +19 -0
  32. package/corpus/core/src/templates/default/package.json +2 -2
  33. package/corpus/core/src/templates/headless/package.json +3 -3
  34. package/corpus/core/src/templates/workspace-core/package.json +6 -6
  35. package/corpus/core/src/templates/workspace-root/package.json +2 -2
  36. package/corpus/core/src/triggers/dispatcher.ts +30 -2
  37. package/corpus/core/src/vite/client.ts +96 -1
  38. package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +21 -2
  39. package/corpus/templates/analytics/app/global.css +26 -10
  40. package/corpus/templates/analytics/app/i18n/zh-TW.ts +2 -0
  41. package/corpus/templates/analytics/app/i18n-data.ts +25 -0
  42. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +548 -237
  43. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +285 -294
  44. package/corpus/templates/analytics/changelog/2026-07-08-console-details-expand-inline-under-each-row-and-the-event-t.md +6 -0
  45. package/corpus/templates/analytics/changelog/2026-07-08-session-replay-clamps-ultra-wide-viewports-while-keeping-the.md +6 -0
  46. package/corpus/templates/analytics/changelog/2026-07-08-session-replay-keeps-a-usable-stage-when-dev-tools-is-open-a.md +6 -0
  47. package/corpus/templates/analytics/changelog/2026-07-08-session-replay-resumes-after-scrubbing-and-expands-console-r.md +6 -0
  48. package/corpus/templates/analytics/changelog/2026-07-08-session-replays-wait-for-full-load-keep-a-normal-viewport-an.md +6 -0
  49. package/corpus/templates/analytics/package.json +2 -2
  50. package/corpus/templates/assets/package.json +2 -2
  51. package/corpus/templates/brain/package.json +2 -2
  52. package/corpus/templates/calendar/AGENTS.md +10 -0
  53. package/corpus/templates/calendar/actions/create-event.ts +5 -1
  54. package/corpus/templates/calendar/actions/event-action-helpers.ts +41 -0
  55. package/corpus/templates/calendar/actions/get-attendee-timezones.ts +28 -0
  56. package/corpus/templates/calendar/actions/set-attendee-timezone.ts +68 -0
  57. package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +150 -11
  58. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +36 -1
  59. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +32 -0
  60. package/corpus/templates/calendar/app/hooks/use-attendee-timezones.ts +24 -0
  61. package/corpus/templates/calendar/app/i18n/zh-TW.ts +2 -0
  62. package/corpus/templates/calendar/app/i18n-data.ts +20 -0
  63. package/corpus/templates/calendar/app/lib/attendee-local-time.ts +122 -0
  64. package/corpus/templates/calendar/changelog/2026-07-08-event-details-now-support-extension-widgets-and-you-can-see-.md +6 -0
  65. package/corpus/templates/calendar/changelog/2026-07-08-when-you-invite-guests-to-a-new-event-you-now-appear-in.md +6 -0
  66. package/corpus/templates/calendar/package.json +2 -2
  67. package/corpus/templates/calendar/server/handlers/events.ts +5 -1
  68. package/corpus/templates/calendar/shared/api.ts +6 -0
  69. package/corpus/templates/chat/package.json +2 -2
  70. package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +6 -2
  71. package/corpus/templates/clips/actions/create-meeting.ts +8 -3
  72. package/corpus/templates/clips/actions/list-meetings.ts +31 -3
  73. package/corpus/templates/clips/changelog/2026-07-08-after-finishing-a-desktop-recording-reopening-clips-restor.md +6 -0
  74. package/corpus/templates/clips/changelog/2026-07-08-clips-now-pops-up-to-take-notes-when-you-join-an-adhoc-zoom-.md +6 -0
  75. package/corpus/templates/clips/changelog/2026-07-08-desktop-clip-recordings-are-louder-after-capture-mic-only.md +6 -0
  76. package/corpus/templates/clips/changelog/2026-07-08-meeting-reminders-now-appear-1-minute-before-start-stay-unti.md +6 -0
  77. package/corpus/templates/clips/changelog/2026-07-08-the-desktop-meetings-panel-has-room-for-its-drop-shadow-and-.md +6 -0
  78. package/corpus/templates/clips/chrome-extension/package.json +2 -2
  79. package/corpus/templates/clips/desktop/package.json +2 -2
  80. package/corpus/templates/clips/desktop/src/app.tsx +91 -34
  81. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +15 -5
  82. package/corpus/templates/clips/desktop/src/lib/meeting-notification-timing.ts +83 -0
  83. package/corpus/templates/clips/desktop/src/lib/native-recording-warm.ts +21 -0
  84. package/corpus/templates/clips/desktop/src/lib/recorder.ts +98 -20
  85. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +174 -50
  86. package/corpus/templates/clips/desktop/src/styles.css +128 -53
  87. package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +364 -0
  88. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +1 -1
  89. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +5 -0
  90. package/corpus/templates/clips/desktop/src-tauri/src/meetings_watcher.rs +91 -11
  91. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +69 -19
  92. package/corpus/templates/clips/desktop/src-tauri/src/native_speech.rs +36 -1
  93. package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +62 -10
  94. package/corpus/templates/clips/desktop/src-tauri/src/silence_detector.rs +1 -24
  95. package/corpus/templates/clips/desktop/src-tauri/src/util.rs +36 -1
  96. package/corpus/templates/clips/package.json +2 -2
  97. package/corpus/templates/content/actions/_content-database-personal-view.ts +80 -0
  98. package/corpus/templates/content/actions/get-content-database-personal-view.ts +27 -0
  99. package/corpus/templates/content/actions/update-content-database-personal-view.ts +31 -0
  100. package/corpus/templates/content/actions/update-content-database-view.ts +3 -0
  101. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +1 -1
  102. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +2584 -546
  103. package/corpus/templates/content/app/components/editor/database/filter-sort.ts +220 -18
  104. package/corpus/templates/content/app/hooks/use-content-database.ts +32 -0
  105. package/corpus/templates/content/app/i18n/zh-TW.ts +16 -0
  106. package/corpus/templates/content/app/i18n-data.ts +154 -0
  107. package/corpus/templates/content/changelog/2026-07-08-database-filters-now-support-notion-style-reset-save-for-eve.md +6 -0
  108. package/corpus/templates/content/changelog/2026-07-08-date-filters-can-now-target-a-between-range.md +6 -0
  109. package/corpus/templates/content/package.json +2 -2
  110. package/corpus/templates/content/parity/matrix.md +1 -1
  111. package/corpus/templates/content/parity/matrix.ts +2 -0
  112. package/corpus/templates/content/shared/api.ts +24 -0
  113. package/corpus/templates/design/package.json +2 -2
  114. package/corpus/templates/dispatch/app/i18n/zh-TW.ts +34 -1
  115. package/corpus/templates/dispatch/app/i18n-data.ts +387 -10
  116. package/corpus/templates/dispatch/app/routes/automations.tsx +1 -0
  117. package/corpus/templates/dispatch/changelog/2026-07-08-added-an-automations-page-to-review-pause-and-create.md +6 -0
  118. package/corpus/templates/dispatch/changelog/2026-07-08-destinations-now-shows-outbound-delivery-queue-health.md +6 -0
  119. package/corpus/templates/dispatch/package.json +2 -2
  120. package/corpus/templates/forms/package.json +2 -2
  121. package/corpus/templates/macros/package.json +2 -2
  122. package/corpus/templates/mail/app/hooks/use-emails.ts +56 -44
  123. package/corpus/templates/mail/app/lib/gmail-mutation-queue.ts +325 -0
  124. package/corpus/templates/mail/changelog/2026-07-08-rapid-archive-and-mark-read-now-batch-gmail-updates-so-the-i.md +6 -0
  125. package/corpus/templates/mail/package.json +2 -2
  126. package/corpus/templates/plan/package.json +2 -2
  127. package/corpus/templates/slides/app/components/editor/ImageDropPromptPopover.tsx +46 -29
  128. package/corpus/templates/slides/app/context/DeckContext.tsx +45 -18
  129. package/corpus/templates/slides/app/i18n/ar-SA.ts +4 -0
  130. package/corpus/templates/slides/app/i18n/de-DE.ts +4 -0
  131. package/corpus/templates/slides/app/i18n/en-US.ts +4 -0
  132. package/corpus/templates/slides/app/i18n/es-ES.ts +4 -0
  133. package/corpus/templates/slides/app/i18n/fr-FR.ts +4 -0
  134. package/corpus/templates/slides/app/i18n/hi-IN.ts +4 -0
  135. package/corpus/templates/slides/app/i18n/ja-JP.ts +4 -0
  136. package/corpus/templates/slides/app/i18n/ko-KR.ts +4 -0
  137. package/corpus/templates/slides/app/i18n/pt-BR.ts +4 -0
  138. package/corpus/templates/slides/app/i18n/zh-CN.ts +4 -0
  139. package/corpus/templates/slides/app/i18n/zh-TW.ts +4 -0
  140. package/corpus/templates/slides/app/lib/image-drop-to-agent.ts +115 -0
  141. package/corpus/templates/slides/app/pages/DeckEditor.tsx +22 -13
  142. package/corpus/templates/slides/changelog/2026-07-08-dropping-an-image-onto-a-slide-and-sending-it-to-the-agent-w.md +6 -0
  143. package/corpus/templates/slides/changelog/2026-07-08-undo-works-after-the-agent-edits-a-slide-so-you-can-reverse.md +6 -0
  144. package/corpus/templates/slides/package.json +2 -2
  145. package/dist/agent/run-manager.d.ts.map +1 -1
  146. package/dist/agent/run-manager.js +23 -2
  147. package/dist/agent/run-manager.js.map +1 -1
  148. package/dist/agent/run-store.js +2 -2
  149. package/dist/agent/run-store.js.map +1 -1
  150. package/dist/catalog.json +2 -2
  151. package/dist/cli/add.js +1 -1
  152. package/dist/cli/add.js.map +1 -1
  153. package/dist/cli/create.d.ts.map +1 -1
  154. package/dist/cli/create.js +8 -3
  155. package/dist/cli/create.js.map +1 -1
  156. package/dist/cli/index.js +5 -4
  157. package/dist/cli/index.js.map +1 -1
  158. package/dist/client/extensions/ExtensionSlot.js +6 -0
  159. package/dist/client/extensions/ExtensionSlot.js.map +1 -1
  160. package/dist/client/session-replay.d.ts +8 -0
  161. package/dist/client/session-replay.d.ts.map +1 -1
  162. package/dist/client/session-replay.js +80 -3
  163. package/dist/client/session-replay.js.map +1 -1
  164. package/dist/collab/struct-routes.d.ts +1 -1
  165. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  166. package/dist/jobs/scheduler.js +26 -1
  167. package/dist/jobs/scheduler.js.map +1 -1
  168. package/dist/localization/default-messages.d.ts +19 -0
  169. package/dist/localization/default-messages.d.ts.map +1 -1
  170. package/dist/localization/default-messages.js +19 -0
  171. package/dist/localization/default-messages.js.map +1 -1
  172. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  173. package/dist/resources/handlers.d.ts +2 -2
  174. package/dist/templates/default/app/i18n/ar-SA.ts +21 -0
  175. package/dist/templates/default/app/i18n/de-DE.ts +21 -0
  176. package/dist/templates/default/app/i18n/en-US.ts +21 -0
  177. package/dist/templates/default/app/i18n/es-ES.ts +21 -0
  178. package/dist/templates/default/app/i18n/fr-FR.ts +21 -0
  179. package/dist/templates/default/app/i18n/hi-IN.ts +20 -0
  180. package/dist/templates/default/app/i18n/ja-JP.ts +21 -0
  181. package/dist/templates/default/app/i18n/ko-KR.ts +20 -0
  182. package/dist/templates/default/app/i18n/pt-BR.ts +21 -0
  183. package/dist/templates/default/app/i18n/zh-CN.ts +20 -0
  184. package/dist/templates/default/app/i18n/zh-TW.ts +19 -0
  185. package/dist/templates/default/package.json +2 -2
  186. package/dist/templates/headless/package.json +3 -3
  187. package/dist/templates/workspace-core/package.json +6 -6
  188. package/dist/templates/workspace-root/package.json +2 -2
  189. package/dist/triggers/dispatcher.js +27 -2
  190. package/dist/triggers/dispatcher.js.map +1 -1
  191. package/dist/vite/client.d.ts.map +1 -1
  192. package/dist/vite/client.js +70 -1
  193. package/dist/vite/client.js.map +1 -1
  194. package/package.json +7 -6
  195. package/src/templates/default/app/i18n/ar-SA.ts +21 -0
  196. package/src/templates/default/app/i18n/de-DE.ts +21 -0
  197. package/src/templates/default/app/i18n/en-US.ts +21 -0
  198. package/src/templates/default/app/i18n/es-ES.ts +21 -0
  199. package/src/templates/default/app/i18n/fr-FR.ts +21 -0
  200. package/src/templates/default/app/i18n/hi-IN.ts +20 -0
  201. package/src/templates/default/app/i18n/ja-JP.ts +21 -0
  202. package/src/templates/default/app/i18n/ko-KR.ts +20 -0
  203. package/src/templates/default/app/i18n/pt-BR.ts +21 -0
  204. package/src/templates/default/app/i18n/zh-CN.ts +20 -0
  205. package/src/templates/default/app/i18n/zh-TW.ts +19 -0
  206. package/src/templates/default/package.json +2 -2
  207. package/src/templates/headless/package.json +3 -3
  208. package/src/templates/workspace-core/package.json +6 -6
  209. package/src/templates/workspace-root/package.json +2 -2
@@ -41,6 +41,8 @@ const messages = {
41
41
  destinations: "Destinations",
42
42
  identities: "Identities",
43
43
  approvals: "الموافقات",
44
+ automations: "الأتمتة",
45
+ delivery: "التسليم",
44
46
  audit: "Audit",
45
47
  dreams: "Dreams",
46
48
  threadDebug: "تصحيح الموضوع",
@@ -159,6 +161,22 @@ const messages = {
159
161
  activeUsers: "المستخدمين النشطين",
160
162
  workspaceAppsStat: "تطبيقات مساحة العمل",
161
163
  chatThreads: "مواضيع الدردشة",
164
+ also: "أيضًا",
165
+ workspaceShortcutsAria: "اختصارات مساحة العمل",
166
+ deliveryQueue: "قائمة انتظار التسليم",
167
+ failedLastHour: "{{count}} فشل خلال الساعة الماضية",
168
+ processingCount: "{{count}} قيد المعالجة",
169
+ queued: "في الانتظار",
170
+ active: "نشط",
171
+ done1h: "تم خلال ساعة",
172
+ failed1h: "فشل خلال ساعة",
173
+ oldestQueued: "الأقدم في الانتظار: {{age}}",
174
+ queueAgeNone: "لا شيء",
175
+ queueFailureHint:
176
+ "تحقق من بيانات الاعتماد والوجهات وأخطاء قائمة الانتظار الأخيرة.",
177
+ unknownPlatform: "غير معروف",
178
+ attemptsCount: "{{count}} محاولات",
179
+ noErrorMessage: "(لا توجد رسالة خطأ)",
162
180
  },
163
181
  },
164
182
  agentPanel: {
@@ -346,6 +364,9 @@ const messages = {
346
364
  contactSidebarWidget: "الاتصال القطعة الشريط الجانبي",
347
365
  contactSidebarDescription:
348
366
  "يظهر بجانب المحادثة الحالية مع سياق جهة الاتصال وسلسلة المحادثات.",
367
+ eventDetailWidget: "أداة تفاصيل الحدث",
368
+ eventDetailDescription:
369
+ "تظهر أسفل حدث التقويم المفتوح مع سياق الحدث والحضور.",
349
370
  addWidgetHere: "أضف القطعة هنا",
350
371
  back: "رجوع",
351
372
  editExtension: "تحرير التمديد",
@@ -43,6 +43,8 @@ const messages = {
43
43
  destinations: "Destinations",
44
44
  identities: "Identities",
45
45
  approvals: "Zulassungen",
46
+ automations: "Automatisierungen",
47
+ delivery: "Zustellung",
46
48
  audit: "Audit",
47
49
  dreams: "Dreams",
48
50
  threadDebug: "Thread-Debug",
@@ -160,6 +162,22 @@ const messages = {
160
162
  activeUsers: "Aktive Benutzer",
161
163
  workspaceAppsStat: "Workspace-Apps",
162
164
  chatThreads: "Chat-Threads",
165
+ also: "Außerdem",
166
+ workspaceShortcutsAria: "Workspace-Kurzbefehle",
167
+ deliveryQueue: "Zustellungswarteschlange",
168
+ failedLastHour: "{{count}} fehlgeschlagen in der letzten Stunde",
169
+ processingCount: "{{count}} in Bearbeitung",
170
+ queued: "Warteschlange",
171
+ active: "Aktiv",
172
+ done1h: "Erledigt 1 Std.",
173
+ failed1h: "Fehlgeschlagen 1 Std.",
174
+ oldestQueued: "Älteste Warteschlange: {{age}}",
175
+ queueAgeNone: "keine",
176
+ queueFailureHint:
177
+ "Prüfe Anmeldedaten, Ziele und aktuelle Warteschlangenfehler.",
178
+ unknownPlatform: "unbekannt",
179
+ attemptsCount: "{{count}} Versuche",
180
+ noErrorMessage: "(keine Fehlermeldung)",
163
181
  },
164
182
  },
165
183
  agentPanel: {
@@ -339,6 +357,9 @@ const messages = {
339
357
  contactSidebarWidget: "Kontakt-Sidebar-Widget",
340
358
  contactSidebarDescription:
341
359
  "Erscheint neben der aktuellen Konversation mit Kontakt- und Thread-Kontext.",
360
+ eventDetailWidget: "Ereignisdetail-Widget",
361
+ eventDetailDescription:
362
+ "Erscheint unter dem geöffneten Kalenderereignis mit Ereignis- und Teilnehmerkontext.",
342
363
  addWidgetHere: "Widget hier hinzufügen",
343
364
  back: "Zurück",
344
365
  editExtension: "Erweiterung bearbeiten",
@@ -42,6 +42,8 @@ const messages = {
42
42
  destinations: "Destinations",
43
43
  identities: "Identities",
44
44
  approvals: "Approvals",
45
+ automations: "Automations",
46
+ delivery: "Delivery",
45
47
  audit: "Audit",
46
48
  dreams: "Dreams",
47
49
  threadDebug: "Thread Debug",
@@ -156,6 +158,22 @@ const messages = {
156
158
  activeUsers: "Active users",
157
159
  workspaceAppsStat: "Workspace apps",
158
160
  chatThreads: "Chat threads",
161
+ also: "Also",
162
+ workspaceShortcutsAria: "Workspace shortcuts",
163
+ deliveryQueue: "Delivery queue",
164
+ failedLastHour: "{{count}} failed in the last hour",
165
+ processingCount: "{{count}} processing",
166
+ queued: "Queued",
167
+ active: "Active",
168
+ done1h: "Done 1h",
169
+ failed1h: "Failed 1h",
170
+ oldestQueued: "Oldest queued: {{age}}",
171
+ queueAgeNone: "none",
172
+ queueFailureHint:
173
+ "Check credentials, destinations, and recent queue errors.",
174
+ unknownPlatform: "unknown",
175
+ attemptsCount: "{{count}} attempts",
176
+ noErrorMessage: "(no error message)",
159
177
  },
160
178
  },
161
179
  agentPanel: {
@@ -330,6 +348,9 @@ const messages = {
330
348
  contactSidebarWidget: "Contact sidebar widget",
331
349
  contactSidebarDescription:
332
350
  "Appears beside the current conversation with contact and thread context.",
351
+ eventDetailWidget: "Event detail widget",
352
+ eventDetailDescription:
353
+ "Appears below the open calendar event with event and attendee context.",
333
354
  addWidgetHere: "Add widget here",
334
355
  back: "Back",
335
356
  editExtension: "Edit Extension",
@@ -43,6 +43,8 @@ const messages = {
43
43
  destinations: "Destinations",
44
44
  identities: "Identities",
45
45
  approvals: "Aprobaciones",
46
+ automations: "Automatizaciones",
47
+ delivery: "Entrega",
46
48
  audit: "Audit",
47
49
  dreams: "Dreams",
48
50
  threadDebug: "Depuración de subprocesos",
@@ -161,6 +163,22 @@ const messages = {
161
163
  activeUsers: "Usuarios activos",
162
164
  workspaceAppsStat: "Aplicaciones de espacio de trabajo",
163
165
  chatThreads: "Hilos de chat",
166
+ also: "También",
167
+ workspaceShortcutsAria: "Accesos directos del espacio de trabajo",
168
+ deliveryQueue: "Cola de entrega",
169
+ failedLastHour: "{{count}} fallos en la última hora",
170
+ processingCount: "{{count}} en proceso",
171
+ queued: "En cola",
172
+ active: "Activo",
173
+ done1h: "Hecho 1 h",
174
+ failed1h: "Fallido 1 h",
175
+ oldestQueued: "Más antiguo en cola: {{age}}",
176
+ queueAgeNone: "ninguno",
177
+ queueFailureHint:
178
+ "Revisa las credenciales, los destinos y los errores recientes de la cola.",
179
+ unknownPlatform: "desconocido",
180
+ attemptsCount: "{{count}} intentos",
181
+ noErrorMessage: "(sin mensaje de error)",
164
182
  },
165
183
  },
166
184
  agentPanel: {
@@ -344,6 +362,9 @@ const messages = {
344
362
  contactSidebarWidget: "Widget de la barra lateral de contacto",
345
363
  contactSidebarDescription:
346
364
  "Aparece junto a la conversación actual con el contexto del contacto y del hilo.",
365
+ eventDetailWidget: "Widget de detalle del evento",
366
+ eventDetailDescription:
367
+ "Aparece debajo del evento de calendario abierto con el contexto del evento y los asistentes.",
347
368
  addWidgetHere: "Añadir widget aquí",
348
369
  back: "Volver",
349
370
  editExtension: "Editar extensión",
@@ -43,6 +43,8 @@ const messages = {
43
43
  destinations: "Destinations",
44
44
  identities: "Identities",
45
45
  approvals: "Approbations",
46
+ automations: "Automatisations",
47
+ delivery: "Livraison",
46
48
  audit: "Audit",
47
49
  dreams: "Dreams",
48
50
  threadDebug: "Débogage du fil de discussion",
@@ -161,6 +163,22 @@ const messages = {
161
163
  activeUsers: "Utilisateurs actifs",
162
164
  workspaceAppsStat: "Applications d'espace de travail",
163
165
  chatThreads: "Fils de discussion",
166
+ also: "Aussi",
167
+ workspaceShortcutsAria: "Raccourcis de l’espace de travail",
168
+ deliveryQueue: "File de livraison",
169
+ failedLastHour: "{{count}} échecs au cours de la dernière heure",
170
+ processingCount: "{{count}} en cours",
171
+ queued: "En file",
172
+ active: "Actif",
173
+ done1h: "Terminé 1 h",
174
+ failed1h: "Échoué 1 h",
175
+ oldestQueued: "Plus ancien en file : {{age}}",
176
+ queueAgeNone: "aucun",
177
+ queueFailureHint:
178
+ "Vérifiez les identifiants, les destinations et les erreurs récentes de la file.",
179
+ unknownPlatform: "inconnu",
180
+ attemptsCount: "{{count}} tentatives",
181
+ noErrorMessage: "(aucun message d’erreur)",
164
182
  },
165
183
  },
166
184
  agentPanel: {
@@ -342,6 +360,9 @@ const messages = {
342
360
  contactSidebarWidget: "Widget de la barre latérale des contacts",
343
361
  contactSidebarDescription:
344
362
  "Apparaît à côté de la conversation en cours avec le contexte du contact et du fil de discussion.",
363
+ eventDetailWidget: "Widget de détail d'événement",
364
+ eventDetailDescription:
365
+ "Apparaît sous l'événement de calendrier ouvert avec le contexte de l'événement et des participants.",
345
366
  addWidgetHere: "Ajouter un widget ici",
346
367
  back: "Retour",
347
368
  editExtension: "Modifier l'extension",
@@ -41,6 +41,8 @@ const messages = {
41
41
  destinations: "Destinations",
42
42
  identities: "Identities",
43
43
  approvals: "स्वीकृतियाँ",
44
+ automations: "ऑटोमेशन",
45
+ delivery: "डिलीवरी",
44
46
  audit: "Audit",
45
47
  dreams: "Dreams",
46
48
  threadDebug: "थ्रेड डिबग",
@@ -152,6 +154,21 @@ const messages = {
152
154
  activeUsers: "सक्रिय उपयोगकर्ता",
153
155
  workspaceAppsStat: "कार्यक्षेत्र ऐप्स",
154
156
  chatThreads: "चैट सूत्र",
157
+ also: "और भी",
158
+ workspaceShortcutsAria: "कार्यस्थान शॉर्टकट",
159
+ deliveryQueue: "डिलीवरी कतार",
160
+ failedLastHour: "पिछले घंटे में {{count}} विफल",
161
+ processingCount: "{{count}} प्रोसेस हो रहे हैं",
162
+ queued: "कतार में",
163
+ active: "सक्रिय",
164
+ done1h: "पूर्ण 1घं",
165
+ failed1h: "विफल 1घं",
166
+ oldestQueued: "सबसे पुराना कतार में: {{age}}",
167
+ queueAgeNone: "कोई नहीं",
168
+ queueFailureHint: "क्रेडेंशियल, गंतव्य और हाल की कतार त्रुटियाँ जाँचें।",
169
+ unknownPlatform: "अज्ञात",
170
+ attemptsCount: "{{count}} प्रयास",
171
+ noErrorMessage: "(कोई त्रुटि संदेश नहीं)",
155
172
  },
156
173
  },
157
174
  agentPanel: {
@@ -327,6 +344,9 @@ const messages = {
327
344
  contactSidebarWidget: "साइडबार विजेट से संपर्क करें",
328
345
  contactSidebarDescription:
329
346
  "संपर्क और थ्रेड संदर्भ के साथ वर्तमान वार्तालाप के बगल में दिखाई देता है।",
347
+ eventDetailWidget: "इवेंट विवरण विजेट",
348
+ eventDetailDescription:
349
+ "खुले कैलेंडर इवेंट के नीचे इवेंट और उपस्थित लोगों के संदर्भ के साथ दिखाई देता है।",
330
350
  addWidgetHere: "यहां विजेट जोड़ें",
331
351
  back: "वापस",
332
352
  editExtension: "एक्सटेंशन संपादित करें",
@@ -43,6 +43,8 @@ const messages = {
43
43
  destinations: "Destinations",
44
44
  identities: "Identities",
45
45
  approvals: "承認",
46
+ automations: "自動化",
47
+ delivery: "配信",
46
48
  audit: "Audit",
47
49
  dreams: "Dreams",
48
50
  threadDebug: "スレッドのデバッグ",
@@ -157,6 +159,22 @@ const messages = {
157
159
  activeUsers: "アクティブユーザー",
158
160
  workspaceAppsStat: "ワークスペースアプリ",
159
161
  chatThreads: "チャットスレッド",
162
+ also: "その他",
163
+ workspaceShortcutsAria: "ワークスペースのショートカット",
164
+ deliveryQueue: "配信キュー",
165
+ failedLastHour: "過去 1 時間で {{count}} 件失敗",
166
+ processingCount: "{{count}} 件処理中",
167
+ queued: "待機中",
168
+ active: "実行中",
169
+ done1h: "完了 1h",
170
+ failed1h: "失敗 1h",
171
+ oldestQueued: "最古の待機: {{age}}",
172
+ queueAgeNone: "なし",
173
+ queueFailureHint:
174
+ "認証情報、送信先、最近のキューエラーを確認してください。",
175
+ unknownPlatform: "不明",
176
+ attemptsCount: "{{count}} 回試行",
177
+ noErrorMessage: "(エラーメッセージなし)",
160
178
  },
161
179
  },
162
180
  agentPanel: {
@@ -332,6 +350,9 @@ const messages = {
332
350
  contactSidebarWidget: "連絡先サイドバー ウィジェット",
333
351
  contactSidebarDescription:
334
352
  "現在の会話の横に連絡先とスレッドのコンテキストが表示されます。",
353
+ eventDetailWidget: "予定詳細ウィジェット",
354
+ eventDetailDescription:
355
+ "開いているカレンダー予定の下に、予定と出席者のコンテキストとともに表示されます。",
335
356
  addWidgetHere: "ここにウィジェットを追加",
336
357
  back: "戻る",
337
358
  editExtension: "拡張子の編集",
@@ -42,6 +42,8 @@ const messages = {
42
42
  destinations: "Destinations",
43
43
  identities: "Identities",
44
44
  approvals: "승인",
45
+ automations: "자동화",
46
+ delivery: "전달",
45
47
  audit: "Audit",
46
48
  dreams: "Dreams",
47
49
  threadDebug: "스레드 디버그",
@@ -154,6 +156,21 @@ const messages = {
154
156
  activeUsers: "활성 사용자",
155
157
  workspaceAppsStat: "작업 공간 앱",
156
158
  chatThreads: "채팅 스레드",
159
+ also: "또한",
160
+ workspaceShortcutsAria: "워크스페이스 바로가기",
161
+ deliveryQueue: "전달 대기열",
162
+ failedLastHour: "지난 1시간 동안 {{count}}건 실패",
163
+ processingCount: "{{count}}건 처리 중",
164
+ queued: "대기 중",
165
+ active: "진행 중",
166
+ done1h: "완료 1시간",
167
+ failed1h: "실패 1시간",
168
+ oldestQueued: "가장 오래된 대기: {{age}}",
169
+ queueAgeNone: "없음",
170
+ queueFailureHint: "자격 증명, 대상, 최근 대기열 오류를 확인하세요.",
171
+ unknownPlatform: "알 수 없음",
172
+ attemptsCount: "{{count}}회 시도",
173
+ noErrorMessage: "(오류 메시지 없음)",
157
174
  },
158
175
  },
159
176
  agentPanel: {
@@ -326,6 +343,9 @@ const messages = {
326
343
  contactSidebarWidget: "연락처 사이드바 위젯",
327
344
  contactSidebarDescription:
328
345
  "연락처 및 스레드 컨텍스트가 포함된 현재 대화 옆에 표시됩니다.",
346
+ eventDetailWidget: "일정 상세 위젯",
347
+ eventDetailDescription:
348
+ "열린 캘린더 일정 아래에 일정 및 참석자 컨텍스트와 함께 표시됩니다.",
329
349
  addWidgetHere: "여기에 위젯 추가",
330
350
  back: "뒤로",
331
351
  editExtension: "확장 편집",
@@ -43,6 +43,8 @@ const messages = {
43
43
  destinations: "Destinations",
44
44
  identities: "Identities",
45
45
  approvals: "Aprovações",
46
+ automations: "Automações",
47
+ delivery: "Entrega",
46
48
  audit: "Audit",
47
49
  dreams: "Dreams",
48
50
  threadDebug: "Depuração de thread",
@@ -161,6 +163,22 @@ const messages = {
161
163
  activeUsers: "Usuários ativos",
162
164
  workspaceAppsStat: "Aplicativos de espaço de trabalho",
163
165
  chatThreads: "Tópicos de bate-papo",
166
+ also: "Também",
167
+ workspaceShortcutsAria: "Atalhos do espaço de trabalho",
168
+ deliveryQueue: "Fila de entrega",
169
+ failedLastHour: "{{count}} falhas na última hora",
170
+ processingCount: "{{count}} em processamento",
171
+ queued: "Na fila",
172
+ active: "Ativo",
173
+ done1h: "Concluído 1 h",
174
+ failed1h: "Falhou 1 h",
175
+ oldestQueued: "Mais antigo na fila: {{age}}",
176
+ queueAgeNone: "nenhum",
177
+ queueFailureHint:
178
+ "Verifique credenciais, destinos e erros recentes da fila.",
179
+ unknownPlatform: "desconhecido",
180
+ attemptsCount: "{{count}} tentativas",
181
+ noErrorMessage: "(sem mensagem de erro)",
164
182
  },
165
183
  },
166
184
  agentPanel: {
@@ -341,6 +359,9 @@ const messages = {
341
359
  contactSidebarWidget: "Widget da barra lateral de contato",
342
360
  contactSidebarDescription:
343
361
  "Aparece ao lado da conversa atual com o contexto do contato e do tópico.",
362
+ eventDetailWidget: "Widget de detalhes do evento",
363
+ eventDetailDescription:
364
+ "Aparece abaixo do evento aberto do calendário com o contexto do evento e dos participantes.",
344
365
  addWidgetHere: "Adicione widget aqui",
345
366
  back: "Voltar",
346
367
  editExtension: "Editar extensão",
@@ -41,6 +41,8 @@ const messages = {
41
41
  destinations: "Destinations",
42
42
  identities: "Identities",
43
43
  approvals: "批准",
44
+ automations: "自动化",
45
+ delivery: "投递",
44
46
  audit: "Audit",
45
47
  dreams: "Dreams",
46
48
  threadDebug: "线程调试",
@@ -150,6 +152,21 @@ const messages = {
150
152
  activeUsers: "活跃用户",
151
153
  workspaceAppsStat: "工作区应用程序",
152
154
  chatThreads: "聊天话题",
155
+ also: "还有",
156
+ workspaceShortcutsAria: "工作区快捷入口",
157
+ deliveryQueue: "投递队列",
158
+ failedLastHour: "过去一小时失败 {{count}} 次",
159
+ processingCount: "{{count}} 个处理中",
160
+ queued: "排队中",
161
+ active: "进行中",
162
+ done1h: "完成 1 小时",
163
+ failed1h: "失败 1 小时",
164
+ oldestQueued: "最早排队:{{age}}",
165
+ queueAgeNone: "无",
166
+ queueFailureHint: "请检查凭据、目的地和最近的队列错误。",
167
+ unknownPlatform: "未知",
168
+ attemptsCount: "{{count}} 次尝试",
169
+ noErrorMessage: "(无错误消息)",
153
170
  },
154
171
  },
155
172
  agentPanel: {
@@ -316,6 +333,9 @@ const messages = {
316
333
  buildNewWidget: "构建一个新的小部件",
317
334
  contactSidebarWidget: "联系侧边栏小部件",
318
335
  contactSidebarDescription: "显示在当前对话旁边,包含联系人和线程上下文。",
336
+ eventDetailWidget: "活动详情小部件",
337
+ eventDetailDescription:
338
+ "显示在打开的日历活动下方,包含活动和与会者上下文。",
319
339
  addWidgetHere: "在这里添加小部件",
320
340
  back: "返回",
321
341
  editExtension: "编辑扩展名",
@@ -41,6 +41,8 @@ const messages = {
41
41
  destinations: "Destinations",
42
42
  identities: "Identities",
43
43
  approvals: "核准",
44
+ automations: "自動化",
45
+ delivery: "投遞",
44
46
  audit: "Audit",
45
47
  dreams: "Dreams",
46
48
  threadDebug: "對話串偵錯",
@@ -148,6 +150,21 @@ const messages = {
148
150
  activeUsers: "活躍使用者",
149
151
  workspaceAppsStat: "工作區應用程式",
150
152
  chatThreads: "聊天話題",
153
+ also: "還有",
154
+ workspaceShortcutsAria: "工作區快捷入口",
155
+ deliveryQueue: "投遞佇列",
156
+ failedLastHour: "過去一小時失敗 {{count}} 次",
157
+ processingCount: "{{count}} 個處理中",
158
+ queued: "排隊中",
159
+ active: "進行中",
160
+ done1h: "完成 1 小時",
161
+ failed1h: "失敗 1 小時",
162
+ oldestQueued: "最早排隊:{{age}}",
163
+ queueAgeNone: "無",
164
+ queueFailureHint: "請檢查憑證、目的地和最近的佇列錯誤。",
165
+ unknownPlatform: "未知",
166
+ attemptsCount: "{{count}} 次嘗試",
167
+ noErrorMessage: "(無錯誤訊息)",
151
168
  },
152
169
  },
153
170
  agentPanel: {
@@ -316,6 +333,8 @@ const messages = {
316
333
  buildNewWidget: "建置一個新的小工具",
317
334
  contactSidebarWidget: "聯絡側邊欄小工具",
318
335
  contactSidebarDescription: "顯示在目前對話旁邊,包含聯絡人和對話串脈絡。",
336
+ eventDetailWidget: "活動詳情小工具",
337
+ eventDetailDescription: "顯示在開啟的日曆活動下方,包含活動與出席者脈絡。",
319
338
  addWidgetHere: "在這裡新增小工具",
320
339
  back: "返回",
321
340
  editExtension: "編輯擴充功能名",
@@ -31,7 +31,6 @@
31
31
  "@types/node": "^24.2.1",
32
32
  "@types/react": "catalog:",
33
33
  "@types/react-dom": "catalog:",
34
- "@typescript/native-preview": "catalog:",
35
34
  "class-variance-authority": "^0.7.1",
36
35
  "clsx": "^2.1.1",
37
36
  "next-themes": "^0.4.6",
@@ -43,7 +42,8 @@
43
42
  "tailwind-merge": "^3.5.0",
44
43
  "tailwindcss": "^4.1.18",
45
44
  "tsx": "^4.20.3",
46
- "typescript": "^6.0.3",
45
+ "typescript": "catalog:",
46
+ "typescript-7": "catalog:",
47
47
  "vite": "^8.0.0"
48
48
  }
49
49
  }
@@ -7,7 +7,7 @@
7
7
  "agent": "agent-native agent",
8
8
  "script": "agent-native script",
9
9
  "skills:update": "agent-native skills update scaffold --project",
10
- "typecheck": "tsgo --noEmit"
10
+ "typecheck": "tsc --noEmit"
11
11
  },
12
12
  "dependencies": {
13
13
  "@agent-native/core": "latest",
@@ -16,9 +16,9 @@
16
16
  },
17
17
  "devDependencies": {
18
18
  "@types/node": "^24.2.1",
19
- "@typescript/native-preview": "catalog:",
20
19
  "oxfmt": "catalog:",
21
20
  "tsx": "^4.20.3",
22
- "typescript": "^6.0.3"
21
+ "typescript": "catalog:",
22
+ "typescript-7": "catalog:"
23
23
  }
24
24
  }
@@ -26,13 +26,13 @@
26
26
  }
27
27
  },
28
28
  "scripts": {
29
- "build": "tsgo",
30
- "dev": "tsgo --watch --preserveWatchOutput",
31
- "typecheck": "tsgo --noEmit",
32
- "prepare": "tsgo"
29
+ "build": "tsc",
30
+ "dev": "tsc --watch --preserveWatchOutput",
31
+ "typecheck": "tsc --noEmit",
32
+ "prepare": "tsc"
33
33
  },
34
34
  "devDependencies": {
35
- "@typescript/native-preview": "catalog:",
36
- "typescript": "^6.0.3"
35
+ "typescript": "catalog:",
36
+ "typescript-7": "catalog:"
37
37
  }
38
38
  }
@@ -17,10 +17,10 @@
17
17
  },
18
18
  "devDependencies": {
19
19
  "@types/node": "^24.2.1",
20
- "@typescript/native-preview": "catalog:",
21
20
  "oxfmt": "catalog:",
22
21
  "tsx": "catalog:",
23
- "typescript": "^6.0.3"
22
+ "typescript": "catalog:",
23
+ "typescript-7": "catalog:"
24
24
  },
25
25
  "packageManager": "pnpm@10.14.0",
26
26
  "agent-native": {
@@ -325,7 +325,7 @@ async function dispatchAgentic(resource, meta, body, payload, eventMeta, apiKey)
325
325
  (await getStoredModelForEngine(engine, { appId: _deps.appId })) ??
326
326
  engine.defaultModel;
327
327
  const model = normalizeModelForEngine(engine, modelCandidate);
328
- await createThread(jobUserEmail, {
328
+ const thread = await createThread(jobUserEmail, {
329
329
  title: `Trigger: ${triggerName} — ${now.toLocaleDateString()}`,
330
330
  });
331
331
  let payloadStr;
@@ -355,8 +355,9 @@ ${body}`;
355
355
  const controller = new AbortController();
356
356
  const timeout = setTimeout(() => controller.abort(), 5 * 60 * 1000);
357
357
  const events = [];
358
+ let triggerUsage = null;
358
359
  try {
359
- await runAgentLoop({
360
+ triggerUsage = await runAgentLoop({
360
361
  engine,
361
362
  model,
362
363
  systemPrompt,
@@ -365,11 +366,35 @@ ${body}`;
365
366
  actions,
366
367
  send: (event) => events.push(event),
367
368
  signal: controller.signal,
369
+ threadId: thread.id,
368
370
  });
369
371
  }
370
372
  finally {
371
373
  clearTimeout(timeout);
372
374
  }
375
+ if (triggerUsage &&
376
+ (triggerUsage.inputTokens > 0 ||
377
+ triggerUsage.outputTokens > 0 ||
378
+ triggerUsage.cacheReadTokens > 0 ||
379
+ triggerUsage.cacheWriteTokens > 0)) {
380
+ try {
381
+ const { recordUsage } = await import("../usage/store.js");
382
+ await recordUsage({
383
+ ownerEmail: jobUserEmail,
384
+ inputTokens: triggerUsage.inputTokens,
385
+ outputTokens: triggerUsage.outputTokens,
386
+ cacheReadTokens: triggerUsage.cacheReadTokens,
387
+ cacheWriteTokens: triggerUsage.cacheWriteTokens,
388
+ model: triggerUsage.model,
389
+ label: `automation:${triggerName}`,
390
+ app: _deps.appId,
391
+ refId: eventMeta.eventId,
392
+ });
393
+ }
394
+ catch {
395
+ // Usage attribution must not break automation dispatch.
396
+ }
397
+ }
373
398
  meta.lastStatus = "success";
374
399
  await resourcePut(resource.owner, resource.path, buildTriggerContent(meta, body));
375
400
  console.log(`[triggers] "${triggerName}" completed successfully`);