@agent-native/core 0.78.9 → 0.79.1

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 (180) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +17 -0
  3. package/corpus/core/docs/content/actions.md +4 -2
  4. package/corpus/core/docs/content/agent-surfaces.md +9 -0
  5. package/corpus/core/docs/content/extensions.md +10 -0
  6. package/corpus/core/docs/content/generative-ui.md +217 -0
  7. package/corpus/core/docs/content/key-concepts.md +2 -2
  8. package/corpus/core/docs/content/mcp-apps.md +3 -5
  9. package/corpus/core/docs/content/native-chat-ui.md +9 -5
  10. package/corpus/core/docs/content/tracking.md +9 -3
  11. package/corpus/core/package.json +1 -1
  12. package/corpus/core/src/action-ui.ts +1 -0
  13. package/corpus/core/src/agent/production-agent.ts +8 -0
  14. package/corpus/core/src/client/analytics.ts +195 -12
  15. package/corpus/core/src/client/chat/index.ts +1 -0
  16. package/corpus/core/src/client/chat/tool-call-display.tsx +5 -2
  17. package/corpus/core/src/client/chat/widgets/InlineExtensionWidget.tsx +139 -0
  18. package/corpus/core/src/client/chat/widgets/builtin-tool-renderers.tsx +27 -1
  19. package/corpus/core/src/client/conversation/AgentConversation.tsx +38 -0
  20. package/corpus/core/src/client/conversation/code-agent-transcript.ts +9 -0
  21. package/corpus/core/src/client/conversation/types.ts +4 -0
  22. package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +27 -5
  23. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +26 -5
  24. package/corpus/core/src/client/extensions/InlineExtensionFrame.tsx +654 -0
  25. package/corpus/core/src/client/extensions/iframe-bridge.ts +30 -0
  26. package/corpus/core/src/client/extensions/index.ts +5 -0
  27. package/corpus/core/src/client/index.ts +1 -0
  28. package/corpus/core/src/client/session-replay.ts +89 -14
  29. package/corpus/core/src/code-agents/transcript-normalizer.ts +14 -0
  30. package/corpus/core/src/extensions/actions.ts +218 -1
  31. package/corpus/core/src/extensions/html-shell.ts +70 -3
  32. package/corpus/core/src/extensions/routes.ts +12 -4
  33. package/corpus/core/src/index.browser.ts +1 -0
  34. package/corpus/core/src/index.ts +1 -0
  35. package/corpus/core/src/server/agent-chat-plugin.ts +21 -9
  36. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +13 -0
  37. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/references/api.md +2 -0
  38. package/corpus/core/src/templates/workspace-core/.agents/skills/generative-ui/SKILL.md +115 -0
  39. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +198 -59
  40. package/corpus/templates/analytics/AGENTS.md +12 -0
  41. package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +1105 -0
  42. package/corpus/templates/analytics/actions/dashboard-panel-order.ts +169 -0
  43. package/corpus/templates/analytics/actions/get-sql-dashboard.ts +89 -6
  44. package/corpus/templates/analytics/actions/mutate-dashboard.ts +333 -0
  45. package/corpus/templates/analytics/actions/reorder-dashboard-panels.ts +214 -0
  46. package/corpus/templates/analytics/actions/send-dashboard-report-now.ts +48 -21
  47. package/corpus/templates/analytics/actions/update-dashboard.ts +193 -100
  48. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +11 -0
  49. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +1 -1
  50. package/corpus/templates/analytics/app/global.css +81 -10
  51. package/corpus/templates/analytics/app/i18n-data.ts +249 -4
  52. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +3 -3
  53. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +41 -1
  54. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/EmailReportDialog.tsx +1 -1
  55. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +4 -4
  56. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +48 -18
  57. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dashboard-layout.ts +32 -0
  58. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +204 -70
  59. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +1101 -227
  60. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +160 -133
  61. package/corpus/templates/analytics/changelog/2026-06-26-agents-can-now-edit-dashboards-through-a-typed-mutation-scri.md +6 -0
  62. package/corpus/templates/analytics/changelog/2026-06-26-dashboard-bar-chart-hovers-stay-subtle-in-dark-mode.md +6 -0
  63. package/corpus/templates/analytics/changelog/2026-06-26-dashboard-chart-moves-are-now-handled-by-panel-id-making-sim.md +6 -0
  64. package/corpus/templates/analytics/changelog/2026-06-26-dashboard-charts-drag-smoothly-with-stable-cards-inactive-ch.md +6 -0
  65. package/corpus/templates/analytics/changelog/2026-06-26-dashboard-charts-show-a-refresh-spinner-while-keeping-existi.md +6 -0
  66. package/corpus/templates/analytics/changelog/2026-06-26-dashboard-edits-stay-stable-while-chart-order-and-deletions-.md +6 -0
  67. package/corpus/templates/analytics/changelog/2026-06-26-dashboard-email-reports-queue-immediate-sends.md +6 -0
  68. package/corpus/templates/analytics/changelog/2026-06-26-explorer-dashboards-now-drag-charts-with-a-stable-preview-an.md +6 -0
  69. package/corpus/templates/analytics/changelog/2026-06-26-session-replay-playback-can-now-be-toggled-by-clicking-the-r.md +6 -0
  70. package/corpus/templates/analytics/changelog/2026-06-26-session-replays-now-open-from-the-full-row-and-play-with-tim.md +6 -0
  71. package/corpus/templates/analytics/server/lib/dashboard-report-subscriptions.ts +21 -0
  72. package/corpus/templates/analytics/server/lib/dashboard-report.ts +41 -17
  73. package/corpus/templates/analytics/server/plugins/agent-chat.ts +5 -0
  74. package/dist/action-ui.d.ts +1 -0
  75. package/dist/action-ui.d.ts.map +1 -1
  76. package/dist/action-ui.js +1 -0
  77. package/dist/action-ui.js.map +1 -1
  78. package/dist/agent/production-agent.d.ts.map +1 -1
  79. package/dist/agent/production-agent.js +6 -0
  80. package/dist/agent/production-agent.js.map +1 -1
  81. package/dist/client/analytics.d.ts.map +1 -1
  82. package/dist/client/analytics.js +173 -12
  83. package/dist/client/analytics.js.map +1 -1
  84. package/dist/client/chat/index.d.ts +1 -1
  85. package/dist/client/chat/index.d.ts.map +1 -1
  86. package/dist/client/chat/index.js +1 -1
  87. package/dist/client/chat/index.js.map +1 -1
  88. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  89. package/dist/client/chat/tool-call-display.js +3 -1
  90. package/dist/client/chat/tool-call-display.js.map +1 -1
  91. package/dist/client/chat/widgets/InlineExtensionWidget.d.ts +17 -0
  92. package/dist/client/chat/widgets/InlineExtensionWidget.d.ts.map +1 -0
  93. package/dist/client/chat/widgets/InlineExtensionWidget.js +85 -0
  94. package/dist/client/chat/widgets/InlineExtensionWidget.js.map +1 -0
  95. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -1
  96. package/dist/client/chat/widgets/builtin-tool-renderers.js +15 -2
  97. package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
  98. package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
  99. package/dist/client/conversation/AgentConversation.js +33 -0
  100. package/dist/client/conversation/AgentConversation.js.map +1 -1
  101. package/dist/client/conversation/code-agent-transcript.js +8 -0
  102. package/dist/client/conversation/code-agent-transcript.js.map +1 -1
  103. package/dist/client/conversation/types.d.ts +4 -0
  104. package/dist/client/conversation/types.d.ts.map +1 -1
  105. package/dist/client/conversation/types.js.map +1 -1
  106. package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
  107. package/dist/client/extensions/EmbeddedExtension.js +29 -1
  108. package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
  109. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  110. package/dist/client/extensions/ExtensionViewer.js +28 -1
  111. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  112. package/dist/client/extensions/InlineExtensionFrame.d.ts +25 -0
  113. package/dist/client/extensions/InlineExtensionFrame.d.ts.map +1 -0
  114. package/dist/client/extensions/InlineExtensionFrame.js +488 -0
  115. package/dist/client/extensions/InlineExtensionFrame.js.map +1 -0
  116. package/dist/client/extensions/iframe-bridge.d.ts +2 -0
  117. package/dist/client/extensions/iframe-bridge.d.ts.map +1 -1
  118. package/dist/client/extensions/iframe-bridge.js +23 -0
  119. package/dist/client/extensions/iframe-bridge.js.map +1 -1
  120. package/dist/client/extensions/index.d.ts +1 -0
  121. package/dist/client/extensions/index.d.ts.map +1 -1
  122. package/dist/client/extensions/index.js +1 -0
  123. package/dist/client/extensions/index.js.map +1 -1
  124. package/dist/client/index.d.ts +1 -1
  125. package/dist/client/index.d.ts.map +1 -1
  126. package/dist/client/index.js +1 -1
  127. package/dist/client/index.js.map +1 -1
  128. package/dist/client/session-replay.d.ts +11 -1
  129. package/dist/client/session-replay.d.ts.map +1 -1
  130. package/dist/client/session-replay.js +74 -14
  131. package/dist/client/session-replay.js.map +1 -1
  132. package/dist/code-agents/transcript-normalizer.d.ts +2 -0
  133. package/dist/code-agents/transcript-normalizer.d.ts.map +1 -1
  134. package/dist/code-agents/transcript-normalizer.js +8 -0
  135. package/dist/code-agents/transcript-normalizer.js.map +1 -1
  136. package/dist/collab/awareness.d.ts +2 -2
  137. package/dist/collab/awareness.d.ts.map +1 -1
  138. package/dist/collab/routes.d.ts +1 -1
  139. package/dist/extensions/actions.d.ts.map +1 -1
  140. package/dist/extensions/actions.js +200 -1
  141. package/dist/extensions/actions.js.map +1 -1
  142. package/dist/extensions/html-shell.d.ts.map +1 -1
  143. package/dist/extensions/html-shell.js +70 -3
  144. package/dist/extensions/html-shell.js.map +1 -1
  145. package/dist/extensions/routes.d.ts.map +1 -1
  146. package/dist/extensions/routes.js +11 -4
  147. package/dist/extensions/routes.js.map +1 -1
  148. package/dist/index.browser.d.ts +1 -1
  149. package/dist/index.browser.d.ts.map +1 -1
  150. package/dist/index.browser.js +1 -1
  151. package/dist/index.browser.js.map +1 -1
  152. package/dist/index.d.ts +1 -1
  153. package/dist/index.d.ts.map +1 -1
  154. package/dist/index.js +1 -1
  155. package/dist/index.js.map +1 -1
  156. package/dist/notifications/routes.d.ts +3 -3
  157. package/dist/observability/routes.d.ts +3 -3
  158. package/dist/progress/routes.d.ts +1 -1
  159. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  160. package/dist/resources/handlers.d.ts +3 -3
  161. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  162. package/dist/server/agent-chat-plugin.js +21 -9
  163. package/dist/server/agent-chat-plugin.js.map +1 -1
  164. package/dist/server/agent-engine-api-key-route.d.ts +2 -2
  165. package/dist/server/transcribe-voice.d.ts +1 -1
  166. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +13 -0
  167. package/dist/templates/workspace-core/.agents/skills/extensions/references/api.md +2 -0
  168. package/dist/templates/workspace-core/.agents/skills/generative-ui/SKILL.md +115 -0
  169. package/docs/content/actions.md +4 -2
  170. package/docs/content/agent-surfaces.md +9 -0
  171. package/docs/content/extensions.md +10 -0
  172. package/docs/content/generative-ui.md +217 -0
  173. package/docs/content/key-concepts.md +2 -2
  174. package/docs/content/mcp-apps.md +3 -5
  175. package/docs/content/native-chat-ui.md +9 -5
  176. package/docs/content/tracking.md +9 -3
  177. package/package.json +1 -1
  178. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +13 -0
  179. package/src/templates/workspace-core/.agents/skills/extensions/references/api.md +2 -0
  180. package/src/templates/workspace-core/.agents/skills/generative-ui/SKILL.md +115 -0
@@ -9,6 +9,7 @@ import { useEffect, useMemo, useRef, useState } from "react";
9
9
  import { useNavigate } from "react-router";
10
10
 
11
11
  import { extensionPath } from "../../extensions/path.js";
12
+ import { sendToAgentChat } from "../agent-chat.js";
12
13
  import { agentNativePath } from "../api-path.js";
13
14
  import {
14
15
  Popover,
@@ -51,6 +52,16 @@ interface Extension {
51
52
  };
52
53
  }
53
54
 
55
+ function serializeChatValue(value: unknown): string | undefined {
56
+ if (value === undefined || value === null) return undefined;
57
+ if (typeof value === "string") return value;
58
+ try {
59
+ return JSON.stringify(value);
60
+ } catch {
61
+ return String(value);
62
+ }
63
+ }
64
+
54
65
  export interface EmbeddedExtensionProps {
55
66
  extensionId: string;
56
67
  /** Slot identifier passed via the iframe URL so the extension runtime knows it's
@@ -208,6 +219,18 @@ export function EmbeddedExtension({
208
219
  return;
209
220
  }
210
221
 
222
+ if (message.type === "agent-native-send-to-chat") {
223
+ const text = serializeChatValue((message as any).message);
224
+ if (!text?.trim()) return;
225
+ sendToAgentChat({
226
+ message: text,
227
+ context: serializeChatValue((message as any).context),
228
+ submit: (message as any).submit !== false,
229
+ openSidebar: (message as any).openSidebar !== false,
230
+ });
231
+ return;
232
+ }
233
+
211
234
  if (message.type !== "agent-native-extension-request") return;
212
235
 
213
236
  const requestId = String(message.requestId ?? "");
@@ -229,11 +252,10 @@ export function EmbeddedExtension({
229
252
  // (audit H4) Role-aware gating: viewer-shared extensions can read but not
230
253
  // write. The bridge policy is decided here in the parent before the
231
254
  // request leaves; the server enforces a second layer.
232
- const policy = checkBridgePolicy(
233
- path,
234
- options.method ?? "GET",
235
- bridgeContextRef.current,
236
- );
255
+ const policy = checkBridgePolicy(path, options.method ?? "GET", {
256
+ ...bridgeContextRef.current,
257
+ extensionId,
258
+ });
237
259
  if (!policy.ok) {
238
260
  respond({
239
261
  response: {
@@ -134,6 +134,16 @@ function extensionRole(value: unknown): ExtensionBridgeRole {
134
134
  : "viewer";
135
135
  }
136
136
 
137
+ function serializeChatValue(value: unknown): string | undefined {
138
+ if (value === undefined || value === null) return undefined;
139
+ if (typeof value === "string") return value;
140
+ try {
141
+ return JSON.stringify(value);
142
+ } catch {
143
+ return String(value);
144
+ }
145
+ }
146
+
137
147
  function buildExtensionViewerSrcDoc(
138
148
  extension: Extension,
139
149
  isDark: boolean,
@@ -745,6 +755,18 @@ export function ExtensionViewer({ extensionId }: ExtensionViewerProps) {
745
755
  return;
746
756
  }
747
757
 
758
+ if (message.type === "agent-native-send-to-chat") {
759
+ const text = serializeChatValue(message.message);
760
+ if (!text?.trim()) return;
761
+ sendToAgentChat({
762
+ message: text,
763
+ context: serializeChatValue(message.context),
764
+ submit: message.submit !== false,
765
+ openSidebar: message.openSidebar !== false,
766
+ });
767
+ return;
768
+ }
769
+
748
770
  if (message.type === "agent-native-extension-keydown") {
749
771
  document.dispatchEvent(
750
772
  new KeyboardEvent("keydown", {
@@ -865,11 +887,10 @@ export function ExtensionViewer({ extensionId }: ExtensionViewerProps) {
865
887
  // (audit H4) Role-aware policy gate: viewer-shared extensions can read
866
888
  // but not write. Decided here in the parent before the request
867
889
  // leaves; the server enforces a second layer.
868
- const policy = checkBridgePolicy(
869
- path,
870
- options.method ?? "GET",
871
- bridgeContextRef.current,
872
- );
890
+ const policy = checkBridgePolicy(path, options.method ?? "GET", {
891
+ ...bridgeContextRef.current,
892
+ extensionId,
893
+ });
873
894
  if (!policy.ok) {
874
895
  respond({
875
896
  response: {