@davait/aipictury 1.9.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.
Files changed (54) hide show
  1. package/LICENSE.md +77 -0
  2. package/README.md +39 -0
  3. package/ext/about.js +209 -0
  4. package/ext/account.js +242 -0
  5. package/ext/accountUi.js +287 -0
  6. package/ext/agent.js +1929 -0
  7. package/ext/browser.js +263 -0
  8. package/ext/cloud.js +385 -0
  9. package/ext/context.js +241 -0
  10. package/ext/deps.js +142 -0
  11. package/ext/dialogs.js +803 -0
  12. package/ext/diff.js +150 -0
  13. package/ext/extension.js +2483 -0
  14. package/ext/feedback.js +55 -0
  15. package/ext/files.js +565 -0
  16. package/ext/firestore.js +131 -0
  17. package/ext/gpuRun.js +77 -0
  18. package/ext/gpuServer.js +76 -0
  19. package/ext/hooks.js +153 -0
  20. package/ext/log.js +29 -0
  21. package/ext/lsp.js +122 -0
  22. package/ext/mcp.js +469 -0
  23. package/ext/mcpAuth.js +128 -0
  24. package/ext/media/vendor/firebase-config.json +9 -0
  25. package/ext/media/vendor/signin.js +1 -0
  26. package/ext/mediagen.js +174 -0
  27. package/ext/memory.js +117 -0
  28. package/ext/notebook.js +82 -0
  29. package/ext/package.json +1234 -0
  30. package/ext/paths.js +50 -0
  31. package/ext/permissions.js +229 -0
  32. package/ext/plans.js +110 -0
  33. package/ext/plugins.js +243 -0
  34. package/ext/prefs.js +157 -0
  35. package/ext/remote.js +170 -0
  36. package/ext/review.js +126 -0
  37. package/ext/sandbox.js +79 -0
  38. package/ext/scheduler.js +87 -0
  39. package/ext/sessions.js +228 -0
  40. package/ext/sessionsView.js +449 -0
  41. package/ext/shell.js +357 -0
  42. package/ext/storage.js +80 -0
  43. package/ext/tasklist.js +112 -0
  44. package/ext/text.js +31 -0
  45. package/ext/tools.js +781 -0
  46. package/ext/usage.js +77 -0
  47. package/ext/voice.js +135 -0
  48. package/ext/workbench.js +162 -0
  49. package/ext/workflow.js +51 -0
  50. package/ext/worktree.js +83 -0
  51. package/main.js +758 -0
  52. package/package.json +43 -0
  53. package/terminal.js +124 -0
  54. package/vscode-shim.js +231 -0
@@ -0,0 +1,1234 @@
1
+ {
2
+ "name": "aipictury",
3
+ "displayName": "AIPictury",
4
+ "description": "A coding agent and a generation studio running on your own GPU, with uncensored local models.",
5
+ "version": "1.9.2",
6
+ "publisher": "aipictury",
7
+ "license": "SEE LICENSE IN LICENSE.md",
8
+ "engines": {
9
+ "vscode": "^1.95.0"
10
+ },
11
+ "categories": [
12
+ "AI",
13
+ "Chat",
14
+ "Programming Languages",
15
+ "Other"
16
+ ],
17
+ "main": "./extension.js",
18
+ "activationEvents": [
19
+ "onStartupFinished",
20
+ "onWebviewPanel:aipictury.agentTab",
21
+ "onUri"
22
+ ],
23
+ "contributes": {
24
+ "viewsContainers": {
25
+ "secondarySidebar": [
26
+ {
27
+ "id": "aipictury",
28
+ "title": "AIPictury",
29
+ "icon": "media/icon.svg"
30
+ }
31
+ ],
32
+ "activitybar": [
33
+ {
34
+ "id": "aipictury-sessions",
35
+ "title": "AIPictury Sessions",
36
+ "icon": "media/icon.svg"
37
+ }
38
+ ]
39
+ },
40
+ "views": {
41
+ "aipictury": [
42
+ {
43
+ "id": "aipictury.agent",
44
+ "name": "Agent",
45
+ "type": "webview"
46
+ }
47
+ ],
48
+ "aipictury-sessions": [
49
+ {
50
+ "id": "aipictury.sessions",
51
+ "name": "Sessions",
52
+ "type": "tree",
53
+ "icon": "media/icon.svg"
54
+ }
55
+ ]
56
+ },
57
+ "commands": [
58
+ {
59
+ "command": "aipictury.openStudio",
60
+ "title": "Open Studio in a Tab",
61
+ "category": "AIPictury",
62
+ "icon": "$(device-camera)"
63
+ },
64
+ {
65
+ "command": "aipictury.newChat",
66
+ "title": "New Agent Conversation",
67
+ "category": "AIPictury",
68
+ "icon": "$(add)"
69
+ },
70
+ {
71
+ "command": "aipictury.explainSelection",
72
+ "title": "Explain Selection",
73
+ "category": "AIPictury"
74
+ },
75
+ {
76
+ "command": "aipictury.refactorSelection",
77
+ "title": "Refactor Selection",
78
+ "category": "AIPictury"
79
+ },
80
+ {
81
+ "command": "aipictury.writeTests",
82
+ "title": "Write Tests for Selection",
83
+ "category": "AIPictury"
84
+ },
85
+ {
86
+ "command": "aipictury.commitMessage",
87
+ "title": "Write a Commit Message",
88
+ "category": "AIPictury",
89
+ "icon": "$(sparkle)"
90
+ },
91
+ {
92
+ "command": "aipictury.setServer",
93
+ "title": "Set Server Address",
94
+ "category": "AIPictury"
95
+ },
96
+ {
97
+ "command": "aipictury.openSettings",
98
+ "title": "Configure Models (opens AIPictury Settings)",
99
+ "category": "AIPictury",
100
+ "icon": "$(gear)"
101
+ },
102
+ {
103
+ "command": "aipictury.history",
104
+ "title": "History",
105
+ "category": "AIPictury",
106
+ "icon": "$(history)"
107
+ },
108
+ {
109
+ "command": "aipictury.help",
110
+ "title": "About AIPictury agent",
111
+ "category": "AIPictury",
112
+ "icon": "$(info)"
113
+ },
114
+ {
115
+ "command": "aipictury.memory",
116
+ "title": "Memory (rules the agent follows)",
117
+ "category": "AIPictury",
118
+ "icon": "$(book)"
119
+ },
120
+ {
121
+ "command": "aipictury.openInNewTab",
122
+ "title": "Open Agent in New Tab",
123
+ "category": "AIPictury",
124
+ "icon": "$(sparkle)"
125
+ },
126
+ {
127
+ "command": "aipictury.focusInput",
128
+ "title": "Focus Input (toggle between the editor and the agent)",
129
+ "category": "AIPictury"
130
+ },
131
+ {
132
+ "command": "aipictury.insertMention",
133
+ "title": "Insert @-Mention of the Selection",
134
+ "category": "AIPictury"
135
+ },
136
+ {
137
+ "command": "aipictury.signIn",
138
+ "title": "Sign In",
139
+ "category": "AIPictury",
140
+ "icon": "$(account)"
141
+ },
142
+ {
143
+ "command": "aipictury.signOut",
144
+ "title": "Sign Out",
145
+ "category": "AIPictury",
146
+ "enablement": "aipictury.signedIn"
147
+ },
148
+ {
149
+ "command": "aipictury.account",
150
+ "title": "Account",
151
+ "category": "AIPictury",
152
+ "icon": "$(account)"
153
+ },
154
+ {
155
+ "command": "aipictury.dictate",
156
+ "title": "Dictate (start or stop)",
157
+ "category": "AIPictury",
158
+ "icon": "$(mic)"
159
+ },
160
+ {
161
+ "command": "aipictury.remoteControl",
162
+ "title": "Remote Control (carry this conversation on from a browser or a phone)",
163
+ "category": "AIPictury",
164
+ "icon": "$(remote)"
165
+ },
166
+ {
167
+ "command": "aipictury.rewind",
168
+ "title": "Rewind (restore code or conversation to an earlier message)",
169
+ "category": "AIPictury"
170
+ },
171
+ {
172
+ "command": "aipictury.exportConversation",
173
+ "title": "Export Conversation",
174
+ "category": "AIPictury"
175
+ },
176
+ {
177
+ "command": "aipictury.status",
178
+ "title": "Status",
179
+ "category": "AIPictury"
180
+ },
181
+ {
182
+ "command": "aipictury.showTasks",
183
+ "title": "Background Tasks",
184
+ "category": "AIPictury"
185
+ },
186
+ {
187
+ "command": "aipictury.renameConversation",
188
+ "title": "Rename Conversation",
189
+ "category": "AIPictury"
190
+ },
191
+ {
192
+ "command": "aipictury.toggleFocusView",
193
+ "title": "Toggle Focus View",
194
+ "category": "AIPictury"
195
+ },
196
+ {
197
+ "command": "aipictury.showLogs",
198
+ "title": "Show Logs",
199
+ "category": "AIPictury"
200
+ },
201
+ {
202
+ "command": "aipictury.openInSideBar",
203
+ "title": "Open in Side Bar",
204
+ "category": "AIPictury"
205
+ },
206
+ {
207
+ "command": "aipictury.newConversation",
208
+ "title": "New Conversation",
209
+ "category": "AIPictury"
210
+ },
211
+ {
212
+ "command": "aipictury.reopenClosedSession",
213
+ "title": "Reopen Closed Session",
214
+ "category": "AIPictury"
215
+ },
216
+ {
217
+ "command": "aipictury.markUnread",
218
+ "title": "Mark Conversation as Unread",
219
+ "category": "AIPictury"
220
+ },
221
+ {
222
+ "command": "aipictury.focusLastMessage",
223
+ "title": "Focus Last Message",
224
+ "category": "AIPictury"
225
+ },
226
+ {
227
+ "command": "aipictury.slashCommands",
228
+ "title": "Slash Commands…",
229
+ "category": "AIPictury"
230
+ },
231
+ {
232
+ "command": "aipictury.instructions",
233
+ "title": "Instructions (AIPICTURY.md, CLAUDE.md, AGENTS.md)",
234
+ "category": "AIPictury"
235
+ },
236
+ {
237
+ "command": "aipictury.reportProblem",
238
+ "title": "Report a Problem",
239
+ "category": "AIPictury"
240
+ },
241
+ {
242
+ "command": "aipictury.sessions.open",
243
+ "title": "Open",
244
+ "category": "AIPictury Sessions"
245
+ },
246
+ {
247
+ "command": "aipictury.sessions.openInTab",
248
+ "title": "Open in New Tab",
249
+ "category": "AIPictury Sessions",
250
+ "icon": "$(link-external)"
251
+ },
252
+ {
253
+ "command": "aipictury.sessions.openInNewWindow",
254
+ "title": "Open in New Window",
255
+ "category": "AIPictury Sessions",
256
+ "icon": "$(empty-window)"
257
+ },
258
+ {
259
+ "command": "aipictury.sessions.rename",
260
+ "title": "Rename…",
261
+ "category": "AIPictury Sessions",
262
+ "icon": "$(edit)"
263
+ },
264
+ {
265
+ "command": "aipictury.sessions.delete",
266
+ "title": "Delete",
267
+ "category": "AIPictury Sessions",
268
+ "icon": "$(trash)"
269
+ },
270
+ {
271
+ "command": "aipictury.sessions.archive",
272
+ "title": "Archive",
273
+ "category": "AIPictury Sessions",
274
+ "icon": "$(archive)"
275
+ },
276
+ {
277
+ "command": "aipictury.sessions.unarchive",
278
+ "title": "Unarchive",
279
+ "category": "AIPictury Sessions",
280
+ "icon": "$(inbox)"
281
+ },
282
+ {
283
+ "command": "aipictury.sessions.unarchiveAll",
284
+ "title": "Unarchive All",
285
+ "category": "AIPictury Sessions",
286
+ "icon": "$(inbox)"
287
+ },
288
+ {
289
+ "command": "aipictury.sessions.markUnread",
290
+ "title": "Mark as Unread",
291
+ "category": "AIPictury Sessions",
292
+ "icon": "$(circle-filled)"
293
+ },
294
+ {
295
+ "command": "aipictury.sessions.markRead",
296
+ "title": "Mark as Read",
297
+ "category": "AIPictury Sessions",
298
+ "icon": "$(circle-outline)"
299
+ },
300
+ {
301
+ "command": "aipictury.sessions.moveToGroup",
302
+ "title": "Move to Group…",
303
+ "category": "AIPictury Sessions",
304
+ "icon": "$(folder)"
305
+ },
306
+ {
307
+ "command": "aipictury.sessions.removeFromGroup",
308
+ "title": "Remove from Group",
309
+ "category": "AIPictury Sessions",
310
+ "icon": "$(close)"
311
+ },
312
+ {
313
+ "command": "aipictury.sessions.newGroup",
314
+ "title": "New Group…",
315
+ "category": "AIPictury Sessions",
316
+ "icon": "$(new-folder)"
317
+ },
318
+ {
319
+ "command": "aipictury.sessions.renameGroup",
320
+ "title": "Rename Group…",
321
+ "category": "AIPictury Sessions",
322
+ "icon": "$(edit)"
323
+ },
324
+ {
325
+ "command": "aipictury.sessions.deleteGroup",
326
+ "title": "Delete Group",
327
+ "category": "AIPictury Sessions",
328
+ "icon": "$(trash)"
329
+ },
330
+ {
331
+ "command": "aipictury.sessions.addToGroup",
332
+ "title": "Add Session Tab to Group…",
333
+ "category": "AIPictury Sessions",
334
+ "icon": "$(folder)"
335
+ },
336
+ {
337
+ "command": "aipictury.sessions.search",
338
+ "title": "Search…",
339
+ "category": "AIPictury Sessions",
340
+ "icon": "$(search)"
341
+ },
342
+ {
343
+ "command": "aipictury.sessions.filter",
344
+ "title": "Filter…",
345
+ "category": "AIPictury Sessions",
346
+ "icon": "$(filter)"
347
+ },
348
+ {
349
+ "command": "aipictury.sessions.clearFilter",
350
+ "title": "Clear Filter",
351
+ "category": "AIPictury Sessions",
352
+ "icon": "$(clear-all)"
353
+ },
354
+ {
355
+ "command": "aipictury.sessions.refresh",
356
+ "title": "Refresh",
357
+ "category": "AIPictury Sessions",
358
+ "icon": "$(refresh)"
359
+ },
360
+ {
361
+ "command": "aipictury.sessions.continueWeb",
362
+ "title": "Continue in VS Code",
363
+ "category": "AIPictury Sessions",
364
+ "icon": "$(arrow-right)"
365
+ },
366
+ {
367
+ "command": "aipictury.sessions.openCloud",
368
+ "title": "Open Here",
369
+ "category": "AIPictury",
370
+ "icon": "$(cloud-download)"
371
+ },
372
+ {
373
+ "command": "aipictury.openWalkthrough",
374
+ "title": "Open Walkthrough",
375
+ "category": "AIPictury"
376
+ },
377
+ {
378
+ "command": "aipictury.permissions",
379
+ "title": "Permissions",
380
+ "category": "AIPictury"
381
+ },
382
+ {
383
+ "command": "aipictury.hooks",
384
+ "title": "Hooks",
385
+ "category": "AIPictury"
386
+ },
387
+ {
388
+ "command": "aipictury.sandbox",
389
+ "title": "Sandbox",
390
+ "category": "AIPictury"
391
+ },
392
+ {
393
+ "command": "aipictury.review.apply",
394
+ "title": "Accept and Apply the Proposal",
395
+ "category": "AIPictury",
396
+ "icon": "$(check)"
397
+ },
398
+ {
399
+ "command": "aipictury.review.reject",
400
+ "title": "Reject the Proposal",
401
+ "category": "AIPictury",
402
+ "icon": "$(close)"
403
+ },
404
+ {
405
+ "command": "aipictury.review.undoChange",
406
+ "title": "Undo This Change",
407
+ "category": "AIPictury",
408
+ "icon": "$(discard)"
409
+ },
410
+ {
411
+ "command": "aipictury.review.keepChange",
412
+ "title": "Keep This Change",
413
+ "category": "AIPictury",
414
+ "icon": "$(check)"
415
+ },
416
+ {
417
+ "command": "aipictury.plan.open",
418
+ "title": "Open the Plan as a Document",
419
+ "category": "AIPictury",
420
+ "icon": "$(go-to-file)"
421
+ },
422
+ {
423
+ "command": "aipictury.plan.approve",
424
+ "title": "Approve the Plan",
425
+ "category": "AIPictury",
426
+ "icon": "$(check)"
427
+ },
428
+ {
429
+ "command": "aipictury.plan.revise",
430
+ "title": "Send the Plan Back with My Comments",
431
+ "category": "AIPictury",
432
+ "icon": "$(comment-discussion)"
433
+ },
434
+ {
435
+ "command": "aipictury.plan.addNote",
436
+ "title": "Add Comment",
437
+ "category": "AIPictury"
438
+ },
439
+ {
440
+ "command": "aipictury.plan.deleteNote",
441
+ "title": "Delete Comment",
442
+ "category": "AIPictury",
443
+ "icon": "$(trash)"
444
+ },
445
+ {
446
+ "command": "aipictury.skills",
447
+ "title": "Skills",
448
+ "category": "AIPictury"
449
+ },
450
+ {
451
+ "command": "aipictury.outputStyle",
452
+ "title": "Output Style",
453
+ "category": "AIPictury"
454
+ },
455
+ {
456
+ "command": "aipictury.plugins",
457
+ "title": "Plugins",
458
+ "category": "AIPictury"
459
+ },
460
+ {
461
+ "command": "aipictury.agents",
462
+ "title": "Agents",
463
+ "category": "AIPictury"
464
+ },
465
+ {
466
+ "command": "aipictury.pages",
467
+ "title": "Published Pages",
468
+ "category": "AIPictury"
469
+ }
470
+ ],
471
+ "menus": {
472
+ "view/title": [
473
+ {
474
+ "command": "aipictury.help",
475
+ "when": "view == aipictury.agent",
476
+ "group": "navigation@1"
477
+ },
478
+ {
479
+ "command": "aipictury.history",
480
+ "when": "view == aipictury.agent",
481
+ "group": "navigation@2"
482
+ },
483
+ {
484
+ "command": "aipictury.newChat",
485
+ "when": "view == aipictury.agent",
486
+ "group": "navigation@3"
487
+ },
488
+ {
489
+ "command": "aipictury.openStudio",
490
+ "when": "view == aipictury.agent",
491
+ "group": "1_more@1"
492
+ },
493
+ {
494
+ "command": "aipictury.openSettings",
495
+ "when": "view == aipictury.agent",
496
+ "group": "1_more@2"
497
+ },
498
+ {
499
+ "command": "aipictury.setServer",
500
+ "when": "view == aipictury.agent",
501
+ "group": "1_more@3"
502
+ },
503
+ {
504
+ "command": "aipictury.memory",
505
+ "when": "view == aipictury.agent",
506
+ "group": "1_more@0"
507
+ },
508
+ {
509
+ "command": "aipictury.openInNewTab",
510
+ "when": "view == aipictury.agent",
511
+ "group": "1_more@4"
512
+ },
513
+ {
514
+ "command": "aipictury.rewind",
515
+ "when": "view == aipictury.agent",
516
+ "group": "1_more@5"
517
+ },
518
+ {
519
+ "command": "aipictury.exportConversation",
520
+ "when": "view == aipictury.agent",
521
+ "group": "1_more@6"
522
+ },
523
+ {
524
+ "command": "aipictury.sessions.search",
525
+ "when": "view == aipictury.sessions",
526
+ "group": "navigation@1"
527
+ },
528
+ {
529
+ "command": "aipictury.sessions.filter",
530
+ "when": "view == aipictury.sessions",
531
+ "group": "navigation@2"
532
+ },
533
+ {
534
+ "command": "aipictury.sessions.clearFilter",
535
+ "when": "view == aipictury.sessions && aipictury.sessionsFiltered",
536
+ "group": "navigation@3"
537
+ },
538
+ {
539
+ "command": "aipictury.sessions.newGroup",
540
+ "when": "view == aipictury.sessions",
541
+ "group": "navigation@4"
542
+ },
543
+ {
544
+ "command": "aipictury.sessions.refresh",
545
+ "when": "view == aipictury.sessions",
546
+ "group": "navigation@5"
547
+ }
548
+ ],
549
+ "editor/context": [
550
+ {
551
+ "command": "aipictury.explainSelection",
552
+ "when": "editorHasSelection",
553
+ "group": "aipictury@1"
554
+ },
555
+ {
556
+ "command": "aipictury.refactorSelection",
557
+ "when": "editorHasSelection",
558
+ "group": "aipictury@2"
559
+ },
560
+ {
561
+ "command": "aipictury.writeTests",
562
+ "when": "editorHasSelection",
563
+ "group": "aipictury@3"
564
+ },
565
+ {
566
+ "command": "aipictury.insertMention",
567
+ "group": "aipictury@0"
568
+ },
569
+ {
570
+ "command": "aipictury.review.undoChange",
571
+ "when": "resourcePath =~ /aipictury-review/",
572
+ "group": "0_aipictury@1"
573
+ },
574
+ {
575
+ "command": "aipictury.review.keepChange",
576
+ "when": "resourcePath =~ /aipictury-review/",
577
+ "group": "0_aipictury@2"
578
+ },
579
+ {
580
+ "command": "aipictury.review.apply",
581
+ "when": "resourcePath =~ /aipictury-review/",
582
+ "group": "0_aipictury@3"
583
+ },
584
+ {
585
+ "command": "aipictury.review.reject",
586
+ "when": "resourcePath =~ /aipictury-review/",
587
+ "group": "0_aipictury@4"
588
+ }
589
+ ],
590
+ "scm/title": [
591
+ {
592
+ "command": "aipictury.commitMessage",
593
+ "group": "navigation",
594
+ "when": "scmProvider == git"
595
+ }
596
+ ],
597
+ "editor/title": [
598
+ {
599
+ "command": "aipictury.openInNewTab",
600
+ "group": "navigation@100",
601
+ "when": "resourceScheme == file"
602
+ },
603
+ {
604
+ "command": "aipictury.review.apply",
605
+ "when": "resourcePath =~ /aipictury-review/",
606
+ "group": "navigation@1"
607
+ },
608
+ {
609
+ "command": "aipictury.review.reject",
610
+ "when": "resourcePath =~ /aipictury-review/",
611
+ "group": "navigation@2"
612
+ },
613
+ {
614
+ "command": "aipictury.plan.approve",
615
+ "when": "resourcePath =~ /aipictury[\\\\/]plans[\\\\/]/",
616
+ "group": "navigation@1"
617
+ },
618
+ {
619
+ "command": "aipictury.plan.revise",
620
+ "when": "resourcePath =~ /aipictury[\\\\/]plans[\\\\/]/",
621
+ "group": "navigation@2"
622
+ }
623
+ ],
624
+ "view/item/context": [
625
+ {
626
+ "command": "aipictury.sessions.archive",
627
+ "when": "view == aipictury.sessions && viewItem =~ /^session(?!\\.archived)/",
628
+ "group": "inline@1"
629
+ },
630
+ {
631
+ "command": "aipictury.sessions.unarchive",
632
+ "when": "view == aipictury.sessions && viewItem =~ /^session\\.archived/",
633
+ "group": "inline@1"
634
+ },
635
+ {
636
+ "command": "aipictury.sessions.openInTab",
637
+ "when": "view == aipictury.sessions && viewItem =~ /^session/",
638
+ "group": "1_open@1"
639
+ },
640
+ {
641
+ "command": "aipictury.sessions.openInNewWindow",
642
+ "when": "view == aipictury.sessions && viewItem =~ /^session/",
643
+ "group": "1_open@2"
644
+ },
645
+ {
646
+ "command": "aipictury.sessions.rename",
647
+ "when": "view == aipictury.sessions && viewItem =~ /^session/",
648
+ "group": "2_edit@1"
649
+ },
650
+ {
651
+ "command": "aipictury.sessions.markUnread",
652
+ "when": "view == aipictury.sessions && viewItem =~ /^session/ && viewItem =~ /^(?!.*unread)/",
653
+ "group": "2_edit@2"
654
+ },
655
+ {
656
+ "command": "aipictury.sessions.markRead",
657
+ "when": "view == aipictury.sessions && viewItem =~ /unread/",
658
+ "group": "2_edit@2"
659
+ },
660
+ {
661
+ "command": "aipictury.sessions.moveToGroup",
662
+ "when": "view == aipictury.sessions && viewItem =~ /^session/",
663
+ "group": "3_group@1"
664
+ },
665
+ {
666
+ "command": "aipictury.sessions.removeFromGroup",
667
+ "when": "view == aipictury.sessions && viewItem =~ /grouped/",
668
+ "group": "3_group@2"
669
+ },
670
+ {
671
+ "command": "aipictury.sessions.archive",
672
+ "when": "view == aipictury.sessions && viewItem =~ /^session(?!\\.archived)/",
673
+ "group": "4_archive@1"
674
+ },
675
+ {
676
+ "command": "aipictury.sessions.unarchive",
677
+ "when": "view == aipictury.sessions && viewItem =~ /^session\\.archived/",
678
+ "group": "4_archive@1"
679
+ },
680
+ {
681
+ "command": "aipictury.sessions.delete",
682
+ "when": "view == aipictury.sessions && viewItem =~ /^session/",
683
+ "group": "9_delete@1"
684
+ },
685
+ {
686
+ "command": "aipictury.sessions.renameGroup",
687
+ "when": "view == aipictury.sessions && viewItem == group",
688
+ "group": "1_edit@1"
689
+ },
690
+ {
691
+ "command": "aipictury.sessions.deleteGroup",
692
+ "when": "view == aipictury.sessions && viewItem == group",
693
+ "group": "1_edit@2"
694
+ },
695
+ {
696
+ "command": "aipictury.sessions.unarchiveAll",
697
+ "when": "view == aipictury.sessions && viewItem == archivedRoot",
698
+ "group": "inline@1"
699
+ },
700
+ {
701
+ "command": "aipictury.sessions.refresh",
702
+ "when": "view == aipictury.sessions && viewItem == webRoot",
703
+ "group": "inline@1"
704
+ },
705
+ {
706
+ "command": "aipictury.sessions.continueWeb",
707
+ "when": "view == aipictury.sessions && viewItem == webChat",
708
+ "group": "inline@1"
709
+ },
710
+ {
711
+ "command": "aipictury.sessions.openCloud",
712
+ "when": "view == aipictury.sessions && viewItem == cloudChat",
713
+ "group": "inline@1"
714
+ }
715
+ ],
716
+ "commandPalette": [
717
+ {
718
+ "command": "aipictury.sessions.open",
719
+ "when": "false"
720
+ },
721
+ {
722
+ "command": "aipictury.sessions.openInTab",
723
+ "when": "false"
724
+ },
725
+ {
726
+ "command": "aipictury.sessions.openInNewWindow",
727
+ "when": "false"
728
+ },
729
+ {
730
+ "command": "aipictury.sessions.rename",
731
+ "when": "false"
732
+ },
733
+ {
734
+ "command": "aipictury.sessions.delete",
735
+ "when": "false"
736
+ },
737
+ {
738
+ "command": "aipictury.sessions.archive",
739
+ "when": "false"
740
+ },
741
+ {
742
+ "command": "aipictury.sessions.unarchive",
743
+ "when": "false"
744
+ },
745
+ {
746
+ "command": "aipictury.sessions.markUnread",
747
+ "when": "false"
748
+ },
749
+ {
750
+ "command": "aipictury.sessions.markRead",
751
+ "when": "false"
752
+ },
753
+ {
754
+ "command": "aipictury.sessions.moveToGroup",
755
+ "when": "false"
756
+ },
757
+ {
758
+ "command": "aipictury.sessions.removeFromGroup",
759
+ "when": "false"
760
+ },
761
+ {
762
+ "command": "aipictury.sessions.renameGroup",
763
+ "when": "false"
764
+ },
765
+ {
766
+ "command": "aipictury.sessions.deleteGroup",
767
+ "when": "false"
768
+ },
769
+ {
770
+ "command": "aipictury.sessions.continueWeb",
771
+ "when": "false"
772
+ },
773
+ {
774
+ "command": "aipictury.sessions.openCloud",
775
+ "when": "false"
776
+ },
777
+ {
778
+ "command": "aipictury.review.apply",
779
+ "when": "resourcePath =~ /aipictury-review/"
780
+ },
781
+ {
782
+ "command": "aipictury.review.reject",
783
+ "when": "resourcePath =~ /aipictury-review/"
784
+ },
785
+ {
786
+ "command": "aipictury.review.undoChange",
787
+ "when": "resourcePath =~ /aipictury-review/"
788
+ },
789
+ {
790
+ "command": "aipictury.review.keepChange",
791
+ "when": "resourcePath =~ /aipictury-review/"
792
+ },
793
+ {
794
+ "command": "aipictury.plan.addNote",
795
+ "when": "false"
796
+ },
797
+ {
798
+ "command": "aipictury.plan.deleteNote",
799
+ "when": "false"
800
+ },
801
+ {
802
+ "command": "aipictury.plan.approve",
803
+ "when": "resourcePath =~ /aipictury[\\\\/]plans[\\\\/]/"
804
+ },
805
+ {
806
+ "command": "aipictury.plan.revise",
807
+ "when": "resourcePath =~ /aipictury[\\\\/]plans[\\\\/]/"
808
+ }
809
+ ],
810
+ "comments/commentThread/context": [
811
+ {
812
+ "command": "aipictury.plan.addNote",
813
+ "when": "commentController == aipictury.plan",
814
+ "group": "inline"
815
+ }
816
+ ],
817
+ "comments/commentThread/title": [
818
+ {
819
+ "command": "aipictury.plan.deleteNote",
820
+ "when": "commentController == aipictury.plan",
821
+ "group": "navigation"
822
+ }
823
+ ]
824
+ },
825
+ "configuration": {
826
+ "title": "AIPictury",
827
+ "properties": {
828
+ "aipictury.server": {
829
+ "type": "string",
830
+ "default": "",
831
+ "description": "Address of your GPU server, for this machine only. Leave empty to use the one chosen with your AIPictury account (aipictury.com: a LAN and a WAN address — the LAN one when it answers). Which model does what is configured in that server's own Settings page, so every editor sees the same choices."
832
+ },
833
+ "aipictury.webApp": {
834
+ "type": "string",
835
+ "default": "https://aipictury.com",
836
+ "description": "The AIPictury web app (remote-control links open there, with your GPU server)."
837
+ },
838
+ "aipictury.approval": {
839
+ "type": "string",
840
+ "enum": [
841
+ "ask",
842
+ "edits",
843
+ "plan",
844
+ "never",
845
+ "bypass"
846
+ ],
847
+ "enumDescriptions": [
848
+ "Manual — ask before every file change and command",
849
+ "Edit Automatically — apply file edits without asking; still ask before running commands",
850
+ "Plan — read-only: investigate and propose a plan, change nothing",
851
+ "Auto — routine work without asking; anything risky is asked (judged by fixed rules and the model)",
852
+ "Bypass permissions — everything without asking, no checks (needs allowDangerouslySkipPermissions)"
853
+ ],
854
+ "default": "never",
855
+ "description": "How much the agent may do on its own. Also set from the picker beside Send."
856
+ },
857
+ "aipictury.maxSteps": {
858
+ "type": "number",
859
+ "default": 0,
860
+ "description": "How many tool calls one request may take before the agent stops and reports. 0 means no limit — the agent runs until it is done or you press Stop."
861
+ },
862
+ "aipictury.showThinking": {
863
+ "type": "boolean",
864
+ "default": true,
865
+ "description": "Let the model reason before it acts (thinking). The Thinking button in the composer only expands or collapses the reasoning shown; this is where reasoning is switched off."
866
+ },
867
+ "aipictury.effort": {
868
+ "type": "string",
869
+ "enum": [
870
+ "low",
871
+ "medium",
872
+ "high",
873
+ "max",
874
+ "ultra"
875
+ ],
876
+ "default": "high",
877
+ "enumDescriptions": [
878
+ "No reasoning — fastest",
879
+ "Short reasoning (~1.5k tokens)",
880
+ "Reasoning up to ~6k tokens",
881
+ "Reason as long as needed",
882
+ "Ultracode — reason as long as needed, and plan large tasks as workflows of helpers"
883
+ ],
884
+ "description": "How hard the model reasons before it acts. Also set from the model picker, or with /effort."
885
+ },
886
+ "aipictury.autosave": {
887
+ "type": "boolean",
888
+ "default": true,
889
+ "description": "Save a file with unsaved changes before the agent reads or writes it, so it never works from a stale copy or overwrites what you typed."
890
+ },
891
+ "aipictury.attachOpenFile": {
892
+ "type": "boolean",
893
+ "default": true,
894
+ "description": "Send the name of the file open in the editor with each message. The selected text is sent either way (dismiss it with × in the composer)."
895
+ },
896
+ "aipictury.respectGitIgnore": {
897
+ "type": "boolean",
898
+ "default": true,
899
+ "description": "Withhold the text of files git ignores from the editor context sent with messages."
900
+ },
901
+ "aipictury.focusView": {
902
+ "type": "boolean",
903
+ "default": false,
904
+ "description": "Hide tool steps and reasoning behind expandable rows, leaving your prompts and the answers (Ctrl+Alt+F)."
905
+ },
906
+ "aipictury.useCtrlEnterToSend": {
907
+ "type": "boolean",
908
+ "default": false,
909
+ "description": "Send with Ctrl/Cmd+Enter instead of Enter."
910
+ },
911
+ "aipictury.continueAfterReload": {
912
+ "type": "boolean",
913
+ "default": true,
914
+ "description": "After a window reload, continue the step the agent was on."
915
+ },
916
+ "aipictury.mcpServers": {
917
+ "type": "object",
918
+ "default": {},
919
+ "description": "MCP servers, as in .mcp.json: { \"name\": { \"command\": \"npx\", \"args\": [...] } } or { \"name\": { \"type\": \"http\", \"url\": \"…\" } }."
920
+ },
921
+ "aipictury.preferredLocation": {
922
+ "type": "string",
923
+ "enum": [
924
+ "sidebar",
925
+ "panel"
926
+ ],
927
+ "enumDescriptions": [
928
+ "In the side bar",
929
+ "In a new editor tab"
930
+ ],
931
+ "default": "sidebar",
932
+ "description": "Where the agent opens from the status bar, a link or New Conversation: the side bar, or a new editor tab."
933
+ },
934
+ "aipictury.lockEditorGroups": {
935
+ "type": "boolean",
936
+ "default": true,
937
+ "description": "When the agent opens a tab in a new editor group, lock that group, so files you open while the agent's tab is focused go to another group."
938
+ },
939
+ "aipictury.scrollToBottomOnSend": {
940
+ "type": "boolean",
941
+ "default": true,
942
+ "description": "Scroll the conversation to the bottom when you send a message. Off: it stays where you left it."
943
+ },
944
+ "aipictury.enableNewConversationShortcut": {
945
+ "type": "boolean",
946
+ "default": false,
947
+ "description": "Cmd/Ctrl+N starts a new conversation while the agent is focused."
948
+ },
949
+ "aipictury.enableReopenClosedSessionShortcut": {
950
+ "type": "boolean",
951
+ "default": true,
952
+ "description": "Cmd/Ctrl+Shift+T reopens the agent tab you closed last. When the last closed tab was not an agent tab, VS Code's own Reopen Closed Editor runs instead."
953
+ },
954
+ "aipictury.usePythonEnvironment": {
955
+ "type": "boolean",
956
+ "default": true,
957
+ "description": "Run the agent's commands in the workspace's Python environment (the one the Python extension has selected)."
958
+ },
959
+ "aipictury.environmentVariables": {
960
+ "type": "array",
961
+ "default": [],
962
+ "items": {
963
+ "type": "object",
964
+ "properties": {
965
+ "name": {
966
+ "type": "string"
967
+ },
968
+ "value": {
969
+ "type": "string"
970
+ }
971
+ },
972
+ "required": [
973
+ "name",
974
+ "value"
975
+ ]
976
+ },
977
+ "description": "Environment variables for the commands the agent runs. For shared settings use the \"env\" of .aipictury/settings.json instead."
978
+ },
979
+ "aipictury.notifications": {
980
+ "type": "boolean",
981
+ "default": true,
982
+ "description": "Tell you, with a system notification when VS Code is not in front, when the agent finishes or needs your answer."
983
+ },
984
+ "aipictury.cloud.conversations": {
985
+ "type": "boolean",
986
+ "default": true,
987
+ "description": "Keep your conversations with your AIPictury account, so another machine (or the aipictury CLI) can open them. Per project, \"cloudSync\": false in .aipictury/settings.json keeps a project out."
988
+ },
989
+ "aipictury.cloud.memory": {
990
+ "type": "boolean",
991
+ "default": true,
992
+ "description": "Keep your rules, and each project's .aipictury/memory.md, with your account."
993
+ },
994
+ "aipictury.cloud.settings": {
995
+ "type": "boolean",
996
+ "default": true,
997
+ "description": "Keep your preferences (effort, permission mode, reasoning, focus view…) with your account. Never keys, tokens or MCP settings."
998
+ },
999
+ "aipictury.cloud.usage": {
1000
+ "type": "boolean",
1001
+ "default": true,
1002
+ "description": "Keep each day's usage (turns, tokens, tools, models) with your account."
1003
+ },
1004
+ "aipictury.browser.enabled": {
1005
+ "type": "boolean",
1006
+ "default": true,
1007
+ "description": "Give the agent a web browser (your Chrome or Edge, in a profile of its own) to open, read and use web pages — to test a web app on localhost, check a page, or do something on a site. Acting on a site other than localhost is asked once per site."
1008
+ },
1009
+ "aipictury.browser.headless": {
1010
+ "type": "boolean",
1011
+ "default": false,
1012
+ "description": "Run the agent's browser without a window. Off: you can watch what it does, and step in (sign in, type a password) yourself."
1013
+ },
1014
+ "aipictury.browser.channel": {
1015
+ "type": "string",
1016
+ "enum": [
1017
+ "auto",
1018
+ "chrome",
1019
+ "msedge",
1020
+ "chromium"
1021
+ ],
1022
+ "default": "auto",
1023
+ "enumDescriptions": [
1024
+ "The first found: Chrome, then Edge, then Chromium",
1025
+ "Google Chrome",
1026
+ "Microsoft Edge",
1027
+ "Chromium"
1028
+ ],
1029
+ "description": "Which installed browser the agent drives."
1030
+ },
1031
+ "aipictury.autoMemory": {
1032
+ "type": "boolean",
1033
+ "default": true,
1034
+ "description": "Let the agent save a rule or preference you state (\"always…\", \"from now on…\") so it applies to later conversations. Off: rules are only added by you, from Memory."
1035
+ },
1036
+ "aipictury.archiveInactiveSessions": {
1037
+ "type": "number",
1038
+ "enum": [
1039
+ 0,
1040
+ 1,
1041
+ 2,
1042
+ 7,
1043
+ 14
1044
+ ],
1045
+ "default": 0,
1046
+ "enumDescriptions": [
1047
+ "Never",
1048
+ "After 1 day",
1049
+ "After 2 days",
1050
+ "After 7 days",
1051
+ "After 14 days"
1052
+ ],
1053
+ "markdownDescription": "Move conversations with no activity for this many days to **Archived** in the Sessions view, when VS Code starts. Never an open, unread or grouped one. Archived conversations are kept, and found by the search."
1054
+ },
1055
+ "aipictury.hideOnboarding": {
1056
+ "type": "boolean",
1057
+ "default": false,
1058
+ "markdownDescription": "Hide the **Get started** checklist shown in an empty conversation. The walkthrough stays available from **AIPictury: Open Walkthrough**."
1059
+ },
1060
+ "aipictury.allowDangerouslySkipPermissions": {
1061
+ "type": "boolean",
1062
+ "default": false,
1063
+ "markdownDescription": "Offer **Bypass permissions** in the mode menu: the agent then does everything — deleting, pushing, installing, sending data — without asking and without Auto mode's checks. Deny and ask rules still apply. Only for a throwaway machine or container."
1064
+ },
1065
+ "aipictury.sandbox.enabled": {
1066
+ "type": "boolean",
1067
+ "default": false,
1068
+ "markdownDescription": "Run the agent's shell commands in a sandbox (macOS `sandbox-exec`, Linux `bubblewrap`): they can write only inside the workspace and the temp folders. Also `\"sandbox\": {\"enabled\": true}` in a settings file, Claude Code's included."
1069
+ },
1070
+ "aipictury.sandbox.allowNetwork": {
1071
+ "type": "boolean",
1072
+ "default": false,
1073
+ "markdownDescription": "Let sandboxed commands reach the internet. Off: only this machine (localhost, its sockets) is reachable."
1074
+ },
1075
+ "aipictury.sandbox.autoAllow": {
1076
+ "type": "boolean",
1077
+ "default": true,
1078
+ "markdownDescription": "Run sandboxed commands without asking — when the network is off, a command kept in the sandbox can only change the workspace, which checkpoints can undo. Deny and ask rules still apply."
1079
+ },
1080
+ "aipictury.sandbox.excludedCommands": {
1081
+ "type": "array",
1082
+ "items": {
1083
+ "type": "string"
1084
+ },
1085
+ "default": [],
1086
+ "markdownDescription": "Commands that run outside the sandbox (asked as usual), e.g. `docker`, `podman`."
1087
+ },
1088
+ "aipictury.sandbox.writablePaths": {
1089
+ "type": "array",
1090
+ "items": {
1091
+ "type": "string"
1092
+ },
1093
+ "default": [],
1094
+ "markdownDescription": "More folders sandboxed commands may write, e.g. `~/.npm`, `~/.cache`."
1095
+ }
1096
+ }
1097
+ },
1098
+ "keybindings": [
1099
+ {
1100
+ "command": "aipictury.focusInput",
1101
+ "key": "ctrl+escape",
1102
+ "mac": "cmd+escape"
1103
+ },
1104
+ {
1105
+ "command": "aipictury.openInNewTab",
1106
+ "key": "ctrl+shift+escape",
1107
+ "mac": "cmd+shift+escape"
1108
+ },
1109
+ {
1110
+ "command": "aipictury.insertMention",
1111
+ "key": "alt+k",
1112
+ "mac": "alt+k",
1113
+ "when": "editorTextFocus"
1114
+ },
1115
+ {
1116
+ "command": "aipictury.toggleFocusView",
1117
+ "key": "ctrl+alt+f",
1118
+ "mac": "ctrl+alt+f"
1119
+ },
1120
+ {
1121
+ "command": "aipictury.newConversation",
1122
+ "key": "ctrl+n",
1123
+ "mac": "cmd+n",
1124
+ "when": "config.aipictury.enableNewConversationShortcut && (focusedView == 'aipictury.agent' || activeWebviewPanelId == 'aipictury.agentTab')"
1125
+ },
1126
+ {
1127
+ "command": "aipictury.reopenClosedSession",
1128
+ "key": "ctrl+shift+t",
1129
+ "mac": "cmd+shift+t",
1130
+ "when": "config.aipictury.enableReopenClosedSessionShortcut"
1131
+ }
1132
+ ],
1133
+ "viewsWelcome": [
1134
+ {
1135
+ "view": "aipictury.sessions",
1136
+ "contents": "No conversations in this project yet.\n[Start one](command:aipictury.newConversation)"
1137
+ }
1138
+ ],
1139
+ "walkthroughs": [
1140
+ {
1141
+ "id": "start",
1142
+ "title": "Get started with AIPictury",
1143
+ "description": "Your own coding agent, on your own GPU.",
1144
+ "steps": [
1145
+ {
1146
+ "id": "server",
1147
+ "title": "Point it at your server",
1148
+ "description": "The agent runs on your AIPictury server.\n[Set the server address](command:aipictury.setServer)",
1149
+ "media": {
1150
+ "markdown": "media/walkthrough/server.md"
1151
+ },
1152
+ "completionEvents": [
1153
+ "onCommand:aipictury.setServer"
1154
+ ]
1155
+ },
1156
+ {
1157
+ "id": "ask",
1158
+ "title": "Ask about your code",
1159
+ "description": "Open the agent and ask it something about this workspace.\n[Open the agent](command:aipictury.focusInput)",
1160
+ "media": {
1161
+ "markdown": "media/walkthrough/ask.md"
1162
+ },
1163
+ "completionEvents": [
1164
+ "onCommand:aipictury.focusInput"
1165
+ ]
1166
+ },
1167
+ {
1168
+ "id": "modes",
1169
+ "title": "Plan first, then let it work",
1170
+ "description": "Choose how much it may do on its own.\n[Open the agent](command:aipictury.focusInput)",
1171
+ "media": {
1172
+ "markdown": "media/walkthrough/modes.md"
1173
+ }
1174
+ },
1175
+ {
1176
+ "id": "memory",
1177
+ "title": "Rules it always follows",
1178
+ "description": "Instructions files and memory.\n[Open Instructions](command:aipictury.instructions)",
1179
+ "media": {
1180
+ "markdown": "media/walkthrough/memory.md"
1181
+ },
1182
+ "completionEvents": [
1183
+ "onCommand:aipictury.instructions",
1184
+ "onCommand:aipictury.memory"
1185
+ ]
1186
+ },
1187
+ {
1188
+ "id": "sessions",
1189
+ "title": "Every conversation, kept",
1190
+ "description": "The Sessions view lists them all.\n[Show Sessions](command:aipictury.sessions.focus)",
1191
+ "media": {
1192
+ "markdown": "media/walkthrough/sessions.md"
1193
+ },
1194
+ "completionEvents": [
1195
+ "onView:aipictury.sessions"
1196
+ ]
1197
+ }
1198
+ ]
1199
+ }
1200
+ ]
1201
+ },
1202
+ "devDependencies": {
1203
+ "@eslint/js": "^10.0.1",
1204
+ "@types/vscode": "^1.95.0",
1205
+ "@vscode/test-electron": "^3.1.0",
1206
+ "@vscode/vsce": "^3.2.0",
1207
+ "dompurify": "^3.4.16",
1208
+ "esbuild": "^0.28.2",
1209
+ "eslint": "^10.11.0",
1210
+ "firebase": "^12.19.0",
1211
+ "globals": "^17.12.0",
1212
+ "highlight.js": "^11.12.0",
1213
+ "katex": "^0.18.7",
1214
+ "marked": "^18.0.14",
1215
+ "mermaid": "^12.0.0",
1216
+ "mocha": "^12.0.2",
1217
+ "playwright": "^1.63.0"
1218
+ },
1219
+ "scripts": {
1220
+ "lint": "eslint . --max-warnings=0",
1221
+ "test": "node test/runTest.js",
1222
+ "package": "npm run build:vendor && vsce package --allow-missing-repository",
1223
+ "build:vendor": "node build-vendor.mjs",
1224
+ "pretest": "npm run build:vendor"
1225
+ },
1226
+ "overrides": {
1227
+ "lodash-es": "^4.18.1",
1228
+ "@grpc/grpc-js": "^1.14.5"
1229
+ },
1230
+ "dependencies": {
1231
+ "playwright-core": "^1.63.0"
1232
+ },
1233
+ "author": "Davait, Inc."
1234
+ }