@getcatalystiq/agent-plane-ui 0.1.23 → 0.1.25
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/agent-identity-tab-6T672HO7.js +2 -0
- package/dist/{agent-identity-tab-3ERMWHVJ.cjs → agent-identity-tab-AL2SL3CR.cjs} +2 -2
- package/dist/{chunk-NLED4YEY.cjs → chunk-7NGE4WHD.cjs} +51 -8
- package/dist/{chunk-QXTNBR6E.js → chunk-GFFQIJPU.js} +51 -8
- package/dist/editor.cjs +2 -2
- package/dist/editor.js +1 -1
- package/dist/index.cjs +5 -5
- package/dist/index.js +5 -5
- package/package.json +1 -1
- package/dist/agent-identity-tab-G62JP5VR.js +0 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk7NGE4WHD_cjs = require('./chunk-7NGE4WHD.cjs');
|
|
4
4
|
require('./chunk-XXF4U7WL.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "AgentIdentityTab", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunk7NGE4WHD_cjs.AgentIdentityTab; }
|
|
11
11
|
});
|
|
@@ -47,6 +47,9 @@ function AgentIdentityTab({
|
|
|
47
47
|
const [generating, setGenerating] = react.useState(false);
|
|
48
48
|
const [publishing, setPublishing] = react.useState(false);
|
|
49
49
|
const [importOpen, setImportOpen] = react.useState(false);
|
|
50
|
+
const [publishOpen, setPublishOpen] = react.useState(false);
|
|
51
|
+
const [publishOwner, setPublishOwner] = react.useState("");
|
|
52
|
+
const [publishResult, setPublishResult] = react.useState(null);
|
|
50
53
|
const [savedVersion, setSavedVersion] = react.useState(0);
|
|
51
54
|
const [overrideFiles, setOverrideFiles] = react.useState(null);
|
|
52
55
|
const initialFiles = react.useMemo(() => agentToFiles(agent), [agent]);
|
|
@@ -116,15 +119,16 @@ function AgentIdentityTab({
|
|
|
116
119
|
}
|
|
117
120
|
}
|
|
118
121
|
async function handlePublish() {
|
|
119
|
-
if (!onPublishSoul) return;
|
|
120
|
-
const owner = prompt("Enter owner name for publishing:");
|
|
121
|
-
if (!owner?.trim()) return;
|
|
122
|
+
if (!onPublishSoul || !publishOwner.trim()) return;
|
|
122
123
|
setPublishing(true);
|
|
123
124
|
setError("");
|
|
125
|
+
setPublishResult(null);
|
|
124
126
|
try {
|
|
125
|
-
await onPublishSoul(
|
|
127
|
+
await onPublishSoul(publishOwner.trim());
|
|
128
|
+
setPublishResult("Published successfully");
|
|
126
129
|
} catch (err) {
|
|
127
130
|
setError(err instanceof Error ? err.message : "Failed to publish");
|
|
131
|
+
setPublishOpen(false);
|
|
128
132
|
} finally {
|
|
129
133
|
setPublishing(false);
|
|
130
134
|
}
|
|
@@ -183,15 +187,18 @@ function AgentIdentityTab({
|
|
|
183
187
|
{
|
|
184
188
|
variant: "outline",
|
|
185
189
|
size: "sm",
|
|
186
|
-
onClick:
|
|
187
|
-
|
|
190
|
+
onClick: () => {
|
|
191
|
+
setPublishOpen(true);
|
|
192
|
+
setPublishResult(null);
|
|
193
|
+
setPublishOwner("");
|
|
194
|
+
},
|
|
188
195
|
children: [
|
|
189
196
|
/* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "size-4 mr-1.5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
190
197
|
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
191
198
|
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" }),
|
|
192
199
|
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2 12h20" })
|
|
193
200
|
] }),
|
|
194
|
-
|
|
201
|
+
"Publish"
|
|
195
202
|
]
|
|
196
203
|
}
|
|
197
204
|
),
|
|
@@ -228,7 +235,43 @@ function AgentIdentityTab({
|
|
|
228
235
|
onImport: onImportSoul,
|
|
229
236
|
onImported: handleImported
|
|
230
237
|
}
|
|
231
|
-
)
|
|
238
|
+
),
|
|
239
|
+
onPublishSoul && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Dialog, { open: publishOpen, onOpenChange: setPublishOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogContent, { className: "max-w-md", children: [
|
|
240
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogHeader, { children: [
|
|
241
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogTitle, { children: "Publish to ClawSouls Registry" }),
|
|
242
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogDescription, { children: "Upload your agent's SoulSpec identity to the ClawSouls registry." })
|
|
243
|
+
] }),
|
|
244
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogBody, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
245
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-muted-foreground/25 bg-muted/50 p-3 text-xs text-muted-foreground space-y-2", children: [
|
|
246
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
|
|
247
|
+
"Publishing uploads your agent's identity to the ",
|
|
248
|
+
/* @__PURE__ */ jsxRuntime.jsx("a", { href: "https://clawsouls.ai/souls", target: "_blank", rel: "noopener noreferrer", className: "underline text-foreground", children: "ClawSouls registry" }),
|
|
249
|
+
" where others can discover and install it."
|
|
250
|
+
] }),
|
|
251
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { children: /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Requirements:" }) }),
|
|
252
|
+
/* @__PURE__ */ jsxRuntime.jsxs("ul", { className: "list-disc pl-4 space-y-0.5", children: [
|
|
253
|
+
/* @__PURE__ */ jsxRuntime.jsx("li", { children: "A ClawSouls API token (set in Settings)" }),
|
|
254
|
+
/* @__PURE__ */ jsxRuntime.jsx("li", { children: "SOUL.md with required sections (Personality, Tone, Principles)" }),
|
|
255
|
+
/* @__PURE__ */ jsxRuntime.jsx("li", { children: "IDENTITY.md with Name, Role, and Creature fields" })
|
|
256
|
+
] }),
|
|
257
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { children: "Your soul will be validated by SoulScan before publishing." })
|
|
258
|
+
] }),
|
|
259
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Owner (your ClawSouls username)", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
260
|
+
chunkXXF4U7WL_cjs.Input,
|
|
261
|
+
{
|
|
262
|
+
value: publishOwner,
|
|
263
|
+
onChange: (e) => setPublishOwner(e.target.value),
|
|
264
|
+
placeholder: "e.g. myusername",
|
|
265
|
+
disabled: publishing
|
|
266
|
+
}
|
|
267
|
+
) }),
|
|
268
|
+
publishResult && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-md border border-green-600 bg-green-500/10 p-3 text-xs text-green-400", children: publishResult })
|
|
269
|
+
] }) }),
|
|
270
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogFooter, { children: [
|
|
271
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { variant: "outline", size: "sm", onClick: () => setPublishOpen(false), children: "Cancel" }),
|
|
272
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", onClick: handlePublish, disabled: publishing || !publishOwner.trim(), children: publishing ? "Publishing..." : "Publish" })
|
|
273
|
+
] })
|
|
274
|
+
] }) })
|
|
232
275
|
] });
|
|
233
276
|
}
|
|
234
277
|
function ImportSoulDialog({
|
|
@@ -45,6 +45,9 @@ function AgentIdentityTab({
|
|
|
45
45
|
const [generating, setGenerating] = useState(false);
|
|
46
46
|
const [publishing, setPublishing] = useState(false);
|
|
47
47
|
const [importOpen, setImportOpen] = useState(false);
|
|
48
|
+
const [publishOpen, setPublishOpen] = useState(false);
|
|
49
|
+
const [publishOwner, setPublishOwner] = useState("");
|
|
50
|
+
const [publishResult, setPublishResult] = useState(null);
|
|
48
51
|
const [savedVersion, setSavedVersion] = useState(0);
|
|
49
52
|
const [overrideFiles, setOverrideFiles] = useState(null);
|
|
50
53
|
const initialFiles = useMemo(() => agentToFiles(agent), [agent]);
|
|
@@ -114,15 +117,16 @@ function AgentIdentityTab({
|
|
|
114
117
|
}
|
|
115
118
|
}
|
|
116
119
|
async function handlePublish() {
|
|
117
|
-
if (!onPublishSoul) return;
|
|
118
|
-
const owner = prompt("Enter owner name for publishing:");
|
|
119
|
-
if (!owner?.trim()) return;
|
|
120
|
+
if (!onPublishSoul || !publishOwner.trim()) return;
|
|
120
121
|
setPublishing(true);
|
|
121
122
|
setError("");
|
|
123
|
+
setPublishResult(null);
|
|
122
124
|
try {
|
|
123
|
-
await onPublishSoul(
|
|
125
|
+
await onPublishSoul(publishOwner.trim());
|
|
126
|
+
setPublishResult("Published successfully");
|
|
124
127
|
} catch (err) {
|
|
125
128
|
setError(err instanceof Error ? err.message : "Failed to publish");
|
|
129
|
+
setPublishOpen(false);
|
|
126
130
|
} finally {
|
|
127
131
|
setPublishing(false);
|
|
128
132
|
}
|
|
@@ -181,15 +185,18 @@ function AgentIdentityTab({
|
|
|
181
185
|
{
|
|
182
186
|
variant: "outline",
|
|
183
187
|
size: "sm",
|
|
184
|
-
onClick:
|
|
185
|
-
|
|
188
|
+
onClick: () => {
|
|
189
|
+
setPublishOpen(true);
|
|
190
|
+
setPublishResult(null);
|
|
191
|
+
setPublishOwner("");
|
|
192
|
+
},
|
|
186
193
|
children: [
|
|
187
194
|
/* @__PURE__ */ jsxs("svg", { className: "size-4 mr-1.5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
188
195
|
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
189
196
|
/* @__PURE__ */ jsx("path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" }),
|
|
190
197
|
/* @__PURE__ */ jsx("path", { d: "M2 12h20" })
|
|
191
198
|
] }),
|
|
192
|
-
|
|
199
|
+
"Publish"
|
|
193
200
|
]
|
|
194
201
|
}
|
|
195
202
|
),
|
|
@@ -226,7 +233,43 @@ function AgentIdentityTab({
|
|
|
226
233
|
onImport: onImportSoul,
|
|
227
234
|
onImported: handleImported
|
|
228
235
|
}
|
|
229
|
-
)
|
|
236
|
+
),
|
|
237
|
+
onPublishSoul && /* @__PURE__ */ jsx(Dialog, { open: publishOpen, onOpenChange: setPublishOpen, children: /* @__PURE__ */ jsxs(DialogContent, { className: "max-w-md", children: [
|
|
238
|
+
/* @__PURE__ */ jsxs(DialogHeader, { children: [
|
|
239
|
+
/* @__PURE__ */ jsx(DialogTitle, { children: "Publish to ClawSouls Registry" }),
|
|
240
|
+
/* @__PURE__ */ jsx(DialogDescription, { children: "Upload your agent's SoulSpec identity to the ClawSouls registry." })
|
|
241
|
+
] }),
|
|
242
|
+
/* @__PURE__ */ jsx(DialogBody, { children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
243
|
+
/* @__PURE__ */ jsxs("div", { className: "rounded-md border border-muted-foreground/25 bg-muted/50 p-3 text-xs text-muted-foreground space-y-2", children: [
|
|
244
|
+
/* @__PURE__ */ jsxs("p", { children: [
|
|
245
|
+
"Publishing uploads your agent's identity to the ",
|
|
246
|
+
/* @__PURE__ */ jsx("a", { href: "https://clawsouls.ai/souls", target: "_blank", rel: "noopener noreferrer", className: "underline text-foreground", children: "ClawSouls registry" }),
|
|
247
|
+
" where others can discover and install it."
|
|
248
|
+
] }),
|
|
249
|
+
/* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx("strong", { children: "Requirements:" }) }),
|
|
250
|
+
/* @__PURE__ */ jsxs("ul", { className: "list-disc pl-4 space-y-0.5", children: [
|
|
251
|
+
/* @__PURE__ */ jsx("li", { children: "A ClawSouls API token (set in Settings)" }),
|
|
252
|
+
/* @__PURE__ */ jsx("li", { children: "SOUL.md with required sections (Personality, Tone, Principles)" }),
|
|
253
|
+
/* @__PURE__ */ jsx("li", { children: "IDENTITY.md with Name, Role, and Creature fields" })
|
|
254
|
+
] }),
|
|
255
|
+
/* @__PURE__ */ jsx("p", { children: "Your soul will be validated by SoulScan before publishing." })
|
|
256
|
+
] }),
|
|
257
|
+
/* @__PURE__ */ jsx(FormField, { label: "Owner (your ClawSouls username)", children: /* @__PURE__ */ jsx(
|
|
258
|
+
Input,
|
|
259
|
+
{
|
|
260
|
+
value: publishOwner,
|
|
261
|
+
onChange: (e) => setPublishOwner(e.target.value),
|
|
262
|
+
placeholder: "e.g. myusername",
|
|
263
|
+
disabled: publishing
|
|
264
|
+
}
|
|
265
|
+
) }),
|
|
266
|
+
publishResult && /* @__PURE__ */ jsx("div", { className: "rounded-md border border-green-600 bg-green-500/10 p-3 text-xs text-green-400", children: publishResult })
|
|
267
|
+
] }) }),
|
|
268
|
+
/* @__PURE__ */ jsxs(DialogFooter, { children: [
|
|
269
|
+
/* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm", onClick: () => setPublishOpen(false), children: "Cancel" }),
|
|
270
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", onClick: handlePublish, disabled: publishing || !publishOwner.trim(), children: publishing ? "Publishing..." : "Publish" })
|
|
271
|
+
] })
|
|
272
|
+
] }) })
|
|
230
273
|
] });
|
|
231
274
|
}
|
|
232
275
|
function ImportSoulDialog({
|
package/dist/editor.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkVZ43ATC5_cjs = require('./chunk-VZ43ATC5.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunk7NGE4WHD_cjs = require('./chunk-7NGE4WHD.cjs');
|
|
5
5
|
var chunkXXF4U7WL_cjs = require('./chunk-XXF4U7WL.cjs');
|
|
6
6
|
var react = require('react');
|
|
7
7
|
var CodeMirror = require('@uiw/react-codemirror');
|
|
@@ -187,6 +187,6 @@ Object.defineProperty(exports, "FileTreeEditor", {
|
|
|
187
187
|
});
|
|
188
188
|
Object.defineProperty(exports, "AgentIdentityTab", {
|
|
189
189
|
enumerable: true,
|
|
190
|
-
get: function () { return
|
|
190
|
+
get: function () { return chunk7NGE4WHD_cjs.AgentIdentityTab; }
|
|
191
191
|
});
|
|
192
192
|
exports.PluginEditorPage = PluginEditorPage;
|
package/dist/editor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useApi, Skeleton, FileTreeEditor, Card, CardHeader, CardTitle, CardContent } from './chunk-CE2RHDPY.js';
|
|
2
2
|
export { FileTreeEditor } from './chunk-CE2RHDPY.js';
|
|
3
|
-
export { AgentIdentityTab } from './chunk-
|
|
3
|
+
export { AgentIdentityTab } from './chunk-GFFQIJPU.js';
|
|
4
4
|
import { useNavigation, useAgentPlaneClient, Badge, Button } from './chunk-XFI227OB.js';
|
|
5
5
|
import { useState, useCallback } from 'react';
|
|
6
6
|
import CodeMirror from '@uiw/react-codemirror';
|
package/dist/index.cjs
CHANGED
|
@@ -4069,7 +4069,7 @@ function AgentA2aInfo({
|
|
|
4069
4069
|
] })
|
|
4070
4070
|
] });
|
|
4071
4071
|
}
|
|
4072
|
-
var AgentIdentityTab = React.lazy(() => import('./agent-identity-tab-
|
|
4072
|
+
var AgentIdentityTab = React.lazy(() => import('./agent-identity-tab-AL2SL3CR.cjs').then((m) => ({ default: m.AgentIdentityTab })));
|
|
4073
4073
|
function AgentDetailPage({ agentId, a2aBaseUrl, tenantSlug, adminApiBaseUrl, adminApiKey }) {
|
|
4074
4074
|
const { LinkComponent, basePath } = chunkXXF4U7WL_cjs.useNavigation();
|
|
4075
4075
|
const { mutate } = swr.useSWRConfig();
|
|
@@ -4101,23 +4101,23 @@ function AgentDetailPage({ agentId, a2aBaseUrl, tenantSlug, adminApiBaseUrl, adm
|
|
|
4101
4101
|
if (!adminApiBaseUrl) return {};
|
|
4102
4102
|
return {
|
|
4103
4103
|
onGenerateSoul: async () => {
|
|
4104
|
-
const result = await adminFetch(`/api/
|
|
4104
|
+
const result = await adminFetch(`/api/agents/${agentId}/generate-soul`, { method: "POST" });
|
|
4105
4105
|
return { files: result.files };
|
|
4106
4106
|
},
|
|
4107
4107
|
onImportSoul: async (ref) => {
|
|
4108
4108
|
const [owner, name] = ref.split("/");
|
|
4109
|
-
const result = await adminFetch(`/api/
|
|
4109
|
+
const result = await adminFetch(`/api/agents/${agentId}/import-soul`, {
|
|
4110
4110
|
method: "POST",
|
|
4111
4111
|
body: JSON.stringify({ owner, name })
|
|
4112
4112
|
});
|
|
4113
4113
|
return { files: result.imported_files };
|
|
4114
4114
|
},
|
|
4115
4115
|
onExportSoul: async () => {
|
|
4116
|
-
const result = await adminFetch(`/api/
|
|
4116
|
+
const result = await adminFetch(`/api/agents/${agentId}/export-soul`);
|
|
4117
4117
|
return { files: result.files, name: agent?.name ?? "agent" };
|
|
4118
4118
|
},
|
|
4119
4119
|
onPublishSoul: async (owner) => {
|
|
4120
|
-
await adminFetch(`/api/
|
|
4120
|
+
await adminFetch(`/api/agents/${agentId}/publish-soul`, {
|
|
4121
4121
|
method: "POST",
|
|
4122
4122
|
body: JSON.stringify({ owner })
|
|
4123
4123
|
});
|
package/dist/index.js
CHANGED
|
@@ -4045,7 +4045,7 @@ function AgentA2aInfo({
|
|
|
4045
4045
|
] })
|
|
4046
4046
|
] });
|
|
4047
4047
|
}
|
|
4048
|
-
var AgentIdentityTab = lazy(() => import('./agent-identity-tab-
|
|
4048
|
+
var AgentIdentityTab = lazy(() => import('./agent-identity-tab-6T672HO7.js').then((m) => ({ default: m.AgentIdentityTab })));
|
|
4049
4049
|
function AgentDetailPage({ agentId, a2aBaseUrl, tenantSlug, adminApiBaseUrl, adminApiKey }) {
|
|
4050
4050
|
const { LinkComponent, basePath } = useNavigation();
|
|
4051
4051
|
const { mutate } = useSWRConfig();
|
|
@@ -4077,23 +4077,23 @@ function AgentDetailPage({ agentId, a2aBaseUrl, tenantSlug, adminApiBaseUrl, adm
|
|
|
4077
4077
|
if (!adminApiBaseUrl) return {};
|
|
4078
4078
|
return {
|
|
4079
4079
|
onGenerateSoul: async () => {
|
|
4080
|
-
const result = await adminFetch(`/api/
|
|
4080
|
+
const result = await adminFetch(`/api/agents/${agentId}/generate-soul`, { method: "POST" });
|
|
4081
4081
|
return { files: result.files };
|
|
4082
4082
|
},
|
|
4083
4083
|
onImportSoul: async (ref) => {
|
|
4084
4084
|
const [owner, name] = ref.split("/");
|
|
4085
|
-
const result = await adminFetch(`/api/
|
|
4085
|
+
const result = await adminFetch(`/api/agents/${agentId}/import-soul`, {
|
|
4086
4086
|
method: "POST",
|
|
4087
4087
|
body: JSON.stringify({ owner, name })
|
|
4088
4088
|
});
|
|
4089
4089
|
return { files: result.imported_files };
|
|
4090
4090
|
},
|
|
4091
4091
|
onExportSoul: async () => {
|
|
4092
|
-
const result = await adminFetch(`/api/
|
|
4092
|
+
const result = await adminFetch(`/api/agents/${agentId}/export-soul`);
|
|
4093
4093
|
return { files: result.files, name: agent?.name ?? "agent" };
|
|
4094
4094
|
},
|
|
4095
4095
|
onPublishSoul: async (owner) => {
|
|
4096
|
-
await adminFetch(`/api/
|
|
4096
|
+
await adminFetch(`/api/agents/${agentId}/publish-soul`, {
|
|
4097
4097
|
method: "POST",
|
|
4098
4098
|
body: JSON.stringify({ owner })
|
|
4099
4099
|
});
|
package/package.json
CHANGED