@xyne/workflow-ui 1.3.29 → 1.3.30
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/components/builder/v3/EnhancedSchemaFormRenderer.d.ts.map +1 -1
- package/dist/components/builder/v3/EnhancedSchemaFormRenderer.js +9 -1
- package/dist/components/builder/v3/EnhancedSchemaFormRenderer.js.map +1 -1
- package/dist/components/credentials/CredentialVault.d.ts +9 -0
- package/dist/components/credentials/CredentialVault.d.ts.map +1 -0
- package/dist/components/credentials/CredentialVault.js +417 -0
- package/dist/components/credentials/CredentialVault.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/schema-form/CredentialDropdown.d.ts +8 -0
- package/dist/components/schema-form/CredentialDropdown.d.ts.map +1 -0
- package/dist/components/schema-form/CredentialDropdown.js +107 -0
- package/dist/components/schema-form/CredentialDropdown.js.map +1 -0
- package/dist/components/schema-form/SchemaFormRenderer.d.ts.map +1 -1
- package/dist/components/schema-form/SchemaFormRenderer.js +4 -0
- package/dist/components/schema-form/SchemaFormRenderer.js.map +1 -1
- package/dist/components/workflows/WorkflowApp.d.ts +1 -1
- package/dist/components/workflows/WorkflowApp.d.ts.map +1 -1
- package/dist/components/workflows/WorkflowApp.js +2 -0
- package/dist/components/workflows/WorkflowApp.js.map +1 -1
- package/dist/components/workflows/WorkflowHome.d.ts +7 -8
- package/dist/components/workflows/WorkflowHome.d.ts.map +1 -1
- package/dist/components/workflows/WorkflowHome.js +6 -6
- package/dist/components/workflows/WorkflowHome.js.map +1 -1
- package/dist/hooks/use-schema-form.d.ts.map +1 -1
- package/dist/hooks/use-schema-form.js +3 -1
- package/dist/hooks/use-schema-form.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/slots.d.ts +13 -1
- package/dist/types/slots.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnhancedSchemaFormRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v3/EnhancedSchemaFormRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"EnhancedSchemaFormRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v3/EnhancedSchemaFormRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAczE,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;IACnD,aAAa,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9E,gBAAgB,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAChF;AAqBD,wBAAgB,0BAA0B,CAAC,EACzC,MAAM,EACN,MAAM,EACN,MAAM,EACN,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,aAAa,EACb,gBAAgB,GACjB,EAAE,+BAA+B,+BAuCjC"}
|
|
@@ -10,6 +10,7 @@ import { OutputFieldsEditor } from './OutputFieldsEditor.js';
|
|
|
10
10
|
import { StringArrayInput } from './StringArrayInput.js';
|
|
11
11
|
import { MultiSelectCheckboxes } from './MultiSelectCheckboxes.js';
|
|
12
12
|
import { InputSchemaBuilder } from './InputSchemaBuilder.js';
|
|
13
|
+
import { CredentialDropdown } from '../../schema-form/CredentialDropdown.js';
|
|
13
14
|
import { cn } from '../../shared/cn.js';
|
|
14
15
|
/** Field types where a typed editor exists but the whole field can also bind to a `{{ref}}`. */
|
|
15
16
|
const VAR_BINDABLE_TYPES = new Set(['boolean', 'number', 'integer', 'array', 'object']);
|
|
@@ -49,9 +50,13 @@ function EnhancedFieldRenderer({ field, value, error, onChange, config, atStepId
|
|
|
49
50
|
// string field already embeds the picker). Bound when toggled on or the
|
|
50
51
|
// current value is already a pure ref.
|
|
51
52
|
const isAttachmentField = field.format === 'attachment';
|
|
53
|
+
const isCredentialField = field.format === 'credential-name';
|
|
52
54
|
const supportsVarBinding = isAttachmentField
|
|
53
55
|
|| (field.acceptsVariableRef && field.format === 'json-schema')
|
|
54
|
-
|| (
|
|
56
|
+
|| (!isCredentialField
|
|
57
|
+
&& VAR_BINDABLE_TYPES.has(field.type)
|
|
58
|
+
&& field.format !== 'json-schema'
|
|
59
|
+
&& field.format !== 'output-fields');
|
|
55
60
|
const [useVar, setUseVar] = useState(false);
|
|
56
61
|
const boundToVar = isAttachmentField || (supportsVarBinding && (useVar || isPureRefValue(value)));
|
|
57
62
|
const varFilterType = isAttachmentField ? 'attachment[]' : field.type;
|
|
@@ -59,6 +64,9 @@ function EnhancedFieldRenderer({ field, value, error, onChange, config, atStepId
|
|
|
59
64
|
? 'border-red-300 focus:border-red-400 focus:ring-2 focus:ring-red-100'
|
|
60
65
|
: 'border-[var(--wui-border)] focus:border-[var(--wui-primary)] focus:ring-2 focus:ring-[color-mix(in_srgb,var(--wui-primary)_12%,transparent)]', readOnly && 'opacity-60 cursor-not-allowed bg-[var(--wui-bg-subtle)]');
|
|
61
66
|
const renderInput = () => {
|
|
67
|
+
if (isCredentialField) {
|
|
68
|
+
return (_jsx(CredentialDropdown, { value: typeof value === 'string' ? value : '', onChange: onChange, readOnly: readOnly, ariaLabel: field.label }));
|
|
69
|
+
}
|
|
62
70
|
if (field.enumValues) {
|
|
63
71
|
return (_jsxs("select", { value: String(value ?? ''), onChange: (e) => onChange(e.target.value), disabled: readOnly, className: inputClasses, children: [_jsx("option", { value: "", children: "Select..." }), field.enumValues.map((v) => (_jsx("option", { value: v, children: v }, v)))] }));
|
|
64
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnhancedSchemaFormRenderer.js","sourceRoot":"","sources":["../../../../src/components/builder/v3/EnhancedSchemaFormRenderer.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EnhancedSchemaFormRenderer.js","sourceRoot":"","sources":["../../../../src/components/builder/v3/EnhancedSchemaFormRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type JSX } from "react";
|
|
2
|
+
type ToastHandler = (kind: 'success' | 'error', message: string) => void;
|
|
3
|
+
export interface CredentialVaultProps {
|
|
4
|
+
className?: string;
|
|
5
|
+
onToast?: ToastHandler;
|
|
6
|
+
}
|
|
7
|
+
export declare function CredentialVault({ className, onToast, }: CredentialVaultProps): JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=CredentialVault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CredentialVault.d.ts","sourceRoot":"","sources":["../../../src/components/credentials/CredentialVault.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA4C,KAAK,GAAG,EAAE,MAAM,OAAO,CAAA;AAqC1E,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAiDxE,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,OAAO,GACR,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAiJpC"}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// Credential Vault management UI. The host supplies its authenticated workflow
|
|
3
|
+
// client through WorkflowUIProvider and may provide an attributes display slot.
|
|
4
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
5
|
+
import { createPortal } from "react-dom";
|
|
6
|
+
import { Loader2, X, Plus, KeyRound, Ban, Eye, EyeOff, Pencil, ChevronRight, ChevronDown, Check, ArrowLeft, FlaskConical, Send, CheckCircle2, XCircle, AlertTriangle, } from "lucide-react";
|
|
7
|
+
import { useWorkflowClient } from '../../hooks/use-workflow-client.js';
|
|
8
|
+
import { useSlot } from '../provider/slot-resolution.js';
|
|
9
|
+
import { cn } from '../shared/cn.js';
|
|
10
|
+
import { CREDENTIAL_AUTH_REGISTRY, validateCredentialAuth, } from "@xyne/workflow-sdk/common";
|
|
11
|
+
// ─── Helpers ───
|
|
12
|
+
const authTypeLabel = (t) => CREDENTIAL_AUTH_REGISTRY.find((e) => e.type === t)?.label ?? t;
|
|
13
|
+
// Short, human descriptions per auth type — shown on the type-picker cards.
|
|
14
|
+
const AUTH_TYPE_DESCRIPTIONS = {
|
|
15
|
+
bearer: "A single token sent as an Authorization: Bearer header.",
|
|
16
|
+
basic: "A username and password (HTTP Basic auth).",
|
|
17
|
+
custom_header: "A custom header name and value.",
|
|
18
|
+
oauth2_client_credentials: "Client ID & secret exchanged for a token on each request.",
|
|
19
|
+
};
|
|
20
|
+
// Compact 12-hour timestamp, e.g. "24 Jul 2026, 3:04 PM".
|
|
21
|
+
const fmtTime = (ms) => {
|
|
22
|
+
try {
|
|
23
|
+
return new Date(ms).toLocaleString("en-US", {
|
|
24
|
+
day: "numeric",
|
|
25
|
+
month: "short",
|
|
26
|
+
year: "numeric",
|
|
27
|
+
hour: "numeric",
|
|
28
|
+
minute: "2-digit",
|
|
29
|
+
hour12: true,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return String(ms);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const statusLabel = (s) => s.charAt(0) + s.slice(1).toLowerCase();
|
|
37
|
+
const EmptyCredentialAttributes = (_props) => null;
|
|
38
|
+
/** Empty value map for an auth type — every registry field key set to "". */
|
|
39
|
+
const emptyValuesFor = (authType) => {
|
|
40
|
+
const entry = CREDENTIAL_AUTH_REGISTRY.find((e) => e.type === authType);
|
|
41
|
+
const out = {};
|
|
42
|
+
for (const f of entry?.fields ?? [])
|
|
43
|
+
out[f.key] = "";
|
|
44
|
+
return out;
|
|
45
|
+
};
|
|
46
|
+
export function CredentialVault({ className, onToast, }) {
|
|
47
|
+
const workflowClient = useWorkflowClient();
|
|
48
|
+
const [credentials, setCredentials] = useState(null);
|
|
49
|
+
const [error, setError] = useState(null);
|
|
50
|
+
const [showCreate, setShowCreate] = useState(false);
|
|
51
|
+
// The credential currently targeted by the replace-values / revoke dialogs.
|
|
52
|
+
const [replaceTarget, setReplaceTarget] = useState(null);
|
|
53
|
+
const [revokeTarget, setRevokeTarget] = useState(null);
|
|
54
|
+
// Test dialog target — only needs name + auth type (also used right after create).
|
|
55
|
+
const [testTarget, setTestTarget] = useState(null);
|
|
56
|
+
// Post-create success dialog target — offers to jump straight into testing.
|
|
57
|
+
const [createdTarget, setCreatedTarget] = useState(null);
|
|
58
|
+
const reload = useCallback(async () => {
|
|
59
|
+
setError(null);
|
|
60
|
+
try {
|
|
61
|
+
const res = await workflowClient.credentials.list();
|
|
62
|
+
setCredentials(res.credentials);
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
setError(e instanceof Error ? e.message : String(e));
|
|
66
|
+
}
|
|
67
|
+
}, [workflowClient]);
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
void reload();
|
|
70
|
+
}, [reload]);
|
|
71
|
+
const count = credentials?.length ?? 0;
|
|
72
|
+
return (_jsxs("div", { className: cn("mx-auto w-full max-w-[1600px] px-8 py-10", className), children: [_jsxs("header", { className: "mb-7 flex items-start justify-between gap-4", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "grid h-10 w-10 place-items-center rounded-xl bg-secondary text-foreground", children: _jsx(KeyRound, { className: "h-5 w-5", strokeWidth: 1.75 }) }), _jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h1", { className: "text-[18px] font-semibold tracking-tight text-foreground", children: "Credential Vault" }), count > 0 && (_jsx("span", { className: "rounded-full bg-secondary px-2 py-0.5 text-[11px] font-medium text-muted-foreground", children: count }))] }), _jsx("p", { className: "mt-0.5 text-[13px] text-muted-foreground", children: "Securely store and manage credentials used by HTTP workflow nodes." })] })] }), _jsxs("button", { type: "button", onClick: () => setShowCreate(true), className: "inline-flex h-9 shrink-0 items-center gap-1.5 rounded-lg bg-foreground px-3.5 text-[13px] font-medium text-background shadow-sm transition hover:opacity-90", children: [_jsx(Plus, { className: "h-4 w-4", strokeWidth: 2 }), "New credential"] })] }), error ? (_jsxs("div", { className: "rounded-lg border border-red-400/50 bg-red-500/5 px-4 py-3 text-[13px] text-red-600 dark:text-red-400", children: ["Failed to load credentials: ", error] })) : credentials === null ? (_jsxs("div", { className: "flex items-center gap-2 px-1 py-6 text-[13px] text-muted-foreground", children: [_jsx(Loader2, { className: "h-4 w-4 animate-spin", strokeWidth: 1.75 }), " Loading\u2026"] })) : credentials.length === 0 ? (_jsx("div", { className: "rounded-lg border border-border bg-surface px-4 py-10 text-center text-[13px] text-muted-foreground", children: "No credentials yet. Create one to use it in a workflow HTTP node." })) : (_jsx(CredentialTable, { credentials: credentials, onReplace: setReplaceTarget, onRevoke: setRevokeTarget, onTest: (c) => setTestTarget({ name: c.name, authType: c.authType }) })), showCreate && (_jsx(CreateDialog, { workflowClient: workflowClient, ...(onToast ? { onToast } : {}), onClose: () => setShowCreate(false), onSuccess: (created) => {
|
|
73
|
+
setShowCreate(false);
|
|
74
|
+
void reload();
|
|
75
|
+
// Show a success confirmation that offers to test it right away.
|
|
76
|
+
setCreatedTarget(created);
|
|
77
|
+
} })), createdTarget && (_jsx(CreatedDialog, { name: createdTarget.name, onClose: () => setCreatedTarget(null), onTest: () => {
|
|
78
|
+
const t = createdTarget;
|
|
79
|
+
setCreatedTarget(null);
|
|
80
|
+
setTestTarget(t);
|
|
81
|
+
} })), replaceTarget && (_jsx(ReplaceDialog, { workflowClient: workflowClient, ...(onToast ? { onToast } : {}), credential: replaceTarget, onClose: () => setReplaceTarget(null), onSuccess: () => {
|
|
82
|
+
setReplaceTarget(null);
|
|
83
|
+
void reload();
|
|
84
|
+
} })), revokeTarget && (_jsx(RevokeConfirm, { workflowClient: workflowClient, ...(onToast ? { onToast } : {}), credential: revokeTarget, onClose: () => setRevokeTarget(null), onSuccess: () => {
|
|
85
|
+
setRevokeTarget(null);
|
|
86
|
+
void reload();
|
|
87
|
+
} })), testTarget && (_jsx(TestDialog, { workflowClient: workflowClient, name: testTarget.name, authType: testTarget.authType, onClose: () => setTestTarget(null) }))] }));
|
|
88
|
+
}
|
|
89
|
+
// ─── Table ───
|
|
90
|
+
function CredentialTable({ credentials, onReplace, onRevoke, onTest, }) {
|
|
91
|
+
const CredentialAttributes = useSlot("credentialAttributesDisplay", undefined, EmptyCredentialAttributes);
|
|
92
|
+
// Active first (sorted by name), then revoked at the bottom (also by name).
|
|
93
|
+
const rows = [...credentials].sort((a, b) => {
|
|
94
|
+
const ra = a.summary.status === "REVOKED" ? 1 : 0;
|
|
95
|
+
const rb = b.summary.status === "REVOKED" ? 1 : 0;
|
|
96
|
+
return ra - rb || a.summary.name.localeCompare(b.summary.name);
|
|
97
|
+
});
|
|
98
|
+
return (_jsx("div", { className: "overflow-hidden rounded-xl border border-border bg-surface shadow-sm", children: _jsxs("table", { className: "w-full border-collapse text-left", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border text-[11px] font-medium uppercase tracking-wider text-muted-foreground", children: [_jsx("th", { className: "px-6 py-3.5", children: "Credential" }), _jsx("th", { className: "px-4 py-3.5", children: "Auth type" }), _jsx("th", { className: "px-4 py-3.5", children: "Status" }), _jsx("th", { className: "px-4 py-3.5", children: "Created" }), _jsx(CredentialAttributes, { mode: "header" }), _jsx("th", { className: "px-4 py-3.5", children: "Last updated" }), _jsx("th", { className: "px-4 py-3.5 text-center", children: "Edit" }), _jsx("th", { className: "px-4 py-3.5 text-center", children: "Test" }), _jsx("th", { className: "px-6 py-3.5 text-center", children: "Revoke" })] }) }), _jsx("tbody", { children: rows.map((item, i) => {
|
|
99
|
+
const c = item.summary;
|
|
100
|
+
const revoked = c.status === "REVOKED";
|
|
101
|
+
const canManage = item.permittedActions?.includes("credential:manage") ?? false;
|
|
102
|
+
return (_jsxs("tr", { className: cn("transition-colors", i > 0 && "border-t border-border",
|
|
103
|
+
// Revoked rows are greyed out and non-emphasised.
|
|
104
|
+
revoked
|
|
105
|
+
? "bg-secondary/30 text-muted-foreground"
|
|
106
|
+
: "hover:bg-secondary/40"), children: [_jsx("td", { className: "px-6 py-4", children: _jsx("div", { className: cn("text-[13.5px] font-medium", revoked ? "text-muted-foreground" : "text-foreground"), children: c.name }) }), _jsx("td", { className: "whitespace-nowrap px-4 py-4 text-[12.5px] text-foreground/90", children: authTypeLabel(c.authType) }), _jsx("td", { className: "px-4 py-4", children: _jsxs("span", { className: cn("inline-flex items-center gap-1.5 rounded-full px-2 py-0.5 text-[11px] font-medium", revoked
|
|
107
|
+
? "bg-red-500/10 text-red-600 dark:text-red-400"
|
|
108
|
+
: "bg-emerald-500/10 text-emerald-600 dark:text-emerald-400"), children: [_jsx("span", { className: cn("h-1.5 w-1.5 rounded-full", revoked ? "bg-red-500" : "bg-emerald-500") }), statusLabel(c.status)] }) }), _jsx("td", { className: "whitespace-nowrap px-4 py-4 text-[12.5px] text-foreground/90", children: fmtTime(c.createdAt) }), _jsx(CredentialAttributes, { mode: "row", summary: c, attributes: item.attributes }), _jsx("td", { className: "whitespace-nowrap px-4 py-4 text-[12.5px] text-foreground/90", children: fmtTime(c.updatedAt) }), _jsx("td", { className: "px-4 py-4", children: _jsx("div", { className: "flex justify-center", children: _jsxs("button", { type: "button", disabled: revoked || !canManage, title: revoked
|
|
109
|
+
? "An already revoked credential cannot be edited"
|
|
110
|
+
: canManage
|
|
111
|
+
? undefined
|
|
112
|
+
: "Only an owner, editor, or admin can edit this credential", onClick: () => onReplace(c), className: "inline-flex items-center gap-1.5 rounded-lg border border-border bg-background px-2.5 py-1.5 text-[12px] font-medium text-foreground transition hover:bg-secondary disabled:cursor-not-allowed disabled:text-muted-foreground/50 disabled:hover:bg-background", children: [_jsx(Pencil, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }), "Edit"] }) }) }), _jsx("td", { className: "px-4 py-4", children: _jsx("div", { className: "flex justify-center", children: _jsxs("button", { type: "button", disabled: revoked, onClick: () => onTest(c), className: "inline-flex items-center gap-1.5 rounded-lg border border-border bg-background px-2.5 py-1.5 text-[12px] font-medium text-foreground transition hover:bg-secondary disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-background", children: [_jsx(FlaskConical, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }), "Test"] }) }) }), _jsx("td", { className: "px-6 py-4", children: _jsx("div", { className: "flex justify-center", children: revoked ? (_jsxs("span", { className: "inline-flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-[12px] font-medium text-muted-foreground/60", children: [_jsx(Ban, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }), "Revoked"] })) : (_jsxs("button", { type: "button", disabled: !canManage, title: canManage
|
|
113
|
+
? undefined
|
|
114
|
+
: "Only an owner, editor, or admin can revoke this credential", onClick: () => onRevoke(c), className: "inline-flex items-center gap-1.5 rounded-lg border border-transparent px-2.5 py-1.5 text-[12px] font-medium text-red-600 transition hover:border-red-500/20 hover:bg-red-500/10 disabled:cursor-not-allowed disabled:text-muted-foreground/50 disabled:hover:border-transparent disabled:hover:bg-transparent dark:text-red-400", children: [_jsx(Ban, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }), "Revoke"] })) }) })] }, c.name));
|
|
115
|
+
}) })] }) }));
|
|
116
|
+
}
|
|
117
|
+
// ─── Registry-driven value fields ───
|
|
118
|
+
/**
|
|
119
|
+
* Renders the value inputs for an auth type from CREDENTIAL_AUTH_REGISTRY.
|
|
120
|
+
* password → masked input, text → text, and url → url. All fields start empty;
|
|
121
|
+
* secrets are write-only (never prefilled).
|
|
122
|
+
*/
|
|
123
|
+
function CredentialValueFields({ authType, values, onChange, disabled, }) {
|
|
124
|
+
const entry = CREDENTIAL_AUTH_REGISTRY.find((e) => e.type === authType);
|
|
125
|
+
// Per-field reveal state — which password fields are currently shown as plain
|
|
126
|
+
// text. Keyed by field key; defaults to hidden (masked).
|
|
127
|
+
const [revealed, setRevealed] = useState({});
|
|
128
|
+
if (!entry)
|
|
129
|
+
return null;
|
|
130
|
+
const inputClasses = "block w-full rounded-lg border border-border bg-surface px-3 py-2 text-[13px] text-foreground placeholder:text-muted-foreground/70 focus:border-ring focus:outline-none focus:ring-2 focus:ring-ring/30 disabled:opacity-60";
|
|
131
|
+
return (_jsx("div", { className: "space-y-3", children: entry.fields.map((f) => (_jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-[12px] font-medium text-foreground", children: f.label }), f.control === "password" ? (
|
|
132
|
+
// Secret field: masked by default, with an eye toggle to reveal what
|
|
133
|
+
// you're typing (handy for pasting/verifying a token before saving).
|
|
134
|
+
_jsxs("div", { className: "relative", children: [_jsx("input", { type: revealed[f.key] ? "text" : "password", value: values[f.key] ?? "", disabled: disabled, autoComplete: "off", placeholder: f.placeholder ?? "", onChange: (e) => onChange(f.key, e.target.value), className: `${inputClasses} pr-9` }), _jsx("button", { type: "button", tabIndex: -1, disabled: disabled, "aria-label": revealed[f.key] ? "Hide value" : "Show value", onClick: () => setRevealed((prev) => ({ ...prev, [f.key]: !prev[f.key] })), className: "absolute inset-y-0 right-0 grid w-9 place-items-center text-muted-foreground transition hover:text-foreground disabled:opacity-40", children: revealed[f.key] ? (_jsx(EyeOff, { className: "h-4 w-4", strokeWidth: 1.75 })) : (_jsx(Eye, { className: "h-4 w-4", strokeWidth: 1.75 })) })] })) : (_jsx("input", { type: f.control === "url" ? "url" : "text", value: values[f.key] ?? "", disabled: disabled, autoComplete: "off", placeholder: f.placeholder ?? "", onChange: (e) => onChange(f.key, e.target.value), className: inputClasses }))] }, f.key))) }));
|
|
135
|
+
}
|
|
136
|
+
// ─── Dropdown (custom listbox — matches the app's ThinkingSelector/ModelSelector) ───
|
|
137
|
+
function Dropdown({ value, options, onChange, disabled, placeholder, className, ariaLabel, }) {
|
|
138
|
+
const [open, setOpen] = useState(false);
|
|
139
|
+
// The panel is rendered in a portal with viewport-fixed coordinates so it
|
|
140
|
+
// floats above the modal — never clipped by the modal's overflow, never flush
|
|
141
|
+
// against its border. `bottom` is set instead of `top` when opening upward.
|
|
142
|
+
const [coords, setCoords] = useState(null);
|
|
143
|
+
const rootRef = useRef(null);
|
|
144
|
+
const panelRef = useRef(null);
|
|
145
|
+
const place = () => {
|
|
146
|
+
const el = rootRef.current;
|
|
147
|
+
if (!el)
|
|
148
|
+
return;
|
|
149
|
+
const r = el.getBoundingClientRect();
|
|
150
|
+
const panelH = Math.min(options.length * 40 + 10, 248);
|
|
151
|
+
const spaceBelow = window.innerHeight - r.bottom;
|
|
152
|
+
const dropUp = spaceBelow < panelH + 16 && r.top > spaceBelow;
|
|
153
|
+
setCoords(dropUp
|
|
154
|
+
? { left: r.left, width: r.width, bottom: window.innerHeight - r.top + 6 }
|
|
155
|
+
: { left: r.left, width: r.width, top: r.bottom + 6 });
|
|
156
|
+
};
|
|
157
|
+
const toggle = () => {
|
|
158
|
+
if (!open)
|
|
159
|
+
place();
|
|
160
|
+
setOpen((v) => !v);
|
|
161
|
+
};
|
|
162
|
+
useEffect(() => {
|
|
163
|
+
if (!open)
|
|
164
|
+
return;
|
|
165
|
+
const onDoc = (e) => {
|
|
166
|
+
const t = e.target;
|
|
167
|
+
if (rootRef.current && !rootRef.current.contains(t) &&
|
|
168
|
+
panelRef.current && !panelRef.current.contains(t)) {
|
|
169
|
+
setOpen(false);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
const onKey = (e) => {
|
|
173
|
+
if (e.key === "Escape")
|
|
174
|
+
setOpen(false);
|
|
175
|
+
};
|
|
176
|
+
const reposition = () => place();
|
|
177
|
+
document.addEventListener("mousedown", onDoc);
|
|
178
|
+
document.addEventListener("keydown", onKey);
|
|
179
|
+
window.addEventListener("resize", reposition);
|
|
180
|
+
window.addEventListener("scroll", reposition, true);
|
|
181
|
+
return () => {
|
|
182
|
+
document.removeEventListener("mousedown", onDoc);
|
|
183
|
+
document.removeEventListener("keydown", onKey);
|
|
184
|
+
window.removeEventListener("resize", reposition);
|
|
185
|
+
window.removeEventListener("scroll", reposition, true);
|
|
186
|
+
};
|
|
187
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
188
|
+
}, [open]);
|
|
189
|
+
const current = options.find((o) => o.value === value);
|
|
190
|
+
return (_jsxs("div", { ref: rootRef, className: cn("relative", className), children: [_jsxs("button", { type: "button", disabled: disabled, onClick: toggle, "aria-haspopup": "listbox", "aria-expanded": open, "aria-label": ariaLabel, className: cn("flex w-full items-center justify-between gap-1.5 rounded-lg border bg-surface px-3 py-2 text-left text-[13px] font-medium text-foreground transition disabled:cursor-not-allowed disabled:opacity-60", open
|
|
191
|
+
? "border-ring ring-2 ring-ring/30"
|
|
192
|
+
: "border-border hover:bg-secondary/40"), children: [_jsx("span", { className: cn("truncate", !current && "text-muted-foreground/60 font-normal"), children: current?.label ?? placeholder ?? "Select…" }), _jsx(ChevronDown, { className: cn("h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform duration-150", open && "rotate-180"), strokeWidth: 1.75 })] }), open && coords &&
|
|
193
|
+
createPortal(_jsx("div", { ref: panelRef, role: "listbox", "aria-label": ariaLabel, style: {
|
|
194
|
+
position: "fixed",
|
|
195
|
+
left: coords.left,
|
|
196
|
+
width: coords.width,
|
|
197
|
+
...(coords.top !== undefined ? { top: coords.top } : {}),
|
|
198
|
+
...(coords.bottom !== undefined ? { bottom: coords.bottom } : {}),
|
|
199
|
+
}, className: "z-[60] max-h-60 overflow-auto rounded-xl border border-border bg-surface-elevated p-1 shadow-xl shadow-foreground/10 animate-fade-up", children: _jsx("ul", { children: options.map((o) => {
|
|
200
|
+
const active = o.value === value;
|
|
201
|
+
return (_jsx("li", { children: _jsxs("button", { type: "button", role: "option", "aria-selected": active, onClick: () => {
|
|
202
|
+
onChange(o.value);
|
|
203
|
+
setOpen(false);
|
|
204
|
+
}, className: cn("flex h-9 w-full items-center justify-between gap-3 rounded-lg px-3 text-left text-[13px] transition-colors focus:outline-none", active
|
|
205
|
+
? "bg-primary/10 font-medium text-foreground"
|
|
206
|
+
: "text-foreground/90 hover:bg-secondary/70 focus:bg-secondary/70"), children: [_jsx("span", { className: "truncate", children: o.label }), active && (_jsx(Check, { className: "h-4 w-4 shrink-0 text-primary", strokeWidth: 2.25 }))] }) }, o.value));
|
|
207
|
+
}) }) }), document.body)] }));
|
|
208
|
+
}
|
|
209
|
+
// ─── Modal shell ───
|
|
210
|
+
function ModalShell({ title, description, onClose, busy, children, }) {
|
|
211
|
+
return createPortal(_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center px-4", role: "presentation", onMouseDown: (e) => {
|
|
212
|
+
if (e.target === e.currentTarget && !busy)
|
|
213
|
+
onClose();
|
|
214
|
+
}, children: [_jsx("div", { "aria-hidden": true, className: "absolute inset-0 bg-black/50 backdrop-blur-sm animate-fade-in" }), _jsxs("div", { role: "dialog", "aria-modal": "true", className: "relative z-10 max-h-[88vh] w-full max-w-[580px] overflow-y-auto rounded-2xl border border-border bg-surface-elevated shadow-2xl animate-scale-in", onMouseDown: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "flex items-start justify-between gap-3 px-5 pb-2 pt-4", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("h2", { className: "text-[15px] font-semibold leading-tight text-foreground", children: title }), description ? (_jsx("p", { className: "mt-1 text-[12.5px] leading-snug text-muted-foreground", children: description })) : null] }), _jsx("button", { type: "button", "aria-label": "Close", disabled: busy, onClick: onClose, className: "grid h-7 w-7 flex-shrink-0 place-items-center rounded-md text-muted-foreground transition hover:bg-secondary hover:text-foreground disabled:opacity-40", children: _jsx(X, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }) })] }), _jsx("div", { className: "px-5 pb-5 pt-2", children: children })] })] }), document.body);
|
|
215
|
+
}
|
|
216
|
+
// ─── Post-create success dialog ───
|
|
217
|
+
// Shown right after a credential is created: a success confirmation that offers
|
|
218
|
+
// to jump straight into testing the brand-new credential.
|
|
219
|
+
function CreatedDialog({ name, onClose, onTest, }) {
|
|
220
|
+
return (_jsx(ModalShell, { title: "", onClose: onClose, children: _jsxs("div", { className: "flex flex-col items-center px-2 pb-2 pt-1 text-center", children: [_jsx("style", { children: `
|
|
221
|
+
@keyframes credDiscPop { 0% { transform: scale(0); opacity: 0 } 60% { opacity: 1 } 100% { transform: scale(1); opacity: 1 } }
|
|
222
|
+
@keyframes credRingPing { 0% { transform: scale(.65); opacity: .55 } 100% { transform: scale(1.9); opacity: 0 } }
|
|
223
|
+
@keyframes credCheckDraw { to { stroke-dashoffset: 0 } }
|
|
224
|
+
` }), _jsxs("div", { className: "relative mb-4 grid h-16 w-16 place-items-center", children: [_jsx("span", { className: "absolute inset-0 rounded-full bg-emerald-400/40", style: { animation: "credRingPing .9s ease-out .05s both" } }), _jsx("span", { className: "relative grid h-16 w-16 place-items-center rounded-full bg-emerald-100 text-emerald-600 shadow-sm dark:bg-emerald-500/15 dark:text-emerald-400", style: { animation: "credDiscPop .4s cubic-bezier(.34,1.56,.64,1) both" }, children: _jsx("svg", { viewBox: "0 0 24 24", className: "h-8 w-8", fill: "none", stroke: "currentColor", strokeWidth: 2.6, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": true, children: _jsx("path", { d: "M5 13l4 4L19 7", style: {
|
|
225
|
+
strokeDasharray: 24,
|
|
226
|
+
strokeDashoffset: 24,
|
|
227
|
+
animation: "credCheckDraw .4s ease-out .22s forwards",
|
|
228
|
+
} }) }) })] }), _jsx("h2", { className: "text-[16px] font-semibold text-foreground", children: "Credential created" }), _jsxs("p", { className: "mt-1.5 max-w-[38ch] text-[13px] leading-relaxed text-muted-foreground", children: [_jsx("span", { className: "font-semibold text-foreground", children: name }), " has been saved and encrypted. Would you like to test it now?"] }), _jsxs("div", { className: "mt-5 flex w-full items-center justify-center gap-2", children: [_jsx("button", { type: "button", onClick: onClose, className: "inline-flex h-9 items-center rounded-lg px-4 text-[13px] text-muted-foreground transition hover:bg-secondary hover:text-foreground", children: "Done" }), _jsxs("button", { type: "button", onClick: onTest, className: "inline-flex h-9 items-center gap-1.5 rounded-lg bg-foreground px-4 text-[13px] font-medium text-background shadow-sm transition hover:opacity-90", children: [_jsx(FlaskConical, { className: "h-4 w-4", strokeWidth: 1.75 }), "Test credential"] })] })] }) }));
|
|
229
|
+
}
|
|
230
|
+
// ─── Create dialog ───
|
|
231
|
+
function CreateDialog({ workflowClient, onToast, onClose, onSuccess, }) {
|
|
232
|
+
// Two-step flow: 1) choose auth type, 2) enter name + fields.
|
|
233
|
+
const [step, setStep] = useState(1);
|
|
234
|
+
const [authType, setAuthType] = useState(null);
|
|
235
|
+
const [name, setName] = useState("");
|
|
236
|
+
const [values, setValues] = useState({});
|
|
237
|
+
const [busy, setBusy] = useState(false);
|
|
238
|
+
const [error, setError] = useState(null);
|
|
239
|
+
const chooseType = (t) => {
|
|
240
|
+
setAuthType(t);
|
|
241
|
+
setValues(emptyValuesFor(t));
|
|
242
|
+
setError(null);
|
|
243
|
+
setStep(2);
|
|
244
|
+
};
|
|
245
|
+
const back = () => {
|
|
246
|
+
if (busy)
|
|
247
|
+
return;
|
|
248
|
+
setError(null);
|
|
249
|
+
setStep(1);
|
|
250
|
+
};
|
|
251
|
+
const submit = async () => {
|
|
252
|
+
if (busy || !authType || !name.trim())
|
|
253
|
+
return;
|
|
254
|
+
setBusy(true);
|
|
255
|
+
setError(null);
|
|
256
|
+
try {
|
|
257
|
+
const auth = validateCredentialAuth(authType, values);
|
|
258
|
+
await workflowClient.credentials.create({
|
|
259
|
+
name: name.trim(),
|
|
260
|
+
...auth,
|
|
261
|
+
});
|
|
262
|
+
const created = { name: name.trim(), authType };
|
|
263
|
+
setValues({}); // wipe local secret state immediately
|
|
264
|
+
onToast?.('success', "Credential created");
|
|
265
|
+
onSuccess(created);
|
|
266
|
+
}
|
|
267
|
+
catch (e) {
|
|
268
|
+
setError(e instanceof Error ? e.message : "Something went wrong");
|
|
269
|
+
setBusy(false);
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
// ── Step 1: pick an authentication type ──
|
|
273
|
+
if (step === 1) {
|
|
274
|
+
return (_jsx(ModalShell, { title: "New credential", description: "Choose an authentication type to begin.", onClose: onClose, children: _jsx("div", { className: "grid gap-2", children: CREDENTIAL_AUTH_REGISTRY.map((e) => (_jsxs("button", { type: "button", onClick: () => chooseType(e.type), className: "group flex items-center gap-3 rounded-xl border border-border bg-surface px-3.5 py-3 text-left transition hover:border-ring hover:bg-secondary/50", children: [_jsx("div", { className: "grid h-9 w-9 shrink-0 place-items-center rounded-lg bg-secondary text-foreground transition group-hover:bg-background", children: _jsx(KeyRound, { className: "h-4 w-4", strokeWidth: 1.75 }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "text-[13.5px] font-medium text-foreground", children: e.label }), _jsx("div", { className: "mt-0.5 text-[11.5px] leading-snug text-muted-foreground", children: AUTH_TYPE_DESCRIPTIONS[e.type] ?? "" })] }), _jsx(ChevronRight, { className: "h-4 w-4 shrink-0 text-muted-foreground/40 transition group-hover:translate-x-0.5 group-hover:text-foreground", strokeWidth: 1.75 })] }, e.type))) }) }));
|
|
275
|
+
}
|
|
276
|
+
// ── Step 2: name + registry-driven value fields ──
|
|
277
|
+
const entry = CREDENTIAL_AUTH_REGISTRY.find((e) => e.type === authType);
|
|
278
|
+
const allFilled = entry.fields.every((f) => (values[f.key] ?? "").trim() !== "");
|
|
279
|
+
const canCreate = !busy && name.trim() !== "" && allFilled;
|
|
280
|
+
return (_jsx(ModalShell, { title: "New credential", description: "Values are encrypted and write-only \u2014 they can never be viewed again.", onClose: onClose, busy: busy, children: _jsxs("form", { onSubmit: (e) => {
|
|
281
|
+
e.preventDefault();
|
|
282
|
+
void submit();
|
|
283
|
+
}, className: "space-y-3.5", children: [_jsxs("div", { className: "flex items-center justify-between gap-3 rounded-xl bg-secondary/50 px-3.5 py-3", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "grid h-9 w-9 shrink-0 place-items-center rounded-lg border border-border bg-background text-foreground shadow-sm", children: _jsx(KeyRound, { className: "h-4 w-4", strokeWidth: 1.75 }) }), _jsxs("div", { className: "leading-tight", children: [_jsx("div", { className: "text-[10px] font-semibold uppercase tracking-wider text-muted-foreground", children: "Authentication" }), _jsx("div", { className: "text-[13px] font-semibold text-foreground", children: entry.label })] })] }), _jsx("button", { type: "button", onClick: back, disabled: busy, className: "rounded-lg border border-border bg-background px-2.5 py-1.5 text-[11.5px] font-medium text-foreground transition hover:bg-secondary disabled:opacity-50", children: "Change" })] }), _jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-[12px] font-medium text-foreground", children: "Name" }), _jsx("input", { type: "text", value: name, disabled: busy, maxLength: 255, autoFocus: true, placeholder: "e.g. stripe-prod", onChange: (e) => setName(e.target.value), className: "block w-full rounded-lg border border-border bg-surface px-3 py-2 text-[13px] text-foreground placeholder:text-muted-foreground/50 focus:border-ring focus:outline-none focus:ring-2 focus:ring-ring/30 disabled:opacity-60" })] }), _jsx(CredentialValueFields, { authType: authType, values: values, disabled: busy, onChange: (k, v) => setValues((prev) => ({ ...prev, [k]: v })) }), error ? (_jsx("p", { role: "alert", className: "text-[11.5px] text-red-600 dark:text-red-400", children: error })) : null, _jsxs("div", { className: "mt-4 flex items-center justify-between gap-2", children: [_jsxs("button", { type: "button", onClick: back, disabled: busy, className: "inline-flex h-8 items-center gap-1 rounded-md px-2.5 text-[12.5px] font-medium text-muted-foreground transition hover:bg-secondary hover:text-foreground disabled:opacity-50", children: [_jsx(ArrowLeft, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }), "Back"] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { type: "button", onClick: onClose, disabled: busy, className: "inline-flex h-8 items-center rounded-md px-3 text-[12.5px] text-muted-foreground transition hover:bg-secondary hover:text-foreground disabled:opacity-50", children: "Cancel" }), _jsxs("button", { type: "submit", disabled: !canCreate, className: "inline-flex h-8 items-center gap-1.5 rounded-md bg-foreground px-3.5 text-[12.5px] font-medium text-background transition hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-40", children: [busy ? (_jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin", strokeWidth: 1.75 })) : null, "Create credential"] })] })] })] }) }));
|
|
284
|
+
}
|
|
285
|
+
// ─── Replace-values dialog ───
|
|
286
|
+
function ReplaceDialog({ workflowClient, onToast, credential, onClose, onSuccess, }) {
|
|
287
|
+
// Fields start EMPTY — old values are never fetched or prefilled. The user
|
|
288
|
+
// must re-enter the complete value set.
|
|
289
|
+
const [values, setValues] = useState(() => emptyValuesFor(credential.authType));
|
|
290
|
+
const [busy, setBusy] = useState(false);
|
|
291
|
+
const [error, setError] = useState(null);
|
|
292
|
+
const submit = async () => {
|
|
293
|
+
if (busy)
|
|
294
|
+
return;
|
|
295
|
+
setBusy(true);
|
|
296
|
+
setError(null);
|
|
297
|
+
try {
|
|
298
|
+
const auth = validateCredentialAuth(credential.authType, values);
|
|
299
|
+
await workflowClient.credentials.replaceValues(credential.name, {
|
|
300
|
+
values: auth.values,
|
|
301
|
+
});
|
|
302
|
+
setValues({});
|
|
303
|
+
onToast?.('success', "Credential values replaced");
|
|
304
|
+
onSuccess();
|
|
305
|
+
}
|
|
306
|
+
catch (e) {
|
|
307
|
+
setError(e instanceof Error ? e.message : "Something went wrong");
|
|
308
|
+
setBusy(false);
|
|
309
|
+
}
|
|
310
|
+
};
|
|
311
|
+
const entry = CREDENTIAL_AUTH_REGISTRY.find((e) => e.type === credential.authType);
|
|
312
|
+
const allFilled = entry.fields.every((f) => (values[f.key] ?? "").trim() !== "");
|
|
313
|
+
const canSave = !busy && allFilled;
|
|
314
|
+
return (_jsx(ModalShell, { title: "Edit credential", description: "Enter new values to replace the current ones.", onClose: onClose, busy: busy, children: _jsxs("form", { onSubmit: (e) => {
|
|
315
|
+
e.preventDefault();
|
|
316
|
+
void submit();
|
|
317
|
+
}, className: "space-y-3.5", children: [_jsxs("div", { className: "flex items-center gap-3 rounded-xl bg-secondary/50 px-3.5 py-3", children: [_jsx("div", { className: "grid h-9 w-9 shrink-0 place-items-center rounded-lg border border-border bg-background text-foreground shadow-sm", children: _jsx(KeyRound, { className: "h-4 w-4", strokeWidth: 1.75 }) }), _jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2 leading-tight", children: [_jsx("span", { className: "truncate text-[15px] font-semibold text-foreground", title: credential.name, children: credential.name }), _jsx("span", { className: "shrink-0 rounded-full border border-border bg-background px-2 py-0.5 text-[11px] font-medium text-muted-foreground", children: authTypeLabel(credential.authType) })] })] }), _jsx("div", { className: "space-y-3.5 pt-0.5", children: _jsx(CredentialValueFields, { authType: credential.authType, values: values, disabled: busy, onChange: (k, v) => setValues((prev) => ({ ...prev, [k]: v })) }) }), error ? (_jsx("p", { role: "alert", className: "text-[11.5px] text-red-600 dark:text-red-400", children: error })) : null, _jsxs("div", { className: "mt-4 flex items-center justify-end gap-2", children: [_jsx("button", { type: "button", onClick: onClose, disabled: busy, className: "inline-flex h-8 items-center rounded-md px-3 text-[12.5px] text-muted-foreground transition hover:bg-secondary hover:text-foreground disabled:opacity-50", children: "Cancel" }), _jsxs("button", { type: "submit", disabled: !canSave, className: "inline-flex h-8 items-center gap-1.5 rounded-md bg-foreground px-3.5 text-[12.5px] font-medium text-background transition hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-40", children: [busy ? (_jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin", strokeWidth: 1.75 })) : null, "Save changes"] })] })] }) }));
|
|
318
|
+
}
|
|
319
|
+
// ─── Revoke confirmation ───
|
|
320
|
+
function RevokeConfirm({ workflowClient, onToast, credential, onClose, onSuccess, }) {
|
|
321
|
+
const [busy, setBusy] = useState(false);
|
|
322
|
+
const [error, setError] = useState(null);
|
|
323
|
+
// Type-to-confirm: the Revoke button unlocks only when this exactly matches
|
|
324
|
+
// the credential name — prevents an accidental terminal revoke.
|
|
325
|
+
const [confirmText, setConfirmText] = useState("");
|
|
326
|
+
const canRevoke = confirmText === credential.name && !busy;
|
|
327
|
+
const submit = async () => {
|
|
328
|
+
if (!canRevoke)
|
|
329
|
+
return;
|
|
330
|
+
setBusy(true);
|
|
331
|
+
setError(null);
|
|
332
|
+
try {
|
|
333
|
+
await workflowClient.credentials.revoke(credential.name);
|
|
334
|
+
onToast?.('success', "Credential revoked");
|
|
335
|
+
onSuccess();
|
|
336
|
+
}
|
|
337
|
+
catch (e) {
|
|
338
|
+
setError(e instanceof Error ? e.message : "Something went wrong");
|
|
339
|
+
setBusy(false);
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
return (_jsxs(ModalShell, { title: `Revoke ${credential.name}?`, onClose: onClose, busy: busy, children: [_jsxs("div", { className: "mb-3.5 flex gap-3 rounded-xl border border-red-200/70 bg-red-50 px-3.5 py-3 dark:border-red-500/25 dark:bg-red-500/10", children: [_jsx("div", { className: "grid h-8 w-8 shrink-0 place-items-center rounded-lg bg-red-100 text-red-600 dark:bg-red-500/20 dark:text-red-400", children: _jsx(AlertTriangle, { className: "h-4 w-4", strokeWidth: 2 }) }), _jsxs("p", { className: "text-[12.5px] leading-relaxed text-red-700 dark:text-red-300", children: ["This is ", _jsx("span", { className: "font-semibold", children: "permanent" }), " \u2014 the credential can\u2019t be reactivated and any workflow using it will fail before its request. The name stays reserved."] })] }), _jsxs("label", { className: "mb-1.5 block text-[12px] text-muted-foreground", children: ["Type ", _jsx("span", { className: "font-semibold text-foreground", children: credential.name }), " to confirm"] }), _jsxs("div", { className: "relative", children: [_jsx("input", { type: "text", value: confirmText, disabled: busy, autoFocus: true, autoComplete: "off", placeholder: credential.name, onChange: (e) => setConfirmText(e.target.value), className: "block w-full rounded-lg border border-border bg-surface py-2 pl-3 pr-9 text-[13px] text-foreground placeholder:text-muted-foreground/40 focus:border-red-400 focus:outline-none focus:ring-2 focus:ring-red-500/20 disabled:opacity-60" }), confirmText === credential.name ? (_jsx(CheckCircle2, { className: "absolute right-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-emerald-500", strokeWidth: 2 })) : null] }), error ? (_jsx("p", { role: "alert", className: "mt-2 text-[11.5px] text-red-600 dark:text-red-400", children: error })) : null, _jsxs("div", { className: "mt-4 flex items-center justify-end gap-2", children: [_jsx("button", { type: "button", onClick: onClose, disabled: busy, className: "inline-flex h-8 items-center rounded-md px-3 text-[12.5px] text-muted-foreground transition hover:bg-secondary hover:text-foreground disabled:opacity-50", children: "Cancel" }), _jsxs("button", { type: "button", onClick: () => void submit(), disabled: !canRevoke, title: confirmText === credential.name
|
|
343
|
+
? undefined
|
|
344
|
+
: "Type the credential name to enable", className: "inline-flex h-8 items-center gap-1.5 rounded-md bg-red-600 px-3 text-[12.5px] font-medium text-white transition hover:bg-red-700 disabled:cursor-not-allowed disabled:opacity-50", children: [busy ? _jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin", strokeWidth: 1.75 }) : null, "Revoke"] })] })] }));
|
|
345
|
+
}
|
|
346
|
+
/** A small add/remove key-value editor (used for Query params + Headers). */
|
|
347
|
+
function KeyValueEditor({ label, rows, onChange, disabled, keyPlaceholder, }) {
|
|
348
|
+
const set = (i, patch) => onChange(rows.map((r, idx) => (idx === i ? { ...r, ...patch } : r)));
|
|
349
|
+
const add = () => onChange([...rows, { k: "", v: "" }]);
|
|
350
|
+
return (_jsxs("div", { children: [_jsxs("div", { className: "mb-1.5 flex items-center justify-between", children: [_jsxs("span", { className: "text-[12px] font-medium text-foreground", children: [label, rows.length > 0 && (_jsx("span", { className: "ml-1.5 rounded bg-secondary px-1.5 py-0.5 text-[10px] font-semibold text-muted-foreground", children: rows.length }))] }), rows.length > 0 && (_jsxs("button", { type: "button", disabled: disabled, onClick: add, className: "inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[11.5px] font-medium text-muted-foreground transition hover:bg-secondary hover:text-foreground disabled:opacity-50", children: [_jsx(Plus, { className: "h-3 w-3", strokeWidth: 2 }), "Add"] }))] }), rows.length === 0 ? (
|
|
351
|
+
// Empty state: one full-width dashed affordance.
|
|
352
|
+
_jsxs("button", { type: "button", disabled: disabled, onClick: add, className: "flex w-full items-center justify-center gap-1.5 rounded-lg border border-dashed border-border py-2.5 text-[11.5px] font-medium text-muted-foreground transition hover:border-ring hover:bg-secondary/30 hover:text-foreground disabled:opacity-50", children: [_jsx(Plus, { className: "h-3.5 w-3.5", strokeWidth: 2 }), "Add ", label.toLowerCase()] })) : (
|
|
353
|
+
// Each row = one grouped field: [ key │ value ] ✕
|
|
354
|
+
_jsx("div", { className: "space-y-2", children: rows.map((r, i) => (_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("div", { className: "flex flex-1 items-center overflow-hidden rounded-lg border border-border bg-surface transition focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/20", children: [_jsx("input", { value: r.k, disabled: disabled, placeholder: keyPlaceholder ?? "Key", onChange: (e) => set(i, { k: e.target.value }), className: "w-[40%] min-w-0 bg-transparent px-3 py-2 text-[12.5px] font-medium text-foreground placeholder:font-normal placeholder:text-muted-foreground/50 focus:outline-none disabled:opacity-60" }), _jsx("div", { className: "h-5 w-px shrink-0 bg-border" }), _jsx("input", { value: r.v, disabled: disabled, placeholder: "Value", onChange: (e) => set(i, { v: e.target.value }), className: "min-w-0 flex-1 bg-transparent px-3 py-2 text-[12.5px] text-foreground placeholder:text-muted-foreground/50 focus:outline-none disabled:opacity-60" })] }), _jsx("button", { type: "button", disabled: disabled, "aria-label": "Remove row", onClick: () => onChange(rows.filter((_, idx) => idx !== i)), className: "grid h-8 w-8 shrink-0 place-items-center rounded-lg text-muted-foreground/60 transition hover:bg-red-500/10 hover:text-red-600 disabled:opacity-40 dark:hover:text-red-400", children: _jsx(X, { className: "h-4 w-4", strokeWidth: 1.75 }) })] }, i))) }))] }));
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Make a live request with this credential's auth attached (applied SERVER-SIDE
|
|
358
|
+
* — the secret never reaches the browser) so the user can verify it works.
|
|
359
|
+
*/
|
|
360
|
+
function TestDialog({ workflowClient, name, authType, onClose, }) {
|
|
361
|
+
const [method, setMethod] = useState("GET");
|
|
362
|
+
const [url, setUrl] = useState("");
|
|
363
|
+
const [params, setParams] = useState([]);
|
|
364
|
+
const [headers, setHeaders] = useState([]);
|
|
365
|
+
const [body, setBody] = useState("");
|
|
366
|
+
const [running, setRunning] = useState(false);
|
|
367
|
+
const [result, setResult] = useState(null);
|
|
368
|
+
const hasBody = !["GET", "HEAD"].includes(method);
|
|
369
|
+
const run = async () => {
|
|
370
|
+
if (running || !url.trim())
|
|
371
|
+
return;
|
|
372
|
+
setRunning(true);
|
|
373
|
+
setResult(null);
|
|
374
|
+
// Append query params to the URL client-side; collect non-empty headers.
|
|
375
|
+
let finalUrl = url.trim();
|
|
376
|
+
const activeParams = params.filter((p) => p.k.trim() !== "");
|
|
377
|
+
if (activeParams.length > 0) {
|
|
378
|
+
try {
|
|
379
|
+
const u = new URL(finalUrl);
|
|
380
|
+
for (const p of activeParams)
|
|
381
|
+
u.searchParams.append(p.k.trim(), p.v);
|
|
382
|
+
finalUrl = u.toString();
|
|
383
|
+
}
|
|
384
|
+
catch {
|
|
385
|
+
/* invalid URL — let the backend report it */
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
const headerObj = {};
|
|
389
|
+
for (const h of headers)
|
|
390
|
+
if (h.k.trim())
|
|
391
|
+
headerObj[h.k.trim()] = h.v;
|
|
392
|
+
try {
|
|
393
|
+
const data = await workflowClient.credentials.test(name, {
|
|
394
|
+
url: finalUrl,
|
|
395
|
+
method,
|
|
396
|
+
...(Object.keys(headerObj).length ? { headers: headerObj } : {}),
|
|
397
|
+
...(hasBody && body ? { body } : {}),
|
|
398
|
+
});
|
|
399
|
+
setResult(data);
|
|
400
|
+
}
|
|
401
|
+
catch (e) {
|
|
402
|
+
setResult({ ok: false, error: e instanceof Error ? e.message : String(e) });
|
|
403
|
+
}
|
|
404
|
+
finally {
|
|
405
|
+
setRunning(false);
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
return (_jsx(ModalShell, { title: "Test credential", description: "Send a real request with this credential attached to verify it works.", onClose: onClose, busy: running, children: _jsxs("div", { className: "space-y-3.5", children: [_jsxs("div", { className: "flex items-center gap-3 rounded-xl bg-secondary/50 px-3.5 py-3", children: [_jsx("div", { className: "grid h-9 w-9 shrink-0 place-items-center rounded-lg border border-border bg-background text-foreground shadow-sm", children: _jsx(FlaskConical, { className: "h-4 w-4", strokeWidth: 1.75 }) }), _jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2 leading-tight", children: [_jsx("span", { className: "truncate text-[15px] font-semibold text-foreground", title: name, children: name }), _jsx("span", { className: "shrink-0 rounded-full border border-border bg-background px-2 py-0.5 text-[11px] font-medium text-muted-foreground", children: authTypeLabel(authType) })] })] }), _jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-[12px] font-medium text-foreground", children: "Request" }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Dropdown, { value: method, onChange: setMethod, disabled: running, ariaLabel: "HTTP method", className: "w-[116px] shrink-0", options: ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD"].map((m) => ({ value: m, label: m })) }), _jsx("input", { type: "url", value: url, disabled: running, autoFocus: true, placeholder: "https://api.example.com/me", onChange: (e) => setUrl(e.target.value), onKeyDown: (e) => {
|
|
409
|
+
if (e.key === "Enter") {
|
|
410
|
+
e.preventDefault();
|
|
411
|
+
void run();
|
|
412
|
+
}
|
|
413
|
+
}, className: "min-w-0 flex-1 rounded-lg border border-border bg-surface px-3 py-2 text-[13px] text-foreground placeholder:text-muted-foreground/50 focus:border-ring focus:outline-none focus:ring-2 focus:ring-ring/30 disabled:opacity-60" })] })] }), _jsx(KeyValueEditor, { label: "Query params", rows: params, onChange: setParams, disabled: running }), _jsx(KeyValueEditor, { label: "Headers", rows: headers, onChange: setHeaders, disabled: running, keyPlaceholder: "Header name" }), hasBody && (_jsxs("div", { children: [_jsxs("label", { className: "mb-1 block text-[12px] font-medium text-foreground", children: ["Body ", _jsx("span", { className: "text-muted-foreground", children: "(optional)" })] }), _jsx("textarea", { value: body, disabled: running, rows: 3, placeholder: '{ "key": "value" }', onChange: (e) => setBody(e.target.value), className: "block w-full rounded-lg border border-border bg-surface px-3 py-2 font-mono text-[12px] text-foreground placeholder:text-muted-foreground/50 focus:border-ring focus:outline-none focus:ring-2 focus:ring-ring/30 disabled:opacity-60" })] })), result && (_jsxs("div", { className: "rounded-lg border border-border bg-surface", children: [_jsxs("div", { className: "flex items-center gap-2 border-b border-border px-3 py-2", children: [result.error || result.ok === false ? (_jsx(XCircle, { className: "h-4 w-4 text-red-500", strokeWidth: 2 })) : (_jsx(CheckCircle2, { className: "h-4 w-4 text-emerald-500", strokeWidth: 2 })), _jsx("span", { className: "text-[12.5px] font-medium text-foreground", children: result.error
|
|
414
|
+
? "Request failed"
|
|
415
|
+
: `${result.status} ${result.statusText ?? ""}`.trim() }), typeof result.durationMs === "number" && (_jsxs("span", { className: "ml-auto text-[11px] text-muted-foreground", children: [result.durationMs, " ms"] }))] }), _jsx("pre", { className: "max-h-52 overflow-auto px-3 py-2 text-[11.5px] leading-relaxed text-foreground/90", children: result.error ?? result.bodyText ?? "(empty response)" })] })), _jsxs("div", { className: "mt-2 flex items-center justify-end gap-2", children: [_jsx("button", { type: "button", onClick: onClose, disabled: running, className: "inline-flex h-8 items-center rounded-md px-3 text-[12.5px] text-muted-foreground transition hover:bg-secondary hover:text-foreground disabled:opacity-50", children: "Close" }), _jsxs("button", { type: "button", onClick: () => void run(), disabled: running || !url.trim(), className: "inline-flex h-8 items-center gap-1.5 rounded-md bg-foreground px-3.5 text-[12.5px] font-medium text-background transition hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-40", children: [running ? (_jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin", strokeWidth: 1.75 })) : (_jsx(Send, { className: "h-3.5 w-3.5", strokeWidth: 1.75 })), "Send test"] })] })] }) }));
|
|
416
|
+
}
|
|
417
|
+
//# sourceMappingURL=CredentialVault.js.map
|