@stigmer/react 3.1.2 → 3.1.4
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/composer/SessionComposer.d.ts +37 -5
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +13 -5
- package/composer/SessionComposer.js.map +1 -1
- package/execution/ArtifactApplyButton.d.ts +25 -0
- package/execution/ArtifactApplyButton.d.ts.map +1 -0
- package/execution/ArtifactApplyButton.js +21 -0
- package/execution/ArtifactApplyButton.js.map +1 -0
- package/execution/ArtifactContentBody.d.ts +36 -0
- package/execution/ArtifactContentBody.d.ts.map +1 -0
- package/execution/ArtifactContentBody.js +62 -0
- package/execution/ArtifactContentBody.js.map +1 -0
- package/execution/ArtifactDocument.d.ts +48 -0
- package/execution/ArtifactDocument.d.ts.map +1 -0
- package/execution/ArtifactDocument.js +89 -0
- package/execution/ArtifactDocument.js.map +1 -0
- package/execution/ArtifactPreviewModal.d.ts +9 -9
- package/execution/ArtifactPreviewModal.d.ts.map +1 -1
- package/execution/ArtifactPreviewModal.js +18 -145
- package/execution/ArtifactPreviewModal.js.map +1 -1
- package/execution/ArtifactRow.d.ts +49 -0
- package/execution/ArtifactRow.d.ts.map +1 -0
- package/execution/ArtifactRow.js +56 -0
- package/execution/ArtifactRow.js.map +1 -0
- package/execution/ArtifactsWidget.d.ts +6 -9
- package/execution/ArtifactsWidget.d.ts.map +1 -1
- package/execution/ArtifactsWidget.js +15 -19
- package/execution/ArtifactsWidget.js.map +1 -1
- package/execution/FileChangeProgressBar.d.ts +47 -0
- package/execution/FileChangeProgressBar.d.ts.map +1 -0
- package/execution/FileChangeProgressBar.js +49 -0
- package/execution/FileChangeProgressBar.js.map +1 -0
- package/execution/FileChangesView.d.ts.map +1 -1
- package/execution/FileChangesView.js +19 -4
- package/execution/FileChangesView.js.map +1 -1
- package/execution/FileReviewAtoms.d.ts +27 -0
- package/execution/FileReviewAtoms.d.ts.map +1 -0
- package/execution/FileReviewAtoms.js +64 -0
- package/execution/FileReviewAtoms.js.map +1 -0
- package/execution/FileReviewCard.d.ts +2 -2
- package/execution/FileReviewCard.d.ts.map +1 -1
- package/execution/FileReviewCard.js +32 -62
- package/execution/FileReviewCard.js.map +1 -1
- package/execution/MessageEntry.d.ts +0 -9
- package/execution/MessageEntry.d.ts.map +1 -1
- package/execution/MessageEntry.js +1 -11
- package/execution/MessageEntry.js.map +1 -1
- package/execution/MessageThread.d.ts +3 -4
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +25 -11
- package/execution/MessageThread.js.map +1 -1
- package/execution/PlanArtifactCard.d.ts +16 -10
- package/execution/PlanArtifactCard.d.ts.map +1 -1
- package/execution/PlanArtifactCard.js +31 -7
- package/execution/PlanArtifactCard.js.map +1 -1
- package/execution/PlanCompletionCard.d.ts +4 -4
- package/execution/PlanCompletionCard.d.ts.map +1 -1
- package/execution/PlanCompletionCard.js +4 -4
- package/execution/PlanCompletionCard.js.map +1 -1
- package/execution/PlanStreamingCard.d.ts +7 -2
- package/execution/PlanStreamingCard.d.ts.map +1 -1
- package/execution/PlanStreamingCard.js +11 -6
- package/execution/PlanStreamingCard.js.map +1 -1
- package/execution/index.d.ts +12 -2
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +6 -1
- package/execution/index.js.map +1 -1
- package/execution/use-build-from-plan-hotkey.d.ts +1 -1
- package/execution/use-build-from-plan-hotkey.js +1 -1
- package/execution/useArtifactContent.d.ts +6 -1
- package/execution/useArtifactContent.d.ts.map +1 -1
- package/execution/useArtifactContent.js +7 -2
- package/execution/useArtifactContent.js.map +1 -1
- package/execution/useArtifactCopy.d.ts +51 -0
- package/execution/useArtifactCopy.d.ts.map +1 -0
- package/execution/useArtifactCopy.js +75 -0
- package/execution/useArtifactCopy.js.map +1 -0
- package/execution/useArtifactDownload.d.ts.map +1 -1
- package/execution/useArtifactDownload.js +17 -5
- package/execution/useArtifactDownload.js.map +1 -1
- package/execution/useArtifactInspection.d.ts +85 -0
- package/execution/useArtifactInspection.d.ts.map +1 -0
- package/execution/useArtifactInspection.js +143 -0
- package/execution/useArtifactInspection.js.map +1 -0
- package/execution/useCreateAgentExecution.d.ts +16 -3
- package/execution/useCreateAgentExecution.d.ts.map +1 -1
- package/execution/useCreateAgentExecution.js +1 -0
- package/execution/useCreateAgentExecution.js.map +1 -1
- package/index.d.ts +4 -4
- package/index.d.ts.map +1 -1
- package/index.js +3 -3
- package/index.js.map +1 -1
- package/internal/MermaidDiagram.d.ts +47 -0
- package/internal/MermaidDiagram.d.ts.map +1 -0
- package/internal/MermaidDiagram.js +118 -0
- package/internal/MermaidDiagram.js.map +1 -0
- package/internal/file-tree/FileTreeNode.d.ts.map +1 -1
- package/internal/file-tree/FileTreeNode.js +2 -2
- package/internal/file-tree/FileTreeNode.js.map +1 -1
- package/internal/markdown-components.d.ts.map +1 -1
- package/internal/markdown-components.js +34 -0
- package/internal/markdown-components.js.map +1 -1
- package/internal/mermaid-loader.d.ts +26 -0
- package/internal/mermaid-loader.d.ts.map +1 -0
- package/internal/mermaid-loader.js +34 -0
- package/internal/mermaid-loader.js.map +1 -0
- package/internal/mermaid-theme-css.d.ts +41 -0
- package/internal/mermaid-theme-css.d.ts.map +1 -0
- package/internal/mermaid-theme-css.js +179 -0
- package/internal/mermaid-theme-css.js.map +1 -0
- package/internal/slug.d.ts +9 -5
- package/internal/slug.d.ts.map +1 -1
- package/internal/slug.js +10 -6
- package/internal/slug.js.map +1 -1
- package/library/detect-plan-artifact.d.ts +27 -9
- package/library/detect-plan-artifact.d.ts.map +1 -1
- package/library/detect-plan-artifact.js +26 -6
- package/library/detect-plan-artifact.js.map +1 -1
- package/library/index.d.ts +1 -1
- package/library/index.d.ts.map +1 -1
- package/library/index.js +1 -1
- package/library/index.js.map +1 -1
- package/package.json +5 -4
- package/session/PlanEditor.js +1 -1
- package/session/PlanEditor.js.map +1 -1
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +122 -30
- package/session/SessionViewer.js.map +1 -1
- package/session/artifact-document.d.ts +13 -0
- package/session/artifact-document.d.ts.map +1 -0
- package/session/artifact-document.js +22 -0
- package/session/artifact-document.js.map +1 -0
- package/session/facets/ArtifactsTab.d.ts +30 -4
- package/session/facets/ArtifactsTab.d.ts.map +1 -1
- package/session/facets/ArtifactsTab.js +32 -10
- package/session/facets/ArtifactsTab.js.map +1 -1
- package/session/index.d.ts +2 -1
- package/session/index.d.ts.map +1 -1
- package/session/index.js +4 -1
- package/session/index.js.map +1 -1
- package/session/plan-document.d.ts +14 -2
- package/session/plan-document.d.ts.map +1 -1
- package/session/plan-document.js +14 -3
- package/session/plan-document.js.map +1 -1
- package/session/usePlanDraft.d.ts +1 -1
- package/session/useSessionArtifacts.d.ts +17 -0
- package/session/useSessionArtifacts.d.ts.map +1 -1
- package/session/useSessionArtifacts.js +16 -5
- package/session/useSessionArtifacts.js.map +1 -1
- package/session/useSessionConversation.d.ts +26 -3
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +51 -6
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +1 -0
- package/session/useSessionPageFlow.js.map +1 -1
- package/session/useSessionPanel.d.ts +20 -0
- package/session/useSessionPanel.d.ts.map +1 -1
- package/session/useSessionPanel.js +13 -0
- package/session/useSessionPanel.js.map +1 -1
- package/session/useSessionRailViews.d.ts +13 -1
- package/session/useSessionRailViews.d.ts.map +1 -1
- package/session/useSessionRailViews.js +5 -3
- package/session/useSessionRailViews.js.map +1 -1
- package/src/composer/SessionComposer.tsx +76 -7
- package/src/composer/__tests__/SessionComposer-editing.test.tsx +128 -0
- package/src/execution/ArtifactApplyButton.tsx +79 -0
- package/src/execution/ArtifactContentBody.tsx +255 -0
- package/src/execution/ArtifactDocument.tsx +344 -0
- package/src/execution/ArtifactPreviewModal.tsx +49 -415
- package/src/execution/ArtifactRow.tsx +165 -0
- package/src/execution/ArtifactsWidget.tsx +24 -33
- package/src/execution/FileChangeProgressBar.tsx +121 -0
- package/src/execution/FileChangesView.tsx +18 -4
- package/src/execution/FileReviewAtoms.tsx +89 -0
- package/src/execution/FileReviewCard.tsx +57 -90
- package/src/execution/MessageEntry.tsx +0 -62
- package/src/execution/MessageThread.tsx +29 -15
- package/src/execution/PlanArtifactCard.tsx +130 -52
- package/src/execution/PlanCompletionCard.tsx +5 -5
- package/src/execution/PlanStreamingCard.tsx +15 -11
- package/src/execution/__tests__/ArtifactContentBody.test.tsx +131 -0
- package/src/execution/__tests__/ArtifactDocument.test.tsx +100 -0
- package/src/execution/__tests__/ArtifactPreviewModal.test.tsx +6 -6
- package/src/execution/__tests__/ArtifactRow.test.tsx +139 -0
- package/src/execution/__tests__/ArtifactsWidget.test.tsx +78 -0
- package/src/execution/__tests__/FileChangeProgressBar.test.tsx +125 -0
- package/src/execution/__tests__/FileReviewCard.test.tsx +66 -7
- package/src/execution/__tests__/MessageThread.test.tsx +1 -1
- package/src/execution/__tests__/PlanArtifactCard.test.tsx +52 -18
- package/src/execution/__tests__/PlanCompletionCard.test.tsx +2 -2
- package/src/execution/__tests__/PlanStreamingCard.test.tsx +11 -4
- package/src/execution/__tests__/buildThreadItems-plan-completion.test.ts +104 -8
- package/src/execution/__tests__/message-entry.test.tsx +56 -39
- package/src/execution/__tests__/useArtifactCopy.test.tsx +90 -0
- package/src/execution/__tests__/useArtifactDownload.test.tsx +2 -0
- package/src/execution/__tests__/useArtifactInspection.test.tsx +151 -0
- package/src/execution/__tests__/useCreateAgentExecution.test.tsx +35 -0
- package/src/execution/index.ts +20 -2
- package/src/execution/use-build-from-plan-hotkey.ts +1 -1
- package/src/execution/useArtifactContent.ts +7 -0
- package/src/execution/useArtifactCopy.ts +109 -0
- package/src/execution/useArtifactDownload.ts +17 -5
- package/src/execution/useArtifactInspection.ts +252 -0
- package/src/execution/useCreateAgentExecution.ts +17 -3
- package/src/index.ts +17 -2
- package/src/internal/MermaidDiagram.tsx +164 -0
- package/src/internal/__tests__/a11y/mermaid-theme.a11y.test.tsx +122 -0
- package/src/internal/__tests__/markdown-components.test.tsx +93 -1
- package/src/internal/__tests__/mermaid-diagram.test.tsx +282 -0
- package/src/internal/file-tree/FileTreeNode.tsx +13 -2
- package/src/internal/markdown-components.tsx +36 -1
- package/src/internal/mermaid-loader.ts +44 -0
- package/src/internal/mermaid-theme-css.ts +178 -0
- package/src/internal/slug.ts +10 -6
- package/src/library/__tests__/detect-plan-artifact.test.ts +21 -0
- package/src/library/detect-plan-artifact.ts +32 -10
- package/src/library/index.ts +2 -0
- package/src/session/PlanEditor.tsx +1 -1
- package/src/session/SessionViewer.tsx +227 -51
- package/src/session/__tests__/PlanEditor.test.tsx +4 -4
- package/src/session/__tests__/PlanStreamingDocument.test.tsx +1 -1
- package/src/session/__tests__/SessionViewer-artifactTabs.test.tsx +210 -0
- package/src/session/__tests__/SessionViewer-editResubmit.test.tsx +233 -0
- package/src/session/__tests__/SessionViewer-fileReviewDock.test.tsx +57 -0
- package/src/session/__tests__/useSessionArtifacts.test.ts +57 -0
- package/src/session/__tests__/useSessionConversation.test.tsx +216 -1
- package/src/session/__tests__/useSessionPanel.test.ts +70 -1
- package/src/session/artifact-document.ts +23 -0
- package/src/session/facets/ArtifactsTab.tsx +66 -18
- package/src/session/facets/__tests__/ArtifactsTab.test.tsx +111 -47
- package/src/session/index.ts +5 -1
- package/src/session/plan-document.ts +14 -3
- package/src/session/usePlanDraft.ts +1 -1
- package/src/session/useSessionArtifacts.ts +16 -5
- package/src/session/useSessionConversation.ts +80 -10
- package/src/session/useSessionPageFlow.ts +1 -0
- package/src/session/useSessionPanel.ts +41 -0
- package/src/session/useSessionRailViews.tsx +21 -1
- package/src/workspace/EditorTabs.tsx +38 -9
- package/src/workspace/ExplorerTree.tsx +10 -4
- package/src/workspace/FileViewer.tsx +27 -6
- package/src/workspace/WorkspaceContentSearch.tsx +44 -20
- package/src/workspace/WorkspaceEditor.tsx +19 -16
- package/src/workspace/WorkspaceFileSearch.tsx +51 -28
- package/src/workspace/WorkspaceSurface.tsx +106 -48
- package/src/workspace/__tests__/EditorTabs.test.tsx +4 -2
- package/src/workspace/__tests__/ExplorerTree.test.tsx +52 -0
- package/src/workspace/__tests__/FileViewer.test.tsx +18 -0
- package/src/workspace/__tests__/WorkspaceContentSearch.test.tsx +38 -5
- package/src/workspace/__tests__/WorkspaceEditor-initialPanel.test.tsx +19 -0
- package/src/workspace/__tests__/WorkspaceFileSearch.test.tsx +27 -6
- package/src/workspace/__tests__/WorkspaceSurface.test.tsx +70 -0
- package/src/workspace/__tests__/a11y/harness.tsx +140 -0
- package/src/workspace/__tests__/a11y/mock-capabilities.ts +138 -0
- package/src/workspace/__tests__/a11y/workspace-editor.a11y.test.tsx +65 -0
- package/src/workspace/__tests__/a11y/workspace-explorer-search.a11y.test.tsx +112 -0
- package/src/workspace/__tests__/a11y/workspace-viewer-tabs.a11y.test.tsx +69 -0
- package/styles.css +1 -1
- package/workspace/EditorTabs.d.ts +21 -3
- package/workspace/EditorTabs.d.ts.map +1 -1
- package/workspace/EditorTabs.js +18 -6
- package/workspace/EditorTabs.js.map +1 -1
- package/workspace/ExplorerTree.js +8 -4
- package/workspace/ExplorerTree.js.map +1 -1
- package/workspace/FileViewer.d.ts.map +1 -1
- package/workspace/FileViewer.js +19 -8
- package/workspace/FileViewer.js.map +1 -1
- package/workspace/WorkspaceContentSearch.d.ts.map +1 -1
- package/workspace/WorkspaceContentSearch.js +23 -2
- package/workspace/WorkspaceContentSearch.js.map +1 -1
- package/workspace/WorkspaceEditor.d.ts.map +1 -1
- package/workspace/WorkspaceEditor.js +8 -10
- package/workspace/WorkspaceEditor.js.map +1 -1
- package/workspace/WorkspaceFileSearch.d.ts.map +1 -1
- package/workspace/WorkspaceFileSearch.js +23 -3
- package/workspace/WorkspaceFileSearch.js.map +1 -1
- package/workspace/WorkspaceSurface.d.ts.map +1 -1
- package/workspace/WorkspaceSurface.js +54 -18
- package/workspace/WorkspaceSurface.js.map +1 -1
- package/execution/ArtifactCard.d.ts +0 -81
- package/execution/ArtifactCard.d.ts.map +0 -1
- package/execution/ArtifactCard.js +0 -130
- package/execution/ArtifactCard.js.map +0 -1
- package/src/execution/ArtifactCard.tsx +0 -320
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { cn } from "@stigmer/theme";
|
|
4
|
+
import { useArtifactInspection } from "./useArtifactInspection.js";
|
|
5
|
+
import { ArtifactContentBody } from "./ArtifactContentBody.js";
|
|
6
|
+
import { ArtifactApplyButton } from "./ArtifactApplyButton.js";
|
|
7
|
+
import { useArtifactDownload } from "./useArtifactDownload.js";
|
|
8
|
+
import { formatArtifactSize } from "./artifact-utils.js";
|
|
9
|
+
/**
|
|
10
|
+
* The editor-pane rendering of a single execution artifact — the
|
|
11
|
+
* {@link SurfaceVirtualDocument} counterpart of the {@link ArtifactPreviewModal}
|
|
12
|
+
* popup, mounted as an artifact-family virtual document under
|
|
13
|
+
* {@link ARTIFACT_DOCUMENT_ENTRY_ID}. Opening an artifact from the session
|
|
14
|
+
* panel's Artifacts facet lands here (VS Code "each file is a tab") rather than
|
|
15
|
+
* a modal.
|
|
16
|
+
*
|
|
17
|
+
* Shares the modal's exact behavior and body via the two extracted pieces —
|
|
18
|
+
* {@link useArtifactInspection} (content + detection + apply/push + copy) and
|
|
19
|
+
* {@link ArtifactContentBody} (loading / error / binary / text / directory) —
|
|
20
|
+
* so the two surfaces can never drift. Only the chrome differs: a document
|
|
21
|
+
* toolbar (name + size + detection badge; Copy / Download / Apply) over the
|
|
22
|
+
* shared body, instead of the modal's header + footer action bar.
|
|
23
|
+
*
|
|
24
|
+
* Holds no must-survive local state: the panel region unmounts on collapse and
|
|
25
|
+
* switching tabs remounts the active document, resetting transient apply/copy
|
|
26
|
+
* state exactly as the modal resets on close. A `cacheKey` on the content fetch
|
|
27
|
+
* keeps reopening a recently-viewed artifact instant (DD-014).
|
|
28
|
+
*
|
|
29
|
+
* All visual properties flow through `--stgm-*` tokens (DD-005).
|
|
30
|
+
*/
|
|
31
|
+
export function ArtifactDocument({ artifact, executionId, org, isTerminal, onApplied, className, }) {
|
|
32
|
+
// Instant reopen: cache the content per (execution, storage key, version).
|
|
33
|
+
// contentHash is included so a later overwrite of the same path never serves
|
|
34
|
+
// a stale cached body.
|
|
35
|
+
const cacheKey = `artifact-doc:${executionId}:${artifact.storageKey}:${artifact.contentHash}`;
|
|
36
|
+
const inspection = useArtifactInspection(artifact, executionId, org, {
|
|
37
|
+
cacheKey,
|
|
38
|
+
onApplied,
|
|
39
|
+
});
|
|
40
|
+
const { download, isDownloading } = useArtifactDownload(executionId);
|
|
41
|
+
const showCopy = !inspection.isDirectory && inspection.content !== null;
|
|
42
|
+
return (_jsxs("div", { role: "article", "aria-label": `Artifact ${artifact.name}`, className: cn("flex min-h-0 min-w-0 flex-1 flex-col", className), children: [_jsxs("div", { className: "sticky top-0 z-10 flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1.5 border-b border-border bg-background px-4 py-2", children: [_jsx("span", { className: "shrink-0 text-muted-foreground", children: inspection.isDirectory ? _jsx(FolderIcon, {}) : _jsx(FileIcon, {}) }), _jsxs("span", { className: "truncate text-sm font-medium text-foreground", children: [artifact.name, inspection.isDirectory && "/"] }), _jsx("span", { className: "shrink-0 text-[0.65rem] tabular-nums text-muted-foreground-faint", children: formatArtifactSize(artifact.sizeBytes) }), inspection.isDetecting && !inspection.detectionLabel && (_jsx("span", { className: "h-4 w-24 shrink-0 animate-pulse rounded-full bg-muted", "aria-hidden": "true" })), inspection.detectionLabel && (_jsx("span", { className: "inline-flex shrink-0 items-center rounded-full bg-primary-subtle px-2 py-0.5 text-xs font-medium text-primary", children: inspection.detectionLabel })), _jsxs("div", { className: "ml-auto flex min-w-0 flex-wrap items-center gap-3", children: [showCopy && (_jsxs("button", { type: "button", onClick: inspection.copy, "aria-label": inspection.copied ? "Copied to clipboard" : "Copy content", className: cn("inline-flex items-center gap-1.5 text-xs font-medium transition-colors", inspection.copied
|
|
43
|
+
? "text-success"
|
|
44
|
+
: "text-muted-foreground hover:text-foreground", FOCUS_RING_CLASSES), children: [inspection.copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}), inspection.copied ? "Copied" : "Copy"] })), _jsxs("button", { type: "button", onClick: () => download(artifact.storageKey, artifact.name), disabled: isDownloading, className: cn("inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground disabled:opacity-50", FOCUS_RING_CLASSES), children: [_jsx(DownloadIcon, {}), isDownloading
|
|
45
|
+
? "Preparing\u2026"
|
|
46
|
+
: inspection.isDirectory
|
|
47
|
+
? "Download ZIP"
|
|
48
|
+
: "Download"] }), _jsx(ApplyCluster, { isDetected: inspection.isDetected, ctaLabel: inspection.ctaLabel, isTerminal: isTerminal, isApplying: inspection.isApplying, applyResult: inspection.applyResult, applyError: inspection.applyError, onApply: inspection.apply })] })] }), _jsx(ArtifactContentBody, { artifact: artifact, content: inspection.content, contentType: inspection.contentType, isLoading: inspection.isLoading, error: inspection.error, isTruncated: inspection.isTruncated, skillDetection: inspection.skillDetection, className: "min-w-0" }), _jsx("div", { role: "status", "aria-live": "polite", "aria-atomic": "true", className: "sr-only", children: inspection.copied && "Content copied to clipboard" })] }));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The Apply/Push affordance: the terminal-gated {@link ArtifactApplyButton}, or
|
|
52
|
+
* the post-apply success / error-with-retry states. Mirrors the modal action
|
|
53
|
+
* bar's apply cluster so both surfaces read identically.
|
|
54
|
+
*/
|
|
55
|
+
function ApplyCluster({ isDetected, ctaLabel, isTerminal, isApplying, applyResult, applyError, onApply, }) {
|
|
56
|
+
if (applyResult) {
|
|
57
|
+
return (_jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs font-medium text-success", children: [_jsx(CheckIcon, {}), "Applied ", "\u00B7", " ", applyResult.name || applyResult.kind] }));
|
|
58
|
+
}
|
|
59
|
+
if (applyError) {
|
|
60
|
+
return (_jsxs("span", { className: "inline-flex items-center gap-2", role: "alert", children: [_jsx("span", { className: "text-xs text-destructive", children: applyError.message }), _jsx("button", { type: "button", onClick: onApply, className: cn("text-xs font-medium text-destructive underline transition-colors hover:text-destructive-muted", FOCUS_RING_CLASSES), children: "Retry" })] }));
|
|
61
|
+
}
|
|
62
|
+
if (isDetected && ctaLabel) {
|
|
63
|
+
return (_jsx("span", { "data-cursor-target": "apply-resource-button", children: _jsx(ArtifactApplyButton, { label: ctaLabel, isTerminal: isTerminal, isApplying: isApplying, onApply: onApply }) }));
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
// Shared style constants
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
const FOCUS_RING_CLASSES = "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:rounded-sm";
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
// Inline SVG icons (SDK independence — no lucide dependency)
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
function FileIcon() {
|
|
75
|
+
return (_jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("path", { d: "M9.5 1.5H5C4.17 1.5 3.5 2.17 3.5 3V13C3.5 13.83 4.17 14.5 5 14.5H11C11.83 14.5 12.5 13.83 12.5 13V4.5L9.5 1.5Z" }), _jsx("path", { d: "M9.5 1.5V4.5H12.5" })] }));
|
|
76
|
+
}
|
|
77
|
+
function FolderIcon() {
|
|
78
|
+
return (_jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M14.5 12.5C14.5 13.33 13.83 14 13 14H3C2.17 14 1.5 13.33 1.5 12.5V3.5C1.5 2.67 2.17 2 3 2H6L8 4.5H13C13.83 4.5 14.5 5.17 14.5 6V12.5Z" }) }));
|
|
79
|
+
}
|
|
80
|
+
function CopyIcon() {
|
|
81
|
+
return (_jsxs("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round", className: "shrink-0", "aria-hidden": "true", children: [_jsx("rect", { x: "4", y: "4", width: "6.5", height: "6.5", rx: "1" }), _jsx("path", { d: "M8 4V2.5C8 1.95 7.55 1.5 7 1.5H2.5C1.95 1.5 1.5 1.95 1.5 2.5V7C1.5 7.55 1.95 8 2.5 8H4" })] }));
|
|
82
|
+
}
|
|
83
|
+
function DownloadIcon() {
|
|
84
|
+
return (_jsxs("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "shrink-0", "aria-hidden": "true", children: [_jsx("path", { d: "M6 1.5V8.5" }), _jsx("path", { d: "M3 6L6 9L9 6" }), _jsx("path", { d: "M2 10.5H10" })] }));
|
|
85
|
+
}
|
|
86
|
+
function CheckIcon() {
|
|
87
|
+
return (_jsx("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "shrink-0", "aria-hidden": "true", children: _jsx("path", { d: "M2 6.5L4.5 9L10 3" }) }));
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=ArtifactDocument.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArtifactDocument.js","sourceRoot":"","sources":["../../src/execution/ArtifactDocument.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ExecutionArtifact } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/artifact_pb";
|
|
2
|
-
import {
|
|
2
|
+
import type { ApplyResourceResult } from "../library/useApplyResource.js";
|
|
3
3
|
/** Props for {@link ArtifactPreviewContent}. */
|
|
4
4
|
export interface ArtifactPreviewContentProps {
|
|
5
5
|
/** The execution artifact to preview. */
|
|
@@ -25,10 +25,10 @@ export interface ArtifactPreviewContentProps {
|
|
|
25
25
|
*/
|
|
26
26
|
readonly onApplied?: (result: ApplyResourceResult) => void;
|
|
27
27
|
/**
|
|
28
|
-
* Optional plan-build action. When provided, a "Build
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
28
|
+
* Optional plan-build action. When provided, a "Build" primary button
|
|
29
|
+
* appears in the action bar (used for plan artifacts: turn the plan into
|
|
30
|
+
* an Agent run). Clicking it calls `onImplement` then closes the modal.
|
|
31
|
+
* Omit for non-actionable artifacts.
|
|
32
32
|
*/
|
|
33
33
|
readonly onImplement?: () => void;
|
|
34
34
|
/** Additional CSS classes for the root container. */
|
|
@@ -43,7 +43,7 @@ export interface ArtifactPreviewContentProps {
|
|
|
43
43
|
* it inside a `<dialog>`, modal, sheet, overlay, or inline context as
|
|
44
44
|
* needed.
|
|
45
45
|
*
|
|
46
|
-
* Orchestrates the
|
|
46
|
+
* Orchestrates the shared detection pipeline (see {@link useArtifactInspection}):
|
|
47
47
|
*
|
|
48
48
|
* - **FILE artifacts**: Fetches text content via {@link useArtifactContent},
|
|
49
49
|
* renders via {@link ArtifactContentRenderer} (markdown, YAML, JSON, or
|
|
@@ -73,7 +73,7 @@ export interface ArtifactPreviewContentProps {
|
|
|
73
73
|
* ```
|
|
74
74
|
*
|
|
75
75
|
* @see {@link ArtifactPreviewModal} — wraps this component in a native `<dialog>`
|
|
76
|
-
* @see {@link
|
|
76
|
+
* @see {@link ArtifactRow} — dense list row that triggers preview via `onOpen`
|
|
77
77
|
* @see {@link useArtifactContent} — content-fetching hook (headless alternative)
|
|
78
78
|
* @see {@link useDetectStigmerResource} — YAML resource detection (headless)
|
|
79
79
|
* @see {@link useDetectSkillPackage} — skill package detection (headless)
|
|
@@ -108,7 +108,7 @@ export interface ArtifactPreviewModalProps {
|
|
|
108
108
|
readonly onApplied?: (result: ApplyResourceResult) => void;
|
|
109
109
|
/**
|
|
110
110
|
* Optional plan-build action (see {@link ArtifactPreviewContentProps.onImplement}).
|
|
111
|
-
* When provided, a "Build
|
|
111
|
+
* When provided, a "Build" primary button appears; clicking it calls
|
|
112
112
|
* `onImplement` then closes the modal.
|
|
113
113
|
*/
|
|
114
114
|
readonly onImplement?: () => void;
|
|
@@ -146,7 +146,7 @@ export interface ArtifactPreviewModalProps {
|
|
|
146
146
|
* ```
|
|
147
147
|
*
|
|
148
148
|
* @see {@link ArtifactPreviewContent} — the content component (use directly for non-dialog contexts)
|
|
149
|
-
* @see {@link
|
|
149
|
+
* @see {@link ArtifactRow} — dense list row that triggers preview via `onOpen`
|
|
150
150
|
*/
|
|
151
151
|
export declare function ArtifactPreviewModal({ artifact, executionId, org, isTerminal, open, onClose, onApplied, onImplement, className, }: ArtifactPreviewModalProps): import("react/jsx-runtime").JSX.Element;
|
|
152
152
|
//# sourceMappingURL=ArtifactPreviewModal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArtifactPreviewModal.d.ts","sourceRoot":"","sources":["../../src/execution/ArtifactPreviewModal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;
|
|
1
|
+
{"version":3,"file":"ArtifactPreviewModal.d.ts","sourceRoot":"","sources":["../../src/execution/ArtifactPreviewModal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;AAO1G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAM1E,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,uDAAuD;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3D;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,WAAW,EACX,GAAG,EACH,UAAU,EACV,OAAO,EACP,SAAS,EACT,WAAW,EACX,SAAS,GACV,EAAE,2BAA2B,2CAgE7B;AAMD,8CAA8C;AAC9C,MAAM,WAAW,yBAAyB;IACxC,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,uDAAuD;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3D;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,WAAW,EACX,GAAG,EACH,UAAU,EACV,IAAI,EACJ,OAAO,EACP,SAAS,EACT,WAAW,EACX,SAAS,GACV,EAAE,yBAAyB,2CA8C3B"}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useCallback, useEffect, useRef
|
|
4
|
-
import { ExecutionArtifactKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
3
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
5
4
|
import { cn } from "@stigmer/theme";
|
|
6
|
-
import { useArtifactContent } from "./useArtifactContent.js";
|
|
7
5
|
import { useArtifactDownload } from "./useArtifactDownload.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { useApplyResource, } from "../library/useApplyResource.js";
|
|
13
|
-
const COPIED_FEEDBACK_MS = 2000;
|
|
6
|
+
import { formatArtifactSize } from "./artifact-utils.js";
|
|
7
|
+
import { ArtifactContentBody } from "./ArtifactContentBody.js";
|
|
8
|
+
import { ArtifactApplyButton } from "./ArtifactApplyButton.js";
|
|
9
|
+
import { useArtifactInspection } from "./useArtifactInspection.js";
|
|
14
10
|
/**
|
|
15
11
|
* Artifact preview content with detection pipeline and Apply/Push CTA.
|
|
16
12
|
*
|
|
@@ -20,7 +16,7 @@ const COPIED_FEEDBACK_MS = 2000;
|
|
|
20
16
|
* it inside a `<dialog>`, modal, sheet, overlay, or inline context as
|
|
21
17
|
* needed.
|
|
22
18
|
*
|
|
23
|
-
* Orchestrates the
|
|
19
|
+
* Orchestrates the shared detection pipeline (see {@link useArtifactInspection}):
|
|
24
20
|
*
|
|
25
21
|
* - **FILE artifacts**: Fetches text content via {@link useArtifactContent},
|
|
26
22
|
* renders via {@link ArtifactContentRenderer} (markdown, YAML, JSON, or
|
|
@@ -50,104 +46,27 @@ const COPIED_FEEDBACK_MS = 2000;
|
|
|
50
46
|
* ```
|
|
51
47
|
*
|
|
52
48
|
* @see {@link ArtifactPreviewModal} — wraps this component in a native `<dialog>`
|
|
53
|
-
* @see {@link
|
|
49
|
+
* @see {@link ArtifactRow} — dense list row that triggers preview via `onOpen`
|
|
54
50
|
* @see {@link useArtifactContent} — content-fetching hook (headless alternative)
|
|
55
51
|
* @see {@link useDetectStigmerResource} — YAML resource detection (headless)
|
|
56
52
|
* @see {@link useDetectSkillPackage} — skill package detection (headless)
|
|
57
53
|
* @see {@link useApplyResource} — apply/push behavior hook (headless)
|
|
58
54
|
*/
|
|
59
55
|
export function ArtifactPreviewContent({ artifact, executionId, org, isTerminal, onClose, onApplied, onImplement, className, }) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
//
|
|
63
|
-
|
|
64
|
-
// ---------------------------------------------------------------------------
|
|
65
|
-
const { content, contentType, isTruncated, isLoading: isContentLoading, error: contentError, } = useArtifactContent(canFetchContent ? executionId : null, canFetchContent ? artifact.storageKey : null, undefined, artifact.contentHash || undefined);
|
|
66
|
-
const yamlDetection = useDetectStigmerResource(canFetchContent ? content : null);
|
|
67
|
-
const { detection: skillDetection, isLoading: isSkillLoading } = useDetectSkillPackage(isDirectory ? artifact : null, isDirectory ? executionId : null);
|
|
68
|
-
// ---------------------------------------------------------------------------
|
|
69
|
-
// Derived detection state
|
|
70
|
-
// ---------------------------------------------------------------------------
|
|
71
|
-
const isDetected = yamlDetection.detected || skillDetection.detected;
|
|
72
|
-
const isDetecting = (canFetchContent && isContentLoading) || (isDirectory && isSkillLoading);
|
|
73
|
-
let detectionLabel = null;
|
|
74
|
-
if (yamlDetection.detected) {
|
|
75
|
-
detectionLabel = `${yamlDetection.displayName} detected`;
|
|
76
|
-
}
|
|
77
|
-
else if (skillDetection.detected) {
|
|
78
|
-
const count = skillDetection.fileCount;
|
|
79
|
-
detectionLabel = `Skill \u00B7 ${count} ${count === 1 ? "file" : "files"}`;
|
|
80
|
-
}
|
|
81
|
-
// ---------------------------------------------------------------------------
|
|
82
|
-
// Apply state
|
|
83
|
-
// ---------------------------------------------------------------------------
|
|
84
|
-
const { applyYamlResource, pushSkillPackage, isApplying, error: applyError, clearError, } = useApplyResource();
|
|
85
|
-
const [applyResult, setApplyResult] = useState(null);
|
|
86
|
-
const handleApply = useCallback(async () => {
|
|
87
|
-
clearError();
|
|
88
|
-
try {
|
|
89
|
-
let result;
|
|
90
|
-
if (yamlDetection.detected && content) {
|
|
91
|
-
result = await applyYamlResource(content, org);
|
|
92
|
-
}
|
|
93
|
-
else if (skillDetection.detected) {
|
|
94
|
-
result = await pushSkillPackage({
|
|
95
|
-
org,
|
|
96
|
-
executionId,
|
|
97
|
-
storageKey: artifact.storageKey,
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
setApplyResult(result);
|
|
104
|
-
onApplied?.(result);
|
|
105
|
-
}
|
|
106
|
-
catch {
|
|
107
|
-
// error state managed by useApplyResource
|
|
108
|
-
}
|
|
109
|
-
}, [
|
|
110
|
-
yamlDetection.detected,
|
|
111
|
-
skillDetection.detected,
|
|
112
|
-
content,
|
|
113
|
-
org,
|
|
114
|
-
executionId,
|
|
115
|
-
artifact.storageKey,
|
|
116
|
-
applyYamlResource,
|
|
117
|
-
pushSkillPackage,
|
|
118
|
-
clearError,
|
|
56
|
+
// The whole inspect-and-act pipeline (content, detection, apply/push, copy)
|
|
57
|
+
// lives in one headless hook, shared with the editor-area ArtifactDocument so
|
|
58
|
+
// the two surfaces can never drift.
|
|
59
|
+
const inspection = useArtifactInspection(artifact, executionId, org, {
|
|
119
60
|
onApplied,
|
|
120
|
-
|
|
121
|
-
//
|
|
122
|
-
//
|
|
123
|
-
//
|
|
124
|
-
const [copied, setCopied] = useState(false);
|
|
125
|
-
const handleCopy = useCallback(() => {
|
|
126
|
-
if (!content)
|
|
127
|
-
return;
|
|
128
|
-
navigator.clipboard.writeText(content).then(() => {
|
|
129
|
-
setCopied(true);
|
|
130
|
-
setTimeout(() => setCopied(false), COPIED_FEEDBACK_MS);
|
|
131
|
-
});
|
|
132
|
-
}, [content]);
|
|
133
|
-
let ctaLabel = null;
|
|
134
|
-
if (yamlDetection.detected) {
|
|
135
|
-
ctaLabel = `Apply to ${org}`;
|
|
136
|
-
}
|
|
137
|
-
else if (skillDetection.detected) {
|
|
138
|
-
ctaLabel = `Push Skill to ${org}`;
|
|
139
|
-
}
|
|
140
|
-
// "Build from plan" runs the plan; closing the modal lets the host's submit
|
|
141
|
-
// pipeline take over (switch to Agent + send). Single combined handler keeps
|
|
142
|
-
// the caller's contract simple ("just give me onImplement").
|
|
61
|
+
});
|
|
62
|
+
// "Build" runs the plan; closing the modal lets the host's submit pipeline
|
|
63
|
+
// take over (switch to Agent + send). Single combined handler keeps the
|
|
64
|
+
// caller's contract simple ("just give me onImplement").
|
|
143
65
|
const handleImplement = useCallback(() => {
|
|
144
66
|
onImplement?.();
|
|
145
67
|
onClose();
|
|
146
68
|
}, [onImplement, onClose]);
|
|
147
|
-
|
|
148
|
-
// Render
|
|
149
|
-
// ---------------------------------------------------------------------------
|
|
150
|
-
return (_jsxs("div", { className: cn("flex max-h-[80vh] flex-col", className), children: [_jsx(ContentHeader, { artifact: artifact, isDirectory: isDirectory, detectionLabel: detectionLabel, isDetecting: isDetecting, onClose: onClose }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto border-t border-border", children: isDirectory ? (_jsx(DirectoryContentView, { artifact: artifact, skillDetection: skillDetection })) : (_jsx(FileContentStateView, { artifact: artifact, content: content, contentType: contentType, isLoading: isContentLoading, error: contentError, isTruncated: isTruncated })) }), _jsx(ActionBar, { artifact: artifact, executionId: executionId, isDirectory: isDirectory, hasContent: content !== null, copied: copied, onCopy: handleCopy, isDetected: isDetected, ctaLabel: ctaLabel, isTerminal: isTerminal, isApplying: isApplying, applyResult: applyResult, applyError: applyError, onApply: handleApply, onImplement: onImplement ? handleImplement : undefined }), _jsx("div", { role: "status", "aria-live": "polite", "aria-atomic": "true", className: "sr-only", children: copied && "Content copied to clipboard" })] }));
|
|
69
|
+
return (_jsxs("div", { className: cn("flex max-h-[80vh] flex-col", className), children: [_jsx(ContentHeader, { artifact: artifact, isDirectory: inspection.isDirectory, detectionLabel: inspection.detectionLabel, isDetecting: inspection.isDetecting, onClose: onClose }), _jsx(ArtifactContentBody, { artifact: artifact, content: inspection.content, contentType: inspection.contentType, isLoading: inspection.isLoading, error: inspection.error, isTruncated: inspection.isTruncated, skillDetection: inspection.skillDetection, className: "min-h-0 flex-1 overflow-y-auto border-t border-border" }), _jsx(ActionBar, { artifact: artifact, executionId: executionId, isDirectory: inspection.isDirectory, hasContent: inspection.content !== null, copied: inspection.copied, onCopy: inspection.copy, isDetected: inspection.isDetected, ctaLabel: inspection.ctaLabel, isTerminal: isTerminal, isApplying: inspection.isApplying, applyResult: inspection.applyResult, applyError: inspection.applyError, onApply: inspection.apply, onImplement: onImplement ? handleImplement : undefined }), _jsx("div", { role: "status", "aria-live": "polite", "aria-atomic": "true", className: "sr-only", children: inspection.copied && "Content copied to clipboard" })] }));
|
|
151
70
|
}
|
|
152
71
|
/**
|
|
153
72
|
* Full preview modal for execution artifacts using a native `<dialog>`.
|
|
@@ -180,7 +99,7 @@ export function ArtifactPreviewContent({ artifact, executionId, org, isTerminal,
|
|
|
180
99
|
* ```
|
|
181
100
|
*
|
|
182
101
|
* @see {@link ArtifactPreviewContent} — the content component (use directly for non-dialog contexts)
|
|
183
|
-
* @see {@link
|
|
102
|
+
* @see {@link ArtifactRow} — dense list row that triggers preview via `onOpen`
|
|
184
103
|
*/
|
|
185
104
|
export function ArtifactPreviewModal({ artifact, executionId, org, isTerminal, open, onClose, onApplied, onImplement, className, }) {
|
|
186
105
|
const dialogRef = useRef(null);
|
|
@@ -212,47 +131,13 @@ function ContentHeader({ artifact, isDirectory, detectionLabel, isDetecting, onC
|
|
|
212
131
|
return (_jsxs("div", { className: "flex items-start gap-3 p-4 pb-3", children: [_jsx("span", { className: "mt-0.5 shrink-0 text-muted-foreground", children: isDirectory ? _jsx(FolderIcon, {}) : _jsx(FileIcon, {}) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("h2", { className: "truncate text-sm font-semibold text-foreground", children: [artifact.name, isDirectory && "/"] }), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "text-xs tabular-nums text-muted-foreground", children: formatArtifactSize(artifact.sizeBytes) }), isDetecting && !detectionLabel && (_jsx("span", { className: "h-4 w-24 animate-pulse rounded-full bg-muted", "aria-hidden": "true" })), detectionLabel && (_jsx("span", { className: "inline-flex items-center rounded-full bg-primary-subtle px-2 py-0.5 text-xs font-medium text-primary", children: detectionLabel }))] })] }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close preview", className: cn("shrink-0 rounded-sm p-1 text-muted-foreground transition-colors hover:text-foreground", FOCUS_RING_CLASSES), children: _jsx(CloseIcon, {}) })] }));
|
|
213
132
|
}
|
|
214
133
|
// ---------------------------------------------------------------------------
|
|
215
|
-
// FileContentStateView (internal — loading/error/empty states + renderer)
|
|
216
|
-
// ---------------------------------------------------------------------------
|
|
217
|
-
const SKELETON_LINE_WIDTHS = [85, 72, 90, 65, 78, 88, 70, 82];
|
|
218
|
-
function FileContentStateView({ artifact, content, contentType, isLoading, error, isTruncated, }) {
|
|
219
|
-
if (isLoading) {
|
|
220
|
-
return (_jsx("div", { className: "space-y-2 p-4", "aria-busy": "true", "aria-label": "Loading content", children: SKELETON_LINE_WIDTHS.map((width, i) => (_jsx("div", { className: "h-4 animate-pulse rounded bg-muted", style: { width: `${width}%` }, "aria-hidden": "true" }, i))) }));
|
|
221
|
-
}
|
|
222
|
-
if (error) {
|
|
223
|
-
return (_jsxs("div", { className: "flex flex-col items-center justify-center gap-2 p-8 text-center", children: [_jsx(ErrorAlertIcon, {}), _jsx("p", { className: "text-sm text-destructive", children: error.message })] }));
|
|
224
|
-
}
|
|
225
|
-
if (content === null) {
|
|
226
|
-
return (_jsx("div", { className: "p-8 text-center text-sm text-muted-foreground", children: "Content not available for preview." }));
|
|
227
|
-
}
|
|
228
|
-
return (_jsx(ArtifactContentRenderer, { content: content, fileName: artifact.name, contentType: contentType, isTruncated: isTruncated }));
|
|
229
|
-
}
|
|
230
|
-
// ---------------------------------------------------------------------------
|
|
231
|
-
// DirectoryContentView (internal)
|
|
232
|
-
// ---------------------------------------------------------------------------
|
|
233
|
-
function DirectoryContentView({ artifact, skillDetection, }) {
|
|
234
|
-
const entries = artifact.entries;
|
|
235
|
-
return (_jsxs("div", { className: "p-4", children: [skillDetection.detected && (_jsxs("div", { className: "mb-4 rounded-md bg-primary-subtle p-3", children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: skillDetection.skillName }), skillDetection.skillDescription && (_jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: skillDetection.skillDescription }))] })), entries.length > 0 ? (_jsxs("div", { children: [_jsxs("h3", { className: "mb-2 text-xs font-medium text-muted-foreground", children: ["Files (", entries.length, ")"] }), _jsx("ul", { className: "space-y-0.5", role: "list", children: entries.map((entry) => (_jsxs("li", { className: "flex items-center gap-2 rounded-sm px-2 py-1 font-mono text-xs text-foreground", children: [_jsx(EntryIcon, { name: entry }), _jsx("span", { className: "min-w-0 truncate", children: entry })] }, entry))) })] })) : (_jsx("p", { className: "text-sm text-muted-foreground", children: "File listing not available." }))] }));
|
|
236
|
-
}
|
|
237
|
-
function EntryIcon({ name }) {
|
|
238
|
-
if (name.endsWith("/"))
|
|
239
|
-
return _jsx(FolderSmallIcon, {});
|
|
240
|
-
return _jsx(FileSmallIcon, {});
|
|
241
|
-
}
|
|
242
|
-
// ---------------------------------------------------------------------------
|
|
243
134
|
// ActionBar (internal)
|
|
244
135
|
// ---------------------------------------------------------------------------
|
|
245
136
|
function ActionBar({ artifact, executionId, isDirectory, hasContent, copied, onCopy, isDetected, ctaLabel, isTerminal, isApplying, applyResult, applyError, onApply, onImplement, }) {
|
|
246
137
|
const { download, isDownloading } = useArtifactDownload(executionId);
|
|
247
138
|
return (_jsxs("div", { className: "flex items-center justify-between gap-3 border-t border-border px-4 py-3", children: [_jsxs("div", { className: "flex items-center gap-3", children: [!isDirectory && hasContent && (_jsxs("button", { type: "button", onClick: onCopy, "aria-label": copied ? "Copied to clipboard" : "Copy content", className: cn("inline-flex items-center gap-1.5 text-xs font-medium transition-colors", copied
|
|
248
139
|
? "text-success"
|
|
249
|
-
: "text-muted-foreground hover:text-foreground", FOCUS_RING_CLASSES), children: [copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}), copied ? "Copied" : "Copy"] })), _jsxs("button", { type: "button", onClick: () => download(artifact.storageKey, artifact.name), disabled: isDownloading, className: cn("inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground disabled:opacity-50", FOCUS_RING_CLASSES), children: [_jsx(DownloadIcon, {}), isDownloading ? "Preparing…" : isDirectory ? "Download ZIP" : "Download"] })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-3", children: [onImplement && (_jsxs("button", { type: "button", onClick: onImplement, className: cn("inline-flex items-center gap-1.5 rounded-md px-4 py-1.5 text-xs font-medium transition-colors", "bg-primary text-primary-foreground hover:bg-primary-hover", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"), children: [_jsx(ImplementIcon, {}), "Build
|
|
250
|
-
}
|
|
251
|
-
function ApplyButton({ label, isTerminal, isApplying, onApply, }) {
|
|
252
|
-
const canApply = isTerminal && !isApplying;
|
|
253
|
-
return (_jsx("button", { type: "button", onClick: canApply ? onApply : undefined, disabled: !canApply, "aria-busy": isApplying, className: cn("rounded-md px-4 py-1.5 text-xs font-medium transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", "disabled:cursor-not-allowed", canApply
|
|
254
|
-
? "bg-primary text-primary-foreground hover:bg-primary-hover"
|
|
255
|
-
: "bg-muted text-muted-foreground"), children: isApplying ? (_jsxs("span", { className: "inline-flex items-center gap-1.5", children: [_jsx(SpinnerIcon, {}), "Applying", "\u2026"] })) : (label) }));
|
|
140
|
+
: "text-muted-foreground hover:text-foreground", FOCUS_RING_CLASSES), children: [copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}), copied ? "Copied" : "Copy"] })), _jsxs("button", { type: "button", onClick: () => download(artifact.storageKey, artifact.name), disabled: isDownloading, className: cn("inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground disabled:opacity-50", FOCUS_RING_CLASSES), children: [_jsx(DownloadIcon, {}), isDownloading ? "Preparing…" : isDirectory ? "Download ZIP" : "Download"] })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-3", children: [onImplement && (_jsxs("button", { type: "button", onClick: onImplement, className: cn("inline-flex items-center gap-1.5 rounded-md px-4 py-1.5 text-xs font-medium transition-colors", "bg-primary text-primary-foreground hover:bg-primary-hover", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"), children: [_jsx(ImplementIcon, {}), "Build"] })), applyResult ? (_jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs font-medium text-success", children: [_jsx(CheckIcon, {}), "Applied ", "\u00B7", " ", applyResult.name || applyResult.kind] })) : applyError ? (_jsxs("span", { className: "inline-flex items-center gap-2", role: "alert", children: [_jsx("span", { className: "text-xs text-destructive", children: applyError.message }), _jsx("button", { type: "button", onClick: onApply, className: cn("text-xs font-medium text-destructive underline transition-colors hover:text-destructive-muted", FOCUS_RING_CLASSES), children: "Retry" })] })) : isDetected && ctaLabel ? (_jsx("span", { "data-cursor-target": "apply-resource-button", children: _jsx(ArtifactApplyButton, { label: ctaLabel, isTerminal: isTerminal, isApplying: isApplying, onApply: onApply }) })) : null] })] }));
|
|
256
141
|
}
|
|
257
142
|
// ---------------------------------------------------------------------------
|
|
258
143
|
// Inline SVG icons (SDK pattern: no external icon dependency)
|
|
@@ -266,12 +151,6 @@ function FileIcon() {
|
|
|
266
151
|
function FolderIcon() {
|
|
267
152
|
return (_jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M14.5 12.5C14.5 13.33 13.83 14 13 14H3C2.17 14 1.5 13.33 1.5 12.5V3.5C1.5 2.67 2.17 2 3 2H6L8 4.5H13C13.83 4.5 14.5 5.17 14.5 6V12.5Z" }) }));
|
|
268
153
|
}
|
|
269
|
-
function FileSmallIcon() {
|
|
270
|
-
return (_jsxs("svg", { width: "12", height: "12", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "shrink-0 text-muted-foreground", "aria-hidden": "true", children: [_jsx("path", { d: "M8 1H4C3.45 1 3 1.45 3 2V12C3 12.55 3.45 13 4 13H10C10.55 13 11 12.55 11 12V4L8 1Z" }), _jsx("path", { d: "M8 1V4H11" })] }));
|
|
271
|
-
}
|
|
272
|
-
function FolderSmallIcon() {
|
|
273
|
-
return (_jsx("svg", { width: "12", height: "12", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "shrink-0 text-muted-foreground", "aria-hidden": "true", children: _jsx("path", { d: "M13 11C13 11.55 12.55 12 12 12H2C1.45 12 1 11.55 1 11V3C1 2.45 1.45 2 2 2H5L7 4H12C12.55 4 13 4.45 13 5V11Z" }) }));
|
|
274
|
-
}
|
|
275
154
|
function CopyIcon() {
|
|
276
155
|
return (_jsxs("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round", className: "shrink-0", "aria-hidden": "true", children: [_jsx("rect", { x: "4", y: "4", width: "6.5", height: "6.5", rx: "1" }), _jsx("path", { d: "M8 4V2.5C8 1.95 7.55 1.5 7 1.5H2.5C1.95 1.5 1.5 1.95 1.5 2.5V7C1.5 7.55 1.95 8 2.5 8H4" })] }));
|
|
277
156
|
}
|
|
@@ -284,10 +163,4 @@ function ImplementIcon() {
|
|
|
284
163
|
function CheckIcon() {
|
|
285
164
|
return (_jsx("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "shrink-0", "aria-hidden": "true", children: _jsx("path", { d: "M2 6.5L4.5 9L10 3" }) }));
|
|
286
165
|
}
|
|
287
|
-
function SpinnerIcon() {
|
|
288
|
-
return (_jsx("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.5", className: "shrink-0 animate-spin", "aria-hidden": "true", children: _jsx("path", { d: "M6 1.5A4.5 4.5 0 1 1 1.5 6", strokeLinecap: "round" }) }));
|
|
289
|
-
}
|
|
290
|
-
function ErrorAlertIcon() {
|
|
291
|
-
return (_jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "text-destructive", "aria-hidden": "true", children: [_jsx("circle", { cx: "8", cy: "8", r: "6.5" }), _jsx("path", { d: "M8 5.5V8.5" }), _jsx("circle", { cx: "8", cy: "11", r: "0.5", fill: "currentColor", stroke: "none" })] }));
|
|
292
|
-
}
|
|
293
166
|
//# sourceMappingURL=ArtifactPreviewModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArtifactPreviewModal.js","sourceRoot":"","sources":["../../src/execution/ArtifactPreviewModal.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ArtifactPreviewModal.js","sourceRoot":"","sources":["../../src/execution/ArtifactPreviewModal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ExecutionArtifact } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/artifact_pb";
|
|
2
|
+
/** Props for {@link ArtifactRow}. */
|
|
3
|
+
export interface ArtifactRowProps {
|
|
4
|
+
/** The execution artifact to render. */
|
|
5
|
+
readonly artifact: ExecutionArtifact;
|
|
6
|
+
/** ID of the execution that produced this artifact — used to mint its download URL. */
|
|
7
|
+
readonly executionId: string;
|
|
8
|
+
/**
|
|
9
|
+
* When `true`, another artifact in the list shares this artifact's display
|
|
10
|
+
* `name` but has a different `sandbox_path`; the row renders the parent
|
|
11
|
+
* directory as a muted subtitle to disambiguate. Typically supplied from
|
|
12
|
+
* {@link SessionArtifactEntry.hasNameCollision}.
|
|
13
|
+
*/
|
|
14
|
+
readonly hasNameCollision?: boolean;
|
|
15
|
+
/** Single click / Enter / Space: open the artifact (a preview tab, or a modal). */
|
|
16
|
+
readonly onOpen: () => void;
|
|
17
|
+
/**
|
|
18
|
+
* Double click: promote the artifact to a persistent (pinned) tab. Mirrors the
|
|
19
|
+
* file tree's `onOpenFile` (preview) / `onActivateFile` (pin) split — the
|
|
20
|
+
* leading single click of the double click has already opened the preview, so
|
|
21
|
+
* this promotes it. Omit in panel-less hosts (e.g. the modal-only widget):
|
|
22
|
+
* with no handler the row binds no `onDoubleClick`, so a double click is just
|
|
23
|
+
* two harmless single clicks, exactly as `FileTreeNode` behaves.
|
|
24
|
+
*/
|
|
25
|
+
readonly onActivate?: () => void;
|
|
26
|
+
/** Additional CSS classes for the row's `<li>`. */
|
|
27
|
+
readonly className?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* One dense, VS Code-style artifact row: a full-width open button (shared
|
|
31
|
+
* file-type icon + name + optional collision subtitle + size) with a sibling,
|
|
32
|
+
* hover/focus-revealed Download button.
|
|
33
|
+
*
|
|
34
|
+
* The open target and the Download control are SIBLINGS, never nested — a
|
|
35
|
+
* `<button>` inside a `<button>` is an axe `nested-interactive` (WCAG 4.1.2)
|
|
36
|
+
* violation. This mirrors `ExplorerRoot`'s header + remove-control pattern.
|
|
37
|
+
*
|
|
38
|
+
* Deliberately execution-pure and presentational: it takes only the artifact,
|
|
39
|
+
* its `executionId`, and open/activate closures — no session-domain types and
|
|
40
|
+
* no content fetch (resource detection and Apply/Push live in the opened
|
|
41
|
+
* document/modal, not the list). The two hosts — the session panel's
|
|
42
|
+
* `ArtifactsTab` facet and the panel-less {@link ArtifactsWidget} — map
|
|
43
|
+
* their entries onto these props and own the behavior wiring.
|
|
44
|
+
*
|
|
45
|
+
* @see ArtifactsTab — session-panel facet (rows open editor-pane document tabs)
|
|
46
|
+
* @see ArtifactsWidget — panel-less embeddable (rows open the preview modal)
|
|
47
|
+
*/
|
|
48
|
+
export declare function ArtifactRow({ artifact, executionId, hasNameCollision, onOpen, onActivate, className, }: ArtifactRowProps): import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
//# sourceMappingURL=ArtifactRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArtifactRow.d.ts","sourceRoot":"","sources":["../../src/execution/ArtifactRow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;AAO1G,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,uFAAuF;IACvF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,mFAAmF;IACnF,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,mDAAmD;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,WAAW,EACX,gBAAwB,EACxB,MAAM,EACN,UAAU,EACV,SAAS,GACV,EAAE,gBAAgB,2CA+DlB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ExecutionArtifactKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { FileTypeIcon, FolderTypeIcon } from "../internal/file-icons/index.js";
|
|
6
|
+
import { useArtifactDownload } from "./useArtifactDownload.js";
|
|
7
|
+
import { formatArtifactSize } from "./artifact-utils.js";
|
|
8
|
+
/**
|
|
9
|
+
* One dense, VS Code-style artifact row: a full-width open button (shared
|
|
10
|
+
* file-type icon + name + optional collision subtitle + size) with a sibling,
|
|
11
|
+
* hover/focus-revealed Download button.
|
|
12
|
+
*
|
|
13
|
+
* The open target and the Download control are SIBLINGS, never nested — a
|
|
14
|
+
* `<button>` inside a `<button>` is an axe `nested-interactive` (WCAG 4.1.2)
|
|
15
|
+
* violation. This mirrors `ExplorerRoot`'s header + remove-control pattern.
|
|
16
|
+
*
|
|
17
|
+
* Deliberately execution-pure and presentational: it takes only the artifact,
|
|
18
|
+
* its `executionId`, and open/activate closures — no session-domain types and
|
|
19
|
+
* no content fetch (resource detection and Apply/Push live in the opened
|
|
20
|
+
* document/modal, not the list). The two hosts — the session panel's
|
|
21
|
+
* `ArtifactsTab` facet and the panel-less {@link ArtifactsWidget} — map
|
|
22
|
+
* their entries onto these props and own the behavior wiring.
|
|
23
|
+
*
|
|
24
|
+
* @see ArtifactsTab — session-panel facet (rows open editor-pane document tabs)
|
|
25
|
+
* @see ArtifactsWidget — panel-less embeddable (rows open the preview modal)
|
|
26
|
+
*/
|
|
27
|
+
export function ArtifactRow({ artifact, executionId, hasNameCollision = false, onOpen, onActivate, className, }) {
|
|
28
|
+
const isDirectory = artifact.kind === ExecutionArtifactKind.DIRECTORY;
|
|
29
|
+
const { download, isDownloading } = useArtifactDownload(executionId);
|
|
30
|
+
const parentDir = hasNameCollision && artifact.sandboxPath
|
|
31
|
+
? parentDirectory(artifact.sandboxPath)
|
|
32
|
+
: null;
|
|
33
|
+
return (_jsxs("li", { className: cn("group flex items-stretch", className), children: [_jsxs("button", { type: "button", onClick: onOpen, onDoubleClick: onActivate, title: artifact.sandboxPath || artifact.name, className: cn("flex min-w-0 flex-1 items-center gap-2 px-2 py-1 text-left text-xs text-muted-foreground transition-colors", "hover:bg-muted hover:text-foreground", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring"), children: [_jsx("span", { className: "shrink-0 text-muted-foreground", children: isDirectory ? (_jsx(FolderTypeIcon, { open: false })) : (_jsx(FileTypeIcon, { fileName: artifact.name })) }), _jsxs("span", { className: "min-w-0 flex-1 truncate text-foreground", children: [artifact.name, isDirectory && "/", parentDir && (_jsx("span", { className: "ml-1.5 text-[0.65rem] text-muted-foreground", children: parentDir }))] }), _jsx("span", { className: "shrink-0 tabular-nums text-[0.65rem] text-muted-foreground-faint", children: formatArtifactSize(artifact.sizeBytes) })] }), _jsx("button", { type: "button", onClick: () => download(artifact.storageKey, artifact.name), disabled: isDownloading, "aria-label": isDownloading
|
|
34
|
+
? `Preparing ${artifact.name}`
|
|
35
|
+
: `Download ${artifact.name}`, title: isDirectory ? "Download ZIP" : "Download", className: cn("flex shrink-0 items-center px-2 text-muted-foreground opacity-0 transition-opacity", "group-hover:opacity-100 focus-visible:opacity-100", "hover:text-foreground disabled:opacity-50", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring"), children: _jsx(DownloadIcon, {}) })] }));
|
|
36
|
+
}
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Helpers
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
/**
|
|
41
|
+
* Extracts a human-readable parent directory label from a sandbox path.
|
|
42
|
+
* Given `/workspace/configs/agent.yaml` returns `configs/`.
|
|
43
|
+
* Returns `null` when the path has no meaningful parent segment.
|
|
44
|
+
*/
|
|
45
|
+
function parentDirectory(sandboxPath) {
|
|
46
|
+
const lastSlash = sandboxPath.lastIndexOf("/");
|
|
47
|
+
if (lastSlash <= 0)
|
|
48
|
+
return null;
|
|
49
|
+
const parent = sandboxPath.slice(0, lastSlash);
|
|
50
|
+
const segment = parent.slice(parent.lastIndexOf("/") + 1);
|
|
51
|
+
return segment ? `${segment}/` : null;
|
|
52
|
+
}
|
|
53
|
+
function DownloadIcon() {
|
|
54
|
+
return (_jsxs("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "shrink-0", "aria-hidden": "true", children: [_jsx("path", { d: "M6 1.5V8.5" }), _jsx("path", { d: "M3 6L6 9L9 6" }), _jsx("path", { d: "M2 10.5H10" })] }));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=ArtifactRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArtifactRow.js","sourceRoot":"","sources":["../../src/execution/ArtifactRow.tsx"],"names":[],"mappings":"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"}
|