@luban-code/luban-code 1.66.1 → 1.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,551 +1,767 @@
1
- {
2
- "name": "@luban-code/luban-code",
3
- "displayName": "Luban",
4
- "description": "Luban — a standalone sidebar AI coding agent (multi-provider, OpenAI-compatible, zero source patches)",
5
- "version": "1.66.1",
6
- "license": "Apache-2.0",
7
- "author": {
8
- "name": "eppen (liuhualiang)",
9
- "url": "https://github.com/eppen"
10
- },
11
- "publisher": "liuhualiang",
12
- "icon": "media/icon.png",
13
- "homepage": "https://github.com/eppen/luban#readme",
14
- "bugs": {
15
- "url": "https://github.com/eppen/luban/issues"
16
- },
17
- "keywords": [
18
- "ai",
19
- "agent",
20
- "chat",
21
- "coding-agent",
22
- "qwen",
23
- "deepseek",
24
- "openai-compatible",
25
- "mcp"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/eppen/luban.git"
30
- },
31
- "engines": {
32
- "vscode": "^1.100.0"
33
- },
34
- "categories": [
35
- "AI",
36
- "Chat",
37
- "Programming Languages"
38
- ],
39
- "activationEvents": [
40
- "onStartupFinished",
41
- "onView:luban.chatView",
42
- "onCommand:luban.focusView"
43
- ],
44
- "main": "./dist/extension.js",
45
- "bin": {
46
- "luban": "./dist/cli.js"
47
- },
48
- "files": [
49
- "dist/cli.js",
50
- "dist/extension.js",
51
- "package.json"
52
- ],
53
- "scripts": {
54
- "build": "node scripts/build.js",
55
- "watch": "node scripts/build.js --watch",
56
- "package": "node scripts/build.js",
57
- "vscode:prepublish": "node scripts/build.js",
58
- "prepack": "node scripts/build.js",
59
- "smoke": "node scripts/build.js && node scripts/smoke.js",
60
- "test:skills": "node scripts/test-skills.js",
61
- "cli": "node cli.js",
62
- "vsix": "npx --yes @vscode/vsce@latest package --no-dependencies",
63
- "test:general": "node scripts/test-general-settings.js",
64
- "test:browser-events": "node scripts/test-browser-events.js",
65
- "test:browser-tool": "node scripts/test-browser-tool.js",
66
- "test:computer-tool": "node scripts/test-computer-tool.js",
67
- "test:subagent": "node scripts/test-subagent-guards.js",
68
- "test:gamepad": "node scripts/test-gamepad.js"
69
- },
70
- "capabilities": {
71
- "untrustedWorkspaces": {
72
- "supported": true
73
- },
74
- "virtualWorkspaces": true
75
- },
76
- "contributes": {
77
- "commands": [
78
- {
79
- "command": "luban.focusView",
80
- "title": "%cmdFocusView%",
81
- "category": "Luban"
82
- },
83
- {
84
- "command": "luban.openPanel",
85
- "title": "%cmdOpenPanel%",
86
- "category": "Luban"
87
- },
88
- {
89
- "command": "luban.reloadConfig",
90
- "title": "%cmdReloadConfig%",
91
- "category": "Luban"
92
- },
93
- {
94
- "command": "luban.providerSettings",
95
- "title": "%cmdProviderSettings%",
96
- "category": "Luban"
97
- },
98
- {
99
- "command": "luban.dashboard",
100
- "title": "%cmdDashboard%",
101
- "category": "Luban"
102
- },
103
- {
104
- "command": "luban.agent",
105
- "title": "%cmdAgent%",
106
- "category": "Luban"
107
- },
108
- {
109
- "command": "luban.openDiff",
110
- "title": "%cmdOpenDiff%",
111
- "category": "Luban"
112
- },
113
- {
114
- "command": "luban.acceptHunk",
115
- "title": "%cmdAcceptHunk%",
116
- "category": "Luban"
117
- },
118
- {
119
- "command": "luban.rejectHunk",
120
- "title": "%cmdRejectHunk%",
121
- "category": "Luban"
122
- },
123
- {
124
- "command": "luban.acceptFile",
125
- "title": "%cmdAcceptFile%",
126
- "category": "Luban"
127
- },
128
- {
129
- "command": "luban.rejectFile",
130
- "title": "%cmdRejectFile%",
131
- "category": "Luban"
132
- },
133
- {
134
- "command": "luban.reviewAll",
135
- "title": "%cmdReviewAll%",
136
- "category": "Luban"
137
- },
138
- {
139
- "command": "luban.revertAll",
140
- "title": "%cmdRevertAll%",
141
- "category": "Luban"
142
- },
143
- {
144
- "command": "luban.newSession",
145
- "title": "%cmdNewSession%",
146
- "category": "Luban"
147
- },
148
- {
149
- "command": "luban.sessionList",
150
- "title": "%cmdSessionList%",
151
- "category": "Luban"
152
- },
153
- {
154
- "command": "luban.cursorPlan",
155
- "title": "%cmdCursorPlan%",
156
- "category": "Luban"
157
- },
158
- {
159
- "command": "luban.mode.cycle",
160
- "title": "%cmdModeCycle%",
161
- "category": "Luban"
162
- },
163
- {
164
- "command": "luban.addFileToChat",
165
- "title": "%cmdAddFileToChat%",
166
- "category": "Luban"
167
- },
168
- {
169
- "command": "luban.addFolderToChat",
170
- "title": "%cmdAddFolderToChat%",
171
- "category": "Luban"
172
- },
173
- {
174
- "command": "luban.addSelectionToChat",
175
- "title": "%cmdAddSelectionToChat%",
176
- "category": "Luban"
177
- },
178
- {
179
- "command": "luban.inlineCompletion.toggle",
180
- "title": "%cmdInlineToggle%",
181
- "category": "Luban"
182
- },
183
- {
184
- "command": "luban.diffAccept",
185
- "title": "%cmdDiffAccept%",
186
- "category": "Luban"
187
- },
188
- {
189
- "command": "luban.diffReject",
190
- "title": "%cmdDiffReject%",
191
- "category": "Luban"
192
- },
193
- {
194
- "command": "luban.openInBrowser",
195
- "title": "%cmdOpenInBrowser%",
196
- "category": "Luban"
197
- },
198
- {
199
- "command": "luban.browserCheck",
200
- "title": "%cmdBrowserCheck%",
201
- "category": "Luban"
202
- }
203
- ],
204
- "menus": {
205
- "editor/title": [
206
- {
207
- "command": "luban.diffAccept",
208
- "when": "isInDiffEditor && luban.reviewDiffActive && luban.pendingReview > 0",
209
- "group": "navigation@1"
210
- },
211
- {
212
- "command": "luban.diffReject",
213
- "when": "isInDiffEditor && luban.reviewDiffActive && luban.pendingReview > 0",
214
- "group": "navigation@2"
215
- }
216
- ],
217
- "explorer/context": [
218
- {
219
- "command": "luban.addFileToChat",
220
- "when": "!explorerResourceIsFolder && resourceScheme == file",
221
- "group": "1_luban@1"
222
- },
223
- {
224
- "command": "luban.addFolderToChat",
225
- "when": "explorerResourceIsFolder && resourceScheme == file",
226
- "group": "1_luban@2"
227
- }
228
- ],
229
- "editor/context": [
230
- {
231
- "command": "luban.addSelectionToChat",
232
- "when": "editorHasSelection && resourceScheme == file",
233
- "group": "1_luban@0"
234
- }
235
- ],
236
- "webview/context": [
237
- {
238
- "command": "luban.openInBrowser",
239
- "when": "webviewSection == 'chat'"
240
- }
241
- ],
242
- "commandPalette": [
243
- {
244
- "command": "luban.diffAccept",
245
- "when": "luban.pendingReview > 0"
246
- },
247
- {
248
- "command": "luban.diffReject",
249
- "when": "luban.pendingReview > 0"
250
- },
251
- {
252
- "command": "luban.addFileToChat",
253
- "when": "false"
254
- },
255
- {
256
- "command": "luban.addFolderToChat",
257
- "when": "false"
258
- },
259
- {
260
- "command": "luban.addSelectionToChat",
261
- "when": "editorHasSelection"
262
- },
263
- {
264
- "command": "luban.openInBrowser",
265
- "when": "false"
266
- }
267
- ]
268
- },
269
- "keybindings": [
270
- {
271
- "command": "luban.focusView",
272
- "key": "cmd+shift+l",
273
- "mac": "cmd+shift+l",
274
- "win": "ctrl+shift+l",
275
- "linux": "ctrl+shift+l"
276
- },
277
- {
278
- "command": "luban.newSession",
279
- "key": "cmd+alt+n",
280
- "mac": "cmd+alt+n",
281
- "win": "ctrl+alt+n",
282
- "linux": "ctrl+alt+n"
283
- },
284
- {
285
- "command": "luban.sessionList",
286
- "key": "cmd+alt+h",
287
- "mac": "cmd+alt+h",
288
- "win": "ctrl+alt+h",
289
- "linux": "ctrl+alt+h"
290
- },
291
- {
292
- "command": "luban.mode.cycle",
293
- "key": "shift+tab",
294
- "mac": "shift+tab",
295
- "win": "shift+tab",
296
- "linux": "shift+tab",
297
- "when": "focusedView == 'luban.chatView'"
298
- },
299
- {
300
- "command": "luban.addSelectionToChat",
301
- "key": "cmd+alt+a",
302
- "mac": "cmd+alt+a",
303
- "win": "ctrl+alt+a",
304
- "linux": "ctrl+alt+a",
305
- "when": "editorHasSelection && editorTextFocus"
306
- }
307
- ],
308
- "viewsContainers": {
309
- "activitybar": [
310
- {
311
- "id": "luban",
312
- "title": "Luban",
313
- "icon": "media/icon.svg"
314
- }
315
- ]
316
- },
317
- "views": {
318
- "luban": [
319
- {
320
- "type": "webview",
321
- "id": "luban.chatView",
322
- "name": "Chat",
323
- "contextualTitle": "Luban"
324
- }
325
- ]
326
- },
327
- "configuration": {
328
- "title": "Luban",
329
- "properties": {
330
- "luban.language": {
331
- "type": "string",
332
- "enum": [
333
- "auto",
334
- "en",
335
- "zh-cn",
336
- "ja"
337
- ],
338
- "enumDescriptions": [
339
- "%cfgLanguageAuto%",
340
- "%cfgLanguageEn%",
341
- "%cfgLanguageZhCn%",
342
- "%cfgLanguageJa%"
343
- ],
344
- "default": "auto",
345
- "description": "%cfgLanguage%"
346
- },
347
- "luban.autoOpen": {
348
- "type": "boolean",
349
- "default": true,
350
- "description": "%cfgAutoOpen%"
351
- },
352
- "luban.context.autoFile": {
353
- "type": "boolean",
354
- "default": true,
355
- "description": "%cfgContextAutoFile%"
356
- },
357
- "luban.context.autoFileMaxChars": {
358
- "type": "number",
359
- "default": 8000,
360
- "minimum": 500,
361
- "description": "%cfgContextAutoFileMaxChars%"
362
- },
363
- "luban.context.autoFileWindowLines": {
364
- "type": "number",
365
- "default": 200,
366
- "minimum": 40,
367
- "description": "%cfgContextAutoFileWindowLines%"
368
- },
369
- "luban.context.workset": {
370
- "type": "boolean",
371
- "default": true,
372
- "description": "%cfgContextWorkset%"
373
- },
374
- "luban.sessionHistory.max": {
375
- "type": "number",
376
- "default": 50,
377
- "minimum": 1,
378
- "description": "%cfgSessionHistoryMax%"
379
- },
380
- "luban.usage.record": {
381
- "type": "boolean",
382
- "default": true,
383
- "description": "%cfgUsageRecord%"
384
- },
385
- "luban.sessionMemory.enabled": {
386
- "type": "boolean",
387
- "default": true,
388
- "description": "%cfgSessionMemoryEnabled%"
389
- },
390
- "luban.sessionMemory.maxTurns": {
391
- "type": "number",
392
- "default": 8,
393
- "minimum": 1,
394
- "description": "%cfgSessionMemoryMaxTurns%"
395
- },
396
- "luban.sessionMemory.maxChars": {
397
- "type": "number",
398
- "default": 12000,
399
- "minimum": 1000,
400
- "description": "%cfgSessionMemoryMaxChars%"
401
- },
402
- "luban.agent.maxRounds": {
403
- "type": "number",
404
- "default": 100,
405
- "minimum": 0,
406
- "description": "%cfgAgentMaxRounds%"
407
- },
408
- "luban.agent.maxMinutes": {
409
- "type": "number",
410
- "default": 15,
411
- "minimum": 1,
412
- "description": "%cfgAgentMaxMinutes%"
413
- },
414
- "luban.agent.subagentRounds": {
415
- "type": "number",
416
- "default": 24,
417
- "minimum": 0,
418
- "description": "%cfgAgentSubagentRounds%"
419
- },
420
- "luban.agent.subagentMinutes": {
421
- "type": "number",
422
- "default": 0,
423
- "minimum": 0,
424
- "description": "%cfgAgentSubagentMinutes%"
425
- },
426
- "luban.agent.smallWindow": {
427
- "type": "string",
428
- "enum": [
429
- "auto",
430
- "on",
431
- "off"
432
- ],
433
- "default": "auto",
434
- "description": "%cfgAgentSmallWindow%"
435
- },
436
- "luban.agent.verbosity": {
437
- "type": "string",
438
- "enum": [
439
- "concise",
440
- "normal",
441
- "detailed"
442
- ],
443
- "default": "normal",
444
- "description": "%cfgAgentVerbosity%"
445
- },
446
- "luban.search.maxFiles": {
447
- "type": "number",
448
- "default": 5000,
449
- "minimum": 100,
450
- "description": "%cfgSearchMaxFiles%"
451
- },
452
- "luban.browser.enabled": {
453
- "type": "boolean",
454
- "default": false,
455
- "description": "%cfgBrowserEnabled%"
456
- },
457
- "luban.browser.chromePath": {
458
- "type": "string",
459
- "default": "",
460
- "description": "%cfgBrowserChromePath%"
461
- },
462
- "luban.browser.headless": {
463
- "type": "boolean",
464
- "default": true,
465
- "description": "%cfgBrowserHeadless%"
466
- },
467
- "luban.browser.viewportWidth": {
468
- "type": "number",
469
- "default": 1280,
470
- "minimum": 320,
471
- "maximum": 4096,
472
- "description": "%cfgBrowserViewportWidth%"
473
- },
474
- "luban.browser.viewportHeight": {
475
- "type": "number",
476
- "default": 800,
477
- "minimum": 240,
478
- "maximum": 4096,
479
- "description": "%cfgBrowserViewportHeight%"
480
- },
481
- "luban.browser.idleTimeoutMs": {
482
- "type": "number",
483
- "default": 300000,
484
- "minimum": 10000,
485
- "description": "%cfgBrowserIdleTimeout%"
486
- },
487
- "luban.computer.enabled": {
488
- "type": "boolean",
489
- "default": false,
490
- "description": "%cfgComputerEnabled%"
491
- },
492
- "luban.computer.confirm": {
493
- "type": "boolean",
494
- "default": true,
495
- "description": "%cfgComputerConfirm%"
496
- },
497
- "luban.computer.screenshotWidth": {
498
- "type": "number",
499
- "default": 2048,
500
- "minimum": 320,
501
- "maximum": 4096,
502
- "description": "%cfgComputerScreenshotWidth%"
503
- },
504
- "luban.plan.strictReadOnly": {
505
- "type": "boolean",
506
- "default": true,
507
- "description": "%cfgPlanStrictReadOnly%"
508
- },
509
- "luban.fs.allowOutsideWorkspace": {
510
- "type": "boolean",
511
- "default": true,
512
- "description": "%cfgFsAllowOutsideWorkspace%"
513
- },
514
- "luban.review.autoOpenDiff": {
515
- "type": "boolean",
516
- "default": true,
517
- "description": "%cfgReviewAutoOpenDiff%"
518
- },
519
- "luban.diagnostics.afterEdit": {
520
- "type": "boolean",
521
- "default": true,
522
- "description": "%cfgDiagAfterEdit%"
523
- },
524
- "luban.inlineCompletion.enabled": {
525
- "type": "boolean",
526
- "default": false,
527
- "description": "%cfgInlineEnabled%"
528
- },
529
- "luban.inlineCompletion.maxPerMinute": {
530
- "type": "number",
531
- "default": 30,
532
- "minimum": 1,
533
- "description": "%cfgInlineMaxPerMinute%"
534
- },
535
- "luban.inlineCompletion.debounceMs": {
536
- "type": "number",
537
- "default": 250,
538
- "minimum": 0,
539
- "description": "%cfgInlineDebounceMs%"
540
- }
541
- }
542
- }
543
- },
544
- "devDependencies": {
545
- "esbuild": "^0.25.0"
546
- },
547
- "dependencies": {
548
- "@clack/prompts": "^1.8.1",
549
- "picocolors": "^1.1.1"
550
- }
551
- }
1
+ {
2
+ "name": "@luban-code/luban-code",
3
+ "displayName": "Luban",
4
+ "description": "Luban — a standalone sidebar AI coding agent (multi-provider, OpenAI-compatible, zero source patches)",
5
+ "version": "1.100.0",
6
+ "license": "Apache-2.0",
7
+ "author": {
8
+ "name": "eppen (liuhualiang)",
9
+ "url": "https://github.com/eppen"
10
+ },
11
+ "publisher": "liuhualiang",
12
+ "icon": "media/icon.png",
13
+ "homepage": "https://github.com/eppen/luban#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/eppen/luban/issues"
16
+ },
17
+ "keywords": [
18
+ "ai",
19
+ "agent",
20
+ "chat",
21
+ "coding-agent",
22
+ "qwen",
23
+ "deepseek",
24
+ "openai-compatible",
25
+ "mcp"
26
+ ],
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/eppen/luban.git"
30
+ },
31
+ "engines": {
32
+ "vscode": "^1.104.0"
33
+ },
34
+ "categories": [
35
+ "AI",
36
+ "Chat",
37
+ "Programming Languages"
38
+ ],
39
+ "activationEvents": [
40
+ "onStartupFinished",
41
+ "onView:luban.chatView",
42
+ "onCommand:luban.focusView",
43
+ "onCommand:luban.browserPreview",
44
+ "onCommand:luban.markdownPreview"
45
+ ],
46
+ "main": "./dist/extension.js",
47
+ "bin": {
48
+ "luban": "dist/cli.js",
49
+ "luban-code": "dist/cli.js",
50
+ "luban-acp": "dist/acp.js"
51
+ },
52
+ "files": [
53
+ "dist/cli.js",
54
+ "dist/acp.js",
55
+ "dist/cli-plugin.js",
56
+ "dist/extension.js",
57
+ "registry/",
58
+ "package.json"
59
+ ],
60
+ "scripts": {
61
+ "build": "node scripts/build.js",
62
+ "watch": "node scripts/build.js --watch",
63
+ "package": "node scripts/build.js",
64
+ "vscode:prepublish": "node scripts/build.js",
65
+ "prepack": "node scripts/build.js",
66
+ "smoke": "node scripts/build.js && node scripts/smoke.js",
67
+ "test:review-autokeep": "node scripts/build.js && node scripts/test-review-autokeep.js",
68
+ "test:skills": "node scripts/test-skills.js",
69
+ "test:rules": "node scripts/test-rules.js",
70
+ "test:plugins": "node scripts/test-plugins.js",
71
+ "test:plugins-ext": "node scripts/test-plugins-ext.js",
72
+ "test:registry": "node scripts/test-registry-client.js",
73
+ "test:registry-skill": "node scripts/test-registry-skill.js",
74
+ "test:install": "node scripts/test-install-scripts.js",
75
+ "cli": "node cli.js",
76
+ "test:acp": "node scripts/test-acp.js",
77
+ "test:acp-pkg": "node scripts/test-acp-pkg.js",
78
+ "test:cli-resume": "node scripts/test-cli-resume.js",
79
+ "vsix": "node scripts/vsix.js",
80
+ "test:general": "node scripts/test-general-settings.js",
81
+ "test:provider-models": "node scripts/test-provider-models.js",
82
+ "test:hub": "node scripts/test-hub-tabs.js",
83
+ "test:hub-market": "node scripts/test-hub-market.js",
84
+ "test:market-ext": "node scripts/test-market-ext.js",
85
+ "test:sync-registry": "node scripts/test-sync-registry.js",
86
+ "test:i18n": "node scripts/test-i18n.js",
87
+ "test:css": "node scripts/test-css-vars.js",
88
+ "test:webdav": "node scripts/test-webdav.js",
89
+ "test:webdav-override": "node scripts/test-webdav-override.js",
90
+ "test:browser-events": "node scripts/test-browser-events.js",
91
+ "test:browser-tool": "node scripts/test-browser-tool.js",
92
+ "test:browser-launch": "node scripts/test-browser-launch.js",
93
+ "test:computer-linux": "node scripts/test-computer-linux.js",
94
+ "test:computer-linux-live": "node scripts/live-computer-linux.js",
95
+ "test:computer-tool": "node scripts/test-computer-tool.js",
96
+ "test:subagent": "node scripts/test-subagent-guards.js",
97
+ "test:lm-provider": "node scripts/test-lm-provider.js",
98
+ "test:agent-budget": "node scripts/test-agent-budget.js",
99
+ "test:gamepad": "node scripts/test-gamepad.js",
100
+ "test:status": "node scripts/test-status.js",
101
+ "test:avatar": "node scripts/test-avatar.js",
102
+ "test:cli-md": "node scripts/test-cli-md.js",
103
+ "test:mdpreview": "node scripts/test-mdpreview.js",
104
+ "test:mdpreview-live": "node scripts/live-mdpreview.js",
105
+ "test:cli-confirm": "node scripts/test-cli-confirm.js",
106
+ "test:cli-input": "node scripts/test-cli-input.js",
107
+ "test:token-audit": "node scripts/test-token-audit.js",
108
+ "test:think": "node scripts/test-think.js",
109
+ "test:webfetch-md": "node scripts/test-webfetch-md.js",
110
+ "test:tabs": "node scripts/test-workspace-tab-filter.js",
111
+ "test:status-live": "node scripts/live-status.js",
112
+ "test:review-freeze": "node scripts/live-review-freeze.js",
113
+ "test:review-focus": "node scripts/live-review-focus.js"
114
+ },
115
+ "capabilities": {
116
+ "untrustedWorkspaces": {
117
+ "supported": true
118
+ },
119
+ "virtualWorkspaces": true
120
+ },
121
+ "contributes": {
122
+ "commands": [
123
+ {
124
+ "command": "luban.focusView",
125
+ "title": "%cmdFocusView%",
126
+ "category": "Luban"
127
+ },
128
+ {
129
+ "command": "luban.openPanel",
130
+ "title": "%cmdOpenPanel%",
131
+ "category": "Luban"
132
+ },
133
+ {
134
+ "command": "luban.reloadConfig",
135
+ "title": "%cmdReloadConfig%",
136
+ "category": "Luban"
137
+ },
138
+ {
139
+ "command": "luban.providerSettings",
140
+ "title": "%cmdProviderSettings%",
141
+ "category": "Luban"
142
+ },
143
+ {
144
+ "command": "luban.dashboard",
145
+ "title": "%cmdDashboard%",
146
+ "category": "Luban"
147
+ },
148
+ {
149
+ "command": "luban.plugins",
150
+ "title": "%cmdPlugins%",
151
+ "category": "Luban"
152
+ },
153
+ {
154
+ "command": "luban.market",
155
+ "title": "%cmdMarket%",
156
+ "category": "Luban"
157
+ },
158
+ {
159
+ "command": "luban.rules.open",
160
+ "title": "%cmdOpenRules%",
161
+ "category": "Luban"
162
+ },
163
+ {
164
+ "command": "luban.agent",
165
+ "title": "%cmdAgent%",
166
+ "category": "Luban"
167
+ },
168
+ {
169
+ "command": "luban.openDiff",
170
+ "title": "%cmdOpenDiff%",
171
+ "category": "Luban"
172
+ },
173
+ {
174
+ "command": "luban.acceptHunk",
175
+ "title": "%cmdAcceptHunk%",
176
+ "category": "Luban"
177
+ },
178
+ {
179
+ "command": "luban.rejectHunk",
180
+ "title": "%cmdRejectHunk%",
181
+ "category": "Luban"
182
+ },
183
+ {
184
+ "command": "luban.acceptFile",
185
+ "title": "%cmdAcceptFile%",
186
+ "category": "Luban"
187
+ },
188
+ {
189
+ "command": "luban.rejectFile",
190
+ "title": "%cmdRejectFile%",
191
+ "category": "Luban"
192
+ },
193
+ {
194
+ "command": "luban.reviewAll",
195
+ "title": "%cmdReviewAll%",
196
+ "category": "Luban"
197
+ },
198
+ {
199
+ "command": "luban.revertAll",
200
+ "title": "%cmdRevertAll%",
201
+ "category": "Luban"
202
+ },
203
+ {
204
+ "command": "luban.newSession",
205
+ "title": "%cmdNewSession%",
206
+ "category": "Luban"
207
+ },
208
+ {
209
+ "command": "luban.sessionList",
210
+ "title": "%cmdSessionList%",
211
+ "category": "Luban"
212
+ },
213
+ {
214
+ "command": "luban.findInSession",
215
+ "title": "%cmdFindInSession%",
216
+ "category": "Luban"
217
+ },
218
+ {
219
+ "command": "luban.cursorPlan",
220
+ "title": "%cmdCursorPlan%",
221
+ "category": "Luban"
222
+ },
223
+ {
224
+ "command": "luban.mode.cycle",
225
+ "title": "%cmdModeCycle%",
226
+ "category": "Luban"
227
+ },
228
+ {
229
+ "command": "luban.addFileToChat",
230
+ "title": "%cmdAddFileToChat%",
231
+ "category": "Luban"
232
+ },
233
+ {
234
+ "command": "luban.addFolderToChat",
235
+ "title": "%cmdAddFolderToChat%",
236
+ "category": "Luban"
237
+ },
238
+ {
239
+ "command": "luban.addFileToNewChat",
240
+ "title": "%cmdAddFileToNewChat%",
241
+ "category": "Luban"
242
+ },
243
+ {
244
+ "command": "luban.addFolderToNewChat",
245
+ "title": "%cmdAddFolderToNewChat%",
246
+ "category": "Luban"
247
+ },
248
+ {
249
+ "command": "luban.addSelectionToChat",
250
+ "title": "%cmdAddSelectionToChat%",
251
+ "category": "Luban"
252
+ },
253
+ {
254
+ "command": "luban.addSelectionToNewChat",
255
+ "title": "%cmdAddSelectionToNewChat%",
256
+ "category": "Luban"
257
+ },
258
+ {
259
+ "command": "luban.inlineCompletion.toggle",
260
+ "title": "%cmdInlineToggle%",
261
+ "category": "Luban"
262
+ },
263
+ {
264
+ "command": "luban.diffAccept",
265
+ "title": "%cmdDiffAccept%",
266
+ "category": "Luban"
267
+ },
268
+ {
269
+ "command": "luban.diffReject",
270
+ "title": "%cmdDiffReject%",
271
+ "category": "Luban"
272
+ },
273
+ {
274
+ "command": "luban.openInBrowser",
275
+ "title": "%cmdOpenInBrowser%",
276
+ "category": "Luban"
277
+ },
278
+ {
279
+ "command": "luban.browserCheck",
280
+ "title": "%cmdBrowserCheck%",
281
+ "category": "Luban"
282
+ },
283
+ {
284
+ "command": "luban.browserPreview",
285
+ "title": "%cmdBrowserPreview%",
286
+ "category": "Luban"
287
+ },
288
+ {
289
+ "command": "luban.markdownPreview",
290
+ "title": "%cmdMarkdownPreview%",
291
+ "category": "Luban"
292
+ }
293
+ ],
294
+ "menus": {
295
+ "editor/title": [
296
+ {
297
+ "command": "luban.diffAccept",
298
+ "when": "isInDiffEditor && luban.reviewDiffActive && luban.pendingReview > 0",
299
+ "group": "navigation@1"
300
+ },
301
+ {
302
+ "command": "luban.diffReject",
303
+ "when": "isInDiffEditor && luban.reviewDiffActive && luban.pendingReview > 0",
304
+ "group": "navigation@2"
305
+ },
306
+ {
307
+ "command": "luban.markdownPreview",
308
+ "when": "resourceLangId == markdown",
309
+ "group": "navigation@3",
310
+ "icon": "$(preview)"
311
+ }
312
+ ],
313
+ "explorer/context": [
314
+ {
315
+ "command": "luban.addFileToChat",
316
+ "when": "!explorerResourceIsFolder && resourceScheme == file",
317
+ "group": "1_luban@1"
318
+ },
319
+ {
320
+ "command": "luban.addFolderToChat",
321
+ "when": "explorerResourceIsFolder && resourceScheme == file",
322
+ "group": "1_luban@2"
323
+ },
324
+ {
325
+ "command": "luban.addFileToNewChat",
326
+ "when": "!explorerResourceIsFolder && resourceScheme == file",
327
+ "group": "1_luban@3"
328
+ },
329
+ {
330
+ "command": "luban.addFolderToNewChat",
331
+ "when": "explorerResourceIsFolder && resourceScheme == file",
332
+ "group": "1_luban@4"
333
+ }
334
+ ],
335
+ "editor/context": [
336
+ {
337
+ "command": "luban.addSelectionToChat",
338
+ "when": "editorHasSelection && resourceScheme == file",
339
+ "group": "1_luban@0"
340
+ },
341
+ {
342
+ "command": "luban.addSelectionToNewChat",
343
+ "when": "editorHasSelection && resourceScheme == file",
344
+ "group": "1_luban@1"
345
+ }
346
+ ],
347
+ "webview/context": [
348
+ {
349
+ "command": "luban.openInBrowser",
350
+ "when": "webviewSection == 'chat'"
351
+ }
352
+ ],
353
+ "commandPalette": [
354
+ {
355
+ "command": "luban.diffAccept",
356
+ "when": "luban.pendingReview > 0"
357
+ },
358
+ {
359
+ "command": "luban.diffReject",
360
+ "when": "luban.pendingReview > 0"
361
+ },
362
+ {
363
+ "command": "luban.addFileToChat",
364
+ "when": "false"
365
+ },
366
+ {
367
+ "command": "luban.addFolderToChat",
368
+ "when": "false"
369
+ },
370
+ {
371
+ "command": "luban.addFileToNewChat",
372
+ "when": "false"
373
+ },
374
+ {
375
+ "command": "luban.addFolderToNewChat",
376
+ "when": "false"
377
+ },
378
+ {
379
+ "command": "luban.addSelectionToChat",
380
+ "when": "editorHasSelection"
381
+ },
382
+ {
383
+ "command": "luban.addSelectionToNewChat",
384
+ "when": "editorHasSelection"
385
+ },
386
+ {
387
+ "command": "luban.openInBrowser",
388
+ "when": "false"
389
+ }
390
+ ]
391
+ },
392
+ "keybindings": [
393
+ {
394
+ "command": "luban.focusView",
395
+ "key": "cmd+shift+l",
396
+ "mac": "cmd+shift+l",
397
+ "win": "ctrl+shift+l",
398
+ "linux": "ctrl+shift+l"
399
+ },
400
+ {
401
+ "command": "luban.newSession",
402
+ "key": "cmd+alt+n",
403
+ "mac": "cmd+alt+n",
404
+ "win": "ctrl+alt+n",
405
+ "linux": "ctrl+alt+n"
406
+ },
407
+ {
408
+ "command": "luban.sessionList",
409
+ "key": "cmd+alt+h",
410
+ "mac": "cmd+alt+h",
411
+ "win": "ctrl+alt+h",
412
+ "linux": "ctrl+alt+h"
413
+ },
414
+ {
415
+ "command": "luban.mode.cycle",
416
+ "key": "shift+tab",
417
+ "mac": "shift+tab",
418
+ "win": "shift+tab",
419
+ "linux": "shift+tab",
420
+ "when": "focusedView == 'luban.chatView'"
421
+ },
422
+ {
423
+ "command": "luban.findInSession",
424
+ "key": "cmd+f",
425
+ "mac": "cmd+f",
426
+ "win": "ctrl+f",
427
+ "linux": "ctrl+f",
428
+ "when": "focusedView == 'luban.chatView'"
429
+ },
430
+ {
431
+ "command": "luban.findInSession",
432
+ "key": "cmd+f",
433
+ "mac": "cmd+f",
434
+ "win": "ctrl+f",
435
+ "linux": "ctrl+f",
436
+ "when": "activeWebviewPanelId == 'luban'"
437
+ },
438
+ {
439
+ "command": "luban.addSelectionToChat",
440
+ "key": "cmd+alt+a",
441
+ "mac": "cmd+alt+a",
442
+ "win": "ctrl+alt+a",
443
+ "linux": "ctrl+alt+a",
444
+ "when": "editorHasSelection && editorTextFocus"
445
+ }
446
+ ],
447
+ "viewsContainers": {
448
+ "activitybar": [
449
+ {
450
+ "id": "luban",
451
+ "title": "Luban",
452
+ "icon": "media/icon.svg"
453
+ }
454
+ ]
455
+ },
456
+ "views": {
457
+ "luban": [
458
+ {
459
+ "type": "webview",
460
+ "id": "luban.chatView",
461
+ "name": "Chat",
462
+ "contextualTitle": "Luban",
463
+ "icon": "media/icon.svg"
464
+ }
465
+ ]
466
+ },
467
+ "languageModelChatProviders": [
468
+ {
469
+ "vendor": "luban",
470
+ "displayName": "Luban",
471
+ "icon": "media/icon.png",
472
+ "managementCommand": "luban.providerSettings"
473
+ }
474
+ ],
475
+ "configuration": {
476
+ "title": "Luban",
477
+ "properties": {
478
+ "luban.language": {
479
+ "type": "string",
480
+ "enum": [
481
+ "auto",
482
+ "en",
483
+ "zh-cn",
484
+ "ja"
485
+ ],
486
+ "enumDescriptions": [
487
+ "%cfgLanguageAuto%",
488
+ "%cfgLanguageEn%",
489
+ "%cfgLanguageZhCn%",
490
+ "%cfgLanguageJa%"
491
+ ],
492
+ "default": "auto",
493
+ "description": "%cfgLanguage%"
494
+ },
495
+ "luban.autoOpen": {
496
+ "type": "boolean",
497
+ "default": true,
498
+ "description": "%cfgAutoOpen%"
499
+ },
500
+ "luban.context.autoFile": {
501
+ "type": "boolean",
502
+ "default": true,
503
+ "description": "%cfgContextAutoFile%"
504
+ },
505
+ "luban.context.autoFileMaxChars": {
506
+ "type": "number",
507
+ "default": 8000,
508
+ "minimum": 500,
509
+ "description": "%cfgContextAutoFileMaxChars%"
510
+ },
511
+ "luban.context.autoFileWindowLines": {
512
+ "type": "number",
513
+ "default": 200,
514
+ "minimum": 40,
515
+ "description": "%cfgContextAutoFileWindowLines%"
516
+ },
517
+ "luban.context.workset": {
518
+ "type": "boolean",
519
+ "default": true,
520
+ "description": "%cfgContextWorkset%"
521
+ },
522
+ "luban.sessionHistory.max": {
523
+ "type": "number",
524
+ "default": 50,
525
+ "minimum": 1,
526
+ "description": "%cfgSessionHistoryMax%"
527
+ },
528
+ "luban.usage.record": {
529
+ "type": "boolean",
530
+ "default": true,
531
+ "description": "%cfgUsageRecord%"
532
+ },
533
+ "luban.sessionMemory.enabled": {
534
+ "type": "boolean",
535
+ "default": true,
536
+ "description": "%cfgSessionMemoryEnabled%"
537
+ },
538
+ "luban.sessionMemory.maxTurns": {
539
+ "type": "number",
540
+ "default": 8,
541
+ "minimum": 1,
542
+ "description": "%cfgSessionMemoryMaxTurns%"
543
+ },
544
+ "luban.sessionMemory.maxChars": {
545
+ "type": "number",
546
+ "default": 12000,
547
+ "minimum": 1000,
548
+ "description": "%cfgSessionMemoryMaxChars%"
549
+ },
550
+ "luban.agent.maxRounds": {
551
+ "type": "number",
552
+ "default": 200,
553
+ "minimum": 0,
554
+ "description": "%cfgAgentMaxRounds%"
555
+ },
556
+ "luban.agent.maxMinutes": {
557
+ "type": "number",
558
+ "default": 30,
559
+ "minimum": 1,
560
+ "description": "%cfgAgentMaxMinutes%"
561
+ },
562
+ "luban.agent.noWriteNudges": {
563
+ "type": "number",
564
+ "default": 2,
565
+ "minimum": 0,
566
+ "description": "%cfgAgentNoWriteNudges%"
567
+ },
568
+ "luban.agent.subagentRounds": {
569
+ "type": "number",
570
+ "default": 24,
571
+ "minimum": 0,
572
+ "description": "%cfgAgentSubagentRounds%"
573
+ },
574
+ "luban.agent.subagentMinutes": {
575
+ "type": "number",
576
+ "default": 0,
577
+ "minimum": 0,
578
+ "description": "%cfgAgentSubagentMinutes%"
579
+ },
580
+ "luban.agent.smallWindow": {
581
+ "type": "string",
582
+ "enum": [
583
+ "auto",
584
+ "on",
585
+ "off"
586
+ ],
587
+ "default": "auto",
588
+ "description": "%cfgAgentSmallWindow%"
589
+ },
590
+ "luban.agent.verbosity": {
591
+ "type": "string",
592
+ "enum": [
593
+ "concise",
594
+ "normal",
595
+ "detailed"
596
+ ],
597
+ "default": "normal",
598
+ "description": "%cfgAgentVerbosity%"
599
+ },
600
+ "luban.search.maxFiles": {
601
+ "type": "number",
602
+ "default": 5000,
603
+ "minimum": 100,
604
+ "description": "%cfgSearchMaxFiles%"
605
+ },
606
+ "luban.net.tlsMaxVersion": {
607
+ "type": "string",
608
+ "enum": [
609
+ "auto",
610
+ "1.2"
611
+ ],
612
+ "enumDescriptions": [
613
+ "%cfgNetTlsMaxVersionAuto%",
614
+ "%cfgNetTlsMaxVersion12%"
615
+ ],
616
+ "default": "auto",
617
+ "description": "%cfgNetTlsMaxVersion%"
618
+ },
619
+ "luban.browser.enabled": {
620
+ "type": "boolean",
621
+ "default": false,
622
+ "description": "%cfgBrowserEnabled%"
623
+ },
624
+ "luban.browser.chromePath": {
625
+ "type": "string",
626
+ "default": "",
627
+ "description": "%cfgBrowserChromePath%"
628
+ },
629
+ "luban.browser.headless": {
630
+ "type": "boolean",
631
+ "default": true,
632
+ "description": "%cfgBrowserHeadless%"
633
+ },
634
+ "luban.browser.viewportWidth": {
635
+ "type": "number",
636
+ "default": 1280,
637
+ "minimum": 320,
638
+ "maximum": 4096,
639
+ "description": "%cfgBrowserViewportWidth%"
640
+ },
641
+ "luban.browser.viewportHeight": {
642
+ "type": "number",
643
+ "default": 800,
644
+ "minimum": 240,
645
+ "maximum": 4096,
646
+ "description": "%cfgBrowserViewportHeight%"
647
+ },
648
+ "luban.browser.idleTimeoutMs": {
649
+ "type": "number",
650
+ "default": 300000,
651
+ "minimum": 10000,
652
+ "description": "%cfgBrowserIdleTimeout%"
653
+ },
654
+ "luban.browser.confirm": {
655
+ "type": "boolean",
656
+ "default": true,
657
+ "description": "%cfgBrowserConfirm%"
658
+ },
659
+ "luban.browser.preview": {
660
+ "type": "boolean",
661
+ "default": false,
662
+ "description": "%cfgBrowserPreview%"
663
+ },
664
+ "luban.computer.enabled": {
665
+ "type": "boolean",
666
+ "default": false,
667
+ "description": "%cfgComputerEnabled%"
668
+ },
669
+ "luban.computer.confirm": {
670
+ "type": "boolean",
671
+ "default": true,
672
+ "description": "%cfgComputerConfirm%"
673
+ },
674
+ "luban.computer.screenshotWidth": {
675
+ "type": "number",
676
+ "default": 2048,
677
+ "minimum": 320,
678
+ "maximum": 4096,
679
+ "description": "%cfgComputerScreenshotWidth%"
680
+ },
681
+ "luban.plugins.enabled": {
682
+ "type": "boolean",
683
+ "default": false,
684
+ "description": "%cfgPluginsEnabled%"
685
+ },
686
+ "luban.plugins.maxTools": {
687
+ "type": "number",
688
+ "default": 30,
689
+ "minimum": 1,
690
+ "maximum": 200,
691
+ "description": "%cfgPluginsMaxTools%"
692
+ },
693
+ "luban.plan.strictReadOnly": {
694
+ "type": "boolean",
695
+ "default": true,
696
+ "description": "%cfgPlanStrictReadOnly%"
697
+ },
698
+ "luban.fs.allowOutsideWorkspace": {
699
+ "type": "boolean",
700
+ "default": true,
701
+ "description": "%cfgFsAllowOutsideWorkspace%"
702
+ },
703
+ "luban.review.autoOpenDiff": {
704
+ "type": "boolean",
705
+ "default": true,
706
+ "description": "%cfgReviewAutoOpenDiff%"
707
+ },
708
+ "luban.review.autoKeep": {
709
+ "type": "boolean",
710
+ "default": false,
711
+ "description": "%cfgReviewAutoKeep%"
712
+ },
713
+ "luban.diagnostics.afterEdit": {
714
+ "type": "boolean",
715
+ "default": true,
716
+ "description": "%cfgDiagAfterEdit%"
717
+ },
718
+ "luban.inlineCompletion.enabled": {
719
+ "type": "boolean",
720
+ "default": false,
721
+ "description": "%cfgInlineEnabled%"
722
+ },
723
+ "luban.inlineCompletion.maxPerMinute": {
724
+ "type": "number",
725
+ "default": 30,
726
+ "minimum": 1,
727
+ "description": "%cfgInlineMaxPerMinute%"
728
+ },
729
+ "luban.inlineCompletion.debounceMs": {
730
+ "type": "number",
731
+ "default": 250,
732
+ "minimum": 0,
733
+ "description": "%cfgInlineDebounceMs%"
734
+ },
735
+ "luban.statusBar.enabled": {
736
+ "type": "boolean",
737
+ "default": true,
738
+ "description": "%cfgStatusBarEnabled%"
739
+ },
740
+ "luban.rules.enabled": {
741
+ "type": "boolean",
742
+ "default": true,
743
+ "description": "%cfgRulesEnabled%"
744
+ },
745
+ "luban.rules.maxChars": {
746
+ "type": "number",
747
+ "default": 12000,
748
+ "minimum": 1000,
749
+ "description": "%cfgRulesMaxChars%"
750
+ },
751
+ "luban.rules.indexMaxChars": {
752
+ "type": "number",
753
+ "default": 2000,
754
+ "minimum": 200,
755
+ "description": "%cfgRulesIndexMaxChars%"
756
+ }
757
+ }
758
+ }
759
+ },
760
+ "devDependencies": {
761
+ "esbuild": "^0.25.0"
762
+ },
763
+ "dependencies": {
764
+ "@clack/prompts": "^1.8.1",
765
+ "picocolors": "^1.1.1"
766
+ }
767
+ }