zidane-ui 9.1.13 → 9.1.16
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/adapters/index.d.ts +2 -2
- package/dist/adapters/index.js +2 -2
- package/dist/adapters/live.d.ts +29 -3
- package/dist/adapters/live.js +9 -1
- package/dist/adapters/server-composer-host.js +17 -2
- package/dist/adapters/server-extensions-host.d.ts +0 -1
- package/dist/adapters/server-extensions-host.js +4 -15
- package/dist/adapters/server-git-host.js +7 -16
- package/dist/adapters/server-host.js +181 -43
- package/dist/adapters/server-machines-host.d.ts +2 -0
- package/dist/adapters/server-machines-host.js +22 -23
- package/dist/adapters/server-onboarding-host.d.ts +1 -1
- package/dist/adapters/server-onboarding-host.js +3 -4
- package/dist/adapters/server-session-host.js +22 -3
- package/dist/adapters/server-settings-accounts.js +2 -2
- package/dist/adapters/server-settings-host.js +2 -2
- package/dist/adapters/server-settings-performance.js +7 -9
- package/dist/adapters/server-settings-sections.js +13 -14
- package/dist/adapters/server-sidebar-host.js +2 -2
- package/dist/adapters/sse-host.js +68 -3
- package/dist/adapters/sse-protocol.d.ts +12 -2
- package/dist/adapters/sse-protocol.js +4 -2
- package/dist/app/AppHostProvider.js +4 -3
- package/dist/app/ModalProvider.d.ts +13 -3
- package/dist/app/ModalProvider.js +103 -24
- package/dist/app/NoticeStack.d.ts +33 -0
- package/dist/app/NoticeStack.js +90 -0
- package/dist/app/index.d.ts +3 -2
- package/dist/app/index.js +3 -2
- package/dist/chat/SessionFilterMenu.d.ts +1 -1
- package/dist/chat/SessionFilterMenu.js +2 -1
- package/dist/chat/composer/Composer.js +10 -8
- package/dist/chat/composer/ModelChainList.js +17 -8
- package/dist/chat/composer/ModelChainTooltip.js +5 -2
- package/dist/chat/composer/use-draft-target.d.ts +20 -1
- package/dist/chat/composer/use-draft-target.js +121 -5
- package/dist/chat/composer/use-new-session-defaults.d.ts +5 -1
- package/dist/chat/composer/use-new-session-defaults.js +17 -4
- package/dist/chat/headless/chip-labels.d.ts +1 -0
- package/dist/chat/headless/chip-labels.js +1 -0
- package/dist/chat/headless/composer/labels-editor.d.ts +0 -2
- package/dist/chat/headless/composer/labels-editor.js +0 -2
- package/dist/chat/headless/draft-target.d.ts +21 -1
- package/dist/chat/headless/fixture-host.js +17 -2
- package/dist/chat/headless/host.d.ts +3 -3
- package/dist/chat/headless/index.d.ts +9 -9
- package/dist/chat/headless/index.js +2 -2
- package/dist/chat/headless/labels.d.ts +13 -6
- package/dist/chat/headless/labels.js +10 -9
- package/dist/chat/headless/session-list.d.ts +20 -8
- package/dist/chat/headless/session-list.js +1 -0
- package/dist/chat/headless/sidebar/directory.d.ts +56 -14
- package/dist/chat/headless/sidebar/directory.js +149 -70
- package/dist/chat/headless/sidebar/index.d.ts +3 -3
- package/dist/chat/headless/sidebar/index.js +2 -2
- package/dist/chat/headless/sidebar/labels.d.ts +15 -8
- package/dist/chat/headless/sidebar/types.d.ts +3 -1
- package/dist/chat/headless/sidebar/view.d.ts +13 -5
- package/dist/chat/headless/sidebar/view.js +31 -11
- package/dist/chat/headless/streams/actions.d.ts +5 -3
- package/dist/chat/headless/streams/actions.js +3 -2
- package/dist/chat/headless/streams/index.d.ts +3 -3
- package/dist/chat/headless/streams/merge.d.ts +6 -10
- package/dist/chat/headless/streams/merge.js +7 -21
- package/dist/chat/headless/streams/session-streams.d.ts +29 -4
- package/dist/chat/headless/streams/session-streams.js +86 -0
- package/dist/chat/headless/streams/store.d.ts +162 -16
- package/dist/chat/headless/streams/store.js +334 -38
- package/dist/chat/headless/streams/types.d.ts +10 -7
- package/dist/chat/headless/transcript-labels.d.ts +1 -0
- package/dist/chat/interactions/PlanCard.js +10 -3
- package/dist/chat/interactions/QuestionForm.js +7 -3
- package/dist/chat/interactions/card-ui.d.ts +5 -3
- package/dist/chat/interactions/card-ui.js +9 -7
- package/dist/chat/rich-composer/RichComposer.js +1 -7
- package/dist/chat/rich-composer/composer-extensions.d.ts +0 -2
- package/dist/chat/rich-composer/composer-extensions.js +2 -2
- package/dist/chat/rich-composer/use-composer-editor.d.ts +0 -2
- package/dist/chat/rich-composer/use-composer-editor.js +1 -2
- package/dist/chat/sidebar/SessionSidebar.js +5 -5
- package/dist/chat/sidebar/SidebarFilterMenu.js +3 -1
- package/dist/chat/sidebar/SidebarFrame.d.ts +4 -0
- package/dist/chat/sidebar/SidebarFrame.js +27 -9
- package/dist/chat/sidebar/SidebarGroupHeader.js +1 -1
- package/dist/chat/sidebar/SidebarHostProvider.d.ts +8 -5
- package/dist/chat/sidebar/SidebarHostProvider.js +13 -9
- package/dist/chat/sidebar/SidebarToggleButton.js +7 -3
- package/dist/chat/sidebar/index.d.ts +2 -2
- package/dist/chat/sidebar/session-menu.js +4 -4
- package/dist/chat/sidebar/useSaveViewAsSpace.js +2 -2
- package/dist/chat/testing/contract.js +2 -2
- package/dist/chat/transcript/AuthFailureCard.js +11 -8
- package/dist/chat/transcript/BadgeMenu.js +13 -2
- package/dist/chat/transcript/MermaidDiagram.js +7 -3
- package/dist/chat/transcript/fold.d.ts +4 -0
- package/dist/chat/transcript/fold.js +53 -22
- package/dist/chat/transcript/script-input.d.ts +1 -1
- package/dist/chat/transcript/shell-block.js +7 -3
- package/dist/chat/transcript/useStickToBottom.js +12 -0
- package/dist/components/BrowserSignIn.js +23 -21
- package/dist/components/Form.d.ts +6 -4
- package/dist/components/Form.js +16 -8
- package/dist/components/LoadError.d.ts +4 -2
- package/dist/components/LoadError.js +13 -9
- package/dist/components/Notice.d.ts +29 -0
- package/dist/components/Notice.js +63 -0
- package/dist/components/PanelEmpty.d.ts +1 -1
- package/dist/components/PanelEmpty.js +4 -2
- package/dist/components/Restricted.d.ts +1 -1
- package/dist/components/palette/PaletteList.js +8 -1
- package/dist/components/palette/PalettePanel.js +14 -6
- package/dist/core.css +24 -5
- package/dist/dist/{index-Bq87OcGy.d.ts → index-BZM8tu4L.d.ts} +28 -3
- package/dist/dist/index.d.ts +2 -2
- package/dist/dist/{timeout-B5pO5I5a.d.ts → timeout-Cyx3VGPz.d.ts} +1 -1
- package/dist/extensions/ExtensionSettingsPage.js +1 -4
- package/dist/extensions/ExtensionSettingsSection.js +4 -3
- package/dist/extensions/ExtensionSettingsSidebar.js +2 -6
- package/dist/extensions/SettingsWireForm.d.ts +1 -7
- package/dist/extensions/SettingsWireForm.js +7 -5
- package/dist/extensions/headless/fixture-host.d.ts +1 -5
- package/dist/extensions/headless/fixture-host.js +1 -4
- package/dist/extensions/headless/host.d.ts +1 -11
- package/dist/extensions/headless/index.d.ts +3 -3
- package/dist/extensions/headless/index.js +2 -2
- package/dist/extensions/headless/select.d.ts +1 -11
- package/dist/extensions/headless/select.js +1 -18
- package/dist/files/EditorColumn.js +12 -1
- package/dist/files/TreeColumn.js +13 -20
- package/dist/files/useOpenFiles.js +2 -0
- package/dist/git/BranchMenu.js +5 -3
- package/dist/git/ImportRepoDialog.js +18 -9
- package/dist/git/MoveSessionDialog.js +15 -7
- package/dist/git/RemoteFolderPicker.js +34 -16
- package/dist/git/SyncChip.js +17 -17
- package/dist/git/WherePicker.d.ts +16 -1
- package/dist/git/WherePicker.js +80 -36
- package/dist/git/headless/environment.d.ts +33 -3
- package/dist/git/headless/environment.js +33 -5
- package/dist/git/headless/index.d.ts +2 -2
- package/dist/git/headless/index.js +2 -2
- package/dist/git/headless/labels.d.ts +15 -2
- package/dist/git/headless/labels.js +17 -4
- package/dist/git/useEnvironmentChoices.d.ts +3 -1
- package/dist/git/useEnvironmentChoices.js +6 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/labels.d.ts +5 -0
- package/dist/labels.js +5 -0
- package/dist/machines/AddMachineDialog.d.ts +34 -0
- package/dist/machines/AddMachineDialog.js +464 -0
- package/dist/machines/Banners.d.ts +33 -4
- package/dist/machines/Banners.js +64 -3
- package/dist/machines/DaemonMenu.js +27 -4
- package/dist/machines/HostCapabilities.d.ts +1 -3
- package/dist/machines/HostCapabilities.js +24 -45
- package/dist/machines/HostSyncPanel.js +123 -129
- package/dist/machines/HostsSection.d.ts +4 -1
- package/dist/machines/HostsSection.js +30 -7
- package/dist/machines/MachinesExplainer.d.ts +17 -0
- package/dist/machines/MachinesExplainer.js +71 -0
- package/dist/machines/MachinesProvider.d.ts +14 -2
- package/dist/machines/MachinesProvider.js +35 -1
- package/dist/machines/ServerAddedCard.d.ts +31 -0
- package/dist/machines/ServerAddedCard.js +72 -0
- package/dist/machines/ServerCard.js +91 -215
- package/dist/machines/ServerMachinesPanel.d.ts +2 -2
- package/dist/machines/ServerMachinesPanel.js +184 -323
- package/dist/machines/ServerUpdatePanel.js +51 -40
- package/dist/machines/ShareThisComputerForm.d.ts +19 -0
- package/dist/machines/ShareThisComputerForm.js +133 -0
- package/dist/machines/TokensPanel.d.ts +5 -3
- package/dist/machines/TokensPanel.js +98 -78
- package/dist/machines/headless/fixture-host.d.ts +19 -3
- package/dist/machines/headless/fixture-host.js +42 -5
- package/dist/machines/headless/fixtures.js +4 -6
- package/dist/machines/headless/host.d.ts +40 -19
- package/dist/machines/headless/index.d.ts +3 -3
- package/dist/machines/headless/index.js +2 -2
- package/dist/machines/headless/labels.d.ts +63 -20
- package/dist/machines/headless/labels.js +88 -25
- package/dist/machines/headless/messages.js +8 -0
- package/dist/machines/headless/stores.d.ts +9 -2
- package/dist/machines/headless/stores.js +28 -1
- package/dist/machines/index.d.ts +7 -3
- package/dist/machines/index.js +8 -4
- package/dist/machines/testing/contract.d.ts +15 -3
- package/dist/machines/testing/contract.js +68 -14
- package/dist/motion/grow.d.ts +8 -1
- package/dist/motion/grow.js +10 -4
- package/dist/onboarding/demos/index.js +1 -1
- package/dist/onboarding/headless/labels.d.ts +13 -0
- package/dist/onboarding/headless/labels.js +8 -0
- package/dist/onboarding/index.js +3 -3
- package/dist/onboarding/sources/SourceBrowser.js +11 -7
- package/dist/onboarding/steps/ConnectorsStep.js +1 -1
- package/dist/onboarding/steps/ImportStep.js +4 -1
- package/dist/onboarding/steps/ReadyStep.js +9 -2
- package/dist/onboarding/steps/SkillsStep.js +1 -1
- package/dist/onboarding/steps/connect/KeyForm.js +6 -2
- package/dist/onboarding/steps/connect/ProviderPanel.js +6 -2
- package/dist/onboarding/steps/connect/ProviderReady.js +25 -20
- package/dist/onboarding/steps/tasks.js +17 -14
- package/dist/server/sse-handler.js +141 -19
- package/dist/session/ArtifactsPanel.js +39 -17
- package/dist/session/PlanTracker.js +12 -7
- package/dist/session/ProjectHome.js +13 -11
- package/dist/session/RemindersPanel.js +34 -16
- package/dist/session/RunningWorkDialog.js +6 -2
- package/dist/session/SecretsPanel.js +29 -10
- package/dist/session/SessionDetailsDialog.d.ts +1 -1
- package/dist/session/SessionDetailsDialog.js +18 -10
- package/dist/session/SideChat.js +10 -7
- package/dist/session/TurnDetailsDialog.js +19 -5
- package/dist/session/UsagePanel.js +10 -4
- package/dist/session/headless/host.d.ts +2 -0
- package/dist/session/headless/labels.d.ts +19 -1
- package/dist/session/headless/labels.js +15 -1
- package/dist/session/headless/queue.js +2 -1
- package/dist/session/headless/reminder-labels.d.ts +4 -0
- package/dist/session/headless/reminder-labels.js +4 -0
- package/dist/settings/SettingsRestricted.d.ts +1 -1
- package/dist/settings/SettingsRestricted.js +4 -4
- package/dist/settings/SettingsShell.d.ts +7 -0
- package/dist/settings/SettingsShell.js +6 -1
- package/dist/settings/headless/fixture-performance.d.ts +1 -1
- package/dist/settings/headless/host.d.ts +2 -2
- package/dist/settings/headless/labels.d.ts +3 -3
- package/dist/settings/headless/labels.js +3 -3
- package/dist/settings/headless/performance.d.ts +3 -4
- package/dist/settings/headless/search.d.ts +1 -1
- package/dist/settings/index.d.ts +2 -1
- package/dist/settings/index.js +2 -1
- package/dist/settings/sections/editor/EditorSection.js +7 -4
- package/dist/settings/sections/editor/labels.d.ts +1 -0
- package/dist/settings/sections/editor/labels.js +1 -0
- package/dist/settings/sections/environments/EnvironmentsSection.js +19 -12
- package/dist/settings/sections/environments/labels.d.ts +1 -0
- package/dist/settings/sections/environments/labels.js +2 -1
- package/dist/settings/sections/extensions/ExtensionConfigRows.d.ts +1 -3
- package/dist/settings/sections/extensions/ExtensionConfigRows.js +20 -19
- package/dist/settings/sections/extensions/ExtensionOptionsSection.js +2 -1
- package/dist/settings/sections/extensions/options-labels.d.ts +2 -1
- package/dist/settings/sections/extensions/options-labels.js +2 -1
- package/dist/settings/sections/index.d.ts +2 -1
- package/dist/settings/sections/index.js +2 -1
- package/dist/settings/sections/logs/LogsSection.d.ts +2 -2
- package/dist/settings/sections/logs/LogsSection.js +2 -2
- package/dist/settings/sections/mcp/McpSection.d.ts +1 -1
- package/dist/settings/sections/mcp/McpSection.js +12 -6
- package/dist/settings/sections/mcp/McpServerRow.js +20 -13
- package/dist/settings/sections/mcp/labels.d.ts +8 -2
- package/dist/settings/sections/mcp/labels.js +8 -2
- package/dist/settings/sections/models/ModelRows.js +1 -1
- package/dist/settings/sections/models/NewChatPlaceRow.d.ts +26 -0
- package/dist/settings/sections/models/NewChatPlaceRow.js +78 -0
- package/dist/settings/sections/models/SpacesDefaultsSection.js +15 -3
- package/dist/settings/sections/models/labels.d.ts +7 -0
- package/dist/settings/sections/models/labels.js +7 -0
- package/dist/settings/sections/models/model-test.js +7 -4
- package/dist/settings/sections/performance/PerformanceSection.js +16 -6
- package/dist/settings/sections/performance/labels.d.ts +1 -1
- package/dist/settings/sections/performance/labels.js +1 -1
- package/dist/settings/sections/providers/ProvidersSection.d.ts +1 -1
- package/dist/settings/sections/providers/ProvidersSection.js +14 -7
- package/dist/settings/sections/providers/ServerProvidersSection.d.ts +1 -1
- package/dist/settings/sections/providers/ServerProvidersSection.js +11 -5
- package/dist/settings/sections/providers/labels.d.ts +2 -2
- package/dist/settings/sections/providers/labels.js +2 -2
- package/dist/settings/sections/skills/SkillList.js +1 -1
- package/dist/settings/sections/skills/SkillsSection.js +1 -1
- package/dist/settings/testing/performance.contract.js +8 -12
- package/dist/styles.css +32 -3
- package/dist/terminal/HostTerminalSurface.js +15 -5
- package/dist/terminal/TerminalPanel.js +30 -17
- package/dist/terminal/TerminalSurface.js +11 -4
- package/dist/terminal/headless/labels.d.ts +5 -0
- package/dist/terminal/headless/labels.js +5 -0
- package/dist/terminal/headless/store.d.ts +1 -1
- package/dist/terminal/headless/store.js +6 -3
- package/dist/workspace/LayoutBudget.d.ts +5 -1
- package/dist/workspace/LayoutBudget.js +14 -1
- package/dist/workspace/PanelContentView.d.ts +1 -1
- package/dist/workspace/PanelContentView.js +17 -6
- package/dist/workspace/WorkspaceProvider.js +3 -2
- package/dist/workspace/headless/labels.d.ts +1 -0
- package/dist/workspace/headless/labels.js +1 -0
- package/package.json +3 -3
- package/src/styles/motion.css +8 -0
- package/src/styles/primitives.css +7 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { IconButton } from "../components/IconButton.js";
|
|
2
2
|
import { buttonClass } from "../components/button.js";
|
|
3
|
+
import { Notice } from "../components/Notice.js";
|
|
3
4
|
import { Segmented } from "../components/Segmented.js";
|
|
4
5
|
import { MetaChip } from "../components/Form.js";
|
|
6
|
+
import { errorMessage } from "../components/report-error.js";
|
|
5
7
|
import { PanelEmpty, PanelLoading } from "../components/PanelEmpty.js";
|
|
6
8
|
import { PANEL_ROW, PANEL_ROW_HOVER } from "../components/PanelRows.js";
|
|
7
9
|
import { useMinuteTick } from "../hooks/useMinuteTick.js";
|
|
@@ -11,7 +13,7 @@ import { useOptionalChatHost } from "../chat/ChatProvider.js";
|
|
|
11
13
|
import { useAllSchedules, useSchedulesStatus, useSessionHost, useSessionSchedules } from "./SessionProvider.js";
|
|
12
14
|
import { useSessionLabels } from "./useSessionLabels.js";
|
|
13
15
|
import { OpenSessionContext } from "../chat/transcript/markdown-context.js";
|
|
14
|
-
import { BTN_GHOST, BTN_PRIMARY,
|
|
16
|
+
import { BTN_GHOST, BTN_PRIMARY, INPUT } from "../chat/interactions/card-ui.js";
|
|
15
17
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
16
18
|
import { useContext, useEffect, useId, useMemo, useState } from "react";
|
|
17
19
|
import { describeTime, describeTrigger, scheduleLabel, scheduleTargetSession } from "zidane/chat/pure";
|
|
@@ -30,7 +32,6 @@ import { describeTime, describeTrigger, scheduleLabel, scheduleTargetSession } f
|
|
|
30
32
|
* Reminders setting is off it says so. The list follows the host's change
|
|
31
33
|
* signal (`schedules:changed`).
|
|
32
34
|
*/
|
|
33
|
-
const errorText = (err) => err instanceof Error ? err.message : String(err);
|
|
34
35
|
/** The time words follow the clock: the minute tick re-renders, and each render reads it. */
|
|
35
36
|
const readClock = () => Date.now();
|
|
36
37
|
/** A quick time pick under the When field. */
|
|
@@ -108,7 +109,7 @@ function RemindersPanel({ sessionId, initialScope = "session", onOpenSession, cl
|
|
|
108
109
|
});
|
|
109
110
|
const act = (run) => {
|
|
110
111
|
setError(null);
|
|
111
|
-
run().catch((err) => setError(
|
|
112
|
+
run().catch((err) => setError(errorMessage(err)));
|
|
112
113
|
};
|
|
113
114
|
return /* @__PURE__ */ jsxs("div", {
|
|
114
115
|
className: root,
|
|
@@ -136,10 +137,12 @@ function RemindersPanel({ sessionId, initialScope = "session", onOpenSession, cl
|
|
|
136
137
|
}),
|
|
137
138
|
/* @__PURE__ */ jsxs("div", {
|
|
138
139
|
className: "flex-1 min-h-0 flex flex-col overflow-y-auto px-3 pt-2 pb-3",
|
|
139
|
-
children: [error && /* @__PURE__ */ jsx(
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
140
|
+
children: [error && /* @__PURE__ */ jsx(Notice, {
|
|
141
|
+
tone: "error",
|
|
142
|
+
compact: true,
|
|
143
|
+
detail: error,
|
|
144
|
+
className: "mb-2",
|
|
145
|
+
children: labels.remindersActionFailed
|
|
143
146
|
}), sorted === null ? /* @__PURE__ */ jsx(PanelLoading, {}) : sorted.length === 0 ? /* @__PURE__ */ jsx(PanelEmpty, {
|
|
144
147
|
icon: "i-ph-alarm",
|
|
145
148
|
title: scope === "session" ? labels.remindersEmpty : labels.remindersEmptyAll,
|
|
@@ -329,8 +332,10 @@ function ReminderRow({ schedule, sessionId, now, act, openSession }) {
|
|
|
329
332
|
now
|
|
330
333
|
})]
|
|
331
334
|
}),
|
|
332
|
-
!schedule.enabled && schedule.disabledReason && /* @__PURE__ */ jsx(
|
|
333
|
-
|
|
335
|
+
!schedule.enabled && schedule.disabledReason && /* @__PURE__ */ jsx(Notice, {
|
|
336
|
+
tone: "warning",
|
|
337
|
+
compact: true,
|
|
338
|
+
className: "self-start",
|
|
334
339
|
children: labels.reminderOffReason(schedule.disabledReason)
|
|
335
340
|
}),
|
|
336
341
|
schedule.expiresAt !== void 0 && schedule.enabled && /* @__PURE__ */ jsx("span", {
|
|
@@ -354,7 +359,7 @@ function FireHistory({ id, scheduleId, label, version, load }) {
|
|
|
354
359
|
const [error, setError] = useState(null);
|
|
355
360
|
useEffect(() => {
|
|
356
361
|
let live = true;
|
|
357
|
-
load(scheduleId, 20).then((list) => live && setFires(list), (err) => live && setError(
|
|
362
|
+
load(scheduleId, 20).then((list) => live && setFires(list), (err) => live && setError(errorMessage(err)));
|
|
358
363
|
return () => {
|
|
359
364
|
live = false;
|
|
360
365
|
};
|
|
@@ -367,7 +372,12 @@ function FireHistory({ id, scheduleId, label, version, load }) {
|
|
|
367
372
|
return /* @__PURE__ */ jsx("div", {
|
|
368
373
|
id,
|
|
369
374
|
className: "ml-[38px] mt-1 pl-3 border-l border-[var(--zg-hairline)]",
|
|
370
|
-
children: error ? /* @__PURE__ */ jsx(
|
|
375
|
+
children: error ? /* @__PURE__ */ jsx(Notice, {
|
|
376
|
+
tone: "error",
|
|
377
|
+
compact: true,
|
|
378
|
+
detail: error,
|
|
379
|
+
children: labels.reminderHistoryFailed
|
|
380
|
+
}) : fires === null ? null : fires.length === 0 ? /* @__PURE__ */ jsx("span", {
|
|
371
381
|
className: "zg-meta",
|
|
372
382
|
children: labels.reminderNoFires
|
|
373
383
|
}) : /* @__PURE__ */ jsx("ul", {
|
|
@@ -385,9 +395,12 @@ function FireHistory({ id, scheduleId, label, version, load }) {
|
|
|
385
395
|
children: labels.reminderFireOutcome(fire.outcome)
|
|
386
396
|
}),
|
|
387
397
|
fire.late && /* @__PURE__ */ jsx("span", { children: labels.reminderFireLate }),
|
|
388
|
-
fire.error && /* @__PURE__ */ jsx(
|
|
389
|
-
|
|
390
|
-
|
|
398
|
+
fire.error && /* @__PURE__ */ jsx(Notice, {
|
|
399
|
+
tone: "error",
|
|
400
|
+
compact: true,
|
|
401
|
+
detail: fire.error,
|
|
402
|
+
className: "basis-full",
|
|
403
|
+
children: labels.reminderFireFailed
|
|
391
404
|
})
|
|
392
405
|
]
|
|
393
406
|
}, fire.id))
|
|
@@ -425,7 +438,7 @@ function ReminderForm({ sessionId }) {
|
|
|
425
438
|
setWhen("");
|
|
426
439
|
setText("");
|
|
427
440
|
} catch (err) {
|
|
428
|
-
setError(
|
|
441
|
+
setError(errorMessage(err));
|
|
429
442
|
} finally {
|
|
430
443
|
setBusy(false);
|
|
431
444
|
}
|
|
@@ -484,7 +497,12 @@ function ReminderForm({ sessionId }) {
|
|
|
484
497
|
children: words
|
|
485
498
|
}, words))
|
|
486
499
|
}),
|
|
487
|
-
/* @__PURE__ */ jsx(
|
|
500
|
+
error && /* @__PURE__ */ jsx(Notice, {
|
|
501
|
+
tone: "error",
|
|
502
|
+
compact: true,
|
|
503
|
+
detail: error,
|
|
504
|
+
children: labels.reminderCreateFailed
|
|
505
|
+
}),
|
|
488
506
|
/* @__PURE__ */ jsxs("div", {
|
|
489
507
|
className: "flex items-center gap-2",
|
|
490
508
|
children: [
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BTN_LG_SECONDARY, buttonClass } from "../components/button.js";
|
|
2
2
|
import { EmptyState, Tray } from "../components/Surface.js";
|
|
3
3
|
import { ErrorNote, MetaChip } from "../components/Form.js";
|
|
4
|
+
import { errorMessage } from "../components/report-error.js";
|
|
4
5
|
import { useSessionHost, useSessionRunningWork } from "./SessionProvider.js";
|
|
5
6
|
import { useSessionLabels } from "./useSessionLabels.js";
|
|
6
7
|
import { ShellFrame } from "./SessionShell.js";
|
|
@@ -43,7 +44,7 @@ function RunningWorkDialog({ sessionId, onClose, showTerminal, renderShell, clas
|
|
|
43
44
|
await work.cancel(sessionId, id, id === "all" ? "user-cancelled-all" : "user-clicked-cancel");
|
|
44
45
|
await refresh();
|
|
45
46
|
} catch (err) {
|
|
46
|
-
setError(
|
|
47
|
+
setError(errorMessage(err));
|
|
47
48
|
} finally {
|
|
48
49
|
setBusyId(null);
|
|
49
50
|
}
|
|
@@ -78,7 +79,10 @@ function RunningWorkDialog({ sessionId, onClose, showTerminal, renderShell, clas
|
|
|
78
79
|
}),
|
|
79
80
|
children: /* @__PURE__ */ jsxs("div", {
|
|
80
81
|
className: "flex flex-col gap-3",
|
|
81
|
-
children: [error && /* @__PURE__ */ jsx(ErrorNote, {
|
|
82
|
+
children: [error && /* @__PURE__ */ jsx(ErrorNote, {
|
|
83
|
+
detail: error,
|
|
84
|
+
children: labels.runningWorkCancelFailed
|
|
85
|
+
}), items.length === 0 ? /* @__PURE__ */ jsx(EmptyState, {
|
|
82
86
|
icon: "i-ph-check-circle",
|
|
83
87
|
title: labels.runningWorkEmpty
|
|
84
88
|
}) : /* @__PURE__ */ jsx(Tray, {
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { IconButton } from "../components/IconButton.js";
|
|
2
|
+
import { Notice } from "../components/Notice.js";
|
|
3
|
+
import { errorMessage } from "../components/report-error.js";
|
|
2
4
|
import { PanelEmpty, PanelLoading } from "../components/PanelEmpty.js";
|
|
3
5
|
import { PANEL_ROW, PANEL_ROW_HOVER } from "../components/PanelRows.js";
|
|
4
6
|
import { useMinuteTick } from "../hooks/useMinuteTick.js";
|
|
5
7
|
import { useSessionHost, useSessionSecrets } from "./SessionProvider.js";
|
|
6
8
|
import { useSessionLabels } from "./useSessionLabels.js";
|
|
7
|
-
import { BTN_GHOST, BTN_PRIMARY,
|
|
9
|
+
import { BTN_GHOST, BTN_PRIMARY, INPUT } from "../chat/interactions/card-ui.js";
|
|
8
10
|
import { secretTimeLeft } from "../chat/headless/secrets.js";
|
|
9
11
|
import { SecretInput } from "../chat/interactions/SecretInput.js";
|
|
10
12
|
import { Tutorial } from "../onboarding/tutorials.js";
|
|
@@ -50,11 +52,21 @@ function SecretsPanel({ sessionId, className = "", style }) {
|
|
|
50
52
|
}), labels.secretsAdd]
|
|
51
53
|
});
|
|
52
54
|
useEffect(() => {
|
|
53
|
-
refresh?.(sessionId).catch((err) => setError(
|
|
54
|
-
|
|
55
|
+
refresh?.(sessionId).catch((err) => setError({
|
|
56
|
+
message: labels.secretsLoadFailed,
|
|
57
|
+
detail: errorMessage(err)
|
|
58
|
+
}));
|
|
59
|
+
}, [
|
|
60
|
+
refresh,
|
|
61
|
+
sessionId,
|
|
62
|
+
labels.secretsLoadFailed
|
|
63
|
+
]);
|
|
55
64
|
const onRevoke = revoke ? (name) => {
|
|
56
65
|
setError(null);
|
|
57
|
-
revoke(sessionId, name).catch((err) => setError(
|
|
66
|
+
revoke(sessionId, name).catch((err) => setError({
|
|
67
|
+
message: labels.secretRevokeFailed,
|
|
68
|
+
detail: errorMessage(err)
|
|
69
|
+
}));
|
|
58
70
|
} : void 0;
|
|
59
71
|
return /* @__PURE__ */ jsxs("div", {
|
|
60
72
|
className: `flex-1 min-h-0 flex flex-col ${className}`,
|
|
@@ -63,10 +75,12 @@ function SecretsPanel({ sessionId, className = "", style }) {
|
|
|
63
75
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
64
76
|
className: "flex-1 min-h-0 flex flex-col overflow-y-auto px-3 pt-3 pb-3",
|
|
65
77
|
children: [
|
|
66
|
-
error && /* @__PURE__ */ jsx(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
78
|
+
error && /* @__PURE__ */ jsx(Notice, {
|
|
79
|
+
tone: "error",
|
|
80
|
+
compact: true,
|
|
81
|
+
detail: error.detail,
|
|
82
|
+
className: "mb-2",
|
|
83
|
+
children: error.message
|
|
70
84
|
}),
|
|
71
85
|
entries === null ? /* @__PURE__ */ jsx(PanelLoading, {}) : empty ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(PanelEmpty, {
|
|
72
86
|
icon: "i-ph-key",
|
|
@@ -169,7 +183,7 @@ function AddSecretForm({ sessionId, initialName, saved, onDone }) {
|
|
|
169
183
|
value.current = "";
|
|
170
184
|
onDone();
|
|
171
185
|
} catch (err) {
|
|
172
|
-
setError(
|
|
186
|
+
setError(errorMessage(err));
|
|
173
187
|
setBusy(false);
|
|
174
188
|
}
|
|
175
189
|
};
|
|
@@ -214,6 +228,12 @@ function AddSecretForm({ sessionId, initialName, saved, onDone }) {
|
|
|
214
228
|
},
|
|
215
229
|
onSubmit: () => void submit()
|
|
216
230
|
}),
|
|
231
|
+
error && /* @__PURE__ */ jsx(Notice, {
|
|
232
|
+
tone: "error",
|
|
233
|
+
compact: true,
|
|
234
|
+
detail: error,
|
|
235
|
+
children: labels.secretSaveFailed
|
|
236
|
+
}),
|
|
217
237
|
/* @__PURE__ */ jsxs("div", {
|
|
218
238
|
className: "flex items-center gap-2 pt-1",
|
|
219
239
|
children: [
|
|
@@ -224,7 +244,6 @@ function AddSecretForm({ sessionId, initialName, saved, onDone }) {
|
|
|
224
244
|
disabled: busy,
|
|
225
245
|
children: labels.secretCancel
|
|
226
246
|
}),
|
|
227
|
-
/* @__PURE__ */ jsx(CardError, { error }),
|
|
228
247
|
/* @__PURE__ */ jsx("span", { className: "flex-1" }),
|
|
229
248
|
/* @__PURE__ */ jsx("button", {
|
|
230
249
|
type: "submit",
|
|
@@ -98,7 +98,7 @@ interface SessionDetailsDialogProps {
|
|
|
98
98
|
onChanged?: () => Promise<void>;
|
|
99
99
|
/** The cache report, as the Cache fact. */
|
|
100
100
|
cache?: ReactNode;
|
|
101
|
-
/**
|
|
101
|
+
/** The raw words behind an action's error, shown under Details. Default: its message. */
|
|
102
102
|
formatError?: (error: unknown) => string;
|
|
103
103
|
/** Closes the dialog. */
|
|
104
104
|
onClose: () => void;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { IconButton } from "../components/IconButton.js";
|
|
2
2
|
import { BTN_LG_DANGER, BTN_LG_SECONDARY, BTN_LG_SOLID, BTN_SECONDARY } from "../components/button.js";
|
|
3
|
+
import { Notice } from "../components/Notice.js";
|
|
3
4
|
import { Tray } from "../components/Surface.js";
|
|
4
5
|
import { INPUT_CLASS, MetaChip } from "../components/Form.js";
|
|
6
|
+
import { errorMessage } from "../components/report-error.js";
|
|
5
7
|
import { useDisplayPath } from "../hooks/useDisplayPath.js";
|
|
6
8
|
import { useSessionHost } from "./SessionProvider.js";
|
|
7
9
|
import { useSessionLabels } from "./useSessionLabels.js";
|
|
@@ -33,13 +35,12 @@ const STATUS_DOT = {
|
|
|
33
35
|
completed: "bg-[var(--zg-accent-alt)]",
|
|
34
36
|
error: "bg-[var(--zg-danger)]"
|
|
35
37
|
};
|
|
36
|
-
const messageOf = (err) => err instanceof Error ? err.message : String(err);
|
|
37
38
|
/**
|
|
38
39
|
* Renders a session's facts and actions.
|
|
39
40
|
*
|
|
40
41
|
* @param props - The `session` facts, the session-list handlers, folder handlers, slots, `onClose`, `renderShell`.
|
|
41
42
|
*/
|
|
42
|
-
function SessionDetailsDialog({ session, onRename, confirmDelete, onDelete, spaces = null, spaceId: spaceProp, onMoveToSpace, onRevealFolder, onPickFolder, folderPicker, onChanged, cache, formatError =
|
|
43
|
+
function SessionDetailsDialog({ session, onRename, confirmDelete, onDelete, spaces = null, spaceId: spaceProp, onMoveToSpace, onRevealFolder, onPickFolder, folderPicker, onChanged, cache, formatError = errorMessage, onClose, renderShell, className, style }) {
|
|
43
44
|
const labels = useSessionLabels();
|
|
44
45
|
const details = useSessionHost().details;
|
|
45
46
|
const [title, setTitle] = useState(session.title);
|
|
@@ -74,7 +75,10 @@ function SessionDetailsDialog({ session, onRename, confirmDelete, onDelete, spac
|
|
|
74
75
|
setBusy(kind);
|
|
75
76
|
await action();
|
|
76
77
|
} catch (err) {
|
|
77
|
-
setError(
|
|
78
|
+
setError({
|
|
79
|
+
message: labels.detailsActionFailed,
|
|
80
|
+
detail: formatError(err)
|
|
81
|
+
});
|
|
78
82
|
} finally {
|
|
79
83
|
setBusy(null);
|
|
80
84
|
}
|
|
@@ -115,7 +119,7 @@ function SessionDetailsDialog({ session, onRename, confirmDelete, onDelete, spac
|
|
|
115
119
|
});
|
|
116
120
|
const revealFolder = async () => {
|
|
117
121
|
setError(null);
|
|
118
|
-
if (!await onRevealFolder?.().catch(() => false)) setError(labels.detailsFolderGone(session.cwd));
|
|
122
|
+
if (!await onRevealFolder?.().catch(() => false)) setError({ message: labels.detailsFolderGone(session.cwd) });
|
|
119
123
|
};
|
|
120
124
|
const moveToSpace = (next) => run("space", async () => {
|
|
121
125
|
await onMoveToSpace?.(next);
|
|
@@ -130,7 +134,10 @@ function SessionDetailsDialog({ session, onRename, confirmDelete, onDelete, spac
|
|
|
130
134
|
await onDelete();
|
|
131
135
|
onClose();
|
|
132
136
|
} catch (err) {
|
|
133
|
-
setError(
|
|
137
|
+
setError({
|
|
138
|
+
message: labels.detailsDeleteFailed,
|
|
139
|
+
detail: formatError(err)
|
|
140
|
+
});
|
|
134
141
|
setBusy(null);
|
|
135
142
|
}
|
|
136
143
|
};
|
|
@@ -154,11 +161,12 @@ function SessionDetailsDialog({ session, onRename, confirmDelete, onDelete, spac
|
|
|
154
161
|
"aria-hidden": true,
|
|
155
162
|
className: "i-ph-trash text-sm"
|
|
156
163
|
}), busy === "deleting" ? labels.detailsDeleting : labels.detailsDelete]
|
|
157
|
-
}), error && /* @__PURE__ */ jsx(
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
164
|
+
}), error && /* @__PURE__ */ jsx(Notice, {
|
|
165
|
+
tone: "error",
|
|
166
|
+
compact: true,
|
|
167
|
+
detail: error.detail,
|
|
168
|
+
className: "min-w-0 flex-1",
|
|
169
|
+
children: error.message
|
|
162
170
|
})]
|
|
163
171
|
}),
|
|
164
172
|
children: [
|
package/dist/session/SideChat.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { Notice } from "../components/Notice.js";
|
|
2
|
+
import { errorMessage } from "../components/report-error.js";
|
|
1
3
|
import { PanelEmpty } from "../components/PanelEmpty.js";
|
|
2
4
|
import { constant, useReadable } from "../chat/headless/store.js";
|
|
3
5
|
import { useChatHost } from "../chat/ChatProvider.js";
|
|
@@ -138,7 +140,7 @@ function SideChat({ parentId, cwd, renderTranscript, renderPickers, requests, cl
|
|
|
138
140
|
try {
|
|
139
141
|
await side.remove(sideId);
|
|
140
142
|
} catch (err) {
|
|
141
|
-
throw new Error(labels.sideResetFailed(
|
|
143
|
+
throw new Error(labels.sideResetFailed(errorMessage(err)));
|
|
142
144
|
}
|
|
143
145
|
known.current = Promise.resolve({
|
|
144
146
|
side: null,
|
|
@@ -197,7 +199,7 @@ function SideChat({ parentId, cwd, renderTranscript, renderPickers, requests, cl
|
|
|
197
199
|
attachments: []
|
|
198
200
|
}).catch((err) => {
|
|
199
201
|
composer.current?.insertText(question);
|
|
200
|
-
setRequestError(
|
|
202
|
+
setRequestError(errorMessage(err));
|
|
201
203
|
});
|
|
202
204
|
};
|
|
203
205
|
take();
|
|
@@ -249,11 +251,12 @@ function SideChat({ parentId, cwd, renderTranscript, renderPickers, requests, cl
|
|
|
249
251
|
footer: pick && renderPickers ? renderPickers(pick, ensureSide) : void 0,
|
|
250
252
|
placeholder: labels.sidePlaceholder,
|
|
251
253
|
ariaLabel: labels.sideComposerLabel,
|
|
252
|
-
below: requestError ? /* @__PURE__ */ jsx(
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
254
|
+
below: requestError ? /* @__PURE__ */ jsx(Notice, {
|
|
255
|
+
tone: "error",
|
|
256
|
+
compact: true,
|
|
257
|
+
detail: requestError,
|
|
258
|
+
className: "mx-4 mt-1.5",
|
|
259
|
+
children: labels.sideRequestFailed
|
|
257
260
|
}) : void 0
|
|
258
261
|
})
|
|
259
262
|
})]
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BTN_LG_SECONDARY, BTN_LG_SOLID } from "../components/button.js";
|
|
2
2
|
import { CodePanel, Tray } from "../components/Surface.js";
|
|
3
3
|
import { ErrorNote, MetaChip, TEXTAREA_CLASS } from "../components/Form.js";
|
|
4
|
+
import { errorMessage } from "../components/report-error.js";
|
|
4
5
|
import { useSessionHost } from "./SessionProvider.js";
|
|
5
6
|
import { useSessionLabels } from "./useSessionLabels.js";
|
|
6
7
|
import { ShellFrame } from "./SessionShell.js";
|
|
@@ -40,7 +41,10 @@ function TurnDetailsDialog({ sessionId, turnId, running = false, neighbors = nul
|
|
|
40
41
|
turns.get(sessionId, turnId).then((result) => {
|
|
41
42
|
if (!cancelled) setTurn(result ?? null);
|
|
42
43
|
}).catch((err) => {
|
|
43
|
-
if (!cancelled) setError(
|
|
44
|
+
if (!cancelled) setError({
|
|
45
|
+
message: labels.turnLoadFailed,
|
|
46
|
+
detail: errorMessage(err)
|
|
47
|
+
});
|
|
44
48
|
});
|
|
45
49
|
return () => {
|
|
46
50
|
cancelled = true;
|
|
@@ -48,7 +52,8 @@ function TurnDetailsDialog({ sessionId, turnId, running = false, neighbors = nul
|
|
|
48
52
|
}, [
|
|
49
53
|
turns,
|
|
50
54
|
sessionId,
|
|
51
|
-
turnId
|
|
55
|
+
turnId,
|
|
56
|
+
labels.turnLoadFailed
|
|
52
57
|
]);
|
|
53
58
|
const act = async (kind, action) => {
|
|
54
59
|
setBusy(kind);
|
|
@@ -56,7 +61,10 @@ function TurnDetailsDialog({ sessionId, turnId, running = false, neighbors = nul
|
|
|
56
61
|
try {
|
|
57
62
|
await action();
|
|
58
63
|
} catch (err) {
|
|
59
|
-
setError(
|
|
64
|
+
setError({
|
|
65
|
+
message: labels.turnActionFailed,
|
|
66
|
+
detail: errorMessage(err)
|
|
67
|
+
});
|
|
60
68
|
} finally {
|
|
61
69
|
setBusy(null);
|
|
62
70
|
}
|
|
@@ -68,7 +76,10 @@ function TurnDetailsDialog({ sessionId, turnId, running = false, neighbors = nul
|
|
|
68
76
|
await navigator.clipboard.writeText(turnAsText(turn));
|
|
69
77
|
setCopied(true);
|
|
70
78
|
} catch (err) {
|
|
71
|
-
setError(
|
|
79
|
+
setError({
|
|
80
|
+
message: labels.turnCopyFailed,
|
|
81
|
+
detail: errorMessage(err)
|
|
82
|
+
});
|
|
72
83
|
} finally {
|
|
73
84
|
setBusy(null);
|
|
74
85
|
}
|
|
@@ -173,7 +184,10 @@ function TurnDetailsDialog({ sessionId, turnId, running = false, neighbors = nul
|
|
|
173
184
|
children: /* @__PURE__ */ jsxs("div", {
|
|
174
185
|
className: "flex flex-col gap-4",
|
|
175
186
|
children: [
|
|
176
|
-
error && /* @__PURE__ */ jsx(ErrorNote, {
|
|
187
|
+
error && /* @__PURE__ */ jsx(ErrorNote, {
|
|
188
|
+
detail: error.detail,
|
|
189
|
+
children: error.message
|
|
190
|
+
}),
|
|
177
191
|
/* @__PURE__ */ jsx(Tray, {
|
|
178
192
|
radius: "lg",
|
|
179
193
|
className: `grid ${GRID_COLS[actions.length] ?? "grid-cols-4"} gap-1.5 p-1.5 text-xs`,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BTN_LG_SECONDARY, BTN_SECONDARY } from "../components/button.js";
|
|
2
|
+
import { Notice } from "../components/Notice.js";
|
|
2
3
|
import { MetaChip } from "../components/Form.js";
|
|
3
4
|
import { useSessionLabels } from "./useSessionLabels.js";
|
|
4
5
|
import { useOptionalConfirm } from "../app/useConfirm.js";
|
|
@@ -245,11 +246,16 @@ function ResetsRow({ snapshot, resets, account, onRedeem }) {
|
|
|
245
246
|
}, credit.id);
|
|
246
247
|
})
|
|
247
248
|
}),
|
|
248
|
-
outcome && /* @__PURE__ */ jsx(
|
|
249
|
+
outcome && (outcome.code === "failed" ? /* @__PURE__ */ jsx(Notice, {
|
|
250
|
+
tone: "warning",
|
|
251
|
+
compact: true,
|
|
252
|
+
...outcome.error ? { detail: outcome.error } : {},
|
|
253
|
+
children: labels.usageResetOutcome(outcome.code)
|
|
254
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
249
255
|
role: "status",
|
|
250
|
-
className:
|
|
251
|
-
children: labels.usageResetOutcome(outcome.code
|
|
252
|
-
})
|
|
256
|
+
className: "text-zg-label text-[var(--zg-text-muted)]",
|
|
257
|
+
children: labels.usageResetOutcome(outcome.code)
|
|
258
|
+
}))
|
|
253
259
|
] });
|
|
254
260
|
}
|
|
255
261
|
/** One window: its name, the bar, then how much is used and when it resets. */
|
|
@@ -16,6 +16,8 @@ interface QueuedMessage {
|
|
|
16
16
|
sessionId: string;
|
|
17
17
|
/** What rides with the text, without the bytes (`queue.attachments` fetches them). */
|
|
18
18
|
attachments?: readonly QueuedAttachment[];
|
|
19
|
+
/** The sender's id for the message, when it gave one: the host's echo of it carries it (a window binds its row by it). */
|
|
20
|
+
clientMessageId?: string;
|
|
19
21
|
}
|
|
20
22
|
/** How the backend delivered a message added to the queue. */
|
|
21
23
|
type QueueAddDelivery = 'queued' | 'sent' | 'steer';
|
|
@@ -29,6 +29,8 @@ declare const DEFAULT_SESSION_LABELS: {
|
|
|
29
29
|
remindersCount: (n: number) => string;
|
|
30
30
|
remindersFinished: string;
|
|
31
31
|
reminderNew: string;
|
|
32
|
+
reminderCreateFailed: string;
|
|
33
|
+
remindersActionFailed: string;
|
|
32
34
|
reminderWhenLabel: string;
|
|
33
35
|
reminderWhenPlaceholder: string;
|
|
34
36
|
reminderWhenPicks: readonly string[];
|
|
@@ -64,6 +66,8 @@ declare const DEFAULT_SESSION_LABELS: {
|
|
|
64
66
|
reminderHistoryHide: (label: string) => string;
|
|
65
67
|
reminderHistoryLabel: (label: string) => string;
|
|
66
68
|
reminderNoFires: string;
|
|
69
|
+
reminderHistoryFailed: string;
|
|
70
|
+
reminderFireFailed: string;
|
|
67
71
|
reminderFireOutcome: (outcome: import("zidane/chat").ScheduleFireOutcome) => string;
|
|
68
72
|
reminderFireLate: string;
|
|
69
73
|
shellClose: string;
|
|
@@ -81,6 +85,9 @@ declare const DEFAULT_SESSION_LABELS: {
|
|
|
81
85
|
artifactOpen: (path: string) => string;
|
|
82
86
|
artifactOnRemote: (machine: string) => string;
|
|
83
87
|
artifactPathUnavailable: string;
|
|
88
|
+
artifactsLoadFailed: string;
|
|
89
|
+
artifactRemoveFailed: string;
|
|
90
|
+
artifactOpenFailed: string;
|
|
84
91
|
artifactShowDetails: string;
|
|
85
92
|
artifactHideDetails: string;
|
|
86
93
|
diffFiles: (files: number) => string;
|
|
@@ -102,6 +109,9 @@ declare const DEFAULT_SESSION_LABELS: {
|
|
|
102
109
|
secretReplacesSaved: (name: string) => string;
|
|
103
110
|
secretSave: string;
|
|
104
111
|
secretCancel: string;
|
|
112
|
+
secretsLoadFailed: string;
|
|
113
|
+
secretRevokeFailed: string;
|
|
114
|
+
secretSaveFailed: string;
|
|
105
115
|
queueEmpty: string;
|
|
106
116
|
queueEmptyHint: string;
|
|
107
117
|
queueCount: (count: number) => string;
|
|
@@ -131,6 +141,7 @@ declare const DEFAULT_SESSION_LABELS: {
|
|
|
131
141
|
runningWorkCancelAll: string;
|
|
132
142
|
runningWorkCancel: string;
|
|
133
143
|
runningWorkCancelling: string;
|
|
144
|
+
runningWorkCancelFailed: string;
|
|
134
145
|
runningWorkEmpty: string;
|
|
135
146
|
runningWorkKind: Record<RunningWorkItem["kind"], string>;
|
|
136
147
|
runningWorkShowTerminal: string;
|
|
@@ -142,7 +153,9 @@ declare const DEFAULT_SESSION_LABELS: {
|
|
|
142
153
|
turnCopy: string;
|
|
143
154
|
turnCopied: string;
|
|
144
155
|
turnCopyHint: string;
|
|
145
|
-
turnCopyFailed:
|
|
156
|
+
turnCopyFailed: string;
|
|
157
|
+
turnLoadFailed: string;
|
|
158
|
+
turnActionFailed: string;
|
|
146
159
|
turnFork: string;
|
|
147
160
|
turnForkHint: string;
|
|
148
161
|
turnEdit: string;
|
|
@@ -190,6 +203,7 @@ declare const DEFAULT_SESSION_LABELS: {
|
|
|
190
203
|
projectHomeHide: string;
|
|
191
204
|
projectHomeRefresh: string;
|
|
192
205
|
projectHomeDismiss: string;
|
|
206
|
+
projectHomeStartFailed: string;
|
|
193
207
|
projectHomeCustomize: string;
|
|
194
208
|
projectHomeSwitch: string;
|
|
195
209
|
projectHomeDone: string;
|
|
@@ -223,6 +237,8 @@ declare const DEFAULT_SESSION_LABELS: {
|
|
|
223
237
|
detailsGenerateHint: string;
|
|
224
238
|
detailsDelete: string;
|
|
225
239
|
detailsDeleting: string;
|
|
240
|
+
detailsActionFailed: string;
|
|
241
|
+
detailsDeleteFailed: string;
|
|
226
242
|
detailsStatus: string;
|
|
227
243
|
cacheScopeLast: (shown: number, total: number) => string;
|
|
228
244
|
cacheScopeAll: (total: number) => string;
|
|
@@ -301,6 +317,7 @@ declare const DEFAULT_SESSION_LABELS: {
|
|
|
301
317
|
stepAgentNote: (note: string) => string;
|
|
302
318
|
planStopped: (step: number | null, reason: PlanStopReason | undefined) => string;
|
|
303
319
|
planMaybeInterrupted: string;
|
|
320
|
+
planEditFailed: string;
|
|
304
321
|
stepCancelledByYou: string;
|
|
305
322
|
stepDroppedByAgent: string;
|
|
306
323
|
stepAdded: string;
|
|
@@ -327,6 +344,7 @@ declare const DEFAULT_SESSION_LABELS: {
|
|
|
327
344
|
sideComposerLabel: string;
|
|
328
345
|
sideResetDescription: string;
|
|
329
346
|
sideResetFailed: (reason: string) => string;
|
|
347
|
+
sideRequestFailed: string;
|
|
330
348
|
sideRefusal: (reason: "no-conversation" | "unavailable" | "no-panel") => "Send a message first. A side chat follows a conversation." | "Side chats work only on this computer's conversations" | "This window has no side panel for side chats";
|
|
331
349
|
};
|
|
332
350
|
/** The shape of the session label dictionary. Some values are functions that build a string. */
|
|
@@ -35,6 +35,9 @@ const SESSION_SURFACE_LABELS = {
|
|
|
35
35
|
artifactOpen: (path) => `Open ${path}`,
|
|
36
36
|
artifactOnRemote: (machine) => `On ${machine}, not this computer.`,
|
|
37
37
|
artifactPathUnavailable: "Path unavailable.",
|
|
38
|
+
artifactsLoadFailed: "Couldn't load this session's artifacts.",
|
|
39
|
+
artifactRemoveFailed: "Couldn't remove the artifact.",
|
|
40
|
+
artifactOpenFailed: "Couldn't open it.",
|
|
38
41
|
artifactShowDetails: "Show details",
|
|
39
42
|
artifactHideDetails: "Hide details",
|
|
40
43
|
diffFiles: (files) => files === 1 ? "1 file" : `${files} files`,
|
|
@@ -56,6 +59,9 @@ const SESSION_SURFACE_LABELS = {
|
|
|
56
59
|
secretReplacesSaved: (name) => `Replaces the saved ${name}.`,
|
|
57
60
|
secretSave: "Save securely",
|
|
58
61
|
secretCancel: "Cancel",
|
|
62
|
+
secretsLoadFailed: "Couldn't load the secrets.",
|
|
63
|
+
secretRevokeFailed: "Couldn't revoke the secret.",
|
|
64
|
+
secretSaveFailed: "Couldn't save the secret.",
|
|
59
65
|
queueEmpty: "Nothing queued",
|
|
60
66
|
queueEmptyHint: "A message you send while the agent works waits here, then goes out when the run ends.",
|
|
61
67
|
queueCount: (count) => `${count} queued`,
|
|
@@ -82,6 +88,7 @@ const SESSION_SURFACE_LABELS = {
|
|
|
82
88
|
runningWorkCancelAll: "Cancel all",
|
|
83
89
|
runningWorkCancel: "Cancel",
|
|
84
90
|
runningWorkCancelling: "Cancelling…",
|
|
91
|
+
runningWorkCancelFailed: "Couldn't cancel it.",
|
|
85
92
|
runningWorkEmpty: "Nothing is running",
|
|
86
93
|
runningWorkKind: {
|
|
87
94
|
tool: "Tool call",
|
|
@@ -96,7 +103,9 @@ const SESSION_SURFACE_LABELS = {
|
|
|
96
103
|
turnCopy: "Copy",
|
|
97
104
|
turnCopied: "Copied",
|
|
98
105
|
turnCopyHint: "To clipboard",
|
|
99
|
-
turnCopyFailed:
|
|
106
|
+
turnCopyFailed: "Couldn't copy the turn.",
|
|
107
|
+
turnLoadFailed: "Couldn't load this turn.",
|
|
108
|
+
turnActionFailed: "Couldn't finish that.",
|
|
100
109
|
turnFork: "Fork",
|
|
101
110
|
turnForkHint: "New session from here",
|
|
102
111
|
turnEdit: "Edit",
|
|
@@ -154,6 +163,7 @@ const SESSION_SURFACE_LABELS = {
|
|
|
154
163
|
projectHomeHide: "Hide block",
|
|
155
164
|
projectHomeRefresh: "Refresh",
|
|
156
165
|
projectHomeDismiss: "Dismiss",
|
|
166
|
+
projectHomeStartFailed: "Couldn't start the session.",
|
|
157
167
|
projectHomeCustomize: "Customize",
|
|
158
168
|
projectHomeSwitch: "Switch project",
|
|
159
169
|
projectHomeDone: "Done",
|
|
@@ -187,6 +197,8 @@ const SESSION_SURFACE_LABELS = {
|
|
|
187
197
|
detailsGenerateHint: "Generate a title from the conversation",
|
|
188
198
|
detailsDelete: "Delete session",
|
|
189
199
|
detailsDeleting: "Deleting…",
|
|
200
|
+
detailsActionFailed: "Couldn't finish that.",
|
|
201
|
+
detailsDeleteFailed: "Couldn't delete the session.",
|
|
190
202
|
detailsStatus: "Status",
|
|
191
203
|
cacheScopeLast: (shown, total) => `last ${shown} of ${total} requests`,
|
|
192
204
|
cacheScopeAll: (total) => `${total} request${total === 1 ? "" : "s"}`,
|
|
@@ -309,6 +321,7 @@ const DEFAULT_SESSION_LABELS = {
|
|
|
309
321
|
stepAgentNote: (note) => `Agent: ${note}`,
|
|
310
322
|
planStopped: (step, reason) => `Stopped${step ? ` at step ${step}` : ""}: ${reason ? STOP_REASON[reason] : "stopped"}.`,
|
|
311
323
|
planMaybeInterrupted: "May have been interrupted: no run is applying it now.",
|
|
324
|
+
planEditFailed: "Couldn't change the plan.",
|
|
312
325
|
stepCancelledByYou: "cancelled by you",
|
|
313
326
|
stepDroppedByAgent: "dropped by the agent",
|
|
314
327
|
stepAdded: "added",
|
|
@@ -335,6 +348,7 @@ const DEFAULT_SESSION_LABELS = {
|
|
|
335
348
|
sideComposerLabel: "Side chat message",
|
|
336
349
|
sideResetDescription: "Clear this side chat and start over",
|
|
337
350
|
sideResetFailed: (reason) => `Couldn't reset this side chat: ${reason}`,
|
|
351
|
+
sideRequestFailed: "Couldn't send your question to the side chat.",
|
|
338
352
|
sideRefusal: (reason) => reason === "no-conversation" ? "Send a message first. A side chat follows a conversation." : reason === "unavailable" ? "Side chats work only on this computer's conversations" : "This window has no side panel for side chats",
|
|
339
353
|
...SESSION_SURFACE_LABELS,
|
|
340
354
|
...REMINDER_LABELS
|
|
@@ -12,7 +12,8 @@ function toQueuedMessages(sessionId, items) {
|
|
|
12
12
|
id: item.id,
|
|
13
13
|
text: item.text,
|
|
14
14
|
sessionId,
|
|
15
|
-
...item.attachments?.length ? { attachments: item.attachments } : {}
|
|
15
|
+
...item.attachments?.length ? { attachments: item.attachments } : {},
|
|
16
|
+
...item.clientMessageId !== void 0 ? { clientMessageId: item.clientMessageId } : {}
|
|
16
17
|
}));
|
|
17
18
|
}
|
|
18
19
|
function toSummaries(attachments) {
|
|
@@ -19,6 +19,8 @@ declare const REMINDER_LABELS: {
|
|
|
19
19
|
remindersCount: (n: number) => string;
|
|
20
20
|
remindersFinished: string;
|
|
21
21
|
reminderNew: string;
|
|
22
|
+
reminderCreateFailed: string;
|
|
23
|
+
remindersActionFailed: string;
|
|
22
24
|
reminderWhenLabel: string;
|
|
23
25
|
reminderWhenPlaceholder: string;
|
|
24
26
|
/** Time words the form offers as one-click picks. */
|
|
@@ -56,6 +58,8 @@ declare const REMINDER_LABELS: {
|
|
|
56
58
|
reminderHistoryHide: (label: string) => string;
|
|
57
59
|
reminderHistoryLabel: (label: string) => string;
|
|
58
60
|
reminderNoFires: string;
|
|
61
|
+
reminderHistoryFailed: string;
|
|
62
|
+
reminderFireFailed: string;
|
|
59
63
|
reminderFireOutcome: (outcome: ScheduleFireOutcome) => string;
|
|
60
64
|
reminderFireLate: string;
|
|
61
65
|
};
|