@asteby/metacore-ai-chat 1.1.0 → 1.3.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.
- package/README.md +39 -0
- package/dist/channel-list.d.ts +19 -0
- package/dist/channel-list.d.ts.map +1 -0
- package/dist/channel-list.js +42 -0
- package/dist/channel-list.js.map +1 -0
- package/dist/channel-thread.d.ts +9 -0
- package/dist/channel-thread.d.ts.map +1 -0
- package/dist/channel-thread.js +89 -0
- package/dist/channel-thread.js.map +1 -0
- package/dist/channels.d.ts +74 -0
- package/dist/channels.d.ts.map +1 -0
- package/dist/channels.js +59 -0
- package/dist/channels.js.map +1 -0
- package/dist/chat-header.d.ts +13 -0
- package/dist/chat-header.d.ts.map +1 -0
- package/dist/chat-header.js +8 -0
- package/dist/chat-header.js.map +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1 -0
- package/dist/client.js.map +1 -1
- package/dist/composer.d.ts +7 -0
- package/dist/composer.d.ts.map +1 -0
- package/dist/composer.js +25 -0
- package/dist/composer.js.map +1 -0
- package/dist/context.d.ts +12 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +9 -2
- package/dist/context.js.map +1 -1
- package/dist/copilot-chat.d.ts +14 -1
- package/dist/copilot-chat.d.ts.map +1 -1
- package/dist/copilot-chat.js +15 -23
- package/dist/copilot-chat.js.map +1 -1
- package/dist/copilot-inbox.d.ts +24 -0
- package/dist/copilot-inbox.d.ts.map +1 -0
- package/dist/copilot-inbox.js +51 -0
- package/dist/copilot-inbox.js.map +1 -0
- package/dist/copilot-widget.d.ts +33 -1
- package/dist/copilot-widget.d.ts.map +1 -1
- package/dist/copilot-widget.js +122 -13
- package/dist/copilot-widget.js.map +1 -1
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/markdown.d.ts +23 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +82 -0
- package/dist/markdown.js.map +1 -0
- package/dist/text/normalize.d.ts +11 -0
- package/dist/text/normalize.d.ts.map +1 -0
- package/dist/text/normalize.js +32 -0
- package/dist/text/normalize.js.map +1 -0
- package/dist/text/plain-text.d.ts +3 -0
- package/dist/text/plain-text.d.ts.map +1 -0
- package/dist/text/plain-text.js +20 -0
- package/dist/text/plain-text.js.map +1 -0
- package/dist/text/tool-dump.d.ts +2 -0
- package/dist/text/tool-dump.d.ts.map +1 -0
- package/dist/text/tool-dump.js +30 -0
- package/dist/text/tool-dump.js.map +1 -0
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +14 -0
- package/dist/types.js.map +1 -1
- package/dist/use-channels.d.ts +15 -0
- package/dist/use-channels.d.ts.map +1 -0
- package/dist/use-channels.js +57 -0
- package/dist/use-channels.js.map +1 -0
- package/dist/use-chat.d.ts.map +1 -1
- package/dist/use-chat.js +1 -0
- package/dist/use-chat.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type MouseEvent } from 'react';
|
|
2
|
+
export interface MarkdownProps {
|
|
3
|
+
content: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
/** The text is still being typed in: unterminated code fences are closed virtually. */
|
|
6
|
+
streaming?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Intercept link clicks (SPA navigation for in-app links). Return `true` when
|
|
9
|
+
* handled; the browser navigation is then cancelled. Receives the raw href.
|
|
10
|
+
*/
|
|
11
|
+
onLinkClick?: (href: string, event: MouseEvent<HTMLAnchorElement>) => boolean | void;
|
|
12
|
+
/** Label of the code copy button. */
|
|
13
|
+
copyLabel?: string;
|
|
14
|
+
copiedLabel?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Safe Markdown + GFM for AI replies. No raw HTML (react-markdown drops it),
|
|
18
|
+
* dangerous URL schemes are neutralised by `defaultUrlTransform`, links open
|
|
19
|
+
* with `noopener noreferrer`, images are limited to http(s)/same-origin.
|
|
20
|
+
* Styled with theme tokens only (no typography plugin needed).
|
|
21
|
+
*/
|
|
22
|
+
export declare const Markdown: import("react").MemoExoticComponent<({ content, className, streaming, onLinkClick, copyLabel, copiedLabel }: MarkdownProps) => import("react").JSX.Element>;
|
|
23
|
+
//# sourceMappingURL=markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,UAAU,EAAkB,MAAM,OAAO,CAAA;AASvE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uFAAuF;IACvF,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,OAAO,GAAG,IAAI,CAAA;IACpF,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAiHD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,+GAAkG,aAAa,iCAalI,CAAA"}
|
package/dist/markdown.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useState } from 'react';
|
|
3
|
+
import ReactMarkdown, { defaultUrlTransform } from 'react-markdown';
|
|
4
|
+
import remarkGfm from 'remark-gfm';
|
|
5
|
+
import { Check, Copy } from 'lucide-react';
|
|
6
|
+
import { AGENT_FOCUS } from './surfaces';
|
|
7
|
+
import { closeOpenFences, normalizeMarkdown } from './text/normalize';
|
|
8
|
+
const cx = (...c) => c.filter(Boolean).join(' ');
|
|
9
|
+
function textOf(node) {
|
|
10
|
+
if (node == null || typeof node === 'boolean')
|
|
11
|
+
return '';
|
|
12
|
+
if (typeof node === 'string' || typeof node === 'number')
|
|
13
|
+
return String(node);
|
|
14
|
+
if (Array.isArray(node))
|
|
15
|
+
return node.map(textOf).join('');
|
|
16
|
+
if (typeof node === 'object' && 'props' in node)
|
|
17
|
+
return textOf(node.props.children);
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
20
|
+
function CodeBlock({ children, copyLabel, copiedLabel }) {
|
|
21
|
+
const [copied, setCopied] = useState(false);
|
|
22
|
+
const copy = async () => {
|
|
23
|
+
try {
|
|
24
|
+
await navigator.clipboard.writeText(textOf(children).replace(/\n$/, ''));
|
|
25
|
+
setCopied(true);
|
|
26
|
+
setTimeout(() => setCopied(false), 1500);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
/* clipboard unavailable (insecure context / denied) */
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
return (_jsxs("div", { className: "group relative my-2", children: [_jsx("pre", { className: "overflow-x-auto rounded-lg border border-[color:var(--border-rim,var(--border))] bg-background/50 p-3 pr-12 text-xs leading-relaxed", children: children }), _jsx("button", { type: "button", onClick: () => void copy(), "aria-label": copied ? copiedLabel : copyLabel, title: copied ? copiedLabel : copyLabel, className: cx('absolute right-1.5 top-1.5 inline-flex size-8 items-center justify-center rounded-md border bg-background/80 text-muted-foreground transition-opacity hover:text-foreground', 'opacity-100 md:opacity-0 md:group-hover:opacity-100 md:focus-visible:opacity-100', AGENT_FOCUS), children: copied ? _jsx(Check, { className: "size-3.5", "aria-hidden": true }) : _jsx(Copy, { className: "size-3.5", "aria-hidden": true }) })] }));
|
|
33
|
+
}
|
|
34
|
+
const SAFE_IMG = /^(https?:\/\/|\/(?!\/))/i;
|
|
35
|
+
function buildComponents(opts) {
|
|
36
|
+
const copyLabel = opts.copyLabel ?? 'Copiar código';
|
|
37
|
+
const copiedLabel = opts.copiedLabel ?? 'Copiado';
|
|
38
|
+
return {
|
|
39
|
+
p: (p) => _jsx("p", { className: "my-1.5 leading-relaxed first:mt-0 last:mb-0", ...strip(p) }),
|
|
40
|
+
h1: (p) => _jsx("h3", { className: "mb-1 mt-3 text-base font-semibold first:mt-0", ...strip(p) }),
|
|
41
|
+
h2: (p) => _jsx("h3", { className: "mb-1 mt-3 text-[15px] font-semibold first:mt-0", ...strip(p) }),
|
|
42
|
+
h3: (p) => _jsx("h4", { className: "mb-1 mt-2.5 text-sm font-semibold first:mt-0", ...strip(p) }),
|
|
43
|
+
h4: (p) => _jsx("h5", { className: "mb-1 mt-2 text-sm font-medium first:mt-0", ...strip(p) }),
|
|
44
|
+
h5: (p) => _jsx("h5", { className: "mb-1 mt-2 text-sm font-medium first:mt-0", ...strip(p) }),
|
|
45
|
+
h6: (p) => _jsx("h5", { className: "mb-1 mt-2 text-sm font-medium first:mt-0", ...strip(p) }),
|
|
46
|
+
ul: (p) => _jsx("ul", { className: "my-1.5 list-disc space-y-1 pl-5", ...strip(p) }),
|
|
47
|
+
ol: (p) => _jsx("ol", { className: "my-1.5 list-decimal space-y-1 pl-5", ...strip(p) }),
|
|
48
|
+
li: (p) => _jsx("li", { className: "leading-snug marker:text-muted-foreground", ...strip(p) }),
|
|
49
|
+
hr: () => _jsx("hr", { className: "my-3 border-border/60" }),
|
|
50
|
+
blockquote: (p) => (_jsx("blockquote", { className: "my-2 border-l-2 border-primary/40 pl-3 text-muted-foreground", ...strip(p) })),
|
|
51
|
+
a: ({ href, children }) => {
|
|
52
|
+
const url = href ?? '';
|
|
53
|
+
return (_jsx("a", { href: url, target: "_blank", rel: "noopener noreferrer nofollow", className: cx('text-primary underline underline-offset-2 hover:opacity-80', AGENT_FOCUS), onClick: (e) => {
|
|
54
|
+
if (opts.onLinkClick?.(url, e))
|
|
55
|
+
e.preventDefault();
|
|
56
|
+
}, children: children }));
|
|
57
|
+
},
|
|
58
|
+
img: ({ src, alt }) => typeof src === 'string' && SAFE_IMG.test(src) ? (_jsx("img", { src: src, alt: alt ?? '', loading: "lazy", referrerPolicy: "no-referrer", className: "my-2 max-w-full rounded-lg" })) : (_jsx("span", { className: "text-muted-foreground", children: alt })),
|
|
59
|
+
pre: ({ children }) => (_jsx(CodeBlock, { copyLabel: copyLabel, copiedLabel: copiedLabel, children: children })),
|
|
60
|
+
code: ({ className, children }) => /language-/.test(className ?? '') || String(children).includes('\n') ? (_jsx("code", { className: cx('font-mono', className), children: children })) : (_jsx("code", { className: "rounded bg-background/50 px-1 py-0.5 font-mono text-[0.85em]", children: children })),
|
|
61
|
+
table: ({ children }) => (_jsx("div", { className: "my-2 max-w-full overflow-x-auto rounded-lg border border-[color:var(--border-rim,var(--border))]", children: _jsx("table", { className: "w-full border-collapse text-xs", children: children }) })),
|
|
62
|
+
thead: (p) => _jsx("thead", { className: "bg-muted/60", ...strip(p) }),
|
|
63
|
+
th: (p) => _jsx("th", { className: "whitespace-nowrap border-b px-2.5 py-1.5 text-left font-semibold", ...strip(p) }),
|
|
64
|
+
td: (p) => _jsx("td", { className: "border-b border-border/40 px-2.5 py-1.5 align-top", ...strip(p) }),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** Drop react-markdown's `node` prop so it never reaches the DOM. */
|
|
68
|
+
function strip(p) {
|
|
69
|
+
const { node: _node, ...rest } = p;
|
|
70
|
+
return rest;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Safe Markdown + GFM for AI replies. No raw HTML (react-markdown drops it),
|
|
74
|
+
* dangerous URL schemes are neutralised by `defaultUrlTransform`, links open
|
|
75
|
+
* with `noopener noreferrer`, images are limited to http(s)/same-origin.
|
|
76
|
+
* Styled with theme tokens only (no typography plugin needed).
|
|
77
|
+
*/
|
|
78
|
+
export const Markdown = memo(function Markdown({ content, className, streaming, onLinkClick, copyLabel, copiedLabel }) {
|
|
79
|
+
const source = normalizeMarkdown(streaming ? closeOpenFences(content) : content);
|
|
80
|
+
return (_jsx("div", { className: cx('min-w-0 break-words text-sm', className), children: _jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], urlTransform: defaultUrlTransform, components: buildComponents({ onLinkClick, copyLabel, copiedLabel }), children: source }) }));
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model replies drift from strict GFM. Normalise them so lists and bullets
|
|
3
|
+
* render, and leaked backend tool dumps never reach the user.
|
|
4
|
+
*/
|
|
5
|
+
export declare function normalizeMarkdown(content: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Streaming-friendly: while a reply is still being typed in, an odd number of
|
|
8
|
+
* ``` fences would swallow everything after them as code. Close it virtually.
|
|
9
|
+
*/
|
|
10
|
+
export declare function closeOpenFences(text: string): string;
|
|
11
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/text/normalize.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiBzD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { scrubToolDump } from './tool-dump';
|
|
2
|
+
/**
|
|
3
|
+
* Model replies drift from strict GFM. Normalise them so lists and bullets
|
|
4
|
+
* render, and leaked backend tool dumps never reach the user.
|
|
5
|
+
*/
|
|
6
|
+
export function normalizeMarkdown(content) {
|
|
7
|
+
let s = scrubToolDump(content).replace(/\r\n/g, '\n');
|
|
8
|
+
// Drop leaked Go fmt map dumps (legacy bad fallbacks).
|
|
9
|
+
if (s.includes('map[') && (s.includes('columns:') || s.includes('map[name:'))) {
|
|
10
|
+
s = s
|
|
11
|
+
.split('\n')
|
|
12
|
+
.filter((line) => !line.includes('map[') || (!line.includes('columns:') && !line.includes('map[name:')))
|
|
13
|
+
.join('\n')
|
|
14
|
+
.trim();
|
|
15
|
+
}
|
|
16
|
+
// Line-start bullets (• ● ▪ ◦) → GFM "- "
|
|
17
|
+
s = s.replace(/^[\t ]*[•●▪◦]\s+/gm, '- ');
|
|
18
|
+
// Inline " • item" piles → one item per line
|
|
19
|
+
s = s.replace(/([^\n])\s+[•●▪◦]\s+/g, '$1\n- ');
|
|
20
|
+
// Blank line before a list so GFM parses it
|
|
21
|
+
s = s.replace(/([^\n])\n(- )/g, '$1\n\n$2');
|
|
22
|
+
return s;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Streaming-friendly: while a reply is still being typed in, an odd number of
|
|
26
|
+
* ``` fences would swallow everything after them as code. Close it virtually.
|
|
27
|
+
*/
|
|
28
|
+
export function closeOpenFences(text) {
|
|
29
|
+
const fences = text.match(/^[ \t]*```/gm)?.length ?? 0;
|
|
30
|
+
return fences % 2 === 1 ? `${text}\n\`\`\`` : text;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/text/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACrD,uDAAuD;IACvD,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAC9E,CAAC,GAAG,CAAC;aACF,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;aACvG,IAAI,CAAC,IAAI,CAAC;aACV,IAAI,EAAE,CAAA;IACX,CAAC;IACD,0CAA0C;IAC1C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAA;IACzC,6CAA6C;IAC7C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAA;IAC/C,4CAA4C;IAC5C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAA;IAC3C,OAAO,CAAC,CAAA;AACV,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC,CAAA;IACtD,OAAO,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;AACpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain-text.d.ts","sourceRoot":"","sources":["../../src/text/plain-text.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBvD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Strip markdown / noise for inbox & session list previews. */
|
|
2
|
+
export function stripMarkdownLite(input) {
|
|
3
|
+
let s = (input || '').replace(/\r\n/g, '\n');
|
|
4
|
+
s = s.replace(/```[\s\S]*?```/g, ' ');
|
|
5
|
+
s = s.replace(/`([^`]+)`/g, '$1');
|
|
6
|
+
s = s.replace(/!\[[^\]]*\]\([^)]+\)/g, ' ');
|
|
7
|
+
s = s.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1');
|
|
8
|
+
s = s.replace(/\*\*([^*]+)\*\*/g, '$1');
|
|
9
|
+
s = s.replace(/__([^_]+)__/g, '$1');
|
|
10
|
+
s = s.replace(/(^|[^*\w])\*([^*\n]+)\*(?!\*)/g, '$1$2');
|
|
11
|
+
s = s.replace(/(^|[^_\w])_([^_\n]+)_(?!_)/g, '$1$2');
|
|
12
|
+
s = s.replace(/^#{1,6}\s+/gm, '');
|
|
13
|
+
s = s.replace(/^>\s?/gm, '');
|
|
14
|
+
s = s.replace(/^[-*+]\s+/gm, '');
|
|
15
|
+
s = s.replace(/^\d+\.\s+/gm, '');
|
|
16
|
+
s = s.replace(/\n+/g, ' ');
|
|
17
|
+
s = s.replace(/\s+/g, ' ').trim();
|
|
18
|
+
return s;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=plain-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain-text.js","sourceRoot":"","sources":["../../src/text/plain-text.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAC5C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAA;IACrC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACjC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAA;IAC3C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAA;IACvC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAA;IACvD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACjC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IAC5B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IAChC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IAChC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACjC,OAAO,CAAC,CAAA;AACV,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-dump.d.ts","sourceRoot":"","sources":["../../src/text/tool-dump.ts"],"names":[],"mappings":"AAeA,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYrD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Older Aby replies (and the sidebar's last_message) can carry the backend's
|
|
3
|
+
* raw tool fallback: a query result rendered key by key —
|
|
4
|
+
*
|
|
5
|
+
* - **Count:** 1
|
|
6
|
+
* **Records:**
|
|
7
|
+
* - Almacén Uno · ALM001
|
|
8
|
+
* - **Model:** warehouses
|
|
9
|
+
*
|
|
10
|
+
* The backend now words it as prose; this keeps persisted history readable:
|
|
11
|
+
* drop the internal keys (model key, bare count, "Records:" header) and keep
|
|
12
|
+
* the record lines as a plain list.
|
|
13
|
+
*/
|
|
14
|
+
const DUMP_KEY_LINE = /^\s*(?:[-*]\s+)?\*\*(?:Count|Model|Records)\s*:?\s*\*\*\s*:?.*$/i;
|
|
15
|
+
export function scrubToolDump(content) {
|
|
16
|
+
if (!content || !/\*\*(?:Count|Model|Records)\b/i.test(content))
|
|
17
|
+
return content;
|
|
18
|
+
const out = [];
|
|
19
|
+
for (const line of content.split('\n')) {
|
|
20
|
+
if (DUMP_KEY_LINE.test(line))
|
|
21
|
+
continue;
|
|
22
|
+
// Record items were nested under "Records:" — lift them to the top level.
|
|
23
|
+
out.push(line.replace(/^\s{2,}([-*]\s)/, '$1'));
|
|
24
|
+
}
|
|
25
|
+
return out
|
|
26
|
+
.join('\n')
|
|
27
|
+
.replace(/\n{3,}/g, '\n\n')
|
|
28
|
+
.trim();
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=tool-dump.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-dump.js","sourceRoot":"","sources":["../../src/text/tool-dump.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,aAAa,GAAG,kEAAkE,CAAA;AAExF,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,CAAC,OAAO,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IAC/E,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAQ;QACtC,0EAA0E;QAC1E,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC;IACD,OAAO,GAAG;SACP,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,IAAI,EAAE,CAAA;AACX,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -35,6 +35,8 @@ export interface ChatMessage {
|
|
|
35
35
|
fresh?: boolean;
|
|
36
36
|
/** The turn failed; `content` holds the user-facing reason. */
|
|
37
37
|
error?: boolean;
|
|
38
|
+
/** The backend answered this turn from demo data (drives the demo badge). */
|
|
39
|
+
demo?: boolean;
|
|
38
40
|
}
|
|
39
41
|
export interface SendMessageInput {
|
|
40
42
|
message: string;
|
|
@@ -47,6 +49,8 @@ export interface SendMessageResult {
|
|
|
47
49
|
reply: string;
|
|
48
50
|
proposals?: ChatProposal[];
|
|
49
51
|
attachments?: ChatAttachment[];
|
|
52
|
+
/** The reply was produced from demo data; shows the demo badge. */
|
|
53
|
+
demo?: boolean;
|
|
50
54
|
}
|
|
51
55
|
export interface ChatSessionSummary {
|
|
52
56
|
id: string;
|
|
@@ -107,6 +111,22 @@ export interface CopilotLabels {
|
|
|
107
111
|
historyError: string;
|
|
108
112
|
sessions: string;
|
|
109
113
|
newSession: string;
|
|
114
|
+
/** Channel inbox (see `ChannelAdapter`). */
|
|
115
|
+
channels: string;
|
|
116
|
+
back: string;
|
|
117
|
+
expand: string;
|
|
118
|
+
collapse: string;
|
|
119
|
+
openFullscreen: string;
|
|
120
|
+
selectChannel: string;
|
|
121
|
+
noChannels: string;
|
|
122
|
+
channelsError: string;
|
|
123
|
+
messagesError: string;
|
|
124
|
+
loadingMessages: string;
|
|
125
|
+
online: string;
|
|
126
|
+
unread: string;
|
|
127
|
+
sendFailed: string;
|
|
128
|
+
/** BCP-47 locale for relative times in the channel list. */
|
|
129
|
+
locale: string;
|
|
110
130
|
}
|
|
111
131
|
export declare const DEFAULT_LABELS: CopilotLabels;
|
|
112
132
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAA;IAC5C,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAA;CAC7C;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,cAAc,EAAE,CAAA;IAC9B,SAAS,CAAC,EAAE,YAAY,EAAE,CAAA;IAC1B,qEAAqE;IACrE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -17,5 +17,19 @@ export const DEFAULT_LABELS = {
|
|
|
17
17
|
historyError: 'No se pudo cargar la conversación.',
|
|
18
18
|
sessions: 'Conversaciones',
|
|
19
19
|
newSession: 'Conversación actual',
|
|
20
|
+
channels: 'Conversaciones',
|
|
21
|
+
back: 'Volver',
|
|
22
|
+
expand: 'Ampliar a pantalla completa',
|
|
23
|
+
collapse: 'Reducir',
|
|
24
|
+
openFullscreen: 'Abrir vista completa',
|
|
25
|
+
selectChannel: 'Selecciona una conversación',
|
|
26
|
+
noChannels: 'Aún no hay conversaciones.',
|
|
27
|
+
channelsError: 'No se pudieron cargar las conversaciones.',
|
|
28
|
+
messagesError: 'No se pudieron cargar los mensajes.',
|
|
29
|
+
loadingMessages: 'Cargando mensajes',
|
|
30
|
+
online: 'En línea',
|
|
31
|
+
unread: 'sin leer',
|
|
32
|
+
sendFailed: 'No se pudo enviar el mensaje.',
|
|
33
|
+
locale: 'es',
|
|
20
34
|
};
|
|
21
35
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA2IA,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,WAAW,EAAE,qBAAqB;IAClC,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,iBAAiB;IACxB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,0CAA0C;IAClD,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,oBAAoB;IAC7B,UAAU,EAAE,mBAAmB;IAC/B,KAAK,EAAE,mDAAmD;IAC1D,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,4DAA4D;IACrE,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,qDAAqD;IAClE,YAAY,EAAE,oCAAoC;IAClD,QAAQ,EAAE,gBAAgB;IAC1B,UAAU,EAAE,qBAAqB;IACjC,QAAQ,EAAE,gBAAgB;IAC1B,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,6BAA6B;IACrC,QAAQ,EAAE,SAAS;IACnB,cAAc,EAAE,sBAAsB;IACtC,aAAa,EAAE,6BAA6B;IAC5C,UAAU,EAAE,4BAA4B;IACxC,aAAa,EAAE,2CAA2C;IAC1D,aAAa,EAAE,qCAAqC;IACpD,eAAe,EAAE,mBAAmB;IACpC,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,+BAA+B;IAC3C,MAAM,EAAE,IAAI;CACb,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ChannelAdapter, type ChatChannel } from './channels';
|
|
2
|
+
/**
|
|
3
|
+
* Channel list over the injected adapter: loads, subscribes to live events and
|
|
4
|
+
* tracks unread counts. Mount it above the widget so the FAB badge stays live
|
|
5
|
+
* while the panel is closed. A null adapter is inert.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useChannels(adapter: ChannelAdapter | null | undefined, activeId: string | null): {
|
|
8
|
+
reload: () => void;
|
|
9
|
+
clearUnread: (id: string) => void;
|
|
10
|
+
totalUnread: number;
|
|
11
|
+
channels: ChatChannel[];
|
|
12
|
+
loading: boolean;
|
|
13
|
+
error: boolean;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=use-channels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-channels.d.ts","sourceRoot":"","sources":["../src/use-channels.ts"],"names":[],"mappings":"AACA,OAAO,EAAmC,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AA0BnG;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;;sBAqCxD,MAAM;;cAjEjC,WAAW,EAAE;aACd,OAAO;WACT,OAAO;EAsEf"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { useCallback, useEffect, useMemo, useReducer, useRef } from 'react';
|
|
2
|
+
import { applyChannelEvent, sortChannels } from './channels';
|
|
3
|
+
function reducer(s, a) {
|
|
4
|
+
switch (a.type) {
|
|
5
|
+
case 'loading':
|
|
6
|
+
return { ...s, loading: true, error: false };
|
|
7
|
+
case 'loaded':
|
|
8
|
+
return { channels: sortChannels(a.channels), loading: false, error: false };
|
|
9
|
+
case 'failed':
|
|
10
|
+
return { ...s, loading: false, error: true };
|
|
11
|
+
case 'patch':
|
|
12
|
+
return { ...s, channels: a.fn(s.channels) };
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Channel list over the injected adapter: loads, subscribes to live events and
|
|
17
|
+
* tracks unread counts. Mount it above the widget so the FAB badge stays live
|
|
18
|
+
* while the panel is closed. A null adapter is inert.
|
|
19
|
+
*/
|
|
20
|
+
export function useChannels(adapter, activeId) {
|
|
21
|
+
const [state, dispatch] = useReducer(reducer, { channels: [], loading: false, error: false });
|
|
22
|
+
const activeRef = useRef(activeId);
|
|
23
|
+
activeRef.current = activeId;
|
|
24
|
+
const reload = useCallback(() => {
|
|
25
|
+
if (!adapter)
|
|
26
|
+
return;
|
|
27
|
+
dispatch({ type: 'loading' });
|
|
28
|
+
adapter.listChannels().then((channels) => dispatch({ type: 'loaded', channels }), () => dispatch({ type: 'failed' }));
|
|
29
|
+
}, [adapter]);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (!adapter)
|
|
32
|
+
return;
|
|
33
|
+
let live = true;
|
|
34
|
+
dispatch({ type: 'loading' });
|
|
35
|
+
adapter.listChannels().then((channels) => live && dispatch({ type: 'loaded', channels }), () => live && dispatch({ type: 'failed' }));
|
|
36
|
+
const off = adapter.subscribe?.((event) => {
|
|
37
|
+
if (!live)
|
|
38
|
+
return;
|
|
39
|
+
if (event.type === 'channels') {
|
|
40
|
+
reload();
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
dispatch({ type: 'patch', fn: (c) => applyChannelEvent(c, event, activeRef.current) });
|
|
44
|
+
});
|
|
45
|
+
return () => {
|
|
46
|
+
live = false;
|
|
47
|
+
off?.();
|
|
48
|
+
};
|
|
49
|
+
}, [adapter, reload]);
|
|
50
|
+
/** Clear the badge locally when a channel is opened (the adapter's `markRead` persists it). */
|
|
51
|
+
const clearUnread = useCallback((id) => {
|
|
52
|
+
dispatch({ type: 'patch', fn: (c) => c.map((x) => (x.id === id && x.unread ? { ...x, unread: 0 } : x)) });
|
|
53
|
+
}, []);
|
|
54
|
+
const totalUnread = useMemo(() => state.channels.reduce((n, c) => n + (c.unread ?? 0), 0), [state.channels]);
|
|
55
|
+
return { ...state, reload, clearUnread, totalUnread };
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=use-channels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-channels.js","sourceRoot":"","sources":["../src/use-channels.ts"],"names":[],"mappings":"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"}
|
package/dist/use-chat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chat.d.ts","sourceRoot":"","sources":["../src/use-chat.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,iEAAiE;AACjE,wBAAgB,OAAO,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI;;;iBAkCvC,MAAM,gBAAgB,cAAc,EAAE;
|
|
1
|
+
{"version":3,"file":"use-chat.d.ts","sourceRoot":"","sources":["../src/use-chat.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,iEAAiE;AACjE,wBAAgB,OAAO,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI;;;iBAkCvC,MAAM,gBAAgB,cAAc,EAAE;iBAmCxC,MAAM,WAAW,OAAO;;;;;;;;EAgCtC"}
|
package/dist/use-chat.js
CHANGED
package/dist/use-chat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chat.js","sourceRoot":"","sources":["../src/use-chat.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"use-chat.js","sourceRoot":"","sources":["../src/use-chat.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@asteby/metacore-ai-chat",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Metacore copilot chat — floating widget, chat panel, draggable FAB and an injectable chat client (HTTP, permissions, branding, suggestions)",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -42,6 +42,10 @@
|
|
|
42
42
|
"publishConfig": {
|
|
43
43
|
"access": "public"
|
|
44
44
|
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"react-markdown": "^10.1.0",
|
|
47
|
+
"remark-gfm": "^4.0.1"
|
|
48
|
+
},
|
|
45
49
|
"scripts": {
|
|
46
50
|
"build": "tsc -p tsconfig.json",
|
|
47
51
|
"dev": "tsc -w -p tsconfig.json",
|