@agent-native/core 0.84.67 → 0.85.0

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 (145) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +14 -0
  3. package/corpus/core/docs/content/locales/ar-SA/tracking.mdx +55 -0
  4. package/corpus/core/docs/content/locales/de-DE/tracking.mdx +55 -0
  5. package/corpus/core/docs/content/locales/es-ES/tracking.mdx +55 -0
  6. package/corpus/core/docs/content/locales/fr-FR/tracking.mdx +55 -0
  7. package/corpus/core/docs/content/locales/hi-IN/tracking.mdx +55 -0
  8. package/corpus/core/docs/content/locales/ja-JP/tracking.mdx +55 -0
  9. package/corpus/core/docs/content/locales/ko-KR/tracking.mdx +55 -0
  10. package/corpus/core/docs/content/locales/pt-BR/tracking.mdx +55 -0
  11. package/corpus/core/docs/content/locales/zh-CN/tracking.mdx +55 -0
  12. package/corpus/core/docs/content/locales/zh-TW/tracking.mdx +55 -0
  13. package/corpus/core/docs/content/tracking.mdx +2 -0
  14. package/corpus/core/package.json +1 -1
  15. package/corpus/core/src/agent/production-agent.ts +199 -38
  16. package/corpus/core/src/agent/run-manager.ts +79 -0
  17. package/corpus/core/src/agent/run-store.ts +117 -5
  18. package/corpus/core/src/agent/types.ts +13 -0
  19. package/corpus/core/src/client/RunStuckBanner.tsx +14 -0
  20. package/corpus/core/src/client/agent-chat-adapter.ts +475 -0
  21. package/corpus/core/src/client/analytics.ts +2 -0
  22. package/corpus/core/src/client/error-format.ts +4 -0
  23. package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +1 -1
  24. package/corpus/core/src/client/session-replay.ts +774 -2
  25. package/corpus/core/src/client/sse-event-processor.ts +65 -9
  26. package/corpus/core/src/client/use-run-stuck-detection.ts +31 -7
  27. package/corpus/core/src/db/runtime-diagnostics.ts +331 -0
  28. package/corpus/core/src/server/agent-chat-plugin.ts +115 -2
  29. package/corpus/core/src/server/core-routes-plugin.ts +91 -4
  30. package/corpus/core/src/server/http-response-telemetry.ts +189 -0
  31. package/corpus/core/src/server/self-dispatch.ts +29 -0
  32. package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +53 -1
  33. package/corpus/templates/analytics/AGENTS.md +13 -0
  34. package/corpus/templates/analytics/actions/view-screen.ts +25 -0
  35. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +20 -0
  36. package/corpus/templates/analytics/app/global.css +55 -0
  37. package/corpus/templates/analytics/app/i18n/zh-TW.ts +100 -1
  38. package/corpus/templates/analytics/app/i18n-data.ts +1226 -0
  39. package/corpus/templates/analytics/app/pages/Settings.tsx +3 -0
  40. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/EmailReportDialog.tsx +182 -144
  41. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +11 -18
  42. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +11 -18
  43. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +49 -1
  44. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +557 -0
  45. package/corpus/templates/analytics/app/pages/sessions/session-replay-devtools.ts +274 -0
  46. package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +974 -0
  47. package/corpus/templates/analytics/changelog/2026-07-02-alert-rules-can-now-be-viewed-and-managed-from-settings.md +6 -0
  48. package/corpus/templates/analytics/changelog/2026-07-02-recent-ask-chats-show-a-loading-placeholder-while-your-chat-.md +6 -0
  49. package/corpus/templates/analytics/changelog/2026-07-02-session-replays-now-capture-console-logs-and-network-request.md +6 -0
  50. package/corpus/templates/analytics/changelog/2026-07-02-sharing-status-labels-use-neutral-icons-instead-of-colored-d.md +6 -0
  51. package/corpus/templates/analytics/changelog/2026-07-02-the-session-replay-viewer-has-a-dev-tools-panel-with-console.md +6 -0
  52. package/corpus/templates/analytics/server/db/schema.ts +3 -0
  53. package/corpus/templates/analytics/server/jobs/analytics-alerts.ts +4 -0
  54. package/corpus/templates/analytics/server/lib/analytics-alerts.ts +142 -1
  55. package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +369 -8
  56. package/corpus/templates/analytics/server/lib/session-replay.ts +76 -2
  57. package/corpus/templates/analytics/server/routes/api/session-replay/agent-diagnostics.json.get.ts +101 -0
  58. package/corpus/templates/analytics/shared/session-replay-diagnostics.ts +78 -0
  59. package/corpus/templates/design/app/pages/DesignEditor.tsx +24 -12
  60. package/corpus/templates/design/changelog/2026-07-02-the-temporary-code-tab-is-hidden-from-the-design-editor-side.md +6 -0
  61. package/corpus/templates/plan/actions/create-visual-recap.ts +1 -1
  62. package/corpus/templates/plan/actions/update-local-plan-folder.ts +3 -1
  63. package/corpus/templates/plan/actions/update-visual-plan.ts +1 -1
  64. package/corpus/templates/plan/changelog/2026-07-02-trying-to-edit-a-recap-or-plan-you-can-only-view-now-explain.md +6 -0
  65. package/corpus/templates/plan/server/plans.ts +26 -9
  66. package/dist/agent/production-agent.d.ts.map +1 -1
  67. package/dist/agent/production-agent.js +155 -34
  68. package/dist/agent/production-agent.js.map +1 -1
  69. package/dist/agent/run-manager.d.ts +29 -0
  70. package/dist/agent/run-manager.d.ts.map +1 -1
  71. package/dist/agent/run-manager.js +73 -0
  72. package/dist/agent/run-manager.js.map +1 -1
  73. package/dist/agent/run-store.d.ts +41 -0
  74. package/dist/agent/run-store.d.ts.map +1 -1
  75. package/dist/agent/run-store.js +100 -4
  76. package/dist/agent/run-store.js.map +1 -1
  77. package/dist/agent/types.d.ts +13 -0
  78. package/dist/agent/types.d.ts.map +1 -1
  79. package/dist/agent/types.js.map +1 -1
  80. package/dist/client/RunStuckBanner.d.ts.map +1 -1
  81. package/dist/client/RunStuckBanner.js +13 -0
  82. package/dist/client/RunStuckBanner.js.map +1 -1
  83. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  84. package/dist/client/agent-chat-adapter.js +410 -0
  85. package/dist/client/agent-chat-adapter.js.map +1 -1
  86. package/dist/client/analytics.d.ts +1 -1
  87. package/dist/client/analytics.d.ts.map +1 -1
  88. package/dist/client/analytics.js.map +1 -1
  89. package/dist/client/error-format.d.ts.map +1 -1
  90. package/dist/client/error-format.js +2 -0
  91. package/dist/client/error-format.js.map +1 -1
  92. package/dist/client/extensions/ExtensionsSidebarSection.js +1 -1
  93. package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
  94. package/dist/client/session-replay.d.ts +36 -0
  95. package/dist/client/session-replay.d.ts.map +1 -1
  96. package/dist/client/session-replay.js +579 -1
  97. package/dist/client/session-replay.js.map +1 -1
  98. package/dist/client/sse-event-processor.d.ts +20 -1
  99. package/dist/client/sse-event-processor.d.ts.map +1 -1
  100. package/dist/client/sse-event-processor.js +42 -11
  101. package/dist/client/sse-event-processor.js.map +1 -1
  102. package/dist/client/use-run-stuck-detection.d.ts +14 -4
  103. package/dist/client/use-run-stuck-detection.d.ts.map +1 -1
  104. package/dist/client/use-run-stuck-detection.js +18 -4
  105. package/dist/client/use-run-stuck-detection.js.map +1 -1
  106. package/dist/collab/awareness.d.ts +2 -2
  107. package/dist/collab/awareness.d.ts.map +1 -1
  108. package/dist/collab/routes.d.ts +2 -2
  109. package/dist/db/runtime-diagnostics.d.ts +52 -0
  110. package/dist/db/runtime-diagnostics.d.ts.map +1 -0
  111. package/dist/db/runtime-diagnostics.js +250 -0
  112. package/dist/db/runtime-diagnostics.js.map +1 -0
  113. package/dist/notifications/routes.d.ts +1 -1
  114. package/dist/observability/routes.d.ts +3 -3
  115. package/dist/progress/routes.d.ts +1 -1
  116. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  117. package/dist/resources/handlers.d.ts +1 -1
  118. package/dist/secrets/routes.d.ts +3 -3
  119. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  120. package/dist/server/agent-chat-plugin.js +101 -2
  121. package/dist/server/agent-chat-plugin.js.map +1 -1
  122. package/dist/server/core-routes-plugin.d.ts +17 -0
  123. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  124. package/dist/server/core-routes-plugin.js +65 -5
  125. package/dist/server/core-routes-plugin.js.map +1 -1
  126. package/dist/server/http-response-telemetry.d.ts +4 -0
  127. package/dist/server/http-response-telemetry.d.ts.map +1 -0
  128. package/dist/server/http-response-telemetry.js +174 -0
  129. package/dist/server/http-response-telemetry.js.map +1 -0
  130. package/dist/server/self-dispatch.d.ts +17 -0
  131. package/dist/server/self-dispatch.d.ts.map +1 -1
  132. package/dist/server/self-dispatch.js +11 -0
  133. package/dist/server/self-dispatch.js.map +1 -1
  134. package/docs/content/locales/ar-SA/tracking.mdx +55 -0
  135. package/docs/content/locales/de-DE/tracking.mdx +55 -0
  136. package/docs/content/locales/es-ES/tracking.mdx +55 -0
  137. package/docs/content/locales/fr-FR/tracking.mdx +55 -0
  138. package/docs/content/locales/hi-IN/tracking.mdx +55 -0
  139. package/docs/content/locales/ja-JP/tracking.mdx +55 -0
  140. package/docs/content/locales/ko-KR/tracking.mdx +55 -0
  141. package/docs/content/locales/pt-BR/tracking.mdx +55 -0
  142. package/docs/content/locales/zh-CN/tracking.mdx +55 -0
  143. package/docs/content/locales/zh-TW/tracking.mdx +55 -0
  144. package/docs/content/tracking.mdx +2 -0
  145. package/package.json +1 -1
@@ -1233,6 +1233,7 @@ function AnalyticsChatsSection() {
1233
1233
  const {
1234
1234
  threads,
1235
1235
  activeThreadId,
1236
+ isLoading: chatsLoading,
1236
1237
  createThread,
1237
1238
  switchThread,
1238
1239
  pinThread,
@@ -1348,6 +1349,25 @@ function AnalyticsChatsSection() {
1348
1349
 
1349
1350
  return (
1350
1351
  <div className="ms-4 min-w-0 space-y-0.5">
1352
+ {chatsLoading &&
1353
+ visibleThreads.length === 0 &&
1354
+ Array.from({ length: 3 }).map((_, i) => (
1355
+ <div
1356
+ key={`chat-skeleton-${i}`}
1357
+ className="flex items-center gap-2 px-3 py-1"
1358
+ >
1359
+ <Skeleton
1360
+ className={cn(
1361
+ "h-3.5 w-3.5 shrink-0 rounded-sm",
1362
+ SIDEBAR_SKELETON_CLASS,
1363
+ )}
1364
+ />
1365
+ <Skeleton
1366
+ className={cn("h-3 rounded", SIDEBAR_SKELETON_CLASS)}
1367
+ style={{ width: `${60 + ((i * 17) % 30)}%` }}
1368
+ />
1369
+ </div>
1370
+ ))}
1351
1371
  {visibleThreads.map((thread) => {
1352
1372
  const title = threadTitle(thread, t("chat.untitledChat"));
1353
1373
  const isActive =
@@ -215,9 +215,64 @@
215
215
  }
216
216
 
217
217
  .an-replay-stage-root .replayer-wrapper {
218
+ position: relative;
218
219
  transform-origin: top left;
219
220
  }
220
221
 
222
+ /* First-party visitor-cursor styles for rrweb playback. These are bundled
223
+ statically so the cursor stays visible even if the lazily imported
224
+ `@rrweb/replay/dist/style.css` sheet fails to load, and they replace the
225
+ default black arrow sprite with an app-styled indicator. The cursor lives
226
+ inside `.replayer-wrapper`, so it scales with the fit-to-stage transform. */
227
+ .an-replay-stage-root .replayer-mouse {
228
+ position: absolute;
229
+ z-index: 2;
230
+ width: 0.875rem;
231
+ height: 0.875rem;
232
+ border-radius: 9999px;
233
+ background: hsl(217 91% 60%);
234
+ background-image: none;
235
+ box-shadow:
236
+ 0 0 0 2px hsl(0 0% 100% / 0.9),
237
+ 0 1px 6px hsl(0 0% 0% / 0.35);
238
+ transform: translate(-50%, -50%);
239
+ transition:
240
+ left 80ms linear,
241
+ top 80ms linear;
242
+ pointer-events: none;
243
+ }
244
+
245
+ .an-replay-stage-root .replayer-mouse::after {
246
+ content: "";
247
+ position: absolute;
248
+ inset: 0;
249
+ border-radius: 9999px;
250
+ background: hsl(217 91% 60%);
251
+ opacity: 0;
252
+ }
253
+
254
+ /* rrweb toggles `.active` on mouse interactions; pulse a click ripple. */
255
+ .an-replay-stage-root .replayer-mouse.active::after {
256
+ animation: an-replay-mouse-click 0.4s ease-out 1;
257
+ }
258
+
259
+ @keyframes an-replay-mouse-click {
260
+ 0% {
261
+ opacity: 0.5;
262
+ transform: scale(1);
263
+ }
264
+ 100% {
265
+ opacity: 0;
266
+ transform: scale(3.5);
267
+ }
268
+ }
269
+
270
+ .an-replay-stage-root .replayer-mouse-tail {
271
+ position: absolute;
272
+ inset: 0;
273
+ pointer-events: none;
274
+ }
275
+
221
276
  .analytics-session-snippet .plan-code-surface {
222
277
  border: 0;
223
278
  border-radius: 0;
@@ -147,6 +147,80 @@ const messages = {
147
147
  storageRequired: "請輸入必填的儲存欄位。",
148
148
  storageSaved: "已儲存儲存設定。",
149
149
  storageSaveFailed: "無法儲存儲存設定。",
150
+ alertsTitle: "警示",
151
+ alertsDescription: "管理第一方分析事件規則與通知傳送。",
152
+ alertRunNow: "執行檢查",
153
+ alertNew: "新增警示",
154
+ alertsEmptyTitle: "尚無警示規則",
155
+ alertsEmptyDescription:
156
+ "建立規則來監控事件量、去重使用者數或篩選後的事件片段。",
157
+ alertRuleColumn: "規則",
158
+ alertConditionColumn: "條件",
159
+ alertDeliveryColumn: "傳送",
160
+ alertStatusColumn: "狀態",
161
+ alertActionsColumn: "動作",
162
+ alertToggleLabel: "切換 {{name}}",
163
+ alertSeverityCritical: "嚴重",
164
+ alertSeverityWarning: "警告",
165
+ alertAllEvents: "所有事件",
166
+ alertScopeWithFilters: "{{scope}} + {{count}} 個篩選器",
167
+ alertDistinctThresholdSummary: "{{window}} 內 {{count}} 個不同的 {{field}}",
168
+ alertEventThresholdSummary: "{{window}} 內 {{count}} 個事件",
169
+ alertChannelInbox: "收件匣",
170
+ alertChannelEmail: "電子郵件",
171
+ alertChannelSlack: "Slack",
172
+ alertChannelWebhook: "Webhook",
173
+ alertLastChecked: "檢查於 {{date}}",
174
+ alertNever: "從未",
175
+ alertStatusOk: "正常",
176
+ alertStatusTriggered: "已觸發",
177
+ alertStatusCooldown: "冷卻中",
178
+ alertStatusError: "錯誤",
179
+ alertStatusRunning: "執行中",
180
+ alertStatusNever: "未檢查",
181
+ alertEditLabel: "編輯 {{name}}",
182
+ alertDeleteLabel: "刪除 {{name}}",
183
+ alertDeleteTitle: "刪除警示規則?",
184
+ alertDeleteDescription: "這會刪除「{{name}}」並停止此規則的後續通知。",
185
+ alertEdit: "編輯警示",
186
+ alertCreate: "建立警示",
187
+ alertDialogDescription:
188
+ "警示規則會在第一方分析事件上執行,並通知選定的管道。",
189
+ alertName: "名稱",
190
+ alertNamePlaceholder: "託管應用程式 5xx 激增",
191
+ alertDescription: "描述",
192
+ alertEventName: "事件名稱",
193
+ alertEventNamePlaceholder: "http.response",
194
+ alertSeverity: "嚴重性",
195
+ alertThresholdMode: "閾值模式",
196
+ alertModeEventCount: "事件計數",
197
+ alertModeDistinctCount: "去重計數",
198
+ alertThreshold: "閾值",
199
+ alertDistinctBy: "去重欄位",
200
+ alertWindowMinutes: "時間窗口分鐘數",
201
+ alertCooldownMinutes: "冷卻分鐘數",
202
+ alertFilters: "篩選器 JSON",
203
+ alertChannels: "管道",
204
+ alertCustomChannels: "其他管道",
205
+ alertCustomChannelsPlaceholder: "例如 pagerduty、opsgenie",
206
+ alertEmailRecipients: "電子郵件收件人",
207
+ alertEmailRecipientsPlaceholder: "analytics@example.com, ops@example.com",
208
+ alertEnabled: "已啟用",
209
+ alertEnabledDescription: "停用的規則會保留,但檢查時會略過。",
210
+ alertUpdate: "更新警示",
211
+ alertSave: "儲存警示",
212
+ alertFiltersInvalid: "篩選器 JSON 無效:{{message}}",
213
+ alertNameRequired: "新增警示名稱。",
214
+ alertChannelRequired: "至少選擇一個通知管道。",
215
+ alertSaved: "警示規則已儲存。",
216
+ alertSaveFailed: "無法儲存警示規則:{{message}}",
217
+ alertEnabledToast: "警示已啟用。",
218
+ alertDisabledToast: "警示已停用。",
219
+ alertDeleted: "警示規則已刪除。",
220
+ alertDeleteFailed: "無法刪除警示規則:{{message}}",
221
+ alertRunComplete:
222
+ "警示檢查完成:已檢查 {{processed}} 個,觸發 {{triggered}} 個,失敗 {{failed}} 個。",
223
+ alertRunFailed: "無法執行警示檢查:{{message}}",
150
224
  },
151
225
  chat: {
152
226
  emptyState: "讓我分析儀表板、比較趨勢或深入檢視資料...",
@@ -683,7 +757,7 @@ const messages = {
683
757
  emailReports: "電子郵件報告",
684
758
  emailReportsDescription: '"{{name}}" 的每日電子郵件快照。',
685
759
  existingReportSubscriptions: "訂閱",
686
- newSubscription: "新建",
760
+ newSubscription: "新增訂閱",
687
761
  noReportSubscriptions: "還沒有訂閱。",
688
762
  reportName: "名稱",
689
763
  reportRecipients: "收件人",
@@ -854,6 +928,31 @@ const messages = {
854
928
  storageConnected: "已連線儲存",
855
929
  connectBuilder: "使用 Builder.io(免費)",
856
930
  configureS3: "設定 S3 儲存",
931
+ devtools: "開發工具",
932
+ devtoolsIssueCount: "偵測到 {{count}} 個問題",
933
+ devtoolsConsoleTab: "主控台({{count}})",
934
+ devtoolsNetworkTab: "網路({{count}})",
935
+ devtoolsFilterAll: "全部({{count}})",
936
+ devtoolsFilterLog: "記錄({{count}})",
937
+ devtoolsFilterInfo: "資訊({{count}})",
938
+ devtoolsFilterWarning: "警告({{count}})",
939
+ devtoolsFilterError: "錯誤({{count}})",
940
+ devtoolsFilterFetch: "Fetch({{count}})",
941
+ devtoolsFilterXhr: "XHR({{count}})",
942
+ devtoolsFilterFailed: "失敗({{count}})",
943
+ devtoolsConsoleSearch: "篩選主控台訊息...",
944
+ devtoolsNetworkSearch: "篩選請求...",
945
+ devtoolsJumpTo: "跳轉",
946
+ devtoolsToggleDetails: "切換詳細資訊",
947
+ devtoolsArgs: "記錄的參數",
948
+ devtoolsStack: "堆疊追蹤",
949
+ devtoolsRepeatCount: "×{{count}}",
950
+ devtoolsFailedStatus: "失敗",
951
+ devtoolsDurationMs: "{{ms}} 毫秒",
952
+ devtoolsNoConsole: "此工作階段未擷取到主控台活動。",
953
+ devtoolsNoNetwork: "此工作階段未擷取到網路活動。",
954
+ devtoolsNoConsoleMatches: "沒有符合目前篩選條件的主控台訊息。",
955
+ devtoolsNoNetworkMatches: "沒有符合目前篩選條件的請求。",
857
956
  },
858
957
  catalog: {
859
958
  description: "需要起點時,可安裝儀表板範本。",