@shakudo/kaji-setup-external 1.1.1 → 1.1.2
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.
|
@@ -69,16 +69,16 @@ For the Google APIs you want to use:
|
|
|
69
69
|
|
|
70
70
|
The callback URL is dynamically generated based on the `MY_JOB_ID` environment variable (set automatically in Shakudo deployments).
|
|
71
71
|
|
|
72
|
-
**Pattern**: `https://nextjs-{first-6-chars-of-job-id}.
|
|
72
|
+
**Pattern**: `https://nextjs-{first-6-chars-of-job-id}.{$HYPERPLANE_DOMAIN}oauth/callback`
|
|
73
73
|
|
|
74
74
|
**Example**: If `MY_JOB_ID=abc123xyz`, callback URL is:
|
|
75
75
|
```
|
|
76
|
-
https://nextjs-abc123.
|
|
76
|
+
https://nextjs-abc123.{$HYPERPLANE_DOMAIN}oauth/callback
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
**For local development** (no `MY_JOB_ID`):
|
|
80
80
|
```
|
|
81
|
-
https://nextjs-000000.
|
|
81
|
+
https://nextjs-000000.{$HYPERPLANE_DOMAIN}oauth/callback
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
**Add this URL to your Google OAuth app's authorized redirect URIs.**
|
|
@@ -143,7 +143,7 @@ User: "No"
|
|
|
143
143
|
Agent: "No problem. Here's how to create one:
|
|
144
144
|
1. Go to https://console.cloud.google.com/apis/credentials
|
|
145
145
|
2. Create OAuth 2.0 Client ID (Web application)
|
|
146
|
-
3. Add redirect URI: https://nextjs-XXXXXX.
|
|
146
|
+
3. Add redirect URI: https://nextjs-XXXXXX.{$HYPERPLANE_DOMAIN}oauth/callback
|
|
147
147
|
4. Copy the Client ID and Client Secret
|
|
148
148
|
|
|
149
149
|
Let me know when you have them."
|
|
@@ -35,13 +35,14 @@ def get_oauth_callback_url() -> str:
|
|
|
35
35
|
Get the OAuth callback URL based on MY_JOB_ID environment variable.
|
|
36
36
|
|
|
37
37
|
For Shakudo deployments, port 3000 is exposed at:
|
|
38
|
-
https://nextjs-{first-6-chars-of-job-id}.
|
|
38
|
+
https://nextjs-{first-6-chars-of-job-id}.{domain}/
|
|
39
39
|
|
|
40
40
|
Returns:
|
|
41
41
|
str: The full callback URL including /oauth/callback path
|
|
42
42
|
"""
|
|
43
43
|
job_id = os.environ.get("MY_JOB_ID", "000000")[:6]
|
|
44
|
-
|
|
44
|
+
domain = os.environ.get("HYPERPLANE_DOMAIN")
|
|
45
|
+
return f"https://nextjs-{job_id}.{domain}/oauth/callback"
|
|
45
46
|
|
|
46
47
|
|
|
47
48
|
# Google OAuth scope presets
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shakudo/kaji-setup-external",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Single-command installer for Kaji AI development environment (OpenCode + MCP servers + skills + vibe-git) - External version with ENV-based configuration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/templates/opencode.json
CHANGED
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://opencode.ai/config.json",
|
|
3
3
|
"permission": "allow",
|
|
4
|
-
"model": "anthropic/claude-opus-4-
|
|
4
|
+
"model": "anthropic/claude-opus-4-5-20251101",
|
|
5
|
+
"keybinds": {
|
|
6
|
+
"leader": "ctrl+x",
|
|
7
|
+
"messages_page_up": "<leader>k",
|
|
8
|
+
"messages_page_down": "<leader>j",
|
|
9
|
+
"messages_half_page_up": "<leader>u",
|
|
10
|
+
"messages_half_page_down": "<leader>d",
|
|
11
|
+
"messages_first": "<leader>0",
|
|
12
|
+
"messages_last": "<leader>9",
|
|
13
|
+
"input_move_left": "left",
|
|
14
|
+
"input_move_right": "right",
|
|
15
|
+
"input_word_forward": "alt+right",
|
|
16
|
+
"input_word_backward": "alt+left",
|
|
17
|
+
"session_timeline": "<leader>g",
|
|
18
|
+
"app_exit": "ctrl+c,<leader>q"
|
|
19
|
+
},
|
|
5
20
|
"mcp": {
|
|
6
21
|
"dremio": {
|
|
7
22
|
"type": "local",
|
|
@@ -9,6 +24,9 @@
|
|
|
9
24
|
"/root/.bun/bin/bunx",
|
|
10
25
|
"@mcp-servers/dremio-mcp"
|
|
11
26
|
],
|
|
27
|
+
"environment": {
|
|
28
|
+
"NPM_CONFIG_REGISTRY": "${NPM_CONFIG_REGISTRY}"
|
|
29
|
+
},
|
|
12
30
|
"enabled": true,
|
|
13
31
|
"timeout": 180000
|
|
14
32
|
},
|
|
@@ -27,6 +45,14 @@
|
|
|
27
45
|
"/root/.bun/bin/bunx",
|
|
28
46
|
"mattermost-mcp"
|
|
29
47
|
],
|
|
48
|
+
"environment": {
|
|
49
|
+
"MATTERMOST_TOKEN": "${MATTERMOST_TOKEN}",
|
|
50
|
+
"MATTERMOST_TEAM": "${MATTERMOST_TEAM}",
|
|
51
|
+
"MATTERMOST_URL": "${MATTERMOST_URL}",
|
|
52
|
+
"MATTERMOST_WS_URL": "${MATTERMOST_WS_URL}",
|
|
53
|
+
"MATTERMOST_OWNER_USER_ID": "${MATTERMOST_USER_ID}",
|
|
54
|
+
"NPM_CONFIG_REGISTRY": "${NPM_CONFIG_REGISTRY}"
|
|
55
|
+
},
|
|
30
56
|
"enabled": true,
|
|
31
57
|
"timeout": 180000
|
|
32
58
|
},
|
|
@@ -36,14 +62,14 @@
|
|
|
36
62
|
"/root/.bun/bin/bunx",
|
|
37
63
|
"@alanse/mcp-neo4j-server"
|
|
38
64
|
],
|
|
39
|
-
"enabled": true,
|
|
40
|
-
"timeout": 180000,
|
|
41
65
|
"environment": {
|
|
42
66
|
"NEO4J_URI": "${NEO4J_URI}",
|
|
43
67
|
"NEO4J_USERNAME": "${NEO4J_USERNAME}",
|
|
44
68
|
"NEO4J_PASSWORD": "${NEO4J_PASSWORD}",
|
|
45
69
|
"NPM_CONFIG_REGISTRY": "${NPM_CONFIG_REGISTRY}"
|
|
46
|
-
}
|
|
70
|
+
},
|
|
71
|
+
"enabled": true,
|
|
72
|
+
"timeout": 180000
|
|
47
73
|
},
|
|
48
74
|
"notionApi": {
|
|
49
75
|
"type": "local",
|
|
@@ -52,11 +78,11 @@
|
|
|
52
78
|
"-y",
|
|
53
79
|
"@notionhq/notion-mcp-server"
|
|
54
80
|
],
|
|
55
|
-
"enabled": true,
|
|
56
|
-
"timeout": 180000,
|
|
57
81
|
"environment": {
|
|
58
82
|
"OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ${NOTION_API_TOKEN}\", \"Notion-Version\": \"2022-06-28\" }"
|
|
59
|
-
}
|
|
83
|
+
},
|
|
84
|
+
"enabled": true,
|
|
85
|
+
"timeout": 180000
|
|
60
86
|
},
|
|
61
87
|
"playwright": {
|
|
62
88
|
"type": "local",
|
|
@@ -71,27 +97,13 @@
|
|
|
71
97
|
"enabled": true,
|
|
72
98
|
"timeout": 180000
|
|
73
99
|
},
|
|
74
|
-
"gmail": {
|
|
75
|
-
"type": "local",
|
|
76
|
-
"command": [
|
|
77
|
-
"/root/.bun/bin/bunx",
|
|
78
|
-
"-y",
|
|
79
|
-
"@gongrzhe/server-gmail-autoauth-mcp"
|
|
80
|
-
],
|
|
81
|
-
"enabled": true,
|
|
82
|
-
"timeout": 180000,
|
|
83
|
-
"environment": {
|
|
84
|
-
"GMAIL_OAUTH_PATH": "/root/.gmail-mcp/gcp-oauth.keys.json",
|
|
85
|
-
"GMAIL_CREDENTIALS_PATH": "/root/.gmail-mcp/credentials.json"
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
100
|
"supabase": {
|
|
89
101
|
"type": "local",
|
|
90
102
|
"command": [
|
|
91
103
|
"/root/.bun/bin/bunx",
|
|
92
104
|
"-y",
|
|
93
105
|
"@modelcontextprotocol/server-postgres",
|
|
94
|
-
"
|
|
106
|
+
"${SUPABASE_CONNECTION_STRING}"
|
|
95
107
|
],
|
|
96
108
|
"enabled": true,
|
|
97
109
|
"timeout": 180000
|
|
@@ -102,12 +114,12 @@
|
|
|
102
114
|
"/root/.bun/bin/bunx",
|
|
103
115
|
"tavily-mcp"
|
|
104
116
|
],
|
|
105
|
-
"enabled": true,
|
|
106
|
-
"timeout": 180000,
|
|
107
117
|
"environment": {
|
|
108
118
|
"TAVILY_API_KEY": "${TAVILY_API_KEY}",
|
|
109
119
|
"NPM_CONFIG_REGISTRY": "${NPM_CONFIG_REGISTRY}"
|
|
110
|
-
}
|
|
120
|
+
},
|
|
121
|
+
"enabled": true,
|
|
122
|
+
"timeout": 180000
|
|
111
123
|
},
|
|
112
124
|
"fireflies": {
|
|
113
125
|
"type": "local",
|
|
@@ -116,9 +128,9 @@
|
|
|
116
128
|
"mcp-remote",
|
|
117
129
|
"https://api.fireflies.ai/mcp",
|
|
118
130
|
"--header",
|
|
119
|
-
"Authorization: Bearer "
|
|
131
|
+
"Authorization: Bearer ${FIREFLIES_API_KEY}"
|
|
120
132
|
],
|
|
121
|
-
"enabled":
|
|
133
|
+
"enabled": true,
|
|
122
134
|
"timeout": 180000
|
|
123
135
|
},
|
|
124
136
|
"shakudo-platform": {
|
|
@@ -127,78 +139,244 @@
|
|
|
127
139
|
"/root/.bun/bin/bunx",
|
|
128
140
|
"@mcp-servers/shakudo-platform-mcp"
|
|
129
141
|
],
|
|
130
|
-
"enabled": true,
|
|
131
|
-
"timeout": 180000,
|
|
132
142
|
"environment": {
|
|
133
143
|
"NPM_CONFIG_REGISTRY": "${NPM_CONFIG_REGISTRY}"
|
|
134
|
-
}
|
|
144
|
+
},
|
|
145
|
+
"enabled": true,
|
|
146
|
+
"timeout": 180000
|
|
135
147
|
},
|
|
136
148
|
"nanobanana": {
|
|
137
149
|
"type": "local",
|
|
138
150
|
"command": [
|
|
139
151
|
"/root/.local/bin/uvx",
|
|
140
152
|
"--index-url",
|
|
141
|
-
"
|
|
153
|
+
"${PYPI_INDEX_URL}",
|
|
142
154
|
"--extra-index-url",
|
|
143
155
|
"https://pypi.org/simple/",
|
|
144
156
|
"--index-strategy",
|
|
145
157
|
"unsafe-best-match",
|
|
146
158
|
"nanobanana-mcp-server==0.3.2.post1"
|
|
147
159
|
],
|
|
148
|
-
"enabled": true,
|
|
149
|
-
"timeout": 180000,
|
|
150
160
|
"environment": {
|
|
151
161
|
"GEMINI_API_KEY": "${GEMINI_API_KEY}",
|
|
152
162
|
"NANOBANANA_MODEL": "pro"
|
|
153
|
-
}
|
|
163
|
+
},
|
|
164
|
+
"enabled": true,
|
|
165
|
+
"timeout": 180000
|
|
154
166
|
},
|
|
155
|
-
"
|
|
167
|
+
"ClickUp": {
|
|
156
168
|
"type": "local",
|
|
157
169
|
"command": [
|
|
158
170
|
"npx",
|
|
159
171
|
"-y",
|
|
160
|
-
"@
|
|
172
|
+
"@taazkareem/clickup-mcp-server@latest"
|
|
161
173
|
],
|
|
162
|
-
"enabled": true,
|
|
163
|
-
"timeout": 180000,
|
|
164
174
|
"environment": {
|
|
165
|
-
"
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
"command": [
|
|
171
|
-
"npx",
|
|
172
|
-
"mcp-remote",
|
|
173
|
-
"",
|
|
174
|
-
"--allow-http"
|
|
175
|
-
],
|
|
175
|
+
"CLICKUP_API_KEY": "${CLICKUP_API_KEY}",
|
|
176
|
+
"CLICKUP_TEAM_ID": "${CLICKUP_TEAM_ID}",
|
|
177
|
+
"DOCUMENT_SUPPORT": "true",
|
|
178
|
+
"CLICKUP_MCP_LICENSE_KEY": "${CLICKUP_MCP_LICENSE_KEY}"
|
|
179
|
+
},
|
|
176
180
|
"enabled": true,
|
|
177
181
|
"timeout": 180000
|
|
178
182
|
},
|
|
179
|
-
"
|
|
183
|
+
"gamma": {
|
|
180
184
|
"type": "local",
|
|
181
185
|
"command": [
|
|
182
|
-
"
|
|
186
|
+
"npx",
|
|
187
|
+
"-y",
|
|
188
|
+
"@raydeck/gamma-app-mcp"
|
|
183
189
|
],
|
|
184
|
-
"enabled": false,
|
|
185
|
-
"timeout": 180000,
|
|
186
190
|
"environment": {
|
|
187
|
-
"
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
+
"GAMMA_API_KEY": "${GAMMA_API_KEY}"
|
|
192
|
+
},
|
|
193
|
+
"enabled": true,
|
|
194
|
+
"timeout": 180000
|
|
191
195
|
}
|
|
192
196
|
},
|
|
193
197
|
"plugin": [
|
|
194
198
|
"oh-my-opencode",
|
|
195
|
-
"
|
|
199
|
+
"opencode-mattermost-control"
|
|
196
200
|
],
|
|
197
201
|
"provider": {
|
|
198
202
|
"anthropic": {
|
|
199
203
|
"name": "Anthropic",
|
|
200
204
|
"options": {
|
|
201
205
|
"apiKey": "{env:ANTHROPIC_API_KEY}"
|
|
206
|
+
},
|
|
207
|
+
"models": {
|
|
208
|
+
"claude-opus-4-5-20251101": {
|
|
209
|
+
"name": "Claude Opus 4.5",
|
|
210
|
+
"thinking": true,
|
|
211
|
+
"attachment": true,
|
|
212
|
+
"limit": {
|
|
213
|
+
"context": 200000,
|
|
214
|
+
"output": 32000
|
|
215
|
+
},
|
|
216
|
+
"modalities": {
|
|
217
|
+
"input": [
|
|
218
|
+
"text",
|
|
219
|
+
"image",
|
|
220
|
+
"pdf"
|
|
221
|
+
],
|
|
222
|
+
"output": [
|
|
223
|
+
"text"
|
|
224
|
+
]
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
"claude-sonnet-4-5-20250929": {
|
|
228
|
+
"name": "Claude Sonnet 4.5",
|
|
229
|
+
"thinking": true,
|
|
230
|
+
"attachment": true,
|
|
231
|
+
"limit": {
|
|
232
|
+
"context": 200000,
|
|
233
|
+
"output": 64000
|
|
234
|
+
},
|
|
235
|
+
"modalities": {
|
|
236
|
+
"input": [
|
|
237
|
+
"text",
|
|
238
|
+
"image",
|
|
239
|
+
"pdf"
|
|
240
|
+
],
|
|
241
|
+
"output": [
|
|
242
|
+
"text"
|
|
243
|
+
]
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
"openai": {
|
|
249
|
+
"name": "OpenAI",
|
|
250
|
+
"options": {
|
|
251
|
+
"apiKey": "{env:OPENAI_API_KEY}",
|
|
252
|
+
"reasoningEffort": "medium",
|
|
253
|
+
"reasoningSummary": "auto",
|
|
254
|
+
"textVerbosity": "medium",
|
|
255
|
+
"include": [
|
|
256
|
+
"reasoning.encrypted_content"
|
|
257
|
+
],
|
|
258
|
+
"store": false
|
|
259
|
+
},
|
|
260
|
+
"models": {
|
|
261
|
+
"gpt-5.2": {
|
|
262
|
+
"name": "GPT 5.2 (OAuth)",
|
|
263
|
+
"limit": {
|
|
264
|
+
"context": 272000,
|
|
265
|
+
"output": 128000
|
|
266
|
+
},
|
|
267
|
+
"modalities": {
|
|
268
|
+
"input": [
|
|
269
|
+
"text",
|
|
270
|
+
"image"
|
|
271
|
+
],
|
|
272
|
+
"output": [
|
|
273
|
+
"text"
|
|
274
|
+
]
|
|
275
|
+
},
|
|
276
|
+
"variants": {
|
|
277
|
+
"none": {
|
|
278
|
+
"reasoningEffort": "none",
|
|
279
|
+
"reasoningSummary": "auto",
|
|
280
|
+
"textVerbosity": "medium"
|
|
281
|
+
},
|
|
282
|
+
"low": {
|
|
283
|
+
"reasoningEffort": "low",
|
|
284
|
+
"reasoningSummary": "auto",
|
|
285
|
+
"textVerbosity": "medium"
|
|
286
|
+
},
|
|
287
|
+
"medium": {
|
|
288
|
+
"reasoningEffort": "medium",
|
|
289
|
+
"reasoningSummary": "auto",
|
|
290
|
+
"textVerbosity": "medium"
|
|
291
|
+
},
|
|
292
|
+
"high": {
|
|
293
|
+
"reasoningEffort": "high",
|
|
294
|
+
"reasoningSummary": "detailed",
|
|
295
|
+
"textVerbosity": "medium"
|
|
296
|
+
},
|
|
297
|
+
"xhigh": {
|
|
298
|
+
"reasoningEffort": "xhigh",
|
|
299
|
+
"reasoningSummary": "detailed",
|
|
300
|
+
"textVerbosity": "medium"
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
"gpt-5.2-codex": {
|
|
305
|
+
"name": "GPT 5.2 Codex (OAuth)",
|
|
306
|
+
"limit": {
|
|
307
|
+
"context": 272000,
|
|
308
|
+
"output": 128000
|
|
309
|
+
},
|
|
310
|
+
"modalities": {
|
|
311
|
+
"input": [
|
|
312
|
+
"text",
|
|
313
|
+
"image"
|
|
314
|
+
],
|
|
315
|
+
"output": [
|
|
316
|
+
"text"
|
|
317
|
+
]
|
|
318
|
+
},
|
|
319
|
+
"variants": {
|
|
320
|
+
"low": {
|
|
321
|
+
"reasoningEffort": "low",
|
|
322
|
+
"reasoningSummary": "auto",
|
|
323
|
+
"textVerbosity": "medium"
|
|
324
|
+
},
|
|
325
|
+
"medium": {
|
|
326
|
+
"reasoningEffort": "medium",
|
|
327
|
+
"reasoningSummary": "auto",
|
|
328
|
+
"textVerbosity": "medium"
|
|
329
|
+
},
|
|
330
|
+
"high": {
|
|
331
|
+
"reasoningEffort": "high",
|
|
332
|
+
"reasoningSummary": "detailed",
|
|
333
|
+
"textVerbosity": "medium"
|
|
334
|
+
},
|
|
335
|
+
"xhigh": {
|
|
336
|
+
"reasoningEffort": "xhigh",
|
|
337
|
+
"reasoningSummary": "detailed",
|
|
338
|
+
"textVerbosity": "medium"
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
"gpt-5.1-codex-max": {
|
|
343
|
+
"name": "GPT 5.1 Codex Max (OAuth)",
|
|
344
|
+
"limit": {
|
|
345
|
+
"context": 272000,
|
|
346
|
+
"output": 128000
|
|
347
|
+
},
|
|
348
|
+
"modalities": {
|
|
349
|
+
"input": [
|
|
350
|
+
"text",
|
|
351
|
+
"image"
|
|
352
|
+
],
|
|
353
|
+
"output": [
|
|
354
|
+
"text"
|
|
355
|
+
]
|
|
356
|
+
},
|
|
357
|
+
"variants": {
|
|
358
|
+
"low": {
|
|
359
|
+
"reasoningEffort": "low",
|
|
360
|
+
"reasoningSummary": "detailed",
|
|
361
|
+
"textVerbosity": "medium"
|
|
362
|
+
},
|
|
363
|
+
"medium": {
|
|
364
|
+
"reasoningEffort": "medium",
|
|
365
|
+
"reasoningSummary": "detailed",
|
|
366
|
+
"textVerbosity": "medium"
|
|
367
|
+
},
|
|
368
|
+
"high": {
|
|
369
|
+
"reasoningEffort": "high",
|
|
370
|
+
"reasoningSummary": "detailed",
|
|
371
|
+
"textVerbosity": "medium"
|
|
372
|
+
},
|
|
373
|
+
"xhigh": {
|
|
374
|
+
"reasoningEffort": "xhigh",
|
|
375
|
+
"reasoningSummary": "detailed",
|
|
376
|
+
"textVerbosity": "medium"
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
202
380
|
}
|
|
203
381
|
}
|
|
204
382
|
}
|