@agent-native/core 0.94.1 → 0.94.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 (141) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +14 -0
  3. package/corpus/core/docs/content/cloneable-saas.mdx +15 -15
  4. package/corpus/core/docs/content/creating-templates.mdx +1 -1
  5. package/corpus/core/docs/content/extensions.mdx +1 -1
  6. package/corpus/core/docs/content/local-file-mode.mdx +6 -6
  7. package/corpus/core/docs/content/locales/ar-SA/voice-input.mdx +2 -2
  8. package/corpus/core/docs/content/locales/de-DE/voice-input.mdx +2 -2
  9. package/corpus/core/docs/content/locales/es-ES/voice-input.mdx +2 -2
  10. package/corpus/core/docs/content/locales/fr-FR/voice-input.mdx +2 -2
  11. package/corpus/core/docs/content/locales/hi-IN/voice-input.mdx +2 -2
  12. package/corpus/core/docs/content/locales/ja-JP/voice-input.mdx +2 -2
  13. package/corpus/core/docs/content/locales/ko-KR/voice-input.mdx +2 -2
  14. package/corpus/core/docs/content/locales/pt-BR/voice-input.mdx +2 -2
  15. package/corpus/core/docs/content/locales/zh-CN/voice-input.mdx +2 -2
  16. package/corpus/core/docs/content/locales/zh-TW/voice-input.mdx +2 -2
  17. package/corpus/core/docs/content/sharing.mdx +4 -4
  18. package/corpus/core/docs/content/template-analytics.mdx +2 -2
  19. package/corpus/core/docs/content/template-calendar.mdx +4 -4
  20. package/corpus/core/docs/content/template-clips.mdx +2 -2
  21. package/corpus/core/docs/content/template-content.mdx +12 -11
  22. package/corpus/core/docs/content/template-mail.mdx +1 -1
  23. package/corpus/core/docs/content/template-slides.mdx +2 -2
  24. package/corpus/core/docs/content/voice-input.mdx +2 -2
  25. package/corpus/core/docs/content/workspace.mdx +1 -1
  26. package/corpus/core/package.json +1 -1
  27. package/corpus/core/src/a2a/artifact-response.ts +154 -1
  28. package/corpus/core/src/client/AssistantChat.tsx +30 -0
  29. package/corpus/core/src/client/MultiTabAssistantChat.tsx +19 -1
  30. package/corpus/core/src/client/agent-chat.ts +6 -0
  31. package/corpus/core/src/client/composer/RealtimeVoiceMode.tsx +72 -2
  32. package/corpus/core/src/client/composer/realtime-voice-audio-level.ts +64 -0
  33. package/corpus/core/src/client/composer/realtime-voice-transcript.ts +134 -0
  34. package/corpus/core/src/client/composer/useRealtimeVoiceMode.tsx +220 -6
  35. package/corpus/core/src/client/use-chat-threads.ts +33 -9
  36. package/corpus/core/src/integrations/a2a-continuation-processor.ts +118 -31
  37. package/corpus/core/src/integrations/a2a-continuations-store.ts +165 -7
  38. package/corpus/core/src/integrations/adapters/slack.ts +77 -7
  39. package/corpus/core/src/integrations/types.ts +30 -0
  40. package/corpus/core/src/integrations/webhook-handler.ts +54 -18
  41. package/corpus/core/src/scripts/call-agent.ts +1 -0
  42. package/corpus/core/src/server/request-context.ts +2 -0
  43. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +11 -5
  44. package/corpus/templates/clips/app/components/player/comments-panel.tsx +98 -1
  45. package/corpus/templates/clips/changelog/2026-07-10-comment-urls-open-as-clickable-links.md +6 -0
  46. package/corpus/templates/clips/changelog/2026-07-10-desktop-recording-uploads-now-show-a-brief-uploaded-state-wi.md +6 -0
  47. package/corpus/templates/clips/changelog/2026-07-10-desktop-recordings-now-retry-saving-their-locally-captured-t.md +6 -0
  48. package/corpus/templates/clips/changelog/2026-07-10-desktop-update-prompts-are-more-compact-and-easier-to-dismiss.md +6 -0
  49. package/corpus/templates/clips/changelog/2026-07-10-quiet-recordings-now-finish-saving-instead-of-getting-stuck.md +6 -0
  50. package/corpus/templates/clips/desktop/src/components/UpdateBanner.tsx +7 -4
  51. package/corpus/templates/clips/desktop/src/lib/recorder.ts +284 -85
  52. package/corpus/templates/clips/desktop/src/overlays/finalizing.tsx +148 -40
  53. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +13 -13
  54. package/corpus/templates/clips/desktop/src/styles.css +83 -13
  55. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +43 -28
  56. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +130 -65
  57. package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +10 -4
  58. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +82 -1
  59. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/reset-chunks.post.ts +82 -1
  60. package/dist/a2a/artifact-response.d.ts.map +1 -1
  61. package/dist/a2a/artifact-response.js +127 -1
  62. package/dist/a2a/artifact-response.js.map +1 -1
  63. package/dist/client/AssistantChat.d.ts.map +1 -1
  64. package/dist/client/AssistantChat.js +20 -0
  65. package/dist/client/AssistantChat.js.map +1 -1
  66. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  67. package/dist/client/MultiTabAssistantChat.js +9 -0
  68. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  69. package/dist/client/agent-chat.d.ts +6 -0
  70. package/dist/client/agent-chat.d.ts.map +1 -1
  71. package/dist/client/agent-chat.js.map +1 -1
  72. package/dist/client/composer/RealtimeVoiceMode.d.ts +3 -1
  73. package/dist/client/composer/RealtimeVoiceMode.d.ts.map +1 -1
  74. package/dist/client/composer/RealtimeVoiceMode.js +32 -3
  75. package/dist/client/composer/RealtimeVoiceMode.js.map +1 -1
  76. package/dist/client/composer/realtime-voice-audio-level.d.ts +14 -0
  77. package/dist/client/composer/realtime-voice-audio-level.d.ts.map +1 -0
  78. package/dist/client/composer/realtime-voice-audio-level.js +47 -0
  79. package/dist/client/composer/realtime-voice-audio-level.js.map +1 -0
  80. package/dist/client/composer/realtime-voice-transcript.d.ts +26 -0
  81. package/dist/client/composer/realtime-voice-transcript.d.ts.map +1 -0
  82. package/dist/client/composer/realtime-voice-transcript.js +103 -0
  83. package/dist/client/composer/realtime-voice-transcript.js.map +1 -0
  84. package/dist/client/composer/useRealtimeVoiceMode.d.ts +14 -0
  85. package/dist/client/composer/useRealtimeVoiceMode.d.ts.map +1 -1
  86. package/dist/client/composer/useRealtimeVoiceMode.js +177 -6
  87. package/dist/client/composer/useRealtimeVoiceMode.js.map +1 -1
  88. package/dist/client/use-chat-threads.d.ts.map +1 -1
  89. package/dist/client/use-chat-threads.js +26 -6
  90. package/dist/client/use-chat-threads.js.map +1 -1
  91. package/dist/collab/routes.d.ts +1 -1
  92. package/dist/integrations/a2a-continuation-processor.d.ts.map +1 -1
  93. package/dist/integrations/a2a-continuation-processor.js +76 -21
  94. package/dist/integrations/a2a-continuation-processor.js.map +1 -1
  95. package/dist/integrations/a2a-continuations-store.d.ts +4 -1
  96. package/dist/integrations/a2a-continuations-store.d.ts.map +1 -1
  97. package/dist/integrations/a2a-continuations-store.js +130 -6
  98. package/dist/integrations/a2a-continuations-store.js.map +1 -1
  99. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  100. package/dist/integrations/adapters/slack.js +56 -7
  101. package/dist/integrations/adapters/slack.js.map +1 -1
  102. package/dist/integrations/types.d.ts +25 -0
  103. package/dist/integrations/types.d.ts.map +1 -1
  104. package/dist/integrations/types.js.map +1 -1
  105. package/dist/integrations/webhook-handler.js +54 -16
  106. package/dist/integrations/webhook-handler.js.map +1 -1
  107. package/dist/observability/routes.d.ts +1 -1
  108. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  109. package/dist/scripts/call-agent.d.ts.map +1 -1
  110. package/dist/scripts/call-agent.js +1 -0
  111. package/dist/scripts/call-agent.js.map +1 -1
  112. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  113. package/dist/server/request-context.d.ts +2 -0
  114. package/dist/server/request-context.d.ts.map +1 -1
  115. package/dist/server/request-context.js.map +1 -1
  116. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +11 -5
  117. package/docs/content/cloneable-saas.mdx +15 -15
  118. package/docs/content/creating-templates.mdx +1 -1
  119. package/docs/content/extensions.mdx +1 -1
  120. package/docs/content/local-file-mode.mdx +6 -6
  121. package/docs/content/locales/ar-SA/voice-input.mdx +2 -2
  122. package/docs/content/locales/de-DE/voice-input.mdx +2 -2
  123. package/docs/content/locales/es-ES/voice-input.mdx +2 -2
  124. package/docs/content/locales/fr-FR/voice-input.mdx +2 -2
  125. package/docs/content/locales/hi-IN/voice-input.mdx +2 -2
  126. package/docs/content/locales/ja-JP/voice-input.mdx +2 -2
  127. package/docs/content/locales/ko-KR/voice-input.mdx +2 -2
  128. package/docs/content/locales/pt-BR/voice-input.mdx +2 -2
  129. package/docs/content/locales/zh-CN/voice-input.mdx +2 -2
  130. package/docs/content/locales/zh-TW/voice-input.mdx +2 -2
  131. package/docs/content/sharing.mdx +4 -4
  132. package/docs/content/template-analytics.mdx +2 -2
  133. package/docs/content/template-calendar.mdx +4 -4
  134. package/docs/content/template-clips.mdx +2 -2
  135. package/docs/content/template-content.mdx +12 -11
  136. package/docs/content/template-mail.mdx +1 -1
  137. package/docs/content/template-slides.mdx +2 -2
  138. package/docs/content/voice-input.mdx +2 -2
  139. package/docs/content/workspace.mdx +1 -1
  140. package/package.json +1 -1
  141. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +11 -5
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-response.js","sourceRoot":"","sources":["../../src/a2a/artifact-response.ts"],"names":[],"mappings":"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","sourcesContent":["export interface A2AToolResultSummary {\n tool: string;\n result: string;\n}\n\nexport interface A2AArtifactResponseOptions {\n baseUrl?: string;\n includeReferencedArtifacts?: boolean;\n}\n\ninterface CreatedDocumentArtifact {\n id: string;\n title?: string;\n url?: string;\n}\n\ninterface CreatedDesignShell {\n id: string;\n title?: string;\n}\n\ninterface GeneratedDesignArtifact {\n id: string;\n fileCount: number;\n url?: string;\n}\n\ninterface CreatedDeckArtifact {\n id: string;\n url?: string;\n}\n\ninterface CreatedDashboardArtifact {\n id: string;\n title?: string;\n url?: string;\n}\n\ninterface CreatedAnalysisArtifact {\n id: string;\n title?: string;\n url?: string;\n}\n\ninterface CreatedImageArtifact {\n id: string;\n runId?: string;\n title?: string;\n url?: string;\n}\n\ninterface CreatedMonitorArtifact {\n id: string;\n name?: string;\n url: string;\n}\n\ninterface CreatedFormArtifact {\n id: string;\n title?: string;\n url: string;\n anonymous: boolean;\n}\n\ntype ReferencedArtifactKind =\n | \"deck\"\n | \"design\"\n | \"document\"\n | \"dashboard\"\n | \"analysis\"\n | \"image\";\n\ninterface ReferencedArtifact {\n kind: ReferencedArtifactKind;\n id: string;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null;\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction parseToolResultJson(result: string): Record<string, unknown> | null {\n const trimmed = result.trim();\n if (!trimmed || /^Error(?:\\s|:)/i.test(trimmed)) return null;\n\n try {\n return asRecord(JSON.parse(trimmed));\n } catch {\n // Dev shell wrappers may include console output before the returned JSON.\n const firstBrace = trimmed.indexOf(\"{\");\n const lastBrace = trimmed.lastIndexOf(\"}\");\n if (firstBrace < 0 || lastBrace <= firstBrace) return null;\n try {\n return asRecord(JSON.parse(trimmed.slice(firstBrace, lastBrace + 1)));\n } catch {\n return null;\n }\n }\n}\n\nfunction normalizeBaseUrl(baseUrl: string | undefined): string | undefined {\n const trimmed = baseUrl?.trim();\n return trimmed ? trimmed.replace(/\\/+$/, \"\") : undefined;\n}\n\nfunction artifactUrl(baseUrl: string | undefined, path: string): string {\n const base = normalizeBaseUrl(baseUrl);\n return base ? `${base}${path}` : path;\n}\n\nfunction artifactUrlFromResult(\n parsed: Record<string, unknown>,\n fallbackPath: string,\n baseUrl: string | undefined,\n): string {\n const explicitUrl = stringValue(parsed.url) ?? stringValue(parsed.urlPath);\n if (!explicitUrl) return artifactUrl(baseUrl, fallbackPath);\n if (explicitUrl.startsWith(\"/\")) return artifactUrl(baseUrl, explicitUrl);\n try {\n return new URL(explicitUrl).toString();\n } catch {\n return artifactUrl(baseUrl, fallbackPath);\n }\n}\n\nfunction responseAlreadyMentionsPath(text: string, path: string): boolean {\n return text.includes(path);\n}\n\nfunction responseMentionsDesignShell(\n text: string,\n shell: CreatedDesignShell,\n): boolean {\n if (!text.trim()) return true;\n return text.includes(shell.id) || text.includes(`/design/${shell.id}`);\n}\n\nfunction responseAlreadyWarnsIncompleteDesign(text: string): boolean {\n return /(?:not ready|still working|processing|no renderable|no files|failed|could not|cannot|can't)/i.test(\n text,\n );\n}\n\nfunction isRenderableDesignFile(value: unknown): boolean {\n const file = asRecord(value);\n if (!file) return false;\n\n const filename = stringValue(file.filename);\n const fileType = stringValue(file.fileType);\n const hasRenderableType =\n fileType === \"html\" ||\n fileType === \"jsx\" ||\n filename?.endsWith(\".html\") ||\n filename?.endsWith(\".jsx\");\n if (!hasRenderableType) return false;\n\n return typeof file.content !== \"string\" || file.content.trim().length > 0;\n}\n\nfunction countRenderableDesignFiles(files: unknown): number {\n if (!Array.isArray(files)) return 0;\n return files.filter(isRenderableDesignFile).length;\n}\n\nfunction numberValue(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value)\n ? value\n : undefined;\n}\n\nfunction deckIdValue(parsed: Record<string, unknown>): string | undefined {\n return stringValue(parsed.id) ?? stringValue(parsed.deckId);\n}\n\nfunction dashboardIdValue(parsed: Record<string, unknown>): string | undefined {\n return stringValue(parsed.id) ?? stringValue(parsed.dashboardId);\n}\n\nfunction analysisIdValue(parsed: Record<string, unknown>): string | undefined {\n return stringValue(parsed.id) ?? stringValue(parsed.analysisId);\n}\n\nfunction imageIdValue(parsed: Record<string, unknown>): string | undefined {\n return (\n stringValue(parsed.assetId) ??\n stringValue(parsed.imageId) ??\n stringValue(parsed.id)\n );\n}\n\nfunction contentDatabaseSubmissionArtifact(\n parsed: Record<string, unknown>,\n): CreatedDocumentArtifact | null {\n const id = stringValue(parsed.createdDocumentId);\n if (!id) return null;\n\n const verification = asRecord(parsed.verification);\n const candidates = [\n stringValue(parsed.url),\n stringValue(parsed.urlPath),\n stringValue(parsed.createdDocumentUrl),\n stringValue(verification?.url),\n stringValue(verification?.urlPath),\n ].filter((value): value is string => !!value);\n const url = candidates.find((candidate) =>\n artifactUrlReferencesId(candidate, \"document\", id),\n );\n\n const items = Array.isArray(parsed.items) ? parsed.items : [];\n const createdItem = items.map(asRecord).find((item) => {\n const document = asRecord(item?.document);\n return stringValue(document?.id) === id;\n });\n const createdDocument = asRecord(createdItem?.document);\n\n return {\n id,\n title:\n stringValue(parsed.createdDocumentTitle) ??\n stringValue(createdDocument?.title),\n url,\n };\n}\n\nfunction addImageArtifact(\n images: Map<string, CreatedImageArtifact>,\n parsed: Record<string, unknown>,\n): void {\n const id = imageIdValue(parsed);\n if (!id) return;\n images.set(id, {\n id,\n runId: stringValue(parsed.runId) ?? stringValue(parsed.generationRunId),\n title: stringValue(parsed.title),\n url:\n stringValue(parsed.pageUrl) ??\n stringValue(parsed.detailUrl) ??\n stringValue(parsed.url) ??\n stringValue(parsed.urlPath),\n });\n}\n\nfunction isReadyDeckArtifact(parsed: Record<string, unknown>): boolean {\n const slideCount = numberValue(parsed.slideCount);\n if (slideCount !== undefined) return slideCount > 0;\n if (Array.isArray(parsed.slides)) return parsed.slides.length > 0;\n return true;\n}\n\nfunction addDeckArtifact(\n decks: Map<string, CreatedDeckArtifact>,\n parsed: Record<string, unknown>,\n options: { requireReady: boolean },\n): void {\n const id = deckIdValue(parsed);\n if (!id) return;\n if (options.requireReady && !isReadyDeckArtifact(parsed)) return;\n decks.set(id, {\n id,\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n}\n\nfunction addListedDeckArtifacts(\n decks: Map<string, CreatedDeckArtifact>,\n parsed: Record<string, unknown>,\n): void {\n const items = parsed.decks;\n if (!Array.isArray(items)) return;\n for (const item of items) {\n const deck = asRecord(item);\n if (!deck) continue;\n addDeckArtifact(decks, deck, { requireReady: false });\n }\n}\n\nfunction collectArtifacts(results: A2AToolResultSummary[]): {\n documents: CreatedDocumentArtifact[];\n decks: CreatedDeckArtifact[];\n dashboards: CreatedDashboardArtifact[];\n analyses: CreatedAnalysisArtifact[];\n images: CreatedImageArtifact[];\n designShells: CreatedDesignShell[];\n generatedDesigns: GeneratedDesignArtifact[];\n monitors: CreatedMonitorArtifact[];\n forms: CreatedFormArtifact[];\n} {\n const documents = new Map<string, CreatedDocumentArtifact>();\n const decks = new Map<string, CreatedDeckArtifact>();\n const dashboards = new Map<string, CreatedDashboardArtifact>();\n const analyses = new Map<string, CreatedAnalysisArtifact>();\n const images = new Map<string, CreatedImageArtifact>();\n const designShells = new Map<string, CreatedDesignShell>();\n const generatedDesigns = new Map<string, GeneratedDesignArtifact>();\n const monitors = new Map<string, CreatedMonitorArtifact>();\n const forms = new Map<string, CreatedFormArtifact>();\n\n for (const toolResult of results) {\n if (toolResult.tool === \"call-agent\") {\n for (const artifact of parseDownstreamArtifactBlock(toolResult.result)) {\n if (artifact.kind === \"deck\") {\n decks.set(artifact.id, {\n id: artifact.id,\n url: artifact.url,\n });\n } else if (artifact.kind === \"document\") {\n documents.set(artifact.id, {\n id: artifact.id,\n title: artifact.title,\n url: artifact.url,\n });\n } else if (artifact.kind === \"dashboard\") {\n dashboards.set(artifact.id, {\n id: artifact.id,\n title: artifact.title,\n url: artifact.url,\n });\n } else if (artifact.kind === \"analysis\") {\n analyses.set(artifact.id, {\n id: artifact.id,\n title: artifact.title,\n url: artifact.url,\n });\n } else if (artifact.kind === \"image\") {\n images.set(artifact.id, {\n id: artifact.id,\n title: artifact.title,\n url: artifact.url,\n runId: artifact.runId,\n });\n } else if (artifact.kind === \"design\" && artifact.fileCount > 0) {\n generatedDesigns.set(artifact.id, {\n id: artifact.id,\n fileCount: artifact.fileCount,\n url: artifact.url,\n });\n }\n }\n continue;\n }\n\n const parsed = parseToolResultJson(toolResult.result);\n if (!parsed) continue;\n\n if (toolResult.tool === \"save-monitor\") {\n const id = stringValue(parsed.id);\n const url = stringValue(parsed.monitorAppUrl);\n if (id && url) {\n monitors.set(id, {\n id,\n name: stringValue(parsed.name),\n url,\n });\n }\n continue;\n }\n\n if (toolResult.tool === \"create-form\") {\n const id = stringValue(parsed.id);\n const url = stringValue(parsed.publicUrl);\n if (id && url && stringValue(parsed.status) === \"published\") {\n const settings = asRecord(parsed.settings);\n forms.set(id, {\n id,\n title: stringValue(parsed.title),\n url,\n anonymous: settings?.anonymous === true,\n });\n }\n continue;\n }\n\n if (\n toolResult.tool === \"submit-content-database-form\" ||\n toolResult.tool === \"add-database-item\"\n ) {\n const artifact = contentDatabaseSubmissionArtifact(parsed);\n if (artifact) documents.set(artifact.id, artifact);\n continue;\n }\n\n if (\n toolResult.tool === \"create-document\" ||\n toolResult.tool === \"get-document\" ||\n toolResult.tool === \"update-document\"\n ) {\n const id = stringValue(parsed.id);\n if (id) {\n documents.set(id, {\n id,\n title: stringValue(parsed.title),\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n }\n continue;\n }\n\n if (\n toolResult.tool === \"create-deck\" ||\n toolResult.tool === \"duplicate-deck\"\n ) {\n addDeckArtifact(decks, parsed, { requireReady: true });\n continue;\n }\n\n if (toolResult.tool === \"get-deck\") {\n addDeckArtifact(decks, parsed, { requireReady: false });\n continue;\n }\n\n if (toolResult.tool === \"list-decks\") {\n addListedDeckArtifacts(decks, parsed);\n continue;\n }\n\n if (toolResult.tool === \"add-slide\") {\n const id = stringValue(parsed.deckId);\n const slideCount = numberValue(parsed.slideCount);\n if (id && slideCount !== undefined && slideCount > 0) {\n decks.set(id, {\n id,\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n }\n continue;\n }\n\n if (\n toolResult.tool === \"update-dashboard\" ||\n toolResult.tool === \"rename-dashboard\" ||\n toolResult.tool === \"get-dashboard\"\n ) {\n const id = dashboardIdValue(parsed);\n if (id) {\n dashboards.set(id, {\n id,\n title: stringValue(parsed.name) ?? stringValue(parsed.title),\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n }\n continue;\n }\n\n if (\n toolResult.tool === \"save-analysis\" ||\n toolResult.tool === \"get-analysis\"\n ) {\n const id = analysisIdValue(parsed);\n if (id) {\n analyses.set(id, {\n id,\n title: stringValue(parsed.name) ?? stringValue(parsed.title),\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n }\n continue;\n }\n\n if (\n toolResult.tool === \"generate-image\" ||\n toolResult.tool === \"refine-image\" ||\n toolResult.tool === \"get-asset\" ||\n toolResult.tool === \"save-generated-image\" ||\n toolResult.tool === \"export-image\"\n ) {\n addImageArtifact(images, parsed);\n continue;\n }\n\n if (toolResult.tool === \"generate-image-batch\") {\n if (Array.isArray(parsed.images)) {\n for (const item of parsed.images) {\n const image = asRecord(item);\n if (!image || image.ok === false) continue;\n addImageArtifact(images, image);\n }\n }\n continue;\n }\n\n if (toolResult.tool === \"create-design\") {\n const id = stringValue(parsed.id);\n if (id) {\n designShells.set(id, { id, title: stringValue(parsed.title) });\n }\n continue;\n }\n\n if (toolResult.tool === \"get-design\") {\n const id = stringValue(parsed.id);\n if (!id) continue;\n\n const renderableFileCount = countRenderableDesignFiles(parsed.files);\n if (renderableFileCount > 0) {\n generatedDesigns.set(id, {\n id,\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n fileCount: Array.isArray(parsed.files)\n ? parsed.files.length\n : renderableFileCount,\n });\n } else {\n designShells.set(id, { id, title: stringValue(parsed.title) });\n }\n continue;\n }\n\n if (toolResult.tool === \"generate-design\") {\n const id = stringValue(parsed.designId);\n if (!id) continue;\n\n const savedFiles = Array.isArray(parsed.savedFiles)\n ? parsed.savedFiles\n : [];\n const fileCount = numberValue(parsed.fileCount) ?? savedFiles.length;\n\n if (fileCount > 0) {\n generatedDesigns.set(id, {\n id,\n fileCount,\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n }\n continue;\n }\n\n if (toolResult.tool === \"create-file\") {\n const id = stringValue(parsed.designId);\n if (!id) continue;\n const renderable =\n parsed.renderable === true ||\n stringValue(parsed.fileType) === \"html\" ||\n stringValue(parsed.fileType) === \"jsx\";\n\n if (renderable) {\n const previous = generatedDesigns.get(id);\n generatedDesigns.set(id, {\n id,\n url:\n stringValue(parsed.url) ??\n stringValue(parsed.urlPath) ??\n previous?.url,\n fileCount: (previous?.fileCount ?? 0) + 1,\n });\n }\n }\n\n if (toolResult.tool === \"duplicate-design\") {\n const id = stringValue(parsed.id);\n const fileCount = numberValue(parsed.fileCount);\n if (id && fileCount && fileCount > 0) {\n generatedDesigns.set(id, {\n id,\n fileCount,\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n }\n }\n }\n\n return {\n documents: [...documents.values()],\n decks: [...decks.values()],\n dashboards: [...dashboards.values()],\n analyses: [...analyses.values()],\n images: [...images.values()],\n designShells: [...designShells.values()],\n generatedDesigns: [...generatedDesigns.values()],\n monitors: [...monitors.values()],\n forms: [...forms.values()],\n };\n}\n\ntype DownstreamArtifact =\n | { kind: \"deck\"; id: string; url: string }\n | { kind: \"document\"; id: string; url: string; title?: string }\n | { kind: \"dashboard\"; id: string; url: string; title?: string }\n | { kind: \"analysis\"; id: string; url: string; title?: string }\n | { kind: \"image\"; id: string; url: string; title?: string; runId?: string }\n | { kind: \"design\"; id: string; url: string; fileCount: number };\n\nfunction parseDownstreamArtifactBlock(result: string): DownstreamArtifact[] {\n const artifacts: DownstreamArtifact[] = [];\n for (const line of downstreamArtifactLines(result)) {\n const deck = line.match(\n /^- Deck(?:\\s+\"[^\"]+\")?(?:\\s+\\([^)]*\\))?:\\s+(\\S+)\\s+\\(ID:\\s*([A-Za-z0-9_-]+)\\)$/,\n );\n if (deck) {\n const id = deck[2];\n if (!artifactUrlReferencesId(deck[1], \"deck\", id)) continue;\n artifacts.push({\n kind: \"deck\",\n url: deck[1],\n id,\n });\n continue;\n }\n\n const document = line.match(\n /^- Document(?:\\s+\"([^\"]+)\")?:\\s+(\\S+)\\s+\\(ID:\\s*([A-Za-z0-9_-]+)\\)$/,\n );\n if (document) {\n const id = document[3];\n if (!artifactUrlReferencesId(document[2], \"document\", id)) continue;\n artifacts.push({\n kind: \"document\",\n title: document[1],\n url: document[2],\n id,\n });\n continue;\n }\n\n const dashboard = line.match(\n /^- Dashboard(?:\\s+\"([^\"]+)\")?:\\s+(\\S+)\\s+\\(ID:\\s*([A-Za-z0-9_-]+)\\)$/,\n );\n if (dashboard) {\n const id = dashboard[3];\n if (!artifactUrlReferencesId(dashboard[2], \"dashboard\", id)) continue;\n artifacts.push({\n kind: \"dashboard\",\n title: dashboard[1],\n url: dashboard[2],\n id,\n });\n continue;\n }\n\n const analysis = line.match(\n /^- (?:Analysis|Report)(?:\\s+\"([^\"]+)\")?:\\s+(\\S+)\\s+\\(ID:\\s*([A-Za-z0-9_-]+)\\)$/,\n );\n if (analysis) {\n const id = analysis[3];\n if (!artifactUrlReferencesId(analysis[2], \"analysis\", id)) continue;\n artifacts.push({\n kind: \"analysis\",\n title: analysis[1],\n url: analysis[2],\n id,\n });\n continue;\n }\n\n const image = line.match(\n /^- Image(?:\\s+\"([^\"]+)\")?:\\s+(\\S+)\\s+\\(ID:\\s*([A-Za-z0-9_-]+)(?:,\\s*Run:\\s*([A-Za-z0-9_-]+))?\\)$/,\n );\n if (image) {\n const id = image[3];\n if (!artifactUrlReferencesId(image[2], \"image\", id)) continue;\n artifacts.push({\n kind: \"image\",\n title: image[1],\n url: image[2],\n id,\n runId: image[4],\n });\n continue;\n }\n\n const design = line.match(\n /^- Design:\\s+(\\S+)\\s+\\(ID:\\s*([A-Za-z0-9_-]+),\\s*(\\d+)\\s+files?\\)$/,\n );\n if (design) {\n const id = design[2];\n if (!artifactUrlReferencesId(design[1], \"design\", id)) continue;\n artifacts.push({\n kind: \"design\",\n url: design[1],\n id,\n fileCount: Number(design[3]),\n });\n }\n }\n return artifacts;\n}\n\nfunction downstreamArtifactLines(result: string): string[] {\n const lines = result.split(/\\r?\\n/);\n const artifactLines: string[] = [];\n\n for (let i = 0; i < lines.length; i += 1) {\n if (lines[i].trim() !== \"Artifacts:\") continue;\n\n let sawBlockLine = false;\n for (let j = i + 1; j < lines.length; j += 1) {\n const trimmed = lines[j].trim();\n if (!trimmed) {\n if (!sawBlockLine) continue;\n break;\n }\n if (!trimmed.startsWith(\"- \")) break;\n sawBlockLine = true;\n artifactLines.push(trimmed);\n }\n }\n\n return artifactLines;\n}\n\nfunction artifactUrlReferencesId(\n rawUrl: string,\n kind: ReferencedArtifactKind,\n id: string,\n): boolean {\n const reference = parseArtifactReferenceUrl(rawUrl);\n return reference?.kind === kind && reference.id === id;\n}\n\nfunction parseArtifactReferenceUrl(rawUrl: string): ReferencedArtifact | null {\n let url: URL;\n try {\n url = new URL(rawUrl, \"https://agent-native-artifact.invalid\");\n } catch {\n return null;\n }\n\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") return null;\n\n const path = url.pathname.replace(/\\/+$/, \"\");\n const deck = path.match(/(?:^|\\/)deck\\/([A-Za-z0-9_-]+)(?:\\/present)?$/);\n if (deck) return { kind: \"deck\", id: deck[1] };\n\n const design = path.match(/(?:^|\\/)design\\/([A-Za-z0-9_-]+)$/);\n if (design) return { kind: \"design\", id: design[1] };\n\n const document = path.match(/(?:^|\\/)page\\/([A-Za-z0-9_-]+)$/);\n if (document) return { kind: \"document\", id: document[1] };\n\n const dashboard = path.match(/(?:^|\\/)adhoc\\/([A-Za-z0-9_-]+)$/);\n if (dashboard) return { kind: \"dashboard\", id: dashboard[1] };\n\n const analysis = path.match(/(?:^|\\/)analyses\\/([A-Za-z0-9_-]+)$/);\n if (analysis) return { kind: \"analysis\", id: analysis[1] };\n\n const image = path.match(/(?:^|\\/)image\\/([A-Za-z0-9_-]+)$/);\n if (image) return { kind: \"image\", id: image[1] };\n\n const imageEmbed = path.match(/(?:^|\\/)asset\\/([A-Za-z0-9_-]+)\\/embed$/);\n if (imageEmbed) return { kind: \"image\", id: imageEmbed[1] };\n\n const imageContent = path.match(\n /(?:^|\\/)api\\/assets\\/([A-Za-z0-9_-]+)\\/content$/,\n );\n if (imageContent) return { kind: \"image\", id: imageContent[1] };\n\n return null;\n}\n\nfunction formatDocumentLine(\n document: CreatedDocumentArtifact,\n baseUrl: string | undefined,\n): string {\n const label = document.title ? `Document \"${document.title}\"` : \"Document\";\n return `- ${label}: ${artifactUrlFromResult({ url: document.url }, `/page/${document.id}`, baseUrl)} (ID: ${document.id})`;\n}\n\nfunction formatDeckLine(\n deck: CreatedDeckArtifact,\n baseUrl: string | undefined,\n): string {\n return `- Deck: ${artifactUrlFromResult({ url: deck.url }, `/deck/${deck.id}`, baseUrl)} (ID: ${deck.id})`;\n}\n\nfunction formatDashboardLine(\n dashboard: CreatedDashboardArtifact,\n baseUrl: string | undefined,\n): string {\n const label = dashboard.title\n ? `Dashboard \"${dashboard.title}\"`\n : \"Dashboard\";\n return `- ${label}: ${artifactUrlFromResult({ url: dashboard.url }, `/adhoc/${dashboard.id}`, baseUrl)} (ID: ${dashboard.id})`;\n}\n\nfunction formatAnalysisLine(\n analysis: CreatedAnalysisArtifact,\n baseUrl: string | undefined,\n): string {\n const label = analysis.title ? `Report \"${analysis.title}\"` : \"Report\";\n return `- ${label}: ${artifactUrlFromResult({ url: analysis.url }, `/analyses/${analysis.id}`, baseUrl)} (ID: ${analysis.id})`;\n}\n\nfunction formatImageLine(\n image: CreatedImageArtifact,\n baseUrl: string | undefined,\n): string {\n const label = image.title ? `Image \"${image.title}\"` : \"Image\";\n const run = image.runId ? `, Run: ${image.runId}` : \"\";\n return `- ${label}: ${artifactUrlFromResult({ url: image.url }, `/image/${image.id}`, baseUrl)} (ID: ${image.id}${run})`;\n}\n\nfunction formatDesignLine(\n design: GeneratedDesignArtifact,\n baseUrl: string | undefined,\n): string {\n const fileLabel =\n design.fileCount === 1 ? \"1 file\" : `${design.fileCount} files`;\n return `- Design: ${artifactUrlFromResult({ url: design.url }, `/design/${design.id}`, baseUrl)} (ID: ${design.id}, ${fileLabel})`;\n}\n\nfunction formatMonitorLine(monitor: CreatedMonitorArtifact): string {\n const label = monitor.name ? `Monitor \"${monitor.name}\"` : \"Monitor\";\n return `- ${label}: ${monitor.url} (ID: ${monitor.id})`;\n}\n\nfunction formatFormLine(form: CreatedFormArtifact): string {\n const kind = form.anonymous ? \"Anonymous form\" : \"Public form\";\n const label = form.title ? `${kind} \"${form.title}\"` : kind;\n return `- ${label}: ${form.url} (ID: ${form.id})`;\n}\n\nfunction formatIncompleteDesignMessage(shells: CreatedDesignShell[]): string {\n const ids = shells.map((shell) => shell.id).join(\", \");\n const noun = shells.length === 1 ? \"project shell\" : \"project shells\";\n return (\n `The design is not ready yet. Design ${noun} ${ids} ` +\n \"exists, but no renderable files were saved, so I cannot return it as a completed artifact.\"\n );\n}\n\nfunction collectReferencedArtifacts(\n text: string,\n baseUrl: string | undefined,\n): ReferencedArtifact[] {\n const refs = new Map<string, ReferencedArtifact>();\n const baseOrigin = safeOrigin(baseUrl);\n const artifactUrlPattern =\n /(?:(https?:\\/\\/[^/\\s<>()]+))?(?:\\/[^\\s<>()]*)?\\/(deck|design|page|adhoc|analyses|image|asset|assets)\\/([A-Za-z0-9_-]+)/g;\n\n for (const match of text.matchAll(artifactUrlPattern)) {\n const origin = safeOrigin(match[1]);\n const route = match[2];\n const id = match[3];\n const kind: ReferencedArtifactKind =\n route === \"deck\"\n ? \"deck\"\n : route === \"design\"\n ? \"design\"\n : route === \"page\"\n ? \"document\"\n : route === \"adhoc\"\n ? \"dashboard\"\n : route === \"analyses\"\n ? \"analysis\"\n : \"image\";\n if (!shouldValidateArtifactReference(origin, baseOrigin, kind)) continue;\n refs.set(`${kind}:${id}`, { kind, id });\n }\n\n return [...refs.values()];\n}\n\nfunction safeOrigin(url: string | undefined): string | undefined {\n if (!url) return undefined;\n try {\n return new URL(url).origin;\n } catch {\n return undefined;\n }\n}\n\nconst KNOWN_AGENT_NATIVE_ARTIFACT_HOSTS: Record<\n ReferencedArtifactKind,\n ReadonlySet<string>\n> = {\n deck: new Set([\"slides.agent-native.com\"]),\n design: new Set([\"design.agent-native.com\"]),\n document: new Set([\"content.agent-native.com\"]),\n dashboard: new Set([\"analytics.agent-native.com\"]),\n analysis: new Set([\"analytics.agent-native.com\"]),\n image: new Set([\"assets.agent-native.com\", \"images.agent-native.com\"]),\n};\n\nfunction safeHostnameFromOrigin(\n origin: string | undefined,\n): string | undefined {\n if (!origin) return undefined;\n try {\n return new URL(origin).hostname.toLowerCase();\n } catch {\n return undefined;\n }\n}\n\nfunction shouldValidateArtifactReference(\n origin: string | undefined,\n baseOrigin: string | undefined,\n kind: ReferencedArtifactKind,\n): boolean {\n if (!origin || !baseOrigin || origin === baseOrigin) return true;\n\n const hostname = safeHostnameFromOrigin(origin);\n return !!hostname && KNOWN_AGENT_NATIVE_ARTIFACT_HOSTS[kind].has(hostname);\n}\n\nfunction findUnverifiedArtifactReferences(\n text: string,\n baseUrl: string | undefined,\n documents: CreatedDocumentArtifact[],\n decks: CreatedDeckArtifact[],\n dashboards: CreatedDashboardArtifact[],\n analyses: CreatedAnalysisArtifact[],\n images: CreatedImageArtifact[],\n generatedDesigns: GeneratedDesignArtifact[],\n): ReferencedArtifact[] {\n const documentIds = new Set(documents.map((document) => document.id));\n const deckIds = new Set(decks.map((deck) => deck.id));\n const dashboardIds = new Set(dashboards.map((dashboard) => dashboard.id));\n const analysisIds = new Set(analyses.map((analysis) => analysis.id));\n const imageIds = new Set(images.map((image) => image.id));\n const designIds = new Set(generatedDesigns.map((design) => design.id));\n\n return collectReferencedArtifacts(text, baseUrl).filter((ref) => {\n if (ref.kind === \"document\") return !documentIds.has(ref.id);\n if (ref.kind === \"deck\") return !deckIds.has(ref.id);\n if (ref.kind === \"dashboard\") return !dashboardIds.has(ref.id);\n if (ref.kind === \"analysis\") return !analysisIds.has(ref.id);\n if (ref.kind === \"image\") return !imageIds.has(ref.id);\n return !designIds.has(ref.id);\n });\n}\n\nfunction formatUnverifiedArtifactMessage(\n refs: ReferencedArtifact[],\n documents: CreatedDocumentArtifact[],\n decks: CreatedDeckArtifact[],\n dashboards: CreatedDashboardArtifact[],\n analyses: CreatedAnalysisArtifact[],\n images: CreatedImageArtifact[],\n generatedDesigns: GeneratedDesignArtifact[],\n baseUrl: string | undefined,\n): string {\n const hasOnlyDesigns = refs.every((ref) => ref.kind === \"design\");\n const hasOnlyDocuments = refs.every((ref) => ref.kind === \"document\");\n const hasOnlyDecks = refs.every((ref) => ref.kind === \"deck\");\n const hasOnlyDashboards = refs.every((ref) => ref.kind === \"dashboard\");\n const hasOnlyAnalyses = refs.every((ref) => ref.kind === \"analysis\");\n const hasOnlyImages = refs.every((ref) => ref.kind === \"image\");\n const label = hasOnlyDesigns\n ? \"design URL\"\n : hasOnlyDocuments\n ? \"document URL\"\n : hasOnlyDecks\n ? \"deck URL\"\n : hasOnlyDashboards\n ? \"dashboard URL\"\n : hasOnlyAnalyses\n ? \"report URL\"\n : hasOnlyImages\n ? \"image URL\"\n : \"artifact URL\";\n const plural = refs.length === 1 ? label : `${label}s`;\n const message = `I could not verify the ${plural} in the final answer against a successful artifact action that saved app data, so I cannot return it.`;\n const verifiedLines = [\n ...documents.map((document) => formatDocumentLine(document, baseUrl)),\n ...decks.map((deck) => formatDeckLine(deck, baseUrl)),\n ...dashboards.map((dashboard) => formatDashboardLine(dashboard, baseUrl)),\n ...analyses.map((analysis) => formatAnalysisLine(analysis, baseUrl)),\n ...images.map((image) => formatImageLine(image, baseUrl)),\n ...generatedDesigns.map((design) => formatDesignLine(design, baseUrl)),\n ];\n\n return verifiedLines.length > 0\n ? `${message}\\n\\nArtifacts:\\n${verifiedLines.join(\"\\n\")}`\n : message;\n}\n\nexport function appendA2AArtifactLinks(\n responseText: string,\n toolResults: A2AToolResultSummary[],\n options: A2AArtifactResponseOptions = {},\n): string {\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const includeReferencedArtifacts =\n options.includeReferencedArtifacts ?? false;\n const {\n documents,\n decks,\n dashboards,\n analyses,\n images,\n designShells,\n generatedDesigns,\n monitors,\n forms,\n } = collectArtifacts(toolResults);\n const generatedDesignIds = new Set(\n generatedDesigns.map((design) => design.id),\n );\n const incompleteShells = designShells.filter(\n (shell) => !generatedDesignIds.has(shell.id),\n );\n\n let text = responseText.trim() === \"(no response)\" ? \"\" : responseText.trim();\n\n if (\n generatedDesigns.length === 0 &&\n incompleteShells.length > 0 &&\n !responseAlreadyWarnsIncompleteDesign(text) &&\n (incompleteShells.some((shell) =>\n responseMentionsDesignShell(text, shell),\n ) ||\n /\\b(?:done|created|ready|here(?:'s| is)|complete|finished)\\b/i.test(text))\n ) {\n return formatIncompleteDesignMessage(incompleteShells);\n }\n\n const unverifiedRefs = findUnverifiedArtifactReferences(\n text,\n baseUrl,\n documents,\n decks,\n dashboards,\n analyses,\n images,\n generatedDesigns,\n );\n if (unverifiedRefs.length > 0) {\n return formatUnverifiedArtifactMessage(\n unverifiedRefs,\n documents,\n decks,\n dashboards,\n analyses,\n images,\n generatedDesigns,\n baseUrl,\n );\n }\n\n const missingLines: string[] = [];\n for (const document of documents) {\n const path = `/page/${document.id}`;\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, path)\n ) {\n missingLines.push(formatDocumentLine(document, baseUrl));\n }\n }\n for (const deck of decks) {\n const path = `/deck/${deck.id}`;\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, path)\n ) {\n missingLines.push(formatDeckLine(deck, baseUrl));\n }\n }\n for (const dashboard of dashboards) {\n const path = `/adhoc/${dashboard.id}`;\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, path)\n ) {\n missingLines.push(formatDashboardLine(dashboard, baseUrl));\n }\n }\n for (const analysis of analyses) {\n const path = `/analyses/${analysis.id}`;\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, path)\n ) {\n missingLines.push(formatAnalysisLine(analysis, baseUrl));\n }\n }\n for (const image of images) {\n const path = `/image/${image.id}`;\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, path)\n ) {\n missingLines.push(formatImageLine(image, baseUrl));\n }\n }\n for (const design of generatedDesigns) {\n const path = `/design/${design.id}`;\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, path)\n ) {\n missingLines.push(formatDesignLine(design, baseUrl));\n }\n }\n for (const monitor of monitors) {\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, monitor.url)\n ) {\n missingLines.push(formatMonitorLine(monitor));\n }\n }\n for (const form of forms) {\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, form.url)\n ) {\n missingLines.push(formatFormLine(form));\n }\n }\n\n if (missingLines.length === 0) return text;\n const artifactBlock = `Artifacts:\\n${missingLines.join(\"\\n\")}`;\n return text ? `${text}\\n\\n${artifactBlock}` : artifactBlock;\n}\n\nexport function buildA2ARecoverableArtifactMessage(\n toolResults: A2AToolResultSummary[],\n options: A2AArtifactResponseOptions = {},\n): string | null {\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const {\n documents,\n decks,\n dashboards,\n analyses,\n images,\n generatedDesigns,\n monitors,\n forms,\n } = collectArtifacts(toolResults);\n const lines = [\n ...documents.map((document) => formatDocumentLine(document, baseUrl)),\n ...decks.map((deck) => formatDeckLine(deck, baseUrl)),\n ...dashboards.map((dashboard) => formatDashboardLine(dashboard, baseUrl)),\n ...analyses.map((analysis) => formatAnalysisLine(analysis, baseUrl)),\n ...images.map((image) => formatImageLine(image, baseUrl)),\n ...generatedDesigns.map((design) => formatDesignLine(design, baseUrl)),\n ...monitors.map(formatMonitorLine),\n ...forms.map(formatFormLine),\n ];\n\n if (lines.length === 0) return null;\n return [\n \"The agent is still working on the full response, but these verified artifacts already exist:\",\n \"\",\n \"Artifacts:\",\n ...lines,\n ].join(\"\\n\");\n}\n"]}
1
+ {"version":3,"file":"artifact-response.js","sourceRoot":"","sources":["../../src/a2a/artifact-response.ts"],"names":[],"mappings":"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","sourcesContent":["export interface A2AToolResultSummary {\n tool: string;\n result: string;\n}\n\nexport interface A2AArtifactResponseOptions {\n baseUrl?: string;\n includeReferencedArtifacts?: boolean;\n}\n\ninterface CreatedDocumentArtifact {\n id: string;\n title?: string;\n url?: string;\n}\n\ninterface CreatedDesignShell {\n id: string;\n title?: string;\n}\n\ninterface GeneratedDesignArtifact {\n id: string;\n fileCount: number;\n url?: string;\n}\n\ninterface CreatedDeckArtifact {\n id: string;\n url?: string;\n}\n\ninterface CreatedDashboardArtifact {\n id: string;\n title?: string;\n url?: string;\n}\n\ninterface CreatedAnalysisArtifact {\n id: string;\n title?: string;\n url?: string;\n}\n\ninterface CreatedImageArtifact {\n id: string;\n runId?: string;\n title?: string;\n url?: string;\n}\n\ninterface CreatedMonitorArtifact {\n id: string;\n name?: string;\n url: string;\n}\n\ninterface CreatedFormArtifact {\n id: string;\n title?: string;\n url: string;\n anonymous: boolean;\n}\n\ntype ReferencedArtifactKind =\n | \"deck\"\n | \"design\"\n | \"document\"\n | \"dashboard\"\n | \"analysis\"\n | \"image\";\n\ninterface ReferencedArtifact {\n kind: ReferencedArtifactKind;\n id: string;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null;\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction parseToolResultJson(result: string): Record<string, unknown> | null {\n const trimmed = result.trim();\n if (!trimmed || /^Error(?:\\s|:)/i.test(trimmed)) return null;\n\n try {\n return asRecord(JSON.parse(trimmed));\n } catch {\n // Dev shell wrappers may include console output before the returned JSON.\n const firstBrace = trimmed.indexOf(\"{\");\n const lastBrace = trimmed.lastIndexOf(\"}\");\n if (firstBrace < 0 || lastBrace <= firstBrace) return null;\n try {\n return asRecord(JSON.parse(trimmed.slice(firstBrace, lastBrace + 1)));\n } catch {\n return null;\n }\n }\n}\n\nfunction normalizeBaseUrl(baseUrl: string | undefined): string | undefined {\n const trimmed = baseUrl?.trim();\n return trimmed ? trimmed.replace(/\\/+$/, \"\") : undefined;\n}\n\nfunction artifactUrl(baseUrl: string | undefined, path: string): string {\n const base = normalizeBaseUrl(baseUrl);\n return base ? `${base}${path}` : path;\n}\n\nfunction artifactUrlFromResult(\n parsed: Record<string, unknown>,\n fallbackPath: string,\n baseUrl: string | undefined,\n): string {\n const explicitUrl = stringValue(parsed.url) ?? stringValue(parsed.urlPath);\n if (!explicitUrl) return artifactUrl(baseUrl, fallbackPath);\n if (explicitUrl.startsWith(\"/\")) return artifactUrl(baseUrl, explicitUrl);\n try {\n return new URL(explicitUrl).toString();\n } catch {\n return artifactUrl(baseUrl, fallbackPath);\n }\n}\n\nfunction responseAlreadyMentionsPath(text: string, path: string): boolean {\n return text.includes(path);\n}\n\nfunction responseMentionsDesignShell(\n text: string,\n shell: CreatedDesignShell,\n): boolean {\n if (!text.trim()) return true;\n return text.includes(shell.id) || text.includes(`/design/${shell.id}`);\n}\n\nfunction responseAlreadyWarnsIncompleteDesign(text: string): boolean {\n return /(?:not ready|still working|processing|no renderable|no files|failed|could not|cannot|can't)/i.test(\n text,\n );\n}\n\nfunction isRenderableDesignFile(value: unknown): boolean {\n const file = asRecord(value);\n if (!file) return false;\n\n const filename = stringValue(file.filename);\n const fileType = stringValue(file.fileType);\n const hasRenderableType =\n fileType === \"html\" ||\n fileType === \"jsx\" ||\n filename?.endsWith(\".html\") ||\n filename?.endsWith(\".jsx\");\n if (!hasRenderableType) return false;\n\n return typeof file.content !== \"string\" || file.content.trim().length > 0;\n}\n\nfunction countRenderableDesignFiles(files: unknown): number {\n if (!Array.isArray(files)) return 0;\n return files.filter(isRenderableDesignFile).length;\n}\n\nfunction numberValue(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value)\n ? value\n : undefined;\n}\n\nfunction deckIdValue(parsed: Record<string, unknown>): string | undefined {\n return stringValue(parsed.id) ?? stringValue(parsed.deckId);\n}\n\nfunction dashboardIdValue(parsed: Record<string, unknown>): string | undefined {\n return stringValue(parsed.id) ?? stringValue(parsed.dashboardId);\n}\n\nfunction analysisIdValue(parsed: Record<string, unknown>): string | undefined {\n return stringValue(parsed.id) ?? stringValue(parsed.analysisId);\n}\n\nfunction imageIdValue(parsed: Record<string, unknown>): string | undefined {\n return (\n stringValue(parsed.assetId) ??\n stringValue(parsed.imageId) ??\n stringValue(parsed.id)\n );\n}\n\nfunction contentDatabaseSubmissionArtifact(\n parsed: Record<string, unknown>,\n): CreatedDocumentArtifact | null {\n const id = stringValue(parsed.createdDocumentId);\n if (!id) return null;\n\n const verification = asRecord(parsed.verification);\n const candidates = [\n stringValue(parsed.url),\n stringValue(parsed.urlPath),\n stringValue(parsed.createdDocumentUrl),\n stringValue(verification?.url),\n stringValue(verification?.urlPath),\n ].filter((value): value is string => !!value);\n const url = candidates.find((candidate) =>\n artifactUrlReferencesId(candidate, \"document\", id),\n );\n\n const items = Array.isArray(parsed.items) ? parsed.items : [];\n const createdItem = items.map(asRecord).find((item) => {\n const document = asRecord(item?.document);\n return stringValue(document?.id) === id;\n });\n const createdDocument = asRecord(createdItem?.document);\n\n return {\n id,\n title:\n stringValue(parsed.createdDocumentTitle) ??\n stringValue(createdDocument?.title),\n url,\n };\n}\n\nfunction documentUrlForId(\n parsed: Record<string, unknown>,\n id: string,\n additionalCandidates: Array<string | undefined> = [],\n options: { requireContentOrigin?: boolean } = {},\n): string | undefined {\n const candidates = [\n stringValue(parsed.url),\n stringValue(parsed.urlPath),\n stringValue(parsed.deepLink),\n stringValue(parsed.pageUrl),\n stringValue(parsed.documentUrl),\n ...additionalCandidates,\n ].filter((value): value is string => !!value);\n\n return candidates.find((candidate) => {\n if (!artifactUrlReferencesId(candidate, \"document\", id)) return false;\n return !options.requireContentOrigin || isContentDocumentUrl(candidate);\n });\n}\n\nfunction isContentDocumentUrl(rawUrl: string): boolean {\n try {\n return new URL(rawUrl).origin === \"https://content.agent-native.com\";\n } catch {\n return false;\n }\n}\n\nfunction addDocumentReadArtifact(\n documents: Map<string, CreatedDocumentArtifact>,\n parsed: Record<string, unknown>,\n options: {\n allowWithoutUrl: boolean;\n additionalUrlCandidates?: Array<string | undefined>;\n requireContentOrigin?: boolean;\n },\n): void {\n const id = stringValue(parsed.documentId) ?? stringValue(parsed.id);\n if (!id) return;\n\n const url = documentUrlForId(parsed, id, options.additionalUrlCandidates, {\n requireContentOrigin: options.requireContentOrigin,\n });\n if (!url && !options.allowWithoutUrl) return;\n\n documents.set(id, {\n id,\n title: stringValue(parsed.title) ?? stringValue(parsed.name),\n url,\n });\n}\n\nfunction addContentDatabaseReadArtifacts(\n documents: Map<string, CreatedDocumentArtifact>,\n parsed: Record<string, unknown>,\n): void {\n const resultUrls = [\n stringValue(parsed.url),\n stringValue(parsed.urlPath),\n stringValue(parsed.deepLink),\n ];\n const database = asRecord(parsed.database);\n if (database) {\n addDocumentReadArtifact(documents, database, {\n allowWithoutUrl: true,\n requireContentOrigin: true,\n additionalUrlCandidates: resultUrls,\n });\n } else {\n // Unavailable database reads still return a documentId, but they do not\n // prove that the page exists and must not authorize an artifact URL.\n if (parsed.available !== false) {\n addDocumentReadArtifact(documents, parsed, {\n allowWithoutUrl: true,\n requireContentOrigin: true,\n });\n }\n }\n\n if (!Array.isArray(parsed.items)) return;\n for (const item of parsed.items) {\n const itemRecord = asRecord(item);\n const document = asRecord(itemRecord?.document);\n if (!document) continue;\n addDocumentReadArtifact(documents, document, {\n allowWithoutUrl: true,\n requireContentOrigin: true,\n additionalUrlCandidates: [\n stringValue(itemRecord?.url),\n stringValue(itemRecord?.urlPath),\n stringValue(itemRecord?.deepLink),\n ],\n });\n }\n}\n\nfunction isGenericReadTool(tool: string): boolean {\n return /^(?:find|get|list|query|read|search)-/i.test(tool);\n}\n\nfunction addGenericDocumentReadArtifact(\n documents: Map<string, CreatedDocumentArtifact>,\n parsed: Record<string, unknown>,\n): void {\n // Unknown read actions are accepted only when their result pairs a document\n // ID with a canonical page URL containing that exact ID. An ID by itself is\n // insufficient, preserving the fabrication guard for unrelated actions.\n addDocumentReadArtifact(documents, parsed, {\n allowWithoutUrl: false,\n requireContentOrigin: true,\n });\n\n const document = asRecord(parsed.document);\n if (!document) return;\n addDocumentReadArtifact(documents, document, {\n allowWithoutUrl: false,\n requireContentOrigin: true,\n additionalUrlCandidates: [\n stringValue(parsed.url),\n stringValue(parsed.urlPath),\n stringValue(parsed.deepLink),\n ],\n });\n}\n\nfunction addImageArtifact(\n images: Map<string, CreatedImageArtifact>,\n parsed: Record<string, unknown>,\n): void {\n const id = imageIdValue(parsed);\n if (!id) return;\n images.set(id, {\n id,\n runId: stringValue(parsed.runId) ?? stringValue(parsed.generationRunId),\n title: stringValue(parsed.title),\n url:\n stringValue(parsed.pageUrl) ??\n stringValue(parsed.detailUrl) ??\n stringValue(parsed.url) ??\n stringValue(parsed.urlPath),\n });\n}\n\nfunction isReadyDeckArtifact(parsed: Record<string, unknown>): boolean {\n const slideCount = numberValue(parsed.slideCount);\n if (slideCount !== undefined) return slideCount > 0;\n if (Array.isArray(parsed.slides)) return parsed.slides.length > 0;\n return true;\n}\n\nfunction addDeckArtifact(\n decks: Map<string, CreatedDeckArtifact>,\n parsed: Record<string, unknown>,\n options: { requireReady: boolean },\n): void {\n const id = deckIdValue(parsed);\n if (!id) return;\n if (options.requireReady && !isReadyDeckArtifact(parsed)) return;\n decks.set(id, {\n id,\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n}\n\nfunction addListedDeckArtifacts(\n decks: Map<string, CreatedDeckArtifact>,\n parsed: Record<string, unknown>,\n): void {\n const items = parsed.decks;\n if (!Array.isArray(items)) return;\n for (const item of items) {\n const deck = asRecord(item);\n if (!deck) continue;\n addDeckArtifact(decks, deck, { requireReady: false });\n }\n}\n\nfunction collectArtifacts(results: A2AToolResultSummary[]): {\n documents: CreatedDocumentArtifact[];\n decks: CreatedDeckArtifact[];\n dashboards: CreatedDashboardArtifact[];\n analyses: CreatedAnalysisArtifact[];\n images: CreatedImageArtifact[];\n designShells: CreatedDesignShell[];\n generatedDesigns: GeneratedDesignArtifact[];\n monitors: CreatedMonitorArtifact[];\n forms: CreatedFormArtifact[];\n} {\n const documents = new Map<string, CreatedDocumentArtifact>();\n const decks = new Map<string, CreatedDeckArtifact>();\n const dashboards = new Map<string, CreatedDashboardArtifact>();\n const analyses = new Map<string, CreatedAnalysisArtifact>();\n const images = new Map<string, CreatedImageArtifact>();\n const designShells = new Map<string, CreatedDesignShell>();\n const generatedDesigns = new Map<string, GeneratedDesignArtifact>();\n const monitors = new Map<string, CreatedMonitorArtifact>();\n const forms = new Map<string, CreatedFormArtifact>();\n\n for (const toolResult of results) {\n if (toolResult.tool === \"call-agent\") {\n for (const artifact of parseDownstreamArtifactBlock(toolResult.result)) {\n if (artifact.kind === \"deck\") {\n decks.set(artifact.id, {\n id: artifact.id,\n url: artifact.url,\n });\n } else if (artifact.kind === \"document\") {\n documents.set(artifact.id, {\n id: artifact.id,\n title: artifact.title,\n url: artifact.url,\n });\n } else if (artifact.kind === \"dashboard\") {\n dashboards.set(artifact.id, {\n id: artifact.id,\n title: artifact.title,\n url: artifact.url,\n });\n } else if (artifact.kind === \"analysis\") {\n analyses.set(artifact.id, {\n id: artifact.id,\n title: artifact.title,\n url: artifact.url,\n });\n } else if (artifact.kind === \"image\") {\n images.set(artifact.id, {\n id: artifact.id,\n title: artifact.title,\n url: artifact.url,\n runId: artifact.runId,\n });\n } else if (artifact.kind === \"design\" && artifact.fileCount > 0) {\n generatedDesigns.set(artifact.id, {\n id: artifact.id,\n fileCount: artifact.fileCount,\n url: artifact.url,\n });\n }\n }\n continue;\n }\n\n const parsed = parseToolResultJson(toolResult.result);\n if (!parsed) continue;\n\n if (toolResult.tool === \"save-monitor\") {\n const id = stringValue(parsed.id);\n const url = stringValue(parsed.monitorAppUrl);\n if (id && url) {\n monitors.set(id, {\n id,\n name: stringValue(parsed.name),\n url,\n });\n }\n continue;\n }\n\n if (toolResult.tool === \"create-form\") {\n const id = stringValue(parsed.id);\n const url = stringValue(parsed.publicUrl);\n if (id && url && stringValue(parsed.status) === \"published\") {\n const settings = asRecord(parsed.settings);\n forms.set(id, {\n id,\n title: stringValue(parsed.title),\n url,\n anonymous: settings?.anonymous === true,\n });\n }\n continue;\n }\n\n if (\n toolResult.tool === \"submit-content-database-form\" ||\n toolResult.tool === \"add-database-item\"\n ) {\n const artifact = contentDatabaseSubmissionArtifact(parsed);\n if (artifact) documents.set(artifact.id, artifact);\n continue;\n }\n\n if (\n toolResult.tool === \"create-document\" ||\n toolResult.tool === \"update-document\"\n ) {\n const id = stringValue(parsed.id);\n if (id) {\n documents.set(id, {\n id,\n title: stringValue(parsed.title),\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n }\n continue;\n }\n\n if (\n toolResult.tool === \"get-document\" ||\n toolResult.tool === \"get-content-document\"\n ) {\n const document = asRecord(parsed.document);\n addDocumentReadArtifact(documents, document ?? parsed, {\n allowWithoutUrl: true,\n requireContentOrigin: true,\n additionalUrlCandidates: document\n ? [\n stringValue(parsed.url),\n stringValue(parsed.urlPath),\n stringValue(parsed.deepLink),\n ]\n : [],\n });\n continue;\n }\n\n if (toolResult.tool === \"get-content-database\") {\n addContentDatabaseReadArtifacts(documents, parsed);\n continue;\n }\n\n if (isGenericReadTool(toolResult.tool)) {\n addGenericDocumentReadArtifact(documents, parsed);\n }\n\n if (\n toolResult.tool === \"create-deck\" ||\n toolResult.tool === \"duplicate-deck\"\n ) {\n addDeckArtifact(decks, parsed, { requireReady: true });\n continue;\n }\n\n if (toolResult.tool === \"get-deck\") {\n addDeckArtifact(decks, parsed, { requireReady: false });\n continue;\n }\n\n if (toolResult.tool === \"list-decks\") {\n addListedDeckArtifacts(decks, parsed);\n continue;\n }\n\n if (toolResult.tool === \"add-slide\") {\n const id = stringValue(parsed.deckId);\n const slideCount = numberValue(parsed.slideCount);\n if (id && slideCount !== undefined && slideCount > 0) {\n decks.set(id, {\n id,\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n }\n continue;\n }\n\n if (\n toolResult.tool === \"update-dashboard\" ||\n toolResult.tool === \"rename-dashboard\" ||\n toolResult.tool === \"get-dashboard\"\n ) {\n const id = dashboardIdValue(parsed);\n if (id) {\n dashboards.set(id, {\n id,\n title: stringValue(parsed.name) ?? stringValue(parsed.title),\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n }\n continue;\n }\n\n if (\n toolResult.tool === \"save-analysis\" ||\n toolResult.tool === \"get-analysis\"\n ) {\n const id = analysisIdValue(parsed);\n if (id) {\n analyses.set(id, {\n id,\n title: stringValue(parsed.name) ?? stringValue(parsed.title),\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n }\n continue;\n }\n\n if (\n toolResult.tool === \"generate-image\" ||\n toolResult.tool === \"refine-image\" ||\n toolResult.tool === \"get-asset\" ||\n toolResult.tool === \"save-generated-image\" ||\n toolResult.tool === \"export-image\"\n ) {\n addImageArtifact(images, parsed);\n continue;\n }\n\n if (toolResult.tool === \"generate-image-batch\") {\n if (Array.isArray(parsed.images)) {\n for (const item of parsed.images) {\n const image = asRecord(item);\n if (!image || image.ok === false) continue;\n addImageArtifact(images, image);\n }\n }\n continue;\n }\n\n if (toolResult.tool === \"create-design\") {\n const id = stringValue(parsed.id);\n if (id) {\n designShells.set(id, { id, title: stringValue(parsed.title) });\n }\n continue;\n }\n\n if (toolResult.tool === \"get-design\") {\n const id = stringValue(parsed.id);\n if (!id) continue;\n\n const renderableFileCount = countRenderableDesignFiles(parsed.files);\n if (renderableFileCount > 0) {\n generatedDesigns.set(id, {\n id,\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n fileCount: Array.isArray(parsed.files)\n ? parsed.files.length\n : renderableFileCount,\n });\n } else {\n designShells.set(id, { id, title: stringValue(parsed.title) });\n }\n continue;\n }\n\n if (toolResult.tool === \"generate-design\") {\n const id = stringValue(parsed.designId);\n if (!id) continue;\n\n const savedFiles = Array.isArray(parsed.savedFiles)\n ? parsed.savedFiles\n : [];\n const fileCount = numberValue(parsed.fileCount) ?? savedFiles.length;\n\n if (fileCount > 0) {\n generatedDesigns.set(id, {\n id,\n fileCount,\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n }\n continue;\n }\n\n if (toolResult.tool === \"create-file\") {\n const id = stringValue(parsed.designId);\n if (!id) continue;\n const renderable =\n parsed.renderable === true ||\n stringValue(parsed.fileType) === \"html\" ||\n stringValue(parsed.fileType) === \"jsx\";\n\n if (renderable) {\n const previous = generatedDesigns.get(id);\n generatedDesigns.set(id, {\n id,\n url:\n stringValue(parsed.url) ??\n stringValue(parsed.urlPath) ??\n previous?.url,\n fileCount: (previous?.fileCount ?? 0) + 1,\n });\n }\n }\n\n if (toolResult.tool === \"duplicate-design\") {\n const id = stringValue(parsed.id);\n const fileCount = numberValue(parsed.fileCount);\n if (id && fileCount && fileCount > 0) {\n generatedDesigns.set(id, {\n id,\n fileCount,\n url: stringValue(parsed.url) ?? stringValue(parsed.urlPath),\n });\n }\n }\n }\n\n return {\n documents: [...documents.values()],\n decks: [...decks.values()],\n dashboards: [...dashboards.values()],\n analyses: [...analyses.values()],\n images: [...images.values()],\n designShells: [...designShells.values()],\n generatedDesigns: [...generatedDesigns.values()],\n monitors: [...monitors.values()],\n forms: [...forms.values()],\n };\n}\n\ntype DownstreamArtifact =\n | { kind: \"deck\"; id: string; url: string }\n | { kind: \"document\"; id: string; url: string; title?: string }\n | { kind: \"dashboard\"; id: string; url: string; title?: string }\n | { kind: \"analysis\"; id: string; url: string; title?: string }\n | { kind: \"image\"; id: string; url: string; title?: string; runId?: string }\n | { kind: \"design\"; id: string; url: string; fileCount: number };\n\nfunction parseDownstreamArtifactBlock(result: string): DownstreamArtifact[] {\n const artifacts: DownstreamArtifact[] = [];\n for (const line of downstreamArtifactLines(result)) {\n const deck = line.match(\n /^- Deck(?:\\s+\"[^\"]+\")?(?:\\s+\\([^)]*\\))?:\\s+(\\S+)\\s+\\(ID:\\s*([A-Za-z0-9_-]+)\\)$/,\n );\n if (deck) {\n const id = deck[2];\n if (!artifactUrlReferencesId(deck[1], \"deck\", id)) continue;\n artifacts.push({\n kind: \"deck\",\n url: deck[1],\n id,\n });\n continue;\n }\n\n const document = line.match(\n /^- Document(?:\\s+\"([^\"]+)\")?:\\s+(\\S+)\\s+\\(ID:\\s*([A-Za-z0-9_-]+)\\)$/,\n );\n if (document) {\n const id = document[3];\n if (!artifactUrlReferencesId(document[2], \"document\", id)) continue;\n artifacts.push({\n kind: \"document\",\n title: document[1],\n url: document[2],\n id,\n });\n continue;\n }\n\n const dashboard = line.match(\n /^- Dashboard(?:\\s+\"([^\"]+)\")?:\\s+(\\S+)\\s+\\(ID:\\s*([A-Za-z0-9_-]+)\\)$/,\n );\n if (dashboard) {\n const id = dashboard[3];\n if (!artifactUrlReferencesId(dashboard[2], \"dashboard\", id)) continue;\n artifacts.push({\n kind: \"dashboard\",\n title: dashboard[1],\n url: dashboard[2],\n id,\n });\n continue;\n }\n\n const analysis = line.match(\n /^- (?:Analysis|Report)(?:\\s+\"([^\"]+)\")?:\\s+(\\S+)\\s+\\(ID:\\s*([A-Za-z0-9_-]+)\\)$/,\n );\n if (analysis) {\n const id = analysis[3];\n if (!artifactUrlReferencesId(analysis[2], \"analysis\", id)) continue;\n artifacts.push({\n kind: \"analysis\",\n title: analysis[1],\n url: analysis[2],\n id,\n });\n continue;\n }\n\n const image = line.match(\n /^- Image(?:\\s+\"([^\"]+)\")?:\\s+(\\S+)\\s+\\(ID:\\s*([A-Za-z0-9_-]+)(?:,\\s*Run:\\s*([A-Za-z0-9_-]+))?\\)$/,\n );\n if (image) {\n const id = image[3];\n if (!artifactUrlReferencesId(image[2], \"image\", id)) continue;\n artifacts.push({\n kind: \"image\",\n title: image[1],\n url: image[2],\n id,\n runId: image[4],\n });\n continue;\n }\n\n const design = line.match(\n /^- Design:\\s+(\\S+)\\s+\\(ID:\\s*([A-Za-z0-9_-]+),\\s*(\\d+)\\s+files?\\)$/,\n );\n if (design) {\n const id = design[2];\n if (!artifactUrlReferencesId(design[1], \"design\", id)) continue;\n artifacts.push({\n kind: \"design\",\n url: design[1],\n id,\n fileCount: Number(design[3]),\n });\n }\n }\n return artifacts;\n}\n\nfunction downstreamArtifactLines(result: string): string[] {\n const lines = result.split(/\\r?\\n/);\n const artifactLines: string[] = [];\n\n for (let i = 0; i < lines.length; i += 1) {\n if (lines[i].trim() !== \"Artifacts:\") continue;\n\n let sawBlockLine = false;\n for (let j = i + 1; j < lines.length; j += 1) {\n const trimmed = lines[j].trim();\n if (!trimmed) {\n if (!sawBlockLine) continue;\n break;\n }\n if (!trimmed.startsWith(\"- \")) break;\n sawBlockLine = true;\n artifactLines.push(trimmed);\n }\n }\n\n return artifactLines;\n}\n\nfunction artifactUrlReferencesId(\n rawUrl: string,\n kind: ReferencedArtifactKind,\n id: string,\n): boolean {\n const reference = parseArtifactReferenceUrl(rawUrl);\n return reference?.kind === kind && reference.id === id;\n}\n\nfunction parseArtifactReferenceUrl(rawUrl: string): ReferencedArtifact | null {\n let url: URL;\n try {\n url = new URL(rawUrl, \"https://agent-native-artifact.invalid\");\n } catch {\n return null;\n }\n\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") return null;\n\n const path = url.pathname.replace(/\\/+$/, \"\");\n const deck = path.match(/(?:^|\\/)deck\\/([A-Za-z0-9_-]+)(?:\\/present)?$/);\n if (deck) return { kind: \"deck\", id: deck[1] };\n\n const design = path.match(/(?:^|\\/)design\\/([A-Za-z0-9_-]+)$/);\n if (design) return { kind: \"design\", id: design[1] };\n\n const document = path.match(/(?:^|\\/)page\\/([A-Za-z0-9_-]+)$/);\n if (document) return { kind: \"document\", id: document[1] };\n\n const dashboard = path.match(/(?:^|\\/)adhoc\\/([A-Za-z0-9_-]+)$/);\n if (dashboard) return { kind: \"dashboard\", id: dashboard[1] };\n\n const analysis = path.match(/(?:^|\\/)analyses\\/([A-Za-z0-9_-]+)$/);\n if (analysis) return { kind: \"analysis\", id: analysis[1] };\n\n const image = path.match(/(?:^|\\/)image\\/([A-Za-z0-9_-]+)$/);\n if (image) return { kind: \"image\", id: image[1] };\n\n const imageEmbed = path.match(/(?:^|\\/)asset\\/([A-Za-z0-9_-]+)\\/embed$/);\n if (imageEmbed) return { kind: \"image\", id: imageEmbed[1] };\n\n const imageContent = path.match(\n /(?:^|\\/)api\\/assets\\/([A-Za-z0-9_-]+)\\/content$/,\n );\n if (imageContent) return { kind: \"image\", id: imageContent[1] };\n\n return null;\n}\n\nfunction formatDocumentLine(\n document: CreatedDocumentArtifact,\n baseUrl: string | undefined,\n): string {\n const label = document.title ? `Document \"${document.title}\"` : \"Document\";\n return `- ${label}: ${artifactUrlFromResult({ url: document.url }, `/page/${document.id}`, baseUrl)} (ID: ${document.id})`;\n}\n\nfunction formatDeckLine(\n deck: CreatedDeckArtifact,\n baseUrl: string | undefined,\n): string {\n return `- Deck: ${artifactUrlFromResult({ url: deck.url }, `/deck/${deck.id}`, baseUrl)} (ID: ${deck.id})`;\n}\n\nfunction formatDashboardLine(\n dashboard: CreatedDashboardArtifact,\n baseUrl: string | undefined,\n): string {\n const label = dashboard.title\n ? `Dashboard \"${dashboard.title}\"`\n : \"Dashboard\";\n return `- ${label}: ${artifactUrlFromResult({ url: dashboard.url }, `/adhoc/${dashboard.id}`, baseUrl)} (ID: ${dashboard.id})`;\n}\n\nfunction formatAnalysisLine(\n analysis: CreatedAnalysisArtifact,\n baseUrl: string | undefined,\n): string {\n const label = analysis.title ? `Report \"${analysis.title}\"` : \"Report\";\n return `- ${label}: ${artifactUrlFromResult({ url: analysis.url }, `/analyses/${analysis.id}`, baseUrl)} (ID: ${analysis.id})`;\n}\n\nfunction formatImageLine(\n image: CreatedImageArtifact,\n baseUrl: string | undefined,\n): string {\n const label = image.title ? `Image \"${image.title}\"` : \"Image\";\n const run = image.runId ? `, Run: ${image.runId}` : \"\";\n return `- ${label}: ${artifactUrlFromResult({ url: image.url }, `/image/${image.id}`, baseUrl)} (ID: ${image.id}${run})`;\n}\n\nfunction formatDesignLine(\n design: GeneratedDesignArtifact,\n baseUrl: string | undefined,\n): string {\n const fileLabel =\n design.fileCount === 1 ? \"1 file\" : `${design.fileCount} files`;\n return `- Design: ${artifactUrlFromResult({ url: design.url }, `/design/${design.id}`, baseUrl)} (ID: ${design.id}, ${fileLabel})`;\n}\n\nfunction formatMonitorLine(monitor: CreatedMonitorArtifact): string {\n const label = monitor.name ? `Monitor \"${monitor.name}\"` : \"Monitor\";\n return `- ${label}: ${monitor.url} (ID: ${monitor.id})`;\n}\n\nfunction formatFormLine(form: CreatedFormArtifact): string {\n const kind = form.anonymous ? \"Anonymous form\" : \"Public form\";\n const label = form.title ? `${kind} \"${form.title}\"` : kind;\n return `- ${label}: ${form.url} (ID: ${form.id})`;\n}\n\nfunction formatIncompleteDesignMessage(shells: CreatedDesignShell[]): string {\n const ids = shells.map((shell) => shell.id).join(\", \");\n const noun = shells.length === 1 ? \"project shell\" : \"project shells\";\n return (\n `The design is not ready yet. Design ${noun} ${ids} ` +\n \"exists, but no renderable files were saved, so I cannot return it as a completed artifact.\"\n );\n}\n\nfunction collectReferencedArtifacts(\n text: string,\n baseUrl: string | undefined,\n): ReferencedArtifact[] {\n const refs = new Map<string, ReferencedArtifact>();\n const baseOrigin = safeOrigin(baseUrl);\n const artifactUrlPattern =\n /(?:(https?:\\/\\/[^/\\s<>()]+))?(?:\\/[^\\s<>()]*)?\\/(deck|design|page|adhoc|analyses|image|asset|assets)\\/([A-Za-z0-9_-]+)/g;\n\n for (const match of text.matchAll(artifactUrlPattern)) {\n const origin = safeOrigin(match[1]);\n const route = match[2];\n const id = match[3];\n const kind: ReferencedArtifactKind =\n route === \"deck\"\n ? \"deck\"\n : route === \"design\"\n ? \"design\"\n : route === \"page\"\n ? \"document\"\n : route === \"adhoc\"\n ? \"dashboard\"\n : route === \"analyses\"\n ? \"analysis\"\n : \"image\";\n if (!shouldValidateArtifactReference(origin, baseOrigin, kind)) continue;\n refs.set(`${kind}:${id}`, { kind, id });\n }\n\n return [...refs.values()];\n}\n\nfunction safeOrigin(url: string | undefined): string | undefined {\n if (!url) return undefined;\n try {\n return new URL(url).origin;\n } catch {\n return undefined;\n }\n}\n\nconst KNOWN_AGENT_NATIVE_ARTIFACT_HOSTS: Record<\n ReferencedArtifactKind,\n ReadonlySet<string>\n> = {\n deck: new Set([\"slides.agent-native.com\"]),\n design: new Set([\"design.agent-native.com\"]),\n document: new Set([\"content.agent-native.com\"]),\n dashboard: new Set([\"analytics.agent-native.com\"]),\n analysis: new Set([\"analytics.agent-native.com\"]),\n image: new Set([\"assets.agent-native.com\", \"images.agent-native.com\"]),\n};\n\nfunction safeHostnameFromOrigin(\n origin: string | undefined,\n): string | undefined {\n if (!origin) return undefined;\n try {\n return new URL(origin).hostname.toLowerCase();\n } catch {\n return undefined;\n }\n}\n\nfunction shouldValidateArtifactReference(\n origin: string | undefined,\n baseOrigin: string | undefined,\n kind: ReferencedArtifactKind,\n): boolean {\n if (!origin || !baseOrigin || origin === baseOrigin) return true;\n\n const hostname = safeHostnameFromOrigin(origin);\n return !!hostname && KNOWN_AGENT_NATIVE_ARTIFACT_HOSTS[kind].has(hostname);\n}\n\nfunction findUnverifiedArtifactReferences(\n text: string,\n baseUrl: string | undefined,\n documents: CreatedDocumentArtifact[],\n decks: CreatedDeckArtifact[],\n dashboards: CreatedDashboardArtifact[],\n analyses: CreatedAnalysisArtifact[],\n images: CreatedImageArtifact[],\n generatedDesigns: GeneratedDesignArtifact[],\n): ReferencedArtifact[] {\n const documentIds = new Set(documents.map((document) => document.id));\n const deckIds = new Set(decks.map((deck) => deck.id));\n const dashboardIds = new Set(dashboards.map((dashboard) => dashboard.id));\n const analysisIds = new Set(analyses.map((analysis) => analysis.id));\n const imageIds = new Set(images.map((image) => image.id));\n const designIds = new Set(generatedDesigns.map((design) => design.id));\n\n return collectReferencedArtifacts(text, baseUrl).filter((ref) => {\n if (ref.kind === \"document\") return !documentIds.has(ref.id);\n if (ref.kind === \"deck\") return !deckIds.has(ref.id);\n if (ref.kind === \"dashboard\") return !dashboardIds.has(ref.id);\n if (ref.kind === \"analysis\") return !analysisIds.has(ref.id);\n if (ref.kind === \"image\") return !imageIds.has(ref.id);\n return !designIds.has(ref.id);\n });\n}\n\nfunction formatUnverifiedArtifactMessage(\n refs: ReferencedArtifact[],\n documents: CreatedDocumentArtifact[],\n decks: CreatedDeckArtifact[],\n dashboards: CreatedDashboardArtifact[],\n analyses: CreatedAnalysisArtifact[],\n images: CreatedImageArtifact[],\n generatedDesigns: GeneratedDesignArtifact[],\n baseUrl: string | undefined,\n): string {\n const hasOnlyDesigns = refs.every((ref) => ref.kind === \"design\");\n const hasOnlyDocuments = refs.every((ref) => ref.kind === \"document\");\n const hasOnlyDecks = refs.every((ref) => ref.kind === \"deck\");\n const hasOnlyDashboards = refs.every((ref) => ref.kind === \"dashboard\");\n const hasOnlyAnalyses = refs.every((ref) => ref.kind === \"analysis\");\n const hasOnlyImages = refs.every((ref) => ref.kind === \"image\");\n const label = hasOnlyDesigns\n ? \"design URL\"\n : hasOnlyDocuments\n ? \"document URL\"\n : hasOnlyDecks\n ? \"deck URL\"\n : hasOnlyDashboards\n ? \"dashboard URL\"\n : hasOnlyAnalyses\n ? \"report URL\"\n : hasOnlyImages\n ? \"image URL\"\n : \"artifact URL\";\n const plural = refs.length === 1 ? label : `${label}s`;\n const message = `I could not verify the ${plural} in the final answer against a successful artifact action that saved app data, so I cannot return it.`;\n const verifiedLines = [\n ...documents.map((document) => formatDocumentLine(document, baseUrl)),\n ...decks.map((deck) => formatDeckLine(deck, baseUrl)),\n ...dashboards.map((dashboard) => formatDashboardLine(dashboard, baseUrl)),\n ...analyses.map((analysis) => formatAnalysisLine(analysis, baseUrl)),\n ...images.map((image) => formatImageLine(image, baseUrl)),\n ...generatedDesigns.map((design) => formatDesignLine(design, baseUrl)),\n ];\n\n return verifiedLines.length > 0\n ? `${message}\\n\\nArtifacts:\\n${verifiedLines.join(\"\\n\")}`\n : message;\n}\n\nexport function appendA2AArtifactLinks(\n responseText: string,\n toolResults: A2AToolResultSummary[],\n options: A2AArtifactResponseOptions = {},\n): string {\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const includeReferencedArtifacts =\n options.includeReferencedArtifacts ?? false;\n const {\n documents,\n decks,\n dashboards,\n analyses,\n images,\n designShells,\n generatedDesigns,\n monitors,\n forms,\n } = collectArtifacts(toolResults);\n const generatedDesignIds = new Set(\n generatedDesigns.map((design) => design.id),\n );\n const incompleteShells = designShells.filter(\n (shell) => !generatedDesignIds.has(shell.id),\n );\n\n let text = responseText.trim() === \"(no response)\" ? \"\" : responseText.trim();\n\n if (\n generatedDesigns.length === 0 &&\n incompleteShells.length > 0 &&\n !responseAlreadyWarnsIncompleteDesign(text) &&\n (incompleteShells.some((shell) =>\n responseMentionsDesignShell(text, shell),\n ) ||\n /\\b(?:done|created|ready|here(?:'s| is)|complete|finished)\\b/i.test(text))\n ) {\n return formatIncompleteDesignMessage(incompleteShells);\n }\n\n const unverifiedRefs = findUnverifiedArtifactReferences(\n text,\n baseUrl,\n documents,\n decks,\n dashboards,\n analyses,\n images,\n generatedDesigns,\n );\n if (unverifiedRefs.length > 0) {\n return formatUnverifiedArtifactMessage(\n unverifiedRefs,\n documents,\n decks,\n dashboards,\n analyses,\n images,\n generatedDesigns,\n baseUrl,\n );\n }\n\n const missingLines: string[] = [];\n for (const document of documents) {\n const path = `/page/${document.id}`;\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, path)\n ) {\n missingLines.push(formatDocumentLine(document, baseUrl));\n }\n }\n for (const deck of decks) {\n const path = `/deck/${deck.id}`;\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, path)\n ) {\n missingLines.push(formatDeckLine(deck, baseUrl));\n }\n }\n for (const dashboard of dashboards) {\n const path = `/adhoc/${dashboard.id}`;\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, path)\n ) {\n missingLines.push(formatDashboardLine(dashboard, baseUrl));\n }\n }\n for (const analysis of analyses) {\n const path = `/analyses/${analysis.id}`;\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, path)\n ) {\n missingLines.push(formatAnalysisLine(analysis, baseUrl));\n }\n }\n for (const image of images) {\n const path = `/image/${image.id}`;\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, path)\n ) {\n missingLines.push(formatImageLine(image, baseUrl));\n }\n }\n for (const design of generatedDesigns) {\n const path = `/design/${design.id}`;\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, path)\n ) {\n missingLines.push(formatDesignLine(design, baseUrl));\n }\n }\n for (const monitor of monitors) {\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, monitor.url)\n ) {\n missingLines.push(formatMonitorLine(monitor));\n }\n }\n for (const form of forms) {\n if (\n includeReferencedArtifacts ||\n !responseAlreadyMentionsPath(text, form.url)\n ) {\n missingLines.push(formatFormLine(form));\n }\n }\n\n if (missingLines.length === 0) return text;\n const artifactBlock = `Artifacts:\\n${missingLines.join(\"\\n\")}`;\n return text ? `${text}\\n\\n${artifactBlock}` : artifactBlock;\n}\n\nexport function buildA2ARecoverableArtifactMessage(\n toolResults: A2AToolResultSummary[],\n options: A2AArtifactResponseOptions = {},\n): string | null {\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const {\n documents,\n decks,\n dashboards,\n analyses,\n images,\n generatedDesigns,\n monitors,\n forms,\n } = collectArtifacts(toolResults);\n const lines = [\n ...documents.map((document) => formatDocumentLine(document, baseUrl)),\n ...decks.map((deck) => formatDeckLine(deck, baseUrl)),\n ...dashboards.map((dashboard) => formatDashboardLine(dashboard, baseUrl)),\n ...analyses.map((analysis) => formatAnalysisLine(analysis, baseUrl)),\n ...images.map((image) => formatImageLine(image, baseUrl)),\n ...generatedDesigns.map((design) => formatDesignLine(design, baseUrl)),\n ...monitors.map(formatMonitorLine),\n ...forms.map(formatFormLine),\n ];\n\n if (lines.length === 0) return null;\n return [\n \"The agent is still working on the full response, but these verified artifacts already exist:\",\n \"\",\n \"Artifacts:\",\n ...lines,\n ].join(\"\\n\");\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAU7B,OAAO,KASN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAYrE,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAUL,KAAK,oBAAoB,EAC1B,MAAM,iBAAiB,CAAC;AAwCzB,OAAO,EAQL,KAAK,sBAAsB,EAG5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAkC3B,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAE5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EAEL,KAAK,WAAW,EAIjB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,iCAAiC,EACjC,kCAAkC,EAClC,qCAAqC,EACrC,mCAAmC,EACnC,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAO1E,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,MAAM,CAAC;AAC9C,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,OAAO,CAAC;AACvD,MAAM,WAAW,wBAAwB;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA4HD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAGV;AASD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAS1E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,GAAG,OAAO,CAIV;AAuBD,wBAAgB,yCAAyC,CACvD,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,EAClC,IAAI,EAAE,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAkCxC;AAyBD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CA+DlB;AA2ID,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,WAAW,EAAE,CAaf;AAiPD,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,WAAW,EAAE,EACtB,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,CAAC,EAAE;IAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1C,WAAW,EAAE,CAkHf;AA0BD,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,MAAM,CASR;AAED,wBAAgB,gCAAgC,CAAC,EAC/C,SAAS,EACT,eAAe,GAChB,EAAE;IACD,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC,GAAG,oBAAoB,CAGvB;AAED,wBAAgB,gCAAgC,CAAC,EAC/C,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,kBAAkB,GACnB,EAAE;IACD,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAenD;AAED,wBAAgB,sCAAsC,CAAC,EACrD,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,EAAE;IACD,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,GAAG,MAAM,CAKT;AAeD,wBAAgB,6BAA6B,CAAC,EAC5C,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,gBAAgB,GACjB,EAAE;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,SAAS,WAAW,EAAE,CAAC;CAC1C,GAAG,OAAO,CAeV;AAqCD,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE,wBAAwB,GACjC,IAAI,CAAC;IACR,gEAAgE;IAChE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;;OAIG;IACH,sBAAsB,CACpB,IAAI,EAAE,oBAAoB,EAC1B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,IAAI,CAAC;IACR,qDAAqD;IACrD,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,wDAAwD;IACxD,yBAAyB,IAAI,IAAI,CAAC;IAClC,sFAAsF;IACtF,mBAAmB,CACjB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,mBAAmB,EACnC,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,IAAI,CAAC;IACR,6DAA6D;IAC7D,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpD,4CAA4C;IAC5C,SAAS,IAAI,OAAO,CAAC;IACrB;;;;;;OAMG;IACH,eAAe,IAAI,OAAO,CAAC;IAC3B,+BAA+B;IAC/B,aAAa,IAAI,IAAI,CAAC;IACtB,gFAAgF;IAChF,oBAAoB,IAAI,kBAAkB,GAAG,IAAI,CAAC;CACnD;AAED,MAAM,MAAM,6BAA6B,GACrC,KAAK,CAAC,SAAS,GACf,CAAC,CAAC,OAAO,EAAE;IACT,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;AAE3B,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC1C,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC3C,SAAS,EAAE;QAAE,OAAO,EAAE,eAAe,GAAG,SAAS,CAAA;KAAE,CAAC;IACpD,WAAW,EAAE;QAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QAAE,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAC;IAC1D,OAAO,EAAE,oBAAoB,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wGAAwG;IACxG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACtC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,6BAA6B,CAAC;IACnD,wFAAwF;IACxF,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;IACjD,kFAAkF;IAClF,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,8EAA8E;IAC9E,YAAY,CAAC,EAAE,CACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB,KACE,IAAI,CAAC;IACV,+DAA+D;IAC/D,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,8DAA8D;IAC9D,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2GAA2G;IAC3G,wBAAwB,CAAC,EAAE,sBAAsB,CAAC;IAClD,oDAAoD;IACpD,qBAAqB,CAAC,EAAE,0BAA0B,CAAC;IACnD,2EAA2E;IAC3E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACzC,qFAAqF;IACrF,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,+DAA+D;IAC/D,yBAAyB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5C,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8EAA8E;IAC9E,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,+FAA+F;IAC/F,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mEAAmE;IACnE,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;IACpD,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0DAA0D;IAC1D,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,uDAAuD;IACvD,eAAe,CAAC,EAAE,KAAK,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC,CAAC;IACH,uDAAuD;IACvD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,kEAAkE;IAClE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD;;;OAGG;IACH,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;IAC5D,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;IACjD;;;OAGG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,gBAAgB,CAAC;IAC3E;;;;;OAKG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IACxE,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAsDjD,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,QAI9C;AAkDD,OAAO,EACL,iBAAiB,EAElB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAs5G7B,eAAO,MAAM,aAAa,gGA2GxB,CAAC"}
@@ -25,6 +25,7 @@ import { AgentComposerFrame } from "./composer/AgentComposerFrame.js";
25
25
  import { TextAttachmentAdapter } from "./composer/attachment-accept.js";
26
26
  import { isPastedTextAttachmentName } from "./composer/pasted-text.js";
27
27
  import { PastedTextChip } from "./composer/PastedTextChip.js";
28
+ import { appendRealtimeVoiceTranscriptToRepository, realtimeVoiceTranscriptRegistry, } from "./composer/realtime-voice-transcript.js";
28
29
  import { TiptapComposer, } from "./composer/TiptapComposer.js";
29
30
  import { ContextMeter } from "./context-xray/ContextMeter.js";
30
31
  import { useAgentDynamicSuggestionsResult, } from "./dynamic-suggestions.js";
@@ -1409,6 +1410,25 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
1409
1410
  }
1410
1411
  }, [apiUrl, importThreadData, loadHistoryRepository, threadId]);
1411
1412
  const exportCleanThreadRepo = useCallback(() => ensureMessageMetadata(normalizeThreadRepository(threadRuntime.export())), [threadRuntime]);
1413
+ const appendRealtimeVoiceTranscript = useCallback((transcript) => {
1414
+ if (isRestoring || isRunning)
1415
+ return false;
1416
+ const result = appendRealtimeVoiceTranscriptToRepository(exportCleanThreadRepo(), transcript);
1417
+ if (!result.appended)
1418
+ return true;
1419
+ threadRuntime.import(ensureMessageMetadata(result.repository));
1420
+ return true;
1421
+ }, [exportCleanThreadRepo, isRestoring, isRunning, threadRuntime]);
1422
+ useEffect(() => {
1423
+ const transcriptThreadId = threadId ?? tabId;
1424
+ if (!transcriptThreadId)
1425
+ return;
1426
+ return realtimeVoiceTranscriptRegistry.register({
1427
+ threadId: transcriptThreadId,
1428
+ active: isActiveComposer,
1429
+ append: appendRealtimeVoiceTranscript,
1430
+ });
1431
+ }, [appendRealtimeVoiceTranscript, isActiveComposer, tabId, threadId]);
1412
1432
  const appendThreadMessage = useCallback((message) => {
1413
1433
  try {
1414
1434
  threadRuntime.append(message);