@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}.dev.hyperplane.dev/oauth/callback`
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.dev.hyperplane.dev/oauth/callback
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.dev.hyperplane.dev/oauth/callback
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.dev.hyperplane.dev/oauth/callback
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}.dev.hyperplane.dev/
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
- return f"https://nextjs-{job_id}.dev.hyperplane.dev/oauth/callback"
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.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": {
@@ -1,7 +1,22 @@
1
1
  {
2
2
  "$schema": "https://opencode.ai/config.json",
3
3
  "permission": "allow",
4
- "model": "anthropic/claude-opus-4-6",
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
- "postgresql://supabase_admin:${SUPABASE_PG_PASSWORD}@${SUPABASE_PG_HOST}:5432/postgres"
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": false,
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
- "https://pypi.org/simple/",
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
- "gamma": {
167
+ "ClickUp": {
156
168
  "type": "local",
157
169
  "command": [
158
170
  "npx",
159
171
  "-y",
160
- "@raydeck/gamma-app-mcp"
172
+ "@taazkareem/clickup-mcp-server@latest"
161
173
  ],
162
- "enabled": true,
163
- "timeout": 180000,
164
174
  "environment": {
165
- "GAMMA_API_KEY": "${GAMMA_API_KEY}"
166
- }
167
- },
168
- "graphiti-memory": {
169
- "type": "local",
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
- "ClickUp": {
183
+ "gamma": {
180
184
  "type": "local",
181
185
  "command": [
182
- "remote"
186
+ "npx",
187
+ "-y",
188
+ "@raydeck/gamma-app-mcp"
183
189
  ],
184
- "enabled": false,
185
- "timeout": 180000,
186
190
  "environment": {
187
- "url": "https://mcp.clickup.com/mcp",
188
- "Authorization": "",
189
- "x-workspace-id": ""
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
- "@shakudo/opencode-mattermost-control"
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
  }
@@ -5,6 +5,6 @@
5
5
  "private": true,
6
6
  "dependencies": {
7
7
  "@opencode-ai/plugin": "1.1.35",
8
- "@shakudo/opencode-mattermost-control": "latest"
8
+ "opencode-mattermost-control": "0.3.29"
9
9
  }
10
10
  }