@athenaintel/react 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +6 -0
  2. package/dist/assets/AssetPanel.cjs +1 -1
  3. package/dist/assets/AssetPanel.cjs.map +1 -1
  4. package/dist/assets/AssetPanel.js +1 -1
  5. package/dist/assets/AssetPanel.js.map +1 -1
  6. package/dist/assets/AthenaAssetEmbed.cjs +1 -1
  7. package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
  8. package/dist/assets/AthenaAssetEmbed.js +1 -1
  9. package/dist/assets/AthenaAssetEmbed.js.map +1 -1
  10. package/dist/chat-ui/composer/run-input-rules-on-enter.cjs +14 -0
  11. package/dist/chat-ui/composer/run-input-rules-on-enter.cjs.map +1 -0
  12. package/dist/chat-ui/composer/run-input-rules-on-enter.d.ts +10 -0
  13. package/dist/chat-ui/composer/run-input-rules-on-enter.js +14 -0
  14. package/dist/chat-ui/composer/run-input-rules-on-enter.js.map +1 -0
  15. package/dist/chat-ui/composer/tiptap-composer.cjs +7 -4
  16. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
  17. package/dist/chat-ui/composer/tiptap-composer.js +7 -4
  18. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
  19. package/dist/chat-ui/markdown-storage.cjs +16 -0
  20. package/dist/chat-ui/markdown-storage.cjs.map +1 -0
  21. package/dist/chat-ui/markdown-storage.d.ts +21 -0
  22. package/dist/chat-ui/markdown-storage.js +16 -0
  23. package/dist/chat-ui/markdown-storage.js.map +1 -0
  24. package/dist/chat-ui/rich-text/chat-node-views.cjs.map +1 -1
  25. package/dist/chat-ui/rich-text/chat-node-views.js.map +1 -1
  26. package/dist/chat-ui/rich-text/chat-text-schema.cjs +15 -10
  27. package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -1
  28. package/dist/chat-ui/rich-text/chat-text-schema.js +11 -6
  29. package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -1
  30. package/dist/packages/agent-runtime/src/conversation-list.cjs +3 -0
  31. package/dist/packages/agent-runtime/src/conversation-list.cjs.map +1 -1
  32. package/dist/packages/agent-runtime/src/conversation-list.js +3 -0
  33. package/dist/packages/agent-runtime/src/conversation-list.js.map +1 -1
  34. package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs +2 -2
  35. package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
  36. package/dist/packages/agent-runtime/src/generated/runconfig-contract.js +2 -2
  37. package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
  38. package/dist/packages/agent-runtime/src/use-conversation-list.cjs +1 -0
  39. package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +1 -1
  40. package/dist/packages/agent-runtime/src/use-conversation-list.js +1 -0
  41. package/dist/packages/agent-runtime/src/use-conversation-list.js.map +1 -1
  42. package/dist/packages/react/package.json.cjs +1 -1
  43. package/dist/packages/react/package.json.js +1 -1
  44. package/dist/runtime/statewire-run-config.cjs +1 -1
  45. package/dist/runtime/statewire-run-config.cjs.map +1 -1
  46. package/dist/runtime/statewire-run-config.d.ts +1 -1
  47. package/dist/runtime/statewire-run-config.js +1 -1
  48. package/dist/runtime/statewire-run-config.js.map +1 -1
  49. package/dist/threads/use-rest-conversation-history.d.ts +1 -0
  50. package/dist/threads/use-statewire-conversation-history.d.ts +2 -0
  51. package/dist/tools/append-document-tool-ui.cjs +5 -0
  52. package/dist/tools/append-document-tool-ui.cjs.map +1 -1
  53. package/dist/tools/append-document-tool-ui.js +5 -0
  54. package/dist/tools/append-document-tool-ui.js.map +1 -1
  55. package/package.json +13 -16
@@ -1 +1 @@
1
- {"version":3,"file":"append-document-tool-ui.cjs","sources":["../../src/tools/append-document-tool-ui.tsx"],"sourcesContent":["import { memo, useMemo, useState } from \"react\";\nimport type { ToolCallMessagePartComponent } from \"@assistant-ui/react\";\nimport { useEditor, EditorContent } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Link from \"@tiptap/extension-link\";\nimport { Markdown } from \"tiptap-markdown\";\nimport {\n CheckCircle2Icon,\n ChevronDownIcon,\n FileTextIcon,\n LoaderIcon,\n AlertCircleIcon,\n NotebookPenIcon,\n} from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\nimport { getAssetInfo, tryParseJson } from \"./asset-utils\";\n\nconst markdownPreviewExtensions = [\n StarterKit.configure({\n codeBlock: {\n HTMLAttributes: {\n class: \"rounded bg-muted p-2 font-mono text-[11px]\",\n },\n },\n }),\n Link.configure({\n openOnClick: true,\n HTMLAttributes: {\n class: \"text-blue-600 underline decoration-blue-300 hover:text-blue-700\",\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n },\n }),\n Markdown.configure({\n html: false,\n tightLists: true,\n linkify: true,\n breaks: true,\n transformPastedText: false,\n transformCopiedText: false,\n }),\n];\n\nfunction MarkdownPreview({ content }: { content: string }) {\n const editor = useEditor({\n immediatelyRender: true,\n extensions: markdownPreviewExtensions,\n content,\n editable: false,\n editorProps: {\n attributes: {\n class: \"prose prose-sm max-w-none focus:outline-none\",\n },\n },\n });\n\n return <EditorContent editor={editor} />;\n}\n\nconst AppendDocumentToolUIImpl: ToolCallMessagePartComponent = ({\n args,\n result,\n status,\n}) => {\n const [expanded, setExpanded] = useState(false);\n\n const typedArgs = args as Record<string, unknown> | undefined;\n const resultData = useMemo(() => {\n if (!result) return null;\n if (typeof result === \"string\") return tryParseJson(result);\n if (typeof result === \"object\") {\n const obj = result as Record<string, unknown>;\n if (typeof obj.result === \"string\") return tryParseJson(obj.result) ?? obj;\n return obj;\n }\n return null;\n }, [result]);\n\n const assetId = (typedArgs?.asset_id as string) ?? \"\";\n const markdownText = ((typedArgs?.markdown_text ?? typedArgs?.markdownText) as string) ?? \"\";\n const asset = getAssetInfo(assetId);\n\n const isRunning = status?.type === \"running\";\n const isComplete = status?.type === \"complete\";\n const isError = status?.type === \"incomplete\";\n\n const wordCount = resultData?.word_count as number | undefined;\n const lineCount = resultData?.non_empty_line_count as number | undefined;\n const msg = resultData?.msg as string | undefined;\n const isSuccess = isComplete && (msg?.toLowerCase().includes(\"success\") ?? true);\n\n return (\n <div className=\"my-1.5 w-full overflow-hidden rounded-xl border bg-background shadow-sm\">\n {/* Header */}\n <div className=\"flex items-center gap-3 px-4 py-3\">\n <div\n className={cn(\n \"flex size-9 shrink-0 items-center justify-center rounded-lg\",\n isRunning && \"bg-blue-50 text-blue-600\",\n isComplete && isSuccess && \"bg-emerald-50 text-emerald-600\",\n isComplete && !isSuccess && \"bg-amber-50 text-amber-600\",\n isError && \"bg-red-50 text-red-500\",\n !isRunning && !isComplete && !isError && \"bg-muted text-muted-foreground\",\n )}\n >\n {isRunning ? (\n <LoaderIcon className=\"size-4 animate-spin\" />\n ) : isError ? (\n <AlertCircleIcon className=\"size-4\" />\n ) : (\n <NotebookPenIcon className=\"size-4\" />\n )}\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-[13px] font-semibold\">\n {isRunning ? \"Writing to document...\" : \"Appended content to document\"}\n </span>\n {isComplete && isSuccess && (\n <CheckCircle2Icon className=\"size-3.5 text-emerald-500\" />\n )}\n </div>\n <div className=\"flex items-center gap-1.5\">\n <FileTextIcon className=\"size-4\" />\n <span className=\"text-[12px] text-muted-foreground\">{asset.name}</span>\n </div>\n </div>\n\n {/* Stats badges */}\n {isComplete && (wordCount || lineCount) && (\n <div className=\"flex items-center gap-2\">\n {lineCount ? (\n <span className=\"rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n {lineCount} lines\n </span>\n ) : null}\n {wordCount ? (\n <span className=\"rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n {wordCount.toLocaleString()} words\n </span>\n ) : null}\n </div>\n )}\n </div>\n\n {/* Content preview */}\n {markdownText && (\n <div className=\"border-t\">\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded)}\n className=\"flex w-full items-center gap-2 px-4 py-2 text-left text-[11px] font-medium text-muted-foreground transition-colors hover:bg-muted/50\"\n >\n <ChevronDownIcon\n className={cn(\n \"size-3.5 shrink-0 transition-transform duration-200\",\n !expanded && \"-rotate-90\",\n )}\n />\n <span>{expanded ? \"Hide content\" : \"Show content preview\"}</span>\n </button>\n\n {expanded && (\n <div className=\"max-h-72 overflow-y-auto border-t bg-muted/30 px-4 py-3\">\n <MarkdownPreview content={markdownText} />\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport const AppendDocumentToolUI = memo(\n AppendDocumentToolUIImpl,\n) as unknown as ToolCallMessagePartComponent;\n\nAppendDocumentToolUI.displayName = \"AppendDocumentToolUI\";\n"],"names":["Markdown","useEditor","jsx","EditorContent","useState","useMemo","tryParseJson","getAssetInfo","jsxs","cn","LoaderIcon","AlertCircleIcon","NotebookPenIcon","CheckCircle2Icon","FileTextIcon","ChevronDownIcon","memo"],"mappings":"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"}
1
+ {"version":3,"file":"append-document-tool-ui.cjs","sources":["../../src/tools/append-document-tool-ui.tsx"],"sourcesContent":["import { memo, useMemo, useState } from \"react\";\nimport type { ToolCallMessagePartComponent } from \"@assistant-ui/react\";\nimport { useEditor, EditorContent } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Link from \"@tiptap/extension-link\";\nimport { Markdown } from \"tiptap-markdown\";\nimport {\n CheckCircle2Icon,\n ChevronDownIcon,\n FileTextIcon,\n LoaderIcon,\n AlertCircleIcon,\n NotebookPenIcon,\n} from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\nimport { getAssetInfo, tryParseJson } from \"./asset-utils\";\n\nconst markdownPreviewExtensions = [\n StarterKit.configure({\n // Tiptap 3 StarterKit also bundles these; the preview registers its own link.\n link: false,\n underline: false,\n listKeymap: false,\n trailingNode: false,\n codeBlock: {\n HTMLAttributes: {\n class: \"rounded bg-muted p-2 font-mono text-[11px]\",\n },\n },\n }),\n Link.configure({\n openOnClick: true,\n HTMLAttributes: {\n class: \"text-blue-600 underline decoration-blue-300 hover:text-blue-700\",\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n },\n }),\n Markdown.configure({\n html: false,\n tightLists: true,\n linkify: true,\n breaks: true,\n transformPastedText: false,\n transformCopiedText: false,\n }),\n];\n\nfunction MarkdownPreview({ content }: { content: string }) {\n const editor = useEditor({\n immediatelyRender: true,\n extensions: markdownPreviewExtensions,\n content,\n editable: false,\n editorProps: {\n attributes: {\n class: \"prose prose-sm max-w-none focus:outline-none\",\n },\n },\n });\n\n return <EditorContent editor={editor} />;\n}\n\nconst AppendDocumentToolUIImpl: ToolCallMessagePartComponent = ({\n args,\n result,\n status,\n}) => {\n const [expanded, setExpanded] = useState(false);\n\n const typedArgs = args as Record<string, unknown> | undefined;\n const resultData = useMemo(() => {\n if (!result) return null;\n if (typeof result === \"string\") return tryParseJson(result);\n if (typeof result === \"object\") {\n const obj = result as Record<string, unknown>;\n if (typeof obj.result === \"string\") return tryParseJson(obj.result) ?? obj;\n return obj;\n }\n return null;\n }, [result]);\n\n const assetId = (typedArgs?.asset_id as string) ?? \"\";\n const markdownText = ((typedArgs?.markdown_text ?? typedArgs?.markdownText) as string) ?? \"\";\n const asset = getAssetInfo(assetId);\n\n const isRunning = status?.type === \"running\";\n const isComplete = status?.type === \"complete\";\n const isError = status?.type === \"incomplete\";\n\n const wordCount = resultData?.word_count as number | undefined;\n const lineCount = resultData?.non_empty_line_count as number | undefined;\n const msg = resultData?.msg as string | undefined;\n const isSuccess = isComplete && (msg?.toLowerCase().includes(\"success\") ?? true);\n\n return (\n <div className=\"my-1.5 w-full overflow-hidden rounded-xl border bg-background shadow-sm\">\n {/* Header */}\n <div className=\"flex items-center gap-3 px-4 py-3\">\n <div\n className={cn(\n \"flex size-9 shrink-0 items-center justify-center rounded-lg\",\n isRunning && \"bg-blue-50 text-blue-600\",\n isComplete && isSuccess && \"bg-emerald-50 text-emerald-600\",\n isComplete && !isSuccess && \"bg-amber-50 text-amber-600\",\n isError && \"bg-red-50 text-red-500\",\n !isRunning && !isComplete && !isError && \"bg-muted text-muted-foreground\",\n )}\n >\n {isRunning ? (\n <LoaderIcon className=\"size-4 animate-spin\" />\n ) : isError ? (\n <AlertCircleIcon className=\"size-4\" />\n ) : (\n <NotebookPenIcon className=\"size-4\" />\n )}\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-[13px] font-semibold\">\n {isRunning ? \"Writing to document...\" : \"Appended content to document\"}\n </span>\n {isComplete && isSuccess && (\n <CheckCircle2Icon className=\"size-3.5 text-emerald-500\" />\n )}\n </div>\n <div className=\"flex items-center gap-1.5\">\n <FileTextIcon className=\"size-4\" />\n <span className=\"text-[12px] text-muted-foreground\">{asset.name}</span>\n </div>\n </div>\n\n {/* Stats badges */}\n {isComplete && (wordCount || lineCount) && (\n <div className=\"flex items-center gap-2\">\n {lineCount ? (\n <span className=\"rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n {lineCount} lines\n </span>\n ) : null}\n {wordCount ? (\n <span className=\"rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n {wordCount.toLocaleString()} words\n </span>\n ) : null}\n </div>\n )}\n </div>\n\n {/* Content preview */}\n {markdownText && (\n <div className=\"border-t\">\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded)}\n className=\"flex w-full items-center gap-2 px-4 py-2 text-left text-[11px] font-medium text-muted-foreground transition-colors hover:bg-muted/50\"\n >\n <ChevronDownIcon\n className={cn(\n \"size-3.5 shrink-0 transition-transform duration-200\",\n !expanded && \"-rotate-90\",\n )}\n />\n <span>{expanded ? \"Hide content\" : \"Show content preview\"}</span>\n </button>\n\n {expanded && (\n <div className=\"max-h-72 overflow-y-auto border-t bg-muted/30 px-4 py-3\">\n <MarkdownPreview content={markdownText} />\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport const AppendDocumentToolUI = memo(\n AppendDocumentToolUIImpl,\n) as unknown as ToolCallMessagePartComponent;\n\nAppendDocumentToolUI.displayName = \"AppendDocumentToolUI\";\n"],"names":["Markdown","useEditor","jsx","EditorContent","useState","useMemo","tryParseJson","getAssetInfo","jsxs","cn","LoaderIcon","AlertCircleIcon","NotebookPenIcon","CheckCircle2Icon","FileTextIcon","ChevronDownIcon","memo"],"mappings":";;;;;;;;;;;AAiBA,MAAM,4BAA4B;AAAA,EAChC,WAAW,UAAU;AAAA;AAAA,IAEnB,MAAM;AAAA,IACN,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,WAAW;AAAA,MACT,gBAAgB;AAAA,QACd,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF,CACD;AAAA,EACD,KAAK,UAAU;AAAA,IACb,aAAa;AAAA,IACb,gBAAgB;AAAA,MACd,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,KAAK;AAAA,IAAA;AAAA,EACP,CACD;AAAA,EACDA,eAAAA,SAAS,UAAU;AAAA,IACjB,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,qBAAqB;AAAA,IACrB,qBAAqB;AAAA,EAAA,CACtB;AACH;AAEA,SAAS,gBAAgB,EAAE,WAAgC;AACzD,QAAM,SAASC,QAAAA,UAAU;AAAA,IACvB,mBAAmB;AAAA,IACnB,YAAY;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,IACV,aAAa;AAAA,MACX,YAAY;AAAA,QACV,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF,CACD;AAED,SAAOC,+BAACC,QAAAA,iBAAc,QAAgB;AACxC;AAEA,MAAM,2BAAyD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,UAAU,WAAW,IAAIC,MAAAA,SAAS,KAAK;AAE9C,QAAM,YAAY;AAClB,QAAM,aAAaC,MAAAA,QAAQ,MAAM;AAC/B,QAAI,CAAC,OAAQ,QAAO;AACpB,QAAI,OAAO,WAAW,SAAU,QAAOC,WAAAA,aAAa,MAAM;AAC1D,QAAI,OAAO,WAAW,UAAU;AAC9B,YAAM,MAAM;AACZ,UAAI,OAAO,IAAI,WAAW,iBAAiBA,WAAAA,aAAa,IAAI,MAAM,KAAK;AACvE,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,WAAW,uCAAW,aAAuB;AACnD,QAAM,gBAAiB,uCAAW,mBAAiB,uCAAW,iBAA4B;AAC1F,QAAM,QAAQC,WAAAA,aAAa,OAAO;AAElC,QAAM,aAAY,iCAAQ,UAAS;AACnC,QAAM,cAAa,iCAAQ,UAAS;AACpC,QAAM,WAAU,iCAAQ,UAAS;AAEjC,QAAM,YAAY,yCAAY;AAC9B,QAAM,YAAY,yCAAY;AAC9B,QAAM,MAAM,yCAAY;AACxB,QAAM,YAAY,gBAAe,2BAAK,cAAc,SAAS,eAAc;AAE3E,SACEC,2BAAAA,KAAC,OAAA,EAAI,WAAU,2EAEb,UAAA;AAAA,IAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,MAAAN,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWO,OAAAA;AAAAA,YACT;AAAA,YACA,aAAa;AAAA,YACb,cAAc,aAAa;AAAA,YAC3B,cAAc,CAAC,aAAa;AAAA,YAC5B,WAAW;AAAA,YACX,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW;AAAA,UAAA;AAAA,UAG1C,UAAA,YACCP,2BAAAA,IAACQ,YAAAA,YAAA,EAAW,WAAU,uBAAsB,IAC1C,UACFR,2BAAAA,IAACS,YAAAA,iBAAA,EAAgB,WAAU,UAAS,IAEpCT,2BAAAA,IAACU,6BAAA,EAAgB,WAAU,SAAA,CAAS;AAAA,QAAA;AAAA,MAAA;AAAA,MAGxCJ,2BAAAA,KAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,QAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,UAAAN,+BAAC,QAAA,EAAK,WAAU,6BACb,UAAA,YAAY,2BAA2B,gCAC1C;AAAA,UACC,cAAc,aACbA,2BAAAA,IAACW,YAAAA,kBAAA,EAAiB,WAAU,4BAAA,CAA4B;AAAA,QAAA,GAE5D;AAAA,QACAL,2BAAAA,KAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,UAAAN,2BAAAA,IAACY,YAAAA,cAAA,EAAa,WAAU,SAAA,CAAS;AAAA,UACjCZ,2BAAAA,IAAC,QAAA,EAAK,WAAU,qCAAqC,gBAAM,KAAA,CAAK;AAAA,QAAA,EAAA,CAClE;AAAA,MAAA,GACF;AAAA,MAGC,eAAe,aAAa,cAC3BM,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,QAAA,YACCA,2BAAAA,KAAC,QAAA,EAAK,WAAU,mFACb,UAAA;AAAA,UAAA;AAAA,UAAU;AAAA,QAAA,EAAA,CACb,IACE;AAAA,QACH,YACCA,2BAAAA,KAAC,QAAA,EAAK,WAAU,mFACb,UAAA;AAAA,UAAA,UAAU,eAAA;AAAA,UAAiB;AAAA,QAAA,EAAA,CAC9B,IACE;AAAA,MAAA,EAAA,CACN;AAAA,IAAA,GAEJ;AAAA,IAGC,gBACCA,2BAAAA,KAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,MAAAA,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,MAAM,YAAY,CAAC,QAAQ;AAAA,UACpC,WAAU;AAAA,UAEV,UAAA;AAAA,YAAAN,2BAAAA;AAAAA,cAACa,YAAAA;AAAAA,cAAA;AAAA,gBACC,WAAWN,OAAAA;AAAAA,kBACT;AAAA,kBACA,CAAC,YAAY;AAAA,gBAAA;AAAA,cACf;AAAA,YAAA;AAAA,YAEFP,2BAAAA,IAAC,QAAA,EAAM,UAAA,WAAW,iBAAiB,uBAAA,CAAuB;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAG3D,2CACE,OAAA,EAAI,WAAU,2DACb,UAAAA,2BAAAA,IAAC,iBAAA,EAAgB,SAAS,aAAA,CAAc,EAAA,CAC1C;AAAA,IAAA,EAAA,CAEJ;AAAA,EAAA,GAEJ;AAEJ;AAEO,MAAM,uBAAuBc,MAAAA;AAAAA,EAClC;AACF;AAEA,qBAAqB,cAAc;;"}
@@ -9,6 +9,11 @@ import { tryParseJson, getAssetInfo } from "./asset-utils.js";
9
9
  import { cn } from "cnfast";
10
10
  const markdownPreviewExtensions = [
11
11
  StarterKit.configure({
12
+ // Tiptap 3 StarterKit also bundles these; the preview registers its own link.
13
+ link: false,
14
+ underline: false,
15
+ listKeymap: false,
16
+ trailingNode: false,
12
17
  codeBlock: {
13
18
  HTMLAttributes: {
14
19
  class: "rounded bg-muted p-2 font-mono text-[11px]"
@@ -1 +1 @@
1
- {"version":3,"file":"append-document-tool-ui.js","sources":["../../src/tools/append-document-tool-ui.tsx"],"sourcesContent":["import { memo, useMemo, useState } from \"react\";\nimport type { ToolCallMessagePartComponent } from \"@assistant-ui/react\";\nimport { useEditor, EditorContent } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Link from \"@tiptap/extension-link\";\nimport { Markdown } from \"tiptap-markdown\";\nimport {\n CheckCircle2Icon,\n ChevronDownIcon,\n FileTextIcon,\n LoaderIcon,\n AlertCircleIcon,\n NotebookPenIcon,\n} from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\nimport { getAssetInfo, tryParseJson } from \"./asset-utils\";\n\nconst markdownPreviewExtensions = [\n StarterKit.configure({\n codeBlock: {\n HTMLAttributes: {\n class: \"rounded bg-muted p-2 font-mono text-[11px]\",\n },\n },\n }),\n Link.configure({\n openOnClick: true,\n HTMLAttributes: {\n class: \"text-blue-600 underline decoration-blue-300 hover:text-blue-700\",\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n },\n }),\n Markdown.configure({\n html: false,\n tightLists: true,\n linkify: true,\n breaks: true,\n transformPastedText: false,\n transformCopiedText: false,\n }),\n];\n\nfunction MarkdownPreview({ content }: { content: string }) {\n const editor = useEditor({\n immediatelyRender: true,\n extensions: markdownPreviewExtensions,\n content,\n editable: false,\n editorProps: {\n attributes: {\n class: \"prose prose-sm max-w-none focus:outline-none\",\n },\n },\n });\n\n return <EditorContent editor={editor} />;\n}\n\nconst AppendDocumentToolUIImpl: ToolCallMessagePartComponent = ({\n args,\n result,\n status,\n}) => {\n const [expanded, setExpanded] = useState(false);\n\n const typedArgs = args as Record<string, unknown> | undefined;\n const resultData = useMemo(() => {\n if (!result) return null;\n if (typeof result === \"string\") return tryParseJson(result);\n if (typeof result === \"object\") {\n const obj = result as Record<string, unknown>;\n if (typeof obj.result === \"string\") return tryParseJson(obj.result) ?? obj;\n return obj;\n }\n return null;\n }, [result]);\n\n const assetId = (typedArgs?.asset_id as string) ?? \"\";\n const markdownText = ((typedArgs?.markdown_text ?? typedArgs?.markdownText) as string) ?? \"\";\n const asset = getAssetInfo(assetId);\n\n const isRunning = status?.type === \"running\";\n const isComplete = status?.type === \"complete\";\n const isError = status?.type === \"incomplete\";\n\n const wordCount = resultData?.word_count as number | undefined;\n const lineCount = resultData?.non_empty_line_count as number | undefined;\n const msg = resultData?.msg as string | undefined;\n const isSuccess = isComplete && (msg?.toLowerCase().includes(\"success\") ?? true);\n\n return (\n <div className=\"my-1.5 w-full overflow-hidden rounded-xl border bg-background shadow-sm\">\n {/* Header */}\n <div className=\"flex items-center gap-3 px-4 py-3\">\n <div\n className={cn(\n \"flex size-9 shrink-0 items-center justify-center rounded-lg\",\n isRunning && \"bg-blue-50 text-blue-600\",\n isComplete && isSuccess && \"bg-emerald-50 text-emerald-600\",\n isComplete && !isSuccess && \"bg-amber-50 text-amber-600\",\n isError && \"bg-red-50 text-red-500\",\n !isRunning && !isComplete && !isError && \"bg-muted text-muted-foreground\",\n )}\n >\n {isRunning ? (\n <LoaderIcon className=\"size-4 animate-spin\" />\n ) : isError ? (\n <AlertCircleIcon className=\"size-4\" />\n ) : (\n <NotebookPenIcon className=\"size-4\" />\n )}\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-[13px] font-semibold\">\n {isRunning ? \"Writing to document...\" : \"Appended content to document\"}\n </span>\n {isComplete && isSuccess && (\n <CheckCircle2Icon className=\"size-3.5 text-emerald-500\" />\n )}\n </div>\n <div className=\"flex items-center gap-1.5\">\n <FileTextIcon className=\"size-4\" />\n <span className=\"text-[12px] text-muted-foreground\">{asset.name}</span>\n </div>\n </div>\n\n {/* Stats badges */}\n {isComplete && (wordCount || lineCount) && (\n <div className=\"flex items-center gap-2\">\n {lineCount ? (\n <span className=\"rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n {lineCount} lines\n </span>\n ) : null}\n {wordCount ? (\n <span className=\"rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n {wordCount.toLocaleString()} words\n </span>\n ) : null}\n </div>\n )}\n </div>\n\n {/* Content preview */}\n {markdownText && (\n <div className=\"border-t\">\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded)}\n className=\"flex w-full items-center gap-2 px-4 py-2 text-left text-[11px] font-medium text-muted-foreground transition-colors hover:bg-muted/50\"\n >\n <ChevronDownIcon\n className={cn(\n \"size-3.5 shrink-0 transition-transform duration-200\",\n !expanded && \"-rotate-90\",\n )}\n />\n <span>{expanded ? \"Hide content\" : \"Show content preview\"}</span>\n </button>\n\n {expanded && (\n <div className=\"max-h-72 overflow-y-auto border-t bg-muted/30 px-4 py-3\">\n <MarkdownPreview content={markdownText} />\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport const AppendDocumentToolUI = memo(\n AppendDocumentToolUIImpl,\n) as unknown as ToolCallMessagePartComponent;\n\nAppendDocumentToolUI.displayName = \"AppendDocumentToolUI\";\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"append-document-tool-ui.js","sources":["../../src/tools/append-document-tool-ui.tsx"],"sourcesContent":["import { memo, useMemo, useState } from \"react\";\nimport type { ToolCallMessagePartComponent } from \"@assistant-ui/react\";\nimport { useEditor, EditorContent } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Link from \"@tiptap/extension-link\";\nimport { Markdown } from \"tiptap-markdown\";\nimport {\n CheckCircle2Icon,\n ChevronDownIcon,\n FileTextIcon,\n LoaderIcon,\n AlertCircleIcon,\n NotebookPenIcon,\n} from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\nimport { getAssetInfo, tryParseJson } from \"./asset-utils\";\n\nconst markdownPreviewExtensions = [\n StarterKit.configure({\n // Tiptap 3 StarterKit also bundles these; the preview registers its own link.\n link: false,\n underline: false,\n listKeymap: false,\n trailingNode: false,\n codeBlock: {\n HTMLAttributes: {\n class: \"rounded bg-muted p-2 font-mono text-[11px]\",\n },\n },\n }),\n Link.configure({\n openOnClick: true,\n HTMLAttributes: {\n class: \"text-blue-600 underline decoration-blue-300 hover:text-blue-700\",\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n },\n }),\n Markdown.configure({\n html: false,\n tightLists: true,\n linkify: true,\n breaks: true,\n transformPastedText: false,\n transformCopiedText: false,\n }),\n];\n\nfunction MarkdownPreview({ content }: { content: string }) {\n const editor = useEditor({\n immediatelyRender: true,\n extensions: markdownPreviewExtensions,\n content,\n editable: false,\n editorProps: {\n attributes: {\n class: \"prose prose-sm max-w-none focus:outline-none\",\n },\n },\n });\n\n return <EditorContent editor={editor} />;\n}\n\nconst AppendDocumentToolUIImpl: ToolCallMessagePartComponent = ({\n args,\n result,\n status,\n}) => {\n const [expanded, setExpanded] = useState(false);\n\n const typedArgs = args as Record<string, unknown> | undefined;\n const resultData = useMemo(() => {\n if (!result) return null;\n if (typeof result === \"string\") return tryParseJson(result);\n if (typeof result === \"object\") {\n const obj = result as Record<string, unknown>;\n if (typeof obj.result === \"string\") return tryParseJson(obj.result) ?? obj;\n return obj;\n }\n return null;\n }, [result]);\n\n const assetId = (typedArgs?.asset_id as string) ?? \"\";\n const markdownText = ((typedArgs?.markdown_text ?? typedArgs?.markdownText) as string) ?? \"\";\n const asset = getAssetInfo(assetId);\n\n const isRunning = status?.type === \"running\";\n const isComplete = status?.type === \"complete\";\n const isError = status?.type === \"incomplete\";\n\n const wordCount = resultData?.word_count as number | undefined;\n const lineCount = resultData?.non_empty_line_count as number | undefined;\n const msg = resultData?.msg as string | undefined;\n const isSuccess = isComplete && (msg?.toLowerCase().includes(\"success\") ?? true);\n\n return (\n <div className=\"my-1.5 w-full overflow-hidden rounded-xl border bg-background shadow-sm\">\n {/* Header */}\n <div className=\"flex items-center gap-3 px-4 py-3\">\n <div\n className={cn(\n \"flex size-9 shrink-0 items-center justify-center rounded-lg\",\n isRunning && \"bg-blue-50 text-blue-600\",\n isComplete && isSuccess && \"bg-emerald-50 text-emerald-600\",\n isComplete && !isSuccess && \"bg-amber-50 text-amber-600\",\n isError && \"bg-red-50 text-red-500\",\n !isRunning && !isComplete && !isError && \"bg-muted text-muted-foreground\",\n )}\n >\n {isRunning ? (\n <LoaderIcon className=\"size-4 animate-spin\" />\n ) : isError ? (\n <AlertCircleIcon className=\"size-4\" />\n ) : (\n <NotebookPenIcon className=\"size-4\" />\n )}\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-[13px] font-semibold\">\n {isRunning ? \"Writing to document...\" : \"Appended content to document\"}\n </span>\n {isComplete && isSuccess && (\n <CheckCircle2Icon className=\"size-3.5 text-emerald-500\" />\n )}\n </div>\n <div className=\"flex items-center gap-1.5\">\n <FileTextIcon className=\"size-4\" />\n <span className=\"text-[12px] text-muted-foreground\">{asset.name}</span>\n </div>\n </div>\n\n {/* Stats badges */}\n {isComplete && (wordCount || lineCount) && (\n <div className=\"flex items-center gap-2\">\n {lineCount ? (\n <span className=\"rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n {lineCount} lines\n </span>\n ) : null}\n {wordCount ? (\n <span className=\"rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n {wordCount.toLocaleString()} words\n </span>\n ) : null}\n </div>\n )}\n </div>\n\n {/* Content preview */}\n {markdownText && (\n <div className=\"border-t\">\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded)}\n className=\"flex w-full items-center gap-2 px-4 py-2 text-left text-[11px] font-medium text-muted-foreground transition-colors hover:bg-muted/50\"\n >\n <ChevronDownIcon\n className={cn(\n \"size-3.5 shrink-0 transition-transform duration-200\",\n !expanded && \"-rotate-90\",\n )}\n />\n <span>{expanded ? \"Hide content\" : \"Show content preview\"}</span>\n </button>\n\n {expanded && (\n <div className=\"max-h-72 overflow-y-auto border-t bg-muted/30 px-4 py-3\">\n <MarkdownPreview content={markdownText} />\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport const AppendDocumentToolUI = memo(\n AppendDocumentToolUIImpl,\n) as unknown as ToolCallMessagePartComponent;\n\nAppendDocumentToolUI.displayName = \"AppendDocumentToolUI\";\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@athenaintel/react",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "Athena React SDK — Build AI-powered chat applications with the Athena platform",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -96,21 +96,18 @@
96
96
  "@tanstack/react-query": "5.99.2",
97
97
  "@tanstack/react-store": "^0.9.1",
98
98
  "@tanstack/store": "^0.9.1",
99
- "@tiptap/core": "^2.11",
100
- "@tiptap/extension-code-block": "^2.11",
101
- "@tiptap/extension-image": "^2.11",
102
- "@tiptap/extension-task-item": "^2.11",
103
- "@tiptap/extension-task-list": "^2.11",
104
- "@tiptap/extension-link": "^2.11",
105
- "@tiptap/extension-placeholder": "^2.11",
106
- "@tiptap/extension-table": "^2.11",
107
- "@tiptap/extension-table-cell": "^2.11",
108
- "@tiptap/extension-table-header": "^2.11",
109
- "@tiptap/extension-table-row": "^2.11",
110
- "@tiptap/pm": "^2.11",
111
- "@tiptap/react": "^2.11",
112
- "@tiptap/starter-kit": "^2.11",
113
- "@tiptap/suggestion": "^2.11",
99
+ "@tiptap/core": "^3.31.3",
100
+ "@tiptap/extension-code-block": "^3.31.3",
101
+ "@tiptap/extension-image": "^3.31.3",
102
+ "@tiptap/extension-task-item": "^3.31.3",
103
+ "@tiptap/extension-task-list": "^3.31.3",
104
+ "@tiptap/extension-link": "^3.31.3",
105
+ "@tiptap/extension-placeholder": "^3.31.3",
106
+ "@tiptap/extension-table": "^3.31.3",
107
+ "@tiptap/pm": "^3.31.3",
108
+ "@tiptap/react": "^3.31.3",
109
+ "@tiptap/starter-kit": "^3.31.3",
110
+ "@tiptap/suggestion": "^3.31.3",
114
111
  "@y/websocket": "4.0.0-rc.2",
115
112
  "@y/y": "14.0.0-rc.26",
116
113
  "assistant-stream": "0.3.43",