@volter-ai-dev/supercode-ui 0.1.43 → 0.1.44

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/activity.mjs CHANGED
@@ -13,6 +13,7 @@ var DEFAULT_LABELS = Object.freeze({
13
13
  newChat: "New chat",
14
14
  searchChats: "Search chats",
15
15
  askAgent: "Ask your agent\u2026",
16
+ attachContext: "Attach files or images",
16
17
  continueHere: "Continue here",
17
18
  continueWithTerminal: "Continue with terminal",
18
19
  joinLive: "Join live",
package/components.mjs CHANGED
@@ -16,6 +16,7 @@ var DEFAULT_LABELS = Object.freeze({
16
16
  newChat: "New chat",
17
17
  searchChats: "Search chats",
18
18
  askAgent: "Ask your agent\u2026",
19
+ attachContext: "Attach files or images",
19
20
  continueHere: "Continue here",
20
21
  continueWithTerminal: "Continue with terminal",
21
22
  joinLive: "Join live",
@@ -1513,7 +1514,7 @@ function Composer({ state, adapter, labels = DEFAULT_LABELS, memoryKey = state.a
1513
1514
  }, onDragLeave: (event) => {
1514
1515
  if (!event.currentTarget.contains(event.relatedTarget)) setDragging(false);
1515
1516
  }, onDrop: dropImages, children: [
1516
- adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": "Attach files or images", disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
1517
+ adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": labels.attachContext ?? DEFAULT_LABELS.attachContext, disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
1517
1518
  /* @__PURE__ */ jsx3("textarea", { ref: textarea, rows: 1, "aria-label": `Message ${harnessDisplayName(state.harness) || "agent"}`, placeholder: state.startup !== "ready" ? "Connecting\u2026" : pendingStatus === "failed" ? "Retry or edit the unsent message\u2026" : pendingStatus === "editing" ? "Edit and resend\u2026" : steerAvailable && context.length === 0 && images.length === 0 ? "Redirect the current turn\u2026" : queueBlocked ? "Queue a follow-up\u2026" : labels.askAgent, value: draft, disabled: state.mode !== "control" && !state.canSend, onPaste: pasteImages, onInput: (event) => {
1518
1519
  const value = event.currentTarget.value;
1519
1520
  setDraft(value);
@@ -3078,7 +3079,7 @@ function NewChat({ state, adapter, onBack, onClose, onStarted, labels, memoryKey
3078
3079
  }
3079
3080
  } }),
3080
3081
  /* @__PURE__ */ jsxs9("footer", { className: "scui-new-envelope-controls", children: [
3081
- adapter.pickContext ? /* @__PURE__ */ jsx10("button", { className: "scui-attach", type: "button", "aria-label": "Attach files or images", disabled: mode === "terminal" || picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS || Boolean(starting), onClick: pickContext, children: picking ? /* @__PURE__ */ jsx10("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx10(UiIcon, { name: "attach", size: 17 }) }) : null,
3082
+ adapter.pickContext ? /* @__PURE__ */ jsx10("button", { className: "scui-attach", type: "button", "aria-label": labels.attachContext ?? DEFAULT_LABELS.attachContext, disabled: mode === "terminal" || picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS || Boolean(starting), onClick: pickContext, children: picking ? /* @__PURE__ */ jsx10("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx10(UiIcon, { name: "attach", size: 17 }) }) : null,
3082
3083
  /* @__PURE__ */ jsx10(Picker, { harnesses: state.harnesses, value: harness, disabled: Boolean(starting), adapter, logo: components.HarnessLogo, onChange: (value) => {
3083
3084
  setHarness(value);
3084
3085
  remember({ harness: value });
package/composer.mjs CHANGED
@@ -16,6 +16,7 @@ var DEFAULT_LABELS = Object.freeze({
16
16
  newChat: "New chat",
17
17
  searchChats: "Search chats",
18
18
  askAgent: "Ask your agent\u2026",
19
+ attachContext: "Attach files or images",
19
20
  continueHere: "Continue here",
20
21
  continueWithTerminal: "Continue with terminal",
21
22
  joinLive: "Join live",
@@ -514,7 +515,7 @@ function Composer({ state, adapter, labels = DEFAULT_LABELS, memoryKey = state.a
514
515
  }, onDragLeave: (event) => {
515
516
  if (!event.currentTarget.contains(event.relatedTarget)) setDragging(false);
516
517
  }, onDrop: dropImages, children: [
517
- adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": "Attach files or images", disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
518
+ adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": labels.attachContext ?? DEFAULT_LABELS.attachContext, disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
518
519
  /* @__PURE__ */ jsx3("textarea", { ref: textarea, rows: 1, "aria-label": `Message ${harnessDisplayName(state.harness) || "agent"}`, placeholder: state.startup !== "ready" ? "Connecting\u2026" : pendingStatus === "failed" ? "Retry or edit the unsent message\u2026" : pendingStatus === "editing" ? "Edit and resend\u2026" : steerAvailable && context.length === 0 && images.length === 0 ? "Redirect the current turn\u2026" : queueBlocked ? "Queue a follow-up\u2026" : labels.askAgent, value: draft, disabled: state.mode !== "control" && !state.canSend, onPaste: pasteImages, onInput: (event) => {
519
520
  const value = event.currentTarget.value;
520
521
  setDraft(value);
package/conversation.mjs CHANGED
@@ -17,6 +17,7 @@ var DEFAULT_LABELS = Object.freeze({
17
17
  newChat: "New chat",
18
18
  searchChats: "Search chats",
19
19
  askAgent: "Ask your agent\u2026",
20
+ attachContext: "Attach files or images",
20
21
  continueHere: "Continue here",
21
22
  continueWithTerminal: "Continue with terminal",
22
23
  joinLive: "Join live",
package/core.mjs CHANGED
@@ -13,6 +13,7 @@ export const DEFAULT_LABELS = Object.freeze({
13
13
  newChat: 'New chat',
14
14
  searchChats: 'Search chats',
15
15
  askAgent: 'Ask your agent…',
16
+ attachContext: 'Attach files or images',
16
17
  continueHere: 'Continue here',
17
18
  continueWithTerminal: 'Continue with terminal',
18
19
  joinLive: 'Join live',
package/embed.mjs CHANGED
@@ -19,6 +19,7 @@ var DEFAULT_LABELS = Object.freeze({
19
19
  newChat: "New chat",
20
20
  searchChats: "Search chats",
21
21
  askAgent: "Ask your agent\u2026",
22
+ attachContext: "Attach files or images",
22
23
  continueHere: "Continue here",
23
24
  continueWithTerminal: "Continue with terminal",
24
25
  joinLive: "Join live",
@@ -1479,7 +1480,7 @@ function Composer({ state, adapter, labels = DEFAULT_LABELS, memoryKey = state.a
1479
1480
  }, onDragLeave: (event) => {
1480
1481
  if (!event.currentTarget.contains(event.relatedTarget)) setDragging(false);
1481
1482
  }, onDrop: dropImages, children: [
1482
- adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": "Attach files or images", disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
1483
+ adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": labels.attachContext ?? DEFAULT_LABELS.attachContext, disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
1483
1484
  /* @__PURE__ */ jsx3("textarea", { ref: textarea, rows: 1, "aria-label": `Message ${harnessDisplayName(state.harness) || "agent"}`, placeholder: state.startup !== "ready" ? "Connecting\u2026" : pendingStatus === "failed" ? "Retry or edit the unsent message\u2026" : pendingStatus === "editing" ? "Edit and resend\u2026" : steerAvailable && context.length === 0 && images.length === 0 ? "Redirect the current turn\u2026" : queueBlocked ? "Queue a follow-up\u2026" : labels.askAgent, value: draft, disabled: state.mode !== "control" && !state.canSend, onPaste: pasteImages, onInput: (event) => {
1484
1485
  const value = event.currentTarget.value;
1485
1486
  setDraft(value);
@@ -2998,7 +2999,7 @@ function NewChat({ state, adapter, onBack, onClose, onStarted, labels, memoryKey
2998
2999
  }
2999
3000
  } }),
3000
3001
  /* @__PURE__ */ jsxs8("footer", { className: "scui-new-envelope-controls", children: [
3001
- adapter.pickContext ? /* @__PURE__ */ jsx9("button", { className: "scui-attach", type: "button", "aria-label": "Attach files or images", disabled: mode === "terminal" || picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS || Boolean(starting), onClick: pickContext, children: picking ? /* @__PURE__ */ jsx9("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx9(UiIcon, { name: "attach", size: 17 }) }) : null,
3002
+ adapter.pickContext ? /* @__PURE__ */ jsx9("button", { className: "scui-attach", type: "button", "aria-label": labels.attachContext ?? DEFAULT_LABELS.attachContext, disabled: mode === "terminal" || picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS || Boolean(starting), onClick: pickContext, children: picking ? /* @__PURE__ */ jsx9("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx9(UiIcon, { name: "attach", size: 17 }) }) : null,
3002
3003
  /* @__PURE__ */ jsx9(Picker, { harnesses: state.harnesses, value: harness, disabled: Boolean(starting), adapter, logo: components.HarnessLogo, onChange: (value) => {
3003
3004
  setHarness(value);
3004
3005
  remember({ harness: value });
package/index.d.ts CHANGED
@@ -350,6 +350,7 @@ export interface MessengerLabels {
350
350
  newChat: string;
351
351
  searchChats: string;
352
352
  askAgent: string;
353
+ attachContext?: string;
353
354
  continueHere: string;
354
355
  continueWithTerminal?: string;
355
356
  joinLive: string;
package/messenger.mjs CHANGED
@@ -16,6 +16,7 @@ var DEFAULT_LABELS = Object.freeze({
16
16
  newChat: "New chat",
17
17
  searchChats: "Search chats",
18
18
  askAgent: "Ask your agent\u2026",
19
+ attachContext: "Attach files or images",
19
20
  continueHere: "Continue here",
20
21
  continueWithTerminal: "Continue with terminal",
21
22
  joinLive: "Join live",
@@ -1476,7 +1477,7 @@ function Composer({ state, adapter, labels = DEFAULT_LABELS, memoryKey = state.a
1476
1477
  }, onDragLeave: (event) => {
1477
1478
  if (!event.currentTarget.contains(event.relatedTarget)) setDragging(false);
1478
1479
  }, onDrop: dropImages, children: [
1479
- adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": "Attach files or images", disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
1480
+ adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": labels.attachContext ?? DEFAULT_LABELS.attachContext, disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
1480
1481
  /* @__PURE__ */ jsx3("textarea", { ref: textarea, rows: 1, "aria-label": `Message ${harnessDisplayName(state.harness) || "agent"}`, placeholder: state.startup !== "ready" ? "Connecting\u2026" : pendingStatus === "failed" ? "Retry or edit the unsent message\u2026" : pendingStatus === "editing" ? "Edit and resend\u2026" : steerAvailable && context.length === 0 && images.length === 0 ? "Redirect the current turn\u2026" : queueBlocked ? "Queue a follow-up\u2026" : labels.askAgent, value: draft, disabled: state.mode !== "control" && !state.canSend, onPaste: pasteImages, onInput: (event) => {
1481
1482
  const value = event.currentTarget.value;
1482
1483
  setDraft(value);
@@ -2995,7 +2996,7 @@ function NewChat({ state, adapter, onBack, onClose, onStarted, labels, memoryKey
2995
2996
  }
2996
2997
  } }),
2997
2998
  /* @__PURE__ */ jsxs8("footer", { className: "scui-new-envelope-controls", children: [
2998
- adapter.pickContext ? /* @__PURE__ */ jsx9("button", { className: "scui-attach", type: "button", "aria-label": "Attach files or images", disabled: mode === "terminal" || picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS || Boolean(starting), onClick: pickContext, children: picking ? /* @__PURE__ */ jsx9("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx9(UiIcon, { name: "attach", size: 17 }) }) : null,
2999
+ adapter.pickContext ? /* @__PURE__ */ jsx9("button", { className: "scui-attach", type: "button", "aria-label": labels.attachContext ?? DEFAULT_LABELS.attachContext, disabled: mode === "terminal" || picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS || Boolean(starting), onClick: pickContext, children: picking ? /* @__PURE__ */ jsx9("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx9(UiIcon, { name: "attach", size: 17 }) }) : null,
2999
3000
  /* @__PURE__ */ jsx9(Picker, { harnesses: state.harnesses, value: harness, disabled: Boolean(starting), adapter, logo: components.HarnessLogo, onChange: (value) => {
3000
3001
  setHarness(value);
3001
3002
  remember({ harness: value });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volter-ai-dev/supercode-ui",
3
- "version": "0.1.43",
3
+ "version": "0.1.44",
4
4
  "type": "module",
5
5
  "description": "Composable default UI kit for Supercode-powered coding-agent experiences",
6
6
  "exports": {
@@ -13,6 +13,7 @@ var DEFAULT_LABELS = Object.freeze({
13
13
  newChat: "New chat",
14
14
  searchChats: "Search chats",
15
15
  askAgent: "Ask your agent\u2026",
16
+ attachContext: "Attach files or images",
16
17
  continueHere: "Continue here",
17
18
  continueWithTerminal: "Continue with terminal",
18
19
  joinLive: "Join live",
@@ -16,6 +16,7 @@ var DEFAULT_LABELS = Object.freeze({
16
16
  newChat: "New chat",
17
17
  searchChats: "Search chats",
18
18
  askAgent: "Ask your agent\u2026",
19
+ attachContext: "Attach files or images",
19
20
  continueHere: "Continue here",
20
21
  continueWithTerminal: "Continue with terminal",
21
22
  joinLive: "Join live",
@@ -1513,7 +1514,7 @@ function Composer({ state, adapter, labels = DEFAULT_LABELS, memoryKey = state.a
1513
1514
  }, onDragLeave: (event) => {
1514
1515
  if (!event.currentTarget.contains(event.relatedTarget)) setDragging(false);
1515
1516
  }, onDrop: dropImages, children: [
1516
- adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": "Attach files or images", disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
1517
+ adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": labels.attachContext ?? DEFAULT_LABELS.attachContext, disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
1517
1518
  /* @__PURE__ */ jsx3("textarea", { ref: textarea, rows: 1, "aria-label": `Message ${harnessDisplayName(state.harness) || "agent"}`, placeholder: state.startup !== "ready" ? "Connecting\u2026" : pendingStatus === "failed" ? "Retry or edit the unsent message\u2026" : pendingStatus === "editing" ? "Edit and resend\u2026" : steerAvailable && context.length === 0 && images.length === 0 ? "Redirect the current turn\u2026" : queueBlocked ? "Queue a follow-up\u2026" : labels.askAgent, value: draft, disabled: state.mode !== "control" && !state.canSend, onPaste: pasteImages, onInput: (event) => {
1518
1519
  const value = event.currentTarget.value;
1519
1520
  setDraft(value);
@@ -3078,7 +3079,7 @@ function NewChat({ state, adapter, onBack, onClose, onStarted, labels, memoryKey
3078
3079
  }
3079
3080
  } }),
3080
3081
  /* @__PURE__ */ jsxs9("footer", { className: "scui-new-envelope-controls", children: [
3081
- adapter.pickContext ? /* @__PURE__ */ jsx10("button", { className: "scui-attach", type: "button", "aria-label": "Attach files or images", disabled: mode === "terminal" || picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS || Boolean(starting), onClick: pickContext, children: picking ? /* @__PURE__ */ jsx10("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx10(UiIcon, { name: "attach", size: 17 }) }) : null,
3082
+ adapter.pickContext ? /* @__PURE__ */ jsx10("button", { className: "scui-attach", type: "button", "aria-label": labels.attachContext ?? DEFAULT_LABELS.attachContext, disabled: mode === "terminal" || picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS || Boolean(starting), onClick: pickContext, children: picking ? /* @__PURE__ */ jsx10("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx10(UiIcon, { name: "attach", size: 17 }) }) : null,
3082
3083
  /* @__PURE__ */ jsx10(Picker, { harnesses: state.harnesses, value: harness, disabled: Boolean(starting), adapter, logo: components.HarnessLogo, onChange: (value) => {
3083
3084
  setHarness(value);
3084
3085
  remember({ harness: value });
@@ -16,6 +16,7 @@ var DEFAULT_LABELS = Object.freeze({
16
16
  newChat: "New chat",
17
17
  searchChats: "Search chats",
18
18
  askAgent: "Ask your agent\u2026",
19
+ attachContext: "Attach files or images",
19
20
  continueHere: "Continue here",
20
21
  continueWithTerminal: "Continue with terminal",
21
22
  joinLive: "Join live",
@@ -514,7 +515,7 @@ function Composer({ state, adapter, labels = DEFAULT_LABELS, memoryKey = state.a
514
515
  }, onDragLeave: (event) => {
515
516
  if (!event.currentTarget.contains(event.relatedTarget)) setDragging(false);
516
517
  }, onDrop: dropImages, children: [
517
- adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": "Attach files or images", disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
518
+ adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": labels.attachContext ?? DEFAULT_LABELS.attachContext, disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
518
519
  /* @__PURE__ */ jsx3("textarea", { ref: textarea, rows: 1, "aria-label": `Message ${harnessDisplayName(state.harness) || "agent"}`, placeholder: state.startup !== "ready" ? "Connecting\u2026" : pendingStatus === "failed" ? "Retry or edit the unsent message\u2026" : pendingStatus === "editing" ? "Edit and resend\u2026" : steerAvailable && context.length === 0 && images.length === 0 ? "Redirect the current turn\u2026" : queueBlocked ? "Queue a follow-up\u2026" : labels.askAgent, value: draft, disabled: state.mode !== "control" && !state.canSend, onPaste: pasteImages, onInput: (event) => {
519
520
  const value = event.currentTarget.value;
520
521
  setDraft(value);
@@ -17,6 +17,7 @@ var DEFAULT_LABELS = Object.freeze({
17
17
  newChat: "New chat",
18
18
  searchChats: "Search chats",
19
19
  askAgent: "Ask your agent\u2026",
20
+ attachContext: "Attach files or images",
20
21
  continueHere: "Continue here",
21
22
  continueWithTerminal: "Continue with terminal",
22
23
  joinLive: "Join live",
@@ -16,6 +16,7 @@ var DEFAULT_LABELS = Object.freeze({
16
16
  newChat: "New chat",
17
17
  searchChats: "Search chats",
18
18
  askAgent: "Ask your agent\u2026",
19
+ attachContext: "Attach files or images",
19
20
  continueHere: "Continue here",
20
21
  continueWithTerminal: "Continue with terminal",
21
22
  joinLive: "Join live",
@@ -1476,7 +1477,7 @@ function Composer({ state, adapter, labels = DEFAULT_LABELS, memoryKey = state.a
1476
1477
  }, onDragLeave: (event) => {
1477
1478
  if (!event.currentTarget.contains(event.relatedTarget)) setDragging(false);
1478
1479
  }, onDrop: dropImages, children: [
1479
- adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": "Attach files or images", disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
1480
+ adapter.pickContext && state.mode === "control" ? /* @__PURE__ */ jsx3("button", { className: "scui-attach", type: "button", "aria-label": labels.attachContext ?? DEFAULT_LABELS.attachContext, disabled: picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS, onClick: pickContext, children: picking ? /* @__PURE__ */ jsx3("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx3(UiIcon, { name: "attach", size: 17 }) }) : null,
1480
1481
  /* @__PURE__ */ jsx3("textarea", { ref: textarea, rows: 1, "aria-label": `Message ${harnessDisplayName(state.harness) || "agent"}`, placeholder: state.startup !== "ready" ? "Connecting\u2026" : pendingStatus === "failed" ? "Retry or edit the unsent message\u2026" : pendingStatus === "editing" ? "Edit and resend\u2026" : steerAvailable && context.length === 0 && images.length === 0 ? "Redirect the current turn\u2026" : queueBlocked ? "Queue a follow-up\u2026" : labels.askAgent, value: draft, disabled: state.mode !== "control" && !state.canSend, onPaste: pasteImages, onInput: (event) => {
1481
1482
  const value = event.currentTarget.value;
1482
1483
  setDraft(value);
@@ -2995,7 +2996,7 @@ function NewChat({ state, adapter, onBack, onClose, onStarted, labels, memoryKey
2995
2996
  }
2996
2997
  } }),
2997
2998
  /* @__PURE__ */ jsxs8("footer", { className: "scui-new-envelope-controls", children: [
2998
- adapter.pickContext ? /* @__PURE__ */ jsx9("button", { className: "scui-attach", type: "button", "aria-label": "Attach files or images", disabled: mode === "terminal" || picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS || Boolean(starting), onClick: pickContext, children: picking ? /* @__PURE__ */ jsx9("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx9(UiIcon, { name: "attach", size: 17 }) }) : null,
2999
+ adapter.pickContext ? /* @__PURE__ */ jsx9("button", { className: "scui-attach", type: "button", "aria-label": labels.attachContext ?? DEFAULT_LABELS.attachContext, disabled: mode === "terminal" || picking || context.length >= MAX_CONTEXT_ITEMS && images.length >= MAX_IMAGE_ITEMS || Boolean(starting), onClick: pickContext, children: picking ? /* @__PURE__ */ jsx9("i", { className: "scui-control-spinner" }) : /* @__PURE__ */ jsx9(UiIcon, { name: "attach", size: 17 }) }) : null,
2999
3000
  /* @__PURE__ */ jsx9(Picker, { harnesses: state.harnesses, value: harness, disabled: Boolean(starting), adapter, logo: components.HarnessLogo, onChange: (value) => {
3000
3001
  setHarness(value);
3001
3002
  remember({ harness: value });
@@ -16,6 +16,7 @@ var DEFAULT_LABELS = Object.freeze({
16
16
  newChat: "New chat",
17
17
  searchChats: "Search chats",
18
18
  askAgent: "Ask your agent\u2026",
19
+ attachContext: "Attach files or images",
19
20
  continueHere: "Continue here",
20
21
  continueWithTerminal: "Continue with terminal",
21
22
  joinLive: "Join live",
@@ -16,6 +16,7 @@ var DEFAULT_LABELS = Object.freeze({
16
16
  newChat: "New chat",
17
17
  searchChats: "Search chats",
18
18
  askAgent: "Ask your agent\u2026",
19
+ attachContext: "Attach files or images",
19
20
  continueHere: "Continue here",
20
21
  continueWithTerminal: "Continue with terminal",
21
22
  joinLive: "Join live",
package/sessions.mjs CHANGED
@@ -16,6 +16,7 @@ var DEFAULT_LABELS = Object.freeze({
16
16
  newChat: "New chat",
17
17
  searchChats: "Search chats",
18
18
  askAgent: "Ask your agent\u2026",
19
+ attachContext: "Attach files or images",
19
20
  continueHere: "Continue here",
20
21
  continueWithTerminal: "Continue with terminal",
21
22
  joinLive: "Join live",
package/settings.mjs CHANGED
@@ -16,6 +16,7 @@ var DEFAULT_LABELS = Object.freeze({
16
16
  newChat: "New chat",
17
17
  searchChats: "Search chats",
18
18
  askAgent: "Ask your agent\u2026",
19
+ attachContext: "Attach files or images",
19
20
  continueHere: "Continue here",
20
21
  continueWithTerminal: "Continue with terminal",
21
22
  joinLive: "Join live",