@mastra/playground-ui 67.0.0 → 68.0.0-alpha.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/dist/KnowledgePageGraph.css +11 -0
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +2 -2
- package/dist/components/ai/tool-call.es.js +2 -2
- package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
- package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
- package/dist/domains/chat/activity/model/activity-words.cjs.js +2 -2
- package/dist/domains/chat/activity/model/activity-words.es.js +2 -2
- package/dist/domains/chat/knowledge/knowledge-links.cjs.js +40 -0
- package/dist/domains/chat/knowledge/knowledge-links.cjs.js.map +1 -0
- package/dist/domains/chat/knowledge/knowledge-links.d.ts +1 -0
- package/dist/domains/chat/knowledge/knowledge-links.es.js +38 -0
- package/dist/domains/chat/knowledge/knowledge-links.es.js.map +1 -0
- package/dist/domains/chat/knowledge/pinned-knowledge-data.cjs.js +79 -0
- package/dist/domains/chat/knowledge/pinned-knowledge-data.cjs.js.map +1 -0
- package/dist/domains/chat/knowledge/pinned-knowledge-data.d.ts +1 -0
- package/dist/domains/chat/knowledge/pinned-knowledge-data.es.js +77 -0
- package/dist/domains/chat/knowledge/pinned-knowledge-data.es.js.map +1 -0
- package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js +124 -0
- package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js.map +1 -0
- package/dist/domains/chat/knowledge/pinned-knowledge.d.ts +1 -0
- package/dist/domains/chat/knowledge/pinned-knowledge.es.js +123 -0
- package/dist/domains/chat/knowledge/pinned-knowledge.es.js.map +1 -0
- package/dist/domains/chat/knowledge.cjs.js +12 -0
- package/dist/domains/chat/knowledge.d.ts +1 -0
- package/dist/domains/chat/knowledge.es.js +5 -0
- package/dist/domains/chat/messages/message-row.cjs.js +2 -2
- package/dist/domains/chat/messages/message-row.es.js +2 -2
- package/dist/domains/chat/messages/signal-badge.cjs.js +7 -0
- package/dist/domains/chat/messages/signal-badge.cjs.js.map +1 -1
- package/dist/domains/chat/messages/signal-badge.es.js +7 -0
- package/dist/domains/chat/messages/signal-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js +273 -0
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js.map +1 -0
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.d.ts +1 -0
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js +270 -0
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js.map +1 -0
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js +3 -3
- package/dist/domains/chat/tools/badges/tool-badge.es.js +3 -3
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +2 -2
- package/dist/domains/chat/tools/tool-card-kind.cjs.js +4 -2
- package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
- package/dist/domains/chat/tools/tool-card-kind.es.js +4 -2
- package/dist/domains/chat/tools/tool-card-kind.es.js.map +1 -1
- package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/chat/tools/tool-groups.cjs.js +3 -2
- package/dist/domains/chat/tools/tool-groups.cjs.js.map +1 -1
- package/dist/domains/chat/tools/tool-groups.es.js +3 -2
- package/dist/domains/chat/tools/tool-groups.es.js.map +1 -1
- package/dist/domains/chat.cjs.js +11 -0
- package/dist/domains/chat.es.js +5 -1
- package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js +438 -0
- package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageDetail.d.ts +1 -0
- package/dist/domains/knowledge/components/KnowledgePageDetail.es.js +436 -0
- package/dist/domains/knowledge/components/KnowledgePageDetail.es.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js +521 -0
- package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageExplorer.d.ts +1 -0
- package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js +520 -0
- package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js +626 -0
- package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageGraph.d.ts +1 -0
- package/dist/domains/knowledge/components/KnowledgePageGraph.es.js +625 -0
- package/dist/domains/knowledge/components/KnowledgePageGraph.es.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js +170 -0
- package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageTree.d.ts +1 -0
- package/dist/domains/knowledge/components/KnowledgePageTree.es.js +168 -0
- package/dist/domains/knowledge/components/KnowledgePageTree.es.js.map +1 -0
- package/dist/domains/knowledge/hooks/useInteractionIdle.cjs.js +37 -0
- package/dist/domains/knowledge/hooks/useInteractionIdle.cjs.js.map +1 -0
- package/dist/domains/knowledge/hooks/useInteractionIdle.d.ts +1 -0
- package/dist/domains/knowledge/hooks/useInteractionIdle.es.js +35 -0
- package/dist/domains/knowledge/hooks/useInteractionIdle.es.js.map +1 -0
- package/dist/domains/knowledge/lib/layout.cjs.js +93 -0
- package/dist/domains/knowledge/lib/layout.cjs.js.map +1 -0
- package/dist/domains/knowledge/lib/layout.d.ts +1 -0
- package/dist/domains/knowledge/lib/layout.es.js +92 -0
- package/dist/domains/knowledge/lib/layout.es.js.map +1 -0
- package/dist/domains/knowledge/lib/pageGraph.cjs.js +135 -0
- package/dist/domains/knowledge/lib/pageGraph.cjs.js.map +1 -0
- package/dist/domains/knowledge/lib/pageGraph.d.ts +1 -0
- package/dist/domains/knowledge/lib/pageGraph.es.js +128 -0
- package/dist/domains/knowledge/lib/pageGraph.es.js.map +1 -0
- package/dist/domains/knowledge/lib/pageLayout.cjs.js +49 -0
- package/dist/domains/knowledge/lib/pageLayout.cjs.js.map +1 -0
- package/dist/domains/knowledge/lib/pageLayout.d.ts +1 -0
- package/dist/domains/knowledge/lib/pageLayout.es.js +48 -0
- package/dist/domains/knowledge/lib/pageLayout.es.js.map +1 -0
- package/dist/domains/knowledge/lib/pageTree.cjs.js +98 -0
- package/dist/domains/knowledge/lib/pageTree.cjs.js.map +1 -0
- package/dist/domains/knowledge/lib/pageTree.d.ts +1 -0
- package/dist/domains/knowledge/lib/pageTree.es.js +94 -0
- package/dist/domains/knowledge/lib/pageTree.es.js.map +1 -0
- package/dist/domains/knowledge/lib/popupPlacement.cjs.js +22 -0
- package/dist/domains/knowledge/lib/popupPlacement.cjs.js.map +1 -0
- package/dist/domains/knowledge/lib/popupPlacement.d.ts +1 -0
- package/dist/domains/knowledge/lib/popupPlacement.es.js +21 -0
- package/dist/domains/knowledge/lib/popupPlacement.es.js.map +1 -0
- package/dist/domains/knowledge/lib/recordText.cjs.js +26 -0
- package/dist/domains/knowledge/lib/recordText.cjs.js.map +1 -0
- package/dist/domains/knowledge/lib/recordText.d.ts +1 -0
- package/dist/domains/knowledge/lib/recordText.es.js +25 -0
- package/dist/domains/knowledge/lib/recordText.es.js.map +1 -0
- package/dist/domains/knowledge/pageTypes.cjs.js +0 -0
- package/dist/domains/knowledge/pageTypes.d.ts +1 -0
- package/dist/domains/knowledge/pageTypes.es.js +0 -0
- package/dist/domains/logs/components/logs-saved-views.cjs.js +1 -1
- package/dist/domains/logs/components/logs-saved-views.es.js +1 -1
- package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +1 -1
- package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -1
- package/dist/domains/observability/saved-views/saved-views-provider.cjs.js +3 -2
- package/dist/domains/observability/saved-views/saved-views-provider.cjs.js.map +1 -1
- package/dist/domains/observability/saved-views/saved-views-provider.es.js +3 -2
- package/dist/domains/observability/saved-views/saved-views-provider.es.js.map +1 -1
- package/dist/domains/observability/saved-views/saved-views-source.cjs.js.map +1 -1
- package/dist/domains/observability/saved-views/saved-views-source.es.js.map +1 -1
- package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +3 -2
- package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js.map +1 -1
- package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +3 -2
- package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js.map +1 -1
- package/dist/domains/observability/saved-views.cjs.js +1 -1
- package/dist/domains/observability/saved-views.es.js +1 -1
- package/dist/domains/observability.cjs.js +1 -1
- package/dist/domains/observability.es.js +1 -1
- package/dist/domains/skills/skill-simple-form.cjs.js +2 -2
- package/dist/domains/skills/skill-simple-form.cjs.js.map +1 -1
- package/dist/domains/skills/skill-simple-form.es.js +2 -2
- package/dist/domains/skills/skill-simple-form.es.js.map +1 -1
- package/dist/domains/spans/components/spans-explorer-body.cjs.js +1 -1
- package/dist/domains/spans/components/spans-explorer-body.es.js +1 -1
- package/dist/domains/threads/components/threads-explorer-body.cjs.js +1 -1
- package/dist/domains/threads/components/threads-explorer-body.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +1 -1
- package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js +2 -1
- package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/use-workflow-trigger.es.js +2 -1
- package/dist/domains/workflows/workflow/use-workflow-trigger.es.js.map +1 -1
- package/dist/lib/form/dynamic-form.cjs.js +2 -2
- package/dist/lib/form/dynamic-form.cjs.js.map +1 -1
- package/dist/lib/form/dynamic-form.es.js +2 -2
- package/dist/lib/form/dynamic-form.es.js.map +1 -1
- package/dist/lib/form/json-draft.cjs.js +1 -1
- package/dist/lib/form/json-draft.es.js +1 -1
- package/dist/lib/form/zod-provider/compat.cjs.js +8 -0
- package/dist/lib/form/zod-provider/compat.cjs.js.map +1 -1
- package/dist/lib/form/zod-provider/compat.es.js +8 -1
- package/dist/lib/form/zod-provider/compat.es.js.map +1 -1
- package/dist/lib/form/zod-provider.cjs.js +1 -1
- package/dist/lib/form/zod-provider.es.js +1 -1
- package/dist/{observability-saved-views-CwCii7hh.cjs → observability-saved-views-BNU3GkK6.cjs} +8 -6
- package/dist/observability-saved-views-BNU3GkK6.cjs.map +1 -0
- package/dist/{observability-saved-views-Bo5kLN20.js → observability-saved-views-Zlz74syw.js} +8 -6
- package/dist/observability-saved-views-Zlz74syw.js.map +1 -0
- package/dist/{span-payload-primitives-Dyhbqaa7.js → span-payload-primitives-ChvD2RrN.js} +2 -2
- package/dist/{span-payload-primitives-Dyhbqaa7.js.map → span-payload-primitives-ChvD2RrN.js.map} +1 -1
- package/dist/{span-payload-primitives-B10Xxmx7.cjs → span-payload-primitives-w1vtAXAw.cjs} +2 -2
- package/dist/{span-payload-primitives-B10Xxmx7.cjs.map → span-payload-primitives-w1vtAXAw.cjs.map} +1 -1
- package/dist/src/domains/chat/index.d.ts +1 -0
- package/dist/src/domains/chat/knowledge/index.d.ts +5 -0
- package/dist/src/domains/chat/knowledge/knowledge-links.d.ts +21 -0
- package/dist/src/domains/chat/knowledge/pinned-knowledge-data.d.ts +22 -0
- package/dist/src/domains/chat/knowledge/pinned-knowledge.d.ts +9 -0
- package/dist/src/domains/chat/tools/badges/knowledge-tool-badge.d.ts +19 -0
- package/dist/src/domains/chat/tools/tool-card-kind.d.ts +2 -2
- package/dist/src/domains/knowledge/components/KnowledgePageDetail.d.ts +42 -0
- package/dist/src/domains/knowledge/components/KnowledgePageExplorer.d.ts +80 -0
- package/dist/src/domains/knowledge/components/KnowledgePageGraph.d.ts +35 -0
- package/dist/src/domains/knowledge/components/KnowledgePageTree.d.ts +27 -0
- package/dist/src/domains/knowledge/hooks/useInteractionIdle.d.ts +12 -0
- package/dist/src/domains/knowledge/lib/layout.d.ts +35 -0
- package/dist/src/domains/knowledge/lib/pageGraph.d.ts +45 -0
- package/dist/src/domains/knowledge/lib/pageLayout.d.ts +24 -0
- package/dist/src/domains/knowledge/lib/pageTree.d.ts +28 -0
- package/dist/src/domains/knowledge/lib/popupPlacement.d.ts +12 -0
- package/dist/src/domains/knowledge/lib/recordText.d.ts +9 -0
- package/dist/src/domains/knowledge/pageTypes.d.ts +96 -0
- package/dist/src/domains/observability/saved-views/saved-views-provider.d.ts +6 -1
- package/dist/src/domains/observability/saved-views/saved-views-source.d.ts +1 -0
- package/dist/src/domains/observability/saved-views/use-hosted-saved-views.d.ts +1 -1
- package/dist/src/domains/skills/skill-simple-form.d.ts +3 -1
- package/dist/src/ds/components/SavedViews/saved-view-picker.d.ts +3 -1
- package/dist/src/ds/components/ai/tool-call/tool-phrases.d.ts +30 -0
- package/dist/src/lib/form/zod-provider/compat.d.ts +5 -0
- package/dist/style.css +63 -1
- package/dist/{tool-approval-FeuyUUcL.js → tool-approval-DHeCkWHT.js} +3 -3
- package/dist/{tool-approval-FeuyUUcL.js.map → tool-approval-DHeCkWHT.js.map} +1 -1
- package/dist/{tool-approval-BfjoSNOC.cjs → tool-approval-Dfi0uAKU.cjs} +3 -3
- package/dist/{tool-approval-BfjoSNOC.cjs.map → tool-approval-Dfi0uAKU.cjs.map} +1 -1
- package/dist/{tool-call-CvilN9ti.cjs → tool-call-BCsDhIhs.cjs} +32 -2
- package/dist/{tool-call-CvilN9ti.cjs.map → tool-call-BCsDhIhs.cjs.map} +1 -1
- package/dist/{tool-call-BxYXs9w0.js → tool-call-CILZa3tn.js} +32 -2
- package/dist/{tool-call-BxYXs9w0.js.map → tool-call-CILZa3tn.js.map} +1 -1
- package/dist/{tool-card-ELW898uw.js → tool-card-C3sDFUWc.js} +18 -4
- package/dist/tool-card-C3sDFUWc.js.map +1 -0
- package/dist/{tool-card-B7O8AsRl.cjs → tool-card-CJ7Kxi-U.cjs} +18 -4
- package/dist/tool-card-CJ7Kxi-U.cjs.map +1 -0
- package/dist/{tool-presentation-BLErsb7c.cjs → tool-presentation-CQlDEwgS.cjs} +26 -1
- package/dist/tool-presentation-CQlDEwgS.cjs.map +1 -0
- package/dist/{tool-presentation-BSZYIWx2.js → tool-presentation-DvCsb_kz.js} +26 -1
- package/dist/tool-presentation-DvCsb_kz.js.map +1 -0
- package/package.json +11 -9
- package/dist/observability-saved-views-Bo5kLN20.js.map +0 -1
- package/dist/observability-saved-views-CwCii7hh.cjs.map +0 -1
- package/dist/tool-card-B7O8AsRl.cjs.map +0 -1
- package/dist/tool-card-ELW898uw.js.map +0 -1
- package/dist/tool-presentation-BLErsb7c.cjs.map +0 -1
- package/dist/tool-presentation-BSZYIWx2.js.map +0 -1
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { t as Txt } from "../../../../Txt-BM6TVV_c.js";
|
|
2
|
+
import { t as MarkdownRenderer } from "../../../../MarkdownRenderer-DME2xKTk.js";
|
|
3
|
+
import { isRecord } from "../../messages/signal-data.es.js";
|
|
4
|
+
import { KnowledgePageLink } from "../../knowledge/knowledge-links.es.js";
|
|
5
|
+
import { ToolApprovalBadge } from "./tool-approval-badge.es.js";
|
|
6
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { BookOpen } from "lucide-react";
|
|
8
|
+
// src/domains/chat/tools/badges/knowledge-tool-badge.tsx
|
|
9
|
+
/** The tools `Knowledge.createTools()` gives an agent. */
|
|
10
|
+
var KNOWLEDGE_TOOLS = /* @__PURE__ */ new Set([
|
|
11
|
+
"knowledge_search",
|
|
12
|
+
"knowledge_read",
|
|
13
|
+
"knowledge_page",
|
|
14
|
+
"knowledge_note",
|
|
15
|
+
"knowledge_pin"
|
|
16
|
+
]);
|
|
17
|
+
var str = (value) => typeof value === "string" && value ? value : void 0;
|
|
18
|
+
function asPage(value) {
|
|
19
|
+
if (!isRecord(value) || !str(value.id) || typeof value.name !== "string") return void 0;
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
function asNotes(value) {
|
|
23
|
+
return Array.isArray(value) ? value.filter((note) => isRecord(note) && typeof note.text === "string") : [];
|
|
24
|
+
}
|
|
25
|
+
var where = (page) => page.address ?? page.scope;
|
|
26
|
+
function PageLink({ page }) {
|
|
27
|
+
return /* @__PURE__ */ jsx(KnowledgePageLink, {
|
|
28
|
+
pageId: page.id,
|
|
29
|
+
children: page.name
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function Meta({ children }) {
|
|
33
|
+
return /* @__PURE__ */ jsx(Txt, {
|
|
34
|
+
as: "span",
|
|
35
|
+
variant: "meta",
|
|
36
|
+
tone: "muted",
|
|
37
|
+
className: "truncate",
|
|
38
|
+
children
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function PageLine({ page, linked = true }) {
|
|
42
|
+
const scope = where(page);
|
|
43
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
44
|
+
className: "flex min-w-0 items-baseline gap-2",
|
|
45
|
+
children: [/* @__PURE__ */ jsx(Txt, {
|
|
46
|
+
as: "span",
|
|
47
|
+
variant: "label",
|
|
48
|
+
children: linked ? /* @__PURE__ */ jsx(PageLink, { page }) : page.name
|
|
49
|
+
}), scope ? /* @__PURE__ */ jsx(Meta, { children: page.key ? `${scope}#${page.key}` : scope }) : null]
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function Body({ markdown }) {
|
|
53
|
+
return /* @__PURE__ */ jsx("div", {
|
|
54
|
+
className: "border-border1 max-h-64 overflow-auto rounded-md border p-2",
|
|
55
|
+
"data-testid": "knowledge-tool-body",
|
|
56
|
+
children: /* @__PURE__ */ jsx(MarkdownRenderer, { children: markdown })
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
var MENTION = /\[\[([^\]]+)\]\]/g;
|
|
60
|
+
/** A note's text with each resolved `[[Page Name]]` linking to its page; unresolved names stay plain. */
|
|
61
|
+
function NoteText({ note }) {
|
|
62
|
+
const parts = [];
|
|
63
|
+
let last = 0;
|
|
64
|
+
for (const match of note.text.matchAll(MENTION)) {
|
|
65
|
+
const ref = (match[1] ?? "").trim();
|
|
66
|
+
const mentioned = note.mentions && Object.hasOwn(note.mentions, ref) ? note.mentions[ref] : void 0;
|
|
67
|
+
const pageId = typeof mentioned === "string" ? mentioned : void 0;
|
|
68
|
+
parts.push(note.text.slice(last, match.index));
|
|
69
|
+
parts.push(pageId ? /* @__PURE__ */ jsx(KnowledgePageLink, {
|
|
70
|
+
pageId,
|
|
71
|
+
className: "text-foreground underline decoration-dotted underline-offset-2 hover:decoration-solid",
|
|
72
|
+
children: ref
|
|
73
|
+
}, match.index) : /* @__PURE__ */ jsx("span", {
|
|
74
|
+
className: "text-foreground",
|
|
75
|
+
"data-testid": "knowledge-unresolved-mention",
|
|
76
|
+
children: ref
|
|
77
|
+
}, match.index));
|
|
78
|
+
last = match.index + match[0].length;
|
|
79
|
+
}
|
|
80
|
+
parts.push(note.text.slice(last));
|
|
81
|
+
return /* @__PURE__ */ jsx(Fragment, { children: parts });
|
|
82
|
+
}
|
|
83
|
+
function NoteList({ notes }) {
|
|
84
|
+
return /* @__PURE__ */ jsx("ul", {
|
|
85
|
+
className: "flex flex-col gap-1",
|
|
86
|
+
children: notes.map((note) => /* @__PURE__ */ jsxs("li", {
|
|
87
|
+
className: "flex flex-col",
|
|
88
|
+
children: [/* @__PURE__ */ jsx(Txt, {
|
|
89
|
+
as: "span",
|
|
90
|
+
variant: "body",
|
|
91
|
+
children: /* @__PURE__ */ jsx(NoteText, { note })
|
|
92
|
+
}), note.page || note.author ? /* @__PURE__ */ jsxs(Meta, { children: [
|
|
93
|
+
note.page ? /* @__PURE__ */ jsx(PageLink, { page: note.page }) : null,
|
|
94
|
+
note.page && note.author ? " · " : null,
|
|
95
|
+
note.author
|
|
96
|
+
] }) : null]
|
|
97
|
+
}, note.id))
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/** What each Knowledge tool's settled result says, or null when the shape isn't one we know. */
|
|
101
|
+
function knowledgeCard(toolName, input, output) {
|
|
102
|
+
if (!isRecord(output)) return null;
|
|
103
|
+
const args = isRecord(input) ? input : {};
|
|
104
|
+
switch (toolName) {
|
|
105
|
+
case "knowledge_search": {
|
|
106
|
+
if (!Array.isArray(output.results)) return null;
|
|
107
|
+
const hits = output.results.filter(isRecord);
|
|
108
|
+
return {
|
|
109
|
+
title: "Searched Knowledge",
|
|
110
|
+
detail: str(args.query),
|
|
111
|
+
body: hits.length ? /* @__PURE__ */ jsx("ul", {
|
|
112
|
+
className: "flex flex-col gap-1.5",
|
|
113
|
+
children: hits.map((hit, index) => {
|
|
114
|
+
const page = asPage(hit.page);
|
|
115
|
+
const [note] = asNotes([hit.note]);
|
|
116
|
+
return page ? /* @__PURE__ */ jsxs("li", {
|
|
117
|
+
className: "flex flex-col",
|
|
118
|
+
children: [/* @__PURE__ */ jsx(PageLine, { page }), note ? /* @__PURE__ */ jsx(Meta, { children: /* @__PURE__ */ jsx(NoteText, { note }) }) : null]
|
|
119
|
+
}, `${page.id}-${note?.id ?? index}`) : null;
|
|
120
|
+
})
|
|
121
|
+
}) : /* @__PURE__ */ jsx(Meta, { children: "No matches" })
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
case "knowledge_read": {
|
|
125
|
+
const page = asPage(output.page);
|
|
126
|
+
if (!page) {
|
|
127
|
+
if (!Array.isArray(output.scopes)) return null;
|
|
128
|
+
const scopes = output.scopes.filter(isRecord);
|
|
129
|
+
return {
|
|
130
|
+
title: "Listed Knowledge scopes",
|
|
131
|
+
body: /* @__PURE__ */ jsx("ul", {
|
|
132
|
+
className: "flex flex-col gap-1",
|
|
133
|
+
children: scopes.map((scope) => /* @__PURE__ */ jsxs("li", { children: [
|
|
134
|
+
/* @__PURE__ */ jsx(Txt, {
|
|
135
|
+
as: "span",
|
|
136
|
+
variant: "body",
|
|
137
|
+
children: String(scope.name)
|
|
138
|
+
}),
|
|
139
|
+
" ",
|
|
140
|
+
/* @__PURE__ */ jsx(Meta, { children: String(scope.address) })
|
|
141
|
+
] }, String(scope.address)))
|
|
142
|
+
})
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
const notes = asNotes(output.notes);
|
|
146
|
+
const children = Array.isArray(output.children) ? output.children.map(asPage).filter((child) => child !== void 0) : [];
|
|
147
|
+
const mentionedIn = asNotes(output.mentionedIn);
|
|
148
|
+
const childScopes = Array.isArray(output.childScopes) ? output.childScopes.filter(isRecord) : [];
|
|
149
|
+
return {
|
|
150
|
+
title: "Read",
|
|
151
|
+
detail: page.name,
|
|
152
|
+
body: /* @__PURE__ */ jsxs("div", {
|
|
153
|
+
className: "flex flex-col gap-2",
|
|
154
|
+
children: [
|
|
155
|
+
/* @__PURE__ */ jsx(PageLine, { page }),
|
|
156
|
+
page.description ? /* @__PURE__ */ jsx(Meta, { children: page.description }) : null,
|
|
157
|
+
page.body ? /* @__PURE__ */ jsx(Body, { markdown: page.body }) : null,
|
|
158
|
+
notes.length ? /* @__PURE__ */ jsx(NoteList, { notes }) : null,
|
|
159
|
+
children.length ? /* @__PURE__ */ jsxs(Meta, { children: ["Child pages: ", children.map((child) => child.name).join(", ")] }) : null,
|
|
160
|
+
childScopes.length ? /* @__PURE__ */ jsxs(Meta, { children: [
|
|
161
|
+
"Child scopes:",
|
|
162
|
+
" ",
|
|
163
|
+
childScopes.map((scope) => scope.address ? `${String(scope.name)} (${String(scope.address)})` : String(scope.name)).join(", ")
|
|
164
|
+
] }) : null,
|
|
165
|
+
mentionedIn.length ? /* @__PURE__ */ jsxs("div", {
|
|
166
|
+
className: "flex flex-col gap-1",
|
|
167
|
+
children: [/* @__PURE__ */ jsx(Meta, { children: "Mentioned in" }), /* @__PURE__ */ jsx(NoteList, { notes: mentionedIn })]
|
|
168
|
+
}) : null
|
|
169
|
+
]
|
|
170
|
+
})
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
case "knowledge_page": {
|
|
174
|
+
const page = asPage(output.page);
|
|
175
|
+
if (!page) return null;
|
|
176
|
+
const op = str(args.op);
|
|
177
|
+
if (op === "delete") return {
|
|
178
|
+
title: "Deleted page",
|
|
179
|
+
detail: page.name,
|
|
180
|
+
body: /* @__PURE__ */ jsx(PageLine, {
|
|
181
|
+
page,
|
|
182
|
+
linked: false
|
|
183
|
+
})
|
|
184
|
+
};
|
|
185
|
+
const title = op === "move" ? "Moved page" : op === "merge" ? "Merged page" : args.page ? "Updated page" : "Created page";
|
|
186
|
+
const body = str(args.body);
|
|
187
|
+
const description = str(args.description);
|
|
188
|
+
return {
|
|
189
|
+
title,
|
|
190
|
+
detail: page.name,
|
|
191
|
+
body: /* @__PURE__ */ jsxs("div", {
|
|
192
|
+
className: "flex flex-col gap-2",
|
|
193
|
+
children: [
|
|
194
|
+
/* @__PURE__ */ jsx(PageLine, { page }),
|
|
195
|
+
op === "merge" && str(args.page) ? /* @__PURE__ */ jsxs(Meta, { children: [
|
|
196
|
+
"Merged ",
|
|
197
|
+
str(args.page),
|
|
198
|
+
" into this page"
|
|
199
|
+
] }) : null,
|
|
200
|
+
typeof page.version === "number" ? /* @__PURE__ */ jsxs(Meta, { children: ["Version ", page.version] }) : null,
|
|
201
|
+
description ? /* @__PURE__ */ jsx(Meta, { children: description }) : null,
|
|
202
|
+
body ? /* @__PURE__ */ jsx(Body, { markdown: body }) : null
|
|
203
|
+
]
|
|
204
|
+
})
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
case "knowledge_note": {
|
|
208
|
+
if (str(output.removed)) return {
|
|
209
|
+
title: "Removed note",
|
|
210
|
+
body: /* @__PURE__ */ jsxs(Meta, { children: ["Note ", String(output.removed)] })
|
|
211
|
+
};
|
|
212
|
+
const [note] = asNotes([output.note]);
|
|
213
|
+
if (!note) return null;
|
|
214
|
+
const pageRef = str(args.page);
|
|
215
|
+
const pageId = str(output.page);
|
|
216
|
+
return {
|
|
217
|
+
title: str(args.op) === "restamp" ? "Restamped note" : "Added note",
|
|
218
|
+
detail: pageRef,
|
|
219
|
+
body: /* @__PURE__ */ jsxs("div", {
|
|
220
|
+
className: "flex flex-col gap-1",
|
|
221
|
+
children: [/* @__PURE__ */ jsx(Txt, {
|
|
222
|
+
as: "span",
|
|
223
|
+
variant: "body",
|
|
224
|
+
children: /* @__PURE__ */ jsx(NoteText, { note })
|
|
225
|
+
}), pageId ? /* @__PURE__ */ jsxs(Meta, { children: ["On ", /* @__PURE__ */ jsx(PageLink, { page: {
|
|
226
|
+
id: pageId,
|
|
227
|
+
name: pageRef ?? "the page"
|
|
228
|
+
} })] }) : null]
|
|
229
|
+
})
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
case "knowledge_pin": {
|
|
233
|
+
const pageId = str(output.page);
|
|
234
|
+
if (!pageId || !Array.isArray(output.audience)) return null;
|
|
235
|
+
const pageRef = str(args.page);
|
|
236
|
+
const audience = output.audience.filter((entry) => typeof entry === "string");
|
|
237
|
+
return {
|
|
238
|
+
title: str(args.op) === "unpin" ? "Unpinned page" : "Pinned page",
|
|
239
|
+
detail: pageRef,
|
|
240
|
+
body: /* @__PURE__ */ jsxs("div", {
|
|
241
|
+
className: "flex flex-col gap-1",
|
|
242
|
+
children: [/* @__PURE__ */ jsx(Meta, { children: /* @__PURE__ */ jsx(PageLink, { page: {
|
|
243
|
+
id: pageId,
|
|
244
|
+
name: pageRef ?? "the page"
|
|
245
|
+
} }) }), /* @__PURE__ */ jsx(Meta, { children: audience.length ? `Pinned for ${audience.join(", ")}` : "No longer pinned for anyone" })]
|
|
246
|
+
})
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
default: return null;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
var KnowledgeToolBadge = ({ card, toolName, metadata, toolCallId, toolApprovalMetadata, isNetwork, status = "idle" }) => /* @__PURE__ */ jsx(ToolApprovalBadge, {
|
|
253
|
+
approval: {
|
|
254
|
+
toolCalled: true,
|
|
255
|
+
toolCallId,
|
|
256
|
+
toolApprovalMetadata,
|
|
257
|
+
toolName,
|
|
258
|
+
isNetwork,
|
|
259
|
+
isGenerateMode: metadata?.mode === "generate"
|
|
260
|
+
},
|
|
261
|
+
"data-testid": "knowledge-tool-badge",
|
|
262
|
+
icon: /* @__PURE__ */ jsx(BookOpen, { "aria-hidden": true }),
|
|
263
|
+
title: card.title,
|
|
264
|
+
detail: card.detail,
|
|
265
|
+
status,
|
|
266
|
+
children: card.body
|
|
267
|
+
});
|
|
268
|
+
export { KNOWLEDGE_TOOLS, KnowledgeToolBadge, knowledgeCard };
|
|
269
|
+
|
|
270
|
+
//# sourceMappingURL=knowledge-tool-badge.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-tool-badge.es.js","names":["_Fragment"],"sources":["../../../../../src/domains/chat/tools/badges/knowledge-tool-badge.tsx"],"sourcesContent":["import { BookOpen } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { KnowledgePageLink } from '../../knowledge/knowledge-links';\nimport { isRecord } from '../../messages/signal-data';\nimport type { MessageMetadata } from '@/domains/chat';\nimport type { ToolApprovalRequest } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport { ToolApprovalBadge } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt';\n\n/** The tools `Knowledge.createTools()` gives an agent. */\nexport const KNOWLEDGE_TOOLS = new Set([\n 'knowledge_search',\n 'knowledge_read',\n 'knowledge_page',\n 'knowledge_note',\n 'knowledge_pin',\n]);\n\ninterface PageSummary {\n id: string;\n name: string;\n address?: string;\n scope?: string;\n key?: string;\n description?: string;\n version?: number;\n body?: string;\n}\n\ninterface NoteSummary {\n id: string;\n text: string;\n author?: string;\n page?: PageSummary;\n /** Which `[[ref]]` in `text` links to which page id; refs the server couldn't resolve aren't here. */\n mentions?: Record<string, string>;\n}\n\nconst str = (value: unknown): string | undefined => (typeof value === 'string' && value ? value : undefined);\n\nfunction asPage(value: unknown): PageSummary | undefined {\n if (!isRecord(value) || !str(value.id) || typeof value.name !== 'string') return undefined;\n return value as unknown as PageSummary;\n}\n\nfunction asNotes(value: unknown): NoteSummary[] {\n return Array.isArray(value)\n ? value.filter((note): note is NoteSummary => isRecord(note) && typeof note.text === 'string')\n : [];\n}\n\nconst where = (page: PageSummary) => page.address ?? page.scope;\n\nfunction PageLink({ page }: { page: PageSummary }) {\n return <KnowledgePageLink pageId={page.id}>{page.name}</KnowledgePageLink>;\n}\n\nfunction Meta({ children }: { children: ReactNode }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"truncate\">\n {children}\n </Txt>\n );\n}\n\nfunction PageLine({ page, linked = true }: { page: PageSummary; linked?: boolean }) {\n const scope = where(page);\n return (\n <div className=\"flex min-w-0 items-baseline gap-2\">\n <Txt as=\"span\" variant=\"label\">\n {linked ? <PageLink page={page} /> : page.name}\n </Txt>\n {scope ? <Meta>{page.key ? `${scope}#${page.key}` : scope}</Meta> : null}\n </div>\n );\n}\n\nfunction Body({ markdown }: { markdown: string }) {\n return (\n <div className=\"border-border1 max-h-64 overflow-auto rounded-md border p-2\" data-testid=\"knowledge-tool-body\">\n <MarkdownRenderer>{markdown}</MarkdownRenderer>\n </div>\n );\n}\n\nconst MENTION = /\\[\\[([^\\]]+)\\]\\]/g;\n\n/** A note's text with each resolved `[[Page Name]]` linking to its page; unresolved names stay plain. */\nfunction NoteText({ note }: { note: NoteSummary }) {\n const parts: ReactNode[] = [];\n let last = 0;\n for (const match of note.text.matchAll(MENTION)) {\n const ref = (match[1] ?? '').trim();\n // Own string values only: `[[constructor]]` must not read Object.prototype.\n const mentioned = note.mentions && Object.hasOwn(note.mentions, ref) ? note.mentions[ref] : undefined;\n const pageId = typeof mentioned === 'string' ? mentioned : undefined;\n parts.push(note.text.slice(last, match.index));\n parts.push(\n pageId ? (\n <KnowledgePageLink\n key={match.index}\n pageId={pageId}\n className=\"text-foreground underline decoration-dotted underline-offset-2 hover:decoration-solid\"\n >\n {ref}\n </KnowledgePageLink>\n ) : (\n <span key={match.index} className=\"text-foreground\" data-testid=\"knowledge-unresolved-mention\">\n {ref}\n </span>\n ),\n );\n last = match.index + match[0].length;\n }\n parts.push(note.text.slice(last));\n return <>{parts}</>;\n}\n\nfunction NoteList({ notes }: { notes: NoteSummary[] }) {\n return (\n <ul className=\"flex flex-col gap-1\">\n {notes.map(note => (\n <li key={note.id} className=\"flex flex-col\">\n <Txt as=\"span\" variant=\"body\">\n <NoteText note={note} />\n </Txt>\n {note.page || note.author ? (\n <Meta>\n {note.page ? <PageLink page={note.page} /> : null}\n {note.page && note.author ? ' · ' : null}\n {note.author}\n </Meta>\n ) : null}\n </li>\n ))}\n </ul>\n );\n}\n\nexport interface KnowledgeCard {\n title: string;\n detail?: string;\n body: ReactNode;\n}\n\n/** What each Knowledge tool's settled result says, or null when the shape isn't one we know. */\nexport function knowledgeCard(toolName: string, input: unknown, output: unknown): KnowledgeCard | null {\n if (!isRecord(output)) return null;\n const args = isRecord(input) ? input : {};\n switch (toolName) {\n case 'knowledge_search': {\n if (!Array.isArray(output.results)) return null;\n const hits = output.results.filter(isRecord);\n return {\n title: 'Searched Knowledge',\n detail: str(args.query),\n body: hits.length ? (\n <ul className=\"flex flex-col gap-1.5\">\n {hits.map((hit, index) => {\n const page = asPage(hit.page);\n const [note] = asNotes([hit.note]);\n return page ? (\n <li key={`${page.id}-${note?.id ?? index}`} className=\"flex flex-col\">\n <PageLine page={page} />\n {note ? (\n <Meta>\n <NoteText note={note} />\n </Meta>\n ) : null}\n </li>\n ) : null;\n })}\n </ul>\n ) : (\n <Meta>No matches</Meta>\n ),\n };\n }\n case 'knowledge_read': {\n const page = asPage(output.page);\n if (!page) {\n if (!Array.isArray(output.scopes)) return null;\n const scopes = output.scopes.filter(isRecord);\n return {\n title: 'Listed Knowledge scopes',\n body: (\n <ul className=\"flex flex-col gap-1\">\n {scopes.map(scope => (\n <li key={String(scope.address)}>\n <Txt as=\"span\" variant=\"body\">\n {String(scope.name)}\n </Txt>{' '}\n <Meta>{String(scope.address)}</Meta>\n </li>\n ))}\n </ul>\n ),\n };\n }\n const notes = asNotes(output.notes);\n const children = Array.isArray(output.children)\n ? output.children.map(asPage).filter((child): child is PageSummary => child !== undefined)\n : [];\n const mentionedIn = asNotes(output.mentionedIn);\n const childScopes = Array.isArray(output.childScopes) ? output.childScopes.filter(isRecord) : [];\n return {\n title: 'Read',\n detail: page.name,\n body: (\n <div className=\"flex flex-col gap-2\">\n <PageLine page={page} />\n {page.description ? <Meta>{page.description}</Meta> : null}\n {page.body ? <Body markdown={page.body} /> : null}\n {notes.length ? <NoteList notes={notes} /> : null}\n {children.length ? <Meta>Child pages: {children.map(child => child.name).join(', ')}</Meta> : null}\n {childScopes.length ? (\n <Meta>\n Child scopes:{' '}\n {childScopes\n .map(scope =>\n scope.address ? `${String(scope.name)} (${String(scope.address)})` : String(scope.name),\n )\n .join(', ')}\n </Meta>\n ) : null}\n {mentionedIn.length ? (\n <div className=\"flex flex-col gap-1\">\n <Meta>Mentioned in</Meta>\n <NoteList notes={mentionedIn} />\n </div>\n ) : null}\n </div>\n ),\n };\n }\n case 'knowledge_page': {\n const page = asPage(output.page);\n if (!page) return null;\n const op = str(args.op);\n if (op === 'delete') {\n // The page no longer exists, so name it without a link.\n return { title: 'Deleted page', detail: page.name, body: <PageLine page={page} linked={false} /> };\n }\n const title =\n op === 'move' ? 'Moved page' : op === 'merge' ? 'Merged page' : args.page ? 'Updated page' : 'Created page';\n const body = str(args.body);\n const description = str(args.description);\n return {\n title,\n detail: page.name,\n body: (\n <div className=\"flex flex-col gap-2\">\n <PageLine page={page} />\n {op === 'merge' && str(args.page) ? <Meta>Merged {str(args.page)} into this page</Meta> : null}\n {typeof page.version === 'number' ? <Meta>Version {page.version}</Meta> : null}\n {description ? <Meta>{description}</Meta> : null}\n {body ? <Body markdown={body} /> : null}\n </div>\n ),\n };\n }\n case 'knowledge_note': {\n if (str(output.removed)) return { title: 'Removed note', body: <Meta>Note {String(output.removed)}</Meta> };\n const [note] = asNotes([output.note]);\n if (!note) return null;\n const pageRef = str(args.page);\n const pageId = str(output.page);\n return {\n title: str(args.op) === 'restamp' ? 'Restamped note' : 'Added note',\n detail: pageRef,\n body: (\n <div className=\"flex flex-col gap-1\">\n <Txt as=\"span\" variant=\"body\">\n <NoteText note={note} />\n </Txt>\n {pageId ? (\n <Meta>\n On <PageLink page={{ id: pageId, name: pageRef ?? 'the page' }} />\n </Meta>\n ) : null}\n </div>\n ),\n };\n }\n case 'knowledge_pin': {\n const pageId = str(output.page);\n if (!pageId || !Array.isArray(output.audience)) return null;\n const pageRef = str(args.page);\n const audience = output.audience.filter((entry): entry is string => typeof entry === 'string');\n return {\n title: str(args.op) === 'unpin' ? 'Unpinned page' : 'Pinned page',\n detail: pageRef,\n body: (\n <div className=\"flex flex-col gap-1\">\n <Meta>\n <PageLink page={{ id: pageId, name: pageRef ?? 'the page' }} />\n </Meta>\n <Meta>{audience.length ? `Pinned for ${audience.join(', ')}` : 'No longer pinned for anyone'}</Meta>\n </div>\n ),\n };\n }\n default:\n return null;\n }\n}\n\nexport interface KnowledgeToolBadgeProps extends Omit<ToolApprovalRequest, 'toolCalled'> {\n card: KnowledgeCard;\n metadata?: MessageMetadata;\n status?: ActivityStatus;\n}\n\nexport const KnowledgeToolBadge = ({\n card,\n toolName,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n isNetwork,\n status = 'idle',\n}: KnowledgeToolBadgeProps) => (\n <ToolApprovalBadge\n approval={{\n toolCalled: true,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n isGenerateMode: metadata?.mode === 'generate',\n }}\n data-testid=\"knowledge-tool-badge\"\n icon={<BookOpen aria-hidden />}\n title={card.title}\n detail={card.detail}\n status={status}\n >\n {card.body}\n </ToolApprovalBadge>\n);\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_AgentIndicator = require("../../../../AgentIndicator-to30W73z.cjs");
|
|
3
|
-
const require_tool_call = require("../../../../tool-call-
|
|
3
|
+
const require_tool_call = require("../../../../tool-call-BCsDhIhs.cjs");
|
|
4
4
|
const require_activity = require("../../../../activity-DAK8tj7r.cjs");
|
|
5
5
|
const require_domains_chat_tools_badges_observation_marker_format = require("./observation-marker-format.cjs.js");
|
|
6
6
|
const require_domains_chat_tools_badges_observation_marker_details = require("./observation-marker-details.cjs.js");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as agentGlyph } from "../../../../AgentIndicator-Bs2S8AWJ.js";
|
|
2
|
-
import { r as ToolCallOutput } from "../../../../tool-call-
|
|
2
|
+
import { r as ToolCallOutput } from "../../../../tool-call-CILZa3tn.js";
|
|
3
3
|
import { b as ActivityTrigger, c as ActivityContent, f as ActivityHeadline, s as Activity } from "../../../../activity-CM34JyW-.js";
|
|
4
4
|
import { compressionRatio, extractedValueEntries, formatTokens } from "./observation-marker-format.es.js";
|
|
5
5
|
import { Extractions, ObservationSections, ObservationStats } from "./observation-marker-details.es.js";
|
|
@@ -2,8 +2,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_utils = require("../../../../utils-uDc1ofX1.cjs");
|
|
3
3
|
const require_utils_duration = require("../../../../utils/duration.cjs.js");
|
|
4
4
|
const require_Txt = require("../../../../Txt-BnoSqxKE.cjs");
|
|
5
|
-
const require_tool_call = require("../../../../tool-call-
|
|
6
|
-
const require_tool_presentation = require("../../../../tool-presentation-
|
|
5
|
+
const require_tool_call = require("../../../../tool-call-BCsDhIhs.cjs");
|
|
6
|
+
const require_tool_presentation = require("../../../../tool-presentation-CQlDEwgS.cjs");
|
|
7
7
|
const require_domains_chat_tools_badges_awaits_tool_approval = require("./awaits-tool-approval.cjs.js");
|
|
8
8
|
const require_domains_chat_tools_badges_tool_approval_badge = require("./tool-approval-badge.cjs.js");
|
|
9
9
|
const require_domains_chat_tools_badges_workspace_data_parts = require("./workspace-data-parts.cjs.js");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as cn } from "../../../../utils-DQx8TpNT.js";
|
|
2
2
|
import { formatDuration, formatElapsed } from "../../../../utils/duration.es.js";
|
|
3
3
|
import { t as Txt } from "../../../../Txt-BM6TVV_c.js";
|
|
4
|
-
import { c as ToolCallMono, s as ToolCallCommand } from "../../../../tool-call-
|
|
5
|
-
import { r as presentTool } from "../../../../tool-presentation-
|
|
4
|
+
import { c as ToolCallMono, s as ToolCallCommand } from "../../../../tool-call-CILZa3tn.js";
|
|
5
|
+
import { r as presentTool } from "../../../../tool-presentation-DvCsb_kz.js";
|
|
6
6
|
import { awaitsToolApproval } from "./awaits-tool-approval.es.js";
|
|
7
7
|
import { ToolApprovalBadge } from "./tool-approval-badge.es.js";
|
|
8
8
|
import { parseToolArgs, toolDataParts, workspaceMetadata } from "./workspace-data-parts.es.js";
|
|
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_domains_chat_components_badge_wrapper = require("../../components/badge-wrapper.cjs.js");
|
|
3
3
|
const require_domains_chat_context_tool_call_context = require("../../context/tool-call-context.cjs.js");
|
|
4
4
|
const require_domains_chat_tools_badges_awaits_tool_approval = require("./awaits-tool-approval.cjs.js");
|
|
5
|
-
const require_tool_approval = require("../../../../tool-approval-
|
|
5
|
+
const require_tool_approval = require("../../../../tool-approval-Dfi0uAKU.cjs");
|
|
6
6
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
7
7
|
// src/domains/chat/tools/badges/tool-approval-badge.tsx
|
|
8
8
|
function useToolApproval(request) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BadgeWrapper } from "../../components/badge-wrapper.es.js";
|
|
2
2
|
import { useOptionalToolCall } from "../../context/tool-call-context.es.js";
|
|
3
3
|
import { awaitsToolApproval } from "./awaits-tool-approval.es.js";
|
|
4
|
-
import { n as ToolApprovalActions, r as ToolApprovalStatus } from "../../../../tool-approval-
|
|
4
|
+
import { n as ToolApprovalActions, r as ToolApprovalStatus } from "../../../../tool-approval-DHeCkWHT.js";
|
|
5
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
// src/domains/chat/tools/badges/tool-approval-badge.tsx
|
|
7
7
|
function useToolApproval(request) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_tool_call = require("../../../../tool-call-
|
|
3
|
-
const require_tool_presentation = require("../../../../tool-presentation-
|
|
2
|
+
const require_tool_call = require("../../../../tool-call-BCsDhIhs.cjs");
|
|
3
|
+
const require_tool_presentation = require("../../../../tool-presentation-CQlDEwgS.cjs");
|
|
4
4
|
const require_CodeEditor = require("../../../../CodeEditor-CJ9jC9lu.cjs");
|
|
5
5
|
const require_domains_chat_components_network_choice_metadata_dialog = require("../../components/network-choice-metadata-dialog.cjs.js");
|
|
6
6
|
const require_domains_chat_components_section_label = require("../../components/section-label.cjs.js");
|
|
7
|
-
const require_domains_chat_tools_badges_background_task_metadata_dialog = require("./background-task-metadata-dialog.cjs.js");
|
|
8
7
|
const require_domains_chat_tools_badges_awaits_tool_approval = require("./awaits-tool-approval.cjs.js");
|
|
9
8
|
const require_domains_chat_tools_badges_tool_approval_badge = require("./tool-approval-badge.cjs.js");
|
|
9
|
+
const require_domains_chat_tools_badges_background_task_metadata_dialog = require("./background-task-metadata-dialog.cjs.js");
|
|
10
10
|
const require_domains_chat_tools_badges_use_mcp_task_progress = require("./use-mcp-task-progress.cjs.js");
|
|
11
11
|
const require_domains_chat_tools_badges_mcp_task_chip = require("./mcp-task-chip.cjs.js");
|
|
12
12
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { a as ToolCallArguments, f as stripSerializedAnsi, r as ToolCallOutput } from "../../../../tool-call-
|
|
2
|
-
import { i as stringifyToolValue, r as presentTool, t as hasToolArguments } from "../../../../tool-presentation-
|
|
1
|
+
import { a as ToolCallArguments, f as stripSerializedAnsi, r as ToolCallOutput } from "../../../../tool-call-CILZa3tn.js";
|
|
2
|
+
import { i as stringifyToolValue, r as presentTool, t as hasToolArguments } from "../../../../tool-presentation-DvCsb_kz.js";
|
|
3
3
|
import { t as CodeEditor } from "../../../../CodeEditor-CPVxj7WS.js";
|
|
4
4
|
import { NetworkChoiceMetadataDialogTrigger } from "../../components/network-choice-metadata-dialog.es.js";
|
|
5
5
|
import { SectionLabel } from "../../components/section-label.es.js";
|
|
6
|
-
import { BackgroundTaskMetadataDialogTrigger } from "./background-task-metadata-dialog.es.js";
|
|
7
6
|
import { awaitsToolApproval } from "./awaits-tool-approval.es.js";
|
|
8
7
|
import { ToolApprovalBadge } from "./tool-approval-badge.es.js";
|
|
8
|
+
import { BackgroundTaskMetadataDialogTrigger } from "./background-task-metadata-dialog.es.js";
|
|
9
9
|
import { useMcpTaskProgress } from "./use-mcp-task-progress.es.js";
|
|
10
10
|
import { BackgroundMcpTaskChip, McpTaskChip } from "./mcp-task-chip.es.js";
|
|
11
11
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -2,14 +2,14 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_lib_framework = require("../../../../lib/framework.cjs.js");
|
|
3
3
|
const require_Button = require("../../../../Button-YQRflC47.cjs");
|
|
4
4
|
const require_icons_WorkflowIcon = require("../../../../icons/WorkflowIcon.cjs.js");
|
|
5
|
-
const require_tool_call = require("../../../../tool-call-
|
|
5
|
+
const require_tool_call = require("../../../../tool-call-BCsDhIhs.cjs");
|
|
6
6
|
const require_CodeEditor = require("../../../../CodeEditor-CJ9jC9lu.cjs");
|
|
7
7
|
const require_domains_chat_components_loading_badge = require("../../components/loading-badge.cjs.js");
|
|
8
8
|
const require_domains_chat_components_network_choice_metadata_dialog = require("../../components/network-choice-metadata-dialog.cjs.js");
|
|
9
9
|
const require_domains_chat_components_section_label = require("../../components/section-label.cjs.js");
|
|
10
|
-
const require_domains_chat_tools_badges_background_task_metadata_dialog = require("./background-task-metadata-dialog.cjs.js");
|
|
11
10
|
const require_domains_chat_tools_badges_awaits_tool_approval = require("./awaits-tool-approval.cjs.js");
|
|
12
11
|
const require_domains_chat_tools_badges_tool_approval_badge = require("./tool-approval-badge.cjs.js");
|
|
12
|
+
const require_domains_chat_tools_badges_background_task_metadata_dialog = require("./background-task-metadata-dialog.cjs.js");
|
|
13
13
|
const require_domains_request_context_hooks_use_entity_request_context = require("../../../request-context/hooks/use-entity-request-context.cjs.js");
|
|
14
14
|
const require_domains_workflows_context_workflow_run_context = require("../../../workflows/context/workflow-run-context.cjs.js");
|
|
15
15
|
const require_domains_workflows_context_workflow_step_detail_context = require("../../../workflows/context/workflow-step-detail-context.cjs.js");
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { useLinkComponent } from "../../../../lib/framework.es.js";
|
|
2
2
|
import { t as Button } from "../../../../Button-Bw1e3ONi.js";
|
|
3
3
|
import { WorkflowIcon as WorkflowIcon$1 } from "../../../../icons/WorkflowIcon.es.js";
|
|
4
|
-
import { c as ToolCallMono } from "../../../../tool-call-
|
|
4
|
+
import { c as ToolCallMono } from "../../../../tool-call-CILZa3tn.js";
|
|
5
5
|
import { t as CodeEditor } from "../../../../CodeEditor-CPVxj7WS.js";
|
|
6
6
|
import { LoadingBadge } from "../../components/loading-badge.es.js";
|
|
7
7
|
import { NetworkChoiceMetadataDialogTrigger } from "../../components/network-choice-metadata-dialog.es.js";
|
|
8
8
|
import { SectionLabel } from "../../components/section-label.es.js";
|
|
9
|
-
import { BackgroundTaskMetadataDialogTrigger } from "./background-task-metadata-dialog.es.js";
|
|
10
9
|
import { awaitsToolApproval } from "./awaits-tool-approval.es.js";
|
|
11
10
|
import { ToolApprovalBadge } from "./tool-approval-badge.es.js";
|
|
11
|
+
import { BackgroundTaskMetadataDialogTrigger } from "./background-task-metadata-dialog.es.js";
|
|
12
12
|
import { useEntityRequestContext } from "../../../request-context/hooks/use-entity-request-context.es.js";
|
|
13
13
|
import { WorkflowRunContext } from "../../../workflows/context/workflow-run-context.es.js";
|
|
14
14
|
import { useWorkflowStepDetail } from "../../../workflows/context/workflow-step-detail-context.es.js";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_tool_presentation = require("../../../tool-presentation-
|
|
2
|
+
const require_tool_presentation = require("../../../tool-presentation-CQlDEwgS.cjs");
|
|
3
3
|
const require_domains_chat_messages_signal_data = require("../messages/signal-data.cjs.js");
|
|
4
|
+
const require_domains_chat_tools_badges_knowledge_tool_badge = require("./badges/knowledge-tool-badge.cjs.js");
|
|
4
5
|
const require_domains_chat_tools_code_mode = require("./code-mode.cjs.js");
|
|
5
6
|
require("./connect-prompt-tool-id.cjs.js");
|
|
6
7
|
require("./submit-plan-tool-id.cjs.js");
|
|
@@ -38,7 +39,7 @@ function toolInteraction(metadata, toolName, toolCallId) {
|
|
|
38
39
|
function isHiddenTool(toolName) {
|
|
39
40
|
return toolName === "updateWorkingMemory" || require_tool_presentation.isTaskTool(toolName);
|
|
40
41
|
}
|
|
41
|
-
function toolCardKind({ toolName, toolCallId, input, output }, { metadata, mcpAppTools }) {
|
|
42
|
+
function toolCardKind({ toolName, toolCallId, input, output, state }, { metadata, mcpAppTools }) {
|
|
42
43
|
if (toolName === "mastra-memory-om-observation") return "observation";
|
|
43
44
|
if (isHiddenTool(toolName)) return "hidden";
|
|
44
45
|
if (toolName === "ask_user") return "ask_user";
|
|
@@ -52,6 +53,7 @@ function toolCardKind({ toolName, toolCallId, input, output }, { metadata, mcpAp
|
|
|
52
53
|
if (SANDBOX_TOOLS.has(toolName)) return "sandbox";
|
|
53
54
|
if (codeModeCall(input, output)) return "code_mode";
|
|
54
55
|
if (mcpAppTools?.[toolName]) return "mcp_app";
|
|
56
|
+
if (require_domains_chat_tools_badges_knowledge_tool_badge.KNOWLEDGE_TOOLS.has(toolName) && isSettledState(state) && require_domains_chat_tools_badges_knowledge_tool_badge.knowledgeCard(toolName, input, output)) return "knowledge";
|
|
55
57
|
return "plain";
|
|
56
58
|
}
|
|
57
59
|
exports.badgeStatus = badgeStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-card-kind.cjs.js","names":["WORKSPACE_TOOLS","isRecord","getCodeModeCall","isTaskTool","isConnectPromptPayload"],"sources":["../../../../src/domains/chat/tools/tool-card-kind.ts"],"sourcesContent":["import type { MessageMetadata, SuspendedToolMetadata, ToolApprovalMetadata } from '../messages/message-metadata';\nimport type { ToolPartFields } from '../messages/renderers/tool-part';\nimport { isRecord } from '../messages/signal-data';\nimport { getCodeModeCall } from './code-mode';\nimport { CONNECT_PROMPT_TOOL_NAME } from './connect-prompt-tool-id';\nimport { SUBMIT_PLAN_TOOL_ID } from './submit-plan-tool-id';\nimport { WORKSPACE_TOOLS } from './workspace-tool-constants';\nimport { isConnectPromptPayload } from '@/domains/connect/types';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\nimport { isTaskTool } from '@/ds/components/ai/tool-call';\n\n/** Which card draws a call. Decided once, shared by the dispatcher and the fold. */\nexport type ToolCardKind =\n | 'hidden'\n | 'observation'\n | 'ask_user'\n | 'connect_prompt'\n | 'submit_plan'\n | 'background'\n | 'agent'\n | 'workflow'\n | 'file_tree'\n | 'sandbox'\n | 'code_mode'\n | 'mcp_app'\n | 'plain';\n\nexport interface ToolCardContext {\n metadata?: MessageMetadata;\n mcpAppTools?: Record<string, unknown>;\n}\n\nexport interface ToolInteraction {\n approval?: ToolApprovalMetadata;\n suspended?: SuspendedToolMetadata;\n}\n\nconst SANDBOX_TOOLS = new Set<string>([\n WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND,\n WORKSPACE_TOOLS.SANDBOX.GET_PROCESS_OUTPUT,\n WORKSPACE_TOOLS.SANDBOX.KILL_PROCESS,\n]);\n\nconst hasSubmitPlanToolId = (value: unknown): boolean => isRecord(value) && value.toolId === SUBMIT_PLAN_TOOL_ID;\n\nconst isNetworkFrom = (metadata: MessageMetadata | undefined, from: string): boolean =>\n metadata?.mode === 'network' && metadata.from === from;\n\nexport const isAgentCall = (metadata: MessageMetadata | undefined, toolName: string): boolean =>\n isNetworkFrom(metadata, 'AGENT') || toolName.startsWith('agent-');\n\nexport const isWorkflowCall = (metadata: MessageMetadata | undefined, toolName: string): boolean =>\n isNetworkFrom(metadata, 'WORKFLOW') || toolName.startsWith('workflow-');\n\nexport const isSettledState = (state: string | undefined): boolean =>\n state === 'output-available' || state === 'result';\n\n/** A call neither settled nor carried by a live run reads as idle, so stale history never shimmers. */\nexport function badgeStatus(state: string | undefined, chatRunning: boolean): ActivityStatus {\n if (state === 'output-error') return 'error';\n if (isSettledState(state) || !chatRunning) return 'idle';\n return 'running';\n}\n\nexport const codeModeCall = (input: unknown, output: unknown) =>\n isRecord(input) || typeof input === 'string' ? getCodeModeCall(input, output) : null;\n\n/** Approval and suspension land keyed by tool name on older runs and by call id on newer ones. */\nexport function toolInteraction(\n metadata: MessageMetadata | undefined,\n toolName: string,\n toolCallId: string,\n): ToolInteraction {\n const approvals = metadata?.requireApprovalMetadata;\n const suspensions = metadata?.suspendedTools;\n const namedApproval = approvals?.[toolName];\n return {\n approval:\n metadata?.mode === 'network'\n ? namedApproval?.toolCallId === toolCallId\n ? namedApproval\n : approvals?.[toolCallId]\n : (approvals?.[toolCallId] ??\n Object.values(approvals ?? {}).find(approval => approval.toolCallId === toolCallId)),\n suspended: suspensions?.[toolName] ?? suspensions?.[toolCallId],\n };\n}\n\n/** Tools the transcript never draws: working memory updates and task tools (shown in the docked task list). */\nexport function isHiddenTool(toolName: string): boolean {\n return toolName === 'updateWorkingMemory' || isTaskTool(toolName);\n}\n\nexport function toolCardKind(\n { toolName, toolCallId, input, output }: ToolPartFields,\n { metadata, mcpAppTools }: ToolCardContext,\n): ToolCardKind {\n if (toolName === 'mastra-memory-om-observation') return 'observation';\n if (isHiddenTool(toolName)) return 'hidden';\n // A question read back in history draws as a plain badge, but it is still a question: never folded away.\n if (toolName === 'ask_user') return 'ask_user';\n // Built-in `request_connection` tool from `@mastra/connect`: a settled call renders\n // as an interactive connect card; while running it falls back to a plain badge.\n if (toolName === CONNECT_PROMPT_TOOL_NAME && isConnectPromptPayload(output)) return 'connect_prompt';\n const { suspended } = toolInteraction(metadata, toolName, toolCallId);\n if (\n toolName === SUBMIT_PLAN_TOOL_ID ||\n hasSubmitPlanToolId(suspended?.suspendPayload) ||\n hasSubmitPlanToolId(output)\n ) {\n return 'submit_plan';\n }\n if (typeof output === 'string' && output.toLowerCase().includes('background task')) return 'background';\n if (isAgentCall(metadata, toolName)) return 'agent';\n if (isWorkflowCall(metadata, toolName)) return 'workflow';\n if (toolName === WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES) return 'file_tree';\n if (SANDBOX_TOOLS.has(toolName)) return 'sandbox';\n if (codeModeCall(input, output)) return 'code_mode';\n if (mcpAppTools?.[toolName]) return 'mcp_app';\n return 'plain';\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-card-kind.cjs.js","names":["WORKSPACE_TOOLS","isRecord","getCodeModeCall","isTaskTool","isConnectPromptPayload","KNOWLEDGE_TOOLS","knowledgeCard"],"sources":["../../../../src/domains/chat/tools/tool-card-kind.ts"],"sourcesContent":["import type { MessageMetadata, SuspendedToolMetadata, ToolApprovalMetadata } from '../messages/message-metadata';\nimport type { ToolPartFields } from '../messages/renderers/tool-part';\nimport { isRecord } from '../messages/signal-data';\nimport { KNOWLEDGE_TOOLS, knowledgeCard } from './badges/knowledge-tool-badge';\nimport { getCodeModeCall } from './code-mode';\nimport { CONNECT_PROMPT_TOOL_NAME } from './connect-prompt-tool-id';\nimport { SUBMIT_PLAN_TOOL_ID } from './submit-plan-tool-id';\nimport { WORKSPACE_TOOLS } from './workspace-tool-constants';\nimport { isConnectPromptPayload } from '@/domains/connect/types';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\nimport { isTaskTool } from '@/ds/components/ai/tool-call';\n\n/** Which card draws a call. Decided once, shared by the dispatcher and the fold. */\nexport type ToolCardKind =\n | 'hidden'\n | 'observation'\n | 'ask_user'\n | 'connect_prompt'\n | 'submit_plan'\n | 'background'\n | 'agent'\n | 'workflow'\n | 'file_tree'\n | 'sandbox'\n | 'code_mode'\n | 'mcp_app'\n | 'knowledge'\n | 'plain';\n\nexport interface ToolCardContext {\n metadata?: MessageMetadata;\n mcpAppTools?: Record<string, unknown>;\n}\n\nexport interface ToolInteraction {\n approval?: ToolApprovalMetadata;\n suspended?: SuspendedToolMetadata;\n}\n\nconst SANDBOX_TOOLS = new Set<string>([\n WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND,\n WORKSPACE_TOOLS.SANDBOX.GET_PROCESS_OUTPUT,\n WORKSPACE_TOOLS.SANDBOX.KILL_PROCESS,\n]);\n\nconst hasSubmitPlanToolId = (value: unknown): boolean => isRecord(value) && value.toolId === SUBMIT_PLAN_TOOL_ID;\n\nconst isNetworkFrom = (metadata: MessageMetadata | undefined, from: string): boolean =>\n metadata?.mode === 'network' && metadata.from === from;\n\nexport const isAgentCall = (metadata: MessageMetadata | undefined, toolName: string): boolean =>\n isNetworkFrom(metadata, 'AGENT') || toolName.startsWith('agent-');\n\nexport const isWorkflowCall = (metadata: MessageMetadata | undefined, toolName: string): boolean =>\n isNetworkFrom(metadata, 'WORKFLOW') || toolName.startsWith('workflow-');\n\nexport const isSettledState = (state: string | undefined): boolean =>\n state === 'output-available' || state === 'result';\n\n/** A call neither settled nor carried by a live run reads as idle, so stale history never shimmers. */\nexport function badgeStatus(state: string | undefined, chatRunning: boolean): ActivityStatus {\n if (state === 'output-error') return 'error';\n if (isSettledState(state) || !chatRunning) return 'idle';\n return 'running';\n}\n\nexport const codeModeCall = (input: unknown, output: unknown) =>\n isRecord(input) || typeof input === 'string' ? getCodeModeCall(input, output) : null;\n\n/** Approval and suspension land keyed by tool name on older runs and by call id on newer ones. */\nexport function toolInteraction(\n metadata: MessageMetadata | undefined,\n toolName: string,\n toolCallId: string,\n): ToolInteraction {\n const approvals = metadata?.requireApprovalMetadata;\n const suspensions = metadata?.suspendedTools;\n const namedApproval = approvals?.[toolName];\n return {\n approval:\n metadata?.mode === 'network'\n ? namedApproval?.toolCallId === toolCallId\n ? namedApproval\n : approvals?.[toolCallId]\n : (approvals?.[toolCallId] ??\n Object.values(approvals ?? {}).find(approval => approval.toolCallId === toolCallId)),\n suspended: suspensions?.[toolName] ?? suspensions?.[toolCallId],\n };\n}\n\n/** Tools the transcript never draws: working memory updates and task tools (shown in the docked task list). */\nexport function isHiddenTool(toolName: string): boolean {\n return toolName === 'updateWorkingMemory' || isTaskTool(toolName);\n}\n\nexport function toolCardKind(\n { toolName, toolCallId, input, output, state }: ToolPartFields,\n { metadata, mcpAppTools }: ToolCardContext,\n): ToolCardKind {\n if (toolName === 'mastra-memory-om-observation') return 'observation';\n if (isHiddenTool(toolName)) return 'hidden';\n // A question read back in history draws as a plain badge, but it is still a question: never folded away.\n if (toolName === 'ask_user') return 'ask_user';\n // Built-in `request_connection` tool from `@mastra/connect`: a settled call renders\n // as an interactive connect card; while running it falls back to a plain badge.\n if (toolName === CONNECT_PROMPT_TOOL_NAME && isConnectPromptPayload(output)) return 'connect_prompt';\n const { suspended } = toolInteraction(metadata, toolName, toolCallId);\n if (\n toolName === SUBMIT_PLAN_TOOL_ID ||\n hasSubmitPlanToolId(suspended?.suspendPayload) ||\n hasSubmitPlanToolId(output)\n ) {\n return 'submit_plan';\n }\n if (typeof output === 'string' && output.toLowerCase().includes('background task')) return 'background';\n if (isAgentCall(metadata, toolName)) return 'agent';\n if (isWorkflowCall(metadata, toolName)) return 'workflow';\n if (toolName === WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES) return 'file_tree';\n if (SANDBOX_TOOLS.has(toolName)) return 'sandbox';\n if (codeModeCall(input, output)) return 'code_mode';\n if (mcpAppTools?.[toolName]) return 'mcp_app';\n // A settled Knowledge result draws as a readable card; while running or failed it stays a plain badge.\n if (KNOWLEDGE_TOOLS.has(toolName) && isSettledState(state) && knowledgeCard(toolName, input, output)) {\n return 'knowledge';\n }\n return 'plain';\n}\n"],"mappings":";;;;;;;;;;AAuCA,IAAM,gCAAgB,IAAI,IAAY;CACpCA,oDAAAA,gBAAgB,QAAQ;CACxBA,oDAAAA,gBAAgB,QAAQ;CACxBA,oDAAAA,gBAAgB,QAAQ;AAC1B,CAAC;AAED,IAAM,uBAAuB,UAA4BC,0CAAAA,SAAS,KAAK,KAAK,MAAM,WAAA;AAElF,IAAM,iBAAiB,UAAuC,SAC5D,UAAU,SAAS,aAAa,SAAS,SAAS;AAEpD,IAAa,eAAe,UAAuC,aACjE,cAAc,UAAU,OAAO,KAAK,SAAS,WAAW,QAAQ;AAElE,IAAa,kBAAkB,UAAuC,aACpE,cAAc,UAAU,UAAU,KAAK,SAAS,WAAW,WAAW;AAExE,IAAa,kBAAkB,UAC7B,UAAU,sBAAsB,UAAU;;AAG5C,SAAgB,YAAY,OAA2B,aAAsC;CAC3F,IAAI,UAAU,gBAAgB,OAAO;CACrC,IAAI,eAAe,KAAK,KAAK,CAAC,aAAa,OAAO;CAClD,OAAO;AACT;AAEA,IAAa,gBAAgB,OAAgB,WAC3CA,0CAAAA,SAAS,KAAK,KAAK,OAAO,UAAU,WAAWC,qCAAAA,gBAAgB,OAAO,MAAM,IAAI;;AAGlF,SAAgB,gBACd,UACA,UACA,YACiB;CACjB,MAAM,YAAY,UAAU;CAC5B,MAAM,cAAc,UAAU;CAC9B,MAAM,gBAAgB,YAAY;CAClC,OAAO;EACL,UACE,UAAU,SAAS,YACf,eAAe,eAAe,aAC5B,gBACA,YAAY,cACb,YAAY,eACb,OAAO,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,MAAK,aAAY,SAAS,eAAe,UAAU;EACxF,WAAW,cAAc,aAAa,cAAc;CACtD;AACF;;AAGA,SAAgB,aAAa,UAA2B;CACtD,OAAO,aAAa,yBAAyBC,0BAAAA,WAAW,QAAQ;AAClE;AAEA,SAAgB,aACd,EAAE,UAAU,YAAY,OAAO,QAAQ,SACvC,EAAE,UAAU,eACE;CACd,IAAI,aAAa,gCAAgC,OAAO;CACxD,IAAI,aAAa,QAAQ,GAAG,OAAO;CAEnC,IAAI,aAAa,YAAY,OAAO;CAGpC,IAAI,aAAA,wBAAyCC,8BAAAA,uBAAuB,MAAM,GAAG,OAAO;CACpF,MAAM,EAAE,cAAc,gBAAgB,UAAU,UAAU,UAAU;CACpE,IACE,aAAA,iBACA,oBAAoB,WAAW,cAAc,KAC7C,oBAAoB,MAAM,GAE1B,OAAO;CAET,IAAI,OAAO,WAAW,YAAY,OAAO,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,OAAO;CAC3F,IAAI,YAAY,UAAU,QAAQ,GAAG,OAAO;CAC5C,IAAI,eAAe,UAAU,QAAQ,GAAG,OAAO;CAC/C,IAAI,aAAaJ,oDAAAA,gBAAgB,WAAW,YAAY,OAAO;CAC/D,IAAI,cAAc,IAAI,QAAQ,GAAG,OAAO;CACxC,IAAI,aAAa,OAAO,MAAM,GAAG,OAAO;CACxC,IAAI,cAAc,WAAW,OAAO;CAEpC,IAAIK,uDAAAA,gBAAgB,IAAI,QAAQ,KAAK,eAAe,KAAK,KAAKC,uDAAAA,cAAc,UAAU,OAAO,MAAM,GACjG,OAAO;CAET,OAAO;AACT"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { n as isTaskTool } from "../../../tool-presentation-
|
|
1
|
+
import { n as isTaskTool } from "../../../tool-presentation-DvCsb_kz.js";
|
|
2
2
|
import { isRecord } from "../messages/signal-data.es.js";
|
|
3
|
+
import { KNOWLEDGE_TOOLS, knowledgeCard } from "./badges/knowledge-tool-badge.es.js";
|
|
3
4
|
import { getCodeModeCall } from "./code-mode.es.js";
|
|
4
5
|
import "./connect-prompt-tool-id.es.js";
|
|
5
6
|
import "./submit-plan-tool-id.es.js";
|
|
@@ -37,7 +38,7 @@ function toolInteraction(metadata, toolName, toolCallId) {
|
|
|
37
38
|
function isHiddenTool(toolName) {
|
|
38
39
|
return toolName === "updateWorkingMemory" || isTaskTool(toolName);
|
|
39
40
|
}
|
|
40
|
-
function toolCardKind({ toolName, toolCallId, input, output }, { metadata, mcpAppTools }) {
|
|
41
|
+
function toolCardKind({ toolName, toolCallId, input, output, state }, { metadata, mcpAppTools }) {
|
|
41
42
|
if (toolName === "mastra-memory-om-observation") return "observation";
|
|
42
43
|
if (isHiddenTool(toolName)) return "hidden";
|
|
43
44
|
if (toolName === "ask_user") return "ask_user";
|
|
@@ -51,6 +52,7 @@ function toolCardKind({ toolName, toolCallId, input, output }, { metadata, mcpAp
|
|
|
51
52
|
if (SANDBOX_TOOLS.has(toolName)) return "sandbox";
|
|
52
53
|
if (codeModeCall(input, output)) return "code_mode";
|
|
53
54
|
if (mcpAppTools?.[toolName]) return "mcp_app";
|
|
55
|
+
if (KNOWLEDGE_TOOLS.has(toolName) && isSettledState(state) && knowledgeCard(toolName, input, output)) return "knowledge";
|
|
54
56
|
return "plain";
|
|
55
57
|
}
|
|
56
58
|
export { badgeStatus, codeModeCall, isAgentCall, isHiddenTool, isSettledState, isWorkflowCall, toolCardKind, toolInteraction };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-card-kind.es.js","names":[],"sources":["../../../../src/domains/chat/tools/tool-card-kind.ts"],"sourcesContent":["import type { MessageMetadata, SuspendedToolMetadata, ToolApprovalMetadata } from '../messages/message-metadata';\nimport type { ToolPartFields } from '../messages/renderers/tool-part';\nimport { isRecord } from '../messages/signal-data';\nimport { getCodeModeCall } from './code-mode';\nimport { CONNECT_PROMPT_TOOL_NAME } from './connect-prompt-tool-id';\nimport { SUBMIT_PLAN_TOOL_ID } from './submit-plan-tool-id';\nimport { WORKSPACE_TOOLS } from './workspace-tool-constants';\nimport { isConnectPromptPayload } from '@/domains/connect/types';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\nimport { isTaskTool } from '@/ds/components/ai/tool-call';\n\n/** Which card draws a call. Decided once, shared by the dispatcher and the fold. */\nexport type ToolCardKind =\n | 'hidden'\n | 'observation'\n | 'ask_user'\n | 'connect_prompt'\n | 'submit_plan'\n | 'background'\n | 'agent'\n | 'workflow'\n | 'file_tree'\n | 'sandbox'\n | 'code_mode'\n | 'mcp_app'\n | 'plain';\n\nexport interface ToolCardContext {\n metadata?: MessageMetadata;\n mcpAppTools?: Record<string, unknown>;\n}\n\nexport interface ToolInteraction {\n approval?: ToolApprovalMetadata;\n suspended?: SuspendedToolMetadata;\n}\n\nconst SANDBOX_TOOLS = new Set<string>([\n WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND,\n WORKSPACE_TOOLS.SANDBOX.GET_PROCESS_OUTPUT,\n WORKSPACE_TOOLS.SANDBOX.KILL_PROCESS,\n]);\n\nconst hasSubmitPlanToolId = (value: unknown): boolean => isRecord(value) && value.toolId === SUBMIT_PLAN_TOOL_ID;\n\nconst isNetworkFrom = (metadata: MessageMetadata | undefined, from: string): boolean =>\n metadata?.mode === 'network' && metadata.from === from;\n\nexport const isAgentCall = (metadata: MessageMetadata | undefined, toolName: string): boolean =>\n isNetworkFrom(metadata, 'AGENT') || toolName.startsWith('agent-');\n\nexport const isWorkflowCall = (metadata: MessageMetadata | undefined, toolName: string): boolean =>\n isNetworkFrom(metadata, 'WORKFLOW') || toolName.startsWith('workflow-');\n\nexport const isSettledState = (state: string | undefined): boolean =>\n state === 'output-available' || state === 'result';\n\n/** A call neither settled nor carried by a live run reads as idle, so stale history never shimmers. */\nexport function badgeStatus(state: string | undefined, chatRunning: boolean): ActivityStatus {\n if (state === 'output-error') return 'error';\n if (isSettledState(state) || !chatRunning) return 'idle';\n return 'running';\n}\n\nexport const codeModeCall = (input: unknown, output: unknown) =>\n isRecord(input) || typeof input === 'string' ? getCodeModeCall(input, output) : null;\n\n/** Approval and suspension land keyed by tool name on older runs and by call id on newer ones. */\nexport function toolInteraction(\n metadata: MessageMetadata | undefined,\n toolName: string,\n toolCallId: string,\n): ToolInteraction {\n const approvals = metadata?.requireApprovalMetadata;\n const suspensions = metadata?.suspendedTools;\n const namedApproval = approvals?.[toolName];\n return {\n approval:\n metadata?.mode === 'network'\n ? namedApproval?.toolCallId === toolCallId\n ? namedApproval\n : approvals?.[toolCallId]\n : (approvals?.[toolCallId] ??\n Object.values(approvals ?? {}).find(approval => approval.toolCallId === toolCallId)),\n suspended: suspensions?.[toolName] ?? suspensions?.[toolCallId],\n };\n}\n\n/** Tools the transcript never draws: working memory updates and task tools (shown in the docked task list). */\nexport function isHiddenTool(toolName: string): boolean {\n return toolName === 'updateWorkingMemory' || isTaskTool(toolName);\n}\n\nexport function toolCardKind(\n { toolName, toolCallId, input, output }: ToolPartFields,\n { metadata, mcpAppTools }: ToolCardContext,\n): ToolCardKind {\n if (toolName === 'mastra-memory-om-observation') return 'observation';\n if (isHiddenTool(toolName)) return 'hidden';\n // A question read back in history draws as a plain badge, but it is still a question: never folded away.\n if (toolName === 'ask_user') return 'ask_user';\n // Built-in `request_connection` tool from `@mastra/connect`: a settled call renders\n // as an interactive connect card; while running it falls back to a plain badge.\n if (toolName === CONNECT_PROMPT_TOOL_NAME && isConnectPromptPayload(output)) return 'connect_prompt';\n const { suspended } = toolInteraction(metadata, toolName, toolCallId);\n if (\n toolName === SUBMIT_PLAN_TOOL_ID ||\n hasSubmitPlanToolId(suspended?.suspendPayload) ||\n hasSubmitPlanToolId(output)\n ) {\n return 'submit_plan';\n }\n if (typeof output === 'string' && output.toLowerCase().includes('background task')) return 'background';\n if (isAgentCall(metadata, toolName)) return 'agent';\n if (isWorkflowCall(metadata, toolName)) return 'workflow';\n if (toolName === WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES) return 'file_tree';\n if (SANDBOX_TOOLS.has(toolName)) return 'sandbox';\n if (codeModeCall(input, output)) return 'code_mode';\n if (mcpAppTools?.[toolName]) return 'mcp_app';\n return 'plain';\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-card-kind.es.js","names":[],"sources":["../../../../src/domains/chat/tools/tool-card-kind.ts"],"sourcesContent":["import type { MessageMetadata, SuspendedToolMetadata, ToolApprovalMetadata } from '../messages/message-metadata';\nimport type { ToolPartFields } from '../messages/renderers/tool-part';\nimport { isRecord } from '../messages/signal-data';\nimport { KNOWLEDGE_TOOLS, knowledgeCard } from './badges/knowledge-tool-badge';\nimport { getCodeModeCall } from './code-mode';\nimport { CONNECT_PROMPT_TOOL_NAME } from './connect-prompt-tool-id';\nimport { SUBMIT_PLAN_TOOL_ID } from './submit-plan-tool-id';\nimport { WORKSPACE_TOOLS } from './workspace-tool-constants';\nimport { isConnectPromptPayload } from '@/domains/connect/types';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\nimport { isTaskTool } from '@/ds/components/ai/tool-call';\n\n/** Which card draws a call. Decided once, shared by the dispatcher and the fold. */\nexport type ToolCardKind =\n | 'hidden'\n | 'observation'\n | 'ask_user'\n | 'connect_prompt'\n | 'submit_plan'\n | 'background'\n | 'agent'\n | 'workflow'\n | 'file_tree'\n | 'sandbox'\n | 'code_mode'\n | 'mcp_app'\n | 'knowledge'\n | 'plain';\n\nexport interface ToolCardContext {\n metadata?: MessageMetadata;\n mcpAppTools?: Record<string, unknown>;\n}\n\nexport interface ToolInteraction {\n approval?: ToolApprovalMetadata;\n suspended?: SuspendedToolMetadata;\n}\n\nconst SANDBOX_TOOLS = new Set<string>([\n WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND,\n WORKSPACE_TOOLS.SANDBOX.GET_PROCESS_OUTPUT,\n WORKSPACE_TOOLS.SANDBOX.KILL_PROCESS,\n]);\n\nconst hasSubmitPlanToolId = (value: unknown): boolean => isRecord(value) && value.toolId === SUBMIT_PLAN_TOOL_ID;\n\nconst isNetworkFrom = (metadata: MessageMetadata | undefined, from: string): boolean =>\n metadata?.mode === 'network' && metadata.from === from;\n\nexport const isAgentCall = (metadata: MessageMetadata | undefined, toolName: string): boolean =>\n isNetworkFrom(metadata, 'AGENT') || toolName.startsWith('agent-');\n\nexport const isWorkflowCall = (metadata: MessageMetadata | undefined, toolName: string): boolean =>\n isNetworkFrom(metadata, 'WORKFLOW') || toolName.startsWith('workflow-');\n\nexport const isSettledState = (state: string | undefined): boolean =>\n state === 'output-available' || state === 'result';\n\n/** A call neither settled nor carried by a live run reads as idle, so stale history never shimmers. */\nexport function badgeStatus(state: string | undefined, chatRunning: boolean): ActivityStatus {\n if (state === 'output-error') return 'error';\n if (isSettledState(state) || !chatRunning) return 'idle';\n return 'running';\n}\n\nexport const codeModeCall = (input: unknown, output: unknown) =>\n isRecord(input) || typeof input === 'string' ? getCodeModeCall(input, output) : null;\n\n/** Approval and suspension land keyed by tool name on older runs and by call id on newer ones. */\nexport function toolInteraction(\n metadata: MessageMetadata | undefined,\n toolName: string,\n toolCallId: string,\n): ToolInteraction {\n const approvals = metadata?.requireApprovalMetadata;\n const suspensions = metadata?.suspendedTools;\n const namedApproval = approvals?.[toolName];\n return {\n approval:\n metadata?.mode === 'network'\n ? namedApproval?.toolCallId === toolCallId\n ? namedApproval\n : approvals?.[toolCallId]\n : (approvals?.[toolCallId] ??\n Object.values(approvals ?? {}).find(approval => approval.toolCallId === toolCallId)),\n suspended: suspensions?.[toolName] ?? suspensions?.[toolCallId],\n };\n}\n\n/** Tools the transcript never draws: working memory updates and task tools (shown in the docked task list). */\nexport function isHiddenTool(toolName: string): boolean {\n return toolName === 'updateWorkingMemory' || isTaskTool(toolName);\n}\n\nexport function toolCardKind(\n { toolName, toolCallId, input, output, state }: ToolPartFields,\n { metadata, mcpAppTools }: ToolCardContext,\n): ToolCardKind {\n if (toolName === 'mastra-memory-om-observation') return 'observation';\n if (isHiddenTool(toolName)) return 'hidden';\n // A question read back in history draws as a plain badge, but it is still a question: never folded away.\n if (toolName === 'ask_user') return 'ask_user';\n // Built-in `request_connection` tool from `@mastra/connect`: a settled call renders\n // as an interactive connect card; while running it falls back to a plain badge.\n if (toolName === CONNECT_PROMPT_TOOL_NAME && isConnectPromptPayload(output)) return 'connect_prompt';\n const { suspended } = toolInteraction(metadata, toolName, toolCallId);\n if (\n toolName === SUBMIT_PLAN_TOOL_ID ||\n hasSubmitPlanToolId(suspended?.suspendPayload) ||\n hasSubmitPlanToolId(output)\n ) {\n return 'submit_plan';\n }\n if (typeof output === 'string' && output.toLowerCase().includes('background task')) return 'background';\n if (isAgentCall(metadata, toolName)) return 'agent';\n if (isWorkflowCall(metadata, toolName)) return 'workflow';\n if (toolName === WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES) return 'file_tree';\n if (SANDBOX_TOOLS.has(toolName)) return 'sandbox';\n if (codeModeCall(input, output)) return 'code_mode';\n if (mcpAppTools?.[toolName]) return 'mcp_app';\n // A settled Knowledge result draws as a readable card; while running or failed it stays a plain badge.\n if (KNOWLEDGE_TOOLS.has(toolName) && isSettledState(state) && knowledgeCard(toolName, input, output)) {\n return 'knowledge';\n }\n return 'plain';\n}\n"],"mappings":";;;;;;;;;AAuCA,IAAM,gCAAgB,IAAI,IAAY;CACpC,gBAAgB,QAAQ;CACxB,gBAAgB,QAAQ;CACxB,gBAAgB,QAAQ;AAC1B,CAAC;AAED,IAAM,uBAAuB,UAA4B,SAAS,KAAK,KAAK,MAAM,WAAA;AAElF,IAAM,iBAAiB,UAAuC,SAC5D,UAAU,SAAS,aAAa,SAAS,SAAS;AAEpD,IAAa,eAAe,UAAuC,aACjE,cAAc,UAAU,OAAO,KAAK,SAAS,WAAW,QAAQ;AAElE,IAAa,kBAAkB,UAAuC,aACpE,cAAc,UAAU,UAAU,KAAK,SAAS,WAAW,WAAW;AAExE,IAAa,kBAAkB,UAC7B,UAAU,sBAAsB,UAAU;;AAG5C,SAAgB,YAAY,OAA2B,aAAsC;CAC3F,IAAI,UAAU,gBAAgB,OAAO;CACrC,IAAI,eAAe,KAAK,KAAK,CAAC,aAAa,OAAO;CAClD,OAAO;AACT;AAEA,IAAa,gBAAgB,OAAgB,WAC3C,SAAS,KAAK,KAAK,OAAO,UAAU,WAAW,gBAAgB,OAAO,MAAM,IAAI;;AAGlF,SAAgB,gBACd,UACA,UACA,YACiB;CACjB,MAAM,YAAY,UAAU;CAC5B,MAAM,cAAc,UAAU;CAC9B,MAAM,gBAAgB,YAAY;CAClC,OAAO;EACL,UACE,UAAU,SAAS,YACf,eAAe,eAAe,aAC5B,gBACA,YAAY,cACb,YAAY,eACb,OAAO,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,MAAK,aAAY,SAAS,eAAe,UAAU;EACxF,WAAW,cAAc,aAAa,cAAc;CACtD;AACF;;AAGA,SAAgB,aAAa,UAA2B;CACtD,OAAO,aAAa,yBAAyB,WAAW,QAAQ;AAClE;AAEA,SAAgB,aACd,EAAE,UAAU,YAAY,OAAO,QAAQ,SACvC,EAAE,UAAU,eACE;CACd,IAAI,aAAa,gCAAgC,OAAO;CACxD,IAAI,aAAa,QAAQ,GAAG,OAAO;CAEnC,IAAI,aAAa,YAAY,OAAO;CAGpC,IAAI,aAAA,wBAAyC,uBAAuB,MAAM,GAAG,OAAO;CACpF,MAAM,EAAE,cAAc,gBAAgB,UAAU,UAAU,UAAU;CACpE,IACE,aAAA,iBACA,oBAAoB,WAAW,cAAc,KAC7C,oBAAoB,MAAM,GAE1B,OAAO;CAET,IAAI,OAAO,WAAW,YAAY,OAAO,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,OAAO;CAC3F,IAAI,YAAY,UAAU,QAAQ,GAAG,OAAO;CAC5C,IAAI,eAAe,UAAU,QAAQ,GAAG,OAAO;CAC/C,IAAI,aAAa,gBAAgB,WAAW,YAAY,OAAO;CAC/D,IAAI,cAAc,IAAI,QAAQ,GAAG,OAAO;CACxC,IAAI,aAAa,OAAO,MAAM,GAAG,OAAO;CACxC,IAAI,cAAc,WAAW,OAAO;CAEpC,IAAI,gBAAgB,IAAI,QAAQ,KAAK,eAAe,KAAK,KAAK,cAAc,UAAU,OAAO,MAAM,GACjG,OAAO;CAET,OAAO;AACT"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_tool_card = require("../../../tool-card-
|
|
2
|
+
const require_tool_card = require("../../../tool-card-CJ7Kxi-U.cjs");
|
|
3
3
|
exports.ToolCard = require_tool_card.ToolCard;
|
|
4
4
|
exports.ToolCardInner = require_tool_card.ToolCardInner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as ToolCard, n as ToolCardInner } from "../../../tool-card-
|
|
1
|
+
export { t as ToolCard, n as ToolCardInner } from "../../../tool-card-C3sDFUWc.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_tool_call = require("../../../tool-call-
|
|
2
|
+
const require_tool_call = require("../../../tool-call-BCsDhIhs.cjs");
|
|
3
3
|
const require_domains_chat_messages_signal_data = require("../messages/signal-data.cjs.js");
|
|
4
4
|
const require_domains_chat_messages_renderers_tool_part = require("../messages/renderers/tool-part.cjs.js");
|
|
5
5
|
const require_domains_chat_tools_tool_card_kind = require("./tool-card-kind.cjs.js");
|
|
@@ -10,7 +10,8 @@ var FOLDABLE_KINDS = /* @__PURE__ */ new Set([
|
|
|
10
10
|
"background",
|
|
11
11
|
"file_tree",
|
|
12
12
|
"sandbox",
|
|
13
|
-
"code_mode"
|
|
13
|
+
"code_mode",
|
|
14
|
+
"knowledge"
|
|
14
15
|
]);
|
|
15
16
|
function foldsIntoGroup(part, context) {
|
|
16
17
|
const fields = require_domains_chat_messages_renderers_tool_part.readToolPart(part);
|