subagent-extension-for-codex 0.1.1 → 0.3.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.
Files changed (48) hide show
  1. package/README.md +16 -13
  2. package/assets/icons/archive-view.svg +16 -0
  3. package/assets/icons/arrow-up-circle.svg +14 -0
  4. package/assets/icons/check-circle.svg +14 -0
  5. package/assets/icons/file-code.svg +17 -0
  6. package/assets/icons/file-diff.svg +17 -0
  7. package/assets/icons/file-text.svg +17 -0
  8. package/assets/icons/git-commit-off.svg +15 -0
  9. package/assets/icons/git-off.svg +17 -0
  10. package/assets/icons/note.svg +16 -0
  11. package/dist/THIRD_PARTY_LICENSES.txt +21 -1
  12. package/dist/app.html +811 -191
  13. package/dist/bundle/chunks/{chunk-KFBRPWLR.js → chunk-36LESPFG.js} +8467 -7970
  14. package/dist/bundle/chunks/chunk-36LESPFG.js.map +6 -0
  15. package/dist/bundle/chunks/{chunk-5TX3SEV2.js → chunk-FT2Y2DFZ.js} +137 -1
  16. package/dist/bundle/chunks/chunk-FT2Y2DFZ.js.map +6 -0
  17. package/dist/bundle/chunks/{chunk-LZFYKJ4Y.js → chunk-L5ILPS3O.js} +1796 -845
  18. package/dist/bundle/chunks/chunk-L5ILPS3O.js.map +6 -0
  19. package/dist/bundle/chunks/chunk-TPCNCQM7.js +970 -0
  20. package/dist/bundle/chunks/chunk-TPCNCQM7.js.map +6 -0
  21. package/dist/bundle/chunks/{v4-LDJUK5DU.js → v4-NCRHZ3K4.js} +2 -2
  22. package/dist/bundle/main.js +21868 -17076
  23. package/dist/bundle/main.js.map +3 -3
  24. package/dist/bundle/projects-cli.js +11 -8
  25. package/dist/bundle/projects-cli.js.map +1 -1
  26. package/dist/bundle/stdio.js +106 -8
  27. package/dist/bundle/stdio.js.map +2 -2
  28. package/migrations/20261107064009_claude-sdk-settings/migration.sql +39 -0
  29. package/migrations/20261107064009_claude-sdk-settings/snapshot.json +615 -0
  30. package/migrations/20261107203218_task-read-indexes/migration.sql +9 -0
  31. package/migrations/20261107203218_task-read-indexes/snapshot.json +762 -0
  32. package/migrations/20261107210532_chat-events-backfill/migration.sql +23 -0
  33. package/migrations/20261107210532_chat-events-backfill/snapshot.json +762 -0
  34. package/migrations/20261108005345_task-messages/migration.sql +9 -0
  35. package/migrations/20261108005345_task-messages/snapshot.json +841 -0
  36. package/migrations/20261108005348_task-messages-backfill/migration.sql +14 -0
  37. package/migrations/20261108005348_task-messages-backfill/snapshot.json +841 -0
  38. package/migrations/20261110025216_task-attachments/migration.sql +21 -0
  39. package/migrations/20261110025216_task-attachments/snapshot.json +1040 -0
  40. package/package.json +13 -1
  41. package/plugin.json +1 -1
  42. package/skills/delegation/SKILL.md +14 -7
  43. package/dist/bundle/chunks/chunk-5TX3SEV2.js.map +0 -6
  44. package/dist/bundle/chunks/chunk-KFBRPWLR.js.map +0 -6
  45. package/dist/bundle/chunks/chunk-L3PORPD3.js +0 -450
  46. package/dist/bundle/chunks/chunk-L3PORPD3.js.map +0 -6
  47. package/dist/bundle/chunks/chunk-LZFYKJ4Y.js.map +0 -6
  48. /package/dist/bundle/chunks/{v4-LDJUK5DU.js.map → v4-NCRHZ3K4.js.map} +0 -0
@@ -0,0 +1,39 @@
1
+ -- Claude settings become SDK options: either extension sandbox preset turns the
2
+ -- sandbox toggle on, `user_config` turns it off, and the `tools` and
3
+ -- `path_guard` settings go. A task keeps its options under its provider's key.
4
+ UPDATE `user_settings`
5
+ SET `body` = json_set(
6
+ `body`,
7
+ '$.providers.claude.sandbox',
8
+ json(CASE json_extract(`body`, '$.providers.claude.sandbox') WHEN 'user_config' THEN 'false' ELSE 'true' END)
9
+ )
10
+ WHERE json_type(`body`, '$.providers.claude.sandbox') = 'text';
11
+ --> statement-breakpoint
12
+ UPDATE `user_settings`
13
+ SET `body` = json_remove(`body`, '$.providers.claude.tools', '$.providers.claude.path_guard')
14
+ WHERE json_type(`body`, '$.providers.claude') = 'object';
15
+ --> statement-breakpoint
16
+ -- Read-only profile tasks the removed restrictions limited move to plan mode.
17
+ UPDATE `tasks`
18
+ SET `body` = json_set(
19
+ `body`,
20
+ '$.provider_options."' || json_extract(`body`, '$.provider') || '".permission_mode',
21
+ 'plan'
22
+ )
23
+ WHERE json_extract(`body`, '$.worker_profile') IN ('researcher', 'reviewer', 'security_reviewer')
24
+ AND (
25
+ json_extract(`body`, '$.provider_options."' || json_extract(`body`, '$.provider') || '".claude_policy.tools') = 'restricted'
26
+ OR json_extract(`body`, '$.provider_options."' || json_extract(`body`, '$.provider') || '".claude_policy.path_guard') = 1
27
+ );
28
+ --> statement-breakpoint
29
+ UPDATE `tasks`
30
+ SET `body` = json_remove(
31
+ json_set(
32
+ `body`,
33
+ '$.provider_options."' || json_extract(`body`, '$.provider') || '".claude_policy.sandbox',
34
+ json(CASE json_extract(`body`, '$.provider_options."' || json_extract(`body`, '$.provider') || '".claude_policy.sandbox') WHEN 'user_config' THEN 'false' ELSE 'true' END)
35
+ ),
36
+ '$.provider_options."' || json_extract(`body`, '$.provider') || '".claude_policy.tools',
37
+ '$.provider_options."' || json_extract(`body`, '$.provider') || '".claude_policy.path_guard'
38
+ )
39
+ WHERE json_type(`body`, '$.provider_options."' || json_extract(`body`, '$.provider') || '".claude_policy.sandbox') = 'text';
@@ -0,0 +1,615 @@
1
+ {
2
+ "id": "ae051ef6-3491-4c58-bf0a-a9280d27b726",
3
+ "prevIds": [
4
+ "195e7abf-9696-475e-9271-2a32ad461b19"
5
+ ],
6
+ "version": "7",
7
+ "dialect": "sqlite",
8
+ "ddl": [
9
+ {
10
+ "name": "file_changes",
11
+ "entityType": "tables"
12
+ },
13
+ {
14
+ "name": "project_roots",
15
+ "entityType": "tables"
16
+ },
17
+ {
18
+ "name": "user_settings",
19
+ "entityType": "tables"
20
+ },
21
+ {
22
+ "name": "events",
23
+ "entityType": "tables"
24
+ },
25
+ {
26
+ "name": "task_parent_seen",
27
+ "entityType": "tables"
28
+ },
29
+ {
30
+ "name": "task_send_receipts",
31
+ "entityType": "tables"
32
+ },
33
+ {
34
+ "name": "task_archive",
35
+ "entityType": "tables"
36
+ },
37
+ {
38
+ "name": "task_read",
39
+ "entityType": "tables"
40
+ },
41
+ {
42
+ "name": "tasks",
43
+ "entityType": "tables"
44
+ },
45
+ {
46
+ "table": "file_changes",
47
+ "name": "task_id",
48
+ "type": "text",
49
+ "notNull": true,
50
+ "autoincrement": false,
51
+ "default": null,
52
+ "generated": null,
53
+ "entityType": "columns"
54
+ },
55
+ {
56
+ "table": "file_changes",
57
+ "name": "scope",
58
+ "type": "text",
59
+ "notNull": true,
60
+ "autoincrement": false,
61
+ "default": null,
62
+ "generated": null,
63
+ "entityType": "columns"
64
+ },
65
+ {
66
+ "table": "file_changes",
67
+ "name": "path",
68
+ "type": "text",
69
+ "notNull": true,
70
+ "autoincrement": false,
71
+ "default": null,
72
+ "generated": null,
73
+ "entityType": "columns"
74
+ },
75
+ {
76
+ "table": "file_changes",
77
+ "name": "hunks",
78
+ "type": "text",
79
+ "notNull": true,
80
+ "autoincrement": false,
81
+ "default": null,
82
+ "generated": null,
83
+ "entityType": "columns"
84
+ },
85
+ {
86
+ "table": "file_changes",
87
+ "name": "created",
88
+ "type": "integer",
89
+ "notNull": true,
90
+ "autoincrement": false,
91
+ "default": null,
92
+ "generated": null,
93
+ "entityType": "columns"
94
+ },
95
+ {
96
+ "table": "file_changes",
97
+ "name": "deleted",
98
+ "type": "integer",
99
+ "notNull": true,
100
+ "autoincrement": false,
101
+ "default": null,
102
+ "generated": null,
103
+ "entityType": "columns"
104
+ },
105
+ {
106
+ "table": "file_changes",
107
+ "name": "source",
108
+ "type": "text",
109
+ "notNull": true,
110
+ "autoincrement": false,
111
+ "default": null,
112
+ "generated": null,
113
+ "entityType": "columns"
114
+ },
115
+ {
116
+ "table": "file_changes",
117
+ "name": "incomplete",
118
+ "type": "integer",
119
+ "notNull": true,
120
+ "autoincrement": false,
121
+ "default": null,
122
+ "generated": null,
123
+ "entityType": "columns"
124
+ },
125
+ {
126
+ "table": "project_roots",
127
+ "name": "path",
128
+ "type": "text",
129
+ "notNull": false,
130
+ "autoincrement": false,
131
+ "default": null,
132
+ "generated": null,
133
+ "entityType": "columns"
134
+ },
135
+ {
136
+ "table": "project_roots",
137
+ "name": "kind",
138
+ "type": "text",
139
+ "notNull": true,
140
+ "autoincrement": false,
141
+ "default": null,
142
+ "generated": null,
143
+ "entityType": "columns"
144
+ },
145
+ {
146
+ "table": "project_roots",
147
+ "name": "name",
148
+ "type": "text",
149
+ "notNull": false,
150
+ "autoincrement": false,
151
+ "default": null,
152
+ "generated": null,
153
+ "entityType": "columns"
154
+ },
155
+ {
156
+ "table": "user_settings",
157
+ "name": "owner",
158
+ "type": "text",
159
+ "notNull": false,
160
+ "autoincrement": false,
161
+ "default": null,
162
+ "generated": null,
163
+ "entityType": "columns"
164
+ },
165
+ {
166
+ "table": "user_settings",
167
+ "name": "body",
168
+ "type": "text",
169
+ "notNull": true,
170
+ "autoincrement": false,
171
+ "default": null,
172
+ "generated": null,
173
+ "entityType": "columns"
174
+ },
175
+ {
176
+ "table": "events",
177
+ "name": "id",
178
+ "type": "integer",
179
+ "notNull": false,
180
+ "autoincrement": true,
181
+ "default": null,
182
+ "generated": null,
183
+ "entityType": "columns"
184
+ },
185
+ {
186
+ "table": "events",
187
+ "name": "task_id",
188
+ "type": "text",
189
+ "notNull": true,
190
+ "autoincrement": false,
191
+ "default": null,
192
+ "generated": null,
193
+ "entityType": "columns"
194
+ },
195
+ {
196
+ "table": "events",
197
+ "name": "type",
198
+ "type": "text",
199
+ "notNull": true,
200
+ "autoincrement": false,
201
+ "default": null,
202
+ "generated": null,
203
+ "entityType": "columns"
204
+ },
205
+ {
206
+ "table": "events",
207
+ "name": "timestamp",
208
+ "type": "text",
209
+ "notNull": true,
210
+ "autoincrement": false,
211
+ "default": null,
212
+ "generated": null,
213
+ "entityType": "columns"
214
+ },
215
+ {
216
+ "table": "events",
217
+ "name": "data",
218
+ "type": "text",
219
+ "notNull": true,
220
+ "autoincrement": false,
221
+ "default": null,
222
+ "generated": null,
223
+ "entityType": "columns"
224
+ },
225
+ {
226
+ "table": "events",
227
+ "name": "response_ref",
228
+ "type": "text",
229
+ "notNull": false,
230
+ "autoincrement": false,
231
+ "default": null,
232
+ "generated": null,
233
+ "entityType": "columns"
234
+ },
235
+ {
236
+ "table": "events",
237
+ "name": "original_response",
238
+ "type": "text",
239
+ "notNull": false,
240
+ "autoincrement": false,
241
+ "default": null,
242
+ "generated": null,
243
+ "entityType": "columns"
244
+ },
245
+ {
246
+ "table": "task_parent_seen",
247
+ "name": "event_id",
248
+ "type": "integer",
249
+ "notNull": false,
250
+ "autoincrement": false,
251
+ "default": null,
252
+ "generated": null,
253
+ "entityType": "columns"
254
+ },
255
+ {
256
+ "table": "task_send_receipts",
257
+ "name": "owner",
258
+ "type": "text",
259
+ "notNull": true,
260
+ "autoincrement": false,
261
+ "default": null,
262
+ "generated": null,
263
+ "entityType": "columns"
264
+ },
265
+ {
266
+ "table": "task_send_receipts",
267
+ "name": "task_id",
268
+ "type": "text",
269
+ "notNull": true,
270
+ "autoincrement": false,
271
+ "default": null,
272
+ "generated": null,
273
+ "entityType": "columns"
274
+ },
275
+ {
276
+ "table": "task_send_receipts",
277
+ "name": "sender",
278
+ "type": "text",
279
+ "notNull": true,
280
+ "autoincrement": false,
281
+ "default": null,
282
+ "generated": null,
283
+ "entityType": "columns"
284
+ },
285
+ {
286
+ "table": "task_send_receipts",
287
+ "name": "request_id",
288
+ "type": "text",
289
+ "notNull": true,
290
+ "autoincrement": false,
291
+ "default": null,
292
+ "generated": null,
293
+ "entityType": "columns"
294
+ },
295
+ {
296
+ "table": "task_send_receipts",
297
+ "name": "fingerprint",
298
+ "type": "text",
299
+ "notNull": true,
300
+ "autoincrement": false,
301
+ "default": null,
302
+ "generated": null,
303
+ "entityType": "columns"
304
+ },
305
+ {
306
+ "table": "task_send_receipts",
307
+ "name": "message_id",
308
+ "type": "text",
309
+ "notNull": true,
310
+ "autoincrement": false,
311
+ "default": null,
312
+ "generated": null,
313
+ "entityType": "columns"
314
+ },
315
+ {
316
+ "table": "task_send_receipts",
317
+ "name": "state",
318
+ "type": "text",
319
+ "notNull": true,
320
+ "autoincrement": false,
321
+ "default": null,
322
+ "generated": null,
323
+ "entityType": "columns"
324
+ },
325
+ {
326
+ "table": "task_archive",
327
+ "name": "task_id",
328
+ "type": "text",
329
+ "notNull": false,
330
+ "autoincrement": false,
331
+ "default": null,
332
+ "generated": null,
333
+ "entityType": "columns"
334
+ },
335
+ {
336
+ "table": "task_archive",
337
+ "name": "archived_at",
338
+ "type": "text",
339
+ "notNull": true,
340
+ "autoincrement": false,
341
+ "default": null,
342
+ "generated": null,
343
+ "entityType": "columns"
344
+ },
345
+ {
346
+ "table": "task_read",
347
+ "name": "task_id",
348
+ "type": "text",
349
+ "notNull": false,
350
+ "autoincrement": false,
351
+ "default": null,
352
+ "generated": null,
353
+ "entityType": "columns"
354
+ },
355
+ {
356
+ "table": "task_read",
357
+ "name": "through",
358
+ "type": "integer",
359
+ "notNull": true,
360
+ "autoincrement": false,
361
+ "default": null,
362
+ "generated": null,
363
+ "entityType": "columns"
364
+ },
365
+ {
366
+ "table": "task_read",
367
+ "name": "unread",
368
+ "type": "integer",
369
+ "notNull": true,
370
+ "autoincrement": false,
371
+ "default": null,
372
+ "generated": null,
373
+ "entityType": "columns"
374
+ },
375
+ {
376
+ "table": "tasks",
377
+ "name": "id",
378
+ "type": "text",
379
+ "notNull": false,
380
+ "autoincrement": false,
381
+ "default": null,
382
+ "generated": null,
383
+ "entityType": "columns"
384
+ },
385
+ {
386
+ "table": "tasks",
387
+ "name": "owner",
388
+ "type": "text",
389
+ "notNull": true,
390
+ "autoincrement": false,
391
+ "default": null,
392
+ "generated": null,
393
+ "entityType": "columns"
394
+ },
395
+ {
396
+ "table": "tasks",
397
+ "name": "body",
398
+ "type": "text",
399
+ "notNull": true,
400
+ "autoincrement": false,
401
+ "default": null,
402
+ "generated": null,
403
+ "entityType": "columns"
404
+ },
405
+ {
406
+ "table": "events",
407
+ "name": "events_task",
408
+ "columns": [
409
+ {
410
+ "value": "task_id",
411
+ "isExpression": false
412
+ },
413
+ {
414
+ "value": "id",
415
+ "isExpression": false
416
+ }
417
+ ],
418
+ "isUnique": false,
419
+ "where": null,
420
+ "origin": "manual",
421
+ "entityType": "indexes"
422
+ },
423
+ {
424
+ "table": "events",
425
+ "name": "events_response",
426
+ "columns": [
427
+ {
428
+ "value": "response_ref",
429
+ "isExpression": false
430
+ }
431
+ ],
432
+ "isUnique": true,
433
+ "where": null,
434
+ "origin": "manual",
435
+ "entityType": "indexes"
436
+ },
437
+ {
438
+ "table": "file_changes",
439
+ "name": "fk_file_changes_task_id_tasks_id_fk",
440
+ "columns": [
441
+ "task_id"
442
+ ],
443
+ "tableTo": "tasks",
444
+ "columnsTo": [
445
+ "id"
446
+ ],
447
+ "onUpdate": "NO ACTION",
448
+ "onDelete": "CASCADE",
449
+ "nameExplicit": false,
450
+ "entityType": "fks"
451
+ },
452
+ {
453
+ "table": "events",
454
+ "name": "fk_events_task_id_tasks_id_fk",
455
+ "columns": [
456
+ "task_id"
457
+ ],
458
+ "tableTo": "tasks",
459
+ "columnsTo": [
460
+ "id"
461
+ ],
462
+ "onUpdate": "NO ACTION",
463
+ "onDelete": "CASCADE",
464
+ "nameExplicit": false,
465
+ "entityType": "fks"
466
+ },
467
+ {
468
+ "table": "task_parent_seen",
469
+ "name": "fk_task_parent_seen_event_id_events_id_fk",
470
+ "columns": [
471
+ "event_id"
472
+ ],
473
+ "tableTo": "events",
474
+ "columnsTo": [
475
+ "id"
476
+ ],
477
+ "onUpdate": "NO ACTION",
478
+ "onDelete": "CASCADE",
479
+ "nameExplicit": false,
480
+ "entityType": "fks"
481
+ },
482
+ {
483
+ "table": "task_send_receipts",
484
+ "name": "fk_task_send_receipts_task_id_tasks_id_fk",
485
+ "columns": [
486
+ "task_id"
487
+ ],
488
+ "tableTo": "tasks",
489
+ "columnsTo": [
490
+ "id"
491
+ ],
492
+ "onUpdate": "NO ACTION",
493
+ "onDelete": "CASCADE",
494
+ "nameExplicit": false,
495
+ "entityType": "fks"
496
+ },
497
+ {
498
+ "table": "task_archive",
499
+ "name": "fk_task_archive_task_id_tasks_id_fk",
500
+ "columns": [
501
+ "task_id"
502
+ ],
503
+ "tableTo": "tasks",
504
+ "columnsTo": [
505
+ "id"
506
+ ],
507
+ "onUpdate": "NO ACTION",
508
+ "onDelete": "CASCADE",
509
+ "nameExplicit": false,
510
+ "entityType": "fks"
511
+ },
512
+ {
513
+ "table": "task_read",
514
+ "name": "fk_task_read_task_id_tasks_id_fk",
515
+ "columns": [
516
+ "task_id"
517
+ ],
518
+ "tableTo": "tasks",
519
+ "columnsTo": [
520
+ "id"
521
+ ],
522
+ "onUpdate": "NO ACTION",
523
+ "onDelete": "CASCADE",
524
+ "nameExplicit": false,
525
+ "entityType": "fks"
526
+ },
527
+ {
528
+ "table": "file_changes",
529
+ "name": "file_changes_pk",
530
+ "columns": [
531
+ "task_id",
532
+ "scope",
533
+ "path"
534
+ ],
535
+ "nameExplicit": false,
536
+ "entityType": "pks"
537
+ },
538
+ {
539
+ "table": "task_send_receipts",
540
+ "name": "task_send_receipts_pk",
541
+ "columns": [
542
+ "owner",
543
+ "task_id",
544
+ "sender",
545
+ "request_id"
546
+ ],
547
+ "nameExplicit": false,
548
+ "entityType": "pks"
549
+ },
550
+ {
551
+ "table": "project_roots",
552
+ "name": "project_roots_pk",
553
+ "columns": [
554
+ "path"
555
+ ],
556
+ "nameExplicit": false,
557
+ "entityType": "pks"
558
+ },
559
+ {
560
+ "table": "user_settings",
561
+ "name": "user_settings_pk",
562
+ "columns": [
563
+ "owner"
564
+ ],
565
+ "nameExplicit": false,
566
+ "entityType": "pks"
567
+ },
568
+ {
569
+ "table": "events",
570
+ "name": "events_pk",
571
+ "columns": [
572
+ "id"
573
+ ],
574
+ "nameExplicit": false,
575
+ "entityType": "pks"
576
+ },
577
+ {
578
+ "table": "task_parent_seen",
579
+ "name": "task_parent_seen_pk",
580
+ "columns": [
581
+ "event_id"
582
+ ],
583
+ "nameExplicit": false,
584
+ "entityType": "pks"
585
+ },
586
+ {
587
+ "table": "task_archive",
588
+ "name": "task_archive_pk",
589
+ "columns": [
590
+ "task_id"
591
+ ],
592
+ "nameExplicit": false,
593
+ "entityType": "pks"
594
+ },
595
+ {
596
+ "table": "task_read",
597
+ "name": "task_read_pk",
598
+ "columns": [
599
+ "task_id"
600
+ ],
601
+ "nameExplicit": false,
602
+ "entityType": "pks"
603
+ },
604
+ {
605
+ "table": "tasks",
606
+ "name": "tasks_pk",
607
+ "columns": [
608
+ "id"
609
+ ],
610
+ "nameExplicit": false,
611
+ "entityType": "pks"
612
+ }
613
+ ],
614
+ "renames": []
615
+ }
@@ -0,0 +1,9 @@
1
+ ALTER TABLE `events` ADD `chat` integer DEFAULT false NOT NULL;--> statement-breakpoint
2
+ ALTER TABLE `tasks` ADD `status` text GENERATED ALWAYS AS (json_extract(body, '$.status')) VIRTUAL;--> statement-breakpoint
3
+ ALTER TABLE `tasks` ADD `created_at` text GENERATED ALWAYS AS (json_extract(body, '$.created_at')) VIRTUAL;--> statement-breakpoint
4
+ ALTER TABLE `tasks` ADD `conversation_id` text GENERATED ALWAYS AS (json_extract(body, '$.conversation_id')) VIRTUAL;--> statement-breakpoint
5
+ CREATE INDEX `events_task_type` ON `events` (`task_id`,`type`,`id`);--> statement-breakpoint
6
+ CREATE INDEX `events_task_chat` ON `events` (`task_id`,`chat`,`id`);--> statement-breakpoint
7
+ CREATE INDEX `tasks_owner_created` ON `tasks` (`owner`,`created_at`);--> statement-breakpoint
8
+ CREATE INDEX `tasks_owner_conversation` ON `tasks` (`owner`,`conversation_id`,`created_at`);--> statement-breakpoint
9
+ CREATE INDEX `tasks_status` ON `tasks` (`status`);