├── assets
├── icon.png
├── icon_16.png
├── icon_white.png
├── icon_white@2x.png
├── icon_active@2x.png
├── icon_active_32.png
└── icon_unread@2x.png
├── raycast-extension
├── assets
│ ├── icon_white.png
│ ├── comman_icon.png
│ ├── extension-icon.png
│ ├── icon_active_32.png
│ └── icon_unread@2x.png
├── .gitignore
├── package.json
├── src
│ ├── schedule-task.tsx
│ └── list-runs.tsx
└── package-lock.json
├── index.html
├── package.json
├── LICENSE
├── .gitignore
├── README.md
├── preload.js
├── main.js
└── 2646-44a3f244a6d9ea69.js
/assets/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/altryne/wraperator/main/assets/icon.png
--------------------------------------------------------------------------------
/assets/icon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/altryne/wraperator/main/assets/icon_16.png
--------------------------------------------------------------------------------
/assets/icon_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/altryne/wraperator/main/assets/icon_white.png
--------------------------------------------------------------------------------
/assets/icon_white@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/altryne/wraperator/main/assets/icon_white@2x.png
--------------------------------------------------------------------------------
/assets/icon_active@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/altryne/wraperator/main/assets/icon_active@2x.png
--------------------------------------------------------------------------------
/assets/icon_active_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/altryne/wraperator/main/assets/icon_active_32.png
--------------------------------------------------------------------------------
/assets/icon_unread@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/altryne/wraperator/main/assets/icon_unread@2x.png
--------------------------------------------------------------------------------
/raycast-extension/assets/icon_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/altryne/wraperator/main/raycast-extension/assets/icon_white.png
--------------------------------------------------------------------------------
/raycast-extension/assets/comman_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/altryne/wraperator/main/raycast-extension/assets/comman_icon.png
--------------------------------------------------------------------------------
/raycast-extension/assets/extension-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/altryne/wraperator/main/raycast-extension/assets/extension-icon.png
--------------------------------------------------------------------------------
/raycast-extension/assets/icon_active_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/altryne/wraperator/main/raycast-extension/assets/icon_active_32.png
--------------------------------------------------------------------------------
/raycast-extension/assets/icon_unread@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/altryne/wraperator/main/raycast-extension/assets/icon_unread@2x.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Electron App
5 |
6 |
7 | Hello Electron!
8 |
9 |
--------------------------------------------------------------------------------
/raycast-extension/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 |
6 | # Raycast specific files
7 | raycast-env.d.ts
8 | .raycast-swift-build
9 | .swiftpm
10 | compiled_raycast_swift
11 |
12 | # misc
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wraperator",
3 | "productName": "Wraperator",
4 | "version": "1.0.0",
5 | "main": "main.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "start": "electron .",
9 | "build": "electron-builder"
10 | },
11 | "build": {
12 | "appId": "com.wraperator.app",
13 | "productName": "Wraperator",
14 | "mac": {
15 | "icon": "assets/icon.png",
16 | "category": "public.app-category.productivity",
17 | "target": [
18 | "dmg",
19 | "zip"
20 | ],
21 | "darkModeSupport": true,
22 | "notarize": false
23 | }
24 | },
25 | "keywords": [],
26 | "author": "",
27 | "license": "MIT",
28 | "description": "ChatGPT Operator Wrapper",
29 | "dependencies": {
30 | "body-parser": "^1.20.3",
31 | "express": "^4.21.2",
32 | "nan": "^2.22.0"
33 | },
34 | "devDependencies": {
35 | "electron": "^34.0.1",
36 | "electron-builder": "^24.9.1"
37 | }
38 | }
--------------------------------------------------------------------------------
/raycast-extension/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wraperator",
3 | "title": "Wraperator",
4 | "description": "Schedule tasks in Operator",
5 | "icon": "icon_white.png",
6 | "author": "altryne",
7 | "categories": [
8 | "Productivity"
9 | ],
10 | "license": "MIT",
11 | "commands": [
12 | {
13 | "name": "schedule-task",
14 | "title": "Schedule Operator Task",
15 | "description": "Schedule a new task in Operator",
16 | "mode": "view"
17 | },
18 | {
19 | "name": "list-runs",
20 | "title": "List Operator Runs",
21 | "description": "List all recent Operator conversations",
22 | "mode": "view"
23 | }
24 | ],
25 | "dependencies": {
26 | "@raycast/api": "^1.67.1",
27 | "node-fetch": "^3.3.2"
28 | },
29 | "devDependencies": {
30 | "@raycast/utils": "^1.4.8",
31 | "@types/node": "^20.8.10",
32 | "@types/react": "^18.2.27",
33 | "typescript": "^5.2.2"
34 | },
35 | "scripts": {
36 | "build": "ray build -e dist",
37 | "dev": "ray develop"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License Copyright (c) 2025 Alex Volkov
2 |
3 | Permission is hereby granted, free of
4 | charge, to any person obtaining a copy of this software and associated
5 | documentation files (the "Software"), to deal in the Software without
6 | restriction, including without limitation the rights to use, copy, modify, merge,
7 | publish, distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to the
9 | following conditions:
10 |
11 | The above copyright notice and this permission notice
12 | (including the next paragraph) shall be included in all copies or substantial
13 | portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
16 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
18 | EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
19 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
--------------------------------------------------------------------------------
/raycast-extension/src/schedule-task.tsx:
--------------------------------------------------------------------------------
1 | import { Form, ActionPanel, Action, showToast, Toast, open } from "@raycast/api";
2 | import React, { useState } from "react";
3 |
4 | interface TaskFormValues {
5 | task: string;
6 | }
7 |
8 | export default function Command() {
9 | const [taskError, setTaskError] = useState();
10 |
11 | function handleSubmit(values: TaskFormValues) {
12 | if (!values.task) {
13 | setTaskError("Please enter a task");
14 | return;
15 | }
16 |
17 | const encodedTask = encodeURIComponent(values.task);
18 | const url = `wraperator://schedule?task=${encodedTask}`;
19 |
20 | showToast({
21 | style: Toast.Style.Success,
22 | title: "Scheduling task",
23 | message: "Opening Wraperator..."
24 | });
25 |
26 | // Open the URL which will be handled by the Electron app
27 | open(url);
28 | }
29 |
30 | return (
31 |
39 |
40 | {/* */}
41 | setTaskError(undefined)}
47 | enableMarkdown
48 | />
49 |
50 | );
51 | }
--------------------------------------------------------------------------------
/raycast-extension/src/list-runs.tsx:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from 'react';
2 | import { Action, ActionPanel, List, showToast, Toast, open } from '@raycast/api';
3 | import fetch from 'node-fetch';
4 |
5 | interface Conversation {
6 | id: string;
7 | title: string;
8 | isActive?: boolean;
9 | // ...any other fields
10 | }
11 |
12 | export default function Command() {
13 | const [conversations, setConversations] = useState([]);
14 | const [loading, setLoading] = useState(true);
15 |
16 | useEffect(() => {
17 | async function fetchConversations() {
18 | try {
19 | const res = await fetch("http://127.0.0.1:3001/conversations");
20 | const json = await res.json();
21 | setConversations(json.conversations || []);
22 | } catch (error) {
23 | console.error(error);
24 | showToast({
25 | style: Toast.Style.Failure,
26 | title: "Failed to fetch conversations",
27 | });
28 | } finally {
29 | setLoading(false);
30 | }
31 | }
32 | fetchConversations();
33 | }, []);
34 |
35 | async function openConversation(conversationId: string) {
36 | const url = `wraperator://schedule?conversationId=${conversationId}`;
37 |
38 | showToast({
39 | style: Toast.Style.Success,
40 | title: "Scheduling task",
41 | message: "Opening Wraperator..."
42 | });
43 |
44 | // Open the URL which will be handled by the Electron app
45 | open(url);
46 | }
47 |
48 | return (
49 |
50 | {conversations.map((conversation) => (
51 |
66 | openConversation(conversation.id)}
69 | />
70 |
71 | }
72 | />
73 | ))}
74 |
75 | );
76 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 | .pnpm-debug.log*
9 |
10 | # misc
11 | .DS_Store
12 |
13 | dist/
14 |
15 | # Diagnostic reports (https://nodejs.org/api/report.html)
16 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
17 |
18 | # Runtime data
19 | pids
20 | *.pid
21 | *.seed
22 | *.pid.lock
23 |
24 | # Directory for instrumented libs generated by jscoverage/JSCover
25 | lib-cov
26 |
27 | # Coverage directory used by tools like istanbul
28 | coverage
29 | *.lcov
30 |
31 | # nyc test coverage
32 | .nyc_output
33 |
34 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
35 | .grunt
36 |
37 | # Bower dependency directory (https://bower.io/)
38 | bower_components
39 |
40 | # node-waf configuration
41 | .lock-wscript
42 |
43 | # Compiled binary addons (https://nodejs.org/api/addons.html)
44 | build/Release
45 |
46 | # Dependency directories
47 | node_modules/
48 | jspm_packages/
49 |
50 | # Snowpack dependency directory (https://snowpack.dev/)
51 | web_modules/
52 |
53 | # TypeScript cache
54 | *.tsbuildinfo
55 |
56 | # Optional npm cache directory
57 | .npm
58 |
59 | # Optional eslint cache
60 | .eslintcache
61 |
62 | # Optional stylelint cache
63 | .stylelintcache
64 |
65 | # Microbundle cache
66 | .rpt2_cache/
67 | .rts2_cache_cjs/
68 | .rts2_cache_es/
69 | .rts2_cache_umd/
70 |
71 | # Optional REPL history
72 | .node_repl_history
73 |
74 | # Output of 'npm pack'
75 | *.tgz
76 |
77 | # Yarn Integrity file
78 | .yarn-integrity
79 |
80 | # dotenv environment variable files
81 | .env
82 | .env.development.local
83 | .env.test.local
84 | .env.production.local
85 | .env.local
86 |
87 | # parcel-bundler cache (https://parceljs.org/)
88 | .cache
89 | .parcel-cache
90 |
91 | # Next.js build output
92 | .next
93 | out
94 |
95 | # Nuxt.js build / generate output
96 | .nuxt
97 | dist
98 |
99 | # Gatsby files
100 | .cache/
101 | # Comment in the public line in if your project uses Gatsby and not Next.js
102 | # https://nextjs.org/blog/next-9-1#public-directory-support
103 | # public
104 |
105 | # vuepress build output
106 | .vuepress/dist
107 |
108 | # vuepress v2.x temp and cache directory
109 | .temp
110 | .cache
111 |
112 | # vitepress build output
113 | **/.vitepress/dist
114 |
115 | # vitepress cache directory
116 | **/.vitepress/cache
117 |
118 | # Docusaurus cache and generated files
119 | .docusaurus
120 |
121 | # Serverless directories
122 | .serverless/
123 |
124 | # FuseBox cache
125 | .fusebox/
126 |
127 | # DynamoDB Local files
128 | .dynamodb/
129 |
130 | # TernJS port file
131 | .tern-port
132 |
133 | # Stores VSCode versions used for testing VSCode extensions
134 | .vscode-test
135 |
136 | # yarn v2
137 | .yarn/cache
138 | .yarn/unplugged
139 | .yarn/build-state.yml
140 | .yarn/install-state.gz
141 | .pnp.*
142 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Wraperator
2 |
3 | [](https://opensource.org/licenses/MIT)
4 |
5 | **Wraperator** is an all-in-one Electron-based wrapper around OpenAI's Operator tool, enriched with native desktop notifications and a Raycast extension for quick access and scheduling tasks. It also features a convenient menu bar icon on macOS showing active/unread conversations.
6 |
7 | 
8 |
9 | ---
10 |
11 | ## Table of Contents
12 |
13 | - [Overview](#overview)
14 | - [Features](#features)
15 | - [Installation](#installation)
16 | - [Usage](#usage)
17 | - [Raycast Extension](#raycast-extension)
18 | - [Menu Bar Integration](#menu-bar-integration)
19 | - [Notifications](#notifications)
20 | - [Important Note on Google Login](#important-note-on-google-login)
21 | - [Contributing](#contributing)
22 | - [License](#license)
23 |
24 | ---
25 |
26 | ## Overview
27 |
28 | **Wraperator** provides an Electron-based desktop experience for Operator (https://operator.chatgpt.com), letting you focus on your conversations and tasks without constantly switching back to a web browser. With native notifications, real-time updates in the menu bar, and a handy Raycast extension, you can quickly schedule new tasks or see your runs — all while staying informed on your Operator activities.
29 |
30 | ---
31 |
32 | ## Features
33 |
34 | 1. **Native Desktop Wrapper**
35 | - Wraps the https://operator.chatgpt.com experience in an Electron shell for faster workflows and convenient app-like usage.
36 |
37 | 2. **Native Notifications**
38 | - Receive immediate desktop notifications for new messages or updates.
39 | - Reply to notifications directly from the desktop without needing to switch tabs or windows.
40 |
41 | 3. **Menu Bar Integration**
42 | - Quickly view your active tasks and unread messages in your menu bar (macOS).
43 | - Red or distinct icons appear when you have unread conversations, keeping you updated at a glance.
44 |
45 | 4. **Raycast Extension**
46 | - Schedule tasks with Operator and list your runs right from Raycast.
47 | - Instantly open tasks/conversations without navigating the website manually.
48 | - Perfect for command-line power users.
49 |
50 | 5. **Real-Time Updates**
51 | - Keep track of new Operator messages and statuses, ensuring you never miss an important update.
52 |
53 | 6. **Local Express API**
54 | - Exposes data for the Raycast extension to consume via a local server (`http://127.0.0.1:3001`).
55 |
56 | ---
57 |
58 | ## Installation
59 |
60 | ### Using npm
61 | 1. **Clone this repository**:
62 |
63 | ```bash
64 | git clone https://github.com/yourusername/wraperator.git
65 | ```
66 |
67 | 2. **Install dependencies**:
68 |
69 | ```bash
70 | cd wraperator
71 | npm install
72 | ```
73 |
74 | 3. **Run the app**:
75 |
76 | ```bash
77 | npm start
78 | ```
79 |
80 | 4. **(Optional) Build**:
81 |
82 | ```bash
83 | npm run build
84 | ```
85 |
86 | This will create a distributable app for your platform (macOS, etc.).
87 |
88 | ---
89 |
90 | ## Usage
91 |
92 | Once the app is running, it will load https://operator.chatgpt.com in an Electron window. You can:
93 |
94 | - Focus on tasks in a dedicated window.
95 | - View the tray icon for quick info on active and unread tasks.
96 | - Automatically receive desktop notifications whenever there's a new update or message.
97 |
98 | ---
99 |
100 | ## Raycast Extension
101 |
102 | Inside the `raycast-extension` folder, you'll find a separate project that integrates with Wraperator:
103 |
104 | 1. **Install** the Raycast extension dependencies:
105 |
106 | ```bash
107 | cd raycast-extension
108 | npm install
109 | ```
110 |
111 | 2. **Build** or **Develop** the extension:
112 |
113 | ```bash
114 | npm run build
115 | # or
116 | npm run dev
117 | ```
118 |
119 | 3. **Load** the extension in Raycast (follow Raycast docs on how to load custom extensions).
120 | 4. Use:
121 | - **Schedule Operator Task** to create new tasks in Operator from Raycast.
122 | - **List Operator Runs** to see recent or active tasks, then jump directly into the conversation in Wraperator.
123 |
124 | ---
125 |
126 | ## Menu Bar Integration
127 |
128 | A tray icon (on macOS) or system tray icon (on other platforms) is set up via `Tray` in `main.js`. It shows:
129 |
130 | - **Unread Count**
131 | If there's any unread conversation, the icon changes to indicate unread messages.
132 | - **Active Conversations**
133 | Quick shortcuts to jump into individual tasks.
134 |
135 | Right-clicking or clicking this icon shows a menu listing your Operator conversations (up to 10 most recent).
136 |
137 | ---
138 |
139 | ## Notifications
140 |
141 | Wraperator sets up native OS notifications by intercepting messages in `preload.js` and `main.js`:
142 |
143 | - **When new messages arrive**:
144 | - A desktop notification is displayed, including the message body.
145 | - You can directly reply to certain notifications, sending your reply back to Operator.
146 | - **Focus Detection**:
147 | The wrapper checks if you're currently focused on the conversation. If yes, it suppresses notifications to avoid duplicates.
148 |
149 | ---
150 |
151 | ## Important Note on Google Login
152 |
153 | At this time, **logging into OpenAI via Google inside the Electron wrapper** is not supported, as the in-app browser flow often blocks or misdirects the Google OAuth popup. **If you created your OpenAI account via Google**, consider the following workaround:
154 |
155 | 1. **Log in to a service that uses the same Google SSO** first (e.g., Anthropic, a different site), where you can open a Google login in a separate external window.
156 | 2. Once your browser session is validated with Google, returning to Operator inside the Electron wrapper may bypass the OAuth popup issue.
157 | 3. Alternatively, use a standard email/password with Operator if possible.
158 |
159 | This is a known limitation and may be resolved in future updates if/when the underlying login flows are updated.
160 |
161 | ---
162 |
163 | ## Contributing
164 |
165 | We welcome contributions! Feel free to open issues or pull requests:
166 |
167 | 1. Fork this repo
168 | 2. Create a new feature or fix branch
169 | 3. Submit a pull request
170 |
171 | ---
172 |
173 | ## License
174 |
175 | This project is available under the [MIT License](LICENSE). See the LICENSE file for details.
176 |
177 | ---
178 |
179 | ## Author
180 | Made with ❤️ by [@altryne](https://x.com/altryne).
181 | - GitHub: [github.com/altryne](https://github.com/altryne)
182 | - X (formerly Twitter): [x.com/altryne](https://x.com/altryne)
183 |
184 | ---
185 |
186 | **Enjoy using Wraperator** for a more streamlined Operator experience, complete with native notifications and Raycast support!
187 |
--------------------------------------------------------------------------------
/preload.js:
--------------------------------------------------------------------------------
1 | // preload.js
2 | const { contextBridge, ipcRenderer } = require('electron');
3 |
4 | // Track window focus state
5 | let isWindowFocused = true;
6 | // Shared Set to track processed messages across all interceptors
7 | const processedMessages = new Set();
8 |
9 | // Listen for notification replies from main process
10 | ipcRenderer.on('notification-reply', (event, { messageId, reply }) => {
11 | console.log('Received notification reply:', { messageId, reply });
12 |
13 | // Find the textarea input
14 | const textarea = document.getElementById('home-page-composer');
15 | if (textarea) {
16 | // Create input event
17 | const inputEvent = new InputEvent('input', {
18 | bubbles: true,
19 | cancelable: true,
20 | inputType: 'insertText',
21 | data: reply,
22 | isComposing: false
23 | });
24 |
25 | // Set value and dispatch events
26 | const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, "value").set;
27 | nativeInputValueSetter.call(textarea, reply);
28 | textarea.dispatchEvent(inputEvent);
29 | textarea.dispatchEvent(new Event('change', { bubbles: true }));
30 |
31 | // Find and click the send button
32 | setTimeout(() => {
33 | const sendButton = document.querySelector('button:has(path[d^="M11.2929 5.29289C11.6834 4.90237"])');
34 | if (sendButton && !sendButton.disabled) {
35 | sendButton.click();
36 | }
37 | }, 100);
38 | }
39 | });
40 |
41 | ipcRenderer.on('window-focus-change', (event, focused) => {
42 | isWindowFocused = focused;
43 | console.log('Window focus state changed:', { isWindowFocused, time: new Date().toISOString() });
44 | });
45 |
46 | // Shared notification function
47 | const sendNotificationToMain = (title, options) => {
48 | console.log('sendNotification called:', {
49 | title,
50 | options,
51 | isWindowFocused,
52 | time: new Date().toISOString()
53 | });
54 |
55 | // Only send notification if window is not focused on the current conversation_id
56 | const incomingConversationId = options.conversation_id;
57 | const currentUserConversationId = window.location.pathname.split('/')[2];
58 | const isUserFocusedOnConversation = incomingConversationId == currentUserConversationId;
59 |
60 | if (!isWindowFocused || !isUserFocusedOnConversation) {
61 | console.log('Sending notification to main process:', {
62 | title,
63 | time: new Date().toISOString()
64 | });
65 |
66 | // Add hasReplyBox for messages without action buttons
67 | // if (!options.actions && !options.data?.hasAction) {
68 | // options.hasReplyBox = true;
69 | // }
70 |
71 | ipcRenderer.send('show-notification', {
72 | title,
73 | options
74 | });
75 | } else {
76 | console.log('Not sending notification');
77 | console.log('Is user focused on conversation:', isUserFocusedOnConversation);
78 | console.log('Is Window focused:', isWindowFocused);
79 | }
80 | };
81 |
82 | // Shared message handling function
83 | const handleNewMessageInternal = (message, conversationId) => {
84 | if (!message || processedMessages.has(message.id)) {
85 | return;
86 | }
87 |
88 | processedMessages.add(message.id);
89 | const messageContent = message.content?.parts?.[0] || message.text || message.title;
90 |
91 | if (messageContent) {
92 | console.log('New message detected:', message, conversationId);
93 |
94 | // Prepare notification options
95 | const notificationOptions = {
96 | body: messageContent, // Set the full message as the body
97 | conversation_id: conversationId,
98 | silent: false,
99 | data: {
100 | url: `https://operator.chatgpt.com/c/${conversationId}`,
101 | messageId: message.id,
102 | hasAction: !!message.button_type
103 | }
104 | };
105 |
106 | // If there's a button_type, add actions
107 | if (message.button_type) {
108 | notificationOptions.actions = [
109 | {
110 | type: 'button',
111 | text: `Open ${message.button_type}`,
112 | }
113 | ];
114 | }
115 |
116 | sendNotificationToMain(
117 | message.title ? message.title : 'Operator Update',
118 | notificationOptions
119 | );
120 | }
121 | };
122 |
123 | // Expose APIs to the renderer process
124 | contextBridge.exposeInMainWorld('electronAPI', {
125 | sendNotification: sendNotificationToMain,
126 | isWindowFocused: () => isWindowFocused,
127 | updateConversations: (conversations) => {
128 | console.log('Sending conversations to main process', conversations);
129 | ipcRenderer.send('update-conversation-list', conversations);
130 | },
131 | handleNewMessage: handleNewMessageInternal,
132 | hasProcessedMessage: (messageId) => processedMessages.has(messageId),
133 | addProcessedMessage: (messageId) => processedMessages.add(messageId)
134 | });
135 |
136 | // Inject the WebSocket interceptor into the renderer context
137 | const wsInterceptorCode = () => {
138 | const OriginalWebSocket = window.WebSocket;
139 | window.WebSocket = function(url, protocols) {
140 | const socket = new OriginalWebSocket(url, protocols);
141 |
142 | if (url.includes('ConversationUpdateHub')) {
143 | socket.addEventListener('message', (event) => {
144 | try {
145 | const rawData = JSON.parse(event.data);
146 | if (rawData.type !== 'message' || !rawData.data) return;
147 |
148 | const data = JSON.parse(rawData.data);
149 | if (!data.message) return;
150 | console.log('Raw message data:', data);
151 |
152 | // Only process messages meant for all recipients and not from the user
153 | if (data.message.status === 'finished_successfully' &&
154 | data.message.recipient === 'all' &&
155 | data.message.author?.role !== 'user') {
156 |
157 | window.electronAPI.handleNewMessage(data.message, data.conversation_id);
158 | }
159 | } catch (error) {
160 | console.error('Error processing WebSocket message:', error);
161 | console.error('Message data:', event.data);
162 | }
163 | });
164 | }
165 |
166 | return socket;
167 | };
168 |
169 | Object.assign(window.WebSocket, OriginalWebSocket);
170 | window.WebSocket.prototype = OriginalWebSocket.prototype;
171 |
172 | console.log('WebSocket interceptor set up for notifications');
173 | };
174 |
175 | // Add fetch override code
176 | const fetchOverrideCode = () => {
177 | const originalFetch = window.fetch;
178 |
179 | window.fetch = async function(...args) {
180 | const [resource] = args;
181 | const isListRecent = resource.toString().includes('list_recent');
182 |
183 | const response = await originalFetch.apply(this, args);
184 |
185 | // Only process list_recent responses
186 | if (isListRecent) {
187 | const cloned = response.clone();
188 | const contentType = cloned.headers.get('content-type');
189 |
190 | if (contentType && contentType.includes('application/json')) {
191 | cloned.json().then(jsonData => {
192 | const conversations = jsonData.conversations;
193 | for (const conversation of conversations) {
194 | const messageTime = conversation.last_communication_message.create_time;
195 | const viewedTime = conversation.last_viewed_by_user_timestamp;
196 | const isUnread = (messageTime > viewedTime);
197 | const isActive = conversation.status === "Active";
198 | conversation.isUnread = isUnread;
199 | conversation.isActive = isActive;
200 | const message = conversation.last_communication_message;
201 | if (message.status === 'finished_successfully' &&
202 | message.recipient === 'all' &&
203 | message.author?.role !== 'user' &&
204 | isUnread) {
205 | message.title = conversation.title;
206 | window.electronAPI.handleNewMessage(
207 | message,
208 | conversation.id
209 | );
210 | }
211 | }
212 |
213 | try {
214 | window.electronAPI.updateConversations(conversations);
215 | console.log('[fetch override] conversations sent to main process');
216 | } catch (error) {
217 | console.error('[fetch override] Error sending conversations to main process:', error);
218 | }
219 | }).catch(error => {
220 | console.error('[fetch override] Error processing JSON:', error);
221 | });
222 | }
223 | }
224 |
225 | return response;
226 | };
227 | };
228 |
229 | // Expose a function to initialize both interceptors
230 | contextBridge.exposeInMainWorld('__electronPreloadInit__', {
231 | initializeAPI: () => {
232 | console.log('initializeAPI called, setting up interceptors');
233 |
234 | // Inject WebSocket interceptor
235 | const wsScript = document.createElement('script');
236 | wsScript.textContent = `(${wsInterceptorCode.toString()})();`;
237 | document.head.appendChild(wsScript);
238 |
239 | // Inject fetch override
240 | const fetchScript = document.createElement('script');
241 | fetchScript.textContent = `(${fetchOverrideCode.toString()})();`;
242 | document.head.appendChild(fetchScript);
243 |
244 | console.log('WebSocket and fetch interceptors injected');
245 | }
246 | });
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | const { app, BrowserWindow, session, ipcMain, Notification, Tray, Menu } = require('electron');
2 | const path = require('path');
3 | const express = require('express');
4 | const bodyParser = require('body-parser');
5 | let mainWindow;
6 |
7 | // In-memory store
8 | const store = {
9 | conversations: [], // array of conversation objects
10 | };
11 | let tray = null;
12 |
13 | // Register custom protocol
14 | if (process.defaultApp) {
15 | if (process.argv.length >= 2) {
16 | app.setAsDefaultProtocolClient('wraperator', process.execPath, [path.resolve(process.argv[1])])
17 | }
18 | } else {
19 | app.setAsDefaultProtocolClient('wraperator')
20 | }
21 |
22 | // Handle the URL when app is already running (macOS)
23 | app.on('open-url', (event, url) => {
24 | event.preventDefault();
25 | handleIncomingUrl(url);
26 | });
27 |
28 | app.whenReady().then(() => {
29 | createTray();
30 | });
31 |
32 | function createTray() {
33 | // Create the tray icon
34 | tray = new Tray(path.join(__dirname, "assets", "icon_white@2x.png"));
35 |
36 | // Build an initial context menu
37 | updateTrayMenu();
38 |
39 | // Optional: Set a tooltip (mouse hover text)
40 | tray.setToolTip("My Operator Tasks");
41 |
42 | }
43 |
44 | // Set up a simple Express server to expose conversation data to Raycast
45 | const localApp = express();
46 | localApp.use(bodyParser.json()); // for parsing JSON bodies in POST
47 |
48 | // Endpoint to get the current conversation list
49 | localApp.get('/conversations', (req, res) => {
50 | return res.json({
51 | conversations: store.conversations
52 | });
53 | });
54 |
55 | localApp.listen(3001, () => {
56 | console.log('[Express] Listening on http://localhost:3001');
57 | });
58 |
59 |
60 | // Function to handle incoming URLs
61 | function handleIncomingUrl(url) {
62 | if (!url || !mainWindow) return;
63 |
64 | try {
65 | const urlObj = new URL(url);
66 | if (urlObj.protocol === 'wraperator:') {
67 | const task = decodeURIComponent(urlObj.searchParams.get('task') || '');
68 | const conversationId = decodeURIComponent(urlObj.searchParams.get('conversationId') || '');
69 | if (conversationId) {
70 | if (mainWindow) {
71 | mainWindow.loadURL(`https://operator.chatgpt.com/c/${conversationId}`);
72 | mainWindow.focus();
73 | }
74 | }
75 | if (task) {
76 | console.log('Received task:', task);
77 | mainWindow.webContents.executeJavaScript(`
78 | (async () => {
79 | try {
80 | // Wait for page to be fully loaded
81 | await new Promise(resolve => setTimeout(resolve, 200));
82 |
83 | // Click "New conversation" button
84 | const newButton = document.querySelector('button[aria-label="New conversation"]');
85 | if (newButton) newButton.click();
86 |
87 | // Wait for input to be available
88 | await new Promise(resolve => setTimeout(resolve, 200));
89 |
90 | // Find and update the input using React's synthetic events
91 | const input = document.getElementById('home-page-composer');
92 | if (input) {
93 | // Create a new InputEvent
94 | const inputEvent = new InputEvent('input', {
95 | bubbles: true,
96 | cancelable: true,
97 | inputType: 'insertText',
98 | data: "${task}",
99 | isComposing: false
100 | });
101 |
102 | // Set the value and dispatch events
103 | const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, "value").set;
104 | nativeInputValueSetter.call(input, "${task}");
105 |
106 | input.dispatchEvent(inputEvent);
107 | input.dispatchEvent(new Event('change', { bubbles: true }));
108 |
109 | // Wait a bit for React to process the events
110 | await new Promise(resolve => setTimeout(resolve, 100));
111 |
112 | // Find and click the send button
113 | const sendButton = document.querySelector('button:has(path[d^="M11.2929 5.29289C11.6834 4.90237"])');
114 | if (sendButton && !sendButton.disabled) {
115 | sendButton.click();
116 | } else {
117 | console.log('Send button not ready or disabled');
118 | }
119 |
120 | // Wait for the message to be sent and check its role
121 | await new Promise(resolve => setTimeout(resolve, 500));
122 | const messages = document.querySelectorAll('[data-message]');
123 | const lastMessage = messages[messages.length - 1];
124 | if (lastMessage) {
125 | const messageData = JSON.parse(lastMessage.getAttribute('data-message'));
126 | if (messageData.author?.role !== 'user') {
127 | // Only show notification for non-user messages
128 | window.electron.showNotification({
129 | title: 'New Message',
130 | body: messageData.content?.parts?.join(' ') || 'New message received'
131 | });
132 | }
133 | }
134 | }
135 | } catch (error) {
136 | console.error('Error handling incoming URL:', error);
137 | }
138 | })();
139 | `);
140 | }
141 | }
142 | } catch (error) {
143 | console.error('Error parsing incoming URL:', error);
144 | }
145 | }
146 |
147 | // Define icon path
148 | const ICON_PATH = path.join(__dirname, 'assets', 'icon.png');
149 |
150 | // Set app name and metadata
151 | app.setName('Wraperator');
152 | if (process.platform === 'darwin') {
153 | app.dock.setIcon(ICON_PATH);
154 | }
155 |
156 | // Configure notifications
157 | if (process.platform === 'darwin') {
158 | app.setAppUserModelId('com.wraperator.app');
159 | }
160 |
161 | function createWindow() {
162 | mainWindow = new BrowserWindow({
163 | width: 1280,
164 | height: 800,
165 | title: 'Wraperator',
166 | webPreferences: {
167 | preload: path.join(__dirname, 'preload.js'),
168 | contextIsolation: true,
169 | nodeIntegration: false, // Ensure node integration is disabled for security
170 | webSecurity: true, // Ensure web security is enabled
171 | // Add these to help with website loading
172 | allowRunningInsecureContent: false,
173 | webviewTag: false
174 | },
175 | icon: ICON_PATH
176 | });
177 |
178 | // Add DevTools for debugging only in development
179 | if (process.env.NODE_ENV === 'development') {
180 | mainWindow.webContents.openDevTools();
181 | }
182 |
183 | // Handle window focus events
184 | mainWindow.on('focus', () => {
185 | console.log('Window focused');
186 | mainWindow.webContents.send('window-focus-change', true);
187 | });
188 |
189 | mainWindow.on('blur', () => {
190 | console.log('Window lost focus');
191 | mainWindow.webContents.send('window-focus-change', false);
192 | });
193 |
194 | // Log navigation events
195 | mainWindow.webContents.on('did-start-loading', () => {
196 | console.log('Started loading...');
197 | });
198 |
199 |
200 |
201 | mainWindow.webContents.on('did-finish-load', () => {
202 | console.log('Finished loading');
203 | mainWindow.webContents.executeJavaScript(`
204 | if (window.__electronPreloadInit__) {
205 | try {
206 | window.__electronPreloadInit__.initializeAPI();
207 | console.log('API initialization completed');
208 | } catch (error) {
209 | console.error('API initialization failed:', error);
210 | }
211 | }
212 | `);
213 | });
214 |
215 | mainWindow.webContents.on('did-fail-load', (event, errorCode, errorDescription, validatedURL) => {
216 | console.error('Failed to load:', {
217 | errorCode,
218 | errorDescription,
219 | validatedURL
220 | });
221 | });
222 |
223 | // Set Chrome user agent using alternate syntax
224 | mainWindow.webContents.userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36";
225 |
226 | // Modify the CSP to be less restrictive and allow blob URLs and workers
227 | session.defaultSession.webRequest.onHeadersReceived((details, callback) => {
228 | callback({
229 | responseHeaders: {
230 | ...details.responseHeaders,
231 | 'Content-Security-Policy': [
232 | "default-src * 'unsafe-inline' 'unsafe-eval' blob: data:; " +
233 | "script-src * 'unsafe-inline' 'unsafe-eval' blob: data:; " +
234 | "connect-src * 'unsafe-inline' blob: data:; " +
235 | "img-src * data: blob: 'unsafe-inline'; " +
236 | "frame-src *; " +
237 | "style-src * 'unsafe-inline'; " +
238 | "worker-src * blob: data:;"
239 | ]
240 | }
241 | });
242 | });
243 |
244 | // Load your website
245 | mainWindow.loadURL('https://operator.chatgpt.com').catch(err => {
246 | console.error('Load URL error:', err);
247 | });
248 |
249 | // Set up permission handling
250 | session.defaultSession.setPermissionRequestHandler((webContents, permission, callback) => {
251 | const url = webContents.getURL();
252 | console.log('Permission requested:', { permission, url });
253 |
254 | // List of allowed permissions for operator.chatgpt.com
255 | if (url.startsWith('https://operator.chatgpt.com')) {
256 | const allowedPermissions = [
257 | 'notifications',
258 | 'clipboard-read',
259 | 'clipboard-write',
260 | 'media'
261 | ];
262 |
263 | const isAllowed = allowedPermissions.includes(permission);
264 | console.log(`Permission ${permission} ${isAllowed ? 'allowed' : 'denied'}`);
265 | callback(isAllowed);
266 | } else {
267 | console.log(`Permission ${permission} denied for non-matching URL`);
268 | callback(false);
269 | }
270 | });
271 |
272 | // Add this to monitor permission check results
273 | session.defaultSession.setPermissionCheckHandler((webContents, permission, requestingOrigin) => {
274 | console.log('Permission check:', { permission, requestingOrigin });
275 | return true; // Allow all permission checks for now
276 | });
277 |
278 | // Add this to debug notification creation
279 | mainWindow.webContents.on('console-message', (event, level, message) => {
280 | console.log('Console message:', { level, message });
281 | });
282 |
283 | mainWindow.on('closed', () => {
284 | mainWindow = null;
285 | });
286 | }
287 |
288 | function updateTrayMenu() {
289 | const menuTemplate = [];
290 | if (store.active_conversations.length > 0) {
291 | tray.setTitle(`Active Agents: ${store.active_conversations.length}`);
292 | }else{
293 | tray.setTitle(``);
294 | }
295 |
296 | menuTemplate.push({
297 | label: "Wraperator",
298 | type: "normal",
299 | click: () => {
300 | mainWindow.show();
301 | mainWindow.focus();
302 | }
303 | });
304 | menuTemplate.push({ type: "separator" });
305 |
306 | let unread_count = 0;
307 |
308 | // Create a menu item for each active task
309 | for (const task of store.conversations.slice(0, 10)) {
310 | const messageTime = task.last_communication_message.create_time;
311 | const viewedTime = task.last_viewed_by_user_timestamp;
312 | const isUnread = (messageTime > viewedTime);
313 | const isActive = task.status === "Active";
314 | if (isUnread) {
315 | unread_count++;
316 | }
317 | menuTemplate.push({
318 | label: isActive ? `[${task.status}] ${task.title || task.id}` : isUnread ? `${task.title || task.id}` : task.title,
319 | type: "normal",
320 | icon: path.join(__dirname, "assets", isUnread ? "icon_unread@2x.png" : isActive ? "icon_active_32.png" : "icon_white@2x.png"),
321 | click: () => {
322 | console.log(`You clicked on task: ${task}`);
323 | // Optionally bring your main window to front or do something
324 | if (mainWindow) {
325 | mainWindow.loadURL(`https://operator.chatgpt.com/c/${task.id}`);
326 | mainWindow.focus();
327 | }
328 | }
329 | });
330 | }
331 |
332 | if (unread_count > 0) {
333 | tray.setImage(path.join(__dirname, "assets", "icon_unread@2x.png"));
334 | }else{
335 | tray.setImage(path.join(__dirname, "assets", "icon_white@2x.png"));
336 | }
337 |
338 | // A separator, then a "Quit" menu item at the bottom
339 | menuTemplate.push({ type: "separator" });
340 | menuTemplate.push({
341 | label: "Quit",
342 | type: "normal",
343 | click: () => {
344 | app.quit();
345 | }
346 | });
347 |
348 | // Build and set the context menu
349 | const trayMenu = Menu.buildFromTemplate(menuTemplate);
350 | tray.setContextMenu(trayMenu);
351 | }
352 |
353 | // Listen for updated conversation lists from preload.js
354 | ipcMain.on('update-conversation-list', (event, list_recent) => {
355 | console.log('[Main] Received conversation list:', list_recent);
356 |
357 | store.conversations = list_recent;
358 | store.active_conversations = list_recent.filter(conversation => conversation.status === 'Active');
359 | store.waiting_for_user_conversations = list_recent.filter(conversation => conversation.status === 'WaitingForUser');
360 | console.log('[Main] Updated conversation list, count =', store.conversations.length, store.active_conversations.length, store.waiting_for_user_conversations.length);
361 | updateTrayMenu();
362 | });
363 |
364 | ipcMain.on('show-notification', (event, { title, options }) => {
365 | console.log('Main process received notification request:', {
366 | title,
367 | options,
368 | time: new Date().toISOString()
369 | });
370 |
371 | const notificationOptions = {
372 | title,
373 | body: options.body || '',
374 | silent: options.silent ?? false,
375 | hasReply: options.hasReplyBox ?? false, // Enable reply input if hasReplyBox is true
376 | replyPlaceholder: 'Type your response...' // Placeholder text for the reply input
377 | };
378 |
379 | // Add actions if available
380 | if (options.actions) {
381 | notificationOptions.actions = options.actions;
382 | }
383 |
384 | const notification = new Notification(notificationOptions);
385 |
386 | notification.on('click', () => {
387 | console.log('Notification clicked:', {
388 | title,
389 | url: options.data?.url,
390 | time: new Date().toISOString()
391 | });
392 | if (options.data?.url && mainWindow) {
393 | mainWindow.loadURL(options.data.url);
394 | mainWindow.focus();
395 | }
396 | });
397 |
398 | // Handle reply input
399 | notification.on('reply', (event, reply) => {
400 | console.log('Notification reply received:', {
401 | title,
402 | reply,
403 | time: new Date().toISOString()
404 | });
405 | if (mainWindow) {
406 | // Send the reply to the renderer process
407 | mainWindow.webContents.send('notification-reply', {
408 | messageId: options.data?.messageId,
409 | reply
410 | });
411 | mainWindow.focus();
412 | }
413 | });
414 |
415 | // Handle action button clicks
416 | notification.on('action', (event, index) => {
417 | console.log('Notification action clicked:', {
418 | title,
419 | actionIndex: index,
420 | url: options.data?.url,
421 | time: new Date().toISOString()
422 | });
423 | if (options.data?.url && mainWindow) {
424 | mainWindow.loadURL(options.data.url);
425 | mainWindow.focus();
426 | }
427 | });
428 |
429 | notification.on('show', () => {
430 | console.log('Notification shown:', {
431 | title,
432 | time: new Date().toISOString()
433 | });
434 | });
435 |
436 | notification.on('close', () => {
437 | console.log('Notification closed:', {
438 | title,
439 | time: new Date().toISOString()
440 | });
441 | });
442 |
443 | notification.on('failed', (event, error) => {
444 | console.error('Notification failed:', {
445 | title,
446 | error,
447 | time: new Date().toISOString()
448 | });
449 | });
450 |
451 | try {
452 | notification.show();
453 | console.log('Notification.show() called successfully');
454 | } catch (error) {
455 | console.error('Error showing notification:', error);
456 | }
457 | });
458 |
459 | app.on('ready', createWindow);
460 | app.on('window-all-closed', () => {
461 | if (process.platform !== 'darwin') app.quit();
462 | });
463 | app.on('activate', () => {
464 | if (mainWindow === null) createWindow();
465 | });
466 |
467 |
--------------------------------------------------------------------------------
/raycast-extension/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wraperator",
3 | "lockfileVersion": 3,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "name": "wraperator",
8 | "license": "MIT",
9 | "dependencies": {
10 | "@raycast/api": "^1.67.1",
11 | "node-fetch": "^3.3.2"
12 | },
13 | "devDependencies": {
14 | "@raycast/utils": "^1.4.8",
15 | "@types/node": "^20.8.10",
16 | "@types/react": "^18.2.27",
17 | "typescript": "^5.2.2"
18 | }
19 | },
20 | "node_modules/@esbuild/aix-ppc64": {
21 | "version": "0.24.2",
22 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
23 | "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
24 | "cpu": [
25 | "ppc64"
26 | ],
27 | "license": "MIT",
28 | "optional": true,
29 | "os": [
30 | "aix"
31 | ],
32 | "engines": {
33 | "node": ">=18"
34 | }
35 | },
36 | "node_modules/@esbuild/android-arm": {
37 | "version": "0.24.2",
38 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz",
39 | "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
40 | "cpu": [
41 | "arm"
42 | ],
43 | "license": "MIT",
44 | "optional": true,
45 | "os": [
46 | "android"
47 | ],
48 | "engines": {
49 | "node": ">=18"
50 | }
51 | },
52 | "node_modules/@esbuild/android-arm64": {
53 | "version": "0.24.2",
54 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz",
55 | "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
56 | "cpu": [
57 | "arm64"
58 | ],
59 | "license": "MIT",
60 | "optional": true,
61 | "os": [
62 | "android"
63 | ],
64 | "engines": {
65 | "node": ">=18"
66 | }
67 | },
68 | "node_modules/@esbuild/android-x64": {
69 | "version": "0.24.2",
70 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz",
71 | "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
72 | "cpu": [
73 | "x64"
74 | ],
75 | "license": "MIT",
76 | "optional": true,
77 | "os": [
78 | "android"
79 | ],
80 | "engines": {
81 | "node": ">=18"
82 | }
83 | },
84 | "node_modules/@esbuild/darwin-arm64": {
85 | "version": "0.24.2",
86 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz",
87 | "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
88 | "cpu": [
89 | "arm64"
90 | ],
91 | "license": "MIT",
92 | "optional": true,
93 | "os": [
94 | "darwin"
95 | ],
96 | "engines": {
97 | "node": ">=18"
98 | }
99 | },
100 | "node_modules/@esbuild/darwin-x64": {
101 | "version": "0.24.2",
102 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz",
103 | "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
104 | "cpu": [
105 | "x64"
106 | ],
107 | "license": "MIT",
108 | "optional": true,
109 | "os": [
110 | "darwin"
111 | ],
112 | "engines": {
113 | "node": ">=18"
114 | }
115 | },
116 | "node_modules/@esbuild/freebsd-arm64": {
117 | "version": "0.24.2",
118 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz",
119 | "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
120 | "cpu": [
121 | "arm64"
122 | ],
123 | "license": "MIT",
124 | "optional": true,
125 | "os": [
126 | "freebsd"
127 | ],
128 | "engines": {
129 | "node": ">=18"
130 | }
131 | },
132 | "node_modules/@esbuild/freebsd-x64": {
133 | "version": "0.24.2",
134 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz",
135 | "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
136 | "cpu": [
137 | "x64"
138 | ],
139 | "license": "MIT",
140 | "optional": true,
141 | "os": [
142 | "freebsd"
143 | ],
144 | "engines": {
145 | "node": ">=18"
146 | }
147 | },
148 | "node_modules/@esbuild/linux-arm": {
149 | "version": "0.24.2",
150 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz",
151 | "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
152 | "cpu": [
153 | "arm"
154 | ],
155 | "license": "MIT",
156 | "optional": true,
157 | "os": [
158 | "linux"
159 | ],
160 | "engines": {
161 | "node": ">=18"
162 | }
163 | },
164 | "node_modules/@esbuild/linux-arm64": {
165 | "version": "0.24.2",
166 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz",
167 | "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
168 | "cpu": [
169 | "arm64"
170 | ],
171 | "license": "MIT",
172 | "optional": true,
173 | "os": [
174 | "linux"
175 | ],
176 | "engines": {
177 | "node": ">=18"
178 | }
179 | },
180 | "node_modules/@esbuild/linux-ia32": {
181 | "version": "0.24.2",
182 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz",
183 | "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
184 | "cpu": [
185 | "ia32"
186 | ],
187 | "license": "MIT",
188 | "optional": true,
189 | "os": [
190 | "linux"
191 | ],
192 | "engines": {
193 | "node": ">=18"
194 | }
195 | },
196 | "node_modules/@esbuild/linux-loong64": {
197 | "version": "0.24.2",
198 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz",
199 | "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
200 | "cpu": [
201 | "loong64"
202 | ],
203 | "license": "MIT",
204 | "optional": true,
205 | "os": [
206 | "linux"
207 | ],
208 | "engines": {
209 | "node": ">=18"
210 | }
211 | },
212 | "node_modules/@esbuild/linux-mips64el": {
213 | "version": "0.24.2",
214 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz",
215 | "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
216 | "cpu": [
217 | "mips64el"
218 | ],
219 | "license": "MIT",
220 | "optional": true,
221 | "os": [
222 | "linux"
223 | ],
224 | "engines": {
225 | "node": ">=18"
226 | }
227 | },
228 | "node_modules/@esbuild/linux-ppc64": {
229 | "version": "0.24.2",
230 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz",
231 | "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
232 | "cpu": [
233 | "ppc64"
234 | ],
235 | "license": "MIT",
236 | "optional": true,
237 | "os": [
238 | "linux"
239 | ],
240 | "engines": {
241 | "node": ">=18"
242 | }
243 | },
244 | "node_modules/@esbuild/linux-riscv64": {
245 | "version": "0.24.2",
246 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz",
247 | "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
248 | "cpu": [
249 | "riscv64"
250 | ],
251 | "license": "MIT",
252 | "optional": true,
253 | "os": [
254 | "linux"
255 | ],
256 | "engines": {
257 | "node": ">=18"
258 | }
259 | },
260 | "node_modules/@esbuild/linux-s390x": {
261 | "version": "0.24.2",
262 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz",
263 | "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
264 | "cpu": [
265 | "s390x"
266 | ],
267 | "license": "MIT",
268 | "optional": true,
269 | "os": [
270 | "linux"
271 | ],
272 | "engines": {
273 | "node": ">=18"
274 | }
275 | },
276 | "node_modules/@esbuild/linux-x64": {
277 | "version": "0.24.2",
278 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz",
279 | "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
280 | "cpu": [
281 | "x64"
282 | ],
283 | "license": "MIT",
284 | "optional": true,
285 | "os": [
286 | "linux"
287 | ],
288 | "engines": {
289 | "node": ">=18"
290 | }
291 | },
292 | "node_modules/@esbuild/netbsd-arm64": {
293 | "version": "0.24.2",
294 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz",
295 | "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
296 | "cpu": [
297 | "arm64"
298 | ],
299 | "license": "MIT",
300 | "optional": true,
301 | "os": [
302 | "netbsd"
303 | ],
304 | "engines": {
305 | "node": ">=18"
306 | }
307 | },
308 | "node_modules/@esbuild/netbsd-x64": {
309 | "version": "0.24.2",
310 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz",
311 | "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
312 | "cpu": [
313 | "x64"
314 | ],
315 | "license": "MIT",
316 | "optional": true,
317 | "os": [
318 | "netbsd"
319 | ],
320 | "engines": {
321 | "node": ">=18"
322 | }
323 | },
324 | "node_modules/@esbuild/openbsd-arm64": {
325 | "version": "0.24.2",
326 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz",
327 | "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
328 | "cpu": [
329 | "arm64"
330 | ],
331 | "license": "MIT",
332 | "optional": true,
333 | "os": [
334 | "openbsd"
335 | ],
336 | "engines": {
337 | "node": ">=18"
338 | }
339 | },
340 | "node_modules/@esbuild/openbsd-x64": {
341 | "version": "0.24.2",
342 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz",
343 | "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
344 | "cpu": [
345 | "x64"
346 | ],
347 | "license": "MIT",
348 | "optional": true,
349 | "os": [
350 | "openbsd"
351 | ],
352 | "engines": {
353 | "node": ">=18"
354 | }
355 | },
356 | "node_modules/@esbuild/sunos-x64": {
357 | "version": "0.24.2",
358 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz",
359 | "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
360 | "cpu": [
361 | "x64"
362 | ],
363 | "license": "MIT",
364 | "optional": true,
365 | "os": [
366 | "sunos"
367 | ],
368 | "engines": {
369 | "node": ">=18"
370 | }
371 | },
372 | "node_modules/@esbuild/win32-arm64": {
373 | "version": "0.24.2",
374 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz",
375 | "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
376 | "cpu": [
377 | "arm64"
378 | ],
379 | "license": "MIT",
380 | "optional": true,
381 | "os": [
382 | "win32"
383 | ],
384 | "engines": {
385 | "node": ">=18"
386 | }
387 | },
388 | "node_modules/@esbuild/win32-ia32": {
389 | "version": "0.24.2",
390 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz",
391 | "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
392 | "cpu": [
393 | "ia32"
394 | ],
395 | "license": "MIT",
396 | "optional": true,
397 | "os": [
398 | "win32"
399 | ],
400 | "engines": {
401 | "node": ">=18"
402 | }
403 | },
404 | "node_modules/@esbuild/win32-x64": {
405 | "version": "0.24.2",
406 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz",
407 | "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
408 | "cpu": [
409 | "x64"
410 | ],
411 | "license": "MIT",
412 | "optional": true,
413 | "os": [
414 | "win32"
415 | ],
416 | "engines": {
417 | "node": ">=18"
418 | }
419 | },
420 | "node_modules/@inquirer/checkbox": {
421 | "version": "4.0.6",
422 | "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.0.6.tgz",
423 | "integrity": "sha512-PgP35JfmGjHU0LSXOyRew0zHuA9N6OJwOlos1fZ20b7j8ISeAdib3L+n0jIxBtX958UeEpte6xhG/gxJ5iUqMw==",
424 | "license": "MIT",
425 | "dependencies": {
426 | "@inquirer/core": "^10.1.4",
427 | "@inquirer/figures": "^1.0.9",
428 | "@inquirer/type": "^3.0.2",
429 | "ansi-escapes": "^4.3.2",
430 | "yoctocolors-cjs": "^2.1.2"
431 | },
432 | "engines": {
433 | "node": ">=18"
434 | },
435 | "peerDependencies": {
436 | "@types/node": ">=18"
437 | }
438 | },
439 | "node_modules/@inquirer/confirm": {
440 | "version": "5.1.3",
441 | "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.3.tgz",
442 | "integrity": "sha512-fuF9laMmHoOgWapF9h9hv6opA5WvmGFHsTYGCmuFxcghIhEhb3dN0CdQR4BUMqa2H506NCj8cGX4jwMsE4t6dA==",
443 | "license": "MIT",
444 | "dependencies": {
445 | "@inquirer/core": "^10.1.4",
446 | "@inquirer/type": "^3.0.2"
447 | },
448 | "engines": {
449 | "node": ">=18"
450 | },
451 | "peerDependencies": {
452 | "@types/node": ">=18"
453 | }
454 | },
455 | "node_modules/@inquirer/core": {
456 | "version": "10.1.4",
457 | "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.4.tgz",
458 | "integrity": "sha512-5y4/PUJVnRb4bwWY67KLdebWOhOc7xj5IP2J80oWXa64mVag24rwQ1VAdnj7/eDY/odhguW0zQ1Mp1pj6fO/2w==",
459 | "license": "MIT",
460 | "dependencies": {
461 | "@inquirer/figures": "^1.0.9",
462 | "@inquirer/type": "^3.0.2",
463 | "ansi-escapes": "^4.3.2",
464 | "cli-width": "^4.1.0",
465 | "mute-stream": "^2.0.0",
466 | "signal-exit": "^4.1.0",
467 | "strip-ansi": "^6.0.1",
468 | "wrap-ansi": "^6.2.0",
469 | "yoctocolors-cjs": "^2.1.2"
470 | },
471 | "engines": {
472 | "node": ">=18"
473 | }
474 | },
475 | "node_modules/@inquirer/core/node_modules/wrap-ansi": {
476 | "version": "6.2.0",
477 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
478 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
479 | "license": "MIT",
480 | "dependencies": {
481 | "ansi-styles": "^4.0.0",
482 | "string-width": "^4.1.0",
483 | "strip-ansi": "^6.0.0"
484 | },
485 | "engines": {
486 | "node": ">=8"
487 | }
488 | },
489 | "node_modules/@inquirer/editor": {
490 | "version": "4.2.3",
491 | "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.3.tgz",
492 | "integrity": "sha512-S9KnIOJuTZpb9upeRSBBhoDZv7aSV3pG9TECrBj0f+ZsFwccz886hzKBrChGrXMJwd4NKY+pOA9Vy72uqnd6Eg==",
493 | "license": "MIT",
494 | "dependencies": {
495 | "@inquirer/core": "^10.1.4",
496 | "@inquirer/type": "^3.0.2",
497 | "external-editor": "^3.1.0"
498 | },
499 | "engines": {
500 | "node": ">=18"
501 | },
502 | "peerDependencies": {
503 | "@types/node": ">=18"
504 | }
505 | },
506 | "node_modules/@inquirer/expand": {
507 | "version": "4.0.6",
508 | "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.6.tgz",
509 | "integrity": "sha512-TRTfi1mv1GeIZGyi9PQmvAaH65ZlG4/FACq6wSzs7Vvf1z5dnNWsAAXBjWMHt76l+1hUY8teIqJFrWBk5N6gsg==",
510 | "license": "MIT",
511 | "dependencies": {
512 | "@inquirer/core": "^10.1.4",
513 | "@inquirer/type": "^3.0.2",
514 | "yoctocolors-cjs": "^2.1.2"
515 | },
516 | "engines": {
517 | "node": ">=18"
518 | },
519 | "peerDependencies": {
520 | "@types/node": ">=18"
521 | }
522 | },
523 | "node_modules/@inquirer/figures": {
524 | "version": "1.0.9",
525 | "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.9.tgz",
526 | "integrity": "sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==",
527 | "license": "MIT",
528 | "engines": {
529 | "node": ">=18"
530 | }
531 | },
532 | "node_modules/@inquirer/input": {
533 | "version": "4.1.3",
534 | "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.3.tgz",
535 | "integrity": "sha512-zeo++6f7hxaEe7OjtMzdGZPHiawsfmCZxWB9X1NpmYgbeoyerIbWemvlBxxl+sQIlHC0WuSAG19ibMq3gbhaqQ==",
536 | "license": "MIT",
537 | "dependencies": {
538 | "@inquirer/core": "^10.1.4",
539 | "@inquirer/type": "^3.0.2"
540 | },
541 | "engines": {
542 | "node": ">=18"
543 | },
544 | "peerDependencies": {
545 | "@types/node": ">=18"
546 | }
547 | },
548 | "node_modules/@inquirer/number": {
549 | "version": "3.0.6",
550 | "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.6.tgz",
551 | "integrity": "sha512-xO07lftUHk1rs1gR0KbqB+LJPhkUNkyzV/KhH+937hdkMazmAYHLm1OIrNKpPelppeV1FgWrgFDjdUD8mM+XUg==",
552 | "license": "MIT",
553 | "dependencies": {
554 | "@inquirer/core": "^10.1.4",
555 | "@inquirer/type": "^3.0.2"
556 | },
557 | "engines": {
558 | "node": ">=18"
559 | },
560 | "peerDependencies": {
561 | "@types/node": ">=18"
562 | }
563 | },
564 | "node_modules/@inquirer/password": {
565 | "version": "4.0.6",
566 | "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.6.tgz",
567 | "integrity": "sha512-QLF0HmMpHZPPMp10WGXh6F+ZPvzWE7LX6rNoccdktv/Rov0B+0f+eyXkAcgqy5cH9V+WSpbLxu2lo3ysEVK91w==",
568 | "license": "MIT",
569 | "dependencies": {
570 | "@inquirer/core": "^10.1.4",
571 | "@inquirer/type": "^3.0.2",
572 | "ansi-escapes": "^4.3.2"
573 | },
574 | "engines": {
575 | "node": ">=18"
576 | },
577 | "peerDependencies": {
578 | "@types/node": ">=18"
579 | }
580 | },
581 | "node_modules/@inquirer/prompts": {
582 | "version": "7.2.3",
583 | "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.2.3.tgz",
584 | "integrity": "sha512-hzfnm3uOoDySDXfDNOm9usOuYIaQvTgKp/13l1uJoe6UNY+Zpcn2RYt0jXz3yA+yemGHvDOxVzqWl3S5sQq53Q==",
585 | "license": "MIT",
586 | "dependencies": {
587 | "@inquirer/checkbox": "^4.0.6",
588 | "@inquirer/confirm": "^5.1.3",
589 | "@inquirer/editor": "^4.2.3",
590 | "@inquirer/expand": "^4.0.6",
591 | "@inquirer/input": "^4.1.3",
592 | "@inquirer/number": "^3.0.6",
593 | "@inquirer/password": "^4.0.6",
594 | "@inquirer/rawlist": "^4.0.6",
595 | "@inquirer/search": "^3.0.6",
596 | "@inquirer/select": "^4.0.6"
597 | },
598 | "engines": {
599 | "node": ">=18"
600 | },
601 | "peerDependencies": {
602 | "@types/node": ">=18"
603 | }
604 | },
605 | "node_modules/@inquirer/rawlist": {
606 | "version": "4.0.6",
607 | "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.0.6.tgz",
608 | "integrity": "sha512-QoE4s1SsIPx27FO4L1b1mUjVcoHm1pWE/oCmm4z/Hl+V1Aw5IXl8FYYzGmfXaBT0l/sWr49XmNSiq7kg3Kd/Lg==",
609 | "license": "MIT",
610 | "dependencies": {
611 | "@inquirer/core": "^10.1.4",
612 | "@inquirer/type": "^3.0.2",
613 | "yoctocolors-cjs": "^2.1.2"
614 | },
615 | "engines": {
616 | "node": ">=18"
617 | },
618 | "peerDependencies": {
619 | "@types/node": ">=18"
620 | }
621 | },
622 | "node_modules/@inquirer/search": {
623 | "version": "3.0.6",
624 | "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.6.tgz",
625 | "integrity": "sha512-eFZ2hiAq0bZcFPuFFBmZEtXU1EarHLigE+ENCtpO+37NHCl4+Yokq1P/d09kUblObaikwfo97w+0FtG/EXl5Ng==",
626 | "license": "MIT",
627 | "dependencies": {
628 | "@inquirer/core": "^10.1.4",
629 | "@inquirer/figures": "^1.0.9",
630 | "@inquirer/type": "^3.0.2",
631 | "yoctocolors-cjs": "^2.1.2"
632 | },
633 | "engines": {
634 | "node": ">=18"
635 | },
636 | "peerDependencies": {
637 | "@types/node": ">=18"
638 | }
639 | },
640 | "node_modules/@inquirer/select": {
641 | "version": "4.0.6",
642 | "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.0.6.tgz",
643 | "integrity": "sha512-yANzIiNZ8fhMm4NORm+a74+KFYHmf7BZphSOBovIzYPVLquseTGEkU5l2UTnBOf5k0VLmTgPighNDLE9QtbViQ==",
644 | "license": "MIT",
645 | "dependencies": {
646 | "@inquirer/core": "^10.1.4",
647 | "@inquirer/figures": "^1.0.9",
648 | "@inquirer/type": "^3.0.2",
649 | "ansi-escapes": "^4.3.2",
650 | "yoctocolors-cjs": "^2.1.2"
651 | },
652 | "engines": {
653 | "node": ">=18"
654 | },
655 | "peerDependencies": {
656 | "@types/node": ">=18"
657 | }
658 | },
659 | "node_modules/@inquirer/type": {
660 | "version": "3.0.2",
661 | "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.2.tgz",
662 | "integrity": "sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==",
663 | "license": "MIT",
664 | "engines": {
665 | "node": ">=18"
666 | },
667 | "peerDependencies": {
668 | "@types/node": ">=18"
669 | }
670 | },
671 | "node_modules/@nodelib/fs.scandir": {
672 | "version": "2.1.5",
673 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
674 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
675 | "license": "MIT",
676 | "dependencies": {
677 | "@nodelib/fs.stat": "2.0.5",
678 | "run-parallel": "^1.1.9"
679 | },
680 | "engines": {
681 | "node": ">= 8"
682 | }
683 | },
684 | "node_modules/@nodelib/fs.stat": {
685 | "version": "2.0.5",
686 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
687 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
688 | "license": "MIT",
689 | "engines": {
690 | "node": ">= 8"
691 | }
692 | },
693 | "node_modules/@nodelib/fs.walk": {
694 | "version": "1.2.8",
695 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
696 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
697 | "license": "MIT",
698 | "dependencies": {
699 | "@nodelib/fs.scandir": "2.1.5",
700 | "fastq": "^1.6.0"
701 | },
702 | "engines": {
703 | "node": ">= 8"
704 | }
705 | },
706 | "node_modules/@oclif/core": {
707 | "version": "4.2.4",
708 | "resolved": "https://registry.npmjs.org/@oclif/core/-/core-4.2.4.tgz",
709 | "integrity": "sha512-JDqdhX6fBbijY3ouubfmX7yFBXy95YSpiAVk0TAaXXCoSqoo/2WMcV2Ufv2V+8zriafPU/rvKgI+ZE07/7HwfQ==",
710 | "license": "MIT",
711 | "dependencies": {
712 | "ansi-escapes": "^4.3.2",
713 | "ansis": "^3.9.0",
714 | "clean-stack": "^3.0.1",
715 | "cli-spinners": "^2.9.2",
716 | "debug": "^4.4.0",
717 | "ejs": "^3.1.10",
718 | "get-package-type": "^0.1.0",
719 | "globby": "^11.1.0",
720 | "indent-string": "^4.0.0",
721 | "is-wsl": "^2.2.0",
722 | "lilconfig": "^3.1.3",
723 | "minimatch": "^9.0.5",
724 | "semver": "^7.6.3",
725 | "string-width": "^4.2.3",
726 | "supports-color": "^8",
727 | "widest-line": "^3.1.0",
728 | "wordwrap": "^1.0.0",
729 | "wrap-ansi": "^7.0.0"
730 | },
731 | "engines": {
732 | "node": ">=18.0.0"
733 | }
734 | },
735 | "node_modules/@oclif/plugin-autocomplete": {
736 | "version": "3.2.18",
737 | "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-3.2.18.tgz",
738 | "integrity": "sha512-MX1x7J0K+KtSK8xaOjt1SiXgsQPCV22dQD2Fm2o654SlQAJZN4I+k7vyG0gv36UqT1lFeUo2upWeW71BsXWsZA==",
739 | "license": "MIT",
740 | "dependencies": {
741 | "@oclif/core": "^4",
742 | "ansis": "^3.5.2",
743 | "debug": "^4.4.0",
744 | "ejs": "^3.1.10"
745 | },
746 | "engines": {
747 | "node": ">=18.0.0"
748 | }
749 | },
750 | "node_modules/@oclif/plugin-help": {
751 | "version": "6.2.22",
752 | "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-6.2.22.tgz",
753 | "integrity": "sha512-h4DxdEqlHFT310OUB3bDAZ8/ZDyOdyq3r1lLxaPcGWxHPt4mC3OLgYYMz95E+PmxvVd8kz2gzP3nHGO22ziCUw==",
754 | "license": "MIT",
755 | "dependencies": {
756 | "@oclif/core": "^4"
757 | },
758 | "engines": {
759 | "node": ">=18.0.0"
760 | }
761 | },
762 | "node_modules/@oclif/plugin-not-found": {
763 | "version": "3.2.37",
764 | "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-3.2.37.tgz",
765 | "integrity": "sha512-+mPderF9TfxGYGfMBxcVn5J7ruUEyPv4I0rElhVewpwTnphxbHOqyaXIoiZ6bSxB0kAVdVH5jPUaVjyR2fOr3Q==",
766 | "license": "MIT",
767 | "dependencies": {
768 | "@inquirer/prompts": "^7.2.3",
769 | "@oclif/core": "^4",
770 | "ansis": "^3.8.1",
771 | "fast-levenshtein": "^3.0.0"
772 | },
773 | "engines": {
774 | "node": ">=18.0.0"
775 | }
776 | },
777 | "node_modules/@raycast/api": {
778 | "version": "1.89.1",
779 | "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.89.1.tgz",
780 | "integrity": "sha512-jSHadwfQuUvg9HDOnhRHoiUGTPVvyBxC7dhlZSPhwJ9odiKtsTk8F8ei0lB3i2wJLmUa9y/pzv5euWGuX1L/OQ==",
781 | "license": "MIT",
782 | "dependencies": {
783 | "@oclif/core": "^4.0.33",
784 | "@oclif/plugin-autocomplete": "^3.2.10",
785 | "@oclif/plugin-help": "^6.2.18",
786 | "@oclif/plugin-not-found": "^3.2.28",
787 | "@types/node": "20.8.10",
788 | "@types/react": "18.3.3",
789 | "esbuild": "^0.24.0",
790 | "react": "18.3.1"
791 | },
792 | "bin": {
793 | "ray": "bin/run.js"
794 | },
795 | "engines": {
796 | "node": ">=20.5.0"
797 | },
798 | "peerDependencies": {
799 | "@types/node": "20.8.10",
800 | "@types/react": "18.3.3",
801 | "react-devtools": "5.2.0"
802 | },
803 | "peerDependenciesMeta": {
804 | "@types/node": {
805 | "optional": true
806 | },
807 | "@types/react": {
808 | "optional": true
809 | },
810 | "react-devtools": {
811 | "optional": true
812 | }
813 | }
814 | },
815 | "node_modules/@raycast/api/node_modules/@types/node": {
816 | "version": "20.8.10",
817 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz",
818 | "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==",
819 | "license": "MIT",
820 | "dependencies": {
821 | "undici-types": "~5.26.4"
822 | }
823 | },
824 | "node_modules/@raycast/api/node_modules/@types/react": {
825 | "version": "18.3.3",
826 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz",
827 | "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==",
828 | "license": "MIT",
829 | "dependencies": {
830 | "@types/prop-types": "*",
831 | "csstype": "^3.0.2"
832 | }
833 | },
834 | "node_modules/@raycast/api/node_modules/undici-types": {
835 | "version": "5.26.5",
836 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
837 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
838 | "license": "MIT"
839 | },
840 | "node_modules/@raycast/utils": {
841 | "version": "1.18.1",
842 | "resolved": "https://registry.npmjs.org/@raycast/utils/-/utils-1.18.1.tgz",
843 | "integrity": "sha512-fNrybWovB5WSiotqrExMNVWtODH5DATFMvqJboIjwM2X8Ddvgt7tkf2Ol0vA0UBDVaGwDV+jpX/ZBhMnjz5TzQ==",
844 | "dev": true,
845 | "license": "MIT",
846 | "dependencies": {
847 | "cross-fetch": "^3.1.6",
848 | "dequal": "^2.0.3",
849 | "object-hash": "^3.0.0",
850 | "signal-exit": "^4.0.2",
851 | "stream-chain": "^2.2.5",
852 | "stream-json": "^1.8.0"
853 | },
854 | "peerDependencies": {
855 | "@raycast/api": ">=1.69.0"
856 | }
857 | },
858 | "node_modules/@types/node": {
859 | "version": "20.17.16",
860 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.16.tgz",
861 | "integrity": "sha512-vOTpLduLkZXePLxHiHsBLp98mHGnl8RptV4YAO3HfKO5UHjDvySGbxKtpYfy8Sx5+WKcgc45qNreJJRVM3L6mw==",
862 | "license": "MIT",
863 | "dependencies": {
864 | "undici-types": "~6.19.2"
865 | }
866 | },
867 | "node_modules/@types/prop-types": {
868 | "version": "15.7.14",
869 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
870 | "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==",
871 | "license": "MIT"
872 | },
873 | "node_modules/@types/react": {
874 | "version": "18.3.18",
875 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz",
876 | "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==",
877 | "dev": true,
878 | "license": "MIT",
879 | "dependencies": {
880 | "@types/prop-types": "*",
881 | "csstype": "^3.0.2"
882 | }
883 | },
884 | "node_modules/ansi-escapes": {
885 | "version": "4.3.2",
886 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
887 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
888 | "license": "MIT",
889 | "dependencies": {
890 | "type-fest": "^0.21.3"
891 | },
892 | "engines": {
893 | "node": ">=8"
894 | },
895 | "funding": {
896 | "url": "https://github.com/sponsors/sindresorhus"
897 | }
898 | },
899 | "node_modules/ansi-regex": {
900 | "version": "5.0.1",
901 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
902 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
903 | "license": "MIT",
904 | "engines": {
905 | "node": ">=8"
906 | }
907 | },
908 | "node_modules/ansi-styles": {
909 | "version": "4.3.0",
910 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
911 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
912 | "license": "MIT",
913 | "dependencies": {
914 | "color-convert": "^2.0.1"
915 | },
916 | "engines": {
917 | "node": ">=8"
918 | },
919 | "funding": {
920 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
921 | }
922 | },
923 | "node_modules/ansis": {
924 | "version": "3.9.0",
925 | "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.9.0.tgz",
926 | "integrity": "sha512-PcDrVe15ldexeZMsVLBAzBwF2KhZgaU0R+CHxH+x5kqn/pO+UWVBZJ+NEXMPpEOLUFeNsnNdoWYc2gwO+MVkDg==",
927 | "license": "ISC",
928 | "engines": {
929 | "node": ">=16"
930 | }
931 | },
932 | "node_modules/array-union": {
933 | "version": "2.1.0",
934 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
935 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
936 | "license": "MIT",
937 | "engines": {
938 | "node": ">=8"
939 | }
940 | },
941 | "node_modules/async": {
942 | "version": "3.2.6",
943 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
944 | "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
945 | "license": "MIT"
946 | },
947 | "node_modules/balanced-match": {
948 | "version": "1.0.2",
949 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
950 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
951 | "license": "MIT"
952 | },
953 | "node_modules/brace-expansion": {
954 | "version": "2.0.1",
955 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
956 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
957 | "license": "MIT",
958 | "dependencies": {
959 | "balanced-match": "^1.0.0"
960 | }
961 | },
962 | "node_modules/braces": {
963 | "version": "3.0.3",
964 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
965 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
966 | "license": "MIT",
967 | "dependencies": {
968 | "fill-range": "^7.1.1"
969 | },
970 | "engines": {
971 | "node": ">=8"
972 | }
973 | },
974 | "node_modules/chalk": {
975 | "version": "4.1.2",
976 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
977 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
978 | "license": "MIT",
979 | "dependencies": {
980 | "ansi-styles": "^4.1.0",
981 | "supports-color": "^7.1.0"
982 | },
983 | "engines": {
984 | "node": ">=10"
985 | },
986 | "funding": {
987 | "url": "https://github.com/chalk/chalk?sponsor=1"
988 | }
989 | },
990 | "node_modules/chalk/node_modules/supports-color": {
991 | "version": "7.2.0",
992 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
993 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
994 | "license": "MIT",
995 | "dependencies": {
996 | "has-flag": "^4.0.0"
997 | },
998 | "engines": {
999 | "node": ">=8"
1000 | }
1001 | },
1002 | "node_modules/chardet": {
1003 | "version": "0.7.0",
1004 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
1005 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
1006 | "license": "MIT"
1007 | },
1008 | "node_modules/clean-stack": {
1009 | "version": "3.0.1",
1010 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz",
1011 | "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==",
1012 | "license": "MIT",
1013 | "dependencies": {
1014 | "escape-string-regexp": "4.0.0"
1015 | },
1016 | "engines": {
1017 | "node": ">=10"
1018 | },
1019 | "funding": {
1020 | "url": "https://github.com/sponsors/sindresorhus"
1021 | }
1022 | },
1023 | "node_modules/cli-spinners": {
1024 | "version": "2.9.2",
1025 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
1026 | "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
1027 | "license": "MIT",
1028 | "engines": {
1029 | "node": ">=6"
1030 | },
1031 | "funding": {
1032 | "url": "https://github.com/sponsors/sindresorhus"
1033 | }
1034 | },
1035 | "node_modules/cli-width": {
1036 | "version": "4.1.0",
1037 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
1038 | "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
1039 | "license": "ISC",
1040 | "engines": {
1041 | "node": ">= 12"
1042 | }
1043 | },
1044 | "node_modules/color-convert": {
1045 | "version": "2.0.1",
1046 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1047 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1048 | "license": "MIT",
1049 | "dependencies": {
1050 | "color-name": "~1.1.4"
1051 | },
1052 | "engines": {
1053 | "node": ">=7.0.0"
1054 | }
1055 | },
1056 | "node_modules/color-name": {
1057 | "version": "1.1.4",
1058 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1059 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1060 | "license": "MIT"
1061 | },
1062 | "node_modules/concat-map": {
1063 | "version": "0.0.1",
1064 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1065 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
1066 | "license": "MIT"
1067 | },
1068 | "node_modules/cross-fetch": {
1069 | "version": "3.2.0",
1070 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz",
1071 | "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==",
1072 | "dev": true,
1073 | "license": "MIT",
1074 | "dependencies": {
1075 | "node-fetch": "^2.7.0"
1076 | }
1077 | },
1078 | "node_modules/cross-fetch/node_modules/node-fetch": {
1079 | "version": "2.7.0",
1080 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
1081 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
1082 | "dev": true,
1083 | "license": "MIT",
1084 | "dependencies": {
1085 | "whatwg-url": "^5.0.0"
1086 | },
1087 | "engines": {
1088 | "node": "4.x || >=6.0.0"
1089 | },
1090 | "peerDependencies": {
1091 | "encoding": "^0.1.0"
1092 | },
1093 | "peerDependenciesMeta": {
1094 | "encoding": {
1095 | "optional": true
1096 | }
1097 | }
1098 | },
1099 | "node_modules/csstype": {
1100 | "version": "3.1.3",
1101 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
1102 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
1103 | "license": "MIT"
1104 | },
1105 | "node_modules/data-uri-to-buffer": {
1106 | "version": "4.0.1",
1107 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
1108 | "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
1109 | "license": "MIT",
1110 | "engines": {
1111 | "node": ">= 12"
1112 | }
1113 | },
1114 | "node_modules/debug": {
1115 | "version": "4.4.0",
1116 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
1117 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
1118 | "license": "MIT",
1119 | "dependencies": {
1120 | "ms": "^2.1.3"
1121 | },
1122 | "engines": {
1123 | "node": ">=6.0"
1124 | },
1125 | "peerDependenciesMeta": {
1126 | "supports-color": {
1127 | "optional": true
1128 | }
1129 | }
1130 | },
1131 | "node_modules/dequal": {
1132 | "version": "2.0.3",
1133 | "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
1134 | "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
1135 | "dev": true,
1136 | "license": "MIT",
1137 | "engines": {
1138 | "node": ">=6"
1139 | }
1140 | },
1141 | "node_modules/dir-glob": {
1142 | "version": "3.0.1",
1143 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
1144 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
1145 | "license": "MIT",
1146 | "dependencies": {
1147 | "path-type": "^4.0.0"
1148 | },
1149 | "engines": {
1150 | "node": ">=8"
1151 | }
1152 | },
1153 | "node_modules/ejs": {
1154 | "version": "3.1.10",
1155 | "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
1156 | "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
1157 | "license": "Apache-2.0",
1158 | "dependencies": {
1159 | "jake": "^10.8.5"
1160 | },
1161 | "bin": {
1162 | "ejs": "bin/cli.js"
1163 | },
1164 | "engines": {
1165 | "node": ">=0.10.0"
1166 | }
1167 | },
1168 | "node_modules/emoji-regex": {
1169 | "version": "8.0.0",
1170 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1171 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1172 | "license": "MIT"
1173 | },
1174 | "node_modules/esbuild": {
1175 | "version": "0.24.2",
1176 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
1177 | "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
1178 | "hasInstallScript": true,
1179 | "license": "MIT",
1180 | "bin": {
1181 | "esbuild": "bin/esbuild"
1182 | },
1183 | "engines": {
1184 | "node": ">=18"
1185 | },
1186 | "optionalDependencies": {
1187 | "@esbuild/aix-ppc64": "0.24.2",
1188 | "@esbuild/android-arm": "0.24.2",
1189 | "@esbuild/android-arm64": "0.24.2",
1190 | "@esbuild/android-x64": "0.24.2",
1191 | "@esbuild/darwin-arm64": "0.24.2",
1192 | "@esbuild/darwin-x64": "0.24.2",
1193 | "@esbuild/freebsd-arm64": "0.24.2",
1194 | "@esbuild/freebsd-x64": "0.24.2",
1195 | "@esbuild/linux-arm": "0.24.2",
1196 | "@esbuild/linux-arm64": "0.24.2",
1197 | "@esbuild/linux-ia32": "0.24.2",
1198 | "@esbuild/linux-loong64": "0.24.2",
1199 | "@esbuild/linux-mips64el": "0.24.2",
1200 | "@esbuild/linux-ppc64": "0.24.2",
1201 | "@esbuild/linux-riscv64": "0.24.2",
1202 | "@esbuild/linux-s390x": "0.24.2",
1203 | "@esbuild/linux-x64": "0.24.2",
1204 | "@esbuild/netbsd-arm64": "0.24.2",
1205 | "@esbuild/netbsd-x64": "0.24.2",
1206 | "@esbuild/openbsd-arm64": "0.24.2",
1207 | "@esbuild/openbsd-x64": "0.24.2",
1208 | "@esbuild/sunos-x64": "0.24.2",
1209 | "@esbuild/win32-arm64": "0.24.2",
1210 | "@esbuild/win32-ia32": "0.24.2",
1211 | "@esbuild/win32-x64": "0.24.2"
1212 | }
1213 | },
1214 | "node_modules/escape-string-regexp": {
1215 | "version": "4.0.0",
1216 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
1217 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
1218 | "license": "MIT",
1219 | "engines": {
1220 | "node": ">=10"
1221 | },
1222 | "funding": {
1223 | "url": "https://github.com/sponsors/sindresorhus"
1224 | }
1225 | },
1226 | "node_modules/external-editor": {
1227 | "version": "3.1.0",
1228 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
1229 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
1230 | "license": "MIT",
1231 | "dependencies": {
1232 | "chardet": "^0.7.0",
1233 | "iconv-lite": "^0.4.24",
1234 | "tmp": "^0.0.33"
1235 | },
1236 | "engines": {
1237 | "node": ">=4"
1238 | }
1239 | },
1240 | "node_modules/fast-glob": {
1241 | "version": "3.3.3",
1242 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
1243 | "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
1244 | "license": "MIT",
1245 | "dependencies": {
1246 | "@nodelib/fs.stat": "^2.0.2",
1247 | "@nodelib/fs.walk": "^1.2.3",
1248 | "glob-parent": "^5.1.2",
1249 | "merge2": "^1.3.0",
1250 | "micromatch": "^4.0.8"
1251 | },
1252 | "engines": {
1253 | "node": ">=8.6.0"
1254 | }
1255 | },
1256 | "node_modules/fast-levenshtein": {
1257 | "version": "3.0.0",
1258 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz",
1259 | "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==",
1260 | "license": "MIT",
1261 | "dependencies": {
1262 | "fastest-levenshtein": "^1.0.7"
1263 | }
1264 | },
1265 | "node_modules/fastest-levenshtein": {
1266 | "version": "1.0.16",
1267 | "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
1268 | "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
1269 | "license": "MIT",
1270 | "engines": {
1271 | "node": ">= 4.9.1"
1272 | }
1273 | },
1274 | "node_modules/fastq": {
1275 | "version": "1.18.0",
1276 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz",
1277 | "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==",
1278 | "license": "ISC",
1279 | "dependencies": {
1280 | "reusify": "^1.0.4"
1281 | }
1282 | },
1283 | "node_modules/fetch-blob": {
1284 | "version": "3.2.0",
1285 | "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
1286 | "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
1287 | "funding": [
1288 | {
1289 | "type": "github",
1290 | "url": "https://github.com/sponsors/jimmywarting"
1291 | },
1292 | {
1293 | "type": "paypal",
1294 | "url": "https://paypal.me/jimmywarting"
1295 | }
1296 | ],
1297 | "license": "MIT",
1298 | "dependencies": {
1299 | "node-domexception": "^1.0.0",
1300 | "web-streams-polyfill": "^3.0.3"
1301 | },
1302 | "engines": {
1303 | "node": "^12.20 || >= 14.13"
1304 | }
1305 | },
1306 | "node_modules/filelist": {
1307 | "version": "1.0.4",
1308 | "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
1309 | "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
1310 | "license": "Apache-2.0",
1311 | "dependencies": {
1312 | "minimatch": "^5.0.1"
1313 | }
1314 | },
1315 | "node_modules/filelist/node_modules/minimatch": {
1316 | "version": "5.1.6",
1317 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
1318 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
1319 | "license": "ISC",
1320 | "dependencies": {
1321 | "brace-expansion": "^2.0.1"
1322 | },
1323 | "engines": {
1324 | "node": ">=10"
1325 | }
1326 | },
1327 | "node_modules/fill-range": {
1328 | "version": "7.1.1",
1329 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
1330 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
1331 | "license": "MIT",
1332 | "dependencies": {
1333 | "to-regex-range": "^5.0.1"
1334 | },
1335 | "engines": {
1336 | "node": ">=8"
1337 | }
1338 | },
1339 | "node_modules/formdata-polyfill": {
1340 | "version": "4.0.10",
1341 | "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
1342 | "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
1343 | "license": "MIT",
1344 | "dependencies": {
1345 | "fetch-blob": "^3.1.2"
1346 | },
1347 | "engines": {
1348 | "node": ">=12.20.0"
1349 | }
1350 | },
1351 | "node_modules/get-package-type": {
1352 | "version": "0.1.0",
1353 | "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
1354 | "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
1355 | "license": "MIT",
1356 | "engines": {
1357 | "node": ">=8.0.0"
1358 | }
1359 | },
1360 | "node_modules/glob-parent": {
1361 | "version": "5.1.2",
1362 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1363 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1364 | "license": "ISC",
1365 | "dependencies": {
1366 | "is-glob": "^4.0.1"
1367 | },
1368 | "engines": {
1369 | "node": ">= 6"
1370 | }
1371 | },
1372 | "node_modules/globby": {
1373 | "version": "11.1.0",
1374 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
1375 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
1376 | "license": "MIT",
1377 | "dependencies": {
1378 | "array-union": "^2.1.0",
1379 | "dir-glob": "^3.0.1",
1380 | "fast-glob": "^3.2.9",
1381 | "ignore": "^5.2.0",
1382 | "merge2": "^1.4.1",
1383 | "slash": "^3.0.0"
1384 | },
1385 | "engines": {
1386 | "node": ">=10"
1387 | },
1388 | "funding": {
1389 | "url": "https://github.com/sponsors/sindresorhus"
1390 | }
1391 | },
1392 | "node_modules/has-flag": {
1393 | "version": "4.0.0",
1394 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1395 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1396 | "license": "MIT",
1397 | "engines": {
1398 | "node": ">=8"
1399 | }
1400 | },
1401 | "node_modules/iconv-lite": {
1402 | "version": "0.4.24",
1403 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1404 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1405 | "license": "MIT",
1406 | "dependencies": {
1407 | "safer-buffer": ">= 2.1.2 < 3"
1408 | },
1409 | "engines": {
1410 | "node": ">=0.10.0"
1411 | }
1412 | },
1413 | "node_modules/ignore": {
1414 | "version": "5.3.2",
1415 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
1416 | "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
1417 | "license": "MIT",
1418 | "engines": {
1419 | "node": ">= 4"
1420 | }
1421 | },
1422 | "node_modules/indent-string": {
1423 | "version": "4.0.0",
1424 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
1425 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
1426 | "license": "MIT",
1427 | "engines": {
1428 | "node": ">=8"
1429 | }
1430 | },
1431 | "node_modules/is-docker": {
1432 | "version": "2.2.1",
1433 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
1434 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
1435 | "license": "MIT",
1436 | "bin": {
1437 | "is-docker": "cli.js"
1438 | },
1439 | "engines": {
1440 | "node": ">=8"
1441 | },
1442 | "funding": {
1443 | "url": "https://github.com/sponsors/sindresorhus"
1444 | }
1445 | },
1446 | "node_modules/is-extglob": {
1447 | "version": "2.1.1",
1448 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1449 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1450 | "license": "MIT",
1451 | "engines": {
1452 | "node": ">=0.10.0"
1453 | }
1454 | },
1455 | "node_modules/is-fullwidth-code-point": {
1456 | "version": "3.0.0",
1457 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1458 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1459 | "license": "MIT",
1460 | "engines": {
1461 | "node": ">=8"
1462 | }
1463 | },
1464 | "node_modules/is-glob": {
1465 | "version": "4.0.3",
1466 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1467 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1468 | "license": "MIT",
1469 | "dependencies": {
1470 | "is-extglob": "^2.1.1"
1471 | },
1472 | "engines": {
1473 | "node": ">=0.10.0"
1474 | }
1475 | },
1476 | "node_modules/is-number": {
1477 | "version": "7.0.0",
1478 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1479 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1480 | "license": "MIT",
1481 | "engines": {
1482 | "node": ">=0.12.0"
1483 | }
1484 | },
1485 | "node_modules/is-wsl": {
1486 | "version": "2.2.0",
1487 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
1488 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
1489 | "license": "MIT",
1490 | "dependencies": {
1491 | "is-docker": "^2.0.0"
1492 | },
1493 | "engines": {
1494 | "node": ">=8"
1495 | }
1496 | },
1497 | "node_modules/jake": {
1498 | "version": "10.9.2",
1499 | "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
1500 | "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
1501 | "license": "Apache-2.0",
1502 | "dependencies": {
1503 | "async": "^3.2.3",
1504 | "chalk": "^4.0.2",
1505 | "filelist": "^1.0.4",
1506 | "minimatch": "^3.1.2"
1507 | },
1508 | "bin": {
1509 | "jake": "bin/cli.js"
1510 | },
1511 | "engines": {
1512 | "node": ">=10"
1513 | }
1514 | },
1515 | "node_modules/jake/node_modules/brace-expansion": {
1516 | "version": "1.1.11",
1517 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1518 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1519 | "license": "MIT",
1520 | "dependencies": {
1521 | "balanced-match": "^1.0.0",
1522 | "concat-map": "0.0.1"
1523 | }
1524 | },
1525 | "node_modules/jake/node_modules/minimatch": {
1526 | "version": "3.1.2",
1527 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1528 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1529 | "license": "ISC",
1530 | "dependencies": {
1531 | "brace-expansion": "^1.1.7"
1532 | },
1533 | "engines": {
1534 | "node": "*"
1535 | }
1536 | },
1537 | "node_modules/js-tokens": {
1538 | "version": "4.0.0",
1539 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1540 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1541 | "license": "MIT"
1542 | },
1543 | "node_modules/lilconfig": {
1544 | "version": "3.1.3",
1545 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
1546 | "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
1547 | "license": "MIT",
1548 | "engines": {
1549 | "node": ">=14"
1550 | },
1551 | "funding": {
1552 | "url": "https://github.com/sponsors/antonk52"
1553 | }
1554 | },
1555 | "node_modules/loose-envify": {
1556 | "version": "1.4.0",
1557 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1558 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1559 | "license": "MIT",
1560 | "dependencies": {
1561 | "js-tokens": "^3.0.0 || ^4.0.0"
1562 | },
1563 | "bin": {
1564 | "loose-envify": "cli.js"
1565 | }
1566 | },
1567 | "node_modules/merge2": {
1568 | "version": "1.4.1",
1569 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1570 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1571 | "license": "MIT",
1572 | "engines": {
1573 | "node": ">= 8"
1574 | }
1575 | },
1576 | "node_modules/micromatch": {
1577 | "version": "4.0.8",
1578 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
1579 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
1580 | "license": "MIT",
1581 | "dependencies": {
1582 | "braces": "^3.0.3",
1583 | "picomatch": "^2.3.1"
1584 | },
1585 | "engines": {
1586 | "node": ">=8.6"
1587 | }
1588 | },
1589 | "node_modules/minimatch": {
1590 | "version": "9.0.5",
1591 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
1592 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
1593 | "license": "ISC",
1594 | "dependencies": {
1595 | "brace-expansion": "^2.0.1"
1596 | },
1597 | "engines": {
1598 | "node": ">=16 || 14 >=14.17"
1599 | },
1600 | "funding": {
1601 | "url": "https://github.com/sponsors/isaacs"
1602 | }
1603 | },
1604 | "node_modules/ms": {
1605 | "version": "2.1.3",
1606 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1607 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1608 | "license": "MIT"
1609 | },
1610 | "node_modules/mute-stream": {
1611 | "version": "2.0.0",
1612 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
1613 | "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
1614 | "license": "ISC",
1615 | "engines": {
1616 | "node": "^18.17.0 || >=20.5.0"
1617 | }
1618 | },
1619 | "node_modules/node-domexception": {
1620 | "version": "1.0.0",
1621 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
1622 | "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
1623 | "funding": [
1624 | {
1625 | "type": "github",
1626 | "url": "https://github.com/sponsors/jimmywarting"
1627 | },
1628 | {
1629 | "type": "github",
1630 | "url": "https://paypal.me/jimmywarting"
1631 | }
1632 | ],
1633 | "license": "MIT",
1634 | "engines": {
1635 | "node": ">=10.5.0"
1636 | }
1637 | },
1638 | "node_modules/node-fetch": {
1639 | "version": "3.3.2",
1640 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
1641 | "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
1642 | "license": "MIT",
1643 | "dependencies": {
1644 | "data-uri-to-buffer": "^4.0.0",
1645 | "fetch-blob": "^3.1.4",
1646 | "formdata-polyfill": "^4.0.10"
1647 | },
1648 | "engines": {
1649 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
1650 | },
1651 | "funding": {
1652 | "type": "opencollective",
1653 | "url": "https://opencollective.com/node-fetch"
1654 | }
1655 | },
1656 | "node_modules/object-hash": {
1657 | "version": "3.0.0",
1658 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
1659 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
1660 | "dev": true,
1661 | "license": "MIT",
1662 | "engines": {
1663 | "node": ">= 6"
1664 | }
1665 | },
1666 | "node_modules/os-tmpdir": {
1667 | "version": "1.0.2",
1668 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
1669 | "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
1670 | "license": "MIT",
1671 | "engines": {
1672 | "node": ">=0.10.0"
1673 | }
1674 | },
1675 | "node_modules/path-type": {
1676 | "version": "4.0.0",
1677 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
1678 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
1679 | "license": "MIT",
1680 | "engines": {
1681 | "node": ">=8"
1682 | }
1683 | },
1684 | "node_modules/picomatch": {
1685 | "version": "2.3.1",
1686 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1687 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1688 | "license": "MIT",
1689 | "engines": {
1690 | "node": ">=8.6"
1691 | },
1692 | "funding": {
1693 | "url": "https://github.com/sponsors/jonschlinkert"
1694 | }
1695 | },
1696 | "node_modules/queue-microtask": {
1697 | "version": "1.2.3",
1698 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
1699 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
1700 | "funding": [
1701 | {
1702 | "type": "github",
1703 | "url": "https://github.com/sponsors/feross"
1704 | },
1705 | {
1706 | "type": "patreon",
1707 | "url": "https://www.patreon.com/feross"
1708 | },
1709 | {
1710 | "type": "consulting",
1711 | "url": "https://feross.org/support"
1712 | }
1713 | ],
1714 | "license": "MIT"
1715 | },
1716 | "node_modules/react": {
1717 | "version": "18.3.1",
1718 | "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
1719 | "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
1720 | "license": "MIT",
1721 | "dependencies": {
1722 | "loose-envify": "^1.1.0"
1723 | },
1724 | "engines": {
1725 | "node": ">=0.10.0"
1726 | }
1727 | },
1728 | "node_modules/reusify": {
1729 | "version": "1.0.4",
1730 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
1731 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
1732 | "license": "MIT",
1733 | "engines": {
1734 | "iojs": ">=1.0.0",
1735 | "node": ">=0.10.0"
1736 | }
1737 | },
1738 | "node_modules/run-parallel": {
1739 | "version": "1.2.0",
1740 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
1741 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1742 | "funding": [
1743 | {
1744 | "type": "github",
1745 | "url": "https://github.com/sponsors/feross"
1746 | },
1747 | {
1748 | "type": "patreon",
1749 | "url": "https://www.patreon.com/feross"
1750 | },
1751 | {
1752 | "type": "consulting",
1753 | "url": "https://feross.org/support"
1754 | }
1755 | ],
1756 | "license": "MIT",
1757 | "dependencies": {
1758 | "queue-microtask": "^1.2.2"
1759 | }
1760 | },
1761 | "node_modules/safer-buffer": {
1762 | "version": "2.1.2",
1763 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1764 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1765 | "license": "MIT"
1766 | },
1767 | "node_modules/semver": {
1768 | "version": "7.6.3",
1769 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
1770 | "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
1771 | "license": "ISC",
1772 | "bin": {
1773 | "semver": "bin/semver.js"
1774 | },
1775 | "engines": {
1776 | "node": ">=10"
1777 | }
1778 | },
1779 | "node_modules/signal-exit": {
1780 | "version": "4.1.0",
1781 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
1782 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
1783 | "license": "ISC",
1784 | "engines": {
1785 | "node": ">=14"
1786 | },
1787 | "funding": {
1788 | "url": "https://github.com/sponsors/isaacs"
1789 | }
1790 | },
1791 | "node_modules/slash": {
1792 | "version": "3.0.0",
1793 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
1794 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
1795 | "license": "MIT",
1796 | "engines": {
1797 | "node": ">=8"
1798 | }
1799 | },
1800 | "node_modules/stream-chain": {
1801 | "version": "2.2.5",
1802 | "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz",
1803 | "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==",
1804 | "dev": true,
1805 | "license": "BSD-3-Clause"
1806 | },
1807 | "node_modules/stream-json": {
1808 | "version": "1.9.1",
1809 | "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz",
1810 | "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==",
1811 | "dev": true,
1812 | "license": "BSD-3-Clause",
1813 | "dependencies": {
1814 | "stream-chain": "^2.2.5"
1815 | }
1816 | },
1817 | "node_modules/string-width": {
1818 | "version": "4.2.3",
1819 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1820 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1821 | "license": "MIT",
1822 | "dependencies": {
1823 | "emoji-regex": "^8.0.0",
1824 | "is-fullwidth-code-point": "^3.0.0",
1825 | "strip-ansi": "^6.0.1"
1826 | },
1827 | "engines": {
1828 | "node": ">=8"
1829 | }
1830 | },
1831 | "node_modules/strip-ansi": {
1832 | "version": "6.0.1",
1833 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1834 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1835 | "license": "MIT",
1836 | "dependencies": {
1837 | "ansi-regex": "^5.0.1"
1838 | },
1839 | "engines": {
1840 | "node": ">=8"
1841 | }
1842 | },
1843 | "node_modules/supports-color": {
1844 | "version": "8.1.1",
1845 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
1846 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
1847 | "license": "MIT",
1848 | "dependencies": {
1849 | "has-flag": "^4.0.0"
1850 | },
1851 | "engines": {
1852 | "node": ">=10"
1853 | },
1854 | "funding": {
1855 | "url": "https://github.com/chalk/supports-color?sponsor=1"
1856 | }
1857 | },
1858 | "node_modules/tmp": {
1859 | "version": "0.0.33",
1860 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
1861 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
1862 | "license": "MIT",
1863 | "dependencies": {
1864 | "os-tmpdir": "~1.0.2"
1865 | },
1866 | "engines": {
1867 | "node": ">=0.6.0"
1868 | }
1869 | },
1870 | "node_modules/to-regex-range": {
1871 | "version": "5.0.1",
1872 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1873 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1874 | "license": "MIT",
1875 | "dependencies": {
1876 | "is-number": "^7.0.0"
1877 | },
1878 | "engines": {
1879 | "node": ">=8.0"
1880 | }
1881 | },
1882 | "node_modules/tr46": {
1883 | "version": "0.0.3",
1884 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
1885 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
1886 | "dev": true,
1887 | "license": "MIT"
1888 | },
1889 | "node_modules/type-fest": {
1890 | "version": "0.21.3",
1891 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
1892 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
1893 | "license": "(MIT OR CC0-1.0)",
1894 | "engines": {
1895 | "node": ">=10"
1896 | },
1897 | "funding": {
1898 | "url": "https://github.com/sponsors/sindresorhus"
1899 | }
1900 | },
1901 | "node_modules/typescript": {
1902 | "version": "5.7.3",
1903 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
1904 | "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
1905 | "dev": true,
1906 | "license": "Apache-2.0",
1907 | "bin": {
1908 | "tsc": "bin/tsc",
1909 | "tsserver": "bin/tsserver"
1910 | },
1911 | "engines": {
1912 | "node": ">=14.17"
1913 | }
1914 | },
1915 | "node_modules/undici-types": {
1916 | "version": "6.19.8",
1917 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
1918 | "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
1919 | "license": "MIT"
1920 | },
1921 | "node_modules/web-streams-polyfill": {
1922 | "version": "3.3.3",
1923 | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
1924 | "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
1925 | "license": "MIT",
1926 | "engines": {
1927 | "node": ">= 8"
1928 | }
1929 | },
1930 | "node_modules/webidl-conversions": {
1931 | "version": "3.0.1",
1932 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
1933 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
1934 | "dev": true,
1935 | "license": "BSD-2-Clause"
1936 | },
1937 | "node_modules/whatwg-url": {
1938 | "version": "5.0.0",
1939 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
1940 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
1941 | "dev": true,
1942 | "license": "MIT",
1943 | "dependencies": {
1944 | "tr46": "~0.0.3",
1945 | "webidl-conversions": "^3.0.0"
1946 | }
1947 | },
1948 | "node_modules/widest-line": {
1949 | "version": "3.1.0",
1950 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
1951 | "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
1952 | "license": "MIT",
1953 | "dependencies": {
1954 | "string-width": "^4.0.0"
1955 | },
1956 | "engines": {
1957 | "node": ">=8"
1958 | }
1959 | },
1960 | "node_modules/wordwrap": {
1961 | "version": "1.0.0",
1962 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
1963 | "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
1964 | "license": "MIT"
1965 | },
1966 | "node_modules/wrap-ansi": {
1967 | "version": "7.0.0",
1968 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
1969 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
1970 | "license": "MIT",
1971 | "dependencies": {
1972 | "ansi-styles": "^4.0.0",
1973 | "string-width": "^4.1.0",
1974 | "strip-ansi": "^6.0.0"
1975 | },
1976 | "engines": {
1977 | "node": ">=10"
1978 | },
1979 | "funding": {
1980 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1981 | }
1982 | },
1983 | "node_modules/yoctocolors-cjs": {
1984 | "version": "2.1.2",
1985 | "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz",
1986 | "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==",
1987 | "license": "MIT",
1988 | "engines": {
1989 | "node": ">=18"
1990 | },
1991 | "funding": {
1992 | "url": "https://github.com/sponsors/sindresorhus"
1993 | }
1994 | }
1995 | }
1996 | }
1997 |
--------------------------------------------------------------------------------
/2646-44a3f244a6d9ea69.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2646],{22646:function(e,t,n){n.d(t,{S:function(){return c}});var r=n(44259),s=n(9271),a=n(30529),i=n(10353),o=n(81819),l=n(23209);function c(){}c.Provider=function(e){var t;let n=null===(t=(0,a.useSession)().data)||void 0===t?void 0:t.accessToken,{getSentinelHeaders:c}=(0,l.Kz)(),d=o.Zr.useSetting("auth_token"),f=o.Zr.useSetting("engine"),m=null;d?m=d:n&&(m=n);let p=s.useMemo(()=>({pathfinder:(0,i.l)({auth_token:m,engine:f,get_sentinel_headers:c}),vm_proxy:{vnc_url:function(e){let t=e.replace(/\./g,"-");return new URL("/ws5901/".concat(t),"wss://operator.chatgpt.com/operator-api").toString()}}}),[m,f,c]);return(0,r.jsx)(u.Provider,{value:p,children:e.children})},c.useApi=function(){let e=s.useContext(u);if(!e)throw Error("ApiClient.useApi must be used within ");return e},(c||(c={})).pathfinder=i.l;let u=s.createContext(null)},34628:function(e,t,n){var r,s,a,i,o,l,c,u,d,f,m,p;n.d(t,{Bk:function(){return r},Lf:function(){return l},TP:function(){return i},cb:function(){return s},g8:function(){return o},hr:function(){return a}}),(c=r||(r={})).ACTIVE="Active",c.STOPPED="Stopped",c.WAITING_FOR_USER="WaitingForUser",c.COMPLETED="Completed",c.PENDING_START="PendingStart",c.IN_TAKEOVER="InTakeover",(u=s||(s={})).TRIAGED="org.openai.cua.operator.flag.triaged",u.CLAIM="org.openai.cua.operator.flag.claim",u.ACTIONABLE="org.openai.cua.operator.flag.actionable",(d=a||(a={})).ORANGE="org.openai.cua.operator.flag.color-orange",d.YELLOW="org.openai.cua.operator.flag.color-yellow",d.GREEN="org.openai.cua.operator.flag.color-green",d.BLUE="org.openai.cua.operator.flag.color-blue",d.CYAN="org.openai.cua.operator.flag.color-cyan",d.PURPLE="org.openai.cua.operator.flag.color-purple",d.PINK="org.openai.cua.operator.flag.color-pink",(f=i||(i={})).PRIVATE="Private",f.PUBLIC="Public",(m=o||(o={})).LIKE="Like",m.DISLIKE="Dislike",m.NEUTRAL="Neutral",(p=l||(l={})).Saved="Saved",p.DiningEvents="Dining & Events",p.Delivery="Delivery",p.LocalServices="Local Services",p.Shopping="Shopping",p.Travel="Travel",p.News="News"},10353:function(e,t,n){n.d(t,{l:function(){return o}});var r=n(61805),s=n(10667),a=n(34628),i=n(836);function o(e){let t=e.auth_token,n=e.engine,a=e.get_sentinel_headers;return{api_url:o,image_url_for_asset_id:l,image_url_for_asset_pointer:c,image_for_asset_pointer:u,me:d,update_user_settings:f,create:m,stop:p,resume:x,allowlist_domains:h,get:v,admin_get_conversation_sampler_version:g,messages_add:y,list:w,list_recent:b,share:j,delete_conversation:N,delete_all_conversations:C,complete:_,notify_viewing:k,message_feedback:z,conversation_feedback:S,accept_tos:E,verify_age:A,onboard_takeover:T,apps_list:L,admin_apps_create:R,admin_apps_update:P,admin_apps_list:M,admin_apps_get:D,apps_get:O,apps_update_app_settings:H,apps_clear_app_settings:I,apps_suggest:F,prompts_list:K,prompts_create:U,prompts_get:B,prompts_generate:q,prompts_update:V,prompts_delete:W,messages_user:Z,start_takeover:G,end_takeover:$,current_screenshot:function(){return o("/current_screenshot")},current_screenshot_asset:X,video_create:ee,video_get:et,get_available_engines:en,conversations_upload_to_feather:er,upload_file:es,push_notifications_subscribe:ea,check_push_notification:eo,enable_push_notifications:el,disable_push_notifications:ei,get_conversation_websocket_url:ec,admin_conversations_list:eu,conversation_upsert_flags:ed,clear_user_context_for_domain:Q,clear_user_context:Y,get_user_context:J};async function i(e,n){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t&&(s.headers||(s.headers=new Headers),s.headers instanceof Headers&&s.headers.set("Authorization","Bearer ".concat(t))),await (0,r.g)(e,n,s)}function o(e){let t="https://operator.chatgpt.com/operator-api".replace(/\/$/,""),n=e.replace(/^\//,"");return new URL("".concat(t,"/").concat(n))}function l(e){return o("/images/?asset_id=".concat(e))}function c(e){return l(e.replace(/^.*:\/\//,""))}async function u(e){let n=c(e),r=new Headers;t&&r.set("Authorization","Bearer ".concat(t));let s=await window.fetch(n,{headers:r});return await s.blob()}async function d(){let e=o("/users/get");return await i(e,{})}async function f(e){let t=o("/users/settings"),n={...e};return await i(t,n)}async function m(e){let t=o("/conversations/create"),r={engine:n,...e},l=new Headers({...await a(s.t.qs.CreateConversation)});return await i(t,r,{headers:l})}async function p(e){let t=o("/conversations/stop");return await i(t,{conversation_id:e})}async function x(e){let t=o("/conversations/resume");return await i(t,{conversation_id:e,engine:n})}async function h(e,t){let n=o("/conversations/allowlist_domains");return await i(n,{conversation_id:e,domains:t})}async function v(e){let t=o("/conversations/get");return await i(t,{conversation_id:e})}async function g(e){let t=o("/admin/conversations/get_sampler_version");return await i(t,{conversation_id:e})}async function y(e){let t=o("/messages/add"),r={engine:n,...e},l=new Headers({...await a(s.t.qs.AddMessageToConversation)});return await i(t,r,{headers:l})}async function w(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,t=o("/conversations/list"),n={...e},r=await i(t,n);return r.conversations.sort((e,t)=>t.update_time-e.update_time),r}async function b(){let e=o("/conversations/list_recent");return await i(e,{})}async function j(e,t){let n=o("/conversations/share");return await i(n,{conversation_id:e,sharing_status:t})}async function N(e){let t=o("/conversations/delete");return await i(t,{conversation_id:e})}async function C(){let e=o("/conversations/delete_all");return await i(e,{})}async function _(e){let t=o("/conversations/complete");return await i(t,{conversation_id:e})}async function k(e){let t=o("/conversations/notify_viewing");return await i(t,{conversation_id:e})}async function S(e){let t=o("/conversations/feedback"),{conversation_id:n,type:r}=e,s=e.comment||null;return await i(t,{conversation_id:n,feedback:{type:r,comment:s}})}async function z(e){let t=o("/messages/feedback"),{message_id:n,type:r}=e,s=e.comment||null;return await i(t,{message_id:n,message_feedback:{type:r,comment:s}})}async function E(){let e=o("users/accept_tos");return await i(e,{})}async function A(e){let t=o("users/verify_age"),n={...e};return await i(t,n)}async function T(){let e=o("users/onboard_takeover");return await i(e,{})}async function L(){let e=o("/apps/list");return await i(e,{})}async function R(e){let t=o("/admin/apps/create"),n={...e};return await i(t,n)}async function P(e){let t=o("/admin/apps/update"),n={...e};return await i(t,n)}async function M(){let e=o("/admin/apps/list");return await i(e,{})}async function D(e){let t=o("/admin/apps/".concat(e));return await i(t,void 0,{method:"GET"})}async function O(e){let t=o("/apps/".concat(e));return await i(t,void 0,{method:"GET"})}async function H(e){let t=o("/apps/update_app_settings"),n={...e};return await i(t,n)}async function I(e){let t=o("/apps/clear_app_settings"),n={...e};return await i(t,n)}async function F(e){let t=o("/apps/suggest"),n={...e};return await i(t,n)}async function K(){let e=o("/prompts/list");return await i(e,{})}async function U(e){let t=o("/prompts/create"),n={...e};return await i(t,n)}async function B(e){let t=o("/prompts/".concat(e));return await i(t,void 0,{method:"GET"})}async function q(e){let t=o("/prompts/generate");return await i(t,{conversation_id:e})}async function V(e){let t=o("/prompts/update"),n={...e};return await i(t,n)}async function W(e){let t=o("/prompts/delete/".concat(e));return await i(t,{})}async function Z(e){let t=o("/messages/user"),r={engine:n,...e};return await i(t,r)}async function G(e){let t=o("/conversations/start_takeover");return await i(t,{conversation_id:e})}async function $(e){let t=o("/conversations/end_takeover"),n={...e};return await i(t,n)}async function Q(e){let t=o("/user_context/clear_domain"),n={...e};return await i(t,n)}async function Y(){let e=o("/user_context/clear");return await i(e,{})}async function J(){let e=o("/user_context/get");return await i(e,{})}async function X(){let e=o("/current_screenshot_asset");return{asset_id:(await i(e,{})).asset_pointer}}async function ee(e){let t=o("/conversations/video/create"),n={...e};return await i(t,n)}async function et(e){let t=o("/conversations/video/get"),n={...e};return await i(t,n)}async function en(){let e=o("/get_available_engines");return await i(e,{})}async function er(e){let t=o("/conversations/upload_to_feather"),n={...e};return await i(t,n)}async function es(e){let t=o("/upload_file"),n={...e};return await i(t,n)}async function ea(e){let t=o("/notifications/push/subscribe"),n={...e};return await i(t,n)}async function ei(){let e=o("/notifications/push/disable");return await i(e,{})}async function eo(e){let t=o("/notifications/push/exists"),n={...e};return await i(t,n)}async function el(){let e=o("/notifications/push/enable");return await i(e,{})}async function ec(e){let t=o("/conversations/websocket");return await i(t,{conversation_id:e})}async function eu(e){let t=o("/admin/conversations/get"),n={conversation_id:e.conversation_id},r=await i(t,n);return{conversations:[{id:r.id,title:r.metadata.title,user_id:r.metadata.user_id,create_time:r.metadata.create_time,update_time:r.metadata.update_time,messages_id_list:r.messages.map(e=>e.id),last_message:r.messages[-1],flags:[],sharing_status:r.metadata.sharing_status,feedback:void 0,visited_domains:r.metadata.visited_domains,status:null,app:null,vm_id:null,vm_host_address:null}],cursor:null}}async function ed(e){let t=o("/conversation/upsert_flags"),n={...e};return await i(t,n)}}o.utils=i,o.CuaTaskStatus=a.Bk,o.PrimaryConversationFlag=a.cb,o.SecondaryConversationFlag=a.hr,o.ConversationFeedbackType=a.g8,o.ConversationSharingStatus=a.TP},836:function(e,t,n){function r(e,t){return"".concat(e,"~").concat(e,"~PathfinderConversationToDisplayMessage~").concat(t)}function s(e,t){return"".concat(e,"~").concat(e,"~PathfinderConversationToSamplerMessage~").concat(t)}n.r(t),n.d(t,{get_display_message_id:function(){return r},get_sampler_message_id:function(){return s}})},43146:function(e,t,n){n.d(t,{y:function(){return o}});var r=n(44259),s=n(9271),a=n(36670),i=n(1819);let o=e=>{var t,n;let{app:o,className:l,fallbackIcon:c}=e,[u,d]=s.useState(!1);if(o.icon_url)return(0,r.jsx)("img",{src:o.icon_url,alt:null!==(t=o.name)&&void 0!==t?t:"",width:64,height:64,className:(0,a.cn)(l,"rounded-md")});{let e=c||(0,r.jsx)(i.T,{className:(0,a.cn)(l,"text-muted-foreground")});return(0,r.jsxs)(r.Fragment,{children:[!u&&e,(0,r.jsx)("img",{src:"/api/favicon?domain=".concat(o.domain),alt:null!==(n=o.name)&&void 0!==n?n:"",className:(0,a.cn)(!u&&"hidden",l),width:64,height:64,onLoad:()=>d(!0)})]})}}},6248:function(e,t,n){n.d(t,{H:function(){return a}});var r=n(44259);n(9271);var s=n(40016);function a(e){return(0,r.jsx)("span",{className:e.className,children:(0,r.jsx)(i,{...e})})}function i(e){let t=e.values;return t?a.parseMessage(e.message).map((n,s)=>(0,r.jsx)(o,{part:n,message:e.message,values:t},s)):e.message}function o(e){if("string"==typeof e.part)return e.part;let t=e.part.name;return e.values[t]}a.parseMessage=function(e){let t;let n=[],r=0;for(;null!==(t=l.placeholder.exec(e));)if(t.groups&&Array.isArray(t.indices)){let[a]=t.indices;(0,s.k)(a,"first_indices must exist");let[i,o]=a,l=e.slice(r,i);n.push(l);let c=t.groups.name;n.push({name:c}),r=o}let a=e.slice(r,e.length);return n.push(a),n};let l={placeholder:RegExp("{(?[^}]+)}","dg")}},29491:function(e,t,n){n.d(t,{u:function(){return y}});var r=n(44259),s=n(9271),a=n(80262),i=n(51187),o=n(69853),l=n(36670),c=n(83346);let u=e=>{let{shouldScaleBackground:t=!0,...n}=e;return(0,r.jsx)(o.d.Root,{shouldScaleBackground:t,...n})};u.displayName="Drawer",o.d.Trigger;let d=o.d.Portal,f=(o.d.Close,s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(o.d.Overlay,{ref:t,className:(0,l.cn)("fixed inset-0 z-50 bg-background/80",n),...s})}));f.displayName=o.d.Overlay.displayName;let m=s.forwardRef((e,t)=>{let{className:n,children:s,...a}=e;return(0,r.jsx)(d,{children:(0,r.jsxs)(c.e.Modal,{children:[(0,r.jsx)(f,{}),(0,r.jsxs)(o.d.Content,{ref:t,className:(0,l.cn)("fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto max-h-[90svh] flex-col rounded-t-[10px] border bg-background",n),...a,children:[(0,r.jsx)("div",{className:"mx-auto my-4 h-2 w-[100px] flex-none rounded-full bg-muted"}),s]})]})})});m.displayName="DrawerContent",s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(o.d.Title,{ref:t,className:(0,l.cn)("text-lg font-semibold leading-none tracking-tight",n),...s})}).displayName=o.d.Title.displayName,s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(o.d.Description,{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",n),...s})}).displayName=o.d.Description.displayName;let p={Root:u,Content:m};var x=n(57214);let h=s.forwardRef(function(e,t){let n=x.D.useWide(),{children:s,className:a,open:o,onOpenChange:l,...c}=e;return n?(0,r.jsx)(i.V.Root,{open:e.open,onOpenChange:e.onOpenChange,children:(0,r.jsx)(i.V.Content,{ref:t,className:e.className,...c,hideCloseButton:e.hideCloseButton,onPointerDownOutside:e.onPointerDownOutside,onEscapeKeyDown:e.onEscapeKeyDown,children:e.children})}):(0,r.jsx)(p.Root,{noBodyStyles:!0,open:e.open,onOpenChange:e.onOpenChange,children:(0,r.jsx)(p.Content,{ref:t,className:e.className,...c,onAnimationEnd:()=>{var e;return null===(e=c.onAnimationEnd)||void 0===e?void 0:e.call(c)},children:(0,r.jsx)("div",{children:e.children})})})});h.displayName="DimensionAwareModal";var v=n(78574),g=n(73565);function y(e){return(0,r.jsxs)(j.Provider,{debug:"ModalStore",children:[(0,r.jsx)(w,{}),e.children]})}function w(){return j.useState(e=>e.list).map(e=>(0,r.jsx)(b,{modal:e},e.id))}function b(e){let t=j.useActions(),[n,a]=s.useState(!0),i=(0,v.G)(e),o=s.useRef(document.activeElement);return s.useEffect(function(){let r;if(!n){var s,a,l;null===(s=(a=i.current.modal.options).onClose)||void 0===s||s.call(a),i.current.modal.options.restoreFocusAfterClose&&(null===(l=o.current)||void 0===l||l.focus()),r=setTimeout(()=>{t.set(t=>{t.list=t.list.filter(t=>t.id!==e.modal.id)})},5e3)}return function(){clearTimeout(r)}},[n,t,e.modal.id,i]),(0,r.jsx)(h,{className:e.modal.options.className,hideCloseButton:e.modal.options.hideCloseButton,onPointerDownOutside:e.modal.options.onPointerDownOutside,onEscapeKeyDown:e.modal.options.onEscapeKeyDown,open:n,onOpenChange:a,children:(0,r.jsx)(e.modal.Component,{dismiss:async()=>(a(!1),Promise.resolve())})})}y.useModal=function(){let e=j.useActions(),[t]=s.useState(()=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=(0,a.x0)();e.set(e=>{e.list.push({id:r,Component:t,options:n})})});return t},y.useApi=function(){let e=j.useActions(),[t]=s.useState(()=>({dismiss_all(){e.set(e=>{e.list=[]})}}));return t};let j=(0,g.L)("Modal",(e,t)=>({list:[]}),{debug:!1})},30579:function(e,t,n){function r(){if("Notification"in window)return Notification.permission}async function s(){if(!await c())return!1;let e=await navigator.serviceWorker.ready;return await e.pushManager.getSubscription()}async function a(e){let t=await s();return t?e.pathfinder.check_push_notification({subscription:t}):{exists:!1}}function i(e){return e.pathfinder.disable_push_notifications()}async function o(e,t){await c();let n=r();if(!n||"denied"===n)return;if("granted"===n){try{if((await a(e)).exists){await e.pathfinder.enable_push_notifications();return}await l(e),null==t||t("granted")}catch(e){console.error("User subscription failed:",e)}return}let s=await Notification.requestPermission();t&&t(s),"granted"===s&&await l(e)}async function l(e){let t=await navigator.serviceWorker.ready,n=function(e){let t="=".repeat((4-e.length%4)%4),n=(e+t).replace(/-/g,"+").replace(/_/g,"/"),r=window.atob(n),s=new Uint8Array(r.length);for(let e=0;e{e(e=>(0,r.jsx)(j,{title:t,confirm:n,dismiss:e.dismiss}),{className:"sm:w-96"})}}let j=e=>{let{title:t,confirm:n,dismiss:a}=e,[i,o]=s.useState(!1);return(0,r.jsxs)("div",{className:"flex flex-col gap-1 p-4 pb-10 sm:pb-4",children:[(0,r.jsx)(y.V.Title,{children:(0,r.jsx)(u.H,{className:"flex text-center text-xl",message:t})}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"Are you sure? This action cannot be undone."}),(0,r.jsxs)("div",{className:"mt-8 flex justify-end gap-2",children:[(0,r.jsx)(g.z,{variant:"outline",onClick:a,children:"Cancel"}),(0,r.jsx)(g.z,{variant:"destructive",className:"w-24",onClick:async()=>{o(!0),await n(),o(!1),a()},children:i?(0,r.jsx)(w.$,{className:"size-5"}):"Confirm"})]})]})};var N=n(36670);function C(e){return(0,r.jsx)("div",{className:(0,N.cn)(e.className,"flex flex-col gap-1 rounded-lg border border-token-border-light p-4",!e.col&&"md:flex-row md:items-center md:justify-between"),children:e.children})}var _=n(90722),k=n(96389),S=n(7583);function z(e){let{app:t,onBack:n}=e,a=c.S.useApi(),i=m.NL(),[o,l]=s.useState(!1),d=b(),f=async()=>{await a.pathfinder.apps_clear_app_settings({app_id:t.id}),await i.invalidateQueries({queryKey:["app",t.id]})},p=async()=>{t.domain&&(await a.pathfinder.clear_user_context_for_domain({domain:t.domain}),await i.invalidateQueries({queryKey:["user_context"]}))};return(0,r.jsxs)("div",{className:"flex h-full max-h-[80svh] min-h-[80svh] flex-col gap-1 lg:max-h-[640px] lg:min-h-[640px]",children:[(0,r.jsx)("div",{className:"flex items-center border-b px-4 pb-4 lg:p-4",children:(0,r.jsxs)(g.z,{variant:"ghost",onClick:n,className:"-ml-1 !h-fit !p-0 hover:!bg-transparent",children:[(0,r.jsx)(_.s,{className:"color-muted-foreground mr-1 size-4"}),(0,r.jsx)(v.y,{app:t,className:"mr-2 size-5"}),(0,r.jsx)("h4",{className:"text-lg font-semibold",children:t.name})]})}),(0,r.jsx)("div",{className:"flex size-full overflow-scroll p-6",children:(0,r.jsxs)("div",{className:"flex size-full flex-col gap-8",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("p",{className:"text-sm font-semibold",children:["Personalize ",t.name]}),(0,r.jsx)("p",{className:"mb-4 text-sm text-muted-foreground",children:"Share website-specific information to help Operator complete tasks."}),o?(0,r.jsx)(E,{app:t,setEditing:l}):(0,r.jsx)(A,{app:t,setEditing:l})]}),(0,r.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,r.jsx)("p",{className:"mb-2 text-sm font-semibold",children:"Manage"}),(0,r.jsxs)(C,{className:"relative justify-start !gap-0 divide-y !p-0",col:!0,children:[(0,r.jsxs)("div",{className:"flex flex-col items-start justify-between gap-2 p-3 xs:flex-row xs:items-center xs:gap-1",children:[(0,r.jsx)(u.H,{className:"whitespace-nowrap text-sm font-medium",message:"Browsing data"}),(0,r.jsx)(g.z,{variant:"outline",className:"!h-auto rounded-full !py-1",onClick:()=>d("Clear site data",p),children:"Log out and clear site data"})]}),(0,r.jsxs)("div",{className:"flex flex-col items-start justify-between gap-2 p-3 xs:flex-row xs:items-center xs:gap-1",children:[(0,r.jsx)(u.H,{className:"whitespace-nowrap text-sm font-medium",message:"Personalization"}),(0,r.jsx)(g.z,{variant:"destructive-outline",className:"!h-auto rounded-full !py-1",onClick:()=>d("Delete personalization",f),children:"Delete personalization"})]})]})]})]})})]})}function E(e){let{app:t,setEditing:n}=e,s=c.S.useApi(),a=m.NL(),i=p.D({mutationFn:s.pathfinder.apps_update_app_settings,onSuccess:async()=>{await a.invalidateQueries({queryKey:["app",t.id]}),await a.invalidateQueries({queryKey:["pathfinder_apps_list"]}),n(!1)}}),o=[...t.app_settings_fields,{name:"Additional instructions",description:"Additional instructions",type:"text"}],l=h.z.object(o.reduce((e,t)=>(e[t.name]=h.z.string().max(1e3,"Cannot be over 1000 characters").optional(),e),{})),d=o.reduce((e,n)=>{var r,s;return e[n.name]=null!==(s=null===(r=t.user_settings)||void 0===r?void 0:r[n.name])&&void 0!==s?s:"",e},{}),{control:v,handleSubmit:y,formState:{errors:b,isDirty:j}}=(0,x.cI)({resolver:(0,f.F)(l),defaultValues:d}),N=(e,t)=>{switch(t.type){case"text":return(0,r.jsx)(S.g,{...e,className:"h-32 !max-h-full min-h-32 w-full !resize-y !overflow-auto bg-background !py-1 !text-sm placeholder:font-sans placeholder:text-sm"});case"string":return(0,r.jsx)(k.I,{type:"text",...e,className:"w-full text-sm placeholder:font-sans placeholder:text-sm"})}};return(0,r.jsx)(C,{className:"relative justify-start",col:!0,children:(0,r.jsxs)("form",{onSubmit:y(e=>{i.mutate({app_id:t.id,app_manual:t.app_manual,user_settings:e})}),className:"h-full",children:[(0,r.jsx)("div",{className:"flex flex-col gap-3",children:o.map(e=>{var t;return(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"mb-1 whitespace-nowrap text-xs font-semibold text-muted-foreground",children:(0,r.jsx)(u.H,{message:e.name})}),(0,r.jsx)(x.Qr,{name:e.name,control:v,render:t=>{let{field:n}=t;return N(n,e)}}),b[e.name]&&(0,r.jsx)("p",{className:"text-xs text-red-500",children:null===(t=b[e.name])||void 0===t?void 0:t.message})]},e.name)})}),(0,r.jsxs)("div",{className:"mt-5 flex justify-end gap-2",children:[(0,r.jsx)(g.z,{type:"button",variant:"secondary",onClick:()=>n(!1),children:(0,r.jsx)(u.H,{message:"Cancel"})}),(0,r.jsx)(g.z,{type:"submit",disabled:!j||i.isPaused,className:"w-20",children:i.isPending?(0,r.jsx)(w.$,{className:"size-4"}):"Save"})]})]})})}function A(e){let{app:t,setEditing:n}=e,s=[...t.app_settings_fields,{name:"Additional instructions",type:"text",description:""}],a=e=>{var n,s;return(0,r.jsxs)("div",{className:"gap-1",children:[(0,r.jsx)("div",{className:"whitespace-nowrap text-xs font-semibold text-muted-foreground",children:(0,r.jsx)(u.H,{message:e.name})}),(0,r.jsx)("div",{className:"line-clamp-5 overflow-hidden text-ellipsis whitespace-pre text-sm",children:(null===(s=t.user_settings)||void 0===s?void 0:null===(n=s[e.name])||void 0===n?void 0:n.trim())?t.user_settings[e.name]:"Not set"})]},e.name)};return(0,r.jsxs)(C,{className:"relative justify-start",col:!0,children:[(0,r.jsx)(g.z,{autoFocus:!0,type:"button",variant:"ghost",className:"absolute right-3 top-3 h-fit rounded-full border border-border py-1",onClick:()=>{n(!0)},children:(0,r.jsx)(u.H,{message:"Edit"})}),(0,r.jsx)("div",{className:"flex flex-col gap-3",children:s.map(e=>a(e))})]})}var T=n(34628),L=n(13200);function R(e){let{setAppId:t}=e;return(0,r.jsx)("div",{className:"flex size-full gap-6 pb-10 pr-6",children:(0,r.jsx)("div",{className:"flex w-full flex-col gap-2",children:(0,r.jsx)(P,{setAppId:t})})})}function P(e){let{setAppId:t}=e;return(0,r.jsxs)("div",{className:"flex flex-col gap-5 pt-4",children:[(0,r.jsxs)("div",{className:"flex flex-col",children:[(0,r.jsx)("h2",{className:"text-sm font-semibold",children:"Websites"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"Provide custom instructions for how Operator should interact with websites."})]}),(0,r.jsx)(M,{setAppID:t})]})}let M=e=>{var t;let{setAppID:n}=e,s=c.S.useApi(),i=null===(t=a.a({queryKey:["pathfinder_apps_list"],queryFn:s.pathfinder.apps_list}).data)||void 0===t?void 0:t.apps;if(!i)return(0,r.jsx)("div",{className:"flex w-full items-center justify-center py-4",children:(0,r.jsx)(w.$,{className:"size-6 text-muted-foreground"})});{let e=i.filter(e=>!e.app_categories.some(e=>e===T.Lf.News)),t=i.filter(e=>e.app_categories.some(e=>e===T.Lf.News));return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"grid grid-cols-1 divide-y rounded-lg border",children:e.map(e=>(0,r.jsx)(D,{app:e,setAppId:n},e.id))}),(0,r.jsx)("h2",{className:"text-sm font-semibold",children:"News"}),(0,r.jsx)("div",{className:"grid grid-cols-1 divide-y rounded-lg border",children:t.map(e=>(0,r.jsx)(D,{app:e,setAppId:n},e.id))})]})}},D=e=>{let{app:t,setAppId:n}=e;return(0,r.jsxs)("div",{className:"flex cursor-pointer items-center p-4 text-sm",onClick:()=>n(t.id),children:[(0,r.jsx)(v.y,{app:t,className:"mr-3 size-5"}),t.name,(0,r.jsx)(L._,{className:"color-muted-foreground ml-auto size-4"})]},t.id)};function O(e){let{onBack:t}=e,{setViewSiteData:n}=s.useContext(eK),a=c.S.useApi(),i=m.NL(),o=b(),l=async()=>{await a.pathfinder.clear_user_context(),await i.invalidateQueries({queryKey:["user_context"]})};return(0,r.jsxs)("div",{className:"flex h-full max-h-[80svh] min-h-[80svh] flex-col gap-1 lg:max-h-[640px] lg:min-h-[640px]",children:[(0,r.jsx)("div",{className:"flex items-center border-b px-4 pb-4 lg:p-4",children:(0,r.jsxs)(g.z,{variant:"ghost",onClick:t,className:"-ml-1 !h-fit !p-0 hover:!bg-transparent",children:[(0,r.jsx)(_.s,{className:"color-muted-foreground mr-1 size-4"}),(0,r.jsx)("h4",{className:"text-lg font-semibold",children:"Browsing data"})]})}),(0,r.jsx)("div",{className:"scrollbar-gutter-stable flex size-full overflow-scroll p-6 pr-3",children:(0,r.jsxs)("div",{className:"flex size-full flex-col gap-8",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-2 text-sm font-semibold",children:"Delete"}),(0,r.jsx)(C,{className:"relative justify-start !gap-0 divide-y !p-0",col:!0,children:(0,r.jsxs)("div",{className:"flex flex-col items-start justify-between gap-2 p-3 sm:flex-row sm:items-center sm:gap-1",children:[(0,r.jsx)(u.H,{className:"whitespace-nowrap text-sm font-medium",message:"Browsing data"}),(0,r.jsx)(g.z,{variant:"destructive-outline",className:"!h-auto rounded-full !py-1",onClick:()=>o("Delete all site data",l),children:"Delete data and log out of all sites"})]})})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"flex w-full items-center justify-between",children:(0,r.jsx)("p",{className:"mb-2 text-sm font-semibold",children:"Site data"})}),(0,r.jsx)(C,{className:"relative justify-start !gap-0 divide-y !p-0",col:!0,children:(0,r.jsxs)("div",{className:"flex flex-col items-start justify-between gap-2 p-3 sm:flex-row sm:items-center sm:gap-1",children:[(0,r.jsx)(u.H,{className:"whitespace-nowrap text-sm font-medium",message:"Site Data"}),(0,r.jsxs)(g.z,{variant:"ghost",className:"!h-auto rounded-full !px-0 !py-1 hover:!bg-transparent",onClick:()=>n(!0),children:["Manage",(0,r.jsx)(L._,{className:"color-muted-foreground ml-1 size-4"})]})]})})]})]})})]})}var H=n(56792),I=n(69705),F=n(30529),K=n(55471);let U=s.forwardRef((e,t)=>{let{color:n="currentColor",...s}=e;return(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...s,ref:t,children:(0,r.jsx)("path",{fill:n,d:"M15 5C14.4477 5 14 4.55228 14 4C14 3.44772 14.4477 3 15 3H20C20.5523 3 21 3.44772 21 4V9C21 9.55228 20.5523 10 20 10C19.4477 10 19 9.55228 19 9V6.41421L13.7071 11.7071C13.3166 12.0976 12.6834 12.0976 12.2929 11.7071C11.9024 11.3166 11.9024 10.6834 12.2929 10.2929L17.5858 5H15ZM9.7587 4H10C10.5523 4 11 4.44772 11 5C11 5.55228 10.5523 6 10 6H9.8C8.94342 6 8.36113 6.00078 7.91104 6.03755C7.47262 6.07337 7.24842 6.1383 7.09202 6.21799C6.7157 6.40973 6.40973 6.71569 6.21799 7.09202C6.1383 7.24842 6.07337 7.47262 6.03755 7.91104C6.00078 8.36113 6 8.94342 6 9.8V14.2C6 15.0566 6.00078 15.6389 6.03755 16.089C6.07337 16.5274 6.1383 16.7516 6.21799 16.908C6.40973 17.2843 6.7157 17.5903 7.09202 17.782C7.24842 17.8617 7.47262 17.9266 7.91104 17.9624C8.36113 17.9992 8.94342 18 9.8 18H14.2C15.0566 18 15.6389 17.9992 16.089 17.9624C16.5274 17.9266 16.7516 17.8617 16.908 17.782C17.2843 17.5903 17.5903 17.2843 17.782 16.908C17.8617 16.7516 17.9266 16.5274 17.9624 16.089C17.9992 15.6389 18 15.0566 18 14.2V14C18 13.4477 18.4477 13 19 13C19.5523 13 20 13.4477 20 14V14.2413C20 15.0463 20 15.7106 19.9558 16.2518C19.9099 16.8139 19.8113 17.3306 19.564 17.816C19.1805 18.5686 18.5686 19.1805 17.816 19.564C17.3306 19.8113 16.8139 19.9099 16.2518 19.9558C15.7106 20 15.0463 20 14.2413 20H9.75868C8.95372 20 8.28936 20 7.74817 19.9558C7.18608 19.9099 6.66937 19.8113 6.18404 19.564C5.43139 19.1805 4.81947 18.5686 4.43597 17.816C4.18868 17.3306 4.09012 16.8139 4.04419 16.2518C3.99998 15.7106 3.99999 15.0463 4 14.2413V9.7587C3.99999 8.95373 3.99998 8.28937 4.04419 7.74817C4.09012 7.18608 4.18868 6.66937 4.43597 6.18404C4.81947 5.43139 5.43139 4.81947 6.18404 4.43597C6.66937 4.18868 7.18608 4.09012 7.74817 4.04419C8.28937 3.99998 8.95373 3.99999 9.7587 4Z"})})});U.displayName="OpenNewTab";var B=n(60472),q=n(46490);let V=q.fC,W=q.ZA,Z=q.B4,G=s.forwardRef((e,t)=>{let{className:n,children:s,...a}=e;return(0,r.jsxs)(q.xz,{ref:t,className:(0,N.cn)("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",n),...a,children:[s,(0,r.jsx)(q.JO,{asChild:!0,children:(0,r.jsx)(B.jnn,{className:"size-4 shrink-0 opacity-50"})})]})});G.displayName=q.xz.displayName;let $=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(q.u_,{ref:t,className:(0,N.cn)("flex cursor-default items-center justify-center py-1",n),...s,children:(0,r.jsx)(B.g8U,{})})});$.displayName=q.u_.displayName;let Q=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(q.$G,{ref:t,className:(0,N.cn)("flex cursor-default items-center justify-center py-1",n),...s,children:(0,r.jsx)(B.v4q,{})})});Q.displayName=q.$G.displayName;let Y=s.forwardRef((e,t)=>{let{className:n,children:s,position:a="popper",...i}=e;return(0,r.jsx)(q.h_,{children:(0,r.jsxs)(q.VY,{ref:t,className:(0,N.cn)("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2","popper"===a&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",n),position:a,...i,children:[(0,r.jsx)($,{}),(0,r.jsx)(q.l_,{className:(0,N.cn)("p-1","popper"===a&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:s}),(0,r.jsx)(Q,{})]})})});Y.displayName=q.VY.displayName,s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(q.__,{ref:t,className:(0,N.cn)("px-2 py-1.5 text-sm font-semibold",n),...s})}).displayName=q.__.displayName;let J=s.forwardRef((e,t)=>{let{className:n,children:s,...a}=e;return(0,r.jsxs)(q.ck,{ref:t,className:(0,N.cn)("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...a,children:[(0,r.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,r.jsx)(q.wU,{children:(0,r.jsx)(B.nQG,{className:"size-4"})})}),(0,r.jsx)(q.eT,{children:s})]})});J.displayName=q.ck.displayName,s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(q.Z0,{ref:t,className:(0,N.cn)("-mx-1 my-1 h-px bg-muted",n),...s})}).displayName=q.Z0.displayName;var X=n(26547),ee=n(30579),et=n(94101),en=n(63823),er=n(28705);let es=(0,s.forwardRef)(function(e,t){let{onChange:n,enabled:a,label:i,disabled:o,icon:l=null,size:c="normal",id:u,testId:d,backgroundColor:f="black"}=e,m=(0,s.useCallback)(()=>{null==n||n(!a)},[a,n]);return(0,r.jsx)(er.fC,{ref:t,id:u,checked:a,disabled:o,onCheckedChange:m,"aria-label":i,className:(0,N.cn)("focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-token-text-secondary focus-visible:ring-offset-2 focus-visible:radix-state-checked:ring-black focus-visible:dark:ring-token-main-surface-primary focus-visible:dark:radix-state-checked:ring-green-600",o?"cursor-not-allowed opacity-50":"cursor-pointer","green"===f?"bg-green-600/15 radix-state-checked:bg-green-600":"bg-gray-200 radix-state-checked:bg-black dark:border dark:border-token-border-medium dark:bg-transparent","relative shrink-0 rounded-full dark:radix-state-checked:border-green-600 dark:radix-state-checked:bg-green-600","normal"===c?"h-[20px] w-[32px]":"large"===c?"h-[32px] w-[54px]":"h-[19px] w-[30px]"),"data-testid":d,children:(0,r.jsx)(er.bU,{className:(0,N.cn)("flex items-center justify-center rounded-full","translate-x-0.5 transition-transform duration-100 will-change-transform","bg-white","normal"===c?"size-[16px] radix-state-checked:translate-x-[14px]":"large"===c?"size-[26px] radix-state-checked:translate-x-[24px]":"size-[15px] radix-state-checked:translate-x-[13px]"),children:l})})});var ea=n(64860);function ei(){let e=(0,et._)(["text-xs text-token-text-secondary pr-12 mt-3"]);return ei=function(){return e},e}let eo=en.Z.div(ei());function el(e){let{label:t,disabled:n,enabled:s,onChange:a,description:i,toggleTooltip:o,isLoading:l=!1,testId:c}=e,u=(0,r.jsx)(es,{disabled:n,enabled:s,onChange:a,label:t,size:"normal",testId:c});return null!==o&&(u=(0,r.jsxs)(ea.u.Root,{disableHoverableContent:!0,children:[(0,r.jsx)(ea.u.Trigger,{asChild:!0,children:u}),(0,r.jsx)(ea.u.Content,{sideOffset:2,side:"top",children:o})]})),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("div",{children:t}),l?(0,r.jsx)(w.$,{}):u]}),void 0!==i&&(0,r.jsx)(eo,{children:i})]})}var ec=n(57319);function eu(){let[e,t]=(0,s.useState)(()=>(0,ee.qO)()),[n,a]=(0,s.useState)("granted"===e),[i,o]=(0,s.useState)("denied"===e),[l,d]=(0,s.useState)(!1),f=c.S.useApi();async function m(n){if(a(n),n){"granted"!==e&&d(!0);try{await (0,ee._V)(f,e=>{d(!1),ec.U.addAction({name:"settings.notifications.toggle",context:{type:"enable",permission:e}}),a("granted"===e),o("denied"===e),t(e)})}catch(e){ec.U.addAction({name:"settings.notifications.toggle",context:{type:"enable",result:"error",error:e instanceof Error?e.message:void 0}}),a(!1)}}else try{await (0,ee.dq)(f),ec.U.addAction({name:"settings.notifications.toggle",context:{type:"disable",result:"success"}})}catch(e){ec.U.addAction({name:"settings.notifications.toggle",context:{type:"disable",result:"error",error:e instanceof Error?e.message:void 0}}),a(!0)}}return console.log("enabled",n),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{className:"pb-0 pt-4 text-sm font-semibold",children:"Notifications"}),(0,r.jsx)(C,{children:(0,r.jsxs)("div",{className:"flex flex-1 flex-col justify-between",children:[(0,r.jsxs)("div",{className:"flex flex-row items-center justify-between",children:[(0,r.jsx)("div",{className:"whitespace-nowrap text-sm",children:(0,r.jsx)(u.H,{message:"Browser notifications"})}),(0,r.jsx)(el,{label:"",disabled:i,enabled:n,onChange:m})]}),i&&(0,r.jsx)(eo,{className:"text-red-500",children:(0,r.jsx)(u.H,{message:"Notifications are disabled in your browser. Please enable them in your browser settings."})})]})}),l&&(0,r.jsx)("div",{className:"fixed inset-0 z-100 bg-background/70"})]})}function ed(){return(0,r.jsx)("div",{className:"flex size-full gap-6 pb-10 pr-6",children:(0,r.jsxs)("div",{className:"flex w-full flex-col gap-2",children:[(0,r.jsx)(ef,{}),(0,r.jsx)(eu,{}),(0,r.jsx)(em,{}),(0,r.jsx)(ep,{})]})})}function ef(){let e=(0,K.F)();return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("h2",{className:"pb-0 pt-4 text-sm font-semibold",children:"Appearance"}),(0,r.jsxs)(C,{children:[(0,r.jsx)("div",{className:"whitespace-nowrap text-sm",children:(0,r.jsx)(u.H,{message:"Theme"})}),(0,r.jsxs)(V,{value:e.theme,onValueChange:e.setTheme,children:[(0,r.jsx)(G,{className:"size-fit border-none !px-0 py-0 shadow-none outline-none focus:outline-none focus:ring-0 sm:px-3",children:(0,r.jsx)(Z,{})}),(0,r.jsx)(Y,{align:"end",children:(0,r.jsx)(W,{children:e.themes.map(e=>(0,r.jsx)(J,{value:e,className:"cursor-pointer",children:e.charAt(0).toUpperCase()+e.slice(1)},e))})})]})]})]})}function em(){var e,t;let n=null===(e=(0,X.a)().data)||void 0===e?void 0:e.user,[a,i]=s.useState(!1);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("h2",{className:"pb-0 pt-4 text-sm font-semibold",children:"Account"}),(0,r.jsxs)(C,{className:"relative justify-start !gap-0 divide-y !p-0",col:!0,children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-4 whitespace-nowrap p-4 text-sm",children:[(0,r.jsx)(u.H,{message:"Email"}),(0,r.jsx)(u.H,{message:null!==(t=null==n?void 0:n.email)&&void 0!==t?t:"",className:"max-w-full overflow-hidden text-ellipsis"})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between p-4",children:[(0,r.jsx)("div",{className:"whitespace-nowrap text-sm",children:(0,r.jsx)(u.H,{message:"Account settings"})}),(0,r.jsxs)(I.default,{href:"https://chatgpt.com/#settings",className:"flex flex-row items-center gap-2 py-1 text-sm",target:"_blank",rel:"noreferrer",children:["Manage on ChatGPT ",(0,r.jsx)(U,{className:"size-4"})]})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between p-4",children:[(0,r.jsx)(u.H,{className:"whitespace-nowrap text-sm font-medium",message:"Log out"}),(0,r.jsx)(g.z,{variant:"outline",className:"!h-auto !w-24 rounded-full !py-1",onClick:async()=>{i(!0),await (0,F.signOut)({callbackUrl:"/"})},children:a?(0,r.jsx)(w.$,{className:"size-5"}):"Log out"})]})]})]})}function ep(){var e,t;let n=c.S.useApi(),s=null===(e=(0,X.a)().data)||void 0===e?void 0:e.user,a=m.NL(),i=h.z.object({instructions:h.z.string().max(1e3,"Instructions cannot exceed 1000 characters").optional()}),{control:o,handleSubmit:l,reset:d,formState:{errors:v,isDirty:y}}=(0,x.cI)({resolver:(0,f.F)(i),defaultValues:{instructions:null!==(t=null==s?void 0:s.personalization.custom_instructions)&&void 0!==t?t:""}}),b=p.D({mutationFn:n.pathfinder.update_user_settings,mutationKey:["me"],onSuccess:e=>{a.setQueryData(["me"],(0,H.Uy)(t=>{t.user&&(t.user.personalization.custom_instructions=e.personalization.custom_instructions)})),document.activeElement&&document.activeElement.blur()}});return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("h2",{className:"pb-0 pt-4 text-sm font-semibold",children:"Custom instructions"}),(0,r.jsx)("p",{className:"mb-2 text-sm text-muted-foreground",children:"What would you like Operator to know to complete tasks more smoothly? Operator will have access to this information for all tasks."}),(0,r.jsxs)("form",{onSubmit:l(e=>{b.mutate({custom_instructions:e.instructions})}),children:[(0,r.jsx)(x.Qr,{name:"instructions",control:o,render:e=>{let{field:t}=e;return(0,r.jsxs)("div",{className:"group mb-3 flex h-40 max-h-full min-h-40 resize-y flex-col overflow-auto rounded-lg border border-input",children:[(0,r.jsx)(S.g,{...t,className:"flex !h-full !max-h-full !overflow-auto border-0 bg-background !p-4 !text-sm shadow-none placeholder:text-sm group-focus-within:rounded-b-none",placeholder:"Enter your custom instructions here..."}),(0,r.jsxs)("div",{className:"hidden w-full justify-end gap-2 p-4 group-focus-within:flex",children:[(0,r.jsx)(g.z,{type:"button",variant:"outline",onClick:e=>{e.currentTarget.blur(),d()},children:(0,r.jsx)(u.H,{message:"Cancel"})}),(0,r.jsx)(g.z,{type:"submit",disabled:!y||b.isPaused,className:"w-20",children:b.isPending?(0,r.jsx)(w.$,{className:"size-4"}):"Save"})]})]})}}),v.instructions&&(0,r.jsx)("p",{className:"text-xs text-red-500",children:v.instructions.message})]})]})}function ex(){return(0,r.jsx)("div",{className:"flex size-full gap-6 pb-10 pr-6",children:(0,r.jsx)("div",{className:"flex w-full flex-col gap-2",children:(0,r.jsx)(eh,{})})})}function eh(){let{setViewBrowsingData:e}=s.useContext(eK),t=b(),n=c.S.useApi(),a=async()=>{await n.pathfinder.delete_all_conversations()};return(0,r.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,r.jsx)("h2",{className:"pb-0 pt-4 text-sm font-semibold",children:"Privacy and security"}),(0,r.jsxs)(C,{className:"relative justify-start !gap-0 divide-y !p-0",col:!0,children:[(0,r.jsxs)("div",{className:"flex items-center justify-between p-4",children:[(0,r.jsx)(u.H,{className:"max-w-32 text-sm font-medium sm:max-w-full",message:"Improve the model for everyone"}),(0,r.jsxs)(I.default,{href:"https://chatgpt.com/#settings/DataControls",className:"flex flex-row items-center gap-2 text-sm",target:"_blank",rel:"noreferrer",children:["Manage on ChatGPT ",(0,r.jsx)(U,{className:"size-4"})]})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between p-4",children:[(0,r.jsx)(u.H,{className:"whitespace-nowrap text-sm font-medium",message:"Browsing data"}),(0,r.jsxs)(g.z,{variant:"ghost",className:"!h-auto rounded-full !px-0 !py-1 hover:!bg-transparent",onClick:()=>e(!0),children:["Manage",(0,r.jsx)(L._,{className:"color-muted-foreground ml-1 size-4"})]})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between p-4",children:[(0,r.jsx)(u.H,{className:"whitespace-nowrap text-sm font-medium",message:"Delete all Operator chats"}),(0,r.jsx)(g.z,{variant:"destructive",className:"!h-auto !w-24 rounded-full !py-1",onClick:()=>t("Delete all Operator chats",a),children:"Delete all"})]})]})]})}var ev=n(1819);let eg=e=>{var t;let{domain:n,alt:a,className:i}=e,[o,l]=s.useState(!1),c=(0,r.jsx)(ev.T,{className:(0,N.cn)(i,"text-muted-foreground")});return(0,r.jsxs)(r.Fragment,{children:[!o&&c,(0,r.jsx)("img",{src:"/api/favicon?domain=".concat(n),alt:null!==(t=null!=a?a:n)&&void 0!==t?t:"",className:(0,N.cn)(!o&&"hidden",i),width:64,height:64,onLoad:()=>l(!0)})]})},ey=s.forwardRef((e,t)=>{let{color:n="currentColor",...s}=e;return(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...s,ref:t,children:(0,r.jsx)("path",{fill:n,d:"M12 3C12.5523 3 13 3.44772 13 4L13 11H20C20.5523 11 21 11.4477 21 12C21 12.5523 20.5523 13 20 13L13 13L13 20C13 20.5523 12.5523 21 12 21C11.4477 21 11 20.5523 11 20L11 13L4 13C3.44772 13 3 12.5523 3 12C3 11.4477 3.44772 11 4 11L11 11L11 4C11 3.44772 11.4477 3 12 3Z"})})});ey.displayName="Plus";var ew=n(87634);let eb=e=>{try{let t=e.includes("://")?e:"https://".concat(e),{hostname:n}=new URL(t);return n.includes(".")}catch(e){return!1}};var ej=n(61805),eN=n(79866);function eC(e){var t,n,i,o;let{prompt:l,conversationId:d,onBack:v}=e,y=s.useRef(null),j=c.S.useApi(),N=b(),z=m.NL(),E=(0,eN.B)(),A=null!=d?d:"",T=a.a({queryKey:["generate_prompt",A],queryFn:()=>j.pathfinder.prompts_generate(A),enabled:null!==d&&d.length>0}),L=h.z.object({title:h.z.string().min(1,"Title cannot be empty"),detailed_instructions:h.z.string().max(1e3,"Instructions cannot exceed 1000 characters").optional(),websites:h.z.array(h.z.object({website:h.z.string().min(1,"Website cannot be empty")}))}),{control:R,handleSubmit:P,formState:{errors:M,dirtyFields:D,isDirty:O,isValid:H},reset:I,setError:F,clearErrors:K,trigger:U,setValue:B}=(0,x.cI)({resolver:(0,f.F)(L),defaultValues:{title:null==l?void 0:l.title,detailed_instructions:null!==(o=null==l?void 0:null===(t=l.detailed_instructions)||void 0===t?void 0:t.content)&&void 0!==o?o:"",websites:null==l?void 0:l.websites.map(e=>{var t,n;return{website:null!==(n=null===(t=E[e])||void 0===t?void 0:t.domain)&&void 0!==n?n:""}})}});s.useEffect(()=>{if(T.data){var e,t;B("title",T.data.title,{shouldDirty:!0}),B("detailed_instructions",null!==(t=null===(e=T.data.detailed_instructions)||void 0===e?void 0:e.content)&&void 0!==t?t:"",{shouldDirty:!0}),B("websites",T.data.website_domains.map(e=>({website:e})),{shouldDirty:!0})}},[T.data,B]);let{fields:q,append:V,remove:W}=(0,x.Dq)({control:R,name:"websites"}),[Z,G]=s.useState(""),$=p.D({mutationFn:j.pathfinder.prompts_update,onError:e=>{if(e instanceof ej.i){var t;F("root",{message:null===(t=e.json.detail)||void 0===t?void 0:t.text,type:"manual"})}},onSuccess:async e=>{var t,n;document.activeElement&&document.activeElement.blur(),await z.invalidateQueries({queryKey:["prompt",e.id]}),await z.invalidateQueries({queryKey:["prompts_list"]}),await z.invalidateQueries({queryKey:["pathfinder_apps_list"]}),I({title:e.title,detailed_instructions:null!==(n=null===(t=e.detailed_instructions)||void 0===t?void 0:t.content)&&void 0!==n?n:"",websites:e.websites.map(e=>{var t,n;return{website:null!==(n=null===(t=E[e])||void 0===t?void 0:t.domain)&&void 0!==n?n:""}})}),v()}}),Q=p.D({mutationFn:j.pathfinder.prompts_create,onError:e=>{if(e instanceof ej.i){var t;F("root",{message:null===(t=e.json.detail)||void 0===t?void 0:t.text,type:"manual"})}},onSuccess:async e=>{var t,n;await z.invalidateQueries({queryKey:["prompt",null==l?void 0:l.id]}),await z.invalidateQueries({queryKey:["prompts_list"]}),await z.invalidateQueries({queryKey:["pathfinder_apps_list"]}),I({title:e.title,detailed_instructions:null!==(n=null===(t=e.detailed_instructions)||void 0===t?void 0:t.content)&&void 0!==n?n:"",websites:e.websites.map(e=>{var t,n;return{website:null!==(n=null===(t=E[e])||void 0===t?void 0:t.domain)&&void 0!==n?n:""}})}),v()}}),Y=async()=>{l&&(await j.pathfinder.prompts_delete(l.id),await z.invalidateQueries({queryKey:["prompts_list"]}),v())},J=()=>{let e=Z.trim();e&&(V({website:e}),G(""))},X=$.isPending||Q.isPending;return(0,r.jsxs)("form",{className:"flex size-full max-h-[80svh] min-h-[80svh] flex-col justify-between overflow-hidden lg:max-h-[640px] lg:min-h-[640px]",onSubmit:P(e=>{if(l){let n={prompt_id:l.id};if(D.title&&(n.title=e.title),D.detailed_instructions){var t;n.detailed_instructions={content:null!==(t=e.detailed_instructions)&&void 0!==t?t:""}}if(D.websites&&(n.website_domains=e.websites.map(e=>e.website)),""!==Z){if(!eb(Z)){F("websites",{message:"Invalid website domain",type:"manual"});return}void 0===n.website_domains?n.website_domains=[...e.websites.map(e=>e.website),Z]:n.website_domains.push(Z)}$.mutate(n)}else{let t=e.websites.map(e=>e.website);if(""!==Z){if(!eb(Z)){F("websites",{message:"Invalid website domain",type:"manual"});return}t.push(Z)}Q.mutate({title:e.title,detailed_instructions:e.detailed_instructions?{content:e.detailed_instructions}:void 0,website_domains:t})}}),children:[(0,r.jsxs)("div",{className:"flex size-full flex-col gap-2 overflow-hidden",children:[(0,r.jsx)("div",{className:"flex items-center justify-start border-b px-6 pb-4 lg:p-4",children:(0,r.jsxs)(g.z,{onClick:v,"aria-label":"Back",variant:"ghost",className:"-ml-1 !h-fit !p-0 hover:!bg-transparent",children:[(0,r.jsx)(_.s,{className:"color-muted-foreground mr-1 size-4"}),(0,r.jsx)("h4",{className:"text-lg font-semibold",children:l?"Edit task":"Save task"})]})}),(0,r.jsxs)("div",{className:"flex flex-col gap-6 overflow-auto px-6 pb-16 pt-3",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,r.jsx)("label",{className:"whitespace-nowrap text-sm font-medium",children:"Title"}),T.isFetching?(0,r.jsx)("div",{className:"rounded-md border border-input px-3 py-1.5 shadow-sm",children:(0,r.jsx)(w.$,{className:"size-5"})}):(0,r.jsx)(k.I,{type:"text",...R.register("title"),placeholder:"Title"})]}),(0,r.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,r.jsxs)("label",{className:"whitespace-nowrap text-sm font-medium",children:["Detailed instructions"," ",(0,r.jsx)("span",{className:"font-normal text-muted-foreground",children:"(optional)"})]}),T.isFetching?(0,r.jsx)("div",{className:"h-32 min-h-32 rounded-md border border-input px-3 py-2 shadow-sm",children:(0,r.jsx)(w.$,{className:"size-5"})}):(0,r.jsx)(x.Qr,{name:"detailed_instructions",control:R,render:e=>{let{field:t}=e;return(0,r.jsx)(S.g,{...t,className:"h-36 !max-h-full min-h-36 w-full !resize-y !overflow-auto border border-input bg-background !p-4 !text-sm placeholder:font-sans placeholder:text-sm",placeholder:"How should Operator do this task? What information would be helpful?"})}}),M.detailed_instructions&&(0,r.jsx)("p",{className:"text-sm text-red-500",children:M.detailed_instructions.message})]}),(0,r.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,r.jsxs)("label",{className:"whitespace-nowrap text-sm",children:[(0,r.jsxs)("div",{className:"font-medium",children:["Websites ",(0,r.jsx)("span",{className:"font-normal text-muted-foreground",children:"(optional)"})]}),(0,r.jsx)("div",{className:"text-muted-foreground",children:"Which websites should Operator use for this task?"})]}),(0,r.jsxs)(C,{className:"relative justify-start !gap-0 divide-y !p-0",col:!0,children:[q.map((e,t)=>(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-2",children:[(0,r.jsxs)("div",{className:"flex gap-3",children:[(0,r.jsx)(eg,{domain:e.website,alt:e.website,className:"size-5"}),(0,r.jsx)("span",{className:"text-sm",children:e.website})]}),(0,r.jsx)(g.z,{type:"button",variant:"ghost",className:"!p-1 hover:!bg-transparent",onClick:()=>W(t),children:(0,r.jsx)(ew.X,{className:"size-4"})})]},e.id)),(0,r.jsxs)("div",{className:"flex items-center gap-3 px-4 py-1",onClick:()=>{var e;return null===(e=y.current)||void 0===e?void 0:e.focus()},children:[(0,r.jsx)(ev.T,{className:"flex size-5 shrink-0 text-muted-foreground"}),T.isFetching?(0,r.jsx)("div",{className:"-ml-3 px-3 py-1.5",children:(0,r.jsx)(w.$,{className:"size-5"})}):(0,r.jsx)(k.I,{ref:y,type:"text",className:"!border-0 !px-0 !shadow-none !outline-none !ring-0",value:Z,onChange:async e=>{G(e.target.value),K("websites"),K("root"),await U()},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),eb(Z)&&J())},placeholder:"Enter URL..."}),Z.length>0&&(0,r.jsx)(g.z,{type:"button",variant:"ghost",className:"!p-1 hover:!bg-transparent",onClick:J,disabled:!eb(Z),children:(0,r.jsx)(ey,{className:"size-5"})})]})]}),(null===(n=M.websites)||void 0===n?void 0:n.message)&&(0,r.jsx)("p",{className:"text-sm text-red-500",children:M.websites.message}),(null===(i=M.root)||void 0===i?void 0:i.message)&&(0,r.jsx)("p",{className:"text-sm text-red-500",children:M.root.message})]})]})]}),(0,r.jsxs)("div",{className:"flex w-full justify-between border-t p-6",children:[l&&(0,r.jsx)(g.z,{type:"button",variant:"destructive-outline",onClick:()=>N("Delete task",Y),children:(0,r.jsx)(u.H,{message:"Delete"})}),(0,r.jsxs)("div",{className:"flex w-full justify-end gap-2",children:[(0,r.jsx)(g.z,{type:"button",variant:"outline",onClick:v,children:(0,r.jsx)(u.H,{message:"Cancel"})}),(0,r.jsx)(g.z,{type:"submit",disabled:!O&&!Z||!H,className:"w-20",children:X?(0,r.jsx)(w.$,{className:"size-4"}):"Save"})]})]})]})}function e_(e){let{setPromptId:t}=e;return(0,r.jsx)("div",{className:"flex size-full gap-6 pb-10 pr-6",children:(0,r.jsx)("div",{className:"flex w-full flex-col gap-2",children:(0,r.jsx)(ek,{setPromptId:t})})})}function ek(e){var t;let{setPromptId:n}=e,s=c.S.useApi(),i=null===(t=a.a({queryKey:["prompts_list"],queryFn:s.pathfinder.prompts_list}).data)||void 0===t?void 0:t.prompts;return(0,r.jsxs)("div",{className:"flex flex-col gap-5 pt-4",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,r.jsxs)("div",{className:"flex flex-col",children:[(0,r.jsx)("h2",{className:"text-sm font-semibold",children:"Saved tasks"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"These tasks will appear on the homepage and are only available to you."})]}),(0,r.jsx)(g.z,{autoFocus:!0,type:"button",variant:"ghost",className:"h-fit rounded-full border border-border py-2",onClick:()=>{n("")},children:(0,r.jsx)(u.H,{message:"Create"})})]}),(0,r.jsx)("div",{className:"grid grid-cols-1 divide-y rounded-lg border",children:(0,r.jsx)(eS,{prompts:i,setPromptId:n})})]})}let eS=e=>{let{prompts:t,setPromptId:n}=e,s=(0,eN.B)();return t?0===t.length?(0,r.jsx)("div",{className:"flex w-full items-center justify-center py-4",children:(0,r.jsx)("p",{className:"text-muted-foreground",children:"No saved tasks"})}):(0,r.jsx)(r.Fragment,{children:t.map(e=>{var t;let a=e.first_website_id?null===(t=s[e.first_website_id])||void 0===t?void 0:t.domain:null;return(0,r.jsxs)("div",{className:"flex cursor-pointer items-center justify-center gap-3 p-4 text-sm",onClick:()=>n(e.id),children:[a?(0,r.jsx)(eg,{domain:a,alt:e.title,className:"size-5"}):(0,r.jsx)(ev.T,{className:"size-5 text-muted-foreground"}),e.title,(0,r.jsx)(L._,{className:"color-muted-foreground ml-auto size-4"})]},e.id)})}):(0,r.jsx)("div",{className:"flex w-full items-center justify-center py-4",children:(0,r.jsx)(w.$,{className:"size-6 text-muted-foreground"})})},ez=s.forwardRef((e,t)=>{let{color:n="currentColor",...s}=e;return(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...s,ref:t,children:(0,r.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.8338 4.78537C12.0783 3.67377 13.7568 3 15.5909 3C19.3379 3 22.5 5.84379 22.5 9.5C22.5 10.6675 22.1723 11.7617 21.6035 12.7049C21.7082 13.3446 21.9041 13.9807 22.1568 14.6441C22.2777 14.9617 22.2291 15.319 22.0276 15.5928C21.8261 15.8665 21.4994 16.0192 21.1602 15.9981C20.0211 15.9272 18.9547 15.7195 17.9166 15.3624C17.3944 15.1827 17.1167 14.6137 17.2963 14.0914C17.476 13.5692 18.045 13.2915 18.5673 13.4712C18.9672 13.6088 19.3734 13.7202 19.7912 13.8061C19.6925 13.4107 19.6153 13.0038 19.5687 12.5843C19.542 12.3446 19.6029 12.1033 19.7402 11.9049C20.2241 11.2056 20.5 10.3815 20.5 9.5C20.5 7.08108 18.3709 5 15.5909 5C14.2496 5 13.0451 5.4919 12.1662 6.27698C11.7543 6.64489 11.1221 6.60924 10.7542 6.19734C10.3863 5.78544 10.4219 5.15328 10.8338 4.78537ZM8.5 10C5.65489 10 3.5 12.0948 3.5 14.5C3.5 15.3779 3.77893 16.1999 4.27013 16.899C4.41055 17.0989 4.47295 17.3433 4.44557 17.586C4.39815 18.0063 4.31955 18.4139 4.21925 18.8099C4.65229 18.7232 5.07312 18.61 5.48727 18.4697C5.72968 18.3875 5.99435 18.4015 6.22679 18.5086C6.90579 18.8216 7.67742 19 8.5 19C11.3451 19 13.5 16.9052 13.5 14.5C13.5 12.0948 11.3451 10 8.5 10ZM1.5 14.5C1.5 10.83 4.71769 8 8.5 8C12.2823 8 15.5 10.83 15.5 14.5C15.5 18.17 12.2823 21 8.5 21C7.53025 21 6.60309 20.8166 5.75878 20.4828C4.82364 20.7669 3.86215 20.9357 2.84316 20.9981C2.50317 21.0189 2.17597 20.8653 1.97489 20.5903C1.7738 20.3154 1.72649 19.957 1.84935 19.6393C2.10511 18.9779 2.3033 18.3443 2.40969 17.7075C1.83301 16.7645 1.5 15.6694 1.5 14.5Z",fill:n})})});ez.displayName="Chats";var eE=n(58973);let eA=s.forwardRef((e,t)=>{let{color:n="currentColor",...s}=e;return(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...s,ref:t,children:(0,r.jsx)("path",{fill:n,d:"M12 4C7.58172 4 4 7.58172 4 12C4 14.2569 4.93453 16.2954 6.43772 17.7499C7.71622 16.0791 9.73141 15 12 15C14.2686 15 16.2838 16.0791 17.5623 17.7499C19.0655 16.2954 20 14.2569 20 12C20 7.58172 16.4183 4 12 4ZM15.9632 18.9509C15.0483 17.7635 13.6126 17 12 17C10.3874 17 8.9517 17.7635 8.03677 18.9509C9.20512 19.6185 10.558 20 12 20C13.442 20 14.7949 19.6185 15.9632 18.9509ZM2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM12 8C10.8954 8 10 8.89543 10 10C10 11.1046 10.8954 12 12 12C13.1046 12 14 11.1046 14 10C14 8.89543 13.1046 8 12 8ZM8 10C8 7.79086 9.79086 6 12 6C14.2091 6 16 7.79086 16 10C16 12.2091 14.2091 14 12 14C9.79086 14 8 12.2091 8 10Z"})})});eA.displayName="UserCircle";var eT=n(25403);let eL=eT.fC,eR=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(eT.aV,{ref:t,className:(0,N.cn)("inline-flex items-center justify-center rounded-lg p-1 text-muted-foreground",n),...s})});eR.displayName=eT.aV.displayName;let eP=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(eT.xz,{ref:t,className:(0,N.cn)("inline-flex items-center justify-start whitespace-nowrap rounded-lg px-3 py-1 text-sm font-medium transition-all focus:ring-0 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-subtle-background",n),...s})});eP.displayName=eT.xz.displayName;let eM=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(eT.VY,{ref:t,className:(0,N.cn)("focus:ring-none mt-2 focus-visible:outline-none",n),...s})});eM.displayName=eT.VY.displayName;var eD=n(4466),eO=n(73565),eH=n(83346);function eI(e){var t,n,s,i;let{onBack:o}=e,l=c.S.useApi(),d=a.a({queryKey:["user_context"],queryFn:l.pathfinder.get_user_context}),f=m.NL(),p=null!==(s=null===(t=d.data)||void 0===t?void 0:t.sites)&&void 0!==s?s:{},x=null!==(i=null===(n=d.data)||void 0===n?void 0:n.total_bytes)&&void 0!==i?i:0,h=b(),v=async e=>{await l.pathfinder.clear_user_context_for_domain({domain:e}),await f.invalidateQueries({queryKey:["user_context"]})};return(0,r.jsxs)("div",{className:"flex h-full max-h-[80svh] min-h-[80svh] flex-col gap-1 overflow-hidden lg:max-h-[640px] lg:min-h-[640px]",children:[(0,r.jsx)("div",{className:"flex items-center border-b px-4 pb-4 lg:p-4",children:(0,r.jsxs)(g.z,{variant:"ghost",onClick:o,className:"mr-2 p-0 pr-2 text-base enabled:hover:bg-transparent",children:[(0,r.jsx)(_.s,{className:"color-muted-foreground mr-1 size-4"}),(0,r.jsx)("h4",{className:"text-lg font-semibold",children:"Site data"})]})}),(0,r.jsx)("div",{className:"flex overflow-hidden px-6 pb-6 pt-3",children:(0,r.jsxs)("div",{className:"flex flex-col gap-2 overflow-hidden",children:[(0,r.jsx)("div",{className:"text-sm font-semibold",children:"Why am I seeing so many sites?"}),(0,r.jsxs)("div",{className:"text-sm",children:["Many modern websites load additional content, such as ads, images, and analytics trackers, from other domains. This page shows all sites that have stored data in your browser, including sites you directly visited and those that appeared in the background. You can delete any ","site's"," data at any time."]}),(0,r.jsxs)("div",{className:"mt-3 flex w-full items-center justify-between",children:[(0,r.jsx)("h2",{className:"mb-2 text-lg font-semibold"}),(0,r.jsxs)("span",{className:"text-sm text-muted-foreground",children:[Object.keys(p).length," sites \xb7 ",function(e){let t=["B","KB","MB","GB","TB","PB"],n=e,r=0;for(;n>=1024&&r(0,r.jsxs)("div",{className:"flex items-center justify-between p-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-center gap-3",children:[(0,r.jsx)(eg,{domain:e,alt:e,className:"size-4"}),(0,r.jsx)(u.H,{className:"whitespace-nowrap text-sm font-medium",message:e})]}),(0,r.jsx)(g.z,{variant:"ghost",className:"!h-auto rounded-full !py-1",onClick:()=>h("Clear site data",()=>v(e)),children:(0,r.jsx)(ew.X,{className:"size-4"})})]},e))]})]})})]})}let eF=(0,eO.L)("SettingsStore",(e,t)=>({version:11,hydrated:!1,values:{hydrated:!1,show_all_actions:!1,auth_token:null,engine:null}}),{debug:!1,enhanceStore:e=>(0,l.tJ)(e,{name:"cua-operator-settings",partialize:e=>{let{version:t,values:n}=e;return{version:t,values:n}},onRehydrateStorage:()=>(e,t)=>{t&&console.debug("[SettingsStore]","hydration:error",{error:t})},merge(e,t){let n={...t};if(n.hydrated=!0,!e)return n;if(e.version===n.version){let t=o()({},n.values,e.values);return{...n,values:t}}return n}})}),eK=s.createContext({setViewBrowsingData:()=>{},setViewSiteData:()=>{}}),eU={Register:function(){let e=eV();return(0,r.jsx)(eH.e.Register,{group:"General",label:"View Settings",shortcuts:["MOD+SHIFT+S"],handler:()=>e({})})},Provider:function(e){let{children:t,...n}=e;return(0,r.jsx)(eF.Provider,{debug:"SettingsStore",...n,children:(0,r.jsx)(eq,{children:e.children})})},useSetting:function(e){return eF.useState(t=>t.values[e])},useActions:function(){return eF.useActions()},useModal:eV};function eB(e){var t,n,i;let o="text-sm text-foreground font-normal shrink-0 w-fit sm:w-40 h-9",l="mt-0 pl-6 pr-0.5 pb-0.5 w-full overflow-scroll",[d,f]=s.useState(e.appId?"apps":e.promptId||e.conversationId?"prompts":"general"),[m,p]=s.useState(null!==(t=e.appId)&&void 0!==t?t:null),[x,h]=s.useState(null!==(n=e.promptId)&&void 0!==n?n:null),[v,g]=s.useState(null!==(i=e.conversationId)&&void 0!==i?i:null),[b,j]=s.useState(!1),[N,C]=s.useState(!1),_=s.useMemo(()=>({setViewBrowsingData:j,setViewSiteData:C}),[]),k=c.S.useApi(),S=(0,eD.V)(),E=null!=m?m:"",A=a.a({queryKey:["app",E],queryFn:()=>k.pathfinder.apps_get(E),enabled:null!==m&&m.length>0}),T=null!=x?x:"",L=a.a({queryKey:["prompt",T],queryFn:()=>k.pathfinder.prompts_get(T),enabled:null!==x&&x.length>0});return A.data?(0,r.jsx)(z,{app:A.data,onBack:()=>p(null)}):L.data||""===x||null!==v&&v.length>0?(0,r.jsx)(eC,{prompt:L.data,conversationId:v,onBack:()=>{h(null),g(null)}}):L.isFetching||A.isFetching?(0,r.jsx)("div",{className:"flex h-full max-h-[80svh] min-h-[80svh] flex-col items-center justify-center lg:max-h-[640px] lg:min-h-[640px]",children:(0,r.jsx)(w.$,{className:"size-6 text-muted-foreground"})}):N?(0,r.jsx)(eK.Provider,{value:_,children:(0,r.jsx)(eI,{onBack:()=>C(!1)})}):b?(0,r.jsx)(eK.Provider,{value:_,children:(0,r.jsx)(O,{onBack:()=>j(!1)})}):(0,r.jsx)(eK.Provider,{value:_,children:(0,r.jsxs)("div",{className:"flex h-full max-h-[80svh] min-h-[80svh] flex-col lg:max-h-[640px] lg:min-h-[640px]",children:[(0,r.jsx)("div",{className:"mb-1 border-b",children:(0,r.jsx)(y.V.Title,{className:"px-6 pb-4 text-lg font-semibold sm:py-4",children:(0,r.jsx)(u.H,{message:"Settings"})})}),(0,r.jsxs)(eL,{value:d,onValueChange:f,className:"flex size-full flex-col overflow-hidden sm:flex-row",orientation:S?"vertical":"horizontal",children:[(0,r.jsx)(eR,{className:"hidden-scrollbar flex size-fit shrink-0 overflow-scroll p-3",children:(0,r.jsxs)("div",{className:"flex w-full shrink-0 gap-1 px-1 pb-1 sm:flex-col sm:px-0 sm:pb-0",children:[(0,r.jsx)(eP,{value:"general",className:o,children:(0,r.jsxs)("div",{className:"flex shrink-0 flex-row items-center gap-1 sm:gap-3",children:[(0,r.jsx)(eA,{className:"size-4 shrink-0"}),(0,r.jsx)(u.H,{message:"General"})]})}),(0,r.jsx)(eP,{value:"prompts",className:o,children:(0,r.jsxs)("div",{className:"flex shrink-0 flex-row items-center gap-1 sm:gap-3",children:[(0,r.jsx)(ez,{className:"size-4 shrink-0"}),(0,r.jsx)(u.H,{message:"Saved tasks"})]})}),(0,r.jsx)(eP,{value:"apps",className:o,children:(0,r.jsxs)("div",{className:"flex shrink-0 flex-row items-center gap-1 sm:gap-3",children:[(0,r.jsx)(ev.T,{className:"size-4 shrink-0"}),(0,r.jsx)(u.H,{message:"Websites"})]})}),(0,r.jsx)(eP,{value:"privacy",className:o,children:(0,r.jsxs)("div",{className:"flex shrink-0 flex-row items-center gap-1 sm:gap-3",children:[(0,r.jsx)(eE.$,{className:"size-4 shrink-0"}),(0,r.jsx)(u.H,{message:"Privacy"})]})})]})}),(0,r.jsx)(eM,{value:"general",className:l,children:(0,r.jsx)(ed,{})}),(0,r.jsx)(eM,{value:"prompts",className:l,children:(0,r.jsx)(e_,{setPromptId:h})}),(0,r.jsx)(eM,{value:"apps",className:l,children:(0,r.jsx)(R,{setAppId:p})}),(0,r.jsx)(eM,{value:"privacy",className:l,children:(0,r.jsx)(ex,{})})]})]})})}function eq(e){return eF.useState(e=>e.hydrated)?e.children:null}function eV(){let e=d.u.useModal();return t=>{let{appId:n,conversationId:s,promptId:a}=t;return e(()=>(0,r.jsx)(eB,{appId:n,conversationId:s,promptId:a}),{className:"lg:w-[696px]"})}}},99155:function(e,t,n){n.d(t,{w:function(){return s}});var r=n(9271);function s(e){return s.useWindowDebug(e),null}s.useWindowDebug=function(e){return r.useEffect(()=>{window[e.name]=e.value}),null}},90722:function(e,t,n){n.d(t,{s:function(){return s}});var r=n(44259);let s=n(9271).forwardRef((e,t)=>{let{color:n="currentColor",...s}=e;return(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...s,ref:t,children:(0,r.jsx)("path",{fill:n,d:"M14.7071 5.29289C15.0976 5.68342 15.0976 6.31658 14.7071 6.70711L9.41421 12L14.7071 17.2929C15.0976 17.6834 15.0976 18.3166 14.7071 18.7071C14.3166 19.0976 13.6834 19.0976 13.2929 18.7071L7.29289 12.7071C7.10536 12.5196 7 12.2652 7 12C7 11.7348 7.10536 11.4804 7.29289 11.2929L13.2929 5.29289C13.6834 4.90237 14.3166 4.90237 14.7071 5.29289Z"})})});s.displayName="ChevronLeft"},13200:function(e,t,n){n.d(t,{_:function(){return s}});var r=n(44259);let s=n(9271).forwardRef((e,t)=>{let{color:n="currentColor",...s}=e;return(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...s,ref:t,children:(0,r.jsx)("path",{fill:n,d:"M9.29289 18.7071C8.90237 18.3166 8.90237 17.6834 9.29289 17.2929L14.5858 12L9.29289 6.70711C8.90237 6.31658 8.90237 5.68342 9.29289 5.29289C9.68342 4.90237 10.3166 4.90237 10.7071 5.29289L16.7071 11.2929C16.8946 11.4804 17 11.7348 17 12C17 12.2652 16.8946 12.5196 16.7071 12.7071L10.7071 18.7071C10.3166 19.0976 9.68342 19.0976 9.29289 18.7071Z"})})});s.displayName="ChevronRight"},1819:function(e,t,n){n.d(t,{T:function(){return s}});var r=n(44259);let s=n(9271).forwardRef((e,t)=>{let{color:n="currentColor",...s}=e;return(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...s,ref:t,children:(0,r.jsx)("path",{fill:n,fillRule:"evenodd",clipRule:"evenodd",d:"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM11.9851 4.00291C11.9744 4.00615 11.953 4.01416 11.921 4.03356C11.7908 4.11248 11.5742 4.32444 11.325 4.77696C11.0839 5.21453 10.8521 5.8046 10.6514 6.53263C10.3148 7.75315 10.0844 9.29169 10.019 11H13.981C13.9156 9.29169 13.6852 7.75315 13.3486 6.53263C13.1479 5.8046 12.9161 5.21453 12.675 4.77696C12.4258 4.32444 12.2092 4.11248 12.079 4.03356C12.047 4.01416 12.0256 4.00615 12.0149 4.00291C12.0067 4.00046 12.001 4.00006 11.9996 4C11.9982 4.00006 11.9933 4.00046 11.9851 4.00291ZM8.01766 11C8.08396 9.13314 8.33431 7.41167 8.72334 6.00094C8.87366 5.45584 9.04762 4.94639 9.24523 4.48694C6.48462 5.49946 4.43722 7.9901 4.06189 11H8.01766ZM4.06189 13H8.01766C8.09487 15.1737 8.42177 17.1555 8.93 18.6802C9.02641 18.9694 9.13134 19.2483 9.24522 19.5131C6.48461 18.5005 4.43722 16.0099 4.06189 13ZM10.019 13C10.0955 14.9972 10.3973 16.7574 10.8274 18.0477C11.0794 18.8038 11.3575 19.3436 11.6177 19.6737C11.7455 19.8359 11.8494 19.9225 11.9186 19.9649C11.9515 19.9852 11.9736 19.9935 11.9847 19.9969C11.9948 20 11.9999 20 11.9999 20C11.9999 20 12.0049 20.0001 12.0153 19.9969C12.0264 19.9935 12.0485 19.9852 12.0814 19.9649C12.1506 19.9225 12.2545 19.8359 12.3823 19.6737C12.6425 19.3436 12.9206 18.8038 13.1726 18.0477C13.6027 16.7574 13.9045 14.9972 13.981 13H10.019ZM15.9823 13C15.9051 15.1737 15.5782 17.1555 15.07 18.6802C14.9736 18.9694 14.8687 19.2483 14.7548 19.5131C17.5154 18.5005 19.5628 16.0099 19.9381 13H15.9823ZM19.9381 11C19.5628 7.99009 17.5154 5.49946 14.7548 4.48694C14.9524 4.94639 15.1263 5.45584 15.2767 6.00094C15.6657 7.41167 15.916 9.13314 15.9823 11H19.9381Z"})})});s.displayName="Globe"},58973:function(e,t,n){n.d(t,{$:function(){return s}});var r=n(44259);let s=n(9271).forwardRef((e,t)=>{let{color:n="currentColor",...s}=e;return(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...s,ref:t,children:(0,r.jsx)("path",{d:"M12.4008 3.76695C12.1453 3.65516 11.8547 3.65516 11.5992 3.76695L5.59918 6.39195C5.23519 6.55119 5 6.91081 5 7.30811V13.0001C5 14.7136 5.61571 16.2834 6.63795 17.5002C7.92137 15.9724 9.84647 15.0001 11.9999 15.0001C14.1534 15.0001 16.0785 15.9725 17.3619 17.5003C18.3843 16.2835 19 14.7137 19 13.0001V7.30811C19 6.91081 18.7648 6.55119 18.4008 6.39195L12.4008 3.76695ZM15.8701 18.8339C14.9525 17.7136 13.5589 17.0001 11.9999 17.0001C10.441 17.0001 9.04741 17.7136 8.12979 18.8338C9.23837 19.5707 10.569 20.0001 12 20.0001C13.4309 20.0001 14.7615 19.5707 15.8701 18.8339ZM10.7975 1.93463C11.5641 1.59926 12.4359 1.59926 13.2025 1.93463L19.2025 4.55963C20.2944 5.03737 21 6.11621 21 7.30811V13.0001C21 17.9706 16.9706 22.0001 12 22.0001C7.02944 22.0001 3 17.9706 3 13.0001V7.30811C3 6.11621 3.70558 5.03737 4.79754 4.55963L10.7975 1.93463ZM12 8.50007C11.0335 8.50007 10.25 9.28358 10.25 10.2501C10.25 11.2166 11.0335 12.0001 12 12.0001C12.9665 12.0001 13.75 11.2166 13.75 10.2501C13.75 9.28358 12.9665 8.50007 12 8.50007ZM8.25 10.2501C8.25 8.17901 9.92893 6.50007 12 6.50007C14.0711 6.50007 15.75 8.17901 15.75 10.2501C15.75 12.3211 14.0711 14.0001 12 14.0001C9.92893 14.0001 8.25 12.3211 8.25 10.2501Z",fill:n})})});s.displayName="IdentitySecure"},87634:function(e,t,n){n.d(t,{X:function(){return s}});var r=n(44259);let s=n(9271).forwardRef((e,t)=>{let{color:n="currentColor",...s}=e;return(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...s,ref:t,children:(0,r.jsx)("path",{fill:n,d:"M5.63603 5.63603C6.02656 5.24551 6.65972 5.24551 7.05025 5.63603L12 10.5858L16.9497 5.63603C17.3403 5.24551 17.9734 5.24551 18.364 5.63603C18.7545 6.02656 18.7545 6.65972 18.364 7.05025L13.4142 12L18.364 16.9497C18.7545 17.3403 18.7545 17.9734 18.364 18.364C17.9734 18.7545 17.3403 18.7545 16.9497 18.364L12 13.4142L7.05025 18.364C6.65972 18.7545 6.02656 18.7545 5.63603 18.364C5.24551 17.9734 5.24551 17.3403 5.63603 16.9497L10.5858 12L5.63603 7.05025C5.24551 6.65972 5.24551 6.02656 5.63603 5.63603Z"})})});s.displayName="X"},43067:function(e,t,n){n.d(t,{z:function(){return c}});var r=n(44259),s=n(9271),a=n(66126),i=n(96361),o=n(36670);let l=(0,i.j)("inline-flex select-none items-center justify-center whitespace-nowrap text-sm font-medium transition-colors duration-150 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",{variants:{variant:{default:"rounded-full border border-primary bg-primary text-primary-foreground enabled:hover:bg-primary/90",destructive:"rounded-full bg-destructive text-destructive-foreground enabled:hover:bg-destructive/90","destructive-ghost":"rounded-md text-destructive enabled:hover:bg-accent","destructive-outline":"rounded-full border border-destructive bg-background text-destructive focus-visible:ring-destructive enabled:hover:bg-destructive/10",outline:"rounded-full border border-border bg-background enabled:hover:bg-accent enabled:hover:text-accent-foreground",secondary:"rounded-full bg-secondary text-secondary-foreground enabled:hover:bg-secondary/80",ghost:"rounded-md enabled:hover:bg-accent enabled:hover:text-accent-foreground",link:"rounded-md text-primary underline-offset-4 enabled:hover:underline",round:"rounded-full bg-primary text-primary-foreground focus-within:bg-primary/80 enabled:hover:bg-primary/80","secondary-round":"rounded-full bg-secondary text-secondary-foreground shadow-sm enabled:hover:bg-secondary/80","semi-round":"rounded-xl bg-primary text-primary-foreground enabled:hover:bg-primary/90"},size:{default:"h-9 px-4 py-2",sm:"h-8 px-3 text-xs",lg:"h-10 px-8",xl:"h-12 px-8",icon:"size-10",icon_sm:"size-7"}},defaultVariants:{variant:"default",size:"default"}}),c=s.forwardRef((e,t)=>{let{className:n,variant:s,size:i,asChild:c=!1,...u}=e,d=c?a.g7:"button";return(0,r.jsx)(d,{className:(0,o.cn)("w-max",l({variant:s,size:i,className:n})),ref:t,...u})});c.displayName="Button"},51187:function(e,t,n){n.d(t,{V:function(){return y}});var r=n(44259),s=n(9271),a=n(30780),i=n(60472),o=n(36670),l=n(83346);let c=a.fC,u=a.xz,d=a.h_,f=a.x8,m=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(a.aV,{ref:t,className:(0,o.cn)("fixed inset-0 z-50 bg-overlay-background/50","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...s})});m.displayName=a.aV.displayName;let p=s.forwardRef((e,t)=>{let{className:n,children:s,hideCloseButton:c=!1,...u}=e;return(0,r.jsx)(d,{children:(0,r.jsxs)(l.e.Modal,{children:[(0,r.jsx)(m,{}),(0,r.jsxs)(a.VY,{ref:t,className:(0,o.cn)("fixed left-[50%] top-[50%] z-50 max-h-[90vh] w-full max-w-[90vw] translate-x-[-50%] translate-y-[-50%] border bg-background shadow-xl sm:rounded-2xl wide:max-w-wide","duration-200","data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]","data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]",n),...u,children:[(0,r.jsx)("div",{className:"flex max-h-[90vh] flex-col",children:s}),c?null:(0,r.jsxs)(a.x8,{className:(0,o.cn)("absolute right-6 top-5 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground"),children:[(0,r.jsx)(i.Pxu,{className:"size-5"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})})});p.displayName=a.VY.displayName;let x=e=>{let{className:t,...n}=e;return(0,r.jsx)("div",{className:(0,o.cn)("flex flex-col justify-center space-y-1.5 text-center sm:text-left",t),...n})};x.displayName="DialogHeader";let h=e=>{let{className:t,...n}=e;return(0,r.jsx)("div",{className:(0,o.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...n})};h.displayName="DialogFooter";let v=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(a.Dx,{ref:t,className:(0,o.cn)("text-lg font-semibold leading-none",n),...s})});v.displayName=a.Dx.displayName;let g=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(a.dk,{ref:t,className:(0,o.cn)("text-sm text-muted-foreground",n),...s})});g.displayName=a.dk.displayName;let y={Root:c,Portal:d,Overlay:m,Trigger:u,Close:f,Content:p,Header:x,Footer:h,Title:v,Description:g}},96389:function(e,t,n){n.d(t,{I:function(){return i}});var r=n(44259),s=n(9271),a=n(36670);let i=s.forwardRef((e,t)=>{let{className:n,type:s,...i}=e;return(0,r.jsx)("input",{type:s,className:(0,a.cn)("flex h-12 w-full rounded-lg border border-input bg-transparent px-3 py-4","text-sm placeholder:text-muted-foreground","file:border-0 file:bg-transparent file:text-sm file:font-medium","transition-colors","focus-visible:outline-none","group-focus-within:outline-none group-focus-within:ring-1 group-focus-within:ring-ring","disabled:cursor-not-allowed disabled:opacity-50",n),ref:t,...i})});i.displayName="Input"},71913:function(e,t,n){n.d(t,{$:function(){return a}});var r=n(44259),s=n(36670);function a(e){let{className:t,...n}=e;return(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:(0,s.cn)("animate-spin",t),...n,children:(0,r.jsx)("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})})}},7583:function(e,t,n){n.d(t,{g:function(){return o}});var r=n(44259),s=n(9271),a=n(36670),i=n(9120);let o=s.forwardRef((e,t)=>{let{className:n,style:o,onChange:l,enterKeyHint:c,inputMode:u,...d}=e;s.useImperativeHandle(t,()=>({get value(){var e;return(null===(e=g.current)||void 0===e?void 0:e.value)||""},get node(){return g.current},set(e){g.current&&(g.current.value=e,f.current.synchronizeTextHeight(e))},synchronizeTextHeight(){g.current&&f.current.synchronizeTextHeight(g.current.value)}}),[]);let f=s.useRef({synchronizeTextHeight:y});f.current.synchronizeTextHeight=y,s.useEffect(function(){e.value&&f.current.synchronizeTextHeight(e.value)},[e.value]);let m=s.useRef(null),[p,x]=s.useState(1),h=Object.assign({},o,{fontSize:16,lineHeight:i.i.px(20),paddingBottom:12,paddingTop:12}),v=(0,a.cn)("flex w-full bg-muted/60 px-2","whitespace-pre-wrap placeholder:text-muted-foreground","force-scrollbar scrollbar-gutter-stable resize-none overflow-auto","rounded-lg border border-input","outline-none","transition-colors duration-200","disabled:cursor-not-allowed disabled:bg-foreground/10 disabled:text-muted-foreground",n),g=s.useRef(null);return(0,r.jsx)("textarea",{ref:g,className:v,onChange:function(e){let t=e.target;y(t.value),"function"==typeof l&&l(t.value)},style:{...h,height:20*p+24+2,maxHeight:226,overflow:p>10?"auto":"hidden"},inputMode:e.inputMode||"text",enterKeyHint:e.enterKeyHint||"enter",...d});function y(e){let t=m.current;t&&(t.innerHTML=e.replace(/\n$/g,"\n."),x(Math.max(1,(t.offsetHeight-24-2)/20)))}});o.displayName="Textarea"},64860:function(e,t,n){n.d(t,{u:function(){return d}});var r=n(44259),s=n(9271),a=n(23377),i=n(36670);let o=a.zt,l=a.fC,c=a.xz,u=s.forwardRef((e,t)=>{let{className:n,sideOffset:s=4,...o}=e;return(0,r.jsx)(a.VY,{ref:t,sideOffset:s,className:(0,i.cn)("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md","animate-in fade-in-0 zoom-in-95","data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",n),...o})});u.displayName=a.VY.displayName;let d={Root:l,Trigger:c,Content:u,Provider:o}},31544:function(e,t,n){n.d(t,{S:function(){return r}});class r extends Error{constructor(e){super(e),this.name="UnreachableCaseError"}}},36670:function(e,t,n){n.d(t,{cn:function(){return a}});var r=n(33979),s=n(64810);function a(){for(var e=arguments.length,t=Array(e),n=0;n2&&void 0!==arguments[2]?arguments[2]:{},a={method:"POST",credentials:"include"};t&&(a.body=JSON.stringify(t));let i=s()(a,r);i.headers||(i.headers=new Headers),i.headers instanceof Headers&&i.headers.set("Content-Type","application/json");try{n=await fetch(e,i)}catch(e){throw new d(new Response(null,{status:500}))}if(!n.ok){let e=new d(n);throw await e.wait_for_response(),await c(e),e}return n.json()}let c=async e=>{var t,n,r,s;i.U.addError(e,{code:null===(t=e.json.detail)||void 0===t?void 0:t.code,status:e.response.status}),401===e.response.status&&((null===(n=e.json.detail)||void 0===n?void 0:n.code)==="expired_session_key"||(null===(r=e.json.detail)||void 0===r?void 0:r.code)==="token_expired"||(null===(s=e.json.detail)||void 0===s?void 0:s.code)==="token_invalidated")&&await u()};async function u(){let e;e=o.Rk?new URL("/api/auth/signin","https://operator.chatgpt.com").toString():new URL("/auth/login?next=/operator","https://chatgpt.com").toString(),await (0,a.signOut)({callbackUrl:e})}class d extends Error{async wait_for_response(){let e=await this.response.text();try{this.json=JSON.parse(e)}catch(t){this.json={detail:{code:"not_json_response",text:e.substring(0,1e3)}}}}constructor(e){super("[ErrorResponse] ".concat(e.url)),this.response=e,this.json={}}}},40016:function(e,t,n){n.d(t,{k:function(){return r}});function r(e,t){if(!e)throw Error(t)}},79866:function(e,t,n){n.d(t,{B:function(){return i}});var r=n(9271),s=n(36853),a=n(22646);let i=()=>{var e;let t=a.S.useApi(),n=null===(e=(0,s.a)({queryKey:["pathfinder_apps_list"],queryFn:t.pathfinder.apps_list}).data)||void 0===e?void 0:e.apps;return r.useMemo(()=>{var e;return null!==(e=null==n?void 0:n.reduce((e,t)=>(e[t.id]=t,e),{}))&&void 0!==e?e:{}},[n])}},78574:function(e,t,n){n.d(t,{G:function(){return s}});var r=n(9271);function s(e){let t=r.useRef(e);return t.current=e,t}},99195:function(e,t,n){n.d(t,{N:function(){return o}});var r=n(9271);let s=()=>()=>{},a=Symbol("not-render"),i=()=>a;function o(){return function(e){let t=r.useSyncExternalStore(s,e.client,i),n=r.useSyncExternalStore(s,i,e.server);return n===a?t:n}({client:()=>!1,server:()=>!0})}},26547:function(e,t,n){n.d(t,{a:function(){return i}});var r=n(36853),s=n(22646),a=n(61805);let i=()=>{let e=s.S.useApi();return(0,r.a)({queryKey:["me"],queryFn:async()=>{try{return{user:await e.pathfinder.me()}}catch(e){if(e instanceof a.i&&401===e.response.status){var t;return{user:null,error:null===(t=e.json.detail)||void 0===t?void 0:t.code}}throw e}}})}},30558:function(e,t,n){n.d(t,{U:function(){return r}});let r=(0,n(73565).L)("DimensionsStore",(e,t)=>({width:1440,height:900}),{debug:!1})},57214:function(e,t,n){n.d(t,{D:function(){return r}});var r={};n.r(r),n.d(r,{Provider:function(){return c},useDimensions:function(){return u.B},useWide:function(){return d.V}});var s=n(44259),a=n(30558),i=n(9271),o=n(99195);function l(e){let t=0,n=0;return e||(t=window.innerWidth,n=window.innerHeight),{width:t,height:n}}function c(e){let t=function(){let e=(0,o.N)(),[t,n]=i.useState(()=>l(e));return i.useEffect(()=>{if(e)return;function t(){n(l())}t();let r=visualViewport||window;return r.addEventListener("resize",t),function(){r.removeEventListener("resize",t)}},[e]),t}();return(0,s.jsx)(a.U.Provider,{debug:"DimensionsStore",dangerouslyStoreStateOverride:e=>{t.width&&t.height&&(e.width=t.width,e.height=t.height)},children:e.children})}var u=n(10650),d=n(4466)},10650:function(e,t,n){n.d(t,{B:function(){return s}});var r=n(30558);function s(e){return r.U.useState(t=>e(t))}},4466:function(e,t,n){n.d(t,{I:function(){return o},V:function(){return a}});var r=n(9120),s=n(10650);function a(){return(0,s.B)(e=>e.width>=i)}let i=parseInt(r.i.tailwind.theme.spacing.wide,10);function o(){return(0,s.B)(e=>e.width>=l)}let l=parseInt(r.i.tailwind.theme.screens.sm,10)},23209:function(e,t,n){n.d(t,{zt:function(){return d},qs:function(){return s},Kz:function(){return f}});var r,s,a=n(44259),i=n(9271),o=n(83828),l=n(99155);class c{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}(r=s||(s={})).CreateConversation="operator_create_conversation",r.AddMessageToConversation="operator_add_message_to_conversation";let u=i.createContext(null);function d(e){let t=i.useRef(new c),n=i.useRef({}),r=i.useRef({}),s=i.useRef({}),d=i.useCallback(async function(e){var s;await t.current.promise;let a=await (null===(s=window.SentinelSDK)||void 0===s?void 0:s.token(e));if(!a)throw console.error("Failed to get Sentinel token for flow: ".concat(e)),Error("Failed to get Sentinel token for flow: ".concat(e));return n.current[e]=a,r.current[e]=Date.now(),a},[]),f=i.useCallback(async function(e){let t=s.current[e];if(t)return t;let n=d(e).finally(()=>{s.current[e]=null});return s.current[e]=n,n},[d]),m=i.useMemo(()=>({getSentinelHeaders:async function(e){var t;let s=Date.now(),a=null!==(t=r.current[e])&&void 0!==t?t:0,i=n.current[e];return i&&!(s-a>54e4)?{"OpenAI-Sentinel-Token":i}:{"OpenAI-Sentinel-Token":await f(e)}},updateSentinelToken:f}),[f]);return(0,a.jsxs)(u.Provider,{value:m,children:[(0,a.jsx)(l.w,{name:"Sentinel",value:{...m}}),(0,a.jsx)(o.default,{src:"".concat("https://chatgpt.com","/backend-api/sentinel/sdk.js"),strategy:"lazyOnload",onLoad:()=>{t.current.resolve()}}),e.children]})}function f(){let e=i.useContext(u);if(!e)throw Error("Sentinel.useSentinelToken must be used within ");return e}},10667:function(e,t,n){n.d(t,{t:function(){return r}});var r=n(23209)},73565:function(e,t,n){n.d(t,{L:function(){return g}});var r=n(44259),s=n(9271),a=n(56792),i=n(88492),o=n(72210),l=n(74743),c=n(70757),u=n(99155),d=n(61597),f=n.n(d),m=n(40016);function p(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)){let s=e[r],a=[...n,r],i=a.join("."),o=typeof s;t({key:r,value:s,path:i,pathList:a,type:o}),"object"===o&&null!==s&&p(s,t,a)}}function x(e,t){let n={};function r(e){let{path:t}=e;n[t]||(n[t]={a:x.UNSET,b:x.UNSET})}p(e,e=>{r(e);let t=n[e.path];(0,m.k)(t,"changes path must exist"),t.a=e.value}),p(t,e=>{r(e);let t=n[e.path];(0,m.k)(t,"changes path must exist"),t.b=e.value});let s={};for(let e of Object.entries(n)){let[t,n]=e;f()(n.a)||f()(n.b)||n.a===n.b||(s[t]=n)}return s}x.UNSET=Symbol("UNSET");var h=n(69093);let v={node_modules_dir:/\/node_modules\//,stack_line_parens:RegExp(" at (?.*?) \\((?.*?):(?\\d+):(?\\d+)\\)$"),stack_line_plain:RegExp(" at (?.*?):(?\\d+):(?\\d+)$"),parens:RegExp("(?[a-z0-9./]*)$","i")};function g(e,t,n){let d=t=>(r,s,a)=>{let i=function(){for(var t=arguments.length,a=Array(t),i=0;i{l(e,o)});let c=s();(null==n?void 0:n.debug)&&y(e,o,c)};return a.setState=i,t(i,s,a)},f=!!(null==n?void 0:n.devtools);function p(r){let s=(0,o.n)(d((0,i.mW)((s,i)=>(function o(){let l=t(s,i);return(0,a.Uy)(l,t=>{t.actions||(t.actions={}),"function"==typeof(null==r?void 0:r.initialStoreState)&&r.initialStoreState(t,s,i),(null==n?void 0:n.debug)&&y(e,l,t),t.actions.state=()=>i(),t.actions.set=e=>s(e),t.actions.reset=e=>{s(t=>{let n=i();Object.assign(t,o()),"function"==typeof e&&e(t,n)})}})})(),{name:e,enabled:f})));if(null==n?void 0:n.enhanceStore){let e=n.enhanceStore,t={...r};return delete t.children,delete t.debug,delete t.initialStoreState,delete t.dangerouslyStoreStateOverride,(0,c.M)()(e(s,t))}return(0,c.M)()(s)}let x=s.createContext(null);function v(t,n){let r=function(){let t=s.useContext(x);return(0,m.k)(t,"".concat(e,".useState must be used within a <").concat(e,".Provider>")),t}(),a=(0,l.s)(r,t,n);if(h.O.Rk&&a===r.getState())throw Error("Selector in ".concat(e," cannot return the entire state. Please select a specific part of the state."));return a}return x.displayName=e,{Provider:function(e){let[t]=s.useState(()=>p(e)),{dangerouslyStoreStateOverride:n}=e;return s.useEffect(()=>{n&&t.setState(e=>{n(e)})},[t,n]),(0,r.jsxs)(s.Fragment,{children:[e.debug?(0,r.jsx)(u.w,{name:e.debug,value:t}):null,(0,r.jsx)(x.Provider,{value:t,children:e.children})]})},useState:v,useActions:function(){return v(e=>e.actions)},useIsContextAvailable:function(){return!!s.useContext(x)},__dangerousGlobalStore:function(e){return p({children:null,...e})}}}function y(e,t,n){let r=function(e){let t=(Error().stack||"").split("\n"),n=[];for(let e of t){if(v.node_modules_dir.test(e))continue;let t=e.match(v.stack_line_parens);if(null==t?void 0:t.groups){let e=t.groups;(0,m.k)(e.name,"groups.name must exist"),(0,m.k)(e.parens,"groups.parens must exist"),(0,m.k)(e.line,"groups.line must exist"),(0,m.k)(e.column,"groups.column must exist");let r={};r.name=e.name.trim(),r.line=parseInt(e.line,10),r.column=parseInt(e.column,10);let s=e.parens.trim().match(v.parens);(null==s?void 0:s.groups)&&((0,m.k)(s.groups.filepath,"parens_match.groups.filepath must exist"),r.filepath=s.groups.filepath),n.push(r);continue}let r=e.match(v.stack_line_plain);if(null==r?void 0:r.groups){let e=r.groups;(0,m.k)(e.name,"groups.name must exist"),(0,m.k)(e.line,"groups.line must exist"),(0,m.k)(e.column,"groups.column must exist");let t={};t.name=e.name.trim(),t.line=parseInt(e.line,10),t.column=parseInt(e.column,10),n.push(t);continue}}return n}(),s=x(t,n);Object.keys(s).length&&console.debug("[".concat(e,"]"),{diff:s,previous:t,next:n,stack:r})}},9120:function(e,t,n){n.d(t,{i:function(){return r}});var r={};n.r(r),n.d(r,{percent:function(){return v},px:function(){return h},tailwind:function(){return x}});var s=n(62215),a=n.n(s),i=n(7473),o=n(18515),l=n.n(o),c=n(57391),u=n.n(c);let d=l()(function(e){let{addUtilities:t}=e;t({".light":{"color-scheme":"light"},".dark":{"color-scheme":"dark"}})}),f={xs:p(640),wide:p(1024)},m={darkMode:["class"],content:["./src/**/*.{js,ts,jsx,tsx,mdx}"],prefix:"",plugins:[n(92167),n(25988),d,u()],theme:{container:{center:!0,padding:"2rem"},extend:{screens:{...f},spacing:{...f},fontFamily:{serif:["ui-serif","Georgia","Cambria","Times New Roman","serif"],sans:["ui-sans-serif","-apple-system","system-ui","Segoe UI","Helvetica","Apple Color Emoji","Arial","sans-serif","Segoe UI Emoji","Segoe UI Symbol"],circle:["Circle","system-ui","sans-serif"],mono:["ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono","monospace"]},opacity:{1:"100%"},colors:{border:"hsl(var(--border))",input:"hsl(var(--input))",ring:"hsl(var(--ring))",background:"hsl(var(--background))","subtle-background":"hsl(var(--subtle-background))","overlay-background":"hsl(var(--overlay-background))","composer-background":"hsl(var(--composer-background))",foreground:"hsl(var(--foreground))","message-surface":"rgb(var(--message-surface))",primary:{DEFAULT:"hsl(var(--primary))",foreground:"hsl(var(--primary-foreground))"},secondary:{DEFAULT:"hsl(var(--secondary))",foreground:"hsl(var(--secondary-foreground))"},destructive:{DEFAULT:"hsl(var(--destructive))",foreground:"hsl(var(--destructive-foreground))"},muted:{DEFAULT:"hsl(var(--muted))",foreground:"hsl(var(--muted-foreground))"},accent:{DEFAULT:"hsl(var(--accent))",foreground:"hsl(var(--accent-foreground))"},popover:{DEFAULT:"hsl(var(--popover))",foreground:"hsl(var(--popover-foreground))"},card:{DEFAULT:"hsl(var(--card))",foreground:"hsl(var(--card-foreground))"},link:{DEFAULT:"hsl(var(--link))",hover:"hsl(var(--link-hover))"},brand:{green:{DEFAULT:"#19c37d",800:"#05A746"},purple:{DEFAULT:"#ab68ff",600:"#715FDE",700:"#6353C3",800:"#5400DE"},blue:{800:"#0066DE"}},gray:{...i.gray,750:"#2f2f2f"},token:{"composer-surface":"var(--composer-surface)","message-surface":"var(--message-surface)","text-primary":"var(--text-primary)","text-secondary":"var(--text-secondary)","text-tertiary":"var(--text-tertiary)","text-placeholder":"var(--text-placeholder)","text-quaternary":"var(--text-quaternary)","text-error":"var(--text-error)","surface-error":"rgb(var(--surface-error) / )","border-light":"var(--border-light)","border-xlight":"var(--border-xlight)","border-medium":"var(--border-medium)","border-heavy":"var(--border-heavy)","border-xheavy":"var(--border-xheavy)","border-sharp":"var(--border-sharp)","icon-secondary":"var(--icon-secondary)","hint-bg":"var(--hint-bg)","hint-text":"var(--hint-text)",link:"var(--link)","link-hover":"var(--link-hover)","main-surface-primary":"var(--main-surface-primary)","main-surface-primary-inverse":"var(--main-surface-primary-inverse)","main-surface-secondary":"var(--main-surface-secondary)","main-surface-tertiary":"var(--main-surface-tertiary)","sidebar-surface-primary":"var(--sidebar-surface-primary)","sidebar-surface-secondary":"var(--sidebar-surface-secondary)","sidebar-surface-tertiary":"var(--sidebar-surface-tertiary)","sidebar-title-primary":"var(--sidebar-title-primary)","sidebar-icon":"var(--sidebar-icon)"}},boxShadow:{"sidebar-shadow":"0 0px 24px rgba(0, 0, 0, 0.15)"},borderRadius:{lg:"var(--radius)",md:"calc(var(--radius) - 2px)",sm:"calc(var(--radius) - 4px)"},keyframes:{"accordion-down":{from:{height:"0"},to:{height:"var(--radix-accordion-content-height)"}},"accordion-up":{from:{height:"var(--radix-accordion-content-height)"},to:{height:"0"}},"scale-thinking-cursor":{"0%, 100%":{transform:"scale(1)"},"40%":{transform:"scale(0.6)"}}},animation:{"accordion-down":"accordion-down 0.2s ease-out","accordion-up":"accordion-up 0.2s ease-out","scale-thinking-cursor":"scale-thinking-cursor 1.75s infinite ease-in-out"},typography:{DEFAULT:{css:{blockquote:{"font-style":"normal"},pre:{backgroundColor:"transparent"},"--tw-prose-body":"var(--text-primary)","--tw-prose-invert-body":"var(--text-primary)","--tw-prose-headings":"var(--text-primary)","--tw-prose-invert-headings":"var(--text-primary)","--tw-prose-lead":"var(--text-primary)","--tw-prose-invert-lead":"var(--text-primary)","--tw-prose-links":"var(--text-primary)","--tw-prose-invert-links":"var(--text-primary)","--tw-prose-bold":"var(--text-primary)","--tw-prose-invert-bold":"var(--text-primary)","--tw-prose-bullets":"var(--text-primary)","--tw-prose-invert-bullets":"var(--text-primary)","--tw-prose-counters":"var(--text-primary)","--tw-prose-invert-counters":"var(--text-primary)","--tw-prose-quotes":"var(--text-primary)","--tw-prose-invert-quotes":"var(--text-primary)","--tw-prose-hr":"var(--border-xheavy)","--tw-prose-invert-hr":"var(--border-xheavy)","--tw-prose-captions":"var(--text-secondary)","--tw-prose-invert-captions":"var(--text-secondary)","--tw-prose-code":"var(--text-primary)","--tw-prose-invert-code":"var(--text-primary)"}}},zIndex:{100:"100"}}}};function p(e){return"".concat(e,"px")}let x=a()(m);function h(e){return"".concat(e,"px")}function v(e){return"".concat(e,"%")}},33424:function(e,t,n){n.d(t,{P:function(){return r}});let r={service:"operator-web",env:"https://operator.chatgpt.com/operator-api",version:"unknown"}},57319:function(e,t,n){n.d(t,{S:function(){return a},U:function(){return c}});var r=n(64763),s=n(33424);function a(){return r.v}class i{init(){r.v.init(l)}addAction(e){r.v.addAction(e.name,{..."context"in e?e.context:{}})}addError(e,t){r.v.addError(e,t)}addPerformance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=performance.now(),s={...t};return{updateContext(e){s={...s,...e}},stop(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=performance.now();r.v.addAction(e,{durationMs:a-n,...s,...t})}}}}let o=/^https:\/\/.*?\.cua\.openai\.org/,l={applicationId:"60669a74-3c80-43e4-99b8-ce33b06e5600",clientToken:"pub3c8ae5de8e600df9604ec326e91c70f6",site:"datadoghq.com",service:s.P.service,env:s.P.env,version:s.P.version,sessionSampleRate:100,sessionReplaySampleRate:100,trackUserInteractions:!0,trackResources:!0,trackLongTasks:!0,defaultPrivacyLevel:"allow",allowedTracingUrls:[{propagatorTypes:["datadog","tracecontext"],match:e=>o.test(e)}],traceSampleRate:100},c=new i},55095:function(e,t,n){n.d(t,{Rk:function(){return s},W6:function(){return o},zj:function(){return l}});var r=n(61512);let s=!1,a="staging"===r.env.OPENAI_ENV,i="prod"===r.env.OPENAI_ENV,o=!1;function l(){return i?"production":a?"staging":"development"}},69093:function(e,t,n){n.d(t,{O:function(){return r}});var r=n(55095)},83346:function(e,t,n){n.d(t,{e:function(){return r}});var r={};n.r(r),n.d(r,{DisplayShortcut:function(){return X},Key:function(){return Q},KeyboardShortcut:function(){return J},Modal:function(){return D},OperatingSystem:function(){return G},Provider:function(){return R},Register:function(){return V},Scope:function(){return I},eventKeySet:function(){return j},eventModifierKeySet:function(){return y},getKeyLabel:function(){return $},parseShortcut:function(){return K},useApi:function(){return P},useKeyboardListener:function(){return N}});var s=n(44259),a=n(9271),i=n(99155),o=n(40016),l=n(61597),c=n.n(l),u=n(7956),d=n.n(u),f=n(31544);let m="default";var p=n(81380);function x(e){let t={};for(let[n,r]of Object.entries(e))t[n]=r,t[r]=n;return t}let h=x({a:"apple"});h.a,h.apple;let v=function(e){let t=new Map;return function(){for(var n=arguments.length,r=Array(n),s=0;s{let e=function(e){let t=[],n=function(e,t){let n;let r=null!=t?t:1e3;return function(){for(var t=arguments.length,s=Array(t),a=0;ae(...s),r)}}(()=>{t=[]},C);return{handleKeyDown:function(r){if(void 0===r.key||!(r.target instanceof HTMLElement))return;let s=r.target,{pressed:a,key:i}=j(r),o=Array.from(d()(t)||[]),l=Array.from(a).slice(0,-1),c=!1;if(o.length&&o.length===l.length&&(c=!0),c)for(let[e,t]of(0,p.R)(l))t!==o[e]&&(c=!1);c?t[t.length-1]=new Set(a):t.push(new Set(a));let u={key:i,pressed:new Set(a),sequence:[...t],target:s,event:r};return e.current(u),n(),u}}}(t);return document.addEventListener("keydown",e.handleKeyDown),function(){document.removeEventListener("keydown",e.handleKeyDown)}},[t])}let C=1e3;function _(e,t){return 1===t.size&&A(e,t)}function k(e,t){return e.keys.some(e=>"SHIFT"===e)?S(e,t)||S({type:e.type,keys:e.keys.map(z)},t):S(e,t)}function S(e,t){if(t.size!==e.keys.length)return!1;for(let n of e.keys)if(!A(n,t))return!1;return!0}function z(e){return E[e]||e}let E=x({"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(",0:")","-":"_","=":"PLUS","[":"{","]":"}","\\":"|",";":":","'":'"',",":"<",".":">","/":"?"});function A(e,t){let n=e;return"MOD"===e&&(n="Mac"===v()?"META":"CONTROL"),t.has(n)}let T=function(){let e=new Set(["TEXTAREA","INPUT","SELECT"]);return function(t){return e.has(t.tagName)||t.isContentEditable}}(),L=a.createContext(null);function R(e){let[t]=a.useState(()=>(function(){let e=new Set,t=new Map,n=new Set,r=new Set,s=new Set,a={unregister:function(e){t.delete(e)},register:function(s){s.scope=s.scope||m,n.add(s.scope),s.modal&&r.add(s.modal),e.add(s.id),t.set(s.id,s)},shortcuts:{all:()=>i({filter_active:!1}),active:()=>i({filter_active:!0})},scopes:{all:()=>new Set(n)},modals:{all:()=>new Set(r),active:()=>d()(Array.from(s)),activate(e){s.add(e)},deactivate(e){s.delete(e)}}};return a;function i(n){let r=Array.from(t.values()),s=new Map,i=new Map;for(let r of Array.from(e)){let e=t.get(r);if(e){if(n.filter_active){let t=a.modals.active();if(t&&e.modal!==t)continue}for(let t of(i.has(e.group)||i.set(e.group,{labelMap:new Map}),e.shortcuts)){var l;let n=function e(t){if("string"==typeof t)return t;switch(t.type){case"combo":return t.keys.join("+");case"sequence":return t.keys.map(e).join(" ");default:throw new f.S(t)}}(t);s.has(n)||s.set(n,{shortcut:t,groupMap:new Map}),null===(l=s.get(n))||void 0===l||l.groupMap.set(e.group,{shortcut:t,group:e.group,label:e.label,handler:e.handler,ignoreTarget:e.ignoreTarget,scope:e.scope,modal:e.modal})}}}let u=[],m=[];for(let e of s.values()){let t=Array.from(e.groupMap.values()),n=d()(t);(0,o.k)(n,"last_shortcut must exist");let r=n.label;c()(n.shortcut)&&"sequence"===n.shortcut.type?m.push(n):u.push(n);let s=i.get(n.group);(0,o.k)(s,"group must exist"),s.labelMap.has(r)||s.labelMap.set(r,[]);let a=s.labelMap.get(r);(0,o.k)(a,"label_list must exist"),a.push(n)}return{uniqueList:m.concat(u),groupMap:i,all:r}}})());return(0,s.jsxs)(L.Provider,{value:t,children:[(0,s.jsx)(i.w,{name:"KeyboardShortcuts",value:t}),(0,s.jsx)(M,{}),e.children]})}function P(){let e=a.useContext(L);return(0,o.k)(e,"Must wrap React tree with "),e}function M(){return!function(){let e=P();N(t=>(function(e,t){for(let n of e.shortcuts.active().uniqueList)if(!(!function(e,t){if("string"==typeof e)return _(e,t.pressed);switch(e.type){case"combo":return k(e,t.pressed);case"sequence":if(t.sequence.length(i&&n.modals.activate(i),n.modals.activate(r),function(){n.modals.deactivate(r)}),[n,r,i]),(0,s.jsx)(H.Provider,{value:r,children:(0,s.jsx)("div",{ref:t,children:e.children})})});function O(){return a.useContext(H)}let H=a.createContext(void 0);function I(e){return(0,s.jsx)(F.Provider,{value:e.scope,children:e.children})}let F=a.createContext(void 0);function K(e){if(!Array.isArray(e))return U(e);let t=[];for(let n of e)t.push(U(n));return{type:"sequence",keys:t}}function U(e){let t,n=e;(0,o.k)("string"==typeof n,"shortcut must be string [".concat(n,"]")),q.doublePlus.test(n)&&(n=n.replace(q.doublePlus,"+PLUS"));let r=n.match(B);return((0,o.k)(null==r?void 0:r.groups,"invalid shortcut [".concat(n,"]")),r.groups.E?t=[r.groups.A,r.groups.B,r.groups.C,r.groups.D,r.groups.E]:r.groups.D?t=[r.groups.A,r.groups.B,r.groups.C,r.groups.D]:r.groups.C?t=[r.groups.A,r.groups.B,r.groups.C]:r.groups.B&&(t=[r.groups.A,r.groups.B]),t)?{type:"combo",keys:t}:r.groups.A}let B=function(){let e="[^+]+",t=t=>"(?:\\+(?<".concat(t,">").concat(e,"))?");return new RegExp(["^","(?".concat(e,")"),t("B"),t("C"),t("D"),t("E")].join(""))}(),q={doublePlus:/\+\+/};function V(e){let t=a.useId(),n=P(),r=a.useContext(F)||m,s=O();return a.useEffect(()=>{let a;a="shortcuts"in e?e.shortcuts.map(K):[K(e.shortcut)];let i=e.scope||r,o={id:t,...e,scope:i,modal:s,shortcuts:a};return n.register(o),function(){n.unregister(t)}}),null}var W=n(36670);let Z=a.createContext(null),G={useValue:function(e){let t=a.useContext(Z);return e||t||v()},Override:function(e){return(0,s.jsx)(Z.Provider,{value:e.os,children:e.children})}};function $(e,t){let n=null!=t?t:v();switch(e){case"ESCAPE":return"Esc";case"ARROWUP":return"↑";case"ARROWDOWN":return"↓";case"ARROWLEFT":return"←";case"ARROWRIGHT":return"→";case"ENTER":return"Enter";case"TAB":return"Tab";case"SPACE":return"Space";case"BACKSPACE":return"⌫";case"SHIFT":return"⇧";case"CONTROL":return"Ctrl";case"INSERT":return"Ins";case"DELETE":return"Delete";case"HOME":return"Home";case"END":return"End";case"PAGEUP":return"Page up";case"PAGEDOWN":return"Page down";case"HELP":return"HELP";case"ALT":if("Mac"===n)return"⌥";return"Alt";case"META":switch(n){case"Mac":return"⌘";case"Windows":return"⊞";case"Linux":return"❖";default:throw new f.S(n)}case"MOD":if("Mac"===n)return"⌘";return"Ctrl";case"PLUS":return"+";default:return new f.S(e),e}}function Q(e){let t=G.useValue(e.os),n=$(e.value,t),r=1===n.length;if("raw"===e.format)return n;let a=(0,W.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-md font-medium leading-4",r?"size-6":"px-2 py-1",Y[e.value]?"font-[monospace]":""),i=function(){switch(e.format){case"no-border":return(0,W.cn)(a,"bg-foreground/5 text-foreground/80");case"border":case void 0:return(0,W.cn)(a,"border bg-foreground/5 text-foreground/80");default:return new f.S(e.format),""}}();return(0,s.jsx)("div",{className:i,children:n})}let Y=Object.freeze({"*":"*"});function J(e){let t=G.useValue(e.os);if("string"==typeof e.shortcut)return(0,s.jsx)(Q,{value:e.shortcut,os:t,format:e.format});let n=[];for(let[r,i]of(0,p.R)(e.shortcut.keys)){let o=function(e){switch(e.type){case"combo":return(0,s.jsx)("span",{className:"inline-block w-0.5"});case"sequence":return(0,s.jsx)("span",{className:"px-2",children:"then"});default:throw new f.S(e)}}(e.shortcut);n.push((0,s.jsxs)(a.Fragment,{children:[(0,s.jsx)(J,{shortcut:i,os:t,format:e.format}),r===e.shortcut.keys.length-1?null:o]},r))}return(0,s.jsx)("span",{className:"whitespace-nowrap",children:n})}function X(e){let t=G.useValue(e.os);try{let n=K(e.shortcut);return(0,s.jsx)(J,{shortcut:n,os:t,format:e.format})}catch(e){return console.error(e),null}}}}]);
--------------------------------------------------------------------------------