@agent-native/core 0.107.1 → 0.107.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/corpus/core/CHANGELOG.md +6 -0
  2. package/corpus/core/package.json +1 -1
  3. package/corpus/core/src/a2a/artifact-response.ts +32 -10
  4. package/corpus/core/src/integrations/a2a-continuation-processor.ts +107 -3
  5. package/corpus/core/src/integrations/pending-tasks-store.ts +98 -1
  6. package/corpus/core/src/integrations/plugin.ts +129 -4
  7. package/corpus/core/src/integrations/webhook-handler.ts +339 -36
  8. package/corpus/core/src/server/agent-chat-plugin.ts +93 -8
  9. package/dist/a2a/artifact-response.d.ts +5 -1
  10. package/dist/a2a/artifact-response.d.ts.map +1 -1
  11. package/dist/a2a/artifact-response.js +18 -12
  12. package/dist/a2a/artifact-response.js.map +1 -1
  13. package/dist/collab/struct-routes.d.ts +1 -1
  14. package/dist/integrations/a2a-continuation-processor.js +62 -5
  15. package/dist/integrations/a2a-continuation-processor.js.map +1 -1
  16. package/dist/integrations/pending-tasks-store.d.ts +3 -0
  17. package/dist/integrations/pending-tasks-store.d.ts.map +1 -1
  18. package/dist/integrations/pending-tasks-store.js +75 -1
  19. package/dist/integrations/pending-tasks-store.js.map +1 -1
  20. package/dist/integrations/plugin.d.ts.map +1 -1
  21. package/dist/integrations/plugin.js +81 -5
  22. package/dist/integrations/plugin.js.map +1 -1
  23. package/dist/integrations/webhook-handler.d.ts +23 -2
  24. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  25. package/dist/integrations/webhook-handler.js +257 -35
  26. package/dist/integrations/webhook-handler.js.map +1 -1
  27. package/dist/notifications/routes.d.ts +2 -2
  28. package/dist/resources/handlers.d.ts +1 -1
  29. package/dist/server/agent-chat-plugin.d.ts +6 -0
  30. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  31. package/dist/server/agent-chat-plugin.js +71 -6
  32. package/dist/server/agent-chat-plugin.js.map +1 -1
  33. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  34. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-response.js","sourceRoot":"","sources":["../../src/a2a/artifact-response.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHmac, timingSafeEqual } from \"node:crypto\";\n\nexport interface A2AToolResultSummary {\n tool: string;\n result: string;\n isError?: boolean;\n completedSideEffect?: boolean;\n}\n\nexport interface A2AArtifactResponseOptions {\n baseUrl?: string;\n includeReferencedArtifacts?: boolean;\n includePersistedArtifactMarker?: boolean;\n}\n\nexport interface A2AArtifactIdentity {\n resourceType:\n | \"document\"\n | \"deck\"\n | \"dashboard\"\n | \"analysis\"\n | \"image\"\n | \"design\"\n | \"monitor\"\n | \"form\";\n id: string;\n sourceAction: string;\n titleAtAction?: string;\n url?: string;\n}\n\nconst ARTIFACT_IDENTITY_WRITE_TOOLS = new Set([\n \"save-monitor\",\n \"create-form\",\n \"submit-content-database-form\",\n \"add-database-item\",\n \"create-document\",\n \"update-document\",\n \"set-document-property\",\n \"create-deck\",\n \"duplicate-deck\",\n \"add-slide\",\n \"update-dashboard\",\n \"rename-dashboard\",\n \"save-analysis\",\n \"generate-image\",\n \"edit-image\",\n \"refine-image\",\n \"restyle-image\",\n \"save-generated-image\",\n \"save-generated-asset\",\n \"export-image\",\n \"export-asset\",\n \"generate-image-batch\",\n \"create-design\",\n \"generate-design\",\n \"create-file\",\n \"duplicate-design\",\n]);\n\nconst PERSISTED_ARTIFACT_MARKER = \"agent-native:persisted-artifacts=\";\nconst PERSISTED_ARTIFACT_MARKER_PATTERN =\n /\\s*<!--\\s*agent-native:persisted-artifacts=[A-Za-z0-9_-]+\\.[a-f0-9]{64}\\s*-->/g;\nconst ARTIFACT_RESOURCE_TYPES = new Set<A2AArtifactIdentity[\"resourceType\"]>([\n \"document\",\n \"deck\",\n \"dashboard\",\n \"analysis\",\n \"image\",\n \"design\",\n \"monitor\",\n \"form\",\n]);\n\nfunction persistedArtifactIdentitiesFromMarker(\n result: string,\n): A2AArtifactIdentity[] {\n const secret = process.env.A2A_SECRET;\n if (!secret) return [];\n const match = result.match(\n /<!--\\s*agent-native:persisted-artifacts=([A-Za-z0-9_-]+)\\.([a-f0-9]{64})\\s*-->/,\n );\n if (!match) return [];\n try {\n const payload = match[1];\n const expected = createHmac(\"sha256\", secret).update(payload).digest();\n const supplied = Buffer.from(match[2], \"hex\");\n if (\n supplied.length !== expected.length ||\n !timingSafeEqual(supplied, expected)\n ) {\n return [];\n }\n const parsed = JSON.parse(Buffer.from(payload, \"base64url\").toString());\n if (!Array.isArray(parsed)) return [];\n return parsed\n .slice(0, 12)\n .filter((identity): identity is A2AArtifactIdentity => {\n const item = asRecord(identity);\n return (\n !!item &&\n ARTIFACT_RESOURCE_TYPES.has(\n item.resourceType as A2AArtifactIdentity[\"resourceType\"],\n ) &&\n typeof item.id === \"string\" &&\n typeof item.sourceAction === \"string\"\n );\n });\n } catch {\n return [];\n }\n}\n\nfunction withPersistedArtifactMarker(\n text: string,\n toolResults: A2AToolResultSummary[],\n): string {\n const identities = extractA2AArtifactIdentities(toolResults).slice(0, 12);\n const secret = process.env.A2A_SECRET;\n if (identities.length === 0 || !secret) return text;\n const payload = Buffer.from(JSON.stringify(identities)).toString(\"base64url\");\n const signature = createHmac(\"sha256\", secret).update(payload).digest(\"hex\");\n const marker = `<!-- ${PERSISTED_ARTIFACT_MARKER}${payload}.${signature} -->`;\n return text ? `${text}\\n\\n${marker}` : marker;\n}\n\nexport function stripA2APersistedArtifactMarkers(text: string): string {\n return text.replace(PERSISTED_ARTIFACT_MARKER_PATTERN, \"\").trim();\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.isError === true || toolResult.completedSideEffect === false)\n continue;\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 if (parsed.conflict === true) continue;\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 (toolResult.tool === \"set-document-property\") {\n const id = stringValue(parsed.documentId);\n if (id) {\n documents.set(id, {\n id,\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 === \"edit-image\" ||\n toolResult.tool === \"refine-image\" ||\n toolResult.tool === \"restyle-image\" ||\n toolResult.tool === \"get-asset\" ||\n toolResult.tool === \"save-generated-image\" ||\n toolResult.tool === \"save-generated-asset\" ||\n toolResult.tool === \"export-image\"\n ) {\n addImageArtifact(images, parsed);\n continue;\n }\n\n if (toolResult.tool === \"export-asset\") {\n if (stringValue(parsed.artifactType) === \"image\") {\n addImageArtifact(images, parsed);\n }\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\n/**\n * Extract a compact, verified identity ledger from successful artifact tools.\n * The ledger deliberately excludes raw tool results so it is safe to retain in\n * long-lived thread context and stable even when a resource is later renamed.\n */\nexport function extractA2AArtifactIdentities(\n results: A2AToolResultSummary[],\n): A2AArtifactIdentity[] {\n const identities = new Map<string, A2AArtifactIdentity>();\n\n const remember = (identity: A2AArtifactIdentity) => {\n identities.set(`${identity.resourceType}:${identity.id}`, identity);\n };\n\n for (const result of results) {\n if (result.isError === true || result.completedSideEffect === false)\n continue;\n if (result.tool === \"call-agent\") {\n for (const identity of persistedArtifactIdentitiesFromMarker(\n result.result,\n )) {\n remember({ ...identity, sourceAction: \"call-agent\" });\n }\n continue;\n }\n if (!ARTIFACT_IDENTITY_WRITE_TOOLS.has(result.tool)) continue;\n const artifacts = collectArtifacts([result]);\n for (const document of artifacts.documents) {\n remember({\n resourceType: \"document\",\n id: document.id,\n sourceAction: result.tool,\n titleAtAction: document.title,\n url: document.url,\n });\n }\n for (const deck of artifacts.decks) {\n remember({\n resourceType: \"deck\",\n id: deck.id,\n sourceAction: result.tool,\n url: deck.url,\n });\n }\n for (const dashboard of artifacts.dashboards) {\n remember({\n resourceType: \"dashboard\",\n id: dashboard.id,\n sourceAction: result.tool,\n titleAtAction: dashboard.title,\n url: dashboard.url,\n });\n }\n for (const analysis of artifacts.analyses) {\n remember({\n resourceType: \"analysis\",\n id: analysis.id,\n sourceAction: result.tool,\n titleAtAction: analysis.title,\n url: analysis.url,\n });\n }\n for (const image of artifacts.images) {\n remember({\n resourceType: \"image\",\n id: image.id,\n sourceAction: result.tool,\n titleAtAction: image.title,\n url: image.url,\n });\n }\n for (const design of artifacts.designShells) {\n remember({\n resourceType: \"design\",\n id: design.id,\n sourceAction: result.tool,\n titleAtAction: design.title,\n });\n }\n for (const design of artifacts.generatedDesigns) {\n remember({\n resourceType: \"design\",\n id: design.id,\n sourceAction: result.tool,\n url: design.url,\n });\n }\n for (const monitor of artifacts.monitors) {\n remember({\n resourceType: \"monitor\",\n id: monitor.id,\n sourceAction: result.tool,\n titleAtAction: monitor.name,\n url: monitor.url,\n });\n }\n for (const form of artifacts.forms) {\n remember({\n resourceType: \"form\",\n id: form.id,\n sourceAction: result.tool,\n titleAtAction: form.title,\n url: form.url,\n });\n }\n }\n\n return [...identities.values()];\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 finalize = (value: string) =>\n options.includePersistedArtifactMarker\n ? withPersistedArtifactMarker(value, toolResults)\n : value;\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 finalize(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 finalize(\n formatUnverifiedArtifactMessage(\n unverifiedRefs,\n documents,\n decks,\n dashboards,\n analyses,\n images,\n generatedDesigns,\n baseUrl,\n ),\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) {\n return finalize(text);\n }\n const artifactBlock = `Artifacts:\\n${missingLines.join(\"\\n\")}`;\n return finalize(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\nfunction mutationReceiptUrl(\n identity: A2AArtifactIdentity,\n baseUrl: string | undefined,\n): string | undefined {\n if (\n identity.sourceAction === \"call-agent\" &&\n (!identity.url || identity.url.startsWith(\"/\"))\n ) {\n return undefined;\n }\n if (identity.url) {\n return identity.url.startsWith(\"/\")\n ? artifactUrl(baseUrl, identity.url)\n : identity.url;\n }\n\n const path =\n identity.resourceType === \"document\"\n ? `/page/${identity.id}`\n : identity.resourceType === \"deck\"\n ? `/deck/${identity.id}`\n : identity.resourceType === \"dashboard\"\n ? `/adhoc/${identity.id}`\n : identity.resourceType === \"analysis\"\n ? `/analyses/${identity.id}`\n : identity.resourceType === \"image\"\n ? `/image/${identity.id}`\n : identity.resourceType === \"design\"\n ? `/design/${identity.id}`\n : undefined;\n return path ? artifactUrl(baseUrl, path) : undefined;\n}\n\n/**\n * Build a bounded participant-facing receipt from authenticated artifact writes.\n * Unlike generic artifact recovery, this only trusts identities extracted from\n * successful write actions (or a signed downstream write ledger), so a read or\n * an unverified URL cannot be rounded up to a successful mutation.\n */\nexport function buildA2AVerifiedMutationReceipt(\n toolResults: A2AToolResultSummary[],\n options: A2AArtifactResponseOptions = {},\n): string | null {\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const identities = extractA2AArtifactIdentities(toolResults);\n if (identities.length === 0) return null;\n\n const lines = identities.map((identity) => {\n const label =\n identity.resourceType.charAt(0).toUpperCase() +\n identity.resourceType.slice(1);\n const url = mutationReceiptUrl(identity, baseUrl);\n return url\n ? `- ${label}: ${url} (ID: ${identity.id})`\n : `- ${label} ID: ${identity.id}`;\n });\n\n return [\n \"A verified change was saved, but I couldn't generate the detailed summary.\",\n \"\",\n \"Saved 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":["import { createHmac, timingSafeEqual } from \"node:crypto\";\n\nexport interface A2AToolResultSummary {\n tool: string;\n result: string;\n isError?: boolean;\n completedSideEffect?: boolean;\n}\n\nexport interface A2AArtifactResponseOptions {\n baseUrl?: string;\n includeReferencedArtifacts?: boolean;\n includePersistedArtifactMarker?: boolean;\n persistedArtifactSecret?: string;\n}\n\nexport interface A2AArtifactIdentityOptions {\n persistedArtifactSecrets?: readonly string[];\n}\n\nexport interface A2AArtifactIdentity {\n resourceType:\n | \"document\"\n | \"deck\"\n | \"dashboard\"\n | \"analysis\"\n | \"image\"\n | \"design\"\n | \"monitor\"\n | \"form\";\n id: string;\n sourceAction: string;\n titleAtAction?: string;\n url?: string;\n}\n\nconst ARTIFACT_IDENTITY_WRITE_TOOLS = new Set([\n \"save-monitor\",\n \"create-form\",\n \"submit-content-database-form\",\n \"add-database-item\",\n \"create-document\",\n \"update-document\",\n \"set-document-property\",\n \"create-deck\",\n \"duplicate-deck\",\n \"add-slide\",\n \"update-dashboard\",\n \"rename-dashboard\",\n \"save-analysis\",\n \"generate-image\",\n \"edit-image\",\n \"refine-image\",\n \"restyle-image\",\n \"save-generated-image\",\n \"save-generated-asset\",\n \"export-image\",\n \"export-asset\",\n \"generate-image-batch\",\n \"create-design\",\n \"generate-design\",\n \"create-file\",\n \"duplicate-design\",\n]);\n\nconst PERSISTED_ARTIFACT_MARKER = \"agent-native:persisted-artifacts=\";\nconst PERSISTED_ARTIFACT_MARKER_PATTERN =\n /\\s*<!--\\s*agent-native:persisted-artifacts=[A-Za-z0-9_-]+\\.[a-f0-9]{64}\\s*-->/g;\nconst ARTIFACT_RESOURCE_TYPES = new Set<A2AArtifactIdentity[\"resourceType\"]>([\n \"document\",\n \"deck\",\n \"dashboard\",\n \"analysis\",\n \"image\",\n \"design\",\n \"monitor\",\n \"form\",\n]);\n\nfunction persistedArtifactIdentitiesFromMarker(\n result: string,\n secrets: readonly string[] = process.env.A2A_SECRET\n ? [process.env.A2A_SECRET]\n : [],\n): A2AArtifactIdentity[] {\n if (secrets.length === 0) return [];\n const match = result.match(\n /<!--\\s*agent-native:persisted-artifacts=([A-Za-z0-9_-]+)\\.([a-f0-9]{64})\\s*-->/,\n );\n if (!match) return [];\n try {\n const payload = match[1];\n const supplied = Buffer.from(match[2], \"hex\");\n const verified = secrets.some((secret) => {\n const expected = createHmac(\"sha256\", secret).update(payload).digest();\n return (\n supplied.length === expected.length &&\n timingSafeEqual(supplied, expected)\n );\n });\n if (!verified) {\n return [];\n }\n const parsed = JSON.parse(Buffer.from(payload, \"base64url\").toString());\n if (!Array.isArray(parsed)) return [];\n return parsed\n .slice(0, 12)\n .filter((identity): identity is A2AArtifactIdentity => {\n const item = asRecord(identity);\n return (\n !!item &&\n ARTIFACT_RESOURCE_TYPES.has(\n item.resourceType as A2AArtifactIdentity[\"resourceType\"],\n ) &&\n typeof item.id === \"string\" &&\n typeof item.sourceAction === \"string\"\n );\n });\n } catch {\n return [];\n }\n}\n\nfunction withPersistedArtifactMarker(\n text: string,\n toolResults: A2AToolResultSummary[],\n secret = process.env.A2A_SECRET,\n): string {\n const verificationSecrets = [secret, process.env.A2A_SECRET].filter(\n (value, index, values): value is string =>\n !!value && values.indexOf(value) === index,\n );\n const identities = extractA2AArtifactIdentities(toolResults, {\n persistedArtifactSecrets: verificationSecrets,\n }).slice(0, 12);\n if (identities.length === 0 || !secret) return text;\n const payload = Buffer.from(JSON.stringify(identities)).toString(\"base64url\");\n const signature = createHmac(\"sha256\", secret).update(payload).digest(\"hex\");\n const marker = `<!-- ${PERSISTED_ARTIFACT_MARKER}${payload}.${signature} -->`;\n return text ? `${text}\\n\\n${marker}` : marker;\n}\n\nexport function stripA2APersistedArtifactMarkers(text: string): string {\n return text.replace(PERSISTED_ARTIFACT_MARKER_PATTERN, \"\").trim();\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.isError === true || toolResult.completedSideEffect === false)\n continue;\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 if (parsed.conflict === true) continue;\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 (toolResult.tool === \"set-document-property\") {\n const id = stringValue(parsed.documentId);\n if (id) {\n documents.set(id, {\n id,\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 === \"edit-image\" ||\n toolResult.tool === \"refine-image\" ||\n toolResult.tool === \"restyle-image\" ||\n toolResult.tool === \"get-asset\" ||\n toolResult.tool === \"save-generated-image\" ||\n toolResult.tool === \"save-generated-asset\" ||\n toolResult.tool === \"export-image\"\n ) {\n addImageArtifact(images, parsed);\n continue;\n }\n\n if (toolResult.tool === \"export-asset\") {\n if (stringValue(parsed.artifactType) === \"image\") {\n addImageArtifact(images, parsed);\n }\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\n/**\n * Extract a compact, verified identity ledger from successful artifact tools.\n * The ledger deliberately excludes raw tool results so it is safe to retain in\n * long-lived thread context and stable even when a resource is later renamed.\n */\nexport function extractA2AArtifactIdentities(\n results: A2AToolResultSummary[],\n options: A2AArtifactIdentityOptions = {},\n): A2AArtifactIdentity[] {\n const identities = new Map<string, A2AArtifactIdentity>();\n\n const remember = (identity: A2AArtifactIdentity) => {\n identities.set(`${identity.resourceType}:${identity.id}`, identity);\n };\n\n for (const result of results) {\n if (result.isError === true || result.completedSideEffect === false)\n continue;\n if (result.tool === \"call-agent\") {\n for (const identity of persistedArtifactIdentitiesFromMarker(\n result.result,\n options.persistedArtifactSecrets,\n )) {\n remember({ ...identity, sourceAction: \"call-agent\" });\n }\n continue;\n }\n if (!ARTIFACT_IDENTITY_WRITE_TOOLS.has(result.tool)) continue;\n const artifacts = collectArtifacts([result]);\n for (const document of artifacts.documents) {\n remember({\n resourceType: \"document\",\n id: document.id,\n sourceAction: result.tool,\n titleAtAction: document.title,\n url: document.url,\n });\n }\n for (const deck of artifacts.decks) {\n remember({\n resourceType: \"deck\",\n id: deck.id,\n sourceAction: result.tool,\n url: deck.url,\n });\n }\n for (const dashboard of artifacts.dashboards) {\n remember({\n resourceType: \"dashboard\",\n id: dashboard.id,\n sourceAction: result.tool,\n titleAtAction: dashboard.title,\n url: dashboard.url,\n });\n }\n for (const analysis of artifacts.analyses) {\n remember({\n resourceType: \"analysis\",\n id: analysis.id,\n sourceAction: result.tool,\n titleAtAction: analysis.title,\n url: analysis.url,\n });\n }\n for (const image of artifacts.images) {\n remember({\n resourceType: \"image\",\n id: image.id,\n sourceAction: result.tool,\n titleAtAction: image.title,\n url: image.url,\n });\n }\n for (const design of artifacts.designShells) {\n remember({\n resourceType: \"design\",\n id: design.id,\n sourceAction: result.tool,\n titleAtAction: design.title,\n });\n }\n for (const design of artifacts.generatedDesigns) {\n remember({\n resourceType: \"design\",\n id: design.id,\n sourceAction: result.tool,\n url: design.url,\n });\n }\n for (const monitor of artifacts.monitors) {\n remember({\n resourceType: \"monitor\",\n id: monitor.id,\n sourceAction: result.tool,\n titleAtAction: monitor.name,\n url: monitor.url,\n });\n }\n for (const form of artifacts.forms) {\n remember({\n resourceType: \"form\",\n id: form.id,\n sourceAction: result.tool,\n titleAtAction: form.title,\n url: form.url,\n });\n }\n }\n\n return [...identities.values()];\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 finalize = (value: string) =>\n options.includePersistedArtifactMarker\n ? withPersistedArtifactMarker(\n value,\n toolResults,\n options.persistedArtifactSecret ?? process.env.A2A_SECRET,\n )\n : value;\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 finalize(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 finalize(\n formatUnverifiedArtifactMessage(\n unverifiedRefs,\n documents,\n decks,\n dashboards,\n analyses,\n images,\n generatedDesigns,\n baseUrl,\n ),\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) {\n return finalize(text);\n }\n const artifactBlock = `Artifacts:\\n${missingLines.join(\"\\n\")}`;\n return finalize(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\nfunction mutationReceiptUrl(\n identity: A2AArtifactIdentity,\n baseUrl: string | undefined,\n): string | undefined {\n if (\n identity.sourceAction === \"call-agent\" &&\n (!identity.url || identity.url.startsWith(\"/\"))\n ) {\n return undefined;\n }\n if (identity.url) {\n return identity.url.startsWith(\"/\")\n ? artifactUrl(baseUrl, identity.url)\n : identity.url;\n }\n\n const path =\n identity.resourceType === \"document\"\n ? `/page/${identity.id}`\n : identity.resourceType === \"deck\"\n ? `/deck/${identity.id}`\n : identity.resourceType === \"dashboard\"\n ? `/adhoc/${identity.id}`\n : identity.resourceType === \"analysis\"\n ? `/analyses/${identity.id}`\n : identity.resourceType === \"image\"\n ? `/image/${identity.id}`\n : identity.resourceType === \"design\"\n ? `/design/${identity.id}`\n : undefined;\n return path ? artifactUrl(baseUrl, path) : undefined;\n}\n\n/**\n * Build a bounded participant-facing receipt from authenticated artifact writes.\n * Unlike generic artifact recovery, this only trusts identities extracted from\n * successful write actions (or a signed downstream write ledger), so a read or\n * an unverified URL cannot be rounded up to a successful mutation.\n */\nexport function buildA2AVerifiedMutationReceipt(\n toolResults: A2AToolResultSummary[],\n options: A2AArtifactResponseOptions = {},\n): string | null {\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const identities = extractA2AArtifactIdentities(toolResults);\n if (identities.length === 0) return null;\n\n const lines = identities.map((identity) => {\n const label =\n identity.resourceType.charAt(0).toUpperCase() +\n identity.resourceType.slice(1);\n const url = mutationReceiptUrl(identity, baseUrl);\n return url\n ? `- ${label}: ${url} (ID: ${identity.id})`\n : `- ${label} ID: ${identity.id}`;\n });\n\n return [\n \"A verified change was saved, but I couldn't generate the detailed summary.\",\n \"\",\n \"Saved artifacts:\",\n ...lines,\n ].join(\"\\n\");\n}\n"]}
@@ -13,8 +13,8 @@
13
13
  * Body: { json: any, fieldName?: string, type?: "map"|"array", requestSource?: string }
14
14
  */
15
15
  export declare const postCollabJson: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
16
- error: string;
17
16
  ok?: undefined;
17
+ error: string;
18
18
  } | {
19
19
  error?: undefined;
20
20
  ok: boolean;
@@ -103,10 +103,16 @@ async function processClaimedContinuation(continuation, options) {
103
103
  ...(auth.apiKeyFallbacks ? { fallbackApiKeys: auth.apiKeyFallbacks } : {}),
104
104
  });
105
105
  const deadline = Date.now() + PROCESSOR_WAIT_MS;
106
+ const recoverableArtifactSecrets = await resolveContinuationArtifactSecrets(continuation);
106
107
  let task = null;
108
+ let latestRecoverableArtifactText = null;
107
109
  try {
108
110
  while (Date.now() < deadline) {
109
111
  task = await client.getTask(continuation.a2aTaskId);
112
+ const recoverableArtifactText = extractVerifiedRecoverableArtifactText(task, continuation.agentUrl, recoverableArtifactSecrets);
113
+ if (recoverableArtifactText) {
114
+ latestRecoverableArtifactText = recoverableArtifactText;
115
+ }
110
116
  if (TERMINAL_STATES.has(task.status.state))
111
117
  break;
112
118
  await reportA2AContinuationProgress(continuation, progress, task);
@@ -116,6 +122,10 @@ async function processClaimedContinuation(continuation, options) {
116
122
  catch (err) {
117
123
  if (isTransientA2APollError(err)) {
118
124
  if (shouldStopPollingRemoteTask(continuation)) {
125
+ if (latestRecoverableArtifactText) {
126
+ await deliverAndCompleteA2AContinuation(continuation, adapter, formatRecoverableArtifactFallbackText(latestRecoverableArtifactText), progress);
127
+ return;
128
+ }
119
129
  await notifyAndFailA2AContinuation(continuation, adapter, remotePollFailureReason(continuation), progress);
120
130
  return;
121
131
  }
@@ -131,6 +141,10 @@ async function processClaimedContinuation(continuation, options) {
131
141
  }
132
142
  if (!task || !TERMINAL_STATES.has(task.status.state)) {
133
143
  if (shouldStopPollingRemoteTask(continuation)) {
144
+ if (latestRecoverableArtifactText) {
145
+ await deliverAndCompleteA2AContinuation(continuation, adapter, formatRecoverableArtifactFallbackText(latestRecoverableArtifactText), progress);
146
+ return;
147
+ }
134
148
  await notifyAndFailA2AContinuation(continuation, adapter, remotePollFailureReason(continuation), progress);
135
149
  return;
136
150
  }
@@ -138,6 +152,10 @@ async function processClaimedContinuation(continuation, options) {
138
152
  return;
139
153
  }
140
154
  if (task.status.state !== "completed") {
155
+ if (latestRecoverableArtifactText) {
156
+ await deliverAndCompleteA2AContinuation(continuation, adapter, formatRecoverableArtifactFallbackText(latestRecoverableArtifactText), progress);
157
+ return;
158
+ }
141
159
  const reason = extractTaskText(task) ||
142
160
  `Remote A2A task ${continuation.a2aTaskId} ended with state ${task.status.state}`;
143
161
  await notifyAndFailA2AContinuation(continuation, adapter, reason, progress);
@@ -145,6 +163,10 @@ async function processClaimedContinuation(continuation, options) {
145
163
  }
146
164
  const text = formatContinuationArtifactText(extractTaskText(task), continuation.agentUrl);
147
165
  if (!text.trim()) {
166
+ if (latestRecoverableArtifactText) {
167
+ await deliverAndCompleteA2AContinuation(continuation, adapter, formatRecoverableArtifactFallbackText(latestRecoverableArtifactText), progress);
168
+ return;
169
+ }
148
170
  await notifyAndFailA2AContinuation(continuation, adapter, `Remote A2A task ${continuation.a2aTaskId} completed without text`, progress);
149
171
  return;
150
172
  }
@@ -222,9 +244,10 @@ async function deliverAndCompleteA2AContinuation(continuation, adapter, text, pr
222
244
  const outgoing = adapter.formatAgentResponse(stripA2APersistedArtifactMarkers(text));
223
245
  const deliveryReceipt = await withTimeout(deliverA2AContinuationResponse(adapter, deliveryContinuation, outgoing, progress, "done"), PLATFORM_SEND_TIMEOUT_MS, `${deliveryContinuation.platform} response delivery timed out`);
224
246
  let persistenceError;
247
+ const artifactSecrets = await resolveContinuationArtifactSecrets(deliveryContinuation);
225
248
  for (let attempt = 0; attempt < 3; attempt += 1) {
226
249
  try {
227
- await persistA2AContinuationDelivery(deliveryContinuation, outgoing, deliveryReceipt, text);
250
+ await persistA2AContinuationDelivery(deliveryContinuation, outgoing, deliveryReceipt, text, artifactSecrets);
228
251
  persistenceError = undefined;
229
252
  break;
230
253
  }
@@ -281,7 +304,7 @@ async function deliverA2AContinuationResponse(adapter, continuation, message, pr
281
304
  }
282
305
  return receipt;
283
306
  }
284
- async function persistA2AContinuationDelivery(continuation, outgoing, receipt, artifactText) {
307
+ async function persistA2AContinuationDelivery(continuation, outgoing, receipt, artifactText, artifactSecrets) {
285
308
  const mapping = await getThreadMapping(continuation.platform, continuation.externalThreadId);
286
309
  if (!mapping)
287
310
  return;
@@ -297,9 +320,9 @@ async function persistA2AContinuationDelivery(continuation, outgoing, receipt, a
297
320
  }
298
321
  if (!Array.isArray(repo.messages))
299
322
  repo.messages = [];
300
- const artifacts = extractA2AArtifactIdentities([
301
- { tool: "call-agent", result: artifactText },
302
- ]);
323
+ const artifacts = extractA2AArtifactIdentities([{ tool: "call-agent", result: artifactText }], {
324
+ persistedArtifactSecrets: artifactSecrets,
325
+ });
303
326
  const metadata = {
304
327
  integrationDeliveryAttempted: true,
305
328
  integrationDelivery: {
@@ -479,6 +502,23 @@ async function signFreshContinuationTokens(continuation) {
479
502
  }
480
503
  return tokens;
481
504
  }
505
+ async function resolveContinuationArtifactSecrets(continuation) {
506
+ const secrets = [];
507
+ const add = (secret) => {
508
+ const value = secret?.trim();
509
+ if (value && !secrets.includes(value))
510
+ secrets.push(value);
511
+ };
512
+ add(process.env.A2A_SECRET);
513
+ if (continuation.orgId) {
514
+ try {
515
+ const { getOrgA2ASecret } = await import("../org/context.js");
516
+ add(await getOrgA2ASecret(continuation.orgId));
517
+ }
518
+ catch { }
519
+ }
520
+ return secrets;
521
+ }
482
522
  function isLikelyJwt(token) {
483
523
  return token.split(".").length === 3;
484
524
  }
@@ -491,6 +531,23 @@ function extractTaskText(task) {
491
531
  .map((part) => part.text)
492
532
  .join("\n");
493
533
  }
534
+ function extractVerifiedRecoverableArtifactText(task, agentUrl, artifactSecrets) {
535
+ if (task.status.message?.metadata?.agentNativeRecoverableArtifacts !== true) {
536
+ return null;
537
+ }
538
+ const text = formatContinuationArtifactText(extractTaskText(task), agentUrl);
539
+ if (!text.trim())
540
+ return null;
541
+ // Require the signed identity ledger so arbitrary peer progress prose cannot
542
+ // prematurely complete the continuation.
543
+ const artifacts = extractA2AArtifactIdentities([{ tool: "call-agent", result: text }], {
544
+ persistedArtifactSecrets: artifactSecrets,
545
+ });
546
+ return artifacts.length > 0 ? text : null;
547
+ }
548
+ function formatRecoverableArtifactFallbackText(text) {
549
+ return text.replace("The agent is still working on the full response, but these verified artifacts already exist:", "The downstream agent did not finish its full response, but these verified artifacts already exist:");
550
+ }
494
551
  function formatContinuationArtifactText(text, agentUrl) {
495
552
  const expandedText = expandRelativeUrls(text, agentUrl);
496
553
  return appendA2AArtifactLinks(expandedText, [{ tool: "call-agent", result: expandedText }], { baseUrl: resolveArtifactBaseUrl() });