@stigmer/react 3.1.3 → 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.
Files changed (151) hide show
  1. package/composer/SessionComposer.d.ts +31 -0
  2. package/composer/SessionComposer.d.ts.map +1 -1
  3. package/composer/SessionComposer.js +12 -4
  4. package/composer/SessionComposer.js.map +1 -1
  5. package/execution/ArtifactApplyButton.d.ts +25 -0
  6. package/execution/ArtifactApplyButton.d.ts.map +1 -0
  7. package/execution/ArtifactApplyButton.js +21 -0
  8. package/execution/ArtifactApplyButton.js.map +1 -0
  9. package/execution/ArtifactContentBody.d.ts +36 -0
  10. package/execution/ArtifactContentBody.d.ts.map +1 -0
  11. package/execution/ArtifactContentBody.js +62 -0
  12. package/execution/ArtifactContentBody.js.map +1 -0
  13. package/execution/ArtifactDocument.d.ts +48 -0
  14. package/execution/ArtifactDocument.d.ts.map +1 -0
  15. package/execution/ArtifactDocument.js +89 -0
  16. package/execution/ArtifactDocument.js.map +1 -0
  17. package/execution/ArtifactPreviewModal.d.ts +4 -4
  18. package/execution/ArtifactPreviewModal.d.ts.map +1 -1
  19. package/execution/ArtifactPreviewModal.js +15 -142
  20. package/execution/ArtifactPreviewModal.js.map +1 -1
  21. package/execution/ArtifactRow.d.ts +49 -0
  22. package/execution/ArtifactRow.d.ts.map +1 -0
  23. package/execution/ArtifactRow.js +56 -0
  24. package/execution/ArtifactRow.js.map +1 -0
  25. package/execution/ArtifactsWidget.d.ts +6 -9
  26. package/execution/ArtifactsWidget.d.ts.map +1 -1
  27. package/execution/ArtifactsWidget.js +15 -19
  28. package/execution/ArtifactsWidget.js.map +1 -1
  29. package/execution/index.d.ts +8 -2
  30. package/execution/index.d.ts.map +1 -1
  31. package/execution/index.js +4 -1
  32. package/execution/index.js.map +1 -1
  33. package/execution/useArtifactContent.d.ts +6 -1
  34. package/execution/useArtifactContent.d.ts.map +1 -1
  35. package/execution/useArtifactContent.js +7 -2
  36. package/execution/useArtifactContent.js.map +1 -1
  37. package/execution/useArtifactInspection.d.ts +85 -0
  38. package/execution/useArtifactInspection.d.ts.map +1 -0
  39. package/execution/useArtifactInspection.js +143 -0
  40. package/execution/useArtifactInspection.js.map +1 -0
  41. package/execution/useCreateAgentExecution.d.ts +11 -0
  42. package/execution/useCreateAgentExecution.d.ts.map +1 -1
  43. package/execution/useCreateAgentExecution.js +1 -0
  44. package/execution/useCreateAgentExecution.js.map +1 -1
  45. package/index.d.ts +3 -3
  46. package/index.d.ts.map +1 -1
  47. package/index.js +2 -2
  48. package/index.js.map +1 -1
  49. package/internal/MermaidDiagram.d.ts +47 -0
  50. package/internal/MermaidDiagram.d.ts.map +1 -0
  51. package/internal/MermaidDiagram.js +118 -0
  52. package/internal/MermaidDiagram.js.map +1 -0
  53. package/internal/markdown-components.d.ts.map +1 -1
  54. package/internal/markdown-components.js +34 -0
  55. package/internal/markdown-components.js.map +1 -1
  56. package/internal/mermaid-loader.d.ts +26 -0
  57. package/internal/mermaid-loader.d.ts.map +1 -0
  58. package/internal/mermaid-loader.js +34 -0
  59. package/internal/mermaid-loader.js.map +1 -0
  60. package/internal/mermaid-theme-css.d.ts +41 -0
  61. package/internal/mermaid-theme-css.d.ts.map +1 -0
  62. package/internal/mermaid-theme-css.js +179 -0
  63. package/internal/mermaid-theme-css.js.map +1 -0
  64. package/internal/slug.d.ts +9 -5
  65. package/internal/slug.d.ts.map +1 -1
  66. package/internal/slug.js +10 -6
  67. package/internal/slug.js.map +1 -1
  68. package/package.json +5 -4
  69. package/session/SessionViewer.d.ts.map +1 -1
  70. package/session/SessionViewer.js +91 -18
  71. package/session/SessionViewer.js.map +1 -1
  72. package/session/artifact-document.d.ts +13 -0
  73. package/session/artifact-document.d.ts.map +1 -0
  74. package/session/artifact-document.js +22 -0
  75. package/session/artifact-document.js.map +1 -0
  76. package/session/facets/ArtifactsTab.d.ts +30 -4
  77. package/session/facets/ArtifactsTab.d.ts.map +1 -1
  78. package/session/facets/ArtifactsTab.js +32 -10
  79. package/session/facets/ArtifactsTab.js.map +1 -1
  80. package/session/index.d.ts +2 -1
  81. package/session/index.d.ts.map +1 -1
  82. package/session/index.js +4 -1
  83. package/session/index.js.map +1 -1
  84. package/session/useSessionArtifacts.d.ts +17 -0
  85. package/session/useSessionArtifacts.d.ts.map +1 -1
  86. package/session/useSessionArtifacts.js +16 -5
  87. package/session/useSessionArtifacts.js.map +1 -1
  88. package/session/useSessionConversation.d.ts +17 -1
  89. package/session/useSessionConversation.d.ts.map +1 -1
  90. package/session/useSessionConversation.js +32 -4
  91. package/session/useSessionConversation.js.map +1 -1
  92. package/session/useSessionPageFlow.d.ts.map +1 -1
  93. package/session/useSessionPageFlow.js +1 -0
  94. package/session/useSessionPageFlow.js.map +1 -1
  95. package/session/useSessionPanel.d.ts +20 -0
  96. package/session/useSessionPanel.d.ts.map +1 -1
  97. package/session/useSessionPanel.js +13 -0
  98. package/session/useSessionPanel.js.map +1 -1
  99. package/session/useSessionRailViews.d.ts +13 -1
  100. package/session/useSessionRailViews.d.ts.map +1 -1
  101. package/session/useSessionRailViews.js +5 -3
  102. package/session/useSessionRailViews.js.map +1 -1
  103. package/src/composer/SessionComposer.tsx +69 -1
  104. package/src/composer/__tests__/SessionComposer-editing.test.tsx +128 -0
  105. package/src/execution/ArtifactApplyButton.tsx +79 -0
  106. package/src/execution/ArtifactContentBody.tsx +255 -0
  107. package/src/execution/ArtifactDocument.tsx +344 -0
  108. package/src/execution/ArtifactPreviewModal.tsx +39 -405
  109. package/src/execution/ArtifactRow.tsx +165 -0
  110. package/src/execution/ArtifactsWidget.tsx +24 -33
  111. package/src/execution/__tests__/ArtifactContentBody.test.tsx +131 -0
  112. package/src/execution/__tests__/ArtifactDocument.test.tsx +100 -0
  113. package/src/execution/__tests__/ArtifactRow.test.tsx +139 -0
  114. package/src/execution/__tests__/ArtifactsWidget.test.tsx +78 -0
  115. package/src/execution/__tests__/message-entry.test.tsx +50 -2
  116. package/src/execution/__tests__/useArtifactInspection.test.tsx +151 -0
  117. package/src/execution/__tests__/useCreateAgentExecution.test.tsx +35 -0
  118. package/src/execution/index.ts +14 -2
  119. package/src/execution/useArtifactContent.ts +7 -0
  120. package/src/execution/useArtifactInspection.ts +252 -0
  121. package/src/execution/useCreateAgentExecution.ts +12 -0
  122. package/src/index.ts +11 -2
  123. package/src/internal/MermaidDiagram.tsx +164 -0
  124. package/src/internal/__tests__/a11y/mermaid-theme.a11y.test.tsx +122 -0
  125. package/src/internal/__tests__/markdown-components.test.tsx +93 -1
  126. package/src/internal/__tests__/mermaid-diagram.test.tsx +282 -0
  127. package/src/internal/markdown-components.tsx +36 -1
  128. package/src/internal/mermaid-loader.ts +44 -0
  129. package/src/internal/mermaid-theme-css.ts +178 -0
  130. package/src/internal/slug.ts +10 -6
  131. package/src/session/SessionViewer.tsx +177 -33
  132. package/src/session/__tests__/SessionViewer-artifactTabs.test.tsx +210 -0
  133. package/src/session/__tests__/SessionViewer-editResubmit.test.tsx +233 -0
  134. package/src/session/__tests__/useSessionArtifacts.test.ts +57 -0
  135. package/src/session/__tests__/useSessionConversation.test.tsx +172 -1
  136. package/src/session/__tests__/useSessionPanel.test.ts +70 -1
  137. package/src/session/artifact-document.ts +23 -0
  138. package/src/session/facets/ArtifactsTab.tsx +66 -18
  139. package/src/session/facets/__tests__/ArtifactsTab.test.tsx +111 -47
  140. package/src/session/index.ts +5 -1
  141. package/src/session/useSessionArtifacts.ts +16 -5
  142. package/src/session/useSessionConversation.ts +48 -6
  143. package/src/session/useSessionPageFlow.ts +1 -0
  144. package/src/session/useSessionPanel.ts +41 -0
  145. package/src/session/useSessionRailViews.tsx +21 -1
  146. package/styles.css +1 -1
  147. package/execution/ArtifactCard.d.ts +0 -81
  148. package/execution/ArtifactCard.d.ts.map +0 -1
  149. package/execution/ArtifactCard.js +0 -130
  150. package/execution/ArtifactCard.js.map +0 -1
  151. package/src/execution/ArtifactCard.tsx +0 -320
@@ -1,5 +1,5 @@
1
1
  import type { ExecutionArtifact } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/artifact_pb";
2
- import { type ApplyResourceResult } from "../library/useApplyResource.js";
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. */
@@ -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 same detection pipeline as {@link ArtifactCard}:
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 ArtifactCard} — compact card that triggers preview via `onPreview`
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)
@@ -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 ArtifactCard} — compact card that triggers preview via `onPreview`
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;AAU1G,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,gCAAgC,CAAC;AAQxC,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,2CAwL7B;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
+ {"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, useState } from "react";
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 { isTextArtifact, formatArtifactSize } from "./artifact-utils.js";
9
- import { ArtifactContentRenderer } from "./ArtifactContentRenderer.js";
10
- import { useDetectStigmerResource } from "../library/useDetectStigmerResource.js";
11
- import { useDetectSkillPackage } from "../library/useDetectSkillPackage.js";
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 same detection pipeline as {@link ArtifactCard}:
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,93 +46,19 @@ const COPIED_FEEDBACK_MS = 2000;
50
46
  * ```
51
47
  *
52
48
  * @see {@link ArtifactPreviewModal} — wraps this component in a native `<dialog>`
53
- * @see {@link ArtifactCard} — compact card that triggers preview via `onPreview`
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
- const isDirectory = artifact.kind === ExecutionArtifactKind.DIRECTORY;
61
- const canFetchContent = !isDirectory && isTextArtifact(artifact);
62
- // ---------------------------------------------------------------------------
63
- // Detection orchestration
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
- // Copy to clipboard
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
- }
61
+ });
140
62
  // "Build" runs the plan; closing the modal lets the host's submit pipeline
141
63
  // take over (switch to Agent + send). Single combined handler keeps the
142
64
  // caller's contract simple ("just give me onImplement").
@@ -144,10 +66,7 @@ export function ArtifactPreviewContent({ artifact, executionId, org, isTerminal,
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 ArtifactCard} — compact card that triggers preview via `onPreview`
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"] })), 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(ApplyButton, { label: ctaLabel, isTerminal: isTerminal, isApplying: isApplying, onApply: onApply }) })) : null] })] }));
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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"}
@@ -33,19 +33,16 @@ export interface ArtifactsWidgetProps {
33
33
  * a file-explorer-like view of the conversation's output — no
34
34
  * execution/turn concepts are exposed.
35
35
  *
36
- * Composes {@link ArtifactCard} (summary + detection badges) with
37
- * {@link ArtifactPreviewModal} (full content review + Apply/Push CTA).
38
- * The card's "Preview" action opens the modal; the modal is the sole
39
- * location for Apply/Push actions (review-before-apply pattern).
36
+ * The panel-less counterpart of the session panel's Artifacts facet: it
37
+ * renders the same dense {@link ArtifactRow} list, but having no editor pane
38
+ * to open document tabs into a click opens the {@link ArtifactPreviewModal}
39
+ * (the review-before-apply popup, and the sole home of the Apply/Push CTA).
40
+ * This is the embeddable path a platform builder drops into their own sidebar.
40
41
  *
41
42
  * Returns `null` when the executions list is empty or no execution
42
43
  * has artifacts, matching the conditional-render pattern of
43
44
  * {@link ExecutionProgress} and {@link UsageWidget}.
44
45
  *
45
- * Renders without card chrome — each {@link ArtifactCard} provides its
46
- * own border and padding. The consumer controls the container styling
47
- * (or places the widget directly in a flex/grid layout).
48
- *
49
46
  * All visual properties flow through `--stgm-*` tokens.
50
47
  *
51
48
  * @example
@@ -62,7 +59,7 @@ export interface ArtifactsWidgetProps {
62
59
  * />
63
60
  * ```
64
61
  *
65
- * @see {@link ArtifactCard} — compact summary card per artifact
62
+ * @see {@link ArtifactRow} — the dense row rendered per artifact
66
63
  * @see {@link ArtifactPreviewModal} — full preview with Apply/Push CTA
67
64
  * @see {@link useSessionArtifacts} — headless session-level artifact aggregation hook
68
65
  * @see {@link useExecutionArtifacts} — headless single-execution artifact extraction hook
@@ -1 +1 @@
1
- {"version":3,"file":"ArtifactsWidget.d.ts","sourceRoot":"","sources":["../../src/execution/ArtifactsWidget.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAQlG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3D,mDAAmD;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,GAAG,EACH,SAAS,EACT,SAAS,GACV,EAAE,oBAAoB,kDAkEtB"}
1
+ {"version":3,"file":"ArtifactsWidget.d.ts","sourceRoot":"","sources":["../../src/execution/ArtifactsWidget.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AASlG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3D,mDAAmD;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,GAAG,EACH,SAAS,EACT,SAAS,GACV,EAAE,oBAAoB,kDA2DtB"}
@@ -2,8 +2,8 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useCallback, useMemo, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
- import { useSessionArtifacts, } from "../session/useSessionArtifacts.js";
6
- import { ArtifactCard } from "./ArtifactCard.js";
5
+ import { useSessionArtifacts, artifactKey, } from "../session/useSessionArtifacts.js";
6
+ import { ArtifactRow } from "./ArtifactRow.js";
7
7
  import { ArtifactPreviewModal } from "./ArtifactPreviewModal.js";
8
8
  /**
9
9
  * Right-sidebar widget that surfaces all artifacts produced during a
@@ -14,19 +14,16 @@ import { ArtifactPreviewModal } from "./ArtifactPreviewModal.js";
14
14
  * a file-explorer-like view of the conversation's output — no
15
15
  * execution/turn concepts are exposed.
16
16
  *
17
- * Composes {@link ArtifactCard} (summary + detection badges) with
18
- * {@link ArtifactPreviewModal} (full content review + Apply/Push CTA).
19
- * The card's "Preview" action opens the modal; the modal is the sole
20
- * location for Apply/Push actions (review-before-apply pattern).
17
+ * The panel-less counterpart of the session panel's Artifacts facet: it
18
+ * renders the same dense {@link ArtifactRow} list, but having no editor pane
19
+ * to open document tabs into a click opens the {@link ArtifactPreviewModal}
20
+ * (the review-before-apply popup, and the sole home of the Apply/Push CTA).
21
+ * This is the embeddable path a platform builder drops into their own sidebar.
21
22
  *
22
23
  * Returns `null` when the executions list is empty or no execution
23
24
  * has artifacts, matching the conditional-render pattern of
24
25
  * {@link ExecutionProgress} and {@link UsageWidget}.
25
26
  *
26
- * Renders without card chrome — each {@link ArtifactCard} provides its
27
- * own border and padding. The consumer controls the container styling
28
- * (or places the widget directly in a flex/grid layout).
29
- *
30
27
  * All visual properties flow through `--stgm-*` tokens.
31
28
  *
32
29
  * @example
@@ -43,25 +40,24 @@ import { ArtifactPreviewModal } from "./ArtifactPreviewModal.js";
43
40
  * />
44
41
  * ```
45
42
  *
46
- * @see {@link ArtifactCard} — compact summary card per artifact
43
+ * @see {@link ArtifactRow} — the dense row rendered per artifact
47
44
  * @see {@link ArtifactPreviewModal} — full preview with Apply/Push CTA
48
45
  * @see {@link useSessionArtifacts} — headless session-level artifact aggregation hook
49
46
  * @see {@link useExecutionArtifacts} — headless single-execution artifact extraction hook
50
47
  */
51
48
  export function ArtifactsWidget({ executions, org, onApplied, className, }) {
52
49
  const { artifacts, hasArtifacts, artifactCount } = useSessionArtifacts(executions);
53
- // Store the dedup key (sandboxPath or name) instead of a snapshot of
54
- // the full entry. The actual entry is derived from the live artifacts
55
- // list on every render, so the preview modal always reflects the
56
- // latest artifact version even when a newer execution publishes an
57
- // updated artifact for the same path while the modal is open.
50
+ // Store the artifact identity (not a snapshot of the full entry). The entry is
51
+ // re-derived from the live artifacts list on every render, so the modal always
52
+ // reflects the latest artifact version even when a newer execution publishes
53
+ // an updated artifact for the same path while the modal is open.
58
54
  const [previewKey, setPreviewKey] = useState(null);
59
55
  const previewEntry = useMemo(() => previewKey !== null
60
- ? artifacts.find((e) => (e.artifact.sandboxPath || e.artifact.name) === previewKey) ?? null
56
+ ? artifacts.find((e) => artifactKey(e.artifact) === previewKey) ?? null
61
57
  : null, [previewKey, artifacts]);
62
- const handlePreview = useCallback((entry) => setPreviewKey(entry.artifact.sandboxPath || entry.artifact.name), []);
58
+ const handleOpen = useCallback((entry) => setPreviewKey(artifactKey(entry.artifact)), []);
63
59
  if (!hasArtifacts)
64
60
  return null;
65
- return (_jsxs("section", { "aria-label": "Artifacts", className: cn(className), children: [_jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx("h3", { className: "text-sm font-medium text-foreground", children: "Artifacts" }), _jsx("span", { className: "inline-flex min-w-[1.25rem] items-center justify-center rounded-full bg-muted px-1.5 text-xs tabular-nums text-muted-foreground", children: artifactCount })] }), _jsx("div", { role: "list", className: "space-y-2", children: artifacts.map((entry) => (_jsx("div", { role: "listitem", children: _jsx(ArtifactCard, { artifact: entry.artifact, executionId: entry.executionId, org: org, hasNameCollision: entry.hasNameCollision, onPreview: () => handlePreview(entry) }) }, entry.artifact.storageKey))) }), previewEntry && (_jsx(ArtifactPreviewModal, { artifact: previewEntry.artifact, executionId: previewEntry.executionId, org: org, isTerminal: previewEntry.isTerminal, open: true, onClose: () => setPreviewKey(null), onApplied: onApplied }))] }));
61
+ return (_jsxs("section", { "aria-label": "Artifacts", className: cn(className), children: [_jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx("h3", { className: "text-sm font-medium text-foreground", children: "Artifacts" }), _jsx("span", { className: "inline-flex min-w-[1.25rem] items-center justify-center rounded-full bg-muted px-1.5 text-xs tabular-nums text-muted-foreground", children: artifactCount })] }), _jsx("ul", { role: "list", className: "flex flex-col", children: artifacts.map((entry) => (_jsx(ArtifactRow, { artifact: entry.artifact, executionId: entry.executionId, hasNameCollision: entry.hasNameCollision, onOpen: () => handleOpen(entry) }, artifactKey(entry.artifact)))) }), previewEntry && (_jsx(ArtifactPreviewModal, { artifact: previewEntry.artifact, executionId: previewEntry.executionId, org: org, isTerminal: previewEntry.isTerminal, open: true, onClose: () => setPreviewKey(null), onApplied: onApplied }))] }));
66
62
  }
67
63
  //# sourceMappingURL=ArtifactsWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArtifactsWidget.js","sourceRoot":"","sources":["../../src/execution/ArtifactsWidget.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EACL,mBAAmB,GAEpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AA4BjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,UAAU,EACV,GAAG,EACH,SAAS,EACT,SAAS,GACY;IACrB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,GAC9C,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAElC,qEAAqE;IACrE,uEAAuE;IACvE,iEAAiE;IACjE,qEAAqE;IACrE,8DAA8D;IAC9D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAElE,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CACH,UAAU,KAAK,IAAI;QACjB,CAAC,CAAC,SAAS,CAAC,IAAI,CACZ,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,UAAU,CAC7D,IAAI,IAAI;QACX,CAAC,CAAC,IAAI,EACV,CAAC,UAAU,EAAE,SAAS,CAAC,CACxB,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,KAA2B,EAAE,EAAE,CAC9B,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAClE,EAAE,CACH,CAAC;IAEF,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,CACL,iCAAoB,WAAW,EAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,aACtD,eAAK,SAAS,EAAC,8BAA8B,aAC3C,aAAI,SAAS,EAAC,qCAAqC,0BAAe,EAClE,eAAM,SAAS,EAAC,iIAAiI,YAC9I,aAAa,GACT,IACH,EAEN,cAAK,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,YACnC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACxB,cAAqC,IAAI,EAAC,UAAU,YAClD,KAAC,YAAY,IACX,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,GAAG,EAAE,GAAG,EACR,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GACrC,IAPM,KAAK,CAAC,QAAQ,CAAC,UAAU,CAQ7B,CACP,CAAC,GACE,EAEL,YAAY,IAAI,CACf,KAAC,oBAAoB,IACnB,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAC/B,WAAW,EAAE,YAAY,CAAC,WAAW,EACrC,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,IAAI,QACJ,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAClC,SAAS,EAAE,SAAS,GACpB,CACH,IACO,CACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ArtifactsWidget.js","sourceRoot":"","sources":["../../src/execution/ArtifactsWidget.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,WAAW,GAEZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AA4BjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,UAAU,EACV,GAAG,EACH,SAAS,EACT,SAAS,GACY;IACrB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,GAC9C,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAElC,+EAA+E;IAC/E,+EAA+E;IAC/E,+EAA+E;IAC/E,iEAAiE;IACjE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAElE,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CACH,UAAU,KAAK,IAAI;QACjB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,IAAI,IAAI;QACvE,CAAC,CAAC,IAAI,EACV,CAAC,UAAU,EAAE,SAAS,CAAC,CACxB,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,KAA2B,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAC3E,EAAE,CACH,CAAC;IAEF,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,CACL,iCAAoB,WAAW,EAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,aACtD,eAAK,SAAS,EAAC,8BAA8B,aAC3C,aAAI,SAAS,EAAC,qCAAqC,0BAAe,EAClE,eAAM,SAAS,EAAC,iIAAiI,YAC9I,aAAa,GACT,IACH,EAEN,aAAI,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,eAAe,YACtC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACxB,KAAC,WAAW,IAEV,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAJ1B,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAKhC,CACH,CAAC,GACC,EAEJ,YAAY,IAAI,CACf,KAAC,oBAAoB,IACnB,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAC/B,WAAW,EAAE,YAAY,CAAC,WAAW,EACrC,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,IAAI,QACJ,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAClC,SAAS,EAAE,SAAS,GACpB,CACH,IACO,CACX,CAAC;AACJ,CAAC"}