local-operator-ui 0.31.9 → 0.31.11
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/README.md +110 -126
- package/out/main/index.js +37 -0
- package/out/renderer/assets/{_basePickBy-CNsuU9EH.js → _basePickBy-DfG4wjig.js} +1 -1
- package/out/renderer/assets/{_baseUniq-R9vFEK7e.js → _baseUniq-BGWDx1XP.js} +1 -1
- package/out/renderer/assets/{agent-details-page-D8iuA6Mf.js → agent-details-page-DhkOKq6G.js} +1 -1
- package/out/renderer/assets/{agent-hub-page-CB5YKYzp.js → agent-hub-page-BRjvfsAy.js} +2 -2
- package/out/renderer/assets/{agents-page-CUe93Smi.js → agents-page-DgY_6v2S.js} +2 -2
- package/out/renderer/assets/{arc-DSic4uTL.js → arc-BbZdEs1w.js} +1 -1
- package/out/renderer/assets/{architectureDiagram-IEHRJDOE-CbcDCCJ0.js → architectureDiagram-IEHRJDOE-4lLfeFcj.js} +1 -1
- package/out/renderer/assets/{blockDiagram-JOT3LUYC-DMTh4eCI.js → blockDiagram-JOT3LUYC-CzCeK4l6.js} +1 -1
- package/out/renderer/assets/{browser-page-L7Lh8bt7.js → browser-page-BVkXt8Il.js} +1 -1
- package/out/renderer/assets/{browser-webauthn-prompt-Cs4c8xCQ.js → browser-webauthn-prompt-Bynwfiuq.js} +1 -1
- package/out/renderer/assets/{c4Diagram-VJAJSXHY-BWiV_i02.js → c4Diagram-VJAJSXHY-DV6jCVYX.js} +1 -1
- package/out/renderer/assets/channel-DZvj1zQv.js +1 -0
- package/out/renderer/assets/{chunk-4BMEZGHF-B8lewtGa.js → chunk-4BMEZGHF-oN7e33U6.js} +1 -1
- package/out/renderer/assets/{chunk-A2AXSNBT-F46r-7br.js → chunk-A2AXSNBT-BY7xgPLa.js} +1 -1
- package/out/renderer/assets/{chunk-AEK57VVT-SrMlCtEQ.js → chunk-AEK57VVT-CdvId8Is.js} +1 -1
- package/out/renderer/assets/{chunk-D6G4REZN-CCbMpxSf.js → chunk-D6G4REZN-BnHX7WDi.js} +1 -1
- package/out/renderer/assets/{chunk-RZ5BOZE2-DKlwp8CO.js → chunk-RZ5BOZE2-D-FjPJs7.js} +1 -1
- package/out/renderer/assets/{chunk-XZIHB7SX-BoJu4QJG.js → chunk-XZIHB7SX-DE_XcGmS.js} +1 -1
- package/out/renderer/assets/{classDiagram-GIVACNV2-GZyJw3oU.js → classDiagram-GIVACNV2-CxG-TQSG.js} +1 -1
- package/out/renderer/assets/{classDiagram-v2-COTLJTTW-GZyJw3oU.js → classDiagram-v2-COTLJTTW-CxG-TQSG.js} +1 -1
- package/out/renderer/assets/clone-CzEyof2a.js +1 -0
- package/out/renderer/assets/{dagre-OKDRZEBW-BJp4N4By.js → dagre-OKDRZEBW-DSno4uDg.js} +1 -1
- package/out/renderer/assets/{diagram-SSKATNLV-BlYqqDA6.js → diagram-SSKATNLV-Cta_mlzh.js} +1 -1
- package/out/renderer/assets/{diagram-VNBRO52H-Cp0Xmogd.js → diagram-VNBRO52H-DXZvuw9Y.js} +1 -1
- package/out/renderer/assets/{erDiagram-Q7BY3M3F-Dhm6_w1T.js → erDiagram-Q7BY3M3F-DX_NZcvT.js} +1 -1
- package/out/renderer/assets/{flowDiagram-4HSFHLVR-5OK95wPn.js → flowDiagram-4HSFHLVR-CkKn14vu.js} +1 -1
- package/out/renderer/assets/{ganttDiagram-APWFNJXF-Dmx6vUsM.js → ganttDiagram-APWFNJXF-pfUZL8XQ.js} +1 -1
- package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-DxVQKWaH.js → gitGraphDiagram-7IBYFJ6S-DyxkVnKD.js} +1 -1
- package/out/renderer/assets/{graph-CywFY9dT.js → graph-CS6U_APD.js} +1 -1
- package/out/renderer/assets/{index-BUVSTkp7.js → index-0hsmy_dv.js} +1 -1
- package/out/renderer/assets/{index-o5fTjU-x.js → index-BoBj0LUC.js} +391 -386
- package/out/renderer/assets/{index-CVFUpVIZ.js → index-W19BqfEn.js} +1 -1
- package/out/renderer/assets/{infoDiagram-PH2N3AL5-CW74cr0A.js → infoDiagram-PH2N3AL5-DstV9F9y.js} +1 -1
- package/out/renderer/assets/{journeyDiagram-U35MCT3I-BrUkM1Q6.js → journeyDiagram-U35MCT3I-DMxIQQHc.js} +1 -1
- package/out/renderer/assets/{kanban-definition-NDS4AKOZ-CzoHucwu.js → kanban-definition-NDS4AKOZ-DwCNWIKf.js} +1 -1
- package/out/renderer/assets/{layout-1iBNjPR-.js → layout-rRE-L5H5.js} +1 -1
- package/out/renderer/assets/{legacy-agents-page-DvjJi4mb.js → legacy-agents-page-D3XdLDk2.js} +1 -1
- package/out/renderer/assets/{mermaid.core-TYNukHu8.js → mermaid.core-CHO9EN5d.js} +5 -5
- package/out/renderer/assets/{mesh-page-DnhFfPuL.js → mesh-page-Bo6Mw1uW.js} +1 -1
- package/out/renderer/assets/{mindmap-definition-ALO5MXBD-Cxxwif7n.js → mindmap-definition-ALO5MXBD-C0TbE2NA.js} +1 -1
- package/out/renderer/assets/{org-surface-gate-Bp62UdBO.js → org-surface-gate-CyrcQL7E.js} +1 -1
- package/out/renderer/assets/{pieDiagram-IB7DONF6-J3DecPBe.js → pieDiagram-IB7DONF6-psQNoVHK.js} +1 -1
- package/out/renderer/assets/{projects-page-CE8UprKZ.js → projects-page-DLrWcA92.js} +1 -1
- package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-DHbxJrmx.js → quadrantDiagram-7GDLP6J5-DAX1qBwZ.js} +1 -1
- package/out/renderer/assets/{radar-MK3ICKWK-CzKpK2Uf.js → radar-MK3ICKWK-BRutmqUf.js} +1 -1
- package/out/renderer/assets/{radient-auth-buttons-rbxep041.js → radient-auth-buttons-fe1Bn89n.js} +1 -1
- package/out/renderer/assets/{requirementDiagram-KVF5MWMF-Cmmt4FpZ.js → requirementDiagram-KVF5MWMF-PTinIVCd.js} +1 -1
- package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-C-oRYo6z.js → sankeyDiagram-QLVOVGJD-DuPXhi_4.js} +1 -1
- package/out/renderer/assets/{schedules-page-D00ItdRp.js → schedules-page-Bxn30SeI.js} +1 -1
- package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-tCUYXwpx.js → sequenceDiagram-X6HHIX6F-CSbiipy3.js} +1 -1
- package/out/renderer/assets/{settings-page-gnGlblv2.js → settings-page-DeQ29q0v.js} +1 -1
- package/out/renderer/assets/{stateDiagram-DGXRK772-30AtknRy.js → stateDiagram-DGXRK772-B0olW3ZC.js} +1 -1
- package/out/renderer/assets/{stateDiagram-v2-YXO3MK2T-moLhl9vr.js → stateDiagram-v2-YXO3MK2T-DesKgCmL.js} +1 -1
- package/out/renderer/assets/{timeline-definition-BDJGKUSR-BqDMf6xR.js → timeline-definition-BDJGKUSR-DrFO8Scg.js} +1 -1
- package/out/renderer/assets/{use-download-agent-mutation-CwuzIO2p.js → use-download-agent-mutation-DB-9HDGk.js} +1 -1
- package/out/renderer/assets/{use-memberships-query-lFgGMHp8.js → use-memberships-query-DJonF1zy.js} +1 -1
- package/out/renderer/assets/{xychartDiagram-VJFVF3MP-BkulNEJg.js → xychartDiagram-VJFVF3MP-ResXi4IE.js} +1 -1
- package/out/renderer/index.html +1 -1
- package/package.json +2 -2
- package/out/renderer/assets/channel-BEA1ekiv.js +0 -1
- package/out/renderer/assets/clone-C-ztVKGG.js +0 -1
package/README.md
CHANGED
|
@@ -5,70 +5,58 @@
|
|
|
5
5
|
src="./resources/local-operator-icon-2-light-clear.png">
|
|
6
6
|
</picture>
|
|
7
7
|
|
|
8
|
-
<h1 align="center">Local Operator
|
|
9
|
-
<div align="center">
|
|
10
|
-
<h2>🤖 Personal AI Assistants that Turn Ideas into Action</h2>
|
|
11
|
-
<p><i>Real-time code execution on your device through natural conversation</i></p>
|
|
12
|
-
</div>
|
|
8
|
+
<h1 align="center">Local Operator</h1>
|
|
13
9
|
|
|
14
|
-
<
|
|
10
|
+
<p align="center"><i>AI agent assistants on your device — they plan, write, and run Python, and every step stays in the conversation.</i></p>
|
|
15
11
|
|
|
16
12
|
<p align="center">
|
|
17
|
-
<
|
|
18
|
-
|
|
13
|
+
<a href="https://github.com/damianvtran/local-operator-ui/releases/latest"><img alt="Latest release" src="https://img.shields.io/github/v/release/damianvtran/local-operator-ui"></a>
|
|
14
|
+
<a href="https://github.com/damianvtran/local-operator-ui/actions/workflows/ci.yml"><img alt="CI status" src="https://img.shields.io/github/actions/workflow/status/damianvtran/local-operator-ui/ci.yml?branch=main"></a>
|
|
15
|
+
<a href="https://www.npmjs.com/package/local-operator-ui"><img alt="npm version" src="https://img.shields.io/npm/v/local-operator-ui"></a>
|
|
16
|
+
<a href="./LICENSE"><img alt="License: MIT" src="https://img.shields.io/github/license/damianvtran/local-operator-ui"></a>
|
|
17
|
+
<img alt="Platforms: macOS, Windows, and Linux" src="https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-lightgrey">
|
|
18
|
+
</p>
|
|
19
19
|
|
|
20
20
|
<br />
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
<p align="center">
|
|
23
|
+
<picture>
|
|
24
|
+
<source media="(prefers-color-scheme: dark)" srcset="./resources/readme/app-shell-chat-dark.webp">
|
|
25
|
+
<source media="(prefers-color-scheme: light)" srcset="./resources/readme/app-shell-chat-light.webp">
|
|
26
|
+
<img alt="The app's chat view: an agent's reply, the run details panel with two subagents running, and their shared to-do list." src="./resources/readme/app-shell-chat-light.webp">
|
|
27
|
+
</picture>
|
|
28
|
+
<br />
|
|
29
|
+
<sub><code>the app at work</code> — a conversation with an agent, two subagents running beside it, and the to-do list they share.</sub>
|
|
30
|
+
</p>
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
<br />
|
|
31
33
|
|
|
32
|
-
|
|
34
|
+
**Local Operator** runs AI agent assistants on your own machine, from a desktop chat app. You give an agent a goal; it plans the work, writes and runs Python on your device, reads and writes files, and asks before it takes anything risky. The whole run — messages, tool calls, commands, and results — stays in the conversation in front of you.
|
|
33
35
|
|
|
34
|
-
|
|
36
|
+
For the agent environment CLI and server backend, see the [Local Operator repository](https://github.com/damianvtran/local-operator).
|
|
35
37
|
|
|
36
|
-
<
|
|
37
|
-
<a href="https://github.com/damianvtran/local-operator">Agent
|
|
38
|
-
<a href="https://local-operator.com">
|
|
38
|
+
<p align="center">
|
|
39
|
+
<a href="https://github.com/damianvtran/local-operator">Agent backend</a> •
|
|
40
|
+
<a href="https://local-operator.com">Website</a> •
|
|
39
41
|
<a href="https://github.com/damianvtran/local-operator/tree/main/examples/notebooks">Examples</a>
|
|
40
|
-
</
|
|
42
|
+
</p>
|
|
41
43
|
|
|
42
|
-
##
|
|
43
|
-
|
|
44
|
-
The Local Operator UI is a user interface for managing and interacting with the Local Operator agent environment. It is built using Electron, React, and TypeScript, leveraging modern web technologies for a rich and responsive user experience.
|
|
45
|
-
|
|
46
|
-
👉 For the agent environment CLI and Server backend, see the [Local Operator GitHub repository](https://github.com/damianvtran/local-operator).
|
|
47
|
-
|
|
48
|
-
## 🚀 Getting Started
|
|
44
|
+
## Getting started
|
|
49
45
|
|
|
50
46
|
### Prerequisites
|
|
51
47
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
- **Node.js**: Version 22.13.1 or higher. It's recommended to use [nvm](https://github.com/nvm-sh/nvm) for managing Node.js versions.
|
|
55
|
-
|
|
56
|
-
The Local Operator backend is now bundled with the application and will be installed automatically when you first run the application. If you prefer to use an existing Local Operator backend installation, the application will detect it and use it instead.
|
|
57
|
-
|
|
58
|
-
### NPM Installation
|
|
48
|
+
- **Node.js** 22.13.1 or newer, for the npm install paths below. [nvm](https://github.com/nvm-sh/nvm) is a good way to manage Node versions. The desktop installers need no toolchain.
|
|
59
49
|
|
|
60
|
-
|
|
50
|
+
### Run with npx
|
|
61
51
|
|
|
62
52
|
```bash
|
|
63
|
-
#
|
|
53
|
+
# Download and run in one command
|
|
64
54
|
npx local-operator-ui
|
|
65
55
|
```
|
|
66
56
|
|
|
67
|
-
This
|
|
57
|
+
This runs the latest version and launches the app.
|
|
68
58
|
|
|
69
|
-
###
|
|
70
|
-
|
|
71
|
-
Alternatively, without npx, you can install the package globally with standard npm:
|
|
59
|
+
### Install with npm
|
|
72
60
|
|
|
73
61
|
```bash
|
|
74
62
|
# Install globally
|
|
@@ -78,52 +66,67 @@ npm install -g local-operator-ui
|
|
|
78
66
|
local-operator-ui
|
|
79
67
|
```
|
|
80
68
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
### Desktop Applications
|
|
69
|
+
### Desktop applications
|
|
84
70
|
|
|
85
|
-
|
|
71
|
+
Prebuilt apps are on the [download page](https://local-operator.com/download) and the [releases page](https://github.com/damianvtran/local-operator-ui/releases):
|
|
86
72
|
|
|
87
|
-
- **macOS**: Download the `.dmg`
|
|
73
|
+
- **macOS**: Download the `.dmg` (or `.zip`) and open it.
|
|
88
74
|
- **Windows**: Download the `.exe` installer and follow the installation prompts.
|
|
89
|
-
- **Linux**: Download the
|
|
75
|
+
- **Linux**: Download the `.deb`, `.rpm`, or `.AppImage` for your distribution.
|
|
90
76
|
|
|
91
|
-
|
|
77
|
+
The Local Operator backend is bundled with the application and is installed automatically on first run. If you already have a Local Operator backend installed, the application detects it and uses it instead; by default it connects to the backend API at `http://localhost:1111`.
|
|
92
78
|
|
|
93
|
-
|
|
79
|
+
## What it looks like
|
|
94
80
|
|
|
95
|
-
|
|
81
|
+
### Chat and agents
|
|
96
82
|
|
|
97
|
-
|
|
83
|
+
| Light | Dark |
|
|
84
|
+
| :---: | :---: |
|
|
85
|
+
| <img src="./resources/readme/chat-trace-light.webp" alt="Light theme: a conversation showing tool rows, a blocked risky action, and a question the agent asked." width="420"> | <img src="./resources/readme/chat-trace-dark.webp" alt="Dark theme: the same conversation." width="420"> |
|
|
98
86
|
|
|
99
|
-
|
|
100
|
-
- Makes the application more self-contained
|
|
101
|
-
- Works offline
|
|
102
|
-
- Provides a more reliable user experience
|
|
103
|
-
- Supports installation of Python packages via pip
|
|
87
|
+
<sub><code>chat</code> — a working agent's tool rows, a blocked risky action, and the question it asked before continuing.</sub>
|
|
104
88
|
|
|
105
|
-
|
|
89
|
+
### Agent hub
|
|
106
90
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
```
|
|
91
|
+
| Light | Dark |
|
|
92
|
+
| :---: | :---: |
|
|
93
|
+
| <img src="./resources/readme/agent-hub-light.webp" alt="Light theme: the agent hub with categories and a grid of community agents." width="420"> | <img src="./resources/readme/agent-hub-dark.webp" alt="Dark theme: the agent hub grid." width="420"> |
|
|
111
94
|
|
|
112
|
-
|
|
95
|
+
<sub><code>agent hub</code> — community agents you can browse and download, by category.</sub>
|
|
113
96
|
|
|
114
|
-
|
|
97
|
+
### Schedules
|
|
115
98
|
|
|
116
|
-
|
|
99
|
+
| Light | Dark |
|
|
100
|
+
| :---: | :---: |
|
|
101
|
+
| <img src="./resources/readme/schedules-light.webp" alt="Light theme: the schedules page, listing scheduled wakes with their cadence and run history." width="420"> | <img src="./resources/readme/schedules-dark.webp" alt="Dark theme: the schedules page." width="420"> |
|
|
117
102
|
|
|
118
|
-
|
|
103
|
+
<sub><code>schedules</code> — conversations that wake on a timer, with what ran and when they run next.</sub>
|
|
119
104
|
|
|
120
|
-
|
|
121
|
-
- **Windows**: Applications are signed with a trusted code signing certificate
|
|
122
|
-
- **Linux**: While code signing is less common on Linux, packages are built with integrity checks
|
|
105
|
+
### Projects
|
|
123
106
|
|
|
124
|
-
|
|
107
|
+
| Light | Dark |
|
|
108
|
+
| :---: | :---: |
|
|
109
|
+
| <img src="./resources/readme/projects-board-light.webp" alt="Light theme: the projects board with active, paused, and done columns." width="420"> | <img src="./resources/readme/projects-board-dark.webp" alt="Dark theme: the projects board." width="420"> |
|
|
110
|
+
|
|
111
|
+
<sub><code>projects</code> — workstreams you and your agents track across sessions, as a board or a timeline.</sub>
|
|
112
|
+
|
|
113
|
+
### Appearance
|
|
114
|
+
|
|
115
|
+
| Light | Dark |
|
|
116
|
+
| :---: | :---: |
|
|
117
|
+
| <img src="./resources/readme/appearance-light.webp" alt="Light theme: the appearance picker showing the Local Operator themes as swatches." width="420"> | <img src="./resources/readme/appearance-dark.webp" alt="Dark theme: the appearance picker." width="420"> |
|
|
118
|
+
|
|
119
|
+
<sub><code>appearance</code> — 59 colour themes ship with the app; Local Operator Dark is the default.</sub>
|
|
125
120
|
|
|
126
|
-
##
|
|
121
|
+
## Features
|
|
122
|
+
|
|
123
|
+
- **Chat with agents** — real-time conversation with markdown rendering for code blocks and formatted text, syntax highlighting, and per-conversation history.
|
|
124
|
+
- **Agent management** — create, update, and delete agents, and configure their settings: model and description (general), temperature and top_p (chat), and security prompt and execution permissions (security).
|
|
125
|
+
- **Settings** — system prompt configuration, API credentials management, and application configuration in one place.
|
|
126
|
+
- **Local Operator API integration** — the app talks to the Local Operator backend API and shows real-time status updates for long-running operations.
|
|
127
|
+
- **Bundled backend** — the Local Operator backend is installed automatically on first run on every platform; an existing backend installation is detected and used instead.
|
|
128
|
+
|
|
129
|
+
## Project structure
|
|
127
130
|
|
|
128
131
|
The codebase is organized for modularity and code reuse:
|
|
129
132
|
|
|
@@ -132,59 +135,55 @@ The codebase is organized for modularity and code reuse:
|
|
|
132
135
|
- `src/renderer/src/app.tsx`, `main.tsx`, etc.: Entry points for the Electron renderer process.
|
|
133
136
|
- `build/`, `resources/`, `scripts/`: Build assets, static resources, and build scripts.
|
|
134
137
|
|
|
135
|
-
**Import
|
|
138
|
+
**Import conventions:**
|
|
136
139
|
|
|
137
140
|
- Use `@shared/` for shared modules (e.g., `import { useAgents } from "@shared/hooks/use-agents"`).
|
|
138
141
|
- Use `@features/` for feature-specific modules.
|
|
139
|
-
- The
|
|
142
|
+
- The build also resolves the older aliases (`@renderer`, `@components`, `@hooks`, etc.) for the files that still import them.
|
|
140
143
|
|
|
141
144
|
For more details on building or contributing, see the [Contributing Guide](./CONTRIBUTING.md) and [BUILD.md](./docs/BUILD.md).
|
|
142
145
|
|
|
143
|
-
##
|
|
146
|
+
## Building from source
|
|
147
|
+
|
|
148
|
+
If you want to build the application from source, see the [BUILD.md](./docs/BUILD.md) file for detailed instructions.
|
|
144
149
|
|
|
145
|
-
|
|
150
|
+
### Python bundling
|
|
146
151
|
|
|
147
|
-
|
|
152
|
+
For macOS builds, the app bundles a standalone Python directly instead of requiring a Homebrew installation. This approach:
|
|
148
153
|
|
|
149
|
-
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
-
|
|
154
|
+
- Needs no admin privileges during installation
|
|
155
|
+
- Keeps the application self-contained
|
|
156
|
+
- Works offline
|
|
157
|
+
- Supports installing Python packages with pip
|
|
153
158
|
|
|
154
|
-
|
|
159
|
+
To set up the standalone Python for development:
|
|
155
160
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
- Security settings (security prompt, execution permissions)
|
|
161
|
+
```bash
|
|
162
|
+
# Run the setup script to download and configure standalone Python
|
|
163
|
+
pnpm setup-python-standalone
|
|
164
|
+
```
|
|
161
165
|
|
|
162
|
-
|
|
166
|
+
This uses [python-build-standalone](https://github.com/indygreg/python-build-standalone), the same approach used by Datasette Desktop and PyOxidizer.
|
|
163
167
|
|
|
164
|
-
|
|
165
|
-
- API credentials management
|
|
166
|
-
- Application configuration
|
|
168
|
+
For more details, see the [PYTHON_BUNDLING.md](./docs/PYTHON_BUNDLING.md) documentation.
|
|
167
169
|
|
|
168
|
-
###
|
|
170
|
+
### Code signing and notarization
|
|
169
171
|
|
|
170
|
-
|
|
171
|
-
- Real-time status updates for long-running operations
|
|
172
|
-
- Error handling and retry mechanisms
|
|
172
|
+
All desktop applications are code signed and notarized to ensure security and trust:
|
|
173
173
|
|
|
174
|
-
|
|
174
|
+
- **macOS**: Applications are signed with an Apple Developer ID and notarized with Apple's notarization service
|
|
175
|
+
- **Windows**: Applications are signed with a trusted code signing certificate
|
|
176
|
+
- **Linux**: While code signing is less common on Linux, packages are built with integrity checks
|
|
175
177
|
|
|
176
|
-
|
|
177
|
-
- Automatic installation of the backend when first running the application
|
|
178
|
-
- Automatic detection and use of existing backend installations
|
|
179
|
-
- Cross-platform support for Windows, macOS, and Linux
|
|
178
|
+
For detailed information about the code signing and notarization process, see the [CODE_SIGNING.md](./docs/CODE_SIGNING.md) document.
|
|
180
179
|
|
|
181
|
-
##
|
|
180
|
+
## Contributing
|
|
182
181
|
|
|
183
182
|
Contributions are welcome! Please see our [Contributing Guide](./CONTRIBUTING.md) for details on how to get started with development, code style guidelines, and our contribution process.
|
|
184
183
|
|
|
185
|
-
##
|
|
184
|
+
## Troubleshooting
|
|
186
185
|
|
|
187
|
-
### Common
|
|
186
|
+
### Common issues
|
|
188
187
|
|
|
189
188
|
#### Application fails to connect to the backend
|
|
190
189
|
|
|
@@ -197,7 +196,7 @@ Contributions are welcome! Please see our [Contributing Guide](./CONTRIBUTING.md
|
|
|
197
196
|
#### Backend installation fails
|
|
198
197
|
|
|
199
198
|
- Check the application logs for error messages
|
|
200
|
-
- For macOS, the application
|
|
199
|
+
- For macOS, the application uses a bundled Python framework instead of requiring Homebrew and pyenv
|
|
201
200
|
- If you encounter issues with the bundled Python, see the [PYTHON_BUNDLING.md](./docs/PYTHON_BUNDLING.md) documentation
|
|
202
201
|
- As a fallback, you can try installing the backend manually with `pip install local-operator` and then start it with `local-operator serve`
|
|
203
202
|
|
|
@@ -215,38 +214,23 @@ Contributions are welcome! Please see our [Contributing Guide](./CONTRIBUTING.md
|
|
|
215
214
|
|
|
216
215
|
#### The window came to the front on its own, or a run never appeared
|
|
217
216
|
|
|
218
|
-
Every time the app brings a window to the front it writes one line to its own
|
|
219
|
-
backend log (`~/Library/Application Support/Local Operator/logs/backend-service.log`
|
|
220
|
-
on macOS; the `LOCAL_OPERATOR_LOG_DIR` environment variable moves it):
|
|
217
|
+
Every time the app brings a window to the front it writes one line to its own backend log (`~/Library/Application Support/Local Operator/logs/backend-service.log` on macOS; the `LOCAL_OPERATOR_LOG_DIR` environment variable moves it):
|
|
221
218
|
|
|
222
219
|
```
|
|
223
220
|
[window-raise] trigger=second-instance mode=normal requested=focus pid=9182 cwd=/Users/you/project applied=restore+show+focus
|
|
224
221
|
```
|
|
225
222
|
|
|
226
|
-
`trigger` names what asked: `initial-present` (the app starting up),
|
|
227
|
-
|
|
228
|
-
`
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
at all — although a conversation that is WAITING for a window does: a `headless`
|
|
232
|
-
launch against an app with no window open writes `applied=parked`, `parked=<id>`
|
|
233
|
-
rather than a raise, and that conversation opens the next window you give the app.
|
|
234
|
-
In the line above, `mode` is the window mode the raise ran under and `applied` is
|
|
235
|
-
what it actually did.
|
|
236
|
-
|
|
237
|
-
A second launch only brings the window as far as IT asked: a `headless` run never
|
|
238
|
-
raises it (it can still load the conversation it names), an `inactive` one orders
|
|
239
|
-
the window without activating the app and without pulling it back out of the
|
|
240
|
-
Dock, and a launch that declares nothing — you double-clicking the app while it is
|
|
241
|
-
already running — still comes to the front.
|
|
242
|
-
|
|
243
|
-
### Getting Help
|
|
223
|
+
`trigger` names what asked: `initial-present` (the app starting up), `second-instance` (a second launch sharing this profile), `banner-click`, `viewer-focus` or `viewer-resume`. `pid` and `cwd`, when they are there, name the process that asked — that is the one to stop if something keeps doing it. A run that raises nothing writes nothing, so an app that never came forward has no line at all — although a conversation that is WAITING for a window does: a `headless` launch against an app with no window open writes `applied=parked`, `parked=<id>` rather than a raise, and that conversation opens the next window you give the app. In the line above, `mode` is the window mode the raise ran under and `applied` is what it actually did.
|
|
224
|
+
|
|
225
|
+
A second launch only brings the window as far as IT asked: a `headless` run never raises it (it can still load the conversation it names), an `inactive` one orders the window without activating the app and without pulling it back out of the Dock, and a launch that declares nothing — you double-clicking the app while it is already running — still comes to the front.
|
|
226
|
+
|
|
227
|
+
## Getting help
|
|
244
228
|
|
|
245
229
|
If you encounter issues not covered here, please:
|
|
246
230
|
|
|
247
231
|
1. Check the [GitHub Issues](https://github.com/damianvtran/local-operator-ui/issues) for similar problems
|
|
248
232
|
2. Open a new issue if your problem hasn't been reported
|
|
249
233
|
|
|
250
|
-
##
|
|
234
|
+
## License
|
|
251
235
|
|
|
252
|
-
This project is licensed under the MIT License
|
|
236
|
+
This project is licensed under the MIT License — see the [LICENSE](LICENSE) file for details. It is open source because AI tools should be accessible to everyone, and your contributions and feedback help make that real.
|
package/out/main/index.js
CHANGED
|
@@ -1466,6 +1466,30 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
|
|
|
1466
1466
|
op: zod.z.literal("projects.milestone.remove"),
|
|
1467
1467
|
key: projectKey,
|
|
1468
1468
|
name: zod.z.string().min(1).max(PROJECT_MILESTONE_NAME_MAX_CHARS)
|
|
1469
|
+
}).strict(),
|
|
1470
|
+
/*
|
|
1471
|
+
* AIDA'S CONTROL PLANE: one read and one control op on the same route
|
|
1472
|
+
* (`/v1/desktop/aida`), because the rail's row and the composer's `/aida`
|
|
1473
|
+
* need the SAME state and a second spelling of it would be a second answer
|
|
1474
|
+
* about her one long session (`design.md` § 4 freezes the route).
|
|
1475
|
+
*
|
|
1476
|
+
* The feature is gated by its OWN capability key (`features.aida`), never a
|
|
1477
|
+
* bump of `commands`: a renderer that does not read it keeps working against
|
|
1478
|
+
* this backend, and this renderer must not call the route while the key is
|
|
1479
|
+
* absent or 0 (§ 3.4's version skew).
|
|
1480
|
+
*
|
|
1481
|
+
* Deliberately NOT a `MESSAGE_OPS` member (see `desktopRequestByteBudget`):
|
|
1482
|
+
* an enum word and a receipt are not prose, so this costs the control budget.
|
|
1483
|
+
*/
|
|
1484
|
+
zod.z.object({ op: zod.z.literal("aida.status") }).strict(),
|
|
1485
|
+
zod.z.object({
|
|
1486
|
+
op: zod.z.literal("aida.control"),
|
|
1487
|
+
/*
|
|
1488
|
+
* The route's own op vocabulary, held to it here: a word the backend does
|
|
1489
|
+
* not serve must fail at this boundary rather than travel as a 422 the
|
|
1490
|
+
* user reads as a defect of their press.
|
|
1491
|
+
*/
|
|
1492
|
+
action: zod.z.enum(["open", "pause", "resume", "greet", "status"])
|
|
1469
1493
|
}).strict()
|
|
1470
1494
|
]);
|
|
1471
1495
|
const desktopRequestSchema = desktopRequestUnion.superRefine(
|
|
@@ -2526,6 +2550,19 @@ function desktopEndpoint(request) {
|
|
|
2526
2550
|
path: `/v1/desktop/projects/${encodeURIComponent(request.key)}/milestones/${encodeURIComponent(request.name)}`,
|
|
2527
2551
|
method: "DELETE"
|
|
2528
2552
|
};
|
|
2553
|
+
case "aida.status":
|
|
2554
|
+
return { path: "/v1/desktop/aida", method: "GET" };
|
|
2555
|
+
case "aida.control":
|
|
2556
|
+
return {
|
|
2557
|
+
path: "/v1/desktop/aida",
|
|
2558
|
+
method: "POST",
|
|
2559
|
+
/*
|
|
2560
|
+
* The route's body is `{"op": ...}` — its own word, not this envelope's
|
|
2561
|
+
* — so the ACTION travels under the route's field name and the two `op`s
|
|
2562
|
+
* cannot be read as one.
|
|
2563
|
+
*/
|
|
2564
|
+
body: { op: request.action }
|
|
2565
|
+
};
|
|
2529
2566
|
}
|
|
2530
2567
|
}
|
|
2531
2568
|
const MAX_PROBE_PATHS = 64;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as o,c as b,g as v,k as O,h as P,j as p,l as w,m as A,n as x,t as c,o as N}from"./_baseUniq-
|
|
1
|
+
import{e as o,c as b,g as v,k as O,h as P,j as p,l as w,m as A,n as x,t as c,o as N}from"./_baseUniq-BGWDx1XP.js";import{as as g,aa as y,at as E,au as F,av as M,aw as I,ax as _,ay as $,az as B,aA as T}from"./mermaid.core-CHO9EN5d.js";var S=/\s/;function z(n){for(var r=n.length;r--&&S.test(n.charAt(r)););return r}var G=/^\s+/;function H(n){return n&&n.slice(0,z(n)+1).replace(G,"")}var m=NaN,L=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,q=/^0o[0-7]+$/i,C=parseInt;function K(n){if(typeof n=="number")return n;if(o(n))return m;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=H(n);var t=R.test(n);return t||q.test(n)?C(n.slice(2),t?2:8):L.test(n)?m:+n}var W=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=K(n),n===W||n===-1/0){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var l=Object.prototype,J=l.hasOwnProperty,dn=y(function(n,r){n=Object(n);var t=-1,e=r.length,a=e>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(e=1);++t<e;)for(var f=r[t],i=F(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||M(h,l[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,e){var a=Object(r);if(!I(r)){var f=v(t);r=O(r),t=function(s){return f(a[s],s,a)}}var i=n(r,t,e);return i>-1?a[f?r[i]:i]:void 0}}var U=Math.max;function Z(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var a=t==null?0:D(t);return a<0&&(a=U(e+a,0)),P(n,v(r),a)}var hn=Q(Z);function V(n,r){var t=-1,e=I(n)?Array(n.length):[];return p(n,function(a,f,i){e[++t]=r(a,f,i)}),e}function gn(n,r){var t=_(n)?w:V;return t(n,v(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function vn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,a=n.length;++e<a;){var f=n[e],i=r(f);if(i!=null&&(s===void 0?i===i&&!o(i):t(i,s)))var s=i,d=f}return d}function mn(n){return n&&n.length?tn(n,$,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=x(r,n);for(var a=-1,f=r.length,i=f-1,s=n;s!=null&&++a<f;){var d=c(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=i){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[a+1])?[]:{})}T(s,d,u),s=s[d]}return n}function on(n,r,t){for(var e=-1,a=r.length,f={};++e<a;){var i=r[e],s=N(n,i);t(s,i)&&an(f,x(i,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,vn as h,dn as i,D as j,un as l,gn as m,Y as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aH as S,aI as Rn,ax as T,aJ as w,aK as xn,aL as Mn,aw as sn,aM as mn,aN as un,aO as x,au as U,aP as Cn,aQ as on,aR as Fn,aS as E,aF as gn,aT as R,as as ln,aU as Dn,aV as D,aW as Gn,aX as Un,aY as _,aA as Nn,aZ as Bn,av as Kn,a_ as X,a$ as Hn,b0 as jn,az as Yn,ay as cn,aD as Zn,b1 as m}from"./mermaid.core-TYNukHu8.js";var qn="[object Symbol]";function N(n){return typeof n=="symbol"||S(n)&&Rn(n)==qn}function dn(n,r){for(var e=-1,t=n==null?0:n.length,a=Array(t);++e<t;)a[e]=r(n[e],e,n);return a}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function pn(n){if(typeof n=="string")return n;if(T(n))return dn(n,pn)+"";if(N(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function An(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var a=n.length,i=e+-1;++i<a;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,a=n.length;++t<a;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):Mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||N(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,ar=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,a,i){r.push(a?i.replace(ir,"$1"):t||e)}),r});function fr(n){return n==null?"":pn(n)}function yn(n,r){return T(n)?n:B(n,r)?[n]:ar(fr(n))}function M(n){if(typeof n=="string"||N(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function bn(n,r){r=yn(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[M(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:bn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,a=n.length;++e<t;)n[a+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,a){var i=-1,f=n.length;for(e||(e=ur),a||(a=[]);++i<f;){var s=n[i];e(s)?K(a,s):t||(a[a.length]=s)}return a}function or(n,r,e,t){var a=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++a]);++a<i;)e=r(e,n[a],a,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,a=0,i=[];++e<t;){var f=n[e];r(f,e,n)&&(i[a++]=f)}return i}function hn(){return[]}var cr=Object.prototype,dr=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,H=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return dr.call(n,r)}))}:hn;function pr(n,r){return x(n,H(n),r)}var Ar=Object.getOwnPropertySymbols,wn=Ar?function(n){for(var r=[];n;)K(r,H(n)),n=Cn(n);return r}:hn;function yr(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,H)}function br(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Mr="[object Symbol]",mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Nr="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",Hr="[object Uint16Array]",jr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case mr:return on(n);case Er:case Ir:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Nr:case Br:case Kr:case Hr:case jr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case Mr:return Sr(n)}}var Zr="[object Map]";function qr(n){return S(n)&&E(n)==Zr}var nn=R&&R.isMap,Xr=nn?gn(nn):qr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",ae="[object Map]",fe="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",de="[object DataView]",pe="[object Float32Array]",Ae="[object Float64Array]",ye="[object Int8Array]",be="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[de]=g[re]=g[ee]=g[pe]=g[Ae]=g[ye]=g[be]=g[Te]=g[ae]=g[fe]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,a,i){var f,s=r&zr,u=r&Vr,d=r&kr;if(f!==void 0)return f;if(!ln(n))return n;var l=T(n);if(l){if(f=wr(n),!s)return Dn(n,f)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!a){if(f=u||c?{}:Un(n),!s)return u?yr(n,lr(f,n)):pr(n,gr(f,n))}else{if(!g[o])return a?n:{};f=Yr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,f),Wr(n)?n.forEach(function(p){f.add(C(p,r,e,p,n,i))}):Xr(n)&&n.forEach(function(p,A){f.set(A,C(p,r,e,A,n,i))});var y=d?u?br:G:u?U:$,b=l?void 0:y(n);return An(b||n,function(p,A){b&&(A=p,p=n[A]),Nn(f,A,C(p,r,e,A,n,i))}),f}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,a,i){var f=e&Pe,s=n.length,u=r.length;if(s!=u&&!(f&&u>s))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var y=n[o],b=r[o];if(t)var p=f?t(b,y,o,r,n,i):t(y,b,o,n,r,i);if(p!==void 0){if(p)continue;c=!1;break}if(h){if(!Ie(r,function(A,O){if(!En(h,O)&&(y===A||a(y,A,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(y===b||a(y,b,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,a){e[++r]=[a,t]}),e}function j(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Me="[object Boolean]",me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Ne="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",He="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function je(n,r,e,t,a,i,f){switch(e){case He:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case Me:case me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ne:return n==r+"";case Fe:var s=Le;case Ue:var u=tℜif(s||(s=j),n.size!=r.size&&!u)return!1;var d=f.get(n);if(d)return d==r;t|=xe,f.set(n,r);var l=In(s(n),s(r),t,a,i,f);return f.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,a,i){var f=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!f)return!1;for(var o=u;o--;){var c=s[o];if(!(f?c in r:qe.call(r,c)))return!1}var h=i.get(n),y=i.get(r);if(h&&y)return h==r&&y==n;var b=!0;i.set(n,r),i.set(r,n);for(var p=f;++o<u;){c=s[o];var A=n[c],O=r[c];if(t)var q=f?t(O,A,c,r,n,i):t(A,O,c,n,r,i);if(!(q===void 0?A===O||a(A,O,e,t,i):q)){b=!1;break}p||(p=c=="constructor")}if(b&&!p){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(b=!1)}return i.delete(n),i.delete(r),b}var Je=1,tn="[object Arguments]",an="[object Array]",L="[object Object]",Qe=Object.prototype,fn=Qe.hasOwnProperty;function We(n,r,e,t,a,i){var f=T(n),s=T(r),u=f?an:E(n),d=s?an:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;f=!0,l=!1}if(c&&!l)return i||(i=new _),f||Hn(n)?In(n,r,e,t,a,i):je(n,r,u,e,t,a,i);if(!(e&Je)){var h=l&&fn.call(n,"__wrapped__"),y=o&&fn.call(r,"__wrapped__");if(h||y){var b=h?n.value():n,p=y?r.value():r;return i||(i=new _),a(b,p,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,a,i)):!1}function Y(n,r,e,t,a){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,a)}var ze=1,Ve=2;function ke(n,r,e,t){var a=e.length,i=a;if(n==null)return!i;for(n=Object(n);a--;){var f=e[a];if(f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++a<i;){f=e[a];var s=f[0],u=n[s],d=f[1];if(f[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],a=n[t];r[e]=[t,a,Pn(a)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=yn(r,n);for(var t=-1,a=r.length,i=!1;++t<a;){var f=M(r[t]);if(!(i=n!=null&&e(n,f)))break;n=n[f]}return i||++t!=a?i:(a=n==null?0:n.length,!!a&&jn(a)&&Yn(f,a)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var at=1,ft=2;function st(n,r){return B(n)&&Pn(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,at|ft)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return bn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var a=e.length,i=-1,f=Object(e);++i<a&&t(f[i],i,f)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?An:Z;return e(n,dt(r))}function pt(n,r){var e=[];return Z(n,function(t,a,i){r(t,a,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:pt;return e(n,Ln(r))}function At(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:At(n,$(n))}function Et(n){return n===void 0}function yt(n,r,e,t,a){return a(n,function(i,f,s){e=t?(t=!1,i):r(e,i,f,s)}),e}function It(n,r,e){var t=T(n)?or:yt,a=arguments.length<3;return t(n,Ln(r),e,a,Z)}var bt=1/0,Tt=m&&1/j(new m([,-0]))[1]==bt?function(n){return new m(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,a=Vn,i=n.length,f=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return j(d);f=!1,a=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,f&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else a(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,pt as B,Ie as C,Xn as D,I as S,Pt as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Jn as h,Et as i,Z as j,$ as k,dn as l,tt as m,yn as n,bn as o,dt as p,lt as q,It as r,it as s,M as t,fr as u,St as v,Vn as w,En as x,zn as y,br as z};
|
|
1
|
+
import{aH as S,aI as Rn,ax as T,aJ as w,aK as xn,aL as Mn,aw as sn,aM as mn,aN as un,aO as x,au as U,aP as Cn,aQ as on,aR as Fn,aS as E,aF as gn,aT as R,as as ln,aU as Dn,aV as D,aW as Gn,aX as Un,aY as _,aA as Nn,aZ as Bn,av as Kn,a_ as X,a$ as Hn,b0 as jn,az as Yn,ay as cn,aD as Zn,b1 as m}from"./mermaid.core-CHO9EN5d.js";var qn="[object Symbol]";function N(n){return typeof n=="symbol"||S(n)&&Rn(n)==qn}function dn(n,r){for(var e=-1,t=n==null?0:n.length,a=Array(t);++e<t;)a[e]=r(n[e],e,n);return a}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function pn(n){if(typeof n=="string")return n;if(T(n))return dn(n,pn)+"";if(N(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function An(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var a=n.length,i=e+-1;++i<a;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,a=n.length;++t<a;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):Mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||N(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,ar=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,a,i){r.push(a?i.replace(ir,"$1"):t||e)}),r});function fr(n){return n==null?"":pn(n)}function yn(n,r){return T(n)?n:B(n,r)?[n]:ar(fr(n))}function M(n){if(typeof n=="string"||N(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function bn(n,r){r=yn(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[M(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:bn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,a=n.length;++e<t;)n[a+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,a){var i=-1,f=n.length;for(e||(e=ur),a||(a=[]);++i<f;){var s=n[i];e(s)?K(a,s):t||(a[a.length]=s)}return a}function or(n,r,e,t){var a=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++a]);++a<i;)e=r(e,n[a],a,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,a=0,i=[];++e<t;){var f=n[e];r(f,e,n)&&(i[a++]=f)}return i}function hn(){return[]}var cr=Object.prototype,dr=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,H=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return dr.call(n,r)}))}:hn;function pr(n,r){return x(n,H(n),r)}var Ar=Object.getOwnPropertySymbols,wn=Ar?function(n){for(var r=[];n;)K(r,H(n)),n=Cn(n);return r}:hn;function yr(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,H)}function br(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Mr="[object Symbol]",mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Nr="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",Hr="[object Uint16Array]",jr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case mr:return on(n);case Er:case Ir:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Nr:case Br:case Kr:case Hr:case jr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case Mr:return Sr(n)}}var Zr="[object Map]";function qr(n){return S(n)&&E(n)==Zr}var nn=R&&R.isMap,Xr=nn?gn(nn):qr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",ae="[object Map]",fe="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",de="[object DataView]",pe="[object Float32Array]",Ae="[object Float64Array]",ye="[object Int8Array]",be="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[de]=g[re]=g[ee]=g[pe]=g[Ae]=g[ye]=g[be]=g[Te]=g[ae]=g[fe]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,a,i){var f,s=r&zr,u=r&Vr,d=r&kr;if(f!==void 0)return f;if(!ln(n))return n;var l=T(n);if(l){if(f=wr(n),!s)return Dn(n,f)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!a){if(f=u||c?{}:Un(n),!s)return u?yr(n,lr(f,n)):pr(n,gr(f,n))}else{if(!g[o])return a?n:{};f=Yr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,f),Wr(n)?n.forEach(function(p){f.add(C(p,r,e,p,n,i))}):Xr(n)&&n.forEach(function(p,A){f.set(A,C(p,r,e,A,n,i))});var y=d?u?br:G:u?U:$,b=l?void 0:y(n);return An(b||n,function(p,A){b&&(A=p,p=n[A]),Nn(f,A,C(p,r,e,A,n,i))}),f}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,a,i){var f=e&Pe,s=n.length,u=r.length;if(s!=u&&!(f&&u>s))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var y=n[o],b=r[o];if(t)var p=f?t(b,y,o,r,n,i):t(y,b,o,n,r,i);if(p!==void 0){if(p)continue;c=!1;break}if(h){if(!Ie(r,function(A,O){if(!En(h,O)&&(y===A||a(y,A,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(y===b||a(y,b,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,a){e[++r]=[a,t]}),e}function j(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Me="[object Boolean]",me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Ne="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",He="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function je(n,r,e,t,a,i,f){switch(e){case He:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case Me:case me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ne:return n==r+"";case Fe:var s=Le;case Ue:var u=tℜif(s||(s=j),n.size!=r.size&&!u)return!1;var d=f.get(n);if(d)return d==r;t|=xe,f.set(n,r);var l=In(s(n),s(r),t,a,i,f);return f.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,a,i){var f=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!f)return!1;for(var o=u;o--;){var c=s[o];if(!(f?c in r:qe.call(r,c)))return!1}var h=i.get(n),y=i.get(r);if(h&&y)return h==r&&y==n;var b=!0;i.set(n,r),i.set(r,n);for(var p=f;++o<u;){c=s[o];var A=n[c],O=r[c];if(t)var q=f?t(O,A,c,r,n,i):t(A,O,c,n,r,i);if(!(q===void 0?A===O||a(A,O,e,t,i):q)){b=!1;break}p||(p=c=="constructor")}if(b&&!p){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(b=!1)}return i.delete(n),i.delete(r),b}var Je=1,tn="[object Arguments]",an="[object Array]",L="[object Object]",Qe=Object.prototype,fn=Qe.hasOwnProperty;function We(n,r,e,t,a,i){var f=T(n),s=T(r),u=f?an:E(n),d=s?an:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;f=!0,l=!1}if(c&&!l)return i||(i=new _),f||Hn(n)?In(n,r,e,t,a,i):je(n,r,u,e,t,a,i);if(!(e&Je)){var h=l&&fn.call(n,"__wrapped__"),y=o&&fn.call(r,"__wrapped__");if(h||y){var b=h?n.value():n,p=y?r.value():r;return i||(i=new _),a(b,p,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,a,i)):!1}function Y(n,r,e,t,a){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,a)}var ze=1,Ve=2;function ke(n,r,e,t){var a=e.length,i=a;if(n==null)return!i;for(n=Object(n);a--;){var f=e[a];if(f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++a<i;){f=e[a];var s=f[0],u=n[s],d=f[1];if(f[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],a=n[t];r[e]=[t,a,Pn(a)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=yn(r,n);for(var t=-1,a=r.length,i=!1;++t<a;){var f=M(r[t]);if(!(i=n!=null&&e(n,f)))break;n=n[f]}return i||++t!=a?i:(a=n==null?0:n.length,!!a&&jn(a)&&Yn(f,a)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var at=1,ft=2;function st(n,r){return B(n)&&Pn(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,at|ft)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return bn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var a=e.length,i=-1,f=Object(e);++i<a&&t(f[i],i,f)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?An:Z;return e(n,dt(r))}function pt(n,r){var e=[];return Z(n,function(t,a,i){r(t,a,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:pt;return e(n,Ln(r))}function At(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:At(n,$(n))}function Et(n){return n===void 0}function yt(n,r,e,t,a){return a(n,function(i,f,s){e=t?(t=!1,i):r(e,i,f,s)}),e}function It(n,r,e){var t=T(n)?or:yt,a=arguments.length<3;return t(n,Ln(r),e,a,Z)}var bt=1/0,Tt=m&&1/j(new m([,-0]))[1]==bt?function(n){return new m(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,a=Vn,i=n.length,f=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return j(d);f=!1,a=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,f&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else a(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,pt as B,Ie as C,Xn as D,I as S,Pt as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Jn as h,Et as i,Z as j,$ as k,dn as l,tt as m,yn as n,bn as o,dt as p,lt as q,It as r,it as s,M as t,fr as u,St as v,Vn as w,En as x,zn as y,br as z};
|
package/out/renderer/assets/{agent-details-page-D8iuA6Mf.js → agent-details-page-DhkOKq6G.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as E,j as e,c as Z}from"./index-C-P4UaBn.js";import{l as ue,c as he,u as xe,d as ge,g as je,i as fe,a as pe,b as ye,e as ve}from"./use-memberships-query-
|
|
1
|
+
import{r as E,j as e,c as Z}from"./index-C-P4UaBn.js";import{l as ue,c as he,u as xe,d as ge,g as je,i as fe,a as pe,b as ye,e as ve}from"./use-memberships-query-DJonF1zy.js";import{h as ne,g as I,aJ as b,aK as K,av as Y,aL as O,aM as we,aN as be,aO as ie,i as re,a as Ce,aw as Ne,aP as Ae,B as ke,aQ as Se,aR as De,aS as G,au as Te,aT as Ee,aU as Fe}from"./index-BoBj0LUC.js";import{c as Pe,L as _e,T as ee,B as l,S as z,b as oe,d as L,e as M,a as v,X as qe,f as w,A as te,g as se,h as ae}from"./error-boundary-Be38BRVp.js";import{f as W,u as Le,i as Me,a as ze,b as Ie,c as Ke,O as Oe,H as Qe,A as Ue}from"./use-download-agent-mutation-DB-9HDGk.js";import"./console-mirror-DjoNpI7u.js";import"./en-US-BkS8Ixxl.js";import"./book-open-CNgko0U5.js";/**
|
|
2
2
|
* @license lucide-react v0.507.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|