@taazkareem/clickup-mcp-server 0.14.3 → 0.14.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/Dockerfile +3 -0
  2. package/README.md +211 -120
  3. package/build/auth/routes.js +1 -1
  4. package/build/config.js +1 -1
  5. package/build/index.js +1 -1
  6. package/build/license.js +1 -1
  7. package/build/logger.js +1 -1
  8. package/build/middleware/auth.js +1 -1
  9. package/build/middleware/security.js +1 -1
  10. package/build/personas.js +1 -1
  11. package/build/prompts.js +1 -1
  12. package/build/server.js +1 -1
  13. package/build/services/clickup/audit-logs.js +1 -1
  14. package/build/services/clickup/base.js +1 -1
  15. package/build/services/clickup/bulk.js +1 -1
  16. package/build/services/clickup/chat.js +1 -1
  17. package/build/services/clickup/custom-field.js +1 -1
  18. package/build/services/clickup/document.js +1 -1
  19. package/build/services/clickup/errors.js +1 -1
  20. package/build/services/clickup/folder.js +1 -1
  21. package/build/services/clickup/goal.js +1 -1
  22. package/build/services/clickup/guest.js +1 -1
  23. package/build/services/clickup/index.js +1 -1
  24. package/build/services/clickup/list.js +1 -1
  25. package/build/services/clickup/rate-limiter.js +1 -1
  26. package/build/services/clickup/sprint.js +1 -1
  27. package/build/services/clickup/tag.js +1 -1
  28. package/build/services/clickup/task/index.js +1 -1
  29. package/build/services/clickup/task/task-attachments.js +1 -1
  30. package/build/services/clickup/task/task-checklists.js +1 -1
  31. package/build/services/clickup/task/task-comments.js +1 -1
  32. package/build/services/clickup/task/task-core.js +1 -1
  33. package/build/services/clickup/task/task-relationships.js +1 -1
  34. package/build/services/clickup/task/task-search.js +1 -1
  35. package/build/services/clickup/task/task-service.js +1 -1
  36. package/build/services/clickup/task/task-tags.js +1 -1
  37. package/build/services/clickup/task-templates.js +1 -1
  38. package/build/services/clickup/time.js +1 -1
  39. package/build/services/clickup/types.js +1 -1
  40. package/build/services/clickup/user-group.js +1 -1
  41. package/build/services/clickup/view.js +1 -1
  42. package/build/services/clickup/webhook.js +1 -1
  43. package/build/services/clickup/workspace.js +1 -1
  44. package/build/services/oauth.js +1 -1
  45. package/build/services/shared.js +1 -1
  46. package/build/sse_server.js +1 -1
  47. package/build/tools/attachment.js +1 -1
  48. package/build/tools/audit-logs.js +1 -1
  49. package/build/tools/categories.js +1 -0
  50. package/build/tools/chat/handlers.js +1 -1
  51. package/build/tools/chat/index.js +1 -1
  52. package/build/tools/chat/utils.js +1 -1
  53. package/build/tools/custom-field.js +1 -1
  54. package/build/tools/documents.js +1 -1
  55. package/build/tools/feedback.js +1 -1
  56. package/build/tools/folder.js +1 -1
  57. package/build/tools/goal.js +1 -1
  58. package/build/tools/guest.js +1 -1
  59. package/build/tools/index.js +1 -1
  60. package/build/tools/list.js +1 -1
  61. package/build/tools/registry.js +1 -1
  62. package/build/tools/space.js +1 -1
  63. package/build/tools/sprint.js +1 -1
  64. package/build/tools/tag.js +1 -1
  65. package/build/tools/task/bulk-operations.js +1 -1
  66. package/build/tools/task/checklists.js +1 -1
  67. package/build/tools/task/handlers.js +1 -1
  68. package/build/tools/task/index.js +1 -1
  69. package/build/tools/task/main.js +1 -1
  70. package/build/tools/task/markdown-converter.js +1 -1
  71. package/build/tools/task/params.js +1 -1
  72. package/build/tools/task/relationships.js +1 -1
  73. package/build/tools/task/single-operations.js +1 -1
  74. package/build/tools/task/utilities.js +1 -1
  75. package/build/tools/task/workspace-operations.js +1 -1
  76. package/build/tools/task-templates.js +1 -1
  77. package/build/tools/time_entries.js +1 -1
  78. package/build/tools/user-group.js +1 -1
  79. package/build/tools/utils.js +1 -1
  80. package/build/tools/view.js +1 -1
  81. package/build/tools/webhook.js +1 -1
  82. package/build/tools/workspace.js +1 -1
  83. package/build/transport/mcp-handler.js +1 -1
  84. package/build/utils/cache.js +1 -1
  85. package/build/utils/color-processor.js +1 -1
  86. package/build/utils/concurrency-utils.js +1 -1
  87. package/build/utils/context-utils.js +1 -1
  88. package/build/utils/date-utils.js +1 -1
  89. package/build/utils/log-sanitizer.js +1 -1
  90. package/build/utils/member-utils.js +1 -1
  91. package/build/utils/request-utils.js +1 -1
  92. package/build/utils/resolver-utils.js +1 -1
  93. package/build/utils/sponsor-service.js +1 -1
  94. package/build/utils/token-utils.js +1 -1
  95. package/package.json +3 -2
  96. package/public/favicon.ico +0 -0
package/Dockerfile CHANGED
@@ -33,6 +33,9 @@ COPY --from=builder /app/node_modules ./node_modules
33
33
  # Copy the entrypoint script if necessary
34
34
  COPY --from=builder /app/package.json ./
35
35
 
36
+ # Copy static assets
37
+ COPY public ./public
38
+
36
39
  # Expose the desired port (if the server binds to a port)
37
40
  EXPOSE 8080
38
41
 
package/README.md CHANGED
@@ -26,9 +26,11 @@ The industry-standard ClickUp integration for AI.
26
26
 
27
27
  ## 📚 Table of Contents
28
28
 
29
- | Links         | Quick Start & Installation |
30
- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
31
- | •&nbsp;[Features](#features)<br>•&nbsp;[Premium&nbsp;Access](#premium-access)<br>•&nbsp;[Available&nbsp;Tools](#available-tools)<br>•&nbsp;[Adv.&nbsp;Config](#advanced-configuration)<br>•&nbsp;[FAQ](#faq)<br>•&nbsp;[Disclaimer](#disclaimer) | <table border="0" style="border: none; border-collapse: collapse; width: 575px;"> <tr style="border: none;"> <td width="140" style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/openclaw-logo.svg" height="16" style="vertical-align: middle;"> OpenClaw](#openclaw-setup)</td> <td width="155" style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/cursor-white.svg" height="16" style="vertical-align: middle;"> Cursor](#cursor-setup)</td> <td width="140" style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/visual-studio-code.svg" height="16" style="vertical-align: middle;"> VS&nbsp;Code](#vscode-setup)</td> <td width="140" style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="https://avatars.githubusercontent.com/u/211522643?s=200&v=4" height="16" style="vertical-align: middle; border-radius: 4px;"> Roo&nbsp;Code](#roocode-setup)</td> </tr> <tr style="border: none;"> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/claude.svg" height="16" style="vertical-align: middle;"> Claude](#claude-desktop-setup)</td> <td st yle="border: none; vertical-align: middle; white-space: nowrap;">[<img src="https://cdn.simpleicons.org/anthropic/D97757" height="16" style="vertical-align: middle;"> Claude&nbsp;Code](#claude-code-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="https://cdn.simpleicons.org/n8n/FF6D5A" height="16" style="vertical-align: middle;"> n8n](#n8n-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="https://cdn.simpleicons.org/googlegemini/8E75C2" height="16" style="vertical-align: middle;"> Gemini&nbsp;CLI](#gemini-setup)</td> </tr> <tr style="border: none;"> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/antigravity.svg" height="16" style="vertical-align: middle;"> Antigravity](#antigravity-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/openai-icon.svg" height="16" style="vertical-align: middle;"> Codex](#codex-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/openai-icon.svg" height="16" style="vertical-align: middle;"> ChatGPT](#chatgpt-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/augment-code.svg" height="16" style="vertical-align: middle;"> Augment](#augment-setup)</td> </tr> <tr style="border: none;"> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/augment-code.svg" height="16" style="vertical-align: middle;"> Auggie](#auggierun-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/windsurf-white.svg" height="16" style="vertical-align: middle;"> Windsurf](#windsurf-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[Other](#other-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[➕ Add Agent](mailto:info@taazkareem.com?subject=Redirect%20URI%20Whitelist%20Request)</td> </tr> </table> |
29
+ | Links | Quick Start & Installation |
30
+ | :--- | :--- |
31
+ | •&nbsp;[Features](#features)<br>•&nbsp;[Premium&nbsp;Access](#premium-access)<br>•&nbsp;[Available&nbsp;Tools](#available-tools)<br>•&nbsp;[Adv.&nbsp;Config](#advanced-configuration)<br>•&nbsp;[FAQ](#faq)<br>•&nbsp;[Disclaimer](#disclaimer) | <table border="0" style="border: none; border-collapse: collapse; width: 575px;"> <tr style="border: none;"> <td width="140" style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/antigravity.svg" height="16" style="vertical-align: middle;"> Antigravity](#antigravity-setup)</td> <td width="155" style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/antigravity.svg" height="16" style="vertical-align: middle;"> Agy&nbsp;CLI](#antigravity-cli-setup)</td> <td width="140" style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/images/hermes-logo.png" height="16" style="vertical-align: middle;"> Hermes](#hermes-setup)</td> <td width="140" style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/openclaw-logo.svg" height="16" style="vertical-align: middle;"> OpenClaw](#openclaw-setup)</td> </tr> <tr style="border: none;"> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/cursor-white.svg" height="16" style="vertical-align: middle;"> Cursor](#cursor-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/visual-studio-code.svg" height="16" style="vertical-align: middle;"> VS&nbsp;Code](#vscode-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/claude.svg" height="16" style="vertical-align: middle;"> Claude](#claude-desktop-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="https://cdn.simpleicons.org/anthropic/D97757" height="16" style="vertical-align: middle;"> ClaudeCode](#claude-code-setup)</td> </tr> <tr style="border: none;"> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="https://cdn.simpleicons.org/n8n/FF6D5A" height="16" style="vertical-align: middle;"> n8n](#n8n-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/openai-icon.svg" height="16" style="vertical-align: middle;"> Codex](#codex-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/openai-icon.svg" height="16" style="vertical-align: middle;"> ChatGPT](#chatgpt-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/augment-code.svg" height="16" style="vertical-align: middle;"> Augment](#augment-setup)</td> </tr> <tr style="border: none;"> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/augment-code.svg" height="16" style="vertical-align: middle;"> Auggie](#auggierun-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="./assets/logos/windsurf-white.svg" height="16" style="vertical-align: middle;"> Windsurf](#windsurf-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[<img src="https://avatars.githubusercontent.com/u/211522643?s=200&v=4" height="16" style="vertical-align: middle; border-radius: 4px;"> Roo&nbsp;Code](#roocode-setup)</td> <td style="border: none; vertical-align: middle; white-space: nowrap;">[➕ Add Agent](mailto:info@taazkareem.com?subject=Redirect%20URI%20Whitelist%20Request)</td> </tr> </table> |
32
+
33
+
32
34
 
33
35
  ---
34
36
 
@@ -102,9 +104,9 @@ A license grants full, unrestricted access to all features across your agents⎯
102
104
 
103
105
  <br>
104
106
 
105
- | [**Monthly**](https://buy.polar.sh/polar_cl_3xQojQLgzQXKCLzsxc49YfL6z8hzSBBqh9ivy1qZdwW?utm_source=github&utm_medium=readme) $9/mo | [**Annual**](https://buy.polar.sh/polar_cl_3a8a3055T4CHIoVlSQPsNshOJLUwsM8AHAiIR3y9wTZ?utm_source=github&utm_medium=readme) $59/yr | [**Lifetime**](https://buy.polar.sh/polar_cl_4ha3uVyJTu4iPZJS1QbBYNTI1MKTvaXXCkZTb45vPPF?utm_source=github&utm_medium=readme) <!--LIFETIME_HEADER-->$119<!--/LIFETIME_HEADER--> |
106
- | :--------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
107
- | • Pay-as-you-go flexibility<br>• 3 device activations<br>• Cancel anytime | • **Save 45%** ($4.92/mo)<br>• 3 device activations<br>• Priority support all year | • **Best Value** — One payment<br>• 3 device activations<br>• <!--LIFETIME_DETAIL-->Unlocked Forever<!--/LIFETIME_DETAIL--> |
107
+ | [**Monthly**](https://buy.polar.sh/polar_cl_3xQojQLgzQXKCLzsxc49YfL6z8hzSBBqh9ivy1qZdwW?utm_source=github&utm_medium=readme) $9/mo | [**Annual**](https://buy.polar.sh/polar_cl_3a8a3055T4CHIoVlSQPsNshOJLUwsM8AHAiIR3y9wTZ?utm_source=github&utm_medium=readme) $59/yr | [**Lifetime**](https://buy.polar.sh/polar_cl_4ha3uVyJTu4iPZJS1QbBYNTI1MKTvaXXCkZTb45vPPF?utm_source=github&utm_medium=readme) <!--LIFETIME_HEADER-->$89 w/ code<!--/LIFETIME_HEADER--> |
108
+ | :--------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
109
+ | • Pay-as-you-go flexibility<br>• 3 device activations<br>• Cancel anytime | • **Save 45%** ($4.92/mo)<br>• 3 device activations<br>• Priority support all year | • **Best Value** — One payment<br>• 3 device activations<br>• <!--LIFETIME_DETAIL-->**25% OFF** code: `AUG25`<!--/LIFETIME_DETAIL--> |
108
110
 
109
111
  <br>
110
112
 
@@ -136,57 +138,211 @@ A license grants full, unrestricted access to all features across your agents⎯
136
138
 
137
139
  ### 2. Choose your MCP Host & Transport
138
140
 
139
- <a name="openclaw-setup"></a>
141
+ <a name="antigravity-setup"></a>
140
142
 
141
143
  <details>
142
- <summary>&nbsp;<img src="./assets/logos/openclaw-logo.svg" height="22" align="center"> <strong>OpenClaw (via mcporter) </strong> <sub>&nbsp;FEATURED</sub></summary>
144
+ <summary>&nbsp;<img src="./assets/logos/antigravity.svg" height="22" align="center"> <strong>Antigravity (IDE &amp; 2.0)</strong></summary>
143
145
 
144
- **1. Enable** mcporter in `~/.openclaw/openclaw.json`:
146
+ Download from [antigravity.google](https://antigravity.google). Covers **Antigravity IDE** (VS Code-based agentic editor) and **Antigravity 2.0** (standalone desktop agent orchestration app). Both share the same configuration file.
147
+
148
+ **Configuration Path:** `~/.gemini/config/mcp_config.json`
149
+
150
+ > **Tip:** Open the Agent Panel → **...** → **Manage MCP Servers** → **View raw config** to open this file directly. Or type `/mcp` in the prompt panel.
151
+
152
+ **Option A: Remote / Streamable HTTP (Recommended)**
145
153
 
146
154
  ```json
147
- { "skills": { "allowBundled": ["mcporter"] } }
155
+ {
156
+ "mcpServers": {
157
+ "ClickUp": {
158
+ "serverUrl": "https://clickup-mcp.taazkareem.com/mcp",
159
+ "headers": { "X-License-Key": "your-license-key" }
160
+ }
161
+ }
162
+ }
148
163
  ```
149
164
 
150
- **2. Configure & Auth**
151
- Connect the server and authorize via browser (tokens are cached):
165
+ **Option B: Local / STDIO**
166
+
167
+ ```json
168
+ {
169
+ "mcpServers": {
170
+ "ClickUp": {
171
+ "command": "npx",
172
+ "args": ["-y", "@taazkareem/clickup-mcp-server@latest"],
173
+ "env": {
174
+ "CLICKUP_API_KEY": "your-api-key",
175
+ "CLICKUP_TEAM_ID": "your-team-id",
176
+ "CLICKUP_MCP_LICENSE_KEY": "your-license-key"
177
+ }
178
+ }
179
+ }
180
+ }
181
+ ```
182
+
183
+ </details>
184
+
185
+ <a name="antigravity-cli-setup"></a>
186
+
187
+ <details>
188
+ <summary>&nbsp;<img src="./assets/logos/antigravity.svg" height="22" align="center"> <strong>Antigravity CLI (agy)</strong></summary>
189
+
190
+ A lightweight terminal-based interface (TUI) for Antigravity agents. Install with:
152
191
 
153
192
  ```bash
154
- # Add ClickUp as a remote server
155
- mcporter config add ClickUp https://clickup-mcp.taazkareem.com/mcp --auth oauth --header "X-License-Key=your-license-key"
193
+ curl -fsSL https://antigravity.google/cli/install.sh | bash
194
+ ```
156
195
 
157
- # Authenticate session
158
- mcporter auth ClickUp
196
+ **Configuration Path:** `~/.gemini/antigravity-cli/mcp_config.json`
197
+
198
+ > **Tip:** Run `agy` and type `/mcp` in the interactive session to manage servers from within the TUI.
199
+
200
+ **Option A: Remote / Streamable HTTP (Recommended)**
201
+
202
+ ```json
203
+ {
204
+ "mcpServers": {
205
+ "ClickUp": {
206
+ "serverUrl": "https://clickup-mcp.taazkareem.com/mcp",
207
+ "headers": { "X-License-Key": "your-license-key" }
208
+ }
209
+ }
210
+ }
211
+ ```
212
+
213
+ **Option B: Local / STDIO**
214
+
215
+ ```json
216
+ {
217
+ "mcpServers": {
218
+ "ClickUp": {
219
+ "command": "npx",
220
+ "args": ["-y", "@taazkareem/clickup-mcp-server@latest"],
221
+ "env": {
222
+ "CLICKUP_API_KEY": "your-api-key",
223
+ "CLICKUP_TEAM_ID": "your-team-id",
224
+ "CLICKUP_MCP_LICENSE_KEY": "your-license-key"
225
+ }
226
+ }
227
+ }
228
+ }
229
+ ```
230
+
231
+ </details>
232
+
233
+ <a name="hermes-setup"></a>
234
+
235
+ <details>
236
+ <summary>&nbsp;<img src="./assets/images/hermes-logo.png" height="22" align="center"> <strong>Hermes Agent</strong></summary>
237
+
238
+ **Single Agent Configuration Path:** `~/.hermes/config.yaml`
239
+
240
+ **Option A: Remote / Streamable HTTP**
241
+
242
+ ```bash
243
+ hermes mcp add clickup \
244
+ --url https://clickup-mcp.taazkareem.com/mcp \
245
+ --auth oauth && \
246
+ hermes config set mcp_servers.clickup.headers.X-License-Key "your-license-key"
159
247
  ```
160
248
 
161
- **Optional: Multiple Personas**
162
- The most robust and flexible way to manage personas is to define multiple named configurations in your **agent-specific** `mcporter.json` file. This isolates credentials and policies per-agent.
249
+ **Option B: Local / STDIO**
163
250
 
164
251
  ```bash
165
- # Define an Auditor persona (Read-only) in your workspace config
166
- mcporter --config <agent-workspace>/config/mcporter.json config add ClickUp-Auditor https://clickup-mcp.taazkareem.com/mcp \
167
- --header "X-Persona=auditor" \
168
- --header "X-License-Key=your-license-key" \
169
- --header "X-ClickUp-Key=your-api-key" \
170
- --header "X-ClickUp-Team-Id=your-team-id"
252
+ hermes mcp add clickup \
253
+ --command npx \
254
+ --args -y @taazkareem/clickup-mcp-server@latest \
255
+ --env CLICKUP_API_KEY="your-api-key" \
256
+ CLICKUP_TEAM_ID="your-team-id" \
257
+ CLICKUP_MCP_LICENSE_KEY="your-license-key"
258
+ ```
171
259
 
172
- # Define a Task Worker persona (Daily CRUD) in the same or different workspace
173
- mcporter --config <agent-workspace-2>/config/mcporter.json config add ClickUp-Worker https://clickup-mcp.taazkareem.com/mcp \
174
- --header "X-Persona=task_worker" \
175
- --header "X-License-Key=your-license-key" \
176
- --header "X-ClickUp-Key=your-api-key" \
177
- --header "X-ClickUp-Team-Id=your-team-id"
260
+ - Run it: `hermes`
178
261
 
179
- # Now the OpenClaw sub-agent can see the optimized schema and call its focused tools like:
180
- mcporter list ClickUp-Auditor --schema
181
- mcporter call ClickUp-Auditor.get_workspace
262
+ ---
263
+
264
+ #### Multi-Agent Setup (Profiles + Personas)
265
+
266
+ Run a **team of specialized agents** on the same workspace (or separate). Each Hermes **profile** is an isolated agent with its own config and `SOUL.md` instructions. Configure each profile to match a **persona** (`X-Persona`) as needed. This will scope which ClickUp tools is in its context. **Guide with examples:**
182
267
 
183
- mcporter list ClickUp-Worker --schema
184
- mcporter call ClickUp-Worker.create_task listId="123456789" name="New Task"
268
+ **1. Create the profiles**
269
+
270
+ ```bash
271
+ hermes profile create project_manager
272
+ hermes profile create task_worker
273
+ hermes profile create auditor
185
274
  ```
186
275
 
187
- > **Isolation**: You can add X-Enabled-Tools or X-Disabled-Tools to mix and match tools and personas, or perhaps enable just a single tool. You can assign different ClickUp API Keys, Team IDs, or even different License Keys to each config/persona. Since the agent only reads the tool definitions and not the sensitive headers directly, this is the most secure way to handle multi-agent ClickUp configurations.
276
+ > Optional: Use `--clone` to copy the existing config.yaml/.env/SOUL.md, or re-run the commands from above.
188
277
 
189
- To see all available personas and what they do, see the [Advanced Configuration](#advanced-configuration) section below.
278
+ **2. Set each profile's persona.** The profile has the MCP config now, so just add the matching persona:
279
+
280
+ ```bash
281
+ project_manager config set mcp_servers.clickup.headers.X-Persona "project_manager"
282
+ task_worker config set mcp_servers.clickup.headers.X-Persona "task_worker"
283
+ auditor config set mcp_servers.clickup.headers.X-Persona "auditor"
284
+ ```
285
+ > See [→ Advanced Configuration ](#advanced-configuration) for more customized filtering options.
286
+
287
+ **3. Give each agent its instructions** in `~/.hermes/profiles/<name>/SOUL.md` (`auditor` shown):
288
+
289
+ ```markdown
290
+ # ClickUp Auditor
291
+
292
+ You are a read-only project auditor. Observe and report — never change anything.
293
+ - Summarize task status, overdue items, and blockers concisely.
294
+ - Surface risks and recommend actions, but never execute them.
295
+ - If asked to create or modify a task, decline and explain you are read-only.
296
+ ```
297
+
298
+ **Run any agent query by its profile (call by User or Agent):**
299
+
300
+ ```bash
301
+ project_manager chat -q "Break the Q3 launch into a list with subtasks and owners"
302
+ auditor chat -q "Audit the Sprint board and report what's at risk"
303
+ ```
304
+ -OR-
305
+
306
+ **Run a TUI or Gateway called by User:**
307
+
308
+ ```bash
309
+ project_manager gateway start
310
+ auditor chat
311
+ ```
312
+
313
+ ---
314
+
315
+ **Other (Custom Agents, etc.)**
316
+ For most other MCP-compliant hosts:
317
+
318
+ - **Server URL:** `https://clickup-mcp.taazkareem.com/mcp`
319
+ - **Auth Header:** `X-License-Key: your-license-key`
320
+
321
+ </details>
322
+
323
+
324
+ <a name="openclaw-setup"></a>
325
+
326
+ <details>
327
+ <summary>&nbsp;<img src="./assets/logos/openclaw-logo.svg" height="22" align="center"> <strong>OpenClaw (via mcporter) </strong></summary>
328
+
329
+ **1. Enable** mcporter in `~/.openclaw/openclaw.json`:
330
+
331
+ ```json
332
+ { "skills": { "allowBundled": ["mcporter"] } }
333
+ ```
334
+
335
+ **2. Configure & Auth**
336
+
337
+ ```bash
338
+ # Add ClickUp as a remote server
339
+ mcporter config add ClickUp https://clickup-mcp.taazkareem.com/mcp --auth oauth --header "X-License-Key=your-license-key"
340
+
341
+ # Authenticate session
342
+ mcporter auth ClickUp
343
+ ```
344
+
345
+ > **Pro Tip:** Use [Personas](#advanced-configuration) to define multiple isolated configurations (e.g., Auditor vs. Worker) in your agent's `mcporter.json`.
190
346
 
191
347
  </details>
192
348
 
@@ -385,46 +541,6 @@ In n8n, use URL: `http://host.docker.internal:3231/mcp`
385
541
 
386
542
  </details>
387
543
 
388
- <a name="gemini-setup"></a>
389
-
390
- <details>
391
- <summary>&nbsp;<img src="https://cdn.simpleicons.org/googlegemini/8E75C2" height="22" align="center"> <strong>Gemini CLI</strong></summary>
392
-
393
- **Configuration Path:** `~/.gemini/settings.json`
394
-
395
- ```json
396
- {
397
- "mcpServers": {
398
- "ClickUp": {
399
- "httpUrl": "https://clickup-mcp.taazkareem.com/mcp",
400
- "headers": { "X-License-Key": "your-license-key" }
401
- }
402
- }
403
- }
404
- ```
405
-
406
- </details>
407
-
408
- <a name="antigravity-setup"></a>
409
-
410
- <details>
411
- <summary>&nbsp;<img src="./assets/logos/antigravity.svg" height="22" align="center"> <strong>Antigravity</strong></summary>
412
-
413
- **Configuration Path:** `~/.gemini/antigravity/mcp_config.json`
414
-
415
- ```json
416
- {
417
- "mcpServers": {
418
- "ClickUp": {
419
- "serverUrl": "https://clickup-mcp.taazkareem.com/mcp",
420
- "headers": { "X-License-Key": "your-license-key" }
421
- }
422
- }
423
- }
424
- ```
425
-
426
- </details>
427
-
428
544
  <a name="codex-setup"></a>
429
545
 
430
546
  <details>
@@ -561,44 +677,6 @@ auggie mcp add ClickUp --url https://clickup-mcp.taazkareem.com/mcp \
561
677
 
562
678
  </details>
563
679
 
564
- <a name="other-setup"></a>
565
-
566
- <details>
567
- <summary>&nbsp;<strong>Other (Custom Agents, etc.)</strong></summary>
568
-
569
- For most MCP-compliant hosts (e.g. Smithery, MCP Inspector, custom GUIs):
570
-
571
- - **Server URL:** `https://clickup-mcp.taazkareem.com/mcp`
572
- - **Auth Header:** `X-License-Key: your-license-key` (Required for HTTP/SSE connections)
573
-
574
- ---
575
-
576
- **Advanced: OpenAI Agents SDK**
577
- For developers building custom agents.
578
-
579
- **Python SDK:**
580
-
581
- ```python
582
- from agents import Agent, Runner
583
- from agents.mcp import MCPServerStreamableHttp
584
-
585
- async with MCPServerStreamableHttp(
586
- name="clickup",
587
- params={
588
- "url": "https://clickup-mcp.taazkareem.com/mcp",
589
- "headers": {"X-License-Key": "your-license-key"},
590
- },
591
- ) as server:
592
- agent = Agent(
593
- name="Assistant",
594
- instructions="Use the ClickUp MCP tools when helpful.",
595
- mcp_servers=[server],
596
- )
597
- result = await Runner.run(agent, "List my workspaces.")
598
- ```
599
-
600
- </details>
601
-
602
680
  ### 3. Restart
603
681
 
604
682
  Restart your MCP Host (e.g., Cursor IDE). The server will validate your License Key and start automatically.
@@ -773,18 +851,30 @@ _See [full documentation](docs/DOCUMENTATION.md) for parameters and advanced usa
773
851
 
774
852
  ### Filter Available Tools
775
853
 
776
- 💡 **Pro Tip!** Reduce context noise for the AI by limiting available tools.
854
+ 💡 **Pro Tip!** Reduce context noise for the AI by limiting available tools. There are 3 ways to do this. You can filter by exact tool name, by tool category, by personas (presets), or a combination of all three.
777
855
 
778
856
  **Local (Environment Variable):**
779
857
 
780
858
  ```json
781
- "ENABLED_TOOLS": "tool_1,tool_2,tool_3"
859
+ "ENABLED_TOOLS": "tool_1,tool_2,tool_3",
860
+ "ENABLED_CATEGORIES": "task,time_tracking,workspace"
861
+ ```
862
+
863
+ -or- **Hermes (YAML):**
864
+
865
+ ```yaml
866
+ mcp_servers:
867
+ clickup:
868
+ env:
869
+ ENABLED_TOOLS: "tool_1,tool_2,tool_3"
870
+ ENABLED_CATEGORIES: "task,time_tracking,workspace"
782
871
  ```
783
872
 
784
873
  -or- **Remote (Header):**
785
874
 
786
875
  ```json
787
- "X-Enabled-Tools": "tool_1,tool_2,tool_3"
876
+ "X-Enabled-Tools": "tool_1,tool_2,tool_3",
877
+ "X-Enabled-Categories": "task,time_tracking,workspace"
788
878
  ```
789
879
 
790
880
  ### Preset Configurations
@@ -897,10 +987,11 @@ Premium users get priority support. Please [open an issue](https://github.com/Ta
897
987
  ---
898
988
 
899
989
  ## <a name="disclaimer"></a>⚖️ Disclaimer
990
+ Originally developed as open source and refined during a consultancy with ClickUp, this project is now independently maintained.</sub>
900
991
 
901
- Originally developed as open source and refined during a consultancy with ClickUp, this project is now independently maintained.
992
+ This software makes use of third-party APIs and may reference trademarks or brands owned by third parties. The use of such APIs or references does not imply any affiliation with or endorsement by the respective companies. All trademarks and brand names are the property of their respective owners. This project is an independent work and is not officially associated with or sponsored by any third-party company mentioned.</sub>
902
993
 
903
- This software makes use of third-party APIs and may reference trademarks or brands owned by third parties. The use of such APIs or references does not imply any affiliation with or endorsement by the respective companies. All trademarks and brand names are the property of their respective owners. This project is an independent work and is not officially associated with or sponsored by any third-party company mentioned.
994
+ By using this software, you agree to our [Terms of Service](TERMS_OF_SERVICE.md) and acknowledge our [Privacy Policy](PRIVACY.md).
904
995
 
905
996
  <div align="center">
906
997
  <sub>Created by <a href="https://github.com/taazkareem">taazkareem</a></sub>
@@ -1 +1 @@
1
- const a0_0x48a16a=a0_0x392b;(function(_0x3a3237,_0x11c088){const _0x2cd8f0=a0_0x392b,_0x329869=_0x3a3237();while(!![]){try{const _0x14fdfa=-parseInt(_0x2cd8f0(0xea))/0x1*(parseInt(_0x2cd8f0(0xb6))/0x2)+parseInt(_0x2cd8f0(0x8f))/0x3+-parseInt(_0x2cd8f0(0x11a))/0x4*(-parseInt(_0x2cd8f0(0x146))/0x5)+-parseInt(_0x2cd8f0(0x106))/0x6+parseInt(_0x2cd8f0(0x150))/0x7*(-parseInt(_0x2cd8f0(0x155))/0x8)+parseInt(_0x2cd8f0(0xed))/0x9*(parseInt(_0x2cd8f0(0x123))/0xa)+-parseInt(_0x2cd8f0(0xce))/0xb*(-parseInt(_0x2cd8f0(0xdf))/0xc);if(_0x14fdfa===_0x11c088)break;else _0x329869['push'](_0x329869['shift']());}catch(_0x213b6d){_0x329869['push'](_0x329869['shift']());}}}(a0_0x27fa,0x99ea2));import a0_0x4ec147 from'express';function a0_0x27fa(){const _0x12d2ea=['zvDtq00','CIbdu1i','BsbdBgK','zYbYyxC','yxnLihq','DgvHBxm','sw52ywW','BwvZC2e','A2vUv2K','BwnWu2u','y29VA2K','BgLLBNq','z25Lzfa','BwLZC2K','zgLUzYa','tujPBxK','zgf0yq','CM92Awq','zxn0','CMvXDwu','CYbYzxe','sNPZuMm','ndKWotKXngnYDfDAtq','B3n0','D29YA3m','qxv0Agu','DcbszwC','yxrH','zMLRs0K','Evblq0u','x2f1DgG','zwn0x3u','AfbHCMe','AwrFy2W','zw50swq','suqGB3i','yw5jsu0','z2LZDhi','ueTdrsa','ywLUlG','q2XPzw4','y2TvCa','nda3odbKBNHNt1e','twLZC2K','D2L0Aca','wM5Rs3O','AM9PBG','DMvYAwy','CM94Eum','yxrLuhi','DhPqt0m','mJy1ndq2meXztwfRva','Dg9tDhi','tfPosxq','zguGB3i','v0jMCfu','igrLDgu','AwqGuhi','DxjUAw4','BgjHy2S','C2LNBMe','Aw50BYa','AwvUDf8','zwn0','C190B2S','BNqGsuq','uwjbs2C','x3n0yxq','BgvUz3q','AwnHDgK','BNrPywW','AwqGyxu','zwfTiha','DxbbCgK','y2XPzw4','ywXOB3m','yw50','zcb0BYa','Axn0CMe','CMv0','BKfuA28','C3vJy2u','C3rHDgu','A0XhwLa','Ac90B2S','ignHBgW','mJK1wLPQrNf4','CvnTuK4','uhjVEhK','yxbWzw4','Ec1MB3i','vNjRqK8','ienSAwu','z3vYyxq','Dgf0zq','CMvZCg8','n2rOvMXIqq','B2TPzq','CMvKAxi','ihrVA2u','ief1DgG','ntm5ndGWofDtD3fzAW','CxvLCNK','DgvK','Aw9Ux2m','ifrVA2u','CgfJzsa','EunSAwu','B24GzMe','CYbMB3i','ie9bDxq','zxn0icG','BMCGq2W','C2vUza','zvbYB3G','lcbYzxq','zwnVzgu','Bwv0ywq','ANnVBG','uM91Dgu','AwqGq2W','Ahr0Chm','z2v0','zgvJB2q','DxbdBgK','B3jPz2K','BwnWx2e','DgLVBIa','AgvHzgu','BNqGuMu','D2fYBG','igvTyMu','zw5Nzv8','z25Lzem','rIbKzxq','CMLZigK','ihn0yxq','DxbZDhi','Aw5MBW','v1z5u1K','u2vJCMu','Ac9JywW','AwnRvxa','B3jPEMe','mJC3otKZnxnPEvrqta','zxjYB3i','CMv0x3a','BMDLigy','ientuKy','Ahr0CdO','Evn0yxq','C3rHDhu','BNrPy2e','Ac9HDxq','ENL3wfu','lY9SB2m','AwvUDca','yxjHBwu','z2vUzxi','y3rPB24','DgHdBgK','C2vHCMm','D2fYzgu','AxnbCNi','zwn0zwq','Ag9YAxO','BMCGy28','Ac9YzwC','BIbfEgm','C21HDgm','yMfJAYa','zc1WCM8','B3H5iem','B2DLsuC','zMv0y2G','y2XPy2S','AwqGy2W','igLUihm','B3qGywW','ywnJzxm','t0f1DgG','t1L0svi','DgLVBG','nZeWswv4B1Hz','DKD4Ewi','yxrLiha','DwLYzwq','x19iB3m','y2PZuee','DMvK','oIbZDge','tunqiem','Aw5N','ihjLCxu','y29Kzq','AwrFz3i','l29HDxq','y3zYshK','DguGBwK','C2vSzwm','v1zZAfy','C3nPB24','yxrLu2K','q29Kzq','rMfPBgu','C2vJDxi','y2XLyxi','nZK1nJi2n3rHvLrvva','zdOGC2u','u2vYDMu','qwzvC1O','ueLqB2O','DxrOx3m','yM9KEq','y29Kzv8','Aw52ywW','CNzLCLu','zxHJAge','AwXLza','BNrjza','B3v0ig8','Cg9YDa','y3rFDxi','C3qGkfa','mtjqzuPwCvK','zsbMCM8','zxj2zxi','BwfW','Aufrsvm','DhvYzq','vxjS','B2TLBIa','vxbZDhi','B2rL','zMfPBgu','mtG1n0LxBhHfra','yxrL','Dg9Rzw4','mtHbyufJywW','BMDLvg8','ifjLzgK'];a0_0x27fa=function(){return _0x12d2ea;};return a0_0x27fa();}import a0_0x2c935f from'../config.js';import{Logger}from'../logger.js';import{OAuthService}from'../services/oauth.js';function a0_0x392b(_0x49f7ab,_0x1f82e9){_0x49f7ab=_0x49f7ab-0x6b;const _0x27faa7=a0_0x27fa();let _0x392bfc=_0x27faa7[_0x49f7ab];if(a0_0x392b['rvSyhw']===undefined){var _0x18eedb=function(_0x1d90a6){const _0x412329='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x549927='',_0x1a85e0='';for(let _0x37c690=0x0,_0x59eb70,_0x5a6e3a,_0x2e2413=0x0;_0x5a6e3a=_0x1d90a6['charAt'](_0x2e2413++);~_0x5a6e3a&&(_0x59eb70=_0x37c690%0x4?_0x59eb70*0x40+_0x5a6e3a:_0x5a6e3a,_0x37c690++%0x4)?_0x549927+=String['fromCharCode'](0xff&_0x59eb70>>(-0x2*_0x37c690&0x6)):0x0){_0x5a6e3a=_0x412329['indexOf'](_0x5a6e3a);}for(let _0x6a0461=0x0,_0x4f7666=_0x549927['length'];_0x6a0461<_0x4f7666;_0x6a0461++){_0x1a85e0+='%'+('00'+_0x549927['charCodeAt'](_0x6a0461)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1a85e0);};a0_0x392b['WFiemx']=_0x18eedb,a0_0x392b['gVQUVr']={},a0_0x392b['rvSyhw']=!![];}const _0x153fae=_0x27faa7[0x0],_0x13056f=_0x49f7ab+_0x153fae,_0x37f958=a0_0x392b['gVQUVr'][_0x13056f];return!_0x37f958?(_0x392bfc=a0_0x392b['WFiemx'](_0x392bfc),a0_0x392b['gVQUVr'][_0x13056f]=_0x392bfc):_0x392bfc=_0x37f958,_0x392bfc;}import{clearTokenCache}from'../middleware/auth.js';import a0_0x1593e5 from'axios';const router=a0_0x4ec147[a0_0x48a16a(0x76)+'r'](),logger=new Logger(a0_0x48a16a(0xb3)+a0_0x48a16a(0x76)+'s');import{createAuthRateLimitMiddleware}from'../middleware/security.js';const createAuthRateLimit=createAuthRateLimitMiddleware(),OAUTH_TOKEN_EXPIRY_HINT_SECONDS=0x1e*0x18*0x3c*0x3c,serverUrl=a0_0x2c935f[a0_0x48a16a(0xf9)+a0_0x48a16a(0xd7)+'rl']||a0_0x48a16a(0x94)+a0_0x48a16a(0x9a)+a0_0x48a16a(0x13b)+'t:'+(a0_0x2c935f[a0_0x48a16a(0xdc)]||0xc9f);router['post'](a0_0x48a16a(0xc3)+a0_0x48a16a(0xa6)+'ister',createAuthRateLimit,(_0x860eb,_0x233eb9)=>{const _0x2fb4ae=a0_0x48a16a,_0x3ae558={'WVySY':_0x2fb4ae(0x152)+_0x2fb4ae(0x10f)+_0x2fb4ae(0x86)+_0x2fb4ae(0x104)+_0x2fb4ae(0xb9),'cjsPA':_0x2fb4ae(0xbe)+_0x2fb4ae(0xfb),'QbAKg':'code','PIPoj':_0x2fb4ae(0x118)+_0x2fb4ae(0x10a)+_0x2fb4ae(0x13e)+_0x2fb4ae(0x7e)+'Rejec'+_0x2fb4ae(0x157)},{client_name:_0x4886e4,redirect_uris:_0x530515}=_0x860eb[_0x2fb4ae(0xd4)];logger[_0x2fb4ae(0x89)](_0x2fb4ae(0xb3)+_0x2fb4ae(0x14c)+_0x2fb4ae(0x80)+_0x2fb4ae(0x115)+'ation'+_0x2fb4ae(0xc0)+_0x2fb4ae(0x102),{'client_name':_0x4886e4,'redirect_uris':_0x530515});if(!_0x530515||!Array[_0x2fb4ae(0xa2)+'ay'](_0x530515)||_0x530515['lengt'+'h']===0x0){_0x233eb9[_0x2fb4ae(0x96)+'s'](0x190)[_0x2fb4ae(0x75)]({'error':_0x2fb4ae(0xd6)+_0x2fb4ae(0x111)+_0x2fb4ae(0x12e)+_0x2fb4ae(0x74)+'ata','error_description':_0x3ae558[_0x2fb4ae(0x8a)]});return;}try{const {clientId:_0x275bb1,clientSecret:_0x4871bd}=OAuthService[_0x2fb4ae(0x9d)+_0x2fb4ae(0xc9)+_0x2fb4ae(0x84)+_0x2fb4ae(0xfb)+'Id'](_0x530515);_0x233eb9[_0x2fb4ae(0x96)+'s'](0xc9)[_0x2fb4ae(0x75)]({'client_id':_0x275bb1,'client_secret':_0x4871bd,'client_name':_0x4886e4||_0x3ae558[_0x2fb4ae(0xbb)],'redirect_uris':_0x530515,'grant_types':['autho'+'rizat'+_0x2fb4ae(0x158)+_0x2fb4ae(0xe8)],'response_types':[_0x3ae558[_0x2fb4ae(0x132)]],'token_endpoint_auth_method':_0x2fb4ae(0x13a)+'t_sec'+_0x2fb4ae(0x91)+_0x2fb4ae(0x107)});}catch(_0x26781a){logger['warn'](_0x3ae558[_0x2fb4ae(0xd2)],{'error':_0x26781a['messa'+'ge'],'redirect_uris':_0x530515}),_0x233eb9[_0x2fb4ae(0x96)+'s'](0x190)[_0x2fb4ae(0x75)]({'error':_0x2fb4ae(0xd6)+_0x2fb4ae(0x111)+'ient_'+_0x2fb4ae(0x74)+_0x2fb4ae(0x10b),'error_description':_0x26781a[_0x2fb4ae(0xf7)+'ge']});}}),router[a0_0x48a16a(0x79)](a0_0x48a16a(0xc3)+a0_0x48a16a(0x98)+a0_0x48a16a(0xa4)+'e',createAuthRateLimit,(_0x407f14,_0x71a40b)=>{const _0x59366a=a0_0x48a16a,_0xd434ea={'zywXU':'Missi'+_0x59366a(0x6f)+_0x59366a(0x8d)+'\x20Clie'+_0x59366a(0x131)+_0x59366a(0xb0)+_0x59366a(0xe1)+'\x20conf'+'igura'+_0x59366a(0xb5),'iAQIS':_0x59366a(0xd0)+'r\x20Mis'+'confi'+_0x59366a(0x14d)+'ion:\x20'+_0x59366a(0x11b)+'ng\x20Cl'+_0x59366a(0x8d)+'\x20Clie'+_0x59366a(0x131),'nATko':_0x59366a(0x13a)+'t_id','fikKI':_0x59366a(0xc1),'tzPOC':_0x59366a(0x142),'MBimy':_0x59366a(0x14a)+_0x59366a(0xa1)+'d-pro'+'to','qSmRN':_0x59366a(0x7d)+_0x59366a(0xd3)+_0x59366a(0x14e),'cvrHy':function(_0x406d4d,_0x535970){return _0x406d4d*_0x535970;}},{response_type:_0x424abd,client_id:_0x141ac7,redirect_uri:_0x3a99ef,state:_0x1f380b,code_challenge:_0x3c35ba,code_challenge_method:_0x323557}=_0x407f14[_0x59366a(0x156)];logger['info'](_0x59366a(0xb3)+_0x59366a(0x154)+_0x59366a(0x8e)+_0x59366a(0x7e)+_0x59366a(0x103)+_0x59366a(0xde)+'roxy)',{'response_type':_0x424abd,'client_id':_0x141ac7,'redirect_uri':_0x3a99ef,'state':_0x1f380b});if(_0x141ac7&&!OAuthService[_0x59366a(0x11f)+_0x59366a(0x15b)+_0x59366a(0xda)](_0x141ac7,_0x3a99ef)){_0x71a40b[_0x59366a(0x96)+'s'](0x191)['send'](_0x59366a(0xf6)+_0x59366a(0x77)+_0x59366a(0x9b)+_0x59366a(0x113)+_0x59366a(0xef)+'rect\x20'+'URI\x20n'+_0x59366a(0xb1)+'lowed');return;}const _0x42f863=a0_0x2c935f['click'+_0x59366a(0x7b)+_0x59366a(0x112)];if(!_0x42f863){logger['error'](_0xd434ea[_0x59366a(0x99)]),_0x71a40b[_0x59366a(0x96)+'s'](0x1f4)[_0x59366a(0x70)](_0xd434ea[_0x59366a(0xe3)]);return;}const _0x4bb1c3=OAuthService[_0x59366a(0x9d)+_0x59366a(0x121)+'oxySt'+_0x59366a(0xeb)](_0x3a99ef,_0x1f380b,_0x3c35ba,_0x323557),_0x196630=new URL(a0_0x2c935f[_0x59366a(0xae)+'upApp'+_0x59366a(0xe5)]+'/api');_0x196630[_0x59366a(0xa0)+_0x59366a(0x110)+'ms'][_0x59366a(0x149)+'d'](_0xd434ea[_0x59366a(0x140)],_0x42f863),_0x196630['searc'+_0x59366a(0x110)+'ms'][_0x59366a(0x149)+'d'](_0x59366a(0x152)+_0x59366a(0x10f)+'ri',serverUrl+(_0x59366a(0xc3)+_0x59366a(0x8c)+_0x59366a(0x12b))),_0x196630[_0x59366a(0xa0)+_0x59366a(0x110)+'ms']['appen'+'d'](_0x59366a(0x14f)+'nse_t'+'ype',_0xd434ea[_0x59366a(0x10c)]),_0x196630[_0x59366a(0xa0)+_0x59366a(0x110)+'ms'][_0x59366a(0x149)+'d'](_0xd434ea[_0x59366a(0x122)],_0x4bb1c3);const _0xe009de=_0x407f14[_0x59366a(0xcc)+'e']||_0x407f14['heade'+'rs'][_0xd434ea[_0x59366a(0xff)]]===_0x59366a(0x78),_0x32a8f3=_0xe009de?'__Hos'+'t-mcp'+_0x59366a(0x10e)+_0x59366a(0x133)+'e':_0xd434ea[_0x59366a(0x147)];_0x71a40b[_0x59366a(0xfa)+'e'](_0x32a8f3,_0x4bb1c3,{'httpOnly':!![],'secure':_0xe009de,'sameSite':'lax','maxAge':_0xd434ea[_0x59366a(0xc4)](0xf,0x3c)*0x3e8,'path':'/'}),_0x71a40b[_0x59366a(0x152)+_0x59366a(0x12f)](_0x196630['toStr'+'ing']());}),router[a0_0x48a16a(0x79)](a0_0x48a16a(0xc3)+a0_0x48a16a(0x8c)+a0_0x48a16a(0x12b),createAuthRateLimit,(_0x3d2e73,_0x304c64)=>{const _0x1bbe5c=a0_0x48a16a,_0x274b93={'anIIM':function(_0x5b0e85,_0x5f532d){return _0x5b0e85||_0x5f532d;},'VrkBO':_0x1bbe5c(0xb3)+_0x1bbe5c(0x145)+_0x1bbe5c(0xa9)+'recei'+_0x1bbe5c(0xbc),'OYtIR':function(_0x237366,_0x113166){return _0x237366===_0x113166;},'kLGZP':'x-for'+_0x1bbe5c(0xa1)+_0x1bbe5c(0xaa)+'to','LZNIt':_0x1bbe5c(0xba)+'t-mcp'+'_auth'+_0x1bbe5c(0x133)+'e','gPsNd':function(_0x252f28,_0x4a3694){return _0x252f28!==_0x4a3694;},'KiGSq':'OAuth'+_0x1bbe5c(0x93)+_0x1bbe5c(0x128)+_0x1bbe5c(0x9e)+_0x1bbe5c(0xbd)+_0x1bbe5c(0xc5)+_0x1bbe5c(0xa8)+'h\x20or\x20'+_0x1bbe5c(0xfd)+_0x1bbe5c(0xa5)+_0x1bbe5c(0x151),'WVshV':function(_0x54969e,_0xd30403){return _0x54969e===_0xd30403;},'WBfpU':_0x1bbe5c(0x109)+_0x1bbe5c(0x97)+'tion\x20'+_0x1bbe5c(0xe9)+_0x1bbe5c(0xcf)+_0x1bbe5c(0xc8)+'\x20time'+_0x1bbe5c(0xdb)+_0x1bbe5c(0xf1)+_0x1bbe5c(0x85)+_0x1bbe5c(0xa3)+'.\x20Ple'+_0x1bbe5c(0xf4)+'ry\x20ag'+_0x1bbe5c(0x117),'PMQhG':'code','SVBSE':_0x1bbe5c(0x142),'JzsRc':'Faile'+_0x1bbe5c(0x13d)+'parse'+_0x1bbe5c(0x6d)+'h\x20sta'+'te','rYaxt':_0x1bbe5c(0xf6)+'id\x20st'+_0x1bbe5c(0xb8)+_0x1bbe5c(0x9c)+'ter'},{code:_0x1c4096,state:_0x4a1d55}=_0x3d2e73[_0x1bbe5c(0x156)];if(_0x274b93[_0x1bbe5c(0x114)](!_0x1c4096,!_0x4a1d55)){_0x304c64[_0x1bbe5c(0x96)+'s'](0x190)['send'](_0x1bbe5c(0x11b)+'ng\x20co'+_0x1bbe5c(0x126)+_0x1bbe5c(0x87)+_0x1bbe5c(0xe0)+_0x1bbe5c(0xf2)+_0x1bbe5c(0x119));return;}logger[_0x1bbe5c(0x89)](_0x274b93[_0x1bbe5c(0x14b)],{'query':_0x3d2e73[_0x1bbe5c(0x156)]});const _0x108632=_0x3d2e73[_0x1bbe5c(0xcc)+'e']||_0x274b93[_0x1bbe5c(0xb4)](_0x3d2e73[_0x1bbe5c(0x7f)+'rs'][_0x274b93[_0x1bbe5c(0x143)]],_0x1bbe5c(0x78)),_0xa4a1ec=_0x108632?_0x274b93[_0x1bbe5c(0x125)]:_0x1bbe5c(0x7d)+_0x1bbe5c(0xd3)+_0x1bbe5c(0x14e),_0xf43133=_0x3d2e73[_0x1bbe5c(0xfa)+'es']?.[_0xa4a1ec];if(!_0xf43133||_0x274b93['gPsNd'](_0xf43133,_0x4a1d55)){logger[_0x1bbe5c(0x81)](_0x274b93['KiGSq'],{'hasCookie':!!_0xf43133,'cookieName':_0xa4a1ec,'stateMatch':_0x274b93[_0x1bbe5c(0xc7)](_0xf43133,_0x4a1d55)}),_0x304c64[_0x1bbe5c(0x96)+'s'](0x193)[_0x1bbe5c(0x70)](_0x274b93[_0x1bbe5c(0x127)]);return;}_0x304c64[_0x1bbe5c(0xcd)+'Cooki'+'e'](_0xa4a1ec,{'path':'/'});try{const _0x4e8c42=OAuthService[_0x1bbe5c(0x7a)+_0x1bbe5c(0x71)+_0x1bbe5c(0x95)+'e'](_0x4a1d55),_0x1272c7=new URL(_0x4e8c42[_0x1bbe5c(0x7c)+'nal_r'+'edire'+_0x1bbe5c(0xdd)+'i']),_0x1333c3=OAuthService['gener'+_0x1bbe5c(0xc9)+_0x1bbe5c(0xfc)+_0x1bbe5c(0x120)+_0x1bbe5c(0xe8)](_0x1c4096,_0x4e8c42[_0x1bbe5c(0xd5)+'chall'+'enge'],_0x4e8c42[_0x1bbe5c(0xd5)+'chall'+_0x1bbe5c(0x83)+'metho'+'d']);_0x1272c7[_0x1bbe5c(0xa0)+_0x1bbe5c(0x110)+'ms'][_0x1bbe5c(0x149)+'d'](_0x274b93['PMQhG'],_0x1333c3),_0x1272c7[_0x1bbe5c(0xa0)+_0x1bbe5c(0x110)+'ms'][_0x1bbe5c(0x149)+'d'](_0x274b93['SVBSE'],_0x4e8c42['origi'+'nal_s'+_0x1bbe5c(0x14e)]),_0x304c64[_0x1bbe5c(0x152)+'ect'](_0x1272c7[_0x1bbe5c(0x124)+_0x1bbe5c(0xbf)]());}catch(_0x4be229){logger['error'](_0x274b93[_0x1bbe5c(0x105)],_0x4be229),_0x304c64[_0x1bbe5c(0x96)+'s'](0x190)['send'](_0x274b93['rYaxt']);}}),router['post'](a0_0x48a16a(0xc3)+a0_0x48a16a(0x144)+'en',createAuthRateLimit,async(_0x329cc3,_0x218a1e)=>{const _0x179587=a0_0x48a16a,_0x2de279={'eWSCM':'OAuth'+_0x179587(0x159)+_0x179587(0xa7)+'hange'+'\x20requ'+_0x179587(0x6e)+_0x179587(0x148)+')','ogeIG':_0x179587(0xd6)+_0x179587(0x111)+'ient','fyPye':'Inval'+_0x179587(0xaf)+_0x179587(0x9b)+'crede'+_0x179587(0x136)+'s','vGxyb':_0x179587(0x116)+_0x179587(0x11f)+_0x179587(0x135)+_0x179587(0x6b)+_0x179587(0xd9),'ZnkKz':_0x179587(0xd6)+'id_gr'+_0x179587(0x13c),'AfUsZ':_0x179587(0xe7)+'eam\x20t'+_0x179587(0xe6)+_0x179587(0xd8)+_0x179587(0x92)+'ailur'+'e','LJVBo':_0x179587(0xcb)+'d\x20to\x20'+_0x179587(0xd8)+'nge\x20t'+_0x179587(0xe6)+_0x179587(0x11c)+_0x179587(0x88)+_0x179587(0x138)+_0x179587(0x101)+'er'},{grant_type:_0x5b3a49,code:_0x3876e1,redirect_uri:_0x3b366b,client_id:_0x272b97,client_secret:_0x56a7a2,code_verifier:_0x19c567}=_0x329cc3['body'];logger[_0x179587(0x89)](_0x2de279[_0x179587(0xf0)],{'grant_type':_0x5b3a49,'client_id':_0x272b97});if(_0x272b97&&_0x56a7a2){if(!OAuthService[_0x179587(0x11f)+_0x179587(0x15b)+'ntSec'+_0x179587(0x13f)](_0x272b97,_0x56a7a2)){logger[_0x179587(0x81)]('Inval'+_0x179587(0x77)+_0x179587(0x9b)+_0x179587(0x8b)+'t',{'client_id':_0x272b97}),_0x218a1e[_0x179587(0x96)+'s'](0x191)[_0x179587(0x75)]({'error':_0x2de279[_0x179587(0xac)],'error_description':_0x2de279['fyPye']});return;}}const _0x18595c=OAuthService[_0x179587(0x11f)+'yAndD'+_0x179587(0x73)+'Proxy'+_0x179587(0xca)](_0x3876e1);if(!_0x18595c){logger[_0x179587(0x81)]('Inval'+_0x179587(0x129)+_0x179587(0xab)+'ode',{'code':_0x3876e1}),_0x218a1e[_0x179587(0x96)+'s'](0x190)[_0x179587(0x75)]({'error':_0x179587(0xd6)+_0x179587(0xc2)+_0x179587(0x13c),'error_description':_0x179587(0xf6)+_0x179587(0x137)+'thori'+'zatio'+'n\x20cod'+'e\x20or\x20'+_0x179587(0x12c)+_0x179587(0xe4)});return;}if(!_0x19c567){_0x218a1e[_0x179587(0x96)+'s'](0x190)[_0x179587(0x75)]({'error':_0x179587(0xd6)+_0x179587(0xc2)+_0x179587(0x13c),'error_description':_0x179587(0xd5)+_0x179587(0x11f)+'ier\x20i'+_0x179587(0x104)+_0x179587(0xb9)+'\x20for\x20'+'PKCE'});return;}if(!OAuthService[_0x179587(0x11f)+_0x179587(0x10d)](_0x19c567,_0x18595c['hc'],_0x18595c['hm'])){logger[_0x179587(0x81)](_0x2de279[_0x179587(0xb7)],{'clickUpCode':_0x18595c['c'],'verifier':_0x19c567}),_0x218a1e['statu'+'s'](0x190)[_0x179587(0x75)]({'error':_0x2de279[_0x179587(0x11d)],'error_description':_0x179587(0x116)+_0x179587(0x11f)+_0x179587(0x135)+_0x179587(0x6b)+_0x179587(0xd9)});return;}const _0x11fb0e=await OAuthService['excha'+_0x179587(0xee)+_0x179587(0xf8)+_0x179587(0x9f)+'ckUp'](_0x18595c['c']);if(_0x11fb0e[_0x179587(0x141)+'ss']){const _0x4589ea=_0x11fb0e[_0x179587(0x100)][_0x179587(0xb2)+_0x179587(0x130)+'en'];clearTokenCache(_0x4589ea);try{const _0x2a5eb4=await a0_0x1593e5['get'](a0_0x2c935f[_0x179587(0xae)+_0x179587(0x139)+_0x179587(0xe5)]+'/team',{'headers':{'Authorization':_0x4589ea},'timeout':0x2710}),_0x366e38=_0x2a5eb4[_0x179587(0x100)]?.[_0x179587(0xf5)]||[];if(_0x366e38[_0x179587(0x134)+'h']>0x0){const _0x2c9326=_0x366e38[_0x179587(0xe2)](_0xa47242=>String(_0xa47242['id'])),_0x1fee1c=_0x2c9326[_0x179587(0x11e)](','),_0x5d28e6=_0x1fee1c+':'+_0x4589ea;logger[_0x179587(0x89)]('Embed'+_0x179587(0xfe)+_0x179587(0x108)+_0x179587(0x15a)+_0x179587(0xc6)+'tion\x20'+_0x179587(0x12d)+_0x179587(0xec),{'count':_0x2c9326[_0x179587(0x134)+'h'],'confirmedIds':_0x1fee1c}),_0x218a1e[_0x179587(0x75)]({..._0x11fb0e[_0x179587(0x100)],'access_token':_0x5d28e6,'expires_in':OAUTH_TOKEN_EXPIRY_HINT_SECONDS,'first_team_id':_0x2c9326[0x0],'all_team_ids':_0x2c9326});return;}}catch(_0x20e3a2){logger['warn'](_0x179587(0xcb)+_0x179587(0x13d)+_0x179587(0xad)+'\x20team'+_0x179587(0x6c)+_0x179587(0x82)+'dding'+_0x179587(0x72)+_0x179587(0x12a)+_0x179587(0xf3)+_0x179587(0x153)+'n',{'error':_0x20e3a2[_0x179587(0xf7)+'ge']});}_0x218a1e['json'](_0x11fb0e[_0x179587(0x100)]);}else logger['error'](_0x2de279[_0x179587(0xd1)],{'error':_0x11fb0e[_0x179587(0x90)]}),_0x218a1e['statu'+'s'](0x1f4)[_0x179587(0x75)]({'error':_0x2de279['LJVBo'],'details':_0x11fb0e[_0x179587(0x90)]});});export default router;
1
+ const a0_0x2a09ff=a0_0x18eb;function a0_0x1a71(){const _0x519320=['odDUtePkuNi','yxjHBwu','BNnLx3q','CMvKAxi','y29Kzq','yMfJAYa','DgvY','rIbKzxq','Aw9Ux2m','Aw5MBW','zxHJAge','CxvLCNK','CMvJzwK','lcbYzxq','yxrL','igzVCIa','v2HPBeG','mJKYntiWzuTvuevk','BsbdBgK','zcb0BYa','mtiXndrOCMXwAeq','zw50swq','ywnJzxm','AwrFz3i','CYbMB3i','C2LNBMe','Dg9tDhi','otC2oejuEwLvzG','AwD1CMe','Evblq0u','t0f1DgG','y3rFDxi','C3qGkfa','zxjYB3i','ueTdrq','DxbdBgK','BMDLigy','DgHVCMK','CM94Eum','Ahr0Chm','ifrVA2u','yxv0Ag8','Ac9YzwC','x3n0yxq','C190B2S','yxrLiha','BMDLihq','twLZC2K','DxrOx3m','zwn0x3u','DxbbCha','BNqGsuq','BvHJwKu','z2v0','qK1sr1a','l2fWAq','nZe2oda5mhbTqKriwG','mtrmue1Muha','BMfSx3m','vxjS','DgLVBG','l29HDxq','y2XPzw4','ihrLyw0','yxrPB24','z1DXue4','BNrPywW','CML6yxq','DguGBwK','yxnLihq','AwvUDca','C3bvBee','B3qGywW','B3n0','zw5Nzq','q29VA2K','sw52ywW','y2XPy2S','mZvOBwjOufa','C3rHDgu','CMv0','CMLZigK','Dc1Ty3a','AwnHDgK','Bwv0Ag8','z2vUzxi','DMvK','y29UzMK','zxn0icG','BgvUz3q','CMvJDca','y29Kzv8','Ec1MB3i','zsbVCIa','AwqGy2W','AcbZDge','odC1mZCWrvDXtLLe','AwqGq2W','AwXLza','mZi2mZjXz0rHB0K','BMzIt3y','zc1WCM8','AwvUDf8','AgvHzgu','EMf0Aw8','zwnVzgu','wfvLCKG','Axn0CMe','Df9Pza','Aw5N','ignHBgW','ANnVBG','vxbZDhi','tunqiem','rMfPBgu','CMvXDwu','B2TPzq','C2vHCMm','ientuKy','B3H5iem','D2fYBG','Ag9YAxO','B3jPz2K','CYbYzxe','CMv0x3a','ywLSDxi','uMvQzwm','CM94EsK','D2fYzgu','BgjHy2S','B3v0ig8','yxbWzw4','s3bysfG','zgrPBMC','C21HDgm','DxbbCgK','AMrmtvG','BwnWu2u','Dg9Rzw4','C3vJy2u','zMfPBgu','C3rHDhu','B24GzMe','zwfTihq','ie9bDxq','C3nPB24','Ce9Zvxq','Bg93zwq','ExbL','BwnWx2e','AcbVCIa','BMfSx3i','DgvHBxm','ywLUlG','DxjUAw4','zgf0yq','BwrHD2i','ywXOB3m','BMDLvg8','Dhzfq3a','zwn0zwq','zYbYyxC','BwvZC2e','zdOGC2u','ihrVA2u','DwLYzwq','Dgf0zq','AfbHCMe','Aw52ywW','zxn0','yxrLuhi','zwn0','yw50','C2vUza','ienSAwu','C2vSzwm','EunSAwu','zw5Nzv8','AgfUz2u','mtbOu2rIvwG','AwrFy2W','igvTyMu','Dg5fuvO','CMvZCg8','yxrH','ifjLzgK','yxrLu2K','y2TvCa','AwqGC3q','B2rL','zMv0y2G','rw1Izwq','ounKvxjTBW','ignVBMy','oIbZDge','mty0nda0ntb3CfbKy3e','DgLVBIa','ihn0yxq','Bwv0ywq','Axn0zxi','ueTdrsa','AwnRvxa','sLPoBMq','BwLZC2K','Aw9UoIa','A2vUv2K','D2L0Aca','BIbJB2q','y3jLzgu','EgLPzui','yM9KEq','y29VA2K','Ac9JywW','CIbdu1i','CNKGywC','D29YA3m','x2f1DgG','BNrjza','lY9SB2m','y2XLyxi','DgvK','suqGB3i','B3jPEMe','DgHdBgK','BMCGy28','q29Kzq','ihjLCxu','Cg9ZDa','u2vJCMu','mtiWnJrLwxf2AMi','DKPZB2i','AwvUDa','uhjVEhK','Ew1OvLa','BgLLBNq','zwX0wMO','DxbZDhi','DMvYAwy','x19iB3m','BNrtzwm','BfL0seK','yLPLy1e','uM91Dgu','zwfTiha','AwvYigK','C2vJDxi','u2vYDMu'];a0_0x1a71=function(){return _0x519320;};return a0_0x1a71();}(function(_0x4a258a,_0x27855e){const _0x5dc3c5=a0_0x18eb,_0x52b3a5=_0x4a258a();while(!![]){try{const _0x2a3d07=parseInt(_0x5dc3c5(0x1b5))/0x1*(-parseInt(_0x5dc3c5(0x200))/0x2)+parseInt(_0x5dc3c5(0x1c7))/0x3*(parseInt(_0x5dc3c5(0x22a))/0x4)+parseInt(_0x5dc3c5(0x27a))/0x5*(parseInt(_0x5dc3c5(0x227))/0x6)+parseInt(_0x5dc3c5(0x215))/0x7*(-parseInt(_0x5dc3c5(0x1d8))/0x8)+-parseInt(_0x5dc3c5(0x287))/0x9*(-parseInt(_0x5dc3c5(0x1ff))/0xa)+-parseInt(_0x5dc3c5(0x1db))/0xb*(-parseInt(_0x5dc3c5(0x1e2))/0xc)+-parseInt(_0x5dc3c5(0x28a))/0xd;if(_0x2a3d07===_0x27855e)break;else _0x52b3a5['push'](_0x52b3a5['shift']());}catch(_0x30ddb9){_0x52b3a5['push'](_0x52b3a5['shift']());}}}(a0_0x1a71,0x9564a));import a0_0x22db5b from'express';import a0_0x24001f from'../config.js';import{Logger}from'../logger.js';import{OAuthService}from'../services/oauth.js';import{clearTokenCache}from'../middleware/auth.js';import a0_0x49f869 from'axios';const router=a0_0x22db5b['Route'+'r'](),logger=new Logger(a0_0x2a09ff(0x1e5)+a0_0x2a09ff(0x1c2)+'s');import{createAuthRateLimitMiddleware}from'../middleware/security.js';const createAuthRateLimit=createAuthRateLimitMiddleware(),OAUTH_TOKEN_EXPIRY_HINT_SECONDS=0x1e*0x18*0x3c*0x3c,serverUrl=a0_0x24001f[a0_0x2a09ff(0x250)+'rverU'+'rl']||'http:'+a0_0x2a09ff(0x2a1)+a0_0x2a09ff(0x264)+'t:'+(a0_0x24001f['port']||0xc9f);function a0_0x18eb(_0x1fabce,_0x694897){_0x1fabce=_0x1fabce-0x1b0;const _0x1a711a=a0_0x1a71();let _0x18ebb4=_0x1a711a[_0x1fabce];if(a0_0x18eb['EuQwKc']===undefined){var _0x3d5a86=function(_0x14cd71){const _0x5aac78='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xe3a66e='',_0x2c1dd3='';for(let _0x49cbaa=0x0,_0x18233a,_0x1b447e,_0x4fb0d7=0x0;_0x1b447e=_0x14cd71['charAt'](_0x4fb0d7++);~_0x1b447e&&(_0x18233a=_0x49cbaa%0x4?_0x18233a*0x40+_0x1b447e:_0x1b447e,_0x49cbaa++%0x4)?_0xe3a66e+=String['fromCharCode'](0xff&_0x18233a>>(-0x2*_0x49cbaa&0x6)):0x0){_0x1b447e=_0x5aac78['indexOf'](_0x1b447e);}for(let _0x3bf304=0x0,_0xe01421=_0xe3a66e['length'];_0x3bf304<_0xe01421;_0x3bf304++){_0x2c1dd3+='%'+('00'+_0xe3a66e['charCodeAt'](_0x3bf304)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2c1dd3);};a0_0x18eb['otEQVc']=_0x3d5a86,a0_0x18eb['TvnLvu']={},a0_0x18eb['EuQwKc']=!![];}const _0x17c6e6=_0x1a711a[0x0],_0x54b216=_0x1fabce+_0x17c6e6,_0x117586=a0_0x18eb['TvnLvu'][_0x54b216];return!_0x117586?(_0x18ebb4=a0_0x18eb['otEQVc'](_0x18ebb4),a0_0x18eb['TvnLvu'][_0x54b216]=_0x18ebb4):_0x18ebb4=_0x117586,_0x18ebb4;}router['post'](a0_0x2a09ff(0x204)+a0_0x2a09ff(0x1f1)+a0_0x2a09ff(0x28e),createAuthRateLimit,(_0xfa0782,_0x8ceda6)=>{const _0x407df4=a0_0x2a09ff,_0xd80104={'EQMGC':'OAuth'+_0x407df4(0x275)+'nt\x20Re'+'gistr'+_0x407df4(0x207)+'\x20requ'+_0x407df4(0x270),'QukmL':_0x407df4(0x26f)+'id_cl'+_0x407df4(0x22d)+_0x407df4(0x28d)+'ata','bZecQ':'redir'+_0x407df4(0x1f8)+_0x407df4(0x218)+_0x407df4(0x242)+_0x407df4(0x26c),'mdawb':_0x407df4(0x1cb)},{client_name:_0x4c2cb6,redirect_uris:_0x1708aa}=_0xfa0782[_0x407df4(0x299)];logger[_0x407df4(0x1d0)](_0xd80104['EQMGC'],{'client_name':_0x4c2cb6,'redirect_uris':_0x1708aa});if(!_0x1708aa||!Array['isArr'+'ay'](_0x1708aa)||_0x1708aa[_0x407df4(0x220)+'h']===0x0){_0x8ceda6[_0x407df4(0x254)+'s'](0x190)['json']({'error':_0xd80104['QukmL'],'error_description':_0xd80104[_0x407df4(0x1c1)]});return;}try{const {clientId:_0x5bac4a,clientSecret:_0x4ab46f}=OAuthService[_0x407df4(0x21c)+_0x407df4(0x281)+'gnedC'+_0x407df4(0x1ba)+'Id'](_0x1708aa);_0x8ceda6[_0x407df4(0x254)+'s'](0xc9)['json']({'client_id':_0x5bac4a,'client_secret':_0x4ab46f,'client_name':_0x4c2cb6||_0x407df4(0x238)+'lient','redirect_uris':_0x1708aa,'grant_types':[_0x407df4(0x1f0)+_0x407df4(0x20a)+_0x407df4(0x1cf)+'ode'],'response_types':[_0xd80104[_0x407df4(0x263)]],'token_endpoint_auth_method':_0x407df4(0x205)+'t_sec'+_0x407df4(0x243)+_0x407df4(0x210)});}catch(_0x40f88f){logger[_0x407df4(0x23f)]('Clien'+'t\x20Reg'+_0x407df4(0x232)+_0x407df4(0x28b)+_0x407df4(0x245)+_0x407df4(0x2a3),{'error':_0x40f88f[_0x407df4(0x269)+'ge'],'redirect_uris':_0x1708aa}),_0x8ceda6['statu'+'s'](0x190)[_0x407df4(0x236)]({'error':'inval'+'id_cl'+_0x407df4(0x22d)+_0x407df4(0x28d)+_0x407df4(0x27f),'error_description':_0x40f88f[_0x407df4(0x269)+'ge']});}}),router[a0_0x2a09ff(0x1fc)](a0_0x2a09ff(0x204)+'h/aut'+a0_0x2a09ff(0x240)+'e',createAuthRateLimit,(_0x1bba3e,_0x188eb5)=>{const _0x2fc032=a0_0x2a09ff,_0x2e2096={'lYtHI':'OAuth'+'\x20Auth'+_0x2fc032(0x2a5)+_0x2fc032(0x28b)+_0x2fc032(0x23a)+_0x2fc032(0x1e7)+_0x2fc032(0x246),'nfbOv':'Inval'+_0x2fc032(0x228)+_0x2fc032(0x20d)+_0x2fc032(0x2a4)+_0x2fc032(0x280)+_0x2fc032(0x221)+'URI\x20n'+_0x2fc032(0x20f)+_0x2fc032(0x25a),'tvECp':_0x2fc032(0x1c6)+'r\x20Mis'+_0x2fc032(0x21e)+'gurat'+_0x2fc032(0x293)+'Missi'+'ng\x20Cl'+_0x2fc032(0x290)+_0x2fc032(0x275)+'nt\x20ID','XUerH':_0x2fc032(0x1ca)+_0x2fc032(0x1f8)+'ri','xmqCI':_0x2fc032(0x27e)+_0x2fc032(0x1c9)+_0x2fc032(0x25b),'KpXHX':function(_0x33de4a,_0x2db0e9){return _0x33de4a===_0x2db0e9;},'nAQzX':_0x2fc032(0x223)+_0x2fc032(0x247)+_0x2fc032(0x22c)+'to','WhilH':'lax','BMRGP':function(_0x4cc9be,_0x556f98){return _0x4cc9be*_0x556f98;}},{response_type:_0x2b5fa7,client_id:_0x13893c,redirect_uri:_0x28bb76,state:_0xa9f4f6,code_challenge:_0x1c5cc6,code_challenge_method:_0x248a32}=_0x1bba3e['query'];logger[_0x2fc032(0x1d0)](_0x2e2096[_0x2fc032(0x1c0)],{'response_type':_0x2b5fa7,'client_id':_0x13893c,'redirect_uri':_0x28bb76,'state':_0xa9f4f6});if(_0x13893c&&!OAuthService[_0x2fc032(0x1bd)+_0x2fc032(0x277)+_0x2fc032(0x2a0)](_0x13893c,_0x28bb76)){_0x188eb5[_0x2fc032(0x254)+'s'](0x191)['send'](_0x2e2096[_0x2fc032(0x22b)]);return;}const _0x2ea3a5=a0_0x24001f[_0x2fc032(0x214)+_0x2fc032(0x1ea)+_0x2fc032(0x1dc)];if(!_0x2ea3a5){logger[_0x2fc032(0x1e8)]('Missi'+'ng\x20Cl'+_0x2fc032(0x290)+_0x2fc032(0x275)+_0x2fc032(0x1fa)+'\x20in\x20s'+'erver'+_0x2fc032(0x288)+_0x2fc032(0x1e3)+_0x2fc032(0x203)),_0x188eb5[_0x2fc032(0x254)+'s'](0x1f4)[_0x2fc032(0x274)](_0x2e2096[_0x2fc032(0x266)]);return;}const _0x4e3e2c=OAuthService[_0x2fc032(0x21c)+_0x2fc032(0x271)+'oxySt'+_0x2fc032(0x1d5)](_0x28bb76,_0xa9f4f6,_0x1c5cc6,_0x248a32),_0xd76b6e=new URL(a0_0x24001f[_0x2fc032(0x214)+_0x2fc032(0x1f9)+_0x2fc032(0x202)]+_0x2fc032(0x1fe));_0xd76b6e['searc'+_0x2fc032(0x26e)+'ms'][_0x2fc032(0x24a)+'d']('clien'+_0x2fc032(0x233),_0x2ea3a5),_0xd76b6e['searc'+_0x2fc032(0x26e)+'ms'][_0x2fc032(0x24a)+'d'](_0x2e2096[_0x2fc032(0x231)],serverUrl+(_0x2fc032(0x204)+_0x2fc032(0x29b)+_0x2fc032(0x248))),_0xd76b6e[_0x2fc032(0x23c)+_0x2fc032(0x26e)+'ms'][_0x2fc032(0x24a)+'d'](_0x2e2096['xmqCI'],'code'),_0xd76b6e[_0x2fc032(0x23c)+_0x2fc032(0x26e)+'ms'][_0x2fc032(0x24a)+'d'](_0x2fc032(0x216),_0x4e3e2c);const _0x458b80=_0x1bba3e[_0x2fc032(0x1c5)+'e']||_0x2e2096[_0x2fc032(0x24b)](_0x1bba3e[_0x2fc032(0x22e)+'rs'][_0x2e2096['nAQzX']],_0x2fc032(0x1ee)),_0x4c9e01=_0x458b80?_0x2fc032(0x1be)+_0x2fc032(0x219)+_0x2fc032(0x29f)+_0x2fc032(0x1f2)+'e':_0x2fc032(0x25c)+_0x2fc032(0x1f7)+_0x2fc032(0x26d);_0x188eb5[_0x2fc032(0x29a)+'e'](_0x4c9e01,_0x4e3e2c,{'httpOnly':!![],'secure':_0x458b80,'sameSite':_0x2e2096[_0x2fc032(0x1d7)],'maxAge':_0x2e2096[_0x2fc032(0x1fd)](0xf,0x3c)*0x3e8,'path':'/'}),_0x188eb5[_0x2fc032(0x1ca)+'ect'](_0xd76b6e['toStr'+_0x2fc032(0x234)]());}),router[a0_0x2a09ff(0x1fc)](a0_0x2a09ff(0x204)+a0_0x2a09ff(0x29b)+a0_0x2a09ff(0x248),createAuthRateLimit,(_0x221172,_0x2b007d)=>{const _0x901cb3=a0_0x2a09ff,_0x3cad3e={'vJsob':_0x901cb3(0x223)+_0x901cb3(0x247)+_0x901cb3(0x22c)+'to','gWqPN':_0x901cb3(0x25c)+_0x901cb3(0x1f7)+_0x901cb3(0x26d),'jdLMX':function(_0xef0179,_0x30b5da){return _0xef0179!==_0x30b5da;},'ymhVP':function(_0x450b60,_0x5acde7){return _0x450b60===_0x5acde7;},'bYReQ':'Authe'+'ntica'+'tion\x20'+_0x901cb3(0x253)+_0x901cb3(0x26a)+_0x901cb3(0x258)+'\x20time'+_0x901cb3(0x249)+_0x901cb3(0x29c)+_0x901cb3(0x1ce)+_0x901cb3(0x267)+'.\x20Ple'+_0x901cb3(0x20c)+_0x901cb3(0x29d)+_0x901cb3(0x260),'tnEQZ':_0x901cb3(0x1cb),'eltZj':_0x901cb3(0x216),'pOsUt':'Faile'+_0x901cb3(0x1da)+'parse'+_0x901cb3(0x257)+_0x901cb3(0x226)+'te'},{code:_0x3054e9,state:_0x26e0e1}=_0x221172[_0x901cb3(0x1d2)];if(!_0x3054e9||!_0x26e0e1){_0x2b007d[_0x901cb3(0x254)+'s'](0x190)[_0x901cb3(0x274)](_0x901cb3(0x1f6)+_0x901cb3(0x1b0)+'de\x20or'+_0x901cb3(0x28c)+'e\x20fro'+_0x901cb3(0x1d9)+_0x901cb3(0x282));return;}logger[_0x901cb3(0x1d0)](_0x901cb3(0x1e5)+_0x901cb3(0x235)+_0x901cb3(0x1cc)+_0x901cb3(0x1d3)+_0x901cb3(0x21d),{'query':_0x221172[_0x901cb3(0x1d2)]});const _0x5b4fb3=_0x221172[_0x901cb3(0x1c5)+'e']||_0x221172[_0x901cb3(0x22e)+'rs'][_0x3cad3e[_0x901cb3(0x1b6)]]==='https',_0x2d3a02=_0x5b4fb3?_0x901cb3(0x1be)+_0x901cb3(0x219)+'_auth'+_0x901cb3(0x1f2)+'e':_0x3cad3e[_0x901cb3(0x208)],_0x3578d6=_0x221172[_0x901cb3(0x29a)+'es']?.[_0x2d3a02];if(!_0x3578d6||_0x3cad3e[_0x901cb3(0x24f)](_0x3578d6,_0x26e0e1)){logger['warn'](_0x901cb3(0x1e5)+_0x901cb3(0x23d)+'\x20dete'+'ction'+_0x901cb3(0x289)+_0x901cb3(0x20b)+_0x901cb3(0x24d)+_0x901cb3(0x25d)+_0x901cb3(0x292)+_0x901cb3(0x1b0)+_0x901cb3(0x23b),{'hasCookie':!!_0x3578d6,'cookieName':_0x2d3a02,'stateMatch':_0x3cad3e[_0x901cb3(0x1b9)](_0x3578d6,_0x26e0e1)}),_0x2b007d['statu'+'s'](0x193)[_0x901cb3(0x274)](_0x3cad3e['bYReQ']);return;}_0x2b007d[_0x901cb3(0x2a2)+_0x901cb3(0x212)+'e'](_0x2d3a02,{'path':'/'});try{const _0x471ec3=OAuthService['decod'+'eProx'+'yStat'+'e'](_0x26e0e1),_0x245177=new URL(_0x471ec3[_0x901cb3(0x241)+_0x901cb3(0x25e)+'edire'+_0x901cb3(0x1e6)+'i']),_0x4a5656=OAuthService[_0x901cb3(0x21c)+_0x901cb3(0x281)+'gnedP'+_0x901cb3(0x1ed)+_0x901cb3(0x284)](_0x3054e9,_0x471ec3[_0x901cb3(0x222)+'chall'+_0x901cb3(0x211)],_0x471ec3[_0x901cb3(0x222)+'chall'+_0x901cb3(0x278)+_0x901cb3(0x21b)+'d']);_0x245177['searc'+_0x901cb3(0x26e)+'ms'][_0x901cb3(0x24a)+'d'](_0x3cad3e[_0x901cb3(0x27d)],_0x4a5656),_0x245177['searc'+'hPara'+'ms'][_0x901cb3(0x24a)+'d'](_0x3cad3e[_0x901cb3(0x1bb)],_0x471ec3[_0x901cb3(0x241)+_0x901cb3(0x201)+_0x901cb3(0x26d)]),_0x2b007d[_0x901cb3(0x1ca)+_0x901cb3(0x272)](_0x245177[_0x901cb3(0x1e1)+_0x901cb3(0x234)]());}catch(_0x5a9100){logger[_0x901cb3(0x1e8)](_0x3cad3e[_0x901cb3(0x259)],_0x5a9100),_0x2b007d[_0x901cb3(0x254)+'s'](0x190)[_0x901cb3(0x274)](_0x901cb3(0x213)+_0x901cb3(0x283)+_0x901cb3(0x1f4)+_0x901cb3(0x1c8)+_0x901cb3(0x1cd));}}),router[a0_0x2a09ff(0x1b3)](a0_0x2a09ff(0x204)+'h/tok'+'en',createAuthRateLimit,async(_0x5e8493,_0x1c3890)=>{const _0x2e652e=a0_0x2a09ff,_0x377c9f={'spUlA':_0x2e652e(0x1e5)+_0x2e652e(0x1ef)+'n\x20Exc'+_0x2e652e(0x279)+_0x2e652e(0x1b2)+_0x2e652e(0x21f)+'Proxy'+')','mXcZE':_0x2e652e(0x213)+_0x2e652e(0x228)+_0x2e652e(0x20d)+_0x2e652e(0x1b4)+'t','pEoyF':_0x2e652e(0x213)+'id\x20Pr'+_0x2e652e(0x23e)+_0x2e652e(0x284),'JZNnd':'inval'+'id_gr'+_0x2e652e(0x273),'xiieB':'PKCE\x20'+'verif'+'icati'+_0x2e652e(0x255)+_0x2e652e(0x229),'xUlHl':function(_0x224b2e,_0x4ec2de){return _0x224b2e(_0x4ec2de);},'vEFiP':_0x2e652e(0x239)+'d\x20to\x20'+_0x2e652e(0x1d1)+_0x2e652e(0x1f5)+'oken\x20'+_0x2e652e(0x295)+_0x2e652e(0x1bc)+_0x2e652e(0x1c3)+'rovid'+'er'},{grant_type:_0x18435c,code:_0x2836fa,redirect_uri:_0xbde145,client_id:_0x16e3b0,client_secret:_0x3c37c1,code_verifier:_0x518ad4}=_0x5e8493[_0x2e652e(0x299)];logger[_0x2e652e(0x1d0)](_0x377c9f[_0x2e652e(0x20e)],{'grant_type':_0x18435c,'client_id':_0x16e3b0});if(_0x16e3b0&&_0x3c37c1){if(!OAuthService[_0x2e652e(0x1bd)+_0x2e652e(0x277)+_0x2e652e(0x1bf)+_0x2e652e(0x217)](_0x16e3b0,_0x3c37c1)){logger[_0x2e652e(0x23f)](_0x377c9f[_0x2e652e(0x1fb)],{'client_id':_0x16e3b0}),_0x1c3890['statu'+'s'](0x191)['json']({'error':_0x2e652e(0x26f)+_0x2e652e(0x27b)+_0x2e652e(0x1b7),'error_description':_0x2e652e(0x213)+_0x2e652e(0x225)+_0x2e652e(0x20d)+_0x2e652e(0x297)+_0x2e652e(0x209)+'s'});return;}}const _0x1312d7=OAuthService[_0x2e652e(0x1bd)+'yAndD'+_0x2e652e(0x230)+_0x2e652e(0x1b8)+_0x2e652e(0x1b1)](_0x2836fa);if(!_0x1312d7){logger[_0x2e652e(0x23f)](_0x377c9f['pEoyF'],{'code':_0x2836fa}),_0x1c3890[_0x2e652e(0x254)+'s'](0x190)[_0x2e652e(0x236)]({'error':_0x2e652e(0x26f)+_0x2e652e(0x1de)+_0x2e652e(0x273),'error_description':_0x2e652e(0x213)+'id\x20au'+_0x2e652e(0x1ec)+_0x2e652e(0x22f)+_0x2e652e(0x296)+_0x2e652e(0x224)+_0x2e652e(0x1e0)+'ture'});return;}if(!_0x518ad4){_0x1c3890['statu'+'s'](0x190)['json']({'error':_0x2e652e(0x26f)+_0x2e652e(0x1de)+_0x2e652e(0x273),'error_description':_0x2e652e(0x222)+'verif'+_0x2e652e(0x1c4)+_0x2e652e(0x242)+_0x2e652e(0x26c)+_0x2e652e(0x1d6)+_0x2e652e(0x1e9)});return;}if(!OAuthService['verif'+_0x2e652e(0x1e4)](_0x518ad4,_0x1312d7['hc'],_0x1312d7['hm'])){logger[_0x2e652e(0x23f)](_0x2e652e(0x28f)+_0x2e652e(0x1bd)+_0x2e652e(0x21a)+_0x2e652e(0x255)+_0x2e652e(0x229),{'clickUpCode':_0x1312d7['c'],'verifier':_0x518ad4}),_0x1c3890['statu'+'s'](0x190)[_0x2e652e(0x236)]({'error':_0x377c9f[_0x2e652e(0x291)],'error_description':_0x377c9f[_0x2e652e(0x298)]});return;}const _0x47d869=await OAuthService[_0x2e652e(0x1d1)+_0x2e652e(0x265)+_0x2e652e(0x294)+_0x2e652e(0x2a6)+'ckUp'](_0x1312d7['c']);if(_0x47d869[_0x2e652e(0x252)+'ss']){const _0xecaafa=_0x47d869[_0x2e652e(0x262)][_0x2e652e(0x1dd)+_0x2e652e(0x1f3)+'en'];_0x377c9f['xUlHl'](clearTokenCache,_0xecaafa);try{const _0x38fa9d=await a0_0x49f869[_0x2e652e(0x1fc)](a0_0x24001f[_0x2e652e(0x214)+_0x2e652e(0x24e)+_0x2e652e(0x202)]+'/team',{'headers':{'Authorization':_0xecaafa},'timeout':0x2710}),_0x4bbf8c=_0x38fa9d['data']?.[_0x2e652e(0x25f)]||[];if(_0x4bbf8c[_0x2e652e(0x220)+'h']>0x0){const _0x485e24=_0x4bbf8c['map'](_0x43f084=>String(_0x43f084['id'])),_0x301e0f=_0x485e24['join'](','),_0x571370=_0x301e0f+':'+_0xecaafa;logger['info'](_0x2e652e(0x286)+'ding\x20'+_0x2e652e(0x29e)+'pace\x20'+_0x2e652e(0x276)+'tion\x20'+'into\x20'+_0x2e652e(0x251),{'count':_0x485e24[_0x2e652e(0x220)+'h'],'confirmedIds':_0x301e0f}),_0x1c3890[_0x2e652e(0x236)]({..._0x47d869[_0x2e652e(0x262)],'access_token':_0x571370,'expires_in':OAUTH_TOKEN_EXPIRY_HINT_SECONDS,'first_team_id':_0x485e24[0x0],'all_team_ids':_0x485e24});return;}}catch(_0x135946){logger[_0x2e652e(0x23f)](_0x2e652e(0x239)+_0x2e652e(0x1da)+_0x2e652e(0x285)+_0x2e652e(0x206)+_0x2e652e(0x1df)+_0x2e652e(0x27c)+_0x2e652e(0x24c)+_0x2e652e(0x1d4)+_0x2e652e(0x261)+_0x2e652e(0x268)+_0x2e652e(0x26b)+'n',{'error':_0x135946[_0x2e652e(0x269)+'ge']});}_0x1c3890[_0x2e652e(0x236)](_0x47d869['data']);}else logger['error'](_0x2e652e(0x237)+_0x2e652e(0x256)+'oken\x20'+_0x2e652e(0x1d1)+_0x2e652e(0x1eb)+_0x2e652e(0x244)+'e',{'error':_0x47d869[_0x2e652e(0x1e8)]}),_0x1c3890[_0x2e652e(0x254)+'s'](0x1f4)['json']({'error':_0x377c9f['vEFiP'],'details':_0x47d869[_0x2e652e(0x1e8)]});});export default router;
package/build/config.js CHANGED
@@ -1 +1 @@
1
- const a0_0x32287a=a0_0x204d;(function(_0x2cf815,_0x7d76c5){const _0x53a698=a0_0x204d,_0x2cc2b3=_0x2cf815();while(!![]){try{const _0x56b68e=-parseInt(_0x53a698(0x111))/0x1+parseInt(_0x53a698(0xda))/0x2*(parseInt(_0x53a698(0x125))/0x3)+parseInt(_0x53a698(0xf3))/0x4*(parseInt(_0x53a698(0xfc))/0x5)+parseInt(_0x53a698(0x12b))/0x6+-parseInt(_0x53a698(0xe0))/0x7+parseInt(_0x53a698(0x130))/0x8+-parseInt(_0x53a698(0x11c))/0x9;if(_0x56b68e===_0x7d76c5)break;else _0x2cc2b3['push'](_0x2cc2b3['shift']());}catch(_0x51f00d){_0x2cc2b3['push'](_0x2cc2b3['shift']());}}}(a0_0x1406,0xcd684));function a0_0x204d(_0x25e23b,_0x28f575){_0x25e23b=_0x25e23b-0xda;const _0x1406c8=a0_0x1406();let _0x204d08=_0x1406c8[_0x25e23b];if(a0_0x204d['GENCKV']===undefined){var _0x4b37ee=function(_0x1b1c5a){const _0x188805='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5ceb08='',_0x1ae879='';for(let _0x471f8d=0x0,_0x3ef5d2,_0x4ef2cd,_0x36e7c4=0x0;_0x4ef2cd=_0x1b1c5a['charAt'](_0x36e7c4++);~_0x4ef2cd&&(_0x3ef5d2=_0x471f8d%0x4?_0x3ef5d2*0x40+_0x4ef2cd:_0x4ef2cd,_0x471f8d++%0x4)?_0x5ceb08+=String['fromCharCode'](0xff&_0x3ef5d2>>(-0x2*_0x471f8d&0x6)):0x0){_0x4ef2cd=_0x188805['indexOf'](_0x4ef2cd);}for(let _0x135723=0x0,_0x10817a=_0x5ceb08['length'];_0x135723<_0x10817a;_0x135723++){_0x1ae879+='%'+('00'+_0x5ceb08['charCodeAt'](_0x135723)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1ae879);};a0_0x204d['ZnlGkz']=_0x4b37ee,a0_0x204d['hMpiWj']={},a0_0x204d['GENCKV']=!![];}const _0x3c017b=_0x1406c8[0x0],_0x2c8d25=_0x25e23b+_0x3c017b,_0x27bcda=a0_0x204d['hMpiWj'][_0x2c8d25];return!_0x27bcda?(_0x204d08=a0_0x204d['ZnlGkz'](_0x204d08),a0_0x204d['hMpiWj'][_0x2c8d25]=_0x204d08):_0x204d08=_0x27bcda,_0x204d08;}const args=process[a0_0x32287a(0x106)]['slice'](0x2),envArgs={};for(let i=0x0;i<args[a0_0x32287a(0x104)+'h'];i++){if(args[i]===a0_0x32287a(0xfb)&&i+0x1<args[a0_0x32287a(0x104)+'h']){const [key,value]=args[i+0x1]['split']('=');if(key===a0_0x32287a(0x116)+'UP_AP'+a0_0x32287a(0x128))envArgs[a0_0x32287a(0xed)+'upApi'+a0_0x32287a(0x122)]=value;if(key==='CLICK'+a0_0x32287a(0xf2)+a0_0x32287a(0x121))envArgs[a0_0x32287a(0xed)+'upTea'+a0_0x32287a(0x103)]=value;if(key===a0_0x32287a(0x116)+a0_0x32287a(0x109)+a0_0x32287a(0xe1)+a0_0x32287a(0x105))envArgs[a0_0x32287a(0xfa)+'na']=value;if(key===a0_0x32287a(0x11b)+a0_0x32287a(0x112)+a0_0x32287a(0x12d)+'T')envArgs['docum'+'entSu'+a0_0x32287a(0xe3)]=value;if(key==='LOG_L'+a0_0x32287a(0x12a))envArgs[a0_0x32287a(0x10b)+a0_0x32287a(0x10d)]=value;if(key==='DISAB'+a0_0x32287a(0xf9)+a0_0x32287a(0xee))envArgs[a0_0x32287a(0x129)+a0_0x32287a(0xf1)+a0_0x32287a(0x126)]=value;if(key===a0_0x32287a(0x114)+a0_0x32287a(0xe8)+'OLS')envArgs[a0_0x32287a(0xe7)+a0_0x32287a(0x119)+'ls']=value;if(key===a0_0x32287a(0x114)+a0_0x32287a(0x10e))envArgs[a0_0x32287a(0xe7)+'eSSE']=value;if(key===a0_0x32287a(0xf7)+a0_0x32287a(0x113))envArgs[a0_0x32287a(0x100)+'rt']=value;if(key===a0_0x32287a(0x114)+'E_STD'+'IO')envArgs[a0_0x32287a(0xe7)+a0_0x32287a(0xe6)+'o']=value;if(key===a0_0x32287a(0xec))envArgs[a0_0x32287a(0x127)]=value;if(key===a0_0x32287a(0xf8))envArgs[a0_0x32287a(0x115)]=value;i++;}}export var LogLevel;(function(_0x5d4026){const _0x5cdb2f=a0_0x32287a,_0x4a0f2c={'fEdwC':_0x5cdb2f(0xe2),'KBuDv':'DEBUG','adsBO':_0x5cdb2f(0x131),'qTJFb':_0x5cdb2f(0x11a)};_0x5d4026[_0x5d4026[_0x5cdb2f(0xe2)]=0x0]=_0x4a0f2c[_0x5cdb2f(0x120)],_0x5d4026[_0x5d4026[_0x4a0f2c['KBuDv']]=0x1]=_0x5cdb2f(0xea),_0x5d4026[_0x5d4026['INFO']=0x2]=_0x4a0f2c[_0x5cdb2f(0x117)],_0x5d4026[_0x5d4026[_0x4a0f2c[_0x5cdb2f(0xff)]]=0x3]=_0x4a0f2c[_0x5cdb2f(0xff)],_0x5d4026[_0x5d4026['ERROR']=0x4]=_0x5cdb2f(0xdc);}(LogLevel||(LogLevel={})));function a0_0x1406(){const _0x4bfda5=['vvbqt1i','zMLSDgu','zNvSrhm','mZC4nta0DKzgAMLp','su5gtW','y3jLDa','DMvAsgu','zw50ihy','mK1Tz3v1zG','y29T','rvjst1i','zcbLBNy','qKPOwK8','y2T1Cc4','nZi4nJG2n0vtrxj3Da','uf9qrvi','vfjbq0u','ChbVCNq','u3rKzxi','As5JBgK','zvn0zgK','zw5HyMW','rurFve8','DxbdBgK','revcvuC','zw50u2u','ue9sva','y2XPy2S','t09muW','Dg9mB3C','zw50u3u','BgvKvg8','vvbFveu','mtq4ntz6wwTSwwK','y29Tl2e','zw50swq','Ahr0Chm','u1nfx1a','se9tva','tevex1q','CgvYC28','ls1LBNy','mtiZnxHtsgL1Cq','DhjPBq','zxjdyxm','CvrkrMi','C3nLug8','zMfSC2u','Dxbuzwe','BuLK','BgvUz3q','u09oqq','yxjNDG','DxbbCgK','BwfW','vvbFtum','zvntrq','Bg9Ntgu','oI8Vyxa','DMvS','rv9tu0u','C3bSAxq','Cc5JBgK','mte4mdu5ovnRu2TOtG','ru5ux1m','t1ju','ru5bqKW','Ag9ZDa','q0Xjq0S','ywrZqK8','uwfryum','zwruB28','v0fstG','re9dvu0','otqWotuWowjmsK9wBa','AxjVBM0','Dhj1zq','mc4WlJa','zKvKD0m','qu1Fsuq','s2v5','Dg9vCha','mZiZmq','ndC2otG4ou1AwNzZEa','B2XZ','Cg9YDa','sv9lrvK','zgLZywi','rvzfta','otmYmJC3mgT2D3v2BG','BgvZoIa'];a0_0x1406=function(){return _0x4bfda5;};return a0_0x1406();}const parseLogLevel=_0x59d5f5=>{const _0x57c9ef=a0_0x32287a,_0xbde1ba={'fulDs':_0x57c9ef(0xea)};if(!_0x59d5f5)return LogLevel['ERROR'];switch(_0x59d5f5[_0x57c9ef(0x123)+_0x57c9ef(0xfe)+'e']()){case _0x57c9ef(0xe2):return LogLevel[_0x57c9ef(0xe2)];case _0xbde1ba[_0x57c9ef(0x12f)]:return LogLevel[_0x57c9ef(0xea)];case _0x57c9ef(0x131):return LogLevel[_0x57c9ef(0x131)];case _0x57c9ef(0x11a):return LogLevel['WARN'];case _0x57c9ef(0xdc):return LogLevel[_0x57c9ef(0xdc)];default:return LogLevel['ERROR'];}},parseBoolean=(_0x8c5d0e,_0x1f5601)=>{const _0x4e2684=a0_0x32287a,_0x326413={'BJhZO':function(_0x1b7d8a,_0x19f5ad){return _0x1b7d8a===_0x19f5ad;},'XLNSg':_0x4e2684(0x11e)};if(_0x326413[_0x4e2684(0xde)](_0x8c5d0e,undefined))return _0x1f5601;return _0x8c5d0e[_0x4e2684(0xef)+_0x4e2684(0xfe)+'e']()===_0x326413['XLNSg'];},parseInteger=(_0x2398b6,_0x37c6ea)=>{const _0x3151ad=a0_0x32287a,_0x32eab2={'QaQaC':function(_0x359a7e,_0x1b5262){return _0x359a7e===_0x1b5262;},'veZHe':function(_0x24da25,_0x11e331,_0x20f277){return _0x24da25(_0x11e331,_0x20f277);}};if(_0x32eab2[_0x3151ad(0x118)](_0x2398b6,undefined))return _0x37c6ea;const _0x15eea8=_0x32eab2[_0x3151ad(0x133)](parseInt,_0x2398b6,0xa);return isNaN(_0x15eea8)?_0x37c6ea:_0x15eea8;},parseCommaSeparated=(_0x4b615f,_0x555123)=>{const _0x394f1b=a0_0x32287a;if(!_0x4b615f)return _0x555123;return _0x4b615f[_0x394f1b(0x10f)](',')[_0x394f1b(0x108)](_0x28fd4d=>_0x28fd4d[_0x394f1b(0xfd)]())['filte'+'r'](_0x50370b=>_0x50370b!=='');},configuration={'clickupApiKey':envArgs[a0_0x32287a(0xed)+'upApi'+a0_0x32287a(0x122)]||process.env.CLICKUP_API_KEY||'','clickupTeamId':envArgs[a0_0x32287a(0xed)+'upTea'+a0_0x32287a(0x103)]||process.env.CLICKUP_TEAM_ID||'','documentSupport':envArgs['docum'+a0_0x32287a(0xf0)+a0_0x32287a(0xe3)]||process.env.DOCUMENT_SUPPORT||process.env.DOCUMENT_MODULE||process.env.DOCUMENT_MODEL||a0_0x32287a(0x101),'logLevel':parseLogLevel(envArgs[a0_0x32287a(0x10b)+'vel']||process.env.LOG_LEVEL),'logToStderr':parseBoolean(envArgs['logTo'+a0_0x32287a(0xe4)+'r']||process.env.LOG_TO_STDERR||process.env.RENDER,![]),'disabledTools':(envArgs[a0_0x32287a(0x129)+a0_0x32287a(0xf1)+'ols']||process.env.DISABLED_TOOLS||process.env.DISABLED_COMMANDS)?.[a0_0x32287a(0x10f)](',')['map'](_0x1cdaa0=>_0x1cdaa0['trim']())[a0_0x32287a(0x12e)+'r'](_0x2e7f51=>_0x2e7f51!=='')||[],'enabledTools':(envArgs[a0_0x32287a(0xe7)+'edToo'+'ls']||process.env.ENABLED_TOOLS)?.[a0_0x32287a(0x10f)](',')[a0_0x32287a(0x108)](_0x58d94a=>_0x58d94a[a0_0x32287a(0xfd)]())[a0_0x32287a(0x12e)+'r'](_0x287f8d=>_0x287f8d!=='')||[],'enableSSE':parseBoolean(envArgs[a0_0x32287a(0xe7)+'eSSE']||process.env.ENABLE_SSE||process.env.ENABLE_HTTP,![]),'ssePort':parseInteger(envArgs[a0_0x32287a(0x100)+'rt']||process.env.SSE_PORT,0xbb8),'enableStdio':parseBoolean(envArgs[a0_0x32287a(0xe7)+a0_0x32287a(0xe6)+'o']||process.env.ENABLE_STDIO,!![]),'port':envArgs[a0_0x32287a(0x127)]||process.env.PORT||a0_0x32287a(0x124),'persona':envArgs['perso'+'na']||process.env.CLICKUP_MCP_PERSONA||'','enableSecurityFeatures':parseBoolean(process.env.ENABLE_SECURITY_FEATURES,![]),'enableOriginValidation':parseBoolean(process.env.ENABLE_ORIGIN_VALIDATION,![]),'enableRateLimit':parseBoolean(process.env.ENABLE_RATE_LIMIT,![]),'enableCors':parseBoolean(process.env.ENABLE_CORS,![]),'allowedOrigins':parseCommaSeparated(process.env.ALLOWED_ORIGINS,[]),'rateLimitMax':parseInteger(process.env.RATE_LIMIT_MAX,0x64),'rateLimitWindowMs':parseInteger(process.env.RATE_LIMIT_WINDOW_MS,0xea60),'maxRequestSize':process.env.MAX_REQUEST_SIZE||'10mb','host':envArgs[a0_0x32287a(0x115)]||process.env.HOST||a0_0x32287a(0x11f)+'.0','clickupClientId':process.env.CLICKUP_CLIENT_ID,'clickupClientSecret':process.env.CLICKUP_CLIENT_SECRET,'mcpServerUrl':process.env.MCP_SERVER_URL,'redirectUriAllowlist':parseCommaSeparated(process.env.REDIRECT_URI_ALLOWLIST,[]),'clickupAppUrl':process.env.CLICKUP_APP_URL||a0_0x32287a(0xf6)+a0_0x32287a(0x10c)+a0_0x32287a(0x110)+a0_0x32287a(0xdf)+a0_0x32287a(0xdb),'clickupApiUrl':process.env.CLICKUP_API_URL||'https'+a0_0x32287a(0x10c)+a0_0x32287a(0xe5)+a0_0x32287a(0xdf)+a0_0x32287a(0xf4)+'pi/v2','proxySecret':process.env.CLICKUP_PROXY_SECRET||'','additionalApiKeys':parseCommaSeparated(process.env.CLICKUP_ADDITIONAL_API_KEYS,[])};export const validateConfiguration=()=>{const _0x13ca2e=a0_0x32287a,_0x2b6774={'wcYNN':'click'+_0x13ca2e(0x102)+'mId'},_0x5aa3e8=[_0x13ca2e(0xed)+_0x13ca2e(0x107)+_0x13ca2e(0x122),_0x2b6774['wcYNN']],_0x277041=_0x5aa3e8[_0x13ca2e(0x12e)+'r'](_0x4978b0=>!configuration[_0x4978b0]);if(_0x277041[_0x13ca2e(0x104)+'h']>0x0){const _0x22dc25=!!(configuration[_0x13ca2e(0xed)+_0x13ca2e(0xe9)+_0x13ca2e(0xf5)]&&configuration[_0x13ca2e(0xed)+'upCli'+_0x13ca2e(0xeb)+_0x13ca2e(0x132)]),_0x13b322=!!process.env.CLICKUP_MCP_LICENSE_KEY;if(configuration['enabl'+_0x13ca2e(0x10a)]||_0x22dc25||_0x13b322){}else throw new Error('Missi'+'ng\x20re'+'quire'+_0x13ca2e(0xdd)+_0x13ca2e(0x11d)+_0x13ca2e(0x134)+'ariab'+_0x13ca2e(0x12c)+_0x277041['join'](',\x20'));}};export default configuration;
1
+ function a0_0x837d(){const _0x5477b8=['Fdj8mq','uf9qrvi','twLZC2K','CMv0','Aw9UywW','yxjPywi','zw50swq','mtbTyG','tevex0m','BgvUz3q','C3nLug8','CgKVDJi','zxjdyxm','Dg9vCha','BwfW','yKjVD1y','As5JBgK','zcbLBNy','uf9tqu4','mte2nJe5Be1YD1fJ','su5gtW','y2T1Cc4','t1ju','rvjst1i','wKLore0','Ag9ZDa','Dxbuzwe','Dhj1zq','mZiZmq','y29Tl2e','zvntrq','u09oqq','C2XPy2u','s2v5','mJeWnde5meL4BhLuwG','y3jLDa','BMCGCMu','zMfSC2u','ue9sva','zw50u2u','nJuWmdy5mwfRAwrnwG','tgLJzw4','DMvS','sv9lrvK','t0Xt','rvzfta','t09muW','DgvNB3i','C3bSAxq','BgvZoIa','mJrfAfjTBeq','u0vduKu','Ahr0Chm','vuTztNu','ndyXmJeXmvnRrMHTCa','ru5trv8','ChbVCNq','ueLFs0u','Dxbny3a','s0vz','vvbFqva','Bg9Nvg8','rv9tu0u','mJi5nte1zg9Xvhnw','Bg9Ntgu','q0Xjq0S','zg9JDw0','CgvYC28','ru5ux1m','vvbFveu','BuLK','nMvtqu9ouW','DhjPBq','DxbbCgK','vvbqt1i','BgvKq2e','BgvKvg8','zMLSDgu','rv9tveq','zwruB28','uNDkCha','suvt','v3DcD1u','se9tva','vfjbq0u','u3rKzxi','vvbFtum','v0fstG','y2XPy2S','ogrWBeT4tq','zw5HyMW','r1vYA28','mtu4z0DLvhLb','nZa1odu1v0zOBvP3','zwrdyxq','ls1LBNy','zwDVCMK','u1nfx1a','CxvPCMu','qu1Fsuq','qwjNz2e','AxjVBM0','revcvuC','uKLfuW','B2XZ','u2fUzgi','qvrfr08','oI8Vyxa','u2TyEeu','re9dvu0','Cc5JBgK','vevht1i','nJuWne5dDvn6zG','te9hx0W','rurFve8','AM9PBG','ru5bqKW','zw50u3u','yxjNDG','ywrKAxq','tevex1q','AwvZ','zvn0zgK','mta4C1DVthrx','C2vlzxK','zgLZywi','reLtqui'];a0_0x837d=function(){return _0x5477b8;};return a0_0x837d();}const a0_0x4bf0c7=a0_0x285b;(function(_0x10b09f,_0x30bdab){const _0x4e2fa7=a0_0x285b,_0x10cb3d=_0x10b09f();while(!![]){try{const _0x979443=-parseInt(_0x4e2fa7(0x184))/0x1+-parseInt(_0x4e2fa7(0x14e))/0x2*(-parseInt(_0x4e2fa7(0x162))/0x3)+-parseInt(_0x4e2fa7(0x1a3))/0x4*(-parseInt(_0x4e2fa7(0x14f))/0x5)+-parseInt(_0x4e2fa7(0x139))/0x6*(-parseInt(_0x4e2fa7(0x1a7))/0x7)+parseInt(_0x4e2fa7(0x14b))/0x8*(-parseInt(_0x4e2fa7(0x199))/0x9)+-parseInt(_0x4e2fa7(0x193))/0xa+parseInt(_0x4e2fa7(0x1b0))/0xb*(-parseInt(_0x4e2fa7(0x16d))/0xc);if(_0x979443===_0x30bdab)break;else _0x10cb3d['push'](_0x10cb3d['shift']());}catch(_0x1c4644){_0x10cb3d['push'](_0x10cb3d['shift']());}}}(a0_0x837d,0x6b6f1));function a0_0x285b(_0x5f51b2,_0x3a56a8){_0x5f51b2=_0x5f51b2-0x136;const _0x837d6b=a0_0x837d();let _0x285b78=_0x837d6b[_0x5f51b2];if(a0_0x285b['BvkLKc']===undefined){var _0x33c6d5=function(_0x30f1be){const _0x2bca6f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x25ce9d='',_0x26fde5='';for(let _0x374892=0x0,_0x42216b,_0x384c6f,_0x25c998=0x0;_0x384c6f=_0x30f1be['charAt'](_0x25c998++);~_0x384c6f&&(_0x42216b=_0x374892%0x4?_0x42216b*0x40+_0x384c6f:_0x384c6f,_0x374892++%0x4)?_0x25ce9d+=String['fromCharCode'](0xff&_0x42216b>>(-0x2*_0x374892&0x6)):0x0){_0x384c6f=_0x2bca6f['indexOf'](_0x384c6f);}for(let _0x1ec4a2=0x0,_0x43fae8=_0x25ce9d['length'];_0x1ec4a2<_0x43fae8;_0x1ec4a2++){_0x26fde5+='%'+('00'+_0x25ce9d['charCodeAt'](_0x1ec4a2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x26fde5);};a0_0x285b['PlIltb']=_0x33c6d5,a0_0x285b['tQoNgN']={},a0_0x285b['BvkLKc']=!![];}const _0x315444=_0x837d6b[0x0],_0x3b5518=_0x5f51b2+_0x315444,_0xe4803f=a0_0x285b['tQoNgN'][_0x3b5518];return!_0xe4803f?(_0x285b78=a0_0x285b['PlIltb'](_0x285b78),a0_0x285b['tQoNgN'][_0x3b5518]=_0x285b78):_0x285b78=_0xe4803f,_0x285b78;}import a0_0x2241d0 from'dotenv';a0_0x2241d0['confi'+'g']();const args=process[a0_0x4bf0c7(0x168)][a0_0x4bf0c7(0x191)](0x2),envArgs={};for(let i=0x0;i<args[a0_0x4bf0c7(0x17a)+'h'];i++){if(args[i]===a0_0x4bf0c7(0x151)&&i+0x1<args[a0_0x4bf0c7(0x17a)+'h']){const [key,value]=args[i+0x1][a0_0x4bf0c7(0x1a1)]('=');if(key===a0_0x4bf0c7(0x1b2)+a0_0x4bf0c7(0x1ad)+a0_0x4bf0c7(0x19c))envArgs['click'+'upApi'+a0_0x4bf0c7(0x192)]=value;if(key===a0_0x4bf0c7(0x1b2)+a0_0x4bf0c7(0x137)+a0_0x4bf0c7(0x155))envArgs[a0_0x4bf0c7(0x14a)+'upTea'+a0_0x4bf0c7(0x138)]=value;if(key==='CLICK'+a0_0x4bf0c7(0x148)+a0_0x4bf0c7(0x172)+a0_0x4bf0c7(0x190))envArgs[a0_0x4bf0c7(0x1b4)+'na']=value;if(key===a0_0x4bf0c7(0x15f)+a0_0x4bf0c7(0x136)+a0_0x4bf0c7(0x13c)+'T')envArgs[a0_0x4bf0c7(0x1b3)+'entSu'+a0_0x4bf0c7(0x1a9)]=value;if(key===a0_0x4bf0c7(0x163)+a0_0x4bf0c7(0x19e))envArgs[a0_0x4bf0c7(0x1b1)+a0_0x4bf0c7(0x19b)]=value;if(key===a0_0x4bf0c7(0x170)+a0_0x4bf0c7(0x16a)+a0_0x4bf0c7(0x19f))envArgs[a0_0x4bf0c7(0x16f)+a0_0x4bf0c7(0x13e)+a0_0x4bf0c7(0x15a)]=value;if(key==='ENABL'+a0_0x4bf0c7(0x164)+a0_0x4bf0c7(0x19d))envArgs[a0_0x4bf0c7(0x14c)+a0_0x4bf0c7(0x141)+'ls']=value;if(key==='DISAB'+a0_0x4bf0c7(0x179)+a0_0x4bf0c7(0x15c)+a0_0x4bf0c7(0x159))envArgs[a0_0x4bf0c7(0x16f)+a0_0x4bf0c7(0x13d)+a0_0x4bf0c7(0x1a0)+a0_0x4bf0c7(0x16b)]=value;if(key===a0_0x4bf0c7(0x166)+'ED_CA'+a0_0x4bf0c7(0x161)+a0_0x4bf0c7(0x143))envArgs[a0_0x4bf0c7(0x14c)+a0_0x4bf0c7(0x150)+'egori'+'es']=value;if(key===a0_0x4bf0c7(0x166)+a0_0x4bf0c7(0x1af))envArgs[a0_0x4bf0c7(0x14c)+'eSSE']=value;if(key===a0_0x4bf0c7(0x153)+a0_0x4bf0c7(0x187))envArgs[a0_0x4bf0c7(0x17b)+'rt']=value;if(key===a0_0x4bf0c7(0x166)+a0_0x4bf0c7(0x140)+'IO')envArgs[a0_0x4bf0c7(0x14c)+a0_0x4bf0c7(0x16c)+'o']=value;key===a0_0x4bf0c7(0x1b2)+'UP_MC'+'P_LIC'+a0_0x4bf0c7(0x1a8)+a0_0x4bf0c7(0x1ac)&&(envArgs[a0_0x4bf0c7(0x14a)+'upMcp'+a0_0x4bf0c7(0x19a)+a0_0x4bf0c7(0x16e)]=value,process.env.CLICKUP_MCP_LICENSE_KEY=value);key===a0_0x4bf0c7(0x1b2)+a0_0x4bf0c7(0x148)+a0_0x4bf0c7(0x183)+'DBOX_'+a0_0x4bf0c7(0x1a4)+'T'&&(envArgs['click'+a0_0x4bf0c7(0x1ab)+a0_0x4bf0c7(0x15b)+'oxSec'+a0_0x4bf0c7(0x174)]=value,process.env.CLICKUP_MCP_SANDBOX_SECRET=value);key===a0_0x4bf0c7(0x1b2)+'UP_AD'+'DITIO'+'NAL_A'+a0_0x4bf0c7(0x1aa)+'YS'&&(envArgs[a0_0x4bf0c7(0x169)+a0_0x4bf0c7(0x175)+'ApiKe'+'ys']=value,process.env.CLICKUP_ADDITIONAL_API_KEYS=value);if(key===a0_0x4bf0c7(0x197))envArgs['port']=value;if(key===a0_0x4bf0c7(0x145))envArgs[a0_0x4bf0c7(0x18a)]=value;i++;}}export var LogLevel;(function(_0x668c5c){const _0x34490f=a0_0x4bf0c7,_0x28a5f6={'fbBNq':'0|4|3'+_0x34490f(0x171),'yvymv':'TRACE','ZINDM':'ERROR','WwBwU':_0x34490f(0x158)},_0x120574=_0x28a5f6['fbBNq'][_0x34490f(0x1a1)]('|');let _0x1635a9=0x0;while(!![]){switch(_0x120574[_0x1635a9++]){case'0':_0x668c5c[_0x668c5c[_0x28a5f6['yvymv']]=0x0]=_0x28a5f6['yvymv'];continue;case'1':_0x668c5c[_0x668c5c[_0x28a5f6[_0x34490f(0x189)]]=0x4]=_0x34490f(0x188);continue;case'2':_0x668c5c[_0x668c5c[_0x34490f(0x149)]=0x3]=_0x34490f(0x149);continue;case'3':_0x668c5c[_0x668c5c['INFO']=0x2]=_0x34490f(0x185);continue;case'4':_0x668c5c[_0x668c5c[_0x34490f(0x158)]=0x1]=_0x28a5f6[_0x34490f(0x144)];continue;}break;}}(LogLevel||(LogLevel={})));const parseLogLevel=_0x4a14a5=>{const _0x278c21=a0_0x4bf0c7,_0x1edabb={'wBLMr':_0x278c21(0x146),'bBowV':_0x278c21(0x158)};if(!_0x4a14a5)return LogLevel[_0x278c21(0x188)];switch(_0x4a14a5[_0x278c21(0x17e)+_0x278c21(0x17d)+'e']()){case _0x1edabb['wBLMr']:return LogLevel[_0x278c21(0x146)];case _0x1edabb[_0x278c21(0x180)]:return LogLevel['DEBUG'];case _0x278c21(0x185):return LogLevel[_0x278c21(0x185)];case _0x278c21(0x149):return LogLevel[_0x278c21(0x149)];case'ERROR':return LogLevel[_0x278c21(0x188)];default:return LogLevel[_0x278c21(0x188)];}},parseBoolean=(_0x37d2f0,_0x1cfee3)=>{const _0x3f27eb=a0_0x4bf0c7,_0x1213dd={'RwJpp':function(_0x4a1087,_0x304c3d){return _0x4a1087===_0x304c3d;},'UKYNu':function(_0x306ea3,_0x52bb86){return _0x306ea3===_0x52bb86;},'GUrko':_0x3f27eb(0x18c)};if(_0x1213dd[_0x3f27eb(0x142)](_0x37d2f0,undefined))return _0x1cfee3;return _0x1213dd[_0x3f27eb(0x1a6)](_0x37d2f0['toLow'+'erCas'+'e'](),_0x1213dd[_0x3f27eb(0x14d)]);},parseInteger=(_0x23c440,_0x4e1fb2)=>{const _0x170c80=a0_0x4bf0c7,_0x211077={'Abgga':function(_0x417d6e,_0x541969){return _0x417d6e(_0x541969);}};if(_0x23c440===undefined)return _0x4e1fb2;const _0x4d6d5e=parseInt(_0x23c440,0xa);return _0x211077[_0x170c80(0x156)](isNaN,_0x4d6d5e)?_0x4e1fb2:_0x4d6d5e;},parseCommaSeparated=(_0x2181da,_0x547697)=>{const _0x1f15c3=a0_0x4bf0c7;if(!_0x2181da)return _0x547697;return _0x2181da[_0x1f15c3(0x1a1)](',')[_0x1f15c3(0x17f)](_0x25c892=>_0x25c892[_0x1f15c3(0x13a)]())[_0x1f15c3(0x13f)+'r'](_0xd493bf=>_0xd493bf!=='');},configuration={'clickupApiKey':envArgs['click'+a0_0x4bf0c7(0x13b)+a0_0x4bf0c7(0x192)]||process.env.CLICKUP_API_KEY||'','clickupTeamId':envArgs['click'+'upTea'+'mId']||process.env.CLICKUP_TEAM_ID||'','documentSupport':envArgs[a0_0x4bf0c7(0x1b3)+a0_0x4bf0c7(0x167)+a0_0x4bf0c7(0x1a9)]||process.env.DOCUMENT_SUPPORT||process.env.DOCUMENT_MODULE||process.env.DOCUMENT_MODEL||a0_0x4bf0c7(0x196),'logLevel':parseLogLevel(envArgs[a0_0x4bf0c7(0x1b1)+a0_0x4bf0c7(0x19b)]||process.env.LOG_LEVEL),'logToStderr':parseBoolean(envArgs[a0_0x4bf0c7(0x1ae)+a0_0x4bf0c7(0x147)+'r']||process.env.LOG_TO_STDERR||process.env.RENDER,![]),'disabledTools':(envArgs['disab'+a0_0x4bf0c7(0x13e)+a0_0x4bf0c7(0x15a)]||process.env.DISABLED_TOOLS||process.env.DISABLED_COMMANDS)?.[a0_0x4bf0c7(0x1a1)](',')[a0_0x4bf0c7(0x17f)](_0x543fb7=>_0x543fb7['trim']())[a0_0x4bf0c7(0x13f)+'r'](_0x53ff9d=>_0x53ff9d!=='')||[],'enabledTools':(envArgs[a0_0x4bf0c7(0x14c)+a0_0x4bf0c7(0x141)+'ls']||process.env.ENABLED_TOOLS)?.[a0_0x4bf0c7(0x1a1)](',')[a0_0x4bf0c7(0x17f)](_0x2bea52=>_0x2bea52[a0_0x4bf0c7(0x13a)]())[a0_0x4bf0c7(0x13f)+'r'](_0x191692=>_0x191692!=='')||[],'disabledCategories':parseCommaSeparated(envArgs['disab'+'ledCa'+'tegor'+a0_0x4bf0c7(0x16b)]||process.env.DISABLED_CATEGORIES,[]),'enabledCategories':parseCommaSeparated(envArgs[a0_0x4bf0c7(0x14c)+a0_0x4bf0c7(0x150)+a0_0x4bf0c7(0x152)+'es']||process.env.ENABLED_CATEGORIES,[]),'enableSSE':parseBoolean(envArgs[a0_0x4bf0c7(0x14c)+a0_0x4bf0c7(0x18f)]||process.env.ENABLE_SSE||process.env.ENABLE_HTTP,![]),'ssePort':parseInteger(envArgs['ssePo'+'rt']||process.env.SSE_PORT,0xbb8),'enableStdio':parseBoolean(envArgs[a0_0x4bf0c7(0x14c)+'eStdi'+'o']||process.env.ENABLE_STDIO,!![]),'port':envArgs['port']||process.env.PORT||a0_0x4bf0c7(0x18d),'persona':envArgs[a0_0x4bf0c7(0x1b4)+'na']||process.env.CLICKUP_MCP_PERSONA||'','enableSecurityFeatures':parseBoolean(process.env.ENABLE_SECURITY_FEATURES,![]),'enableOriginValidation':parseBoolean(process.env.ENABLE_ORIGIN_VALIDATION,![]),'enableRateLimit':parseBoolean(process.env.ENABLE_RATE_LIMIT,![]),'enableCors':parseBoolean(process.env.ENABLE_CORS,![]),'allowedOrigins':parseCommaSeparated(process.env.ALLOWED_ORIGINS,[]),'rateLimitMax':parseInteger(process.env.RATE_LIMIT_MAX,0x64),'rateLimitWindowMs':parseInteger(process.env.RATE_LIMIT_WINDOW_MS,0xea60),'maxRequestSize':process.env.MAX_REQUEST_SIZE||a0_0x4bf0c7(0x178),'host':envArgs[a0_0x4bf0c7(0x18a)]||process.env.HOST||'0.0.0'+'.0','clickupClientId':process.env.CLICKUP_CLIENT_ID,'clickupClientSecret':process.env.CLICKUP_CLIENT_SECRET,'mcpServerUrl':process.env.MCP_SERVER_URL,'redirectUriAllowlist':parseCommaSeparated(process.env.REDIRECT_URI_ALLOWLIST,[]),'clickupAppUrl':process.env.CLICKUP_APP_URL||a0_0x4bf0c7(0x1a5)+a0_0x4bf0c7(0x15d)+a0_0x4bf0c7(0x160)+a0_0x4bf0c7(0x186)+'com','clickupApiUrl':process.env.CLICKUP_API_URL||'https'+a0_0x4bf0c7(0x15d)+a0_0x4bf0c7(0x181)+'ckup.'+a0_0x4bf0c7(0x18e)+a0_0x4bf0c7(0x17c),'proxySecret':process.env.CLICKUP_PROXY_SECRET||'','additionalApiKeys':parseCommaSeparated(process.env.CLICKUP_ADDITIONAL_API_KEYS,[])};export const validateConfiguration=()=>{const _0x37c6e1=a0_0x4bf0c7,_0x2762eb={'SkXxE':function(_0x2583bb,_0x2693d3){return _0x2583bb>_0x2693d3;}},_0x3e5cf8=[_0x37c6e1(0x14a)+_0x37c6e1(0x13b)+'Key',_0x37c6e1(0x14a)+_0x37c6e1(0x18b)+_0x37c6e1(0x138)],_0x891c90=_0x3e5cf8[_0x37c6e1(0x13f)+'r'](_0x1debf8=>!configuration[_0x1debf8]);if(_0x2762eb[_0x37c6e1(0x15e)](_0x891c90[_0x37c6e1(0x17a)+'h'],0x0)){const _0x2d9092=!!(configuration['click'+'upCli'+_0x37c6e1(0x177)]&&configuration['click'+'upCli'+_0x37c6e1(0x198)+_0x37c6e1(0x194)]),_0x277de1=!!process.env.CLICKUP_MCP_LICENSE_KEY;if(configuration[_0x37c6e1(0x14c)+_0x37c6e1(0x18f)]||_0x2d9092||_0x277de1){}else throw new Error(_0x37c6e1(0x173)+_0x37c6e1(0x195)+_0x37c6e1(0x154)+_0x37c6e1(0x182)+_0x37c6e1(0x157)+'ent\x20v'+_0x37c6e1(0x176)+_0x37c6e1(0x1a2)+_0x891c90[_0x37c6e1(0x165)](',\x20'));}};export default configuration;