condukt 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bridge/bridge.d.ts +34 -0
- package/dist/bridge/bridge.d.ts.map +1 -0
- package/dist/bridge/bridge.js +365 -0
- package/dist/bridge/bridge.js.map +1 -0
- package/dist/bridge/index.d.ts +3 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +6 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/runtimes/copilot/copilot-adapter.d.ts +28 -0
- package/dist/runtimes/copilot/copilot-adapter.d.ts.map +1 -0
- package/dist/runtimes/copilot/copilot-adapter.js +50 -0
- package/dist/runtimes/copilot/copilot-adapter.js.map +1 -0
- package/dist/runtimes/copilot/copilot-backend.d.ts +49 -0
- package/dist/runtimes/copilot/copilot-backend.d.ts.map +1 -0
- package/dist/runtimes/copilot/copilot-backend.js +13 -0
- package/dist/runtimes/copilot/copilot-backend.js.map +1 -0
- package/dist/runtimes/copilot/index.d.ts +5 -0
- package/dist/runtimes/copilot/index.d.ts.map +1 -0
- package/dist/runtimes/copilot/index.js +11 -0
- package/dist/runtimes/copilot/index.js.map +1 -0
- package/dist/runtimes/copilot/process-killer.d.ts +13 -0
- package/dist/runtimes/copilot/process-killer.d.ts.map +1 -0
- package/dist/runtimes/copilot/process-killer.js +77 -0
- package/dist/runtimes/copilot/process-killer.js.map +1 -0
- package/dist/runtimes/copilot/subprocess-backend.d.ts +26 -0
- package/dist/runtimes/copilot/subprocess-backend.d.ts.map +1 -0
- package/dist/runtimes/copilot/subprocess-backend.js +308 -0
- package/dist/runtimes/copilot/subprocess-backend.js.map +1 -0
- package/dist/runtimes/mock/index.d.ts +3 -0
- package/dist/runtimes/mock/index.d.ts.map +1 -0
- package/dist/runtimes/mock/index.js +6 -0
- package/dist/runtimes/mock/index.js.map +1 -0
- package/dist/runtimes/mock/mock-runtime.d.ts +43 -0
- package/dist/runtimes/mock/mock-runtime.d.ts.map +1 -0
- package/dist/runtimes/mock/mock-runtime.js +153 -0
- package/dist/runtimes/mock/mock-runtime.js.map +1 -0
- package/dist/src/agent.d.ts +35 -0
- package/dist/src/agent.d.ts.map +1 -0
- package/dist/src/agent.js +257 -0
- package/dist/src/agent.js.map +1 -0
- package/dist/src/events.d.ts +153 -0
- package/dist/src/events.d.ts.map +1 -0
- package/dist/src/events.js +11 -0
- package/dist/src/events.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +24 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/nodes.d.ts +63 -0
- package/dist/src/nodes.d.ts.map +1 -0
- package/dist/src/nodes.js +120 -0
- package/dist/src/nodes.js.map +1 -0
- package/dist/src/scheduler.d.ts +11 -0
- package/dist/src/scheduler.d.ts.map +1 -0
- package/dist/src/scheduler.js +478 -0
- package/dist/src/scheduler.js.map +1 -0
- package/dist/src/types.d.ts +201 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +38 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/verify.d.ts +51 -0
- package/dist/src/verify.d.ts.map +1 -0
- package/dist/src/verify.js +126 -0
- package/dist/src/verify.js.map +1 -0
- package/dist/state/index.d.ts +5 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +14 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/reducer.d.ts +11 -0
- package/dist/state/reducer.d.ts.map +1 -0
- package/dist/state/reducer.js +223 -0
- package/dist/state/reducer.js.map +1 -0
- package/dist/state/state-runtime.d.ts +30 -0
- package/dist/state/state-runtime.d.ts.map +1 -0
- package/dist/state/state-runtime.js +131 -0
- package/dist/state/state-runtime.js.map +1 -0
- package/dist/state/storage-memory.d.ts +24 -0
- package/dist/state/storage-memory.d.ts.map +1 -0
- package/dist/state/storage-memory.js +91 -0
- package/dist/state/storage-memory.js.map +1 -0
- package/dist/state/storage.d.ts +29 -0
- package/dist/state/storage.d.ts.map +1 -0
- package/dist/state/storage.js +175 -0
- package/dist/state/storage.js.map +1 -0
- package/dist/theme/index.d.ts +128 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +59 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/ui/ansi.d.ts +9 -0
- package/dist/ui/ansi.d.ts.map +1 -0
- package/dist/ui/ansi.js +78 -0
- package/dist/ui/ansi.js.map +1 -0
- package/dist/ui/components/FlowEdge.d.ts +5 -0
- package/dist/ui/components/FlowEdge.d.ts.map +1 -0
- package/dist/ui/components/FlowEdge.js +33 -0
- package/dist/ui/components/FlowEdge.js.map +1 -0
- package/dist/ui/components/FlowGraph.d.ts +10 -0
- package/dist/ui/components/FlowGraph.d.ts.map +1 -0
- package/dist/ui/components/FlowGraph.js +124 -0
- package/dist/ui/components/FlowGraph.js.map +1 -0
- package/dist/ui/components/FlowStatusBar.d.ts +7 -0
- package/dist/ui/components/FlowStatusBar.d.ts.map +1 -0
- package/dist/ui/components/FlowStatusBar.js +27 -0
- package/dist/ui/components/FlowStatusBar.js.map +1 -0
- package/dist/ui/components/MiniPipeline.d.ts +10 -0
- package/dist/ui/components/MiniPipeline.d.ts.map +1 -0
- package/dist/ui/components/MiniPipeline.js +155 -0
- package/dist/ui/components/MiniPipeline.js.map +1 -0
- package/dist/ui/components/NodeCard.d.ts +5 -0
- package/dist/ui/components/NodeCard.d.ts.map +1 -0
- package/dist/ui/components/NodeCard.js +39 -0
- package/dist/ui/components/NodeCard.js.map +1 -0
- package/dist/ui/components/NodeDetailPanel.d.ts +10 -0
- package/dist/ui/components/NodeDetailPanel.d.ts.map +1 -0
- package/dist/ui/components/NodeDetailPanel.js +38 -0
- package/dist/ui/components/NodeDetailPanel.js.map +1 -0
- package/dist/ui/components/node-panel/Controls.d.ts +16 -0
- package/dist/ui/components/node-panel/Controls.d.ts.map +1 -0
- package/dist/ui/components/node-panel/Controls.js +28 -0
- package/dist/ui/components/node-panel/Controls.js.map +1 -0
- package/dist/ui/components/node-panel/ErrorBar.d.ts +6 -0
- package/dist/ui/components/node-panel/ErrorBar.d.ts.map +1 -0
- package/dist/ui/components/node-panel/ErrorBar.js +14 -0
- package/dist/ui/components/node-panel/ErrorBar.js.map +1 -0
- package/dist/ui/components/node-panel/Gate.d.ts +13 -0
- package/dist/ui/components/node-panel/Gate.d.ts.map +1 -0
- package/dist/ui/components/node-panel/Gate.js +40 -0
- package/dist/ui/components/node-panel/Gate.js.map +1 -0
- package/dist/ui/components/node-panel/Header.d.ts +10 -0
- package/dist/ui/components/node-panel/Header.d.ts.map +1 -0
- package/dist/ui/components/node-panel/Header.js +19 -0
- package/dist/ui/components/node-panel/Header.js.map +1 -0
- package/dist/ui/components/node-panel/Info.d.ts +7 -0
- package/dist/ui/components/node-panel/Info.d.ts.map +1 -0
- package/dist/ui/components/node-panel/Info.js +23 -0
- package/dist/ui/components/node-panel/Info.js.map +1 -0
- package/dist/ui/components/node-panel/Output.d.ts +27 -0
- package/dist/ui/components/node-panel/Output.d.ts.map +1 -0
- package/dist/ui/components/node-panel/Output.js +66 -0
- package/dist/ui/components/node-panel/Output.js.map +1 -0
- package/dist/ui/components/node-panel/index.d.ts +47 -0
- package/dist/ui/components/node-panel/index.d.ts.map +1 -0
- package/dist/ui/components/node-panel/index.js +54 -0
- package/dist/ui/components/node-panel/index.js.map +1 -0
- package/dist/ui/components/node-panel/types.d.ts +23 -0
- package/dist/ui/components/node-panel/types.d.ts.map +1 -0
- package/dist/ui/components/node-panel/types.js +24 -0
- package/dist/ui/components/node-panel/types.js.map +1 -0
- package/dist/ui/core/components/Badge.d.ts +6 -0
- package/dist/ui/core/components/Badge.d.ts.map +1 -0
- package/dist/ui/core/components/Badge.js +11 -0
- package/dist/ui/core/components/Badge.js.map +1 -0
- package/dist/ui/core/components/Button.d.ts +9 -0
- package/dist/ui/core/components/Button.d.ts.map +1 -0
- package/dist/ui/core/components/Button.js +18 -0
- package/dist/ui/core/components/Button.js.map +1 -0
- package/dist/ui/core/components/ConfirmDialog.d.ts +11 -0
- package/dist/ui/core/components/ConfirmDialog.d.ts.map +1 -0
- package/dist/ui/core/components/ConfirmDialog.js +23 -0
- package/dist/ui/core/components/ConfirmDialog.js.map +1 -0
- package/dist/ui/core/components/ExecutionCard.d.ts +12 -0
- package/dist/ui/core/components/ExecutionCard.d.ts.map +1 -0
- package/dist/ui/core/components/ExecutionCard.js +15 -0
- package/dist/ui/core/components/ExecutionCard.js.map +1 -0
- package/dist/ui/core/components/NodeListItem.d.ts +10 -0
- package/dist/ui/core/components/NodeListItem.d.ts.map +1 -0
- package/dist/ui/core/components/NodeListItem.js +27 -0
- package/dist/ui/core/components/NodeListItem.js.map +1 -0
- package/dist/ui/core/components/PageHeader.d.ts +10 -0
- package/dist/ui/core/components/PageHeader.d.ts.map +1 -0
- package/dist/ui/core/components/PageHeader.js +9 -0
- package/dist/ui/core/components/PageHeader.js.map +1 -0
- package/dist/ui/core/components/SectionLabel.d.ts +6 -0
- package/dist/ui/core/components/SectionLabel.d.ts.map +1 -0
- package/dist/ui/core/components/SectionLabel.js +9 -0
- package/dist/ui/core/components/SectionLabel.js.map +1 -0
- package/dist/ui/core/components/Skeleton.d.ts +7 -0
- package/dist/ui/core/components/Skeleton.d.ts.map +1 -0
- package/dist/ui/core/components/Skeleton.js +26 -0
- package/dist/ui/core/components/Skeleton.js.map +1 -0
- package/dist/ui/core/components/Stat.d.ts +8 -0
- package/dist/ui/core/components/Stat.d.ts.map +1 -0
- package/dist/ui/core/components/Stat.js +9 -0
- package/dist/ui/core/components/Stat.js.map +1 -0
- package/dist/ui/core/components/Toast.d.ts +7 -0
- package/dist/ui/core/components/Toast.d.ts.map +1 -0
- package/dist/ui/core/components/Toast.js +28 -0
- package/dist/ui/core/components/Toast.js.map +1 -0
- package/dist/ui/core/components/__tests__/primitives.test.d.ts +2 -0
- package/dist/ui/core/components/__tests__/primitives.test.d.ts.map +1 -0
- package/dist/ui/core/components/__tests__/primitives.test.js +3 -0
- package/dist/ui/core/components/__tests__/primitives.test.js.map +1 -0
- package/dist/ui/core/components/index.d.ts +21 -0
- package/dist/ui/core/components/index.d.ts.map +1 -0
- package/dist/ui/core/components/index.js +24 -0
- package/dist/ui/core/components/index.js.map +1 -0
- package/dist/ui/core/index.d.ts +17 -0
- package/dist/ui/core/index.d.ts.map +1 -0
- package/dist/ui/core/index.js +56 -0
- package/dist/ui/core/index.js.map +1 -0
- package/dist/ui/core/utils.d.ts +6 -0
- package/dist/ui/core/utils.d.ts.map +1 -0
- package/dist/ui/core/utils.js +32 -0
- package/dist/ui/core/utils.js.map +1 -0
- package/dist/ui/graph/index.d.ts +4 -0
- package/dist/ui/graph/index.d.ts.map +1 -0
- package/dist/ui/graph/index.js +11 -0
- package/dist/ui/graph/index.js.map +1 -0
- package/dist/ui/hooks/useAutoSelectNode.d.ts +3 -0
- package/dist/ui/hooks/useAutoSelectNode.d.ts.map +1 -0
- package/dist/ui/hooks/useAutoSelectNode.js +36 -0
- package/dist/ui/hooks/useAutoSelectNode.js.map +1 -0
- package/dist/ui/hooks/useFlowExecution.d.ts +32 -0
- package/dist/ui/hooks/useFlowExecution.d.ts.map +1 -0
- package/dist/ui/hooks/useFlowExecution.js +113 -0
- package/dist/ui/hooks/useFlowExecution.js.map +1 -0
- package/dist/ui/hooks/useNodeNavigation.d.ts +3 -0
- package/dist/ui/hooks/useNodeNavigation.d.ts.map +1 -0
- package/dist/ui/hooks/useNodeNavigation.js +38 -0
- package/dist/ui/hooks/useNodeNavigation.js.map +1 -0
- package/dist/ui/hooks/useNodeOutput.d.ts +21 -0
- package/dist/ui/hooks/useNodeOutput.d.ts.map +1 -0
- package/dist/ui/hooks/useNodeOutput.js +75 -0
- package/dist/ui/hooks/useNodeOutput.js.map +1 -0
- package/dist/ui/index.d.ts +16 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +37 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/utils.d.ts +3 -0
- package/dist/ui/utils.d.ts.map +1 -0
- package/dist/ui/utils.js +9 -0
- package/dist/ui/utils.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Gate = Gate;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/** Capitalize first letter of each word. */
|
|
7
|
+
function titleCase(s) {
|
|
8
|
+
return s.replace(/\b\w/g, c => c.toUpperCase());
|
|
9
|
+
}
|
|
10
|
+
const RESOLUTION_COLORS = {
|
|
11
|
+
approved: '#22c55e',
|
|
12
|
+
rejected: '#ef4444',
|
|
13
|
+
deploy: '#3b82f6',
|
|
14
|
+
rollback: '#ef4444',
|
|
15
|
+
skip: '#888',
|
|
16
|
+
};
|
|
17
|
+
function resolveColor(resolution) {
|
|
18
|
+
return RESOLUTION_COLORS[resolution.toLowerCase()] ?? '#3b82f6';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Data-driven gate section (ADR-002).
|
|
22
|
+
* Reads allowedResolutions from gateData. Default: ['approved', 'rejected'].
|
|
23
|
+
* Renders one button per allowed resolution.
|
|
24
|
+
*/
|
|
25
|
+
function Gate({ node, onResolve }) {
|
|
26
|
+
if (node.status !== 'gated')
|
|
27
|
+
return null;
|
|
28
|
+
const gateData = node.gateData ?? {};
|
|
29
|
+
const resolutions = (Array.isArray(gateData.allowedResolutions) ? gateData.allowedResolutions : null) ??
|
|
30
|
+
['approved', 'rejected'];
|
|
31
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: { padding: '12px 24px', borderBottom: '1px solid #302e2b', background: '#352a1533', borderLeft: '3px solid #fbbf2444' }, children: [(0, jsx_runtime_1.jsx)("div", { style: { fontWeight: 600, color: '#fbbf24', fontSize: 12, marginBottom: 6 }, children: "Awaiting Resolution" }), Object.keys(gateData).filter(k => k !== 'allowedResolutions').length > 0 && ((0, jsx_runtime_1.jsx)("pre", { style: { margin: '0 0 8px', color: '#8a8578', fontSize: 11, maxHeight: 80, overflow: 'auto', background: '#343230', padding: 8, borderRadius: 6 }, children: JSON.stringify(Object.fromEntries(Object.entries(gateData).filter(([k]) => k !== 'allowedResolutions')), null, 2) })), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', gap: 6 }, children: resolutions.map(resolution => {
|
|
32
|
+
const color = resolveColor(resolution);
|
|
33
|
+
return ((0, jsx_runtime_1.jsx)("button", { onClick: () => onResolve(resolution), style: {
|
|
34
|
+
background: color + '18', color, border: `1px solid ${color}33`,
|
|
35
|
+
borderRadius: 6, padding: '4px 12px', fontSize: 11,
|
|
36
|
+
cursor: 'pointer', fontWeight: 500,
|
|
37
|
+
}, children: titleCase(resolution) }, resolution));
|
|
38
|
+
}) })] }));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=Gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Gate.js","sourceRoot":"","sources":["../../../../ui/components/node-panel/Gate.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AA+Bb,oBA0CC;;AAhED,4CAA4C;AAC5C,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,iBAAiB,GAA2B;IAChD,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,SAAS,YAAY,CAAC,UAAkB;IACtC,OAAO,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,SAAS,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,SAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAS;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IACrC,MAAM,WAAW,GACf,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;QACjF,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAE3B,OAAO,CACL,iCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB,EAAE,aACjI,gCAAK,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,oCAE1E,EAEL,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAC3E,gCAAK,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YACnJ,IAAI,CAAC,SAAS,CACb,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC,EACxF,IAAI,EAAE,CAAC,CACR,GACG,CACP,EACD,gCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,YACpC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;oBAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;oBACvC,OAAO,CACL,mCAEE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,EACpC,KAAK,EAAE;4BACL,UAAU,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI;4BAC/D,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;4BAClD,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG;yBACnC,YAEA,SAAS,CAAC,UAAU,CAAC,IARjB,UAAU,CASR,CACV,CAAC;gBACJ,CAAC,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ProjectionNode } from '../../../src/types';
|
|
2
|
+
interface Props {
|
|
3
|
+
node: ProjectionNode;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
/** Optional action buttons (Redo/Retry/Skip) rendered inline in the header */
|
|
6
|
+
actions?: React.ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare function Header({ node, onClose, actions }: Props): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../ui/components/node-panel/Header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,UAAU,KAAK;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,2CA4BvD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Header = Header;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const types_1 = require("./types");
|
|
7
|
+
function Header({ node, onClose, actions }) {
|
|
8
|
+
const c = (0, types_1.sc)(node.status);
|
|
9
|
+
const isActive = node.status === 'running' || node.status === 'gated';
|
|
10
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
11
|
+
padding: '16px 24px', borderBottom: '1px solid #302e2b',
|
|
12
|
+
background: 'linear-gradient(to bottom, #201d18, #1a1815)',
|
|
13
|
+
display: 'flex', justifyContent: 'space-between', alignItems: 'center',
|
|
14
|
+
}, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'center', gap: 8 }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
|
|
15
|
+
width: 10, height: 10, borderRadius: '50%', background: c.dot,
|
|
16
|
+
boxShadow: isActive ? `0 0 8px ${c.dot}, 0 0 20px ${c.dot}33` : 'none',
|
|
17
|
+
} }), (0, jsx_runtime_1.jsx)("span", { style: { fontWeight: 600, fontSize: 16, letterSpacing: '-0.01em' }, children: node.displayName }), (0, jsx_runtime_1.jsx)("span", { style: { fontSize: 11, color: '#8a8578', background: '#2b2a27', padding: '2px 8px', borderRadius: 6, marginLeft: 6 }, children: node.nodeType }), actions && (0, jsx_runtime_1.jsx)("div", { style: { marginLeft: 8, display: 'flex', gap: 6 }, children: actions })] }), (0, jsx_runtime_1.jsx)("button", { onClick: onClose, "aria-label": "Close panel", style: { background: 'none', border: 'none', color: '#8a8578', cursor: 'pointer', fontSize: 18, padding: '8px 8px', minWidth: 32, minHeight: 32, display: 'flex', alignItems: 'center', justifyContent: 'center', borderRadius: 6 }, children: "\u00D7" })] }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../../ui/components/node-panel/Header.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAYb,wBA4BC;;AArCD,mCAA6B;AAS7B,SAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAS;IACtD,MAAM,CAAC,GAAG,IAAA,UAAE,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC;IAEtE,OAAO,CACL,iCAAK,KAAK,EAAE;YACV,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB;YACvD,UAAU,EAAE,8CAA8C;YAC1D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ;SACvE,aACC,iCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aAC3D,gCAAK,KAAK,EAAE;4BACV,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,GAAG;4BAC7D,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM;yBACvE,GAAI,EACL,iCAAM,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,YAAG,IAAI,CAAC,WAAW,GAAQ,EACnG,iCAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAG,IAAI,CAAC,QAAQ,GAAQ,EACjJ,OAAO,IAAI,gCAAK,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,YAAG,OAAO,GAAO,IAC/E,EACN,mCACE,OAAO,EAAE,OAAO,gBACL,aAAa,EACxB,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAE,uBAG5N,IACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Info.d.ts","sourceRoot":"","sources":["../../../../ui/components/node-panel/Info.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,UAAU,KAAK;IACb,IAAI,EAAE,cAAc,CAAC;CACtB;AASD,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,2CAenC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Info = Info;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const types_1 = require("./types");
|
|
7
|
+
function fmt(ms) {
|
|
8
|
+
if (ms < 1000)
|
|
9
|
+
return `${ms}ms`;
|
|
10
|
+
const s = Math.floor(ms / 1000);
|
|
11
|
+
if (s < 60)
|
|
12
|
+
return `${s}s`;
|
|
13
|
+
return `${Math.floor(s / 60)}m ${s % 60}s`;
|
|
14
|
+
}
|
|
15
|
+
function Info({ node }) {
|
|
16
|
+
const c = (0, types_1.sc)(node.status);
|
|
17
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
18
|
+
padding: '12px 24px', fontSize: 11, color: '#8a8578',
|
|
19
|
+
borderBottom: '1px solid #302e2b',
|
|
20
|
+
display: 'flex', gap: 16, flexWrap: 'wrap',
|
|
21
|
+
}, children: [(0, jsx_runtime_1.jsxs)("span", { children: ["Status: ", (0, jsx_runtime_1.jsx)("b", { style: { color: c.text }, children: node.status })] }), node.model && (0, jsx_runtime_1.jsxs)("span", { children: ["Model: ", node.model] }), node.elapsedMs != null && (0, jsx_runtime_1.jsxs)("span", { children: ["Duration: ", fmt(node.elapsedMs)] }), node.attempt > 1 && (0, jsx_runtime_1.jsxs)("span", { children: ["Attempt: ", node.attempt] })] }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=Info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Info.js","sourceRoot":"","sources":["../../../../ui/components/node-panel/Info.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAgBb,oBAeC;;AA5BD,mCAA6B;AAM7B,SAAS,GAAG,CAAC,EAAU;IACrB,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,EAAE,IAAI,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC;IAC3B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;AAC7C,CAAC;AAED,SAAgB,IAAI,CAAC,EAAE,IAAI,EAAS;IAClC,MAAM,CAAC,GAAG,IAAA,UAAE,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE1B,OAAO,CACL,iCAAK,KAAK,EAAE;YACV,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS;YACpD,YAAY,EAAE,mBAAmB;YACjC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM;SAC3C,aACC,yDAAc,8BAAG,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,YAAG,IAAI,CAAC,MAAM,GAAK,IAAO,EAClE,IAAI,CAAC,KAAK,IAAI,wDAAc,IAAI,CAAC,KAAK,IAAQ,EAC9C,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,2DAAiB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAQ,EACtE,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,0DAAgB,IAAI,CAAC,OAAO,IAAQ,IACrD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type OutputRenderer = 'plain' | 'ansi' | ((line: string, index: number) => React.ReactNode);
|
|
2
|
+
interface Props {
|
|
3
|
+
lines: string[];
|
|
4
|
+
total: number;
|
|
5
|
+
loading?: boolean;
|
|
6
|
+
/** Output rendering mode. Default: 'plain'. */
|
|
7
|
+
renderer?: OutputRenderer;
|
|
8
|
+
/** Max lines to keep in memory. Default: 50000. Oldest evicted first. */
|
|
9
|
+
maxLines?: number;
|
|
10
|
+
/** Auto-scroll to bottom on new lines. Default: true. */
|
|
11
|
+
autoScroll?: boolean;
|
|
12
|
+
/** Show running cursor animation. */
|
|
13
|
+
isRunning?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Scrollable output stream with configurable renderer (ADR-001).
|
|
17
|
+
*
|
|
18
|
+
* - 'plain' (default): renders lines as text nodes. No dangerouslySetInnerHTML.
|
|
19
|
+
* - 'ansi': converts ANSI escape codes to colored HTML spans. Uses fast-path
|
|
20
|
+
* (hasAnsi check) to avoid unnecessary HTML for plain lines.
|
|
21
|
+
* - function: custom renderer receives (line, index) and returns ReactNode.
|
|
22
|
+
*
|
|
23
|
+
* Features: auto-scroll toggle, copy button (strips ANSI), line count, line cap.
|
|
24
|
+
*/
|
|
25
|
+
export declare function Output({ lines: rawLines, total, loading, renderer, maxLines, autoScroll: initialAutoScroll, isRunning, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=Output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Output.d.ts","sourceRoot":"","sources":["../../../../ui/components/node-panel/Output.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;AAEnG,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EAAE,QAAQ,EACf,KAAK,EACL,OAAO,EACP,QAAkB,EAClB,QAA4B,EAC5B,UAAU,EAAE,iBAAwB,EACpC,SAAS,GACV,EAAE,KAAK,2CA4FP"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Output = Output;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const ansi_1 = require("../../ansi");
|
|
8
|
+
const MAX_LINES_DEFAULT = 50000;
|
|
9
|
+
/**
|
|
10
|
+
* Scrollable output stream with configurable renderer (ADR-001).
|
|
11
|
+
*
|
|
12
|
+
* - 'plain' (default): renders lines as text nodes. No dangerouslySetInnerHTML.
|
|
13
|
+
* - 'ansi': converts ANSI escape codes to colored HTML spans. Uses fast-path
|
|
14
|
+
* (hasAnsi check) to avoid unnecessary HTML for plain lines.
|
|
15
|
+
* - function: custom renderer receives (line, index) and returns ReactNode.
|
|
16
|
+
*
|
|
17
|
+
* Features: auto-scroll toggle, copy button (strips ANSI), line count, line cap.
|
|
18
|
+
*/
|
|
19
|
+
function Output({ lines: rawLines, total, loading, renderer = 'plain', maxLines = MAX_LINES_DEFAULT, autoScroll: initialAutoScroll = true, isRunning, }) {
|
|
20
|
+
const [autoScroll, setAutoScroll] = (0, react_1.useState)(initialAutoScroll);
|
|
21
|
+
const scrollRef = (0, react_1.useRef)(null);
|
|
22
|
+
const [copyFeedback, setCopyFeedback] = (0, react_1.useState)(false);
|
|
23
|
+
// Apply line cap
|
|
24
|
+
const lines = rawLines.length > maxLines ? rawLines.slice(-maxLines) : rawLines;
|
|
25
|
+
// Auto-scroll on new content
|
|
26
|
+
(0, react_1.useEffect)(() => {
|
|
27
|
+
if (autoScroll && scrollRef.current) {
|
|
28
|
+
scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
|
|
29
|
+
}
|
|
30
|
+
}, [lines.length, autoScroll]);
|
|
31
|
+
const handleCopy = () => {
|
|
32
|
+
const text = lines.map(l => (0, ansi_1.stripAnsi)(l)).join('\n');
|
|
33
|
+
navigator.clipboard.writeText(text).then(() => {
|
|
34
|
+
setCopyFeedback(true);
|
|
35
|
+
setTimeout(() => setCopyFeedback(false), 2000);
|
|
36
|
+
}).catch(() => { });
|
|
37
|
+
};
|
|
38
|
+
// Render a single line based on renderer mode
|
|
39
|
+
const renderLine = (line, i) => {
|
|
40
|
+
if (typeof renderer === 'function') {
|
|
41
|
+
return (0, jsx_runtime_1.jsx)("div", { style: { whiteSpace: 'pre-wrap', wordBreak: 'break-word', minHeight: 18 }, children: renderer(line, i) }, i);
|
|
42
|
+
}
|
|
43
|
+
if (renderer === 'ansi' && (0, ansi_1.hasAnsi)(line)) {
|
|
44
|
+
return (0, jsx_runtime_1.jsx)("div", { style: { whiteSpace: 'pre-wrap', wordBreak: 'break-word', minHeight: 18 }, dangerouslySetInnerHTML: { __html: (0, ansi_1.ansiToHtml)(line) || '\u00A0' } }, i);
|
|
45
|
+
}
|
|
46
|
+
return (0, jsx_runtime_1.jsx)("div", { style: { whiteSpace: 'pre-wrap', wordBreak: 'break-word', minHeight: 18 }, children: line || '\u00A0' }, i);
|
|
47
|
+
};
|
|
48
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', flex: 1, overflow: 'hidden' }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
|
|
49
|
+
padding: '12px 24px', fontSize: 11, color: '#6b6660', background: '#1a1815',
|
|
50
|
+
borderBottom: '1px solid #302e2b',
|
|
51
|
+
display: 'flex', justifyContent: 'space-between', gap: 8,
|
|
52
|
+
}, children: [(0, jsx_runtime_1.jsxs)("span", { children: [lines.length === total ? `${total} lines` : `${lines.length} of ${total} lines`, loading && ' (loading...)'] }), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', gap: 8 }, children: [(0, jsx_runtime_1.jsx)("button", { onClick: handleCopy, onMouseEnter: e => { const btn = e.currentTarget; if (!copyFeedback)
|
|
53
|
+
btn.style.color = '#c4bfb5'; btn.style.background = '#343230'; }, onMouseLeave: e => { const btn = e.currentTarget; if (!copyFeedback)
|
|
54
|
+
btn.style.color = '#8a8578'; btn.style.background = 'none'; }, style: { background: 'none', border: 'none', color: copyFeedback ? '#4ade80' : '#8a8578', cursor: 'pointer', fontSize: 11, transition: 'all 150ms', borderRadius: 4, padding: '2px 6px' }, children: copyFeedback ? 'Copied!' : 'Copy' }), (0, jsx_runtime_1.jsx)("button", { onClick: () => setAutoScroll(!autoScroll), onMouseEnter: e => { const btn = e.currentTarget; if (!autoScroll)
|
|
55
|
+
btn.style.color = '#c4bfb5'; btn.style.background = '#343230'; }, onMouseLeave: e => { const btn = e.currentTarget; if (!autoScroll)
|
|
56
|
+
btn.style.color = '#8a8578'; btn.style.background = 'none'; }, style: { background: 'none', border: 'none', color: autoScroll ? '#4ade80' : '#8a8578', cursor: 'pointer', fontSize: 11, transition: 'all 150ms', borderRadius: 4, padding: '2px 6px' }, children: autoScroll ? 'Auto-scroll ON' : 'Auto-scroll OFF' })] })] }), (0, jsx_runtime_1.jsxs)("div", { ref: scrollRef, style: {
|
|
57
|
+
flex: 1, overflowY: 'auto', padding: '12px 24px',
|
|
58
|
+
fontFamily: '"Cascadia Code", "Fira Code", "JetBrains Mono", "Consolas", monospace',
|
|
59
|
+
fontSize: 12, lineHeight: 1.5, background: '#161411',
|
|
60
|
+
}, children: [lines.length === 0 ? ((0, jsx_runtime_1.jsx)("span", { style: { color: '#585350' }, children: isRunning ? 'Waiting for output...' : 'No output' })) : (lines.map(renderLine)), isRunning && ((0, jsx_runtime_1.jsx)("span", { style: {
|
|
61
|
+
display: 'inline-block', width: 7, height: 14,
|
|
62
|
+
background: '#4ade80', marginLeft: 2, verticalAlign: 'text-bottom',
|
|
63
|
+
animation: 'flow-blink 1s step-end infinite',
|
|
64
|
+
} }))] }), (0, jsx_runtime_1.jsx)("style", { children: `@keyframes flow-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }` })] }));
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=Output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Output.js","sourceRoot":"","sources":["../../../../ui/components/node-panel/Output.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NodePanel — compound component for node detail views (ADR-003).
|
|
3
|
+
*
|
|
4
|
+
* Usage (zero-config convenience):
|
|
5
|
+
* ```tsx
|
|
6
|
+
* import { NodeDetailPanel } from '@anthropic/flow-framework/ui';
|
|
7
|
+
* <NodeDetailPanel projection={p} nodeId={id} onClose={close} onAction={act} />
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* Usage (compound composition):
|
|
11
|
+
* ```tsx
|
|
12
|
+
* import { NodePanel } from '@anthropic/flow-framework/ui';
|
|
13
|
+
* <NodePanel>
|
|
14
|
+
* <NodePanel.Header node={node} onClose={close} />
|
|
15
|
+
* <NodePanel.Info node={node} />
|
|
16
|
+
* {node.status === 'gated' && <MyCustomGateUI />}
|
|
17
|
+
* <NodePanel.Controls node={node} onRetry={retry} onSkip={skip} />
|
|
18
|
+
* <NodePanel.Output lines={lines} total={total} renderer="ansi" />
|
|
19
|
+
* </NodePanel>
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import { Header } from './Header';
|
|
23
|
+
import { Info } from './Info';
|
|
24
|
+
import { ErrorBar } from './ErrorBar';
|
|
25
|
+
import { Gate } from './Gate';
|
|
26
|
+
import { Controls } from './Controls';
|
|
27
|
+
import { Output } from './Output';
|
|
28
|
+
import type { OutputRenderer } from './Output';
|
|
29
|
+
interface NodePanelProps {
|
|
30
|
+
children: React.ReactNode;
|
|
31
|
+
style?: React.CSSProperties;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Shell container for the node detail panel.
|
|
35
|
+
* Provides the flex column layout. Children are the compound sub-components.
|
|
36
|
+
*/
|
|
37
|
+
declare function NodePanelRoot({ children, style }: NodePanelProps): import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
export declare const NodePanel: typeof NodePanelRoot & {
|
|
39
|
+
Header: typeof Header;
|
|
40
|
+
Info: typeof Info;
|
|
41
|
+
Error: typeof ErrorBar;
|
|
42
|
+
Gate: typeof Gate;
|
|
43
|
+
Controls: typeof Controls;
|
|
44
|
+
Output: typeof Output;
|
|
45
|
+
};
|
|
46
|
+
export type { OutputRenderer };
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../ui/components/node-panel/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,UAAU,cAAc;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;;GAGG;AACH,iBAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,cAAc,2CAWzD;AAGD,eAAO,MAAM,SAAS;;;;;;;CAOpB,CAAC;AAEH,YAAY,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.NodePanel = void 0;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* NodePanel — compound component for node detail views (ADR-003).
|
|
8
|
+
*
|
|
9
|
+
* Usage (zero-config convenience):
|
|
10
|
+
* ```tsx
|
|
11
|
+
* import { NodeDetailPanel } from '@anthropic/flow-framework/ui';
|
|
12
|
+
* <NodeDetailPanel projection={p} nodeId={id} onClose={close} onAction={act} />
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* Usage (compound composition):
|
|
16
|
+
* ```tsx
|
|
17
|
+
* import { NodePanel } from '@anthropic/flow-framework/ui';
|
|
18
|
+
* <NodePanel>
|
|
19
|
+
* <NodePanel.Header node={node} onClose={close} />
|
|
20
|
+
* <NodePanel.Info node={node} />
|
|
21
|
+
* {node.status === 'gated' && <MyCustomGateUI />}
|
|
22
|
+
* <NodePanel.Controls node={node} onRetry={retry} onSkip={skip} />
|
|
23
|
+
* <NodePanel.Output lines={lines} total={total} renderer="ansi" />
|
|
24
|
+
* </NodePanel>
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
const Header_1 = require("./Header");
|
|
28
|
+
const Info_1 = require("./Info");
|
|
29
|
+
const ErrorBar_1 = require("./ErrorBar");
|
|
30
|
+
const Gate_1 = require("./Gate");
|
|
31
|
+
const Controls_1 = require("./Controls");
|
|
32
|
+
const Output_1 = require("./Output");
|
|
33
|
+
/**
|
|
34
|
+
* Shell container for the node detail panel.
|
|
35
|
+
* Provides the flex column layout. Children are the compound sub-components.
|
|
36
|
+
*/
|
|
37
|
+
function NodePanelRoot({ children, style }) {
|
|
38
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
39
|
+
display: 'flex', flexDirection: 'column', height: '100%',
|
|
40
|
+
background: '#1a1815', color: '#e8e6e3',
|
|
41
|
+
fontFamily: 'system-ui, -apple-system, sans-serif',
|
|
42
|
+
...style,
|
|
43
|
+
}, children: children }));
|
|
44
|
+
}
|
|
45
|
+
// Attach sub-components as static properties (dot notation pattern)
|
|
46
|
+
exports.NodePanel = Object.assign(NodePanelRoot, {
|
|
47
|
+
Header: Header_1.Header,
|
|
48
|
+
Info: Info_1.Info,
|
|
49
|
+
Error: ErrorBar_1.ErrorBar,
|
|
50
|
+
Gate: Gate_1.Gate,
|
|
51
|
+
Controls: Controls_1.Controls,
|
|
52
|
+
Output: Output_1.Output,
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../ui/components/node-panel/index.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,qCAAkC;AAClC,iCAA8B;AAC9B,yCAAsC;AACtC,iCAA8B;AAC9B,yCAAsC;AACtC,qCAAkC;AAQlC;;;GAGG;AACH,SAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAkB;IACxD,OAAO,CACL,gCAAK,KAAK,EAAE;YACV,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;YACxD,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS;YACvC,UAAU,EAAE,sCAAsC;YAClD,GAAG,KAAK;SACT,YACE,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,oEAAoE;AACvD,QAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;IACpD,MAAM,EAAN,eAAM;IACN,IAAI,EAAJ,WAAI;IACJ,KAAK,EAAE,mBAAQ;IACf,IAAI,EAAJ,WAAI;IACJ,QAAQ,EAAR,mBAAQ;IACR,MAAM,EAAN,eAAM;CACP,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for NodePanel compound components.
|
|
3
|
+
*/
|
|
4
|
+
import type { ProjectionNode } from '../../../src/types';
|
|
5
|
+
export type OnActionFn = (action: string, nodeId: string) => void;
|
|
6
|
+
export interface NodePanelContext {
|
|
7
|
+
node: ProjectionNode;
|
|
8
|
+
executionId: string;
|
|
9
|
+
onAction: OnActionFn;
|
|
10
|
+
onClose: () => void;
|
|
11
|
+
}
|
|
12
|
+
/** Status → inline style colors (no Tailwind dependency). */
|
|
13
|
+
export declare const STATUS_COLORS: Record<string, {
|
|
14
|
+
dot: string;
|
|
15
|
+
text: string;
|
|
16
|
+
bg: string;
|
|
17
|
+
}>;
|
|
18
|
+
export declare function sc(status: string): {
|
|
19
|
+
dot: string;
|
|
20
|
+
text: string;
|
|
21
|
+
bg: string;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../ui/components/node-panel/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,6DAA6D;AAC7D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAWnF,CAAC;AAEF,wBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM;SAbiB,MAAM;UAAQ,MAAM;QAAM,MAAM;EAejF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared types for NodePanel compound components.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.STATUS_COLORS = void 0;
|
|
7
|
+
exports.sc = sc;
|
|
8
|
+
/** Status → inline style colors (no Tailwind dependency). */
|
|
9
|
+
exports.STATUS_COLORS = {
|
|
10
|
+
pending: { dot: '#555', text: '#888', bg: '#252320' },
|
|
11
|
+
running: { dot: '#60a5fa', text: '#60a5fa', bg: '#1a2a40' },
|
|
12
|
+
completed: { dot: '#4ade80', text: '#4ade80', bg: '#1a3528' },
|
|
13
|
+
failed: { dot: '#f87171', text: '#f87171', bg: '#3a1a1a' },
|
|
14
|
+
killed: { dot: '#666', text: '#888', bg: '#252320' },
|
|
15
|
+
skipped: { dot: '#555', text: '#888', bg: '#252320' },
|
|
16
|
+
gated: { dot: '#fbbf24', text: '#fbbf24', bg: '#352a15' },
|
|
17
|
+
retrying: { dot: '#fb923c', text: '#fb923c', bg: '#3a2515' },
|
|
18
|
+
stopped: { dot: '#fbbf24', text: '#fbbf24', bg: '#352a15' },
|
|
19
|
+
crashed: { dot: '#c084fc', text: '#c084fc', bg: '#2a1845' },
|
|
20
|
+
};
|
|
21
|
+
function sc(status) {
|
|
22
|
+
return exports.STATUS_COLORS[status] ?? exports.STATUS_COLORS.pending;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../ui/components/node-panel/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA2BH,gBAEC;AAhBD,6DAA6D;AAChD,QAAA,aAAa,GAA8D;IACtF,OAAO,EAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE;IACvD,OAAO,EAAI,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7D,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7D,MAAM,EAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7D,MAAM,EAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE;IACvD,OAAO,EAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE;IACvD,KAAK,EAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7D,QAAQ,EAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7D,OAAO,EAAI,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7D,OAAO,EAAI,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;CAC9D,CAAC;AAEF,SAAgB,EAAE,CAAC,MAAc;IAC/B,OAAO,qBAAa,CAAC,MAAM,CAAC,IAAI,qBAAa,CAAC,OAAO,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../../ui/core/components/Badge.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,UAAU,2CAatD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Badge = Badge;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const utils_1 = require("../../utils");
|
|
6
|
+
const types_1 = require("../../components/node-panel/types");
|
|
7
|
+
function Badge({ status, className }) {
|
|
8
|
+
const colors = (0, types_1.sc)(status);
|
|
9
|
+
return ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('inline-flex items-center px-2 py-[3px] rounded-full text-[10px] font-semibold uppercase tracking-wide', className), style: { backgroundColor: colors.bg, color: colors.text, border: `1px solid ${colors.dot}44`, boxShadow: `0 0 12px ${colors.dot}44` }, children: status }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=Badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.js","sourceRoot":"","sources":["../../../../ui/core/components/Badge.tsx"],"names":[],"mappings":";;AAQA,sBAaC;;AArBD,uCAAiC;AACjC,6DAAuD;AAOvD,SAAgB,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAc;IACrD,MAAM,MAAM,GAAG,IAAA,UAAE,EAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,CACL,iCACE,SAAS,EAAE,IAAA,UAAE,EACX,uGAAuG,EACvG,SAAS,CACV,EACD,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,MAAM,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,YAAY,MAAM,CAAC,GAAG,IAAI,EAAE,YAEpI,MAAM,GACF,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
2
|
+
variant?: 'primary' | 'secondary' | 'ghost' | 'danger';
|
|
3
|
+
size?: 'sm' | 'md';
|
|
4
|
+
loading?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function Button({ variant, size, loading, disabled, className, children, ref, ...rest }: ButtonProps & {
|
|
7
|
+
ref?: React.Ref<HTMLButtonElement>;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../ui/core/components/Button.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IAChF,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;IACvD,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD,wBAAgB,MAAM,CAAC,EACrB,OAAmB,EACnB,IAAW,EACX,OAAe,EACf,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,IAAI,EACR,EAAE,WAAW,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAAE,2CA+BtD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Button = Button;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const utils_1 = require("../../utils");
|
|
6
|
+
const variantStyles = {
|
|
7
|
+
primary: 'bg-blue-600 text-white hover:bg-blue-500 shadow-[0_1px_2px_rgba(0,0,0,0.3),0_0_12px_rgba(59,130,246,0.2)] hover:shadow-[0_1px_2px_rgba(0,0,0,0.3),0_0_20px_rgba(59,130,246,0.3)]',
|
|
8
|
+
secondary: 'bg-[#2d2a26] border border-[#4a4742] text-[#d4cfc5] hover:bg-[#343230] hover:border-[#5a5650] hover:text-[#e8e6e3] shadow-[0_1px_2px_rgba(0,0,0,0.2)]',
|
|
9
|
+
ghost: 'bg-transparent text-[#b1ada1] hover:bg-[#343230] hover:text-[#e8e6e3]',
|
|
10
|
+
danger: 'bg-red-600 text-white hover:bg-red-500 shadow-[0_1px_2px_rgba(0,0,0,0.3),0_0_12px_rgba(239,68,68,0.2)]',
|
|
11
|
+
};
|
|
12
|
+
function Button({ variant = 'primary', size = 'md', loading = false, disabled, className, children, ref, ...rest }) {
|
|
13
|
+
const isDisabled = disabled || loading;
|
|
14
|
+
return ((0, jsx_runtime_1.jsx)("button", { ref: ref, disabled: isDisabled, className: (0, utils_1.cn)('rounded-xl font-medium transition-all duration-200 active:scale-[0.97]', variantStyles[variant], size === 'sm' && 'text-xs px-3 py-1.5', size === 'md' && 'text-sm px-4 py-2', isDisabled && 'opacity-50 cursor-not-allowed', className), style: {
|
|
15
|
+
minHeight: size === 'sm' ? 32 : 36,
|
|
16
|
+
}, ...rest, children: loading ? ((0, jsx_runtime_1.jsx)("span", { className: "inline-block w-4 h-4 border-2 border-current border-t-transparent rounded-full", style: { animation: 'spin 0.6s linear infinite' }, "aria-label": "Loading" })) : (children) }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../../ui/core/components/Button.tsx"],"names":[],"mappings":";;AAeA,wBAwCC;;AAvDD,uCAAiC;AAQjC,MAAM,aAAa,GAA2B;IAC5C,OAAO,EAAE,kLAAkL;IAC3L,SAAS,EAAE,uJAAuJ;IAClK,KAAK,EAAE,uEAAuE;IAC9E,MAAM,EAAE,wGAAwG;CACjH,CAAC;AAEF,SAAgB,MAAM,CAAC,EACrB,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,IAAI,EAC8C;IACrD,MAAM,UAAU,GAAG,QAAQ,IAAI,OAAO,CAAC;IAEvC,OAAO,CACL,mCACE,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAE,IAAA,UAAE,EACX,wEAAwE,EACxE,aAAa,CAAC,OAAO,CAAC,EACtB,IAAI,KAAK,IAAI,IAAI,qBAAqB,EACtC,IAAI,KAAK,IAAI,IAAI,mBAAmB,EACpC,UAAU,IAAI,+BAA+B,EAC7C,SAAS,CACV,EACD,KAAK,EAAE;YACL,SAAS,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;SACnC,KACG,IAAI,YAEP,OAAO,CAAC,CAAC,CAAC,CACT,iCACE,SAAS,EAAC,gFAAgF,EAC1F,KAAK,EAAE,EAAE,SAAS,EAAE,2BAA2B,EAAE,gBACtC,SAAS,GACpB,CACH,CAAC,CAAC,CAAC,CACF,QAAQ,CACT,GACM,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ConfirmDialogProps {
|
|
2
|
+
title: string;
|
|
3
|
+
message: string;
|
|
4
|
+
confirmLabel?: string;
|
|
5
|
+
cancelLabel?: string;
|
|
6
|
+
variant?: 'danger' | 'default';
|
|
7
|
+
onConfirm: () => void;
|
|
8
|
+
onCancel: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function ConfirmDialog({ title, message, confirmLabel, cancelLabel, variant, onConfirm, onCancel, }: ConfirmDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=ConfirmDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../../ui/core/components/ConfirmDialog.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,YAAwB,EACxB,WAAsB,EACtB,OAAmB,EACnB,SAAS,EACT,QAAQ,GACT,EAAE,kBAAkB,2CAyCpB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ConfirmDialog = ConfirmDialog;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const Button_1 = require("./Button");
|
|
8
|
+
function ConfirmDialog({ title, message, confirmLabel = 'Confirm', cancelLabel = 'Cancel', variant = 'default', onConfirm, onCancel, }) {
|
|
9
|
+
const confirmRef = (0, react_1.useRef)(null);
|
|
10
|
+
(0, react_1.useEffect)(() => {
|
|
11
|
+
confirmRef.current?.focus();
|
|
12
|
+
}, []);
|
|
13
|
+
(0, react_1.useEffect)(() => {
|
|
14
|
+
function handleKeyDown(e) {
|
|
15
|
+
if (e.key === 'Escape')
|
|
16
|
+
onCancel();
|
|
17
|
+
}
|
|
18
|
+
document.addEventListener('keydown', handleKeyDown);
|
|
19
|
+
return () => document.removeEventListener('keydown', handleKeyDown);
|
|
20
|
+
}, [onCancel]);
|
|
21
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 flex items-center justify-center", style: { backgroundColor: 'rgba(0, 0, 0, 0.6)', backdropFilter: 'blur(4px)', zIndex: 50 }, children: (0, jsx_runtime_1.jsxs)("div", { className: "max-w-md w-full rounded-2xl p-8", style: { background: 'linear-gradient(to bottom, #343230, #2b2a27)', border: '1px solid #3d3a36', boxShadow: '0 8px 40px rgba(0,0,0,0.4), 0 0 1px rgba(255,255,255,0.03)' }, children: [(0, jsx_runtime_1.jsx)("h2", { className: "text-lg font-semibold mb-2 tracking-tight", children: title }), (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-[#b1ada1] mb-6", children: message }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-end gap-3", children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { variant: "ghost", onClick: onCancel, children: cancelLabel }), (0, jsx_runtime_1.jsx)(Button_1.Button, { ref: confirmRef, variant: variant === 'danger' ? 'danger' : 'primary', onClick: onConfirm, children: confirmLabel })] })] }) }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=ConfirmDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmDialog.js","sourceRoot":"","sources":["../../../../ui/core/components/ConfirmDialog.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAeb,sCAiDC;;AA9DD,iCAA0C;AAC1C,qCAAkC;AAYlC,SAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,YAAY,GAAG,SAAS,EACxB,WAAW,GAAG,QAAQ,EACtB,OAAO,GAAG,SAAS,EACnB,SAAS,EACT,QAAQ,GACW;IACnB,MAAM,UAAU,GAAG,IAAA,cAAM,EAAoB,IAAI,CAAC,CAAC;IAEnD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,SAAS,aAAa,CAAC,CAAgB;YACrC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,QAAQ,EAAE,CAAC;QACrC,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,gCACE,SAAS,EAAC,gDAAgD,EAC1D,KAAK,EAAE,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,YAEzF,iCACE,SAAS,EAAC,iCAAiC,EAC3C,KAAK,EAAE,EAAE,UAAU,EAAE,8CAA8C,EAAE,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,4DAA4D,EAAE,aAE3K,+BAAI,SAAS,EAAC,2CAA2C,YAAE,KAAK,GAAM,EACtE,8BAAG,SAAS,EAAC,6BAA6B,YAAE,OAAO,GAAK,EACxD,iCAAK,SAAS,EAAC,wBAAwB,aACrC,uBAAC,eAAM,IAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,QAAQ,YACtC,WAAW,GACL,EACT,uBAAC,eAAM,IACL,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACpD,OAAO,EAAE,SAAS,YAEjB,YAAY,GACN,IACL,IACF,GACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ExecutionCardProps {
|
|
2
|
+
href: string;
|
|
3
|
+
title: string;
|
|
4
|
+
subtitle?: string;
|
|
5
|
+
status: string;
|
|
6
|
+
metadata?: string;
|
|
7
|
+
progress?: number;
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function ExecutionCard({ href, title, subtitle, status, metadata, progress, children, className }: ExecutionCardProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=ExecutionCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionCard.d.ts","sourceRoot":"","sources":["../../../../ui/core/components/ExecutionCard.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,kBAAkB,2CAsD3H"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExecutionCard = ExecutionCard;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const utils_1 = require("../../utils");
|
|
6
|
+
const types_1 = require("../../components/node-panel/types");
|
|
7
|
+
function ExecutionCard({ href, title, subtitle, status, metadata, progress, children, className }) {
|
|
8
|
+
const colors = (0, types_1.sc)(status);
|
|
9
|
+
return ((0, jsx_runtime_1.jsxs)("a", { href: href, className: (0, utils_1.cn)('block rounded-2xl border border-[#302e2b] p-6 no-underline', 'shadow-[0_1px_3px_rgba(0,0,0,0.2),0_4px_12px_rgba(0,0,0,0.15)]', 'hover:border-[#4a4742] hover:-translate-y-1 hover:shadow-[0_2px_8px_rgba(0,0,0,0.2),0_12px_28px_rgba(0,0,0,0.18)] transition-all duration-200', 'active:translate-y-0 active:shadow-card', 'relative overflow-hidden group/card', className), style: { background: 'linear-gradient(to bottom, #2b2a27, #1e1b17)' }, children: [(0, jsx_runtime_1.jsx)("div", { className: "absolute top-0 left-0 right-0 h-px", style: { background: 'linear-gradient(to right, transparent, rgba(255,255,255,0.06), transparent)' } }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "font-medium text-[15px] tracking-[-0.01em] truncate", children: title }), (0, jsx_runtime_1.jsx)("span", { className: "inline-flex items-center px-2 py-0.5 rounded-full text-[11px] font-semibold shrink-0", style: { backgroundColor: colors.bg, color: colors.text }, children: status })] }), subtitle && ((0, jsx_runtime_1.jsx)("div", { className: "mt-1 text-[12px]", style: { color: '#8a8578' }, children: subtitle })), metadata && ((0, jsx_runtime_1.jsx)("div", { className: "mt-1 text-[12px]", style: { color: '#8a8578' }, children: metadata })), children && (0, jsx_runtime_1.jsx)("div", { className: "mt-3", children: children }), progress != null && progress > 0 && ((0, jsx_runtime_1.jsx)("div", { className: "absolute bottom-0 left-0 h-[3px]", style: {
|
|
10
|
+
width: `${Math.min(100, Math.max(0, progress))}%`,
|
|
11
|
+
backgroundColor: colors.dot,
|
|
12
|
+
transition: 'width 0.3s',
|
|
13
|
+
} }))] }));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=ExecutionCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionCard.js","sourceRoot":"","sources":["../../../../ui/core/components/ExecutionCard.tsx"],"names":[],"mappings":";;AAcA,sCAsDC;;AApED,uCAAiC;AACjC,6DAAuD;AAavD,SAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAsB;IAC1H,MAAM,MAAM,GAAG,IAAA,UAAE,EAAC,MAAM,CAAC,CAAC;IAE1B,OAAO,CACL,+BACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,IAAA,UAAE,EACX,4DAA4D,EAC5D,gEAAgE,EAChE,+IAA+I,EAC/I,yCAAyC,EACzC,qCAAqC,EACrC,SAAS,CACV,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,8CAA8C,EAAE,aAErE,gCAAK,SAAS,EAAC,oCAAoC,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,6EAA6E,EAAE,GAAI,EAE5J,iCAAK,SAAS,EAAC,yCAAyC,aACtD,iCAAM,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAQ,EACpF,iCACE,SAAS,EAAC,sFAAsF,EAChG,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,YAExD,MAAM,GACF,IACH,EAGL,QAAQ,IAAI,CACX,gCAAK,SAAS,EAAC,kBAAkB,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,YAAG,QAAQ,GAAO,CAChF,EAGA,QAAQ,IAAI,CACX,gCAAK,SAAS,EAAC,kBAAkB,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,YAAG,QAAQ,GAAO,CAChF,EAGA,QAAQ,IAAI,gCAAK,SAAS,EAAC,MAAM,YAAE,QAAQ,GAAO,EAGlD,QAAQ,IAAI,IAAI,IAAI,QAAQ,GAAG,CAAC,IAAI,CACnC,gCACE,SAAS,EAAC,kCAAkC,EAC5C,KAAK,EAAE;oBACL,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG;oBACjD,eAAe,EAAE,MAAM,CAAC,GAAG;oBAC3B,UAAU,EAAE,YAAY;iBACzB,GACD,CACH,IACC,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ProjectionNode } from '../../../src/types';
|
|
2
|
+
export interface NodeListItemProps {
|
|
3
|
+
node: ProjectionNode;
|
|
4
|
+
selected?: boolean;
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
actions?: React.ReactNode;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function NodeListItem({ node, selected, onClick, actions, className }: NodeListItemProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=NodeListItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeListItem.d.ts","sourceRoot":"","sources":["../../../../ui/core/components/NodeListItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKzD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,iBAAiB,2CAkF9F"}
|