@getcatalystiq/agent-plane-ui 0.1.16 → 0.1.17

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/index.cjs CHANGED
@@ -2530,8 +2530,10 @@ function AgentEditForm({ agent, onSaved }) {
2530
2530
  const [maxTurns, setMaxTurns] = React3.useState(agent.max_turns.toString());
2531
2531
  const [maxBudget, setMaxBudget] = React3.useState(agent.max_budget_usd.toString());
2532
2532
  const [maxRuntime, setMaxRuntime] = React3.useState(Math.floor(agent.max_runtime_seconds / 60).toString());
2533
+ const [soulMd, setSoulMd] = React3.useState(agent.soul_md ?? "");
2534
+ const [identityMd, setIdentityMd] = React3.useState(agent.identity_md ?? "");
2533
2535
  const [saving, setSaving] = React3.useState(false);
2534
- const isDirty = name !== agent.name || description !== (agent.description ?? "") || model !== agent.model || runner !== (agent.runner ?? "") || permissionMode !== agent.permission_mode || maxTurns !== agent.max_turns.toString() || maxBudget !== agent.max_budget_usd.toString() || maxRuntime !== Math.floor(agent.max_runtime_seconds / 60).toString();
2536
+ const isDirty = name !== agent.name || description !== (agent.description ?? "") || model !== agent.model || runner !== (agent.runner ?? "") || permissionMode !== agent.permission_mode || maxTurns !== agent.max_turns.toString() || maxBudget !== agent.max_budget_usd.toString() || maxRuntime !== Math.floor(agent.max_runtime_seconds / 60).toString() || soulMd !== (agent.soul_md ?? "") || identityMd !== (agent.identity_md ?? "");
2535
2537
  const [error, setError] = React3.useState("");
2536
2538
  async function handleSave() {
2537
2539
  setSaving(true);
@@ -2545,7 +2547,9 @@ function AgentEditForm({ agent, onSaved }) {
2545
2547
  permission_mode: permissionMode,
2546
2548
  max_turns: parseInt(maxTurns) || agent.max_turns,
2547
2549
  max_budget_usd: parseFloat(maxBudget) || agent.max_budget_usd,
2548
- max_runtime_seconds: (parseInt(maxRuntime) || Math.floor(agent.max_runtime_seconds / 60)) * 60
2550
+ max_runtime_seconds: (parseInt(maxRuntime) || Math.floor(agent.max_runtime_seconds / 60)) * 60,
2551
+ soul_md: soulMd || null,
2552
+ identity_md: identityMd || null
2549
2553
  });
2550
2554
  onSaved?.();
2551
2555
  } catch (err) {
@@ -2607,7 +2611,46 @@ function AgentEditForm({ agent, onSaved }) {
2607
2611
  /* @__PURE__ */ jsxRuntime.jsx("option", { value: "plan", children: "plan" })
2608
2612
  ] }) }) })
2609
2613
  ] })
2610
- ] }) })
2614
+ ] }) }),
2615
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-muted-foreground/25 p-5", children: [
2616
+ /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { title: "Identity" }),
2617
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
2618
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(FormField, { label: "SOUL.md", children: [
2619
+ /* @__PURE__ */ jsxRuntime.jsx(
2620
+ Textarea,
2621
+ {
2622
+ value: soulMd,
2623
+ onChange: (e) => setSoulMd(e.target.value),
2624
+ placeholder: "## Voice & Tone\nDirect, concise, technical.\n\n## Values\nClarity over completeness.\n\n## Stance\nProactive problem-solver.\n\n## Boundaries\n- Never modify production data directly\n\n## Essence\nA focused engineering assistant.",
2625
+ rows: 10,
2626
+ className: "font-mono text-sm",
2627
+ disabled: saving
2628
+ }
2629
+ ),
2630
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground mt-1 block", children: [
2631
+ soulMd.split(/\s+/).filter(Boolean).length,
2632
+ " words"
2633
+ ] })
2634
+ ] }) }),
2635
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(FormField, { label: "IDENTITY.md", children: [
2636
+ /* @__PURE__ */ jsxRuntime.jsx(
2637
+ Textarea,
2638
+ {
2639
+ value: identityMd,
2640
+ onChange: (e) => setIdentityMd(e.target.value),
2641
+ placeholder: "- **Communication Verbosity:** concise\n- **Communication Tone:** direct\n- **Decision Autonomy:** high\n- **Risk Tolerance:** moderate\n- **Collaboration Mode:** autonomous\n\n## Escalation Preferences\n- Budget over $50 -> escalate\n- Breaking changes -> escalate",
2642
+ rows: 10,
2643
+ className: "font-mono text-sm",
2644
+ disabled: saving
2645
+ }
2646
+ ),
2647
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground mt-1 block", children: [
2648
+ identityMd.split(/\s+/).filter(Boolean).length,
2649
+ " words"
2650
+ ] })
2651
+ ] }) })
2652
+ ] }) })
2653
+ ] })
2611
2654
  ] });
2612
2655
  }
2613
2656
  function ToolkitMultiselect({ value, onChange }) {
package/dist/index.d.cts CHANGED
@@ -612,6 +612,8 @@ interface Agent {
612
612
  max_turns: number;
613
613
  max_budget_usd: number;
614
614
  max_runtime_seconds: number;
615
+ soul_md?: string | null;
616
+ identity_md?: string | null;
615
617
  }
616
618
  interface AgentEditFormProps {
617
619
  agent: Agent;
package/dist/index.d.ts CHANGED
@@ -612,6 +612,8 @@ interface Agent {
612
612
  max_turns: number;
613
613
  max_budget_usd: number;
614
614
  max_runtime_seconds: number;
615
+ soul_md?: string | null;
616
+ identity_md?: string | null;
615
617
  }
616
618
  interface AgentEditFormProps {
617
619
  agent: Agent;
package/dist/index.js CHANGED
@@ -2505,8 +2505,10 @@ function AgentEditForm({ agent, onSaved }) {
2505
2505
  const [maxTurns, setMaxTurns] = useState(agent.max_turns.toString());
2506
2506
  const [maxBudget, setMaxBudget] = useState(agent.max_budget_usd.toString());
2507
2507
  const [maxRuntime, setMaxRuntime] = useState(Math.floor(agent.max_runtime_seconds / 60).toString());
2508
+ const [soulMd, setSoulMd] = useState(agent.soul_md ?? "");
2509
+ const [identityMd, setIdentityMd] = useState(agent.identity_md ?? "");
2508
2510
  const [saving, setSaving] = useState(false);
2509
- const isDirty = name !== agent.name || description !== (agent.description ?? "") || model !== agent.model || runner !== (agent.runner ?? "") || permissionMode !== agent.permission_mode || maxTurns !== agent.max_turns.toString() || maxBudget !== agent.max_budget_usd.toString() || maxRuntime !== Math.floor(agent.max_runtime_seconds / 60).toString();
2511
+ const isDirty = name !== agent.name || description !== (agent.description ?? "") || model !== agent.model || runner !== (agent.runner ?? "") || permissionMode !== agent.permission_mode || maxTurns !== agent.max_turns.toString() || maxBudget !== agent.max_budget_usd.toString() || maxRuntime !== Math.floor(agent.max_runtime_seconds / 60).toString() || soulMd !== (agent.soul_md ?? "") || identityMd !== (agent.identity_md ?? "");
2510
2512
  const [error, setError] = useState("");
2511
2513
  async function handleSave() {
2512
2514
  setSaving(true);
@@ -2520,7 +2522,9 @@ function AgentEditForm({ agent, onSaved }) {
2520
2522
  permission_mode: permissionMode,
2521
2523
  max_turns: parseInt(maxTurns) || agent.max_turns,
2522
2524
  max_budget_usd: parseFloat(maxBudget) || agent.max_budget_usd,
2523
- max_runtime_seconds: (parseInt(maxRuntime) || Math.floor(agent.max_runtime_seconds / 60)) * 60
2525
+ max_runtime_seconds: (parseInt(maxRuntime) || Math.floor(agent.max_runtime_seconds / 60)) * 60,
2526
+ soul_md: soulMd || null,
2527
+ identity_md: identityMd || null
2524
2528
  });
2525
2529
  onSaved?.();
2526
2530
  } catch (err) {
@@ -2582,7 +2586,46 @@ function AgentEditForm({ agent, onSaved }) {
2582
2586
  /* @__PURE__ */ jsx("option", { value: "plan", children: "plan" })
2583
2587
  ] }) }) })
2584
2588
  ] })
2585
- ] }) })
2589
+ ] }) }),
2590
+ /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-muted-foreground/25 p-5", children: [
2591
+ /* @__PURE__ */ jsx(SectionHeader, { title: "Identity" }),
2592
+ /* @__PURE__ */ jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
2593
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(FormField, { label: "SOUL.md", children: [
2594
+ /* @__PURE__ */ jsx(
2595
+ Textarea,
2596
+ {
2597
+ value: soulMd,
2598
+ onChange: (e) => setSoulMd(e.target.value),
2599
+ placeholder: "## Voice & Tone\nDirect, concise, technical.\n\n## Values\nClarity over completeness.\n\n## Stance\nProactive problem-solver.\n\n## Boundaries\n- Never modify production data directly\n\n## Essence\nA focused engineering assistant.",
2600
+ rows: 10,
2601
+ className: "font-mono text-sm",
2602
+ disabled: saving
2603
+ }
2604
+ ),
2605
+ /* @__PURE__ */ jsxs("span", { className: "text-xs text-muted-foreground mt-1 block", children: [
2606
+ soulMd.split(/\s+/).filter(Boolean).length,
2607
+ " words"
2608
+ ] })
2609
+ ] }) }),
2610
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(FormField, { label: "IDENTITY.md", children: [
2611
+ /* @__PURE__ */ jsx(
2612
+ Textarea,
2613
+ {
2614
+ value: identityMd,
2615
+ onChange: (e) => setIdentityMd(e.target.value),
2616
+ placeholder: "- **Communication Verbosity:** concise\n- **Communication Tone:** direct\n- **Decision Autonomy:** high\n- **Risk Tolerance:** moderate\n- **Collaboration Mode:** autonomous\n\n## Escalation Preferences\n- Budget over $50 -> escalate\n- Breaking changes -> escalate",
2617
+ rows: 10,
2618
+ className: "font-mono text-sm",
2619
+ disabled: saving
2620
+ }
2621
+ ),
2622
+ /* @__PURE__ */ jsxs("span", { className: "text-xs text-muted-foreground mt-1 block", children: [
2623
+ identityMd.split(/\s+/).filter(Boolean).length,
2624
+ " words"
2625
+ ] })
2626
+ ] }) })
2627
+ ] }) })
2628
+ ] })
2586
2629
  ] });
2587
2630
  }
2588
2631
  function ToolkitMultiselect({ value, onChange }) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getcatalystiq/agent-plane-ui",
3
- "version": "0.1.16",
3
+ "version": "0.1.17",
4
4
  "description": "Embeddable React component library for AgentPlane",
5
5
  "type": "module",
6
6
  "exports": {