@pstdio/ui 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/MermaidComponent-CatfVUxA.js +60 -0
  2. package/dist/MermaidComponent-CatfVUxA.js.map +1 -0
  3. package/dist/chat-ui.js +1220 -1144
  4. package/dist/chat-ui.js.map +1 -1
  5. package/dist/components/chat-ui/components/chat-input-attachments.d.ts +12 -0
  6. package/dist/components/chat-ui/components/chat-input.d.ts +3 -0
  7. package/dist/components/chat-ui/components/chat-panel.d.ts +2 -0
  8. package/dist/components/chat-ui/components/message-parts-renderer.d.ts +1 -1
  9. package/dist/components/chat-ui/components/message-types.d.ts +90 -3
  10. package/dist/components/chat-ui/index.d.ts +2 -2
  11. package/dist/components/chat-ui/mocks/library/index.d.ts +2 -2
  12. package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +1 -1
  13. package/dist/components/chat-ui/performance/chat-performance-story-utils.d.ts +1 -1
  14. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +3 -3
  15. package/dist/components/chat-ui/tool-rendering/question-renderer.d.ts +1 -1
  16. package/dist/components/chat-ui/tool-rendering/shared.d.ts +2 -2
  17. package/dist/components/chat-ui/tool-rendering/todowrite-renderer.d.ts +1 -1
  18. package/dist/components/chat-ui/tool-rendering/types.d.ts +1 -1
  19. package/dist/components/data-renderer/data-renderer-board-column-header.d.ts +8 -0
  20. package/dist/components/data-renderer/data-renderer-board-group-section.d.ts +17 -0
  21. package/dist/components/data-renderer/data-renderer-board-move.d.ts +21 -0
  22. package/dist/components/data-renderer/data-renderer-board.d.ts +3 -2
  23. package/dist/components/data-renderer/data-renderer-content.d.ts +7 -2
  24. package/dist/components/data-renderer/data-renderer.d.ts +2 -2
  25. package/dist/components/diff-viewer/diff-card-body.d.ts +16 -0
  26. package/dist/components/diff-viewer/diff-card.d.ts +1 -0
  27. package/dist/components/diff-viewer/diff-size.d.ts +1 -1
  28. package/dist/components/mermaid-renderer/download-png.d.ts +7 -0
  29. package/dist/components/mermaid-renderer/index.d.ts +2 -0
  30. package/dist/components/mermaid-renderer/mermaid-error-state.d.ts +6 -0
  31. package/dist/components/mermaid-renderer/mermaid-fixtures.d.ts +9 -0
  32. package/dist/components/mermaid-renderer/mermaid-fullscreen.d.ts +10 -0
  33. package/dist/components/mermaid-renderer/mermaid-renderer.d.ts +8 -0
  34. package/dist/components/mermaid-renderer/mermaid-svg-view.d.ts +12 -0
  35. package/dist/components/mermaid-renderer/mermaid-toolbar.d.ts +12 -0
  36. package/dist/components/mermaid-renderer/mermaid-zoom.d.ts +6 -0
  37. package/dist/components/mermaid-renderer/svg-data-url.d.ts +6 -0
  38. package/dist/components/mermaid-renderer/use-mermaid-render.d.ts +5 -0
  39. package/dist/components/palette-shortcut.d.ts +8 -0
  40. package/dist/index.d.ts +3 -0
  41. package/dist/index.js +3393 -3221
  42. package/dist/index.js.map +1 -1
  43. package/dist/mermaid-renderer-DYEiYmYQ.js +411 -0
  44. package/dist/mermaid-renderer-DYEiYmYQ.js.map +1 -0
  45. package/dist/resource-badge-D33IFv74.js +188 -0
  46. package/dist/resource-badge-D33IFv74.js.map +1 -0
  47. package/dist/{rich-message-CEOSsdR2.js → rich-message-BFtvH9H7.js} +430 -518
  48. package/dist/rich-message-BFtvH9H7.js.map +1 -0
  49. package/dist/rich-text.js +3 -3
  50. package/dist/{theme-D2LYEa0j.js → theme-C5qHTCU9.js} +3 -3
  51. package/dist/{theme-D2LYEa0j.js.map → theme-C5qHTCU9.js.map} +1 -1
  52. package/dist/theme.js +1 -1
  53. package/package.json +3 -2
  54. package/dist/MermaidComponent-Cz_Iob5U.js +0 -127
  55. package/dist/MermaidComponent-Cz_Iob5U.js.map +0 -1
  56. package/dist/components/chat-ui/agent-types.d.ts +0 -220
  57. package/dist/get-file-type-icon-ufFb0IkR.js +0 -102
  58. package/dist/get-file-type-icon-ufFb0IkR.js.map +0 -1
  59. package/dist/rich-message-CEOSsdR2.js.map +0 -1
@@ -1,127 +0,0 @@
1
- import { jsxs as o, jsx as r } from "react/jsx-runtime";
2
- import { Box as n, Flex as O, NumberInput as x, Button as b, Textarea as H, Text as C } from "@chakra-ui/react";
3
- import { useLexicalComposerContext as Y } from "@lexical/react/LexicalComposerContext";
4
- import { useLexicalEditable as K } from "@lexical/react/useLexicalEditable";
5
- import { $getNodeByKey as U } from "lexical";
6
- import $ from "mermaid";
7
- import { useState as t, useRef as W, useId as q, useEffect as k } from "react";
8
- import { S as G } from "./get-file-type-icon-ufFb0IkR.js";
9
- import { $ as J } from "./rich-message-CEOSsdR2.js";
10
- let v = !1;
11
- function Q() {
12
- v || ($.initialize({
13
- startOnLoad: !1,
14
- securityLevel: "strict",
15
- theme: "default"
16
- }), v = !0);
17
- }
18
- function _(i) {
19
- return i instanceof Error ? i.message : "Failed to render mermaid diagram.";
20
- }
21
- const N = 0, T = 2, ee = 0.1;
22
- function re(i) {
23
- return Number(Math.min(T, Math.max(N, i)).toFixed(2));
24
- }
25
- function me(i) {
26
- const {
27
- code: a,
28
- nodeKey: Z
29
- } = i, [X] = Y(), B = K(), [s, m] = t(!1), [u, f] = t(a), [l, y] = t(a), [D, I] = t(""), [p, M] = t(""), [S, w] = t(!1), [F, P] = t(1), [c, E] = t({
30
- x: 0,
31
- y: 0
32
- }), [z, g] = t(!1), d = W({
33
- pointerId: -1,
34
- x: 0,
35
- y: 0
36
- }), R = q().replaceAll(":", "-");
37
- k(() => {
38
- f(a), y(a);
39
- }, [a]), k(() => {
40
- let e = !1;
41
- async function A() {
42
- Q(), w(!0), M("");
43
- try {
44
- const {
45
- svg: h
46
- } = await $.render(`mermaid-${R}`, l);
47
- e || I(h);
48
- } catch (h) {
49
- e || (I(""), M(_(h)));
50
- } finally {
51
- e || w(!1);
52
- }
53
- }
54
- return s || A(), () => {
55
- e = !0;
56
- };
57
- }, [s, l, R]);
58
- const L = () => {
59
- X.update(() => {
60
- const e = U(Z);
61
- J(e) && e.setCode(u);
62
- }), y(u), j(), m(!1);
63
- }, V = () => {
64
- f(l), m(!1);
65
- }, j = () => {
66
- P(1), E({
67
- x: 0,
68
- y: 0
69
- });
70
- };
71
- return /* @__PURE__ */ o(n, { borderWidth: "1px", borderColor: "border.muted", borderRadius: "md", overflow: "hidden", width: "100%", children: [
72
- /* @__PURE__ */ o(O, { justifyContent: "flex-end", alignItems: "center", gap: "xs", paddingX: "sm", paddingY: "xs", bg: "bg.muted", children: [
73
- !s && !p && !S ? /* @__PURE__ */ o(x.Root, { size: "xs", width: "64px", defaultValue: "100", min: N, max: T, step: ee, formatOptions: {
74
- style: "percent"
75
- }, onValueChange: ({
76
- valueAsNumber: e
77
- }) => {
78
- Number.isNaN(e) || P(re(e));
79
- }, children: [
80
- /* @__PURE__ */ r(x.Control, {}),
81
- /* @__PURE__ */ r(x.Input, { "aria-label": "Zoom percentage" })
82
- ] }) : null,
83
- B ? s ? /* @__PURE__ */ o(O, { gap: "xs", children: [
84
- /* @__PURE__ */ r(b, { size: "xs", variant: "surface", onClick: V, children: "Cancel" }),
85
- /* @__PURE__ */ r(b, { size: "xs", onClick: L, children: "Preview" })
86
- ] }) : /* @__PURE__ */ r(b, { size: "xs", variant: "surface", onClick: () => m(!0), children: "Edit" }) : null
87
- ] }),
88
- s ? /* @__PURE__ */ r(n, { padding: "sm", bg: "bg.muted", children: /* @__PURE__ */ r(H, { value: u, onChange: (e) => f(e.target.value), minHeight: "180px", resize: "vertical", fontFamily: "mono", fontSize: "sm", spellCheck: !1 }) }) : /* @__PURE__ */ o(n, { paddingX: "sm", paddingBottom: "sm", background: "bg.muted", children: [
89
- S ? /* @__PURE__ */ r(C, { color: "fg.muted", children: "Rendering diagram..." }) : null,
90
- p ? /* @__PURE__ */ o(n, { children: [
91
- /* @__PURE__ */ r(C, { color: "fg.error", textStyle: "label/S/medium", children: "Mermaid parse failed" }),
92
- /* @__PURE__ */ r(C, { color: "fg.muted", textStyle: "label/S/regular", marginTop: "2xs", children: p }),
93
- /* @__PURE__ */ r(G, { marginTop: "sm", borderRadius: "sm", bg: "bg.panel", showHorizontalScrollbar: !0, showVerticalScrollbar: !1, contentProps: {
94
- p: "sm"
95
- }, children: /* @__PURE__ */ r(n, { as: "pre", children: l }) })
96
- ] }) : /* @__PURE__ */ r(n, { borderRadius: "sm", overflow: "hidden", minHeight: "160px", onWheel: (e) => {
97
- e.preventDefault(), e.stopPropagation();
98
- }, children: /* @__PURE__ */ r(n, { transform: `translate(${c.x}px, ${c.y}px) scale(${F})`, transformOrigin: "top left", cursor: z ? "grabbing" : "grab", touchAction: "none", onPointerDown: (e) => {
99
- d.current = {
100
- pointerId: e.pointerId,
101
- x: e.clientX - c.x,
102
- y: e.clientY - c.y
103
- }, g(!0), e.currentTarget.setPointerCapture(e.pointerId);
104
- }, onPointerMove: (e) => {
105
- !z || d.current.pointerId !== e.pointerId || E({
106
- x: e.clientX - d.current.x,
107
- y: e.clientY - d.current.y
108
- });
109
- }, onPointerUp: (e) => {
110
- d.current.pointerId === e.pointerId && (g(!1), e.currentTarget.releasePointerCapture(e.pointerId));
111
- }, onPointerCancel: () => {
112
- g(!1);
113
- }, css: {
114
- "& img": {
115
- display: "block",
116
- width: "100%",
117
- height: "auto",
118
- userSelect: "none"
119
- }
120
- }, children: /* @__PURE__ */ r("img", { alt: "Mermaid diagram", src: `data:image/svg+xml;utf8,${encodeURIComponent(D)}`, draggable: !1 }) }) })
121
- ] })
122
- ] });
123
- }
124
- export {
125
- me as default
126
- };
127
- //# sourceMappingURL=MermaidComponent-Cz_Iob5U.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MermaidComponent-Cz_Iob5U.js","sources":["../src/components/rich-text/shared/plugins/MermaidPlugin/MermaidComponent.tsx"],"sourcesContent":["import { Box, Button, Flex, NumberInput, Text, Textarea } from \"@chakra-ui/react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\";\nimport { $getNodeByKey } from \"lexical\";\nimport mermaid from \"mermaid\";\nimport { useEffect, useId, useRef, useState } from \"react\";\nimport { ScrollArea } from \"@/components/scroll-area\";\nimport { $isMermaidNode } from \"./MermaidNode\";\n\nlet mermaidInitialized = false;\n\nfunction initializeMermaid() {\n if (mermaidInitialized) {\n return;\n }\n\n mermaid.initialize({\n startOnLoad: false,\n securityLevel: \"strict\",\n theme: \"default\",\n });\n\n mermaidInitialized = true;\n}\n\nfunction formatErrorMessage(error: unknown) {\n if (!(error instanceof Error)) {\n return \"Failed to render mermaid diagram.\";\n }\n\n return error.message;\n}\n\nconst MIN_ZOOM = 0;\nconst MAX_ZOOM = 2;\nconst ZOOM_STEP = 0.1;\n\nfunction clampZoom(value: number) {\n return Number(Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, value)).toFixed(2));\n}\n\ninterface MermaidComponentProps {\n code: string;\n nodeKey: string;\n}\n\nexport default function MermaidComponent(props: MermaidComponentProps) {\n const { code, nodeKey } = props;\n const [editor] = useLexicalComposerContext();\n const isEditable = useLexicalEditable();\n const [isEditing, setIsEditing] = useState(false);\n const [draftCode, setDraftCode] = useState(code);\n const [previewCode, setPreviewCode] = useState(code);\n const [svgMarkup, setSvgMarkup] = useState(\"\");\n const [renderError, setRenderError] = useState(\"\");\n const [isRendering, setIsRendering] = useState(false);\n const [zoom, setZoom] = useState(1);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [isPanning, setIsPanning] = useState(false);\n const panStartRef = useRef({ pointerId: -1, x: 0, y: 0 });\n const renderId = useId().replaceAll(\":\", \"-\");\n\n useEffect(() => {\n setDraftCode(code);\n setPreviewCode(code);\n }, [code]);\n\n useEffect(() => {\n let cancelled = false;\n\n async function renderDiagram() {\n initializeMermaid();\n setIsRendering(true);\n setRenderError(\"\");\n\n try {\n const { svg } = await mermaid.render(`mermaid-${renderId}`, previewCode);\n if (!cancelled) {\n setSvgMarkup(svg);\n }\n } catch (error) {\n if (!cancelled) {\n setSvgMarkup(\"\");\n setRenderError(formatErrorMessage(error));\n }\n } finally {\n if (!cancelled) {\n setIsRendering(false);\n }\n }\n }\n\n if (!isEditing) {\n void renderDiagram();\n }\n\n return () => {\n cancelled = true;\n };\n }, [isEditing, previewCode, renderId]);\n\n const commitCodeChanges = () => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isMermaidNode(node)) {\n node.setCode(draftCode);\n }\n });\n\n setPreviewCode(draftCode);\n resetView();\n setIsEditing(false);\n };\n\n const cancelEditing = () => {\n setDraftCode(previewCode);\n setIsEditing(false);\n };\n\n const resetView = () => {\n setZoom(1);\n setOffset({ x: 0, y: 0 });\n };\n\n return (\n <Box borderWidth=\"1px\" borderColor=\"border.muted\" borderRadius=\"md\" overflow=\"hidden\" width=\"100%\">\n <Flex justifyContent=\"flex-end\" alignItems=\"center\" gap=\"xs\" paddingX=\"sm\" paddingY=\"xs\" bg=\"bg.muted\">\n {!isEditing && !renderError && !isRendering ? (\n <NumberInput.Root\n size=\"xs\"\n width=\"64px\"\n defaultValue={\"100\"}\n min={MIN_ZOOM}\n max={MAX_ZOOM}\n step={ZOOM_STEP}\n formatOptions={{\n style: \"percent\",\n }}\n onValueChange={({ valueAsNumber }) => {\n if (Number.isNaN(valueAsNumber)) {\n return;\n }\n\n setZoom(clampZoom(valueAsNumber));\n }}\n >\n <NumberInput.Control />\n <NumberInput.Input aria-label=\"Zoom percentage\" />\n </NumberInput.Root>\n ) : null}\n\n {isEditable ? (\n isEditing ? (\n <Flex gap=\"xs\">\n <Button size=\"xs\" variant=\"surface\" onClick={cancelEditing}>\n Cancel\n </Button>\n <Button size=\"xs\" onClick={commitCodeChanges}>\n Preview\n </Button>\n </Flex>\n ) : (\n <Button size=\"xs\" variant=\"surface\" onClick={() => setIsEditing(true)}>\n Edit\n </Button>\n )\n ) : null}\n </Flex>\n\n {isEditing ? (\n <Box padding=\"sm\" bg=\"bg.muted\">\n <Textarea\n value={draftCode}\n onChange={(event) => setDraftCode(event.target.value)}\n minHeight=\"180px\"\n resize=\"vertical\"\n fontFamily=\"mono\"\n fontSize=\"sm\"\n spellCheck={false}\n />\n </Box>\n ) : (\n <Box paddingX=\"sm\" paddingBottom=\"sm\" background=\"bg.muted\">\n {isRendering ? <Text color=\"fg.muted\">Rendering diagram...</Text> : null}\n {renderError ? (\n <Box>\n <Text color=\"fg.error\" textStyle=\"label/S/medium\">\n Mermaid parse failed\n </Text>\n <Text color=\"fg.muted\" textStyle=\"label/S/regular\" marginTop=\"2xs\">\n {renderError}\n </Text>\n <ScrollArea\n marginTop=\"sm\"\n borderRadius=\"sm\"\n bg=\"bg.panel\"\n showHorizontalScrollbar\n showVerticalScrollbar={false}\n contentProps={{ p: \"sm\" }}\n >\n <Box as=\"pre\">{previewCode}</Box>\n </ScrollArea>\n </Box>\n ) : (\n <Box\n borderRadius=\"sm\"\n overflow=\"hidden\"\n minHeight=\"160px\"\n onWheel={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n >\n <Box\n transform={`translate(${offset.x}px, ${offset.y}px) scale(${zoom})`}\n transformOrigin=\"top left\"\n cursor={isPanning ? \"grabbing\" : \"grab\"}\n touchAction=\"none\"\n onPointerDown={(event) => {\n panStartRef.current = {\n pointerId: event.pointerId,\n x: event.clientX - offset.x,\n y: event.clientY - offset.y,\n };\n setIsPanning(true);\n event.currentTarget.setPointerCapture(event.pointerId);\n }}\n onPointerMove={(event) => {\n if (!isPanning || panStartRef.current.pointerId !== event.pointerId) {\n return;\n }\n\n setOffset({\n x: event.clientX - panStartRef.current.x,\n y: event.clientY - panStartRef.current.y,\n });\n }}\n onPointerUp={(event) => {\n if (panStartRef.current.pointerId !== event.pointerId) {\n return;\n }\n\n setIsPanning(false);\n event.currentTarget.releasePointerCapture(event.pointerId);\n }}\n onPointerCancel={() => {\n setIsPanning(false);\n }}\n css={{\n \"& img\": {\n display: \"block\",\n width: \"100%\",\n height: \"auto\",\n userSelect: \"none\",\n },\n }}\n >\n <img\n alt=\"Mermaid diagram\"\n src={`data:image/svg+xml;utf8,${encodeURIComponent(svgMarkup)}`}\n draggable={false}\n />\n </Box>\n </Box>\n )}\n </Box>\n )}\n </Box>\n );\n}\n"],"names":["mermaidInitialized","initializeMermaid","mermaid","initialize","startOnLoad","securityLevel","theme","formatErrorMessage","error","Error","message","MIN_ZOOM","MAX_ZOOM","ZOOM_STEP","clampZoom","value","Number","Math","min","max","toFixed","MermaidComponent","props","code","nodeKey","editor","useLexicalComposerContext","isEditable","useLexicalEditable","isEditing","setIsEditing","useState","draftCode","setDraftCode","previewCode","setPreviewCode","svgMarkup","setSvgMarkup","renderError","setRenderError","isRendering","setIsRendering","zoom","setZoom","offset","setOffset","x","y","isPanning","setIsPanning","panStartRef","useRef","pointerId","renderId","useId","replaceAll","useEffect","cancelled","renderDiagram","svg","render","commitCodeChanges","update","node","$getNodeByKey","$isMermaidNode","setCode","resetView","cancelEditing","jsxs","Box","Flex","NumberInput","style","valueAsNumber","isNaN","jsx","Button","Textarea","event","target","Text","ScrollArea","p","preventDefault","stopPropagation","current","clientX","clientY","currentTarget","setPointerCapture","releasePointerCapture","display","width","height","userSelect","encodeURIComponent"],"mappings":"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"}
@@ -1,220 +0,0 @@
1
- export type AgentId = "opencode" | "claude-code";
2
- export type SessionMessageRole = "user" | "assistant" | "tool" | "system" | "developer";
3
- export type TextPart = {
4
- type: "text";
5
- text: string;
6
- };
7
- export type ReasoningPart = {
8
- type: "reasoning";
9
- text: string;
10
- };
11
- export type ToolPartActionType = "read" | "write" | "execute" | "network" | "other";
12
- export type ToolPartStatus = "pending" | "running" | "completed" | "failed" | "denied";
13
- export type ToolPart = {
14
- type: "tool";
15
- tool: string;
16
- callId?: string;
17
- actionType?: ToolPartActionType;
18
- status?: ToolPartStatus;
19
- state?: {
20
- status?: string;
21
- input?: unknown;
22
- output?: unknown;
23
- errorText?: string;
24
- metadata?: unknown;
25
- };
26
- };
27
- export type StepStartPart = {
28
- type: "step-start";
29
- snapshot?: string;
30
- };
31
- export type StepFinishPart = {
32
- type: "step-finish";
33
- reason?: string;
34
- snapshot?: string;
35
- cost?: number;
36
- tokens?: unknown;
37
- };
38
- export type PatchPart = {
39
- type: "patch";
40
- hash?: string;
41
- files?: unknown;
42
- };
43
- export type FilePart = {
44
- type: "file";
45
- mediaType?: string;
46
- filename?: string;
47
- url: string;
48
- };
49
- export type LoadingPart = {
50
- type: "loading";
51
- };
52
- export type ErrorPart = {
53
- type: "error";
54
- errorType: "timeout" | "crash" | "permission" | "other";
55
- message?: string;
56
- };
57
- export type TokenUsagePart = {
58
- type: "token_usage";
59
- inputTokens: number;
60
- outputTokens: number;
61
- cacheReadTokens?: number;
62
- cacheWriteTokens?: number;
63
- };
64
- export type AlertPart = {
65
- type: "alert";
66
- status: "info" | "warning" | "error" | "success" | "loading";
67
- title: string;
68
- message?: string;
69
- };
70
- export type SessionMessagePart = TextPart | ReasoningPart | ToolPart | StepStartPart | StepFinishPart | PatchPart | FilePart | LoadingPart | ErrorPart | TokenUsagePart | AlertPart;
71
- export type SessionMessage = {
72
- id: string;
73
- role: SessionMessageRole;
74
- parts: SessionMessagePart[];
75
- index?: number;
76
- createdAt?: number;
77
- modelId?: string;
78
- providerId?: string;
79
- tokens?: {
80
- input?: number;
81
- output?: number;
82
- reasoning?: number;
83
- cache?: {
84
- read?: number;
85
- write?: number;
86
- };
87
- };
88
- };
89
- export type SessionStartInput = {
90
- prompt: string;
91
- title?: string;
92
- model?: string | null;
93
- cwd?: string;
94
- eventStore?: EventStore;
95
- };
96
- export type SessionStartResult = {
97
- sessionId: string;
98
- process?: SpawnedProcess;
99
- };
100
- export type SessionMessageInput = {
101
- sessionId: string;
102
- prompt: string;
103
- model?: string | null;
104
- cwd?: string;
105
- messageOffset?: number;
106
- questionResponse?: QuestionResponse;
107
- };
108
- export type QuestionResponse = {
109
- answers: string[][];
110
- };
111
- export type SessionMessagesInput = {
112
- cwd?: string | null;
113
- };
114
- export type AvailabilityInfo = {
115
- type: "INSTALLED" | "NOT_FOUND";
116
- };
117
- export type AgentModel = {
118
- id: string;
119
- };
120
- export type AgentCapability = "SessionFork" | "ContextUsage" | "Approvals";
121
- export type SessionListEntry = {
122
- id: string;
123
- title: string;
124
- directory: string;
125
- updatedAt: string;
126
- };
127
- export type SessionExport = {
128
- session: SessionListEntry;
129
- messages: SessionMessage[];
130
- };
131
- export type LaunchInput = {
132
- prompt: string;
133
- title?: string;
134
- model?: string | null;
135
- cwd?: string;
136
- };
137
- export type LaunchResult = {
138
- pid?: number;
139
- sessionId?: string;
140
- };
141
- export type RawLogEvent = {
142
- type: "stdout";
143
- data: string;
144
- } | {
145
- type: "stderr";
146
- data: string;
147
- } | {
148
- type: "session_id";
149
- sessionId: string;
150
- } | {
151
- type: "message_id";
152
- messageId: string;
153
- } | {
154
- type: "ready";
155
- } | {
156
- type: "finished";
157
- };
158
- export type JsonPatch = {
159
- op: "add" | "replace" | "remove";
160
- path: string;
161
- value?: unknown;
162
- };
163
- export type EventStore = {
164
- push(patch: JsonPatch): void;
165
- getHistory(): JsonPatch[];
166
- subscribe(): AsyncIterable<JsonPatch>;
167
- historyPlusStream(): AsyncIterable<JsonPatch>;
168
- snapshotAndSubscribe(): {
169
- history: JsonPatch[];
170
- stream: AsyncIterable<JsonPatch>;
171
- };
172
- };
173
- export type SpawnedProcess = {
174
- sessionId: string;
175
- stdin: import('node:stream').Writable;
176
- kill(): void;
177
- onExit: Promise<{
178
- code: number | null;
179
- signal: string | null;
180
- }>;
181
- };
182
- export type ResumeResult = {
183
- process?: SpawnedProcess;
184
- };
185
- export type ApprovalRequest = {
186
- id: string;
187
- toolName: string;
188
- toolInput: unknown;
189
- toolUseId: string;
190
- };
191
- export type ApprovalResponse = {
192
- id: string;
193
- decision: "approve" | "deny" | "timeout";
194
- };
195
- export type ApprovalService = {
196
- requestApproval(request: ApprovalRequest): Promise<ApprovalResponse>;
197
- handleResponse(response: ApprovalResponse): void;
198
- dispose(): void;
199
- };
200
- export type AgentService = {
201
- id: AgentId;
202
- name: string;
203
- capabilities(): AgentCapability[];
204
- checkAvailability(): AvailabilityInfo;
205
- listModels(): AgentModel[];
206
- startSession(input: SessionStartInput): Promise<SessionStartResult>;
207
- resumeSession(input: SessionMessageInput, eventStore: EventStore, approvalService?: ApprovalService): Promise<ResumeResult>;
208
- getMessages(sessionId: string, input?: SessionMessagesInput): Promise<SessionMessage[]>;
209
- listSessions(input?: {
210
- cwd?: string;
211
- }): Promise<SessionListEntry[]>;
212
- exportSession(sessionId: string): Promise<SessionExport>;
213
- launchSession(input: LaunchInput): Promise<LaunchResult>;
214
- setSessionTitle?(sessionId: string, title: string): Promise<void>;
215
- };
216
- export type AgentRegistry = {
217
- get(id: AgentId): AgentService | null;
218
- list(): AgentService[];
219
- checkAll(): Record<AgentId, AvailabilityInfo>;
220
- };
@@ -1,102 +0,0 @@
1
- import { jsx as g, jsxs as $ } from "react/jsx-runtime";
2
- import { c as q } from "react/compiler-runtime";
3
- import { Tooltip as F, Portal as D, ScrollArea as R } from "@chakra-ui/react";
4
- import * as V from "react";
5
- import { FileSpreadsheet as E, FileCode as H, FileChartLine as I, FileJson as L, FileText as _, FileCog as k, FileImage as J, FileArchive as W, File as B } from "lucide-react";
6
- const U = V.forwardRef(function(t, v) {
7
- const e = q(26);
8
- let l, r, i, d, s, a, f, u;
9
- e[0] !== t ? ({
10
- showArrow: f,
11
- children: l,
12
- disabled: d,
13
- portalled: u,
14
- content: r,
15
- contentProps: i,
16
- portalRef: s,
17
- ...a
18
- } = t, e[0] = t, e[1] = l, e[2] = r, e[3] = i, e[4] = d, e[5] = s, e[6] = a, e[7] = f, e[8] = u) : (l = e[1], r = e[2], i = e[3], d = e[4], s = e[5], a = e[6], f = e[7], u = e[8]);
19
- const x = u === void 0 ? !0 : u;
20
- if (d || K(r))
21
- return l;
22
- let n;
23
- e[9] !== l ? (n = /* @__PURE__ */ g(F.Trigger, { asChild: !0, children: l }), e[9] = l, e[10] = n) : n = e[10];
24
- const h = !x;
25
- let p;
26
- e[11] !== f ? (p = f && /* @__PURE__ */ g(F.Arrow, { children: /* @__PURE__ */ g(F.ArrowTip, {}) }), e[11] = f, e[12] = p) : p = e[12];
27
- let o;
28
- e[13] !== r || e[14] !== i || e[15] !== v || e[16] !== p ? (o = /* @__PURE__ */ g(F.Positioner, { children: /* @__PURE__ */ $(F.Content, { ref: v, ...i, children: [
29
- p,
30
- r
31
- ] }) }), e[13] = r, e[14] = i, e[15] = v, e[16] = p, e[17] = o) : o = e[17];
32
- let m;
33
- e[18] !== s || e[19] !== h || e[20] !== o ? (m = /* @__PURE__ */ g(D, { disabled: h, container: s, children: o }), e[18] = s, e[19] = h, e[20] = o, e[21] = m) : m = e[21];
34
- let w;
35
- return e[22] !== a || e[23] !== n || e[24] !== m ? (w = /* @__PURE__ */ $(F.Root, { openDelay: 100, closeDelay: 100, ...a, children: [
36
- n,
37
- m
38
- ] }), e[22] = a, e[23] = n, e[24] = m, e[25] = w) : w = e[25], w;
39
- });
40
- function G(c) {
41
- return typeof c == "string" ? c.trim().length === 0 : !1;
42
- }
43
- function K(c) {
44
- if (c == null || c === !1)
45
- return !0;
46
- const t = V.Children.toArray(c);
47
- return t.length === 0 ? !0 : t.every(G);
48
- }
49
- const X = V.forwardRef(function(t, v) {
50
- const e = q(40);
51
- let l, r, i, d, s, a, f, u, x, b, n, h;
52
- e[0] !== t ? ({
53
- children: l,
54
- viewportRef: h,
55
- contentRef: i,
56
- viewportProps: n,
57
- contentProps: r,
58
- verticalScrollbarProps: b,
59
- horizontalScrollbarProps: d,
60
- showVerticalScrollbar: a,
61
- showHorizontalScrollbar: f,
62
- showCorner: u,
63
- size: x,
64
- ...s
65
- } = t, e[0] = t, e[1] = l, e[2] = r, e[3] = i, e[4] = d, e[5] = s, e[6] = a, e[7] = f, e[8] = u, e[9] = x, e[10] = b, e[11] = n, e[12] = h) : (l = e[1], r = e[2], i = e[3], d = e[4], s = e[5], a = e[6], f = e[7], u = e[8], x = e[9], b = e[10], n = e[11], h = e[12]);
66
- const p = a === void 0 ? !0 : a, o = f === void 0 ? !1 : f, m = u === void 0 ? p && o : u, w = x === void 0 ? "xs" : x;
67
- let A;
68
- e[13] !== r || e[14] !== o ? (A = o ? r : {
69
- ...r,
70
- style: {
71
- minWidth: 0,
72
- ...r?.style
73
- }
74
- }, e[13] = r, e[14] = o, e[15] = A) : A = e[15];
75
- const P = A;
76
- let C;
77
- e[16] !== l || e[17] !== i || e[18] !== P ? (C = /* @__PURE__ */ g(R.Content, { ...P, ref: i, children: l }), e[16] = l, e[17] = i, e[18] = P, e[19] = C) : C = e[19];
78
- let S;
79
- e[20] !== C || e[21] !== n || e[22] !== h ? (S = /* @__PURE__ */ g(R.Viewport, { ...n, ref: h, children: C }), e[20] = C, e[21] = n, e[22] = h, e[23] = S) : S = e[23];
80
- let y;
81
- e[24] !== p || e[25] !== b ? (y = p ? /* @__PURE__ */ g(R.Scrollbar, { ...b, borderRadius: "xs" }) : null, e[24] = p, e[25] = b, e[26] = y) : y = e[26];
82
- let j;
83
- e[27] !== d || e[28] !== o ? (j = o ? /* @__PURE__ */ g(R.Scrollbar, { orientation: "horizontal", ...d, borderRadius: "xs" }) : null, e[27] = d, e[28] = o, e[29] = j) : j = e[29];
84
- let z;
85
- e[30] !== m ? (z = m ? /* @__PURE__ */ g(R.Corner, {}) : null, e[30] = m, e[31] = z) : z = e[31];
86
- let T;
87
- return e[32] !== v || e[33] !== s || e[34] !== w || e[35] !== S || e[36] !== y || e[37] !== j || e[38] !== z ? (T = /* @__PURE__ */ $(R.Root, { ref: v, size: w, ...s, children: [
88
- S,
89
- y,
90
- j,
91
- z
92
- ] }), e[32] = v, e[33] = s, e[34] = w, e[35] = S, e[36] = y, e[37] = j, e[38] = z, e[39] = T) : T = e[39], T;
93
- }), Y = (c) => {
94
- const t = c.split(".").pop()?.toLowerCase() ?? "";
95
- return ["csv", "tsv", "xlsx", "xls", "parquet"].includes(t) ? E : ["sql", "py", "js", "ts", "jsx", "tsx", "java", "cpp", "c", "h", "css", "scss", "sass", "php", "rb", "go", "rs", "kt", "swift"].includes(t) ? H : ["json", "jsonl", "ndjson"].includes(t) ? c.includes("/visualizations/") ? I : L : ["md", "txt", "rst", "org", "pdf", "doc", "docx", "rtf"].includes(t) ? _ : ["yaml", "yml", "toml", "ini", "conf", "config"].includes(t) ? k : ["png", "jpg", "jpeg", "gif", "svg", "webp", "ico"].includes(t) ? J : ["zip", "tar", "gz", "rar", "7z"].includes(t) ? W : B;
96
- };
97
- export {
98
- X as S,
99
- U as T,
100
- Y as g
101
- };
102
- //# sourceMappingURL=get-file-type-icon-ufFb0IkR.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-file-type-icon-ufFb0IkR.js","sources":["../src/components/tooltip.tsx","../src/components/scroll-area.tsx","../src/utils/get-file-type-icon.ts"],"sourcesContent":["import { Tooltip as ChakraTooltip, Portal } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface TooltipProps extends ChakraTooltip.RootProps {\n children?: React.ReactElement;\n showArrow?: boolean;\n portalled?: boolean;\n portalRef?: React.RefObject<HTMLElement>;\n content: React.ReactNode;\n contentProps?: ChakraTooltip.ContentProps;\n disabled?: boolean;\n}\n\nexport const Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(function Tooltip(props, ref) {\n const { showArrow, children, disabled, portalled = true, content, contentProps, portalRef, ...rest } = props;\n\n const isEmptyContent = (node: React.ReactNode): boolean => {\n if (node === null || node === undefined || node === false) return true;\n const arr = React.Children.toArray(node);\n if (arr.length === 0) return true;\n return arr.every((child) => (typeof child === \"string\" ? child.trim().length === 0 : false));\n };\n\n if (disabled || isEmptyContent(content)) return children;\n\n return (\n <ChakraTooltip.Root openDelay={100} closeDelay={100} {...rest}>\n <ChakraTooltip.Trigger asChild>{children}</ChakraTooltip.Trigger>\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraTooltip.Positioner>\n <ChakraTooltip.Content ref={ref} {...contentProps}>\n {showArrow && (\n <ChakraTooltip.Arrow>\n <ChakraTooltip.ArrowTip />\n </ChakraTooltip.Arrow>\n )}\n {content}\n </ChakraTooltip.Content>\n </ChakraTooltip.Positioner>\n </Portal>\n </ChakraTooltip.Root>\n );\n});\n","import { ScrollArea as ChakraScrollArea } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\ntype VerticalScrollbarProps = Omit<ChakraScrollArea.ScrollbarProps, \"orientation\">;\ntype HorizontalScrollbarProps = Omit<ChakraScrollArea.ScrollbarProps, \"orientation\">;\n\nexport interface ScrollAreaProps extends ChakraScrollArea.RootProps {\n viewportRef?: React.Ref<HTMLDivElement>;\n contentRef?: React.Ref<HTMLDivElement>;\n viewportProps?: ChakraScrollArea.ViewportProps;\n contentProps?: ChakraScrollArea.ContentProps;\n verticalScrollbarProps?: VerticalScrollbarProps;\n horizontalScrollbarProps?: HorizontalScrollbarProps;\n showVerticalScrollbar?: boolean;\n showHorizontalScrollbar?: boolean;\n showCorner?: boolean;\n}\n\nexport const ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(props, ref) {\n const {\n children,\n viewportRef,\n contentRef,\n viewportProps,\n contentProps,\n verticalScrollbarProps,\n horizontalScrollbarProps,\n showVerticalScrollbar = true,\n showHorizontalScrollbar = false,\n showCorner = showVerticalScrollbar && showHorizontalScrollbar,\n size = \"xs\",\n ...rest\n } = props;\n\n const mergedContentProps = showHorizontalScrollbar\n ? contentProps\n : { ...contentProps, style: { minWidth: 0, ...contentProps?.style } };\n\n return (\n <ChakraScrollArea.Root ref={ref} size={size} {...rest}>\n <ChakraScrollArea.Viewport {...viewportProps} ref={viewportRef}>\n <ChakraScrollArea.Content {...mergedContentProps} ref={contentRef}>\n {children}\n </ChakraScrollArea.Content>\n </ChakraScrollArea.Viewport>\n {showVerticalScrollbar ? <ChakraScrollArea.Scrollbar {...verticalScrollbarProps} borderRadius={\"xs\"} /> : null}\n {showHorizontalScrollbar ? (\n <ChakraScrollArea.Scrollbar orientation=\"horizontal\" {...horizontalScrollbarProps} borderRadius={\"xs\"} />\n ) : null}\n {showCorner ? <ChakraScrollArea.Corner /> : null}\n </ChakraScrollArea.Root>\n );\n});\n","import type { LucideIcon } from \"lucide-react\";\nimport {\n File,\n FileArchive,\n FileChartLine,\n FileCode,\n FileCog,\n FileImage,\n FileJson,\n FileSpreadsheet,\n FileText,\n} from \"lucide-react\";\n\nexport const getFileTypeIcon = (filename: string): LucideIcon => {\n const extension = filename.split(\".\").pop()?.toLowerCase() ?? \"\";\n\n if ([\"csv\", \"tsv\", \"xlsx\", \"xls\", \"parquet\"].includes(extension)) return FileSpreadsheet;\n if (\n [\n \"sql\",\n \"py\",\n \"js\",\n \"ts\",\n \"jsx\",\n \"tsx\",\n \"java\",\n \"cpp\",\n \"c\",\n \"h\",\n \"css\",\n \"scss\",\n \"sass\",\n \"php\",\n \"rb\",\n \"go\",\n \"rs\",\n \"kt\",\n \"swift\",\n ].includes(extension)\n ) {\n return FileCode;\n }\n if ([\"json\", \"jsonl\", \"ndjson\"].includes(extension)) {\n if (filename.includes(\"/visualizations/\")) return FileChartLine;\n return FileJson;\n }\n if ([\"md\", \"txt\", \"rst\", \"org\", \"pdf\", \"doc\", \"docx\", \"rtf\"].includes(extension)) return FileText;\n if ([\"yaml\", \"yml\", \"toml\", \"ini\", \"conf\", \"config\"].includes(extension)) return FileCog;\n if ([\"png\", \"jpg\", \"jpeg\", \"gif\", \"svg\", \"webp\", \"ico\"].includes(extension)) return FileImage;\n if ([\"zip\", \"tar\", \"gz\", \"rar\", \"7z\"].includes(extension)) return FileArchive;\n return File;\n};\n"],"names":["Tooltip","React","forwardRef","props","ref","$","_c","children","content","contentProps","disabled","portalRef","rest","showArrow","t0","portalled","undefined","_temp2","t1","ChakraTooltip","t2","t3","jsx","t4","jsxs","t5","Portal","t6","_temp","child","trim","length","node","arr","Children","toArray","every","ScrollArea","contentRef","horizontalScrollbarProps","verticalScrollbarProps","viewportProps","viewportRef","showVerticalScrollbar","showHorizontalScrollbar","showCorner","size","style","minWidth","mergedContentProps","ChakraScrollArea","t7","t8","t9","t10","getFileTypeIcon","filename","extension","split","pop","toLowerCase","includes","FileSpreadsheet","FileCode","FileChartLine","FileJson","FileText","FileCog","FileImage","FileArchive","File"],"mappings":"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"}