@gadmin2n/schematics 0.0.81 → 0.0.83
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/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/ITActivityDay.ts +1 -1
- package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/vitest.config.ts +1 -1
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/inspectorActions.ts +68 -21
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +34 -19
- package/package.json +1 -1
- /package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/{__tests__ → tests}/activities/code-execute.test.ts +0 -0
- /package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/{__tests__ → tests}/activities/http-request.test.ts +0 -0
- /package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/{__tests__ → tests}/helpers.test.ts +0 -0
- /package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/{__tests__ → tests}/node-type-consistency.test.ts +0 -0
|
@@ -236,6 +236,7 @@ export function getInspectorActions(
|
|
|
236
236
|
label: '修改字段值展示样式',
|
|
237
237
|
skill: 'list-column-render',
|
|
238
238
|
promptTemplate: `自定义 ${col(r, f)} 的渲染样式`,
|
|
239
|
+
promptPrefix: '具体要求:',
|
|
239
240
|
requiresInput: true,
|
|
240
241
|
inputPlaceholder:
|
|
241
242
|
'请描述样式要求,例如:用颜色区分状态,ACTIVE 显示绿色,INACTIVE 显示红色',
|
|
@@ -247,6 +248,7 @@ export function getInspectorActions(
|
|
|
247
248
|
skill: 'page-i18n',
|
|
248
249
|
promptTemplate: `修改 ${col(r, f)} 的显示名称(通过 i18n 翻译文件)`,
|
|
249
250
|
requiresInput: true,
|
|
251
|
+
promptPrefix: '修改为:',
|
|
250
252
|
inputPlaceholder:
|
|
251
253
|
'请分别提供中文和英文名称,例如:\n中文:审核状态\n英文:Review Status\n(翻译 key:resources.{resourceName}.fields.{fieldName})',
|
|
252
254
|
promptSuffix:
|
|
@@ -255,7 +257,8 @@ export function getInspectorActions(
|
|
|
255
257
|
{
|
|
256
258
|
label: '固定列',
|
|
257
259
|
skill: 'list-column-fixed',
|
|
258
|
-
promptTemplate: `将 ${col(r, f)}
|
|
260
|
+
promptTemplate: `将 ${col(r, f)} `,
|
|
261
|
+
promptPrefix: '固定到:',
|
|
259
262
|
requiresInput: true,
|
|
260
263
|
inputPlaceholder: '请指定固定方向:左 / 右',
|
|
261
264
|
promptSuffix:
|
|
@@ -309,12 +312,13 @@ export function getInspectorActions(
|
|
|
309
312
|
fieldSubMenu: 'add-before',
|
|
310
313
|
},
|
|
311
314
|
{
|
|
312
|
-
label: '
|
|
315
|
+
label: '在列中添加关联表的字段',
|
|
313
316
|
skill: 'list-extend-prisma-select',
|
|
314
|
-
promptTemplate: `为 ${col(r, f)}
|
|
317
|
+
promptTemplate: `为 ${col(r, f)} 添加关联表的字段展示`,
|
|
315
318
|
requiresInput: true,
|
|
319
|
+
promptPrefix: '要添加的字段:',
|
|
316
320
|
inputPlaceholder:
|
|
317
|
-
'
|
|
321
|
+
'请描述要添加的关联字段,例如:author.name 作者姓名',
|
|
318
322
|
promptSuffix:
|
|
319
323
|
'\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
|
|
320
324
|
},
|
|
@@ -323,7 +327,7 @@ export function getInspectorActions(
|
|
|
323
327
|
skill: null,
|
|
324
328
|
requiresInput: true,
|
|
325
329
|
promptTemplate: `对 ${r} 列表中的 "${f}" 列进行修改`,
|
|
326
|
-
promptPrefix: '
|
|
330
|
+
promptPrefix: '具体要求:',
|
|
327
331
|
inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
|
|
328
332
|
promptSuffix:
|
|
329
333
|
'\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
|
|
@@ -351,6 +355,7 @@ export function getInspectorActions(
|
|
|
351
355
|
skill: 'page-i18n',
|
|
352
356
|
promptTemplate: `修改 ${formF(r, f)} 的显示名称(通过 i18n 翻译文件)`,
|
|
353
357
|
requiresInput: true,
|
|
358
|
+
promptPrefix: '修改为:',
|
|
354
359
|
inputPlaceholder:
|
|
355
360
|
'请分别提供中文和英文名称,例如:\n中文:游戏名称\n英文:Game Name\n(翻译 key:resources.{resourceName}.fields.{fieldName})',
|
|
356
361
|
promptSuffix:
|
|
@@ -360,6 +365,7 @@ export function getInspectorActions(
|
|
|
360
365
|
label: '字段旁添加帮助提示(含链接)',
|
|
361
366
|
skill: 'form-field-tooltip',
|
|
362
367
|
promptTemplate: `为 ${formF(r, f)} 添加 Tooltip 帮助提示(可包含链接)`,
|
|
368
|
+
promptPrefix: '要添加的提示内容:',
|
|
363
369
|
requiresInput: true,
|
|
364
370
|
inputPlaceholder:
|
|
365
371
|
'请描述提示内容,例如:\n提示文字"详见配置文档",链接 https://docs.example.com\n或纯文字:此字段用于关联上游系统的唯一标识',
|
|
@@ -370,6 +376,7 @@ export function getInspectorActions(
|
|
|
370
376
|
label: '字段联动(显/隐)',
|
|
371
377
|
skill: 'form-field-dependencies',
|
|
372
378
|
promptTemplate: `为 ${formF(r, f)} 添加联动依赖(显/隐依赖其他字段)`,
|
|
379
|
+
promptPrefix: '要添加的联动条件:',
|
|
373
380
|
requiresInput: true,
|
|
374
381
|
inputPlaceholder:
|
|
375
382
|
'请描述联动条件,例如:当"类型"字段值为"高级"时才显示此字段',
|
|
@@ -380,6 +387,7 @@ export function getInspectorActions(
|
|
|
380
387
|
label: '自定义校验逻辑',
|
|
381
388
|
skill: 'form-custom-validator',
|
|
382
389
|
promptTemplate: `为 ${formF(r, f)} 添加自定义校验规则`,
|
|
390
|
+
promptPrefix: '要添加的校验规则:',
|
|
383
391
|
requiresInput: true,
|
|
384
392
|
inputPlaceholder: '请描述校验规则,例如:必须是正整数且不超过 100',
|
|
385
393
|
promptSuffix:
|
|
@@ -389,6 +397,7 @@ export function getInspectorActions(
|
|
|
389
397
|
label: '改为级联选择器',
|
|
390
398
|
skill: 'form-cascader-component',
|
|
391
399
|
promptTemplate: `将 ${formF(r, f)} 替换为级联选择器`,
|
|
400
|
+
promptPrefix: '级联层级关系和数据来源:',
|
|
392
401
|
requiresInput: true,
|
|
393
402
|
inputPlaceholder:
|
|
394
403
|
'请描述级联层级和数据来源,例如:省 → 市 → 区,数据来自 /api/regions',
|
|
@@ -406,6 +415,7 @@ export function getInspectorActions(
|
|
|
406
415
|
label: '修改字段类型',
|
|
407
416
|
skill: 'prisma-schema-update',
|
|
408
417
|
promptTemplate: `修改 ${formF(r, f)} 的表单控件类型(@FormItem 注解)`,
|
|
418
|
+
promptPrefix: '修改为:',
|
|
409
419
|
requiresInput: true,
|
|
410
420
|
inputPlaceholder:
|
|
411
421
|
'请说明要改为什么控件类型,例如:改为下拉选择(Select DRAFT|PUBLISHED)、改为开关(Boolean)、改为多行文本(Text)、改为数字输入框(Number)',
|
|
@@ -428,6 +438,7 @@ export function getInspectorActions(
|
|
|
428
438
|
label: '字段选项从关联接口动态加载',
|
|
429
439
|
skill: 'form-load-related-data',
|
|
430
440
|
promptTemplate: `为 ${formF(r, f)} 的选项从关联接口动态加载`,
|
|
441
|
+
promptPrefix: '数据来源(接口):',
|
|
431
442
|
requiresInput: true,
|
|
432
443
|
inputPlaceholder:
|
|
433
444
|
'请描述数据来源接口,例如:从 /api/games 加载游戏列表作为下拉选项',
|
|
@@ -435,9 +446,10 @@ export function getInspectorActions(
|
|
|
435
446
|
'\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
|
|
436
447
|
},
|
|
437
448
|
{
|
|
438
|
-
label: '
|
|
449
|
+
label: '表单提交前转换字段数据',
|
|
439
450
|
skill: 'form-data-transform',
|
|
440
|
-
promptTemplate: `为 ${formF(r, f)}
|
|
451
|
+
promptTemplate: `为 ${formF(r, f)} 添加数据转换逻辑(表单提交前)`,
|
|
452
|
+
promptPrefix: '具体转换规则:',
|
|
441
453
|
requiresInput: true,
|
|
442
454
|
inputPlaceholder:
|
|
443
455
|
'请描述转换规则,例如:提交前将数组转为逗号分隔字符串,回填时再拆回数组',
|
|
@@ -449,7 +461,7 @@ export function getInspectorActions(
|
|
|
449
461
|
skill: null,
|
|
450
462
|
requiresInput: true,
|
|
451
463
|
promptTemplate: `对 ${r} 表单中的 "${f}" 字段进行修改`,
|
|
452
|
-
promptPrefix: '
|
|
464
|
+
promptPrefix: '具体要求:',
|
|
453
465
|
inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
|
|
454
466
|
promptSuffix:
|
|
455
467
|
'\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
|
|
@@ -469,6 +481,7 @@ export function getInspectorActions(
|
|
|
469
481
|
label: '修改字段值展示样式',
|
|
470
482
|
skill: 'show-field-render',
|
|
471
483
|
promptTemplate: `自定义 ${showF(r, f)} 的显示方式`,
|
|
484
|
+
promptPrefix: '具体要求:',
|
|
472
485
|
requiresInput: true,
|
|
473
486
|
inputPlaceholder:
|
|
474
487
|
'请描述样式要求,例如:将 JSON 格式化展示,或用颜色标签渲染状态',
|
|
@@ -479,6 +492,7 @@ export function getInspectorActions(
|
|
|
479
492
|
label: '修改描述(label)',
|
|
480
493
|
skill: 'page-i18n',
|
|
481
494
|
promptTemplate: `修改 ${showF(r, f)} 的标签名称(通过 i18n 翻译文件)`,
|
|
495
|
+
promptPrefix: '修改为:',
|
|
482
496
|
requiresInput: true,
|
|
483
497
|
inputPlaceholder:
|
|
484
498
|
'请分别提供中文和英文名称,例如:\n中文:审核状态\n英文:Review Status\n(翻译 key:resources.{resourceName}.fields.{fieldName})',
|
|
@@ -502,7 +516,7 @@ export function getInspectorActions(
|
|
|
502
516
|
skill: null,
|
|
503
517
|
requiresInput: true,
|
|
504
518
|
promptTemplate: `对 ${r} 详情页的 "${f}" 字段进行修改`,
|
|
505
|
-
promptPrefix: '
|
|
519
|
+
promptPrefix: '具体要求:',
|
|
506
520
|
inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
|
|
507
521
|
promptSuffix:
|
|
508
522
|
'\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
|
|
@@ -515,6 +529,7 @@ export function getInspectorActions(
|
|
|
515
529
|
label: '增加 模糊匹配 过滤',
|
|
516
530
|
skill: 'list-search-filter',
|
|
517
531
|
promptTemplate: `为 ${r} 搜索栏添加模糊匹配过滤(通过修改ui配置)`,
|
|
532
|
+
promptPrefix: '要添加的字段:',
|
|
518
533
|
requiresInput: true,
|
|
519
534
|
inputPlaceholder: '请填写要添加模糊搜索的字段名,例如:name、title',
|
|
520
535
|
promptSuffix:
|
|
@@ -524,9 +539,10 @@ export function getInspectorActions(
|
|
|
524
539
|
label: '增加 下拉 过滤',
|
|
525
540
|
skill: 'list-search-filter',
|
|
526
541
|
promptTemplate: `为 ${r} 搜索栏添加 Select 下拉过滤`,
|
|
542
|
+
promptPrefix: '要添加的字段:',
|
|
527
543
|
requiresInput: true,
|
|
528
544
|
inputPlaceholder:
|
|
529
|
-
'
|
|
545
|
+
'请填写字段名,例如:字段 status;或字段 gameId,选项来自关联表 game 的 name 字段',
|
|
530
546
|
promptSuffix:
|
|
531
547
|
'\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
|
|
532
548
|
},
|
|
@@ -534,9 +550,10 @@ export function getInspectorActions(
|
|
|
534
550
|
label: '增加 checkbox 过滤',
|
|
535
551
|
skill: 'list-search-filter',
|
|
536
552
|
promptTemplate: `为 ${r} 搜索栏添加 Checkbox 多选过滤`,
|
|
553
|
+
promptPrefix: '要添加的字段:',
|
|
537
554
|
requiresInput: true,
|
|
538
555
|
inputPlaceholder:
|
|
539
|
-
'请填写字段名及选项,例如:字段 category
|
|
556
|
+
'请填写字段名及选项,例如:字段 category',
|
|
540
557
|
promptSuffix:
|
|
541
558
|
'\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
|
|
542
559
|
},
|
|
@@ -544,6 +561,7 @@ export function getInspectorActions(
|
|
|
544
561
|
label: '增加 radio 过滤',
|
|
545
562
|
skill: 'list-search-filter',
|
|
546
563
|
promptTemplate: `为 ${r} 搜索栏添加 Radio 单选过滤`,
|
|
564
|
+
promptPrefix: '要添加的字段:',
|
|
547
565
|
requiresInput: true,
|
|
548
566
|
inputPlaceholder:
|
|
549
567
|
'请填写字段名及选项,例如:字段 type,选项:全部|在线|离线',
|
|
@@ -554,6 +572,7 @@ export function getInspectorActions(
|
|
|
554
572
|
label: '添加固定过滤(不可清除)',
|
|
555
573
|
skill: 'list-search-filter',
|
|
556
574
|
promptTemplate: `为 ${r} 列表页添加不可被用户清除的固定过滤条件(permanentFilter)`,
|
|
575
|
+
promptPrefix: '要添加的固定过滤条件:',
|
|
557
576
|
requiresInput: true,
|
|
558
577
|
inputPlaceholder:
|
|
559
578
|
'请描述固定过滤条件,例如:始终只显示 status=ACTIVE 的数据,或按当前用户 ID 过滤',
|
|
@@ -564,6 +583,7 @@ export function getInspectorActions(
|
|
|
564
583
|
label: '移除 过滤字段',
|
|
565
584
|
skill: 'list-search-filter',
|
|
566
585
|
promptTemplate: `从 ${r} 搜索栏删除过滤字段`,
|
|
586
|
+
promptPrefix: '要删除的过滤字段:',
|
|
567
587
|
requiresInput: true,
|
|
568
588
|
inputPlaceholder: '请填写要删除的过滤字段名',
|
|
569
589
|
promptSuffix:
|
|
@@ -573,6 +593,7 @@ export function getInspectorActions(
|
|
|
573
593
|
label: '修改描述(label)',
|
|
574
594
|
skill: 'page-i18n',
|
|
575
595
|
promptTemplate: `修改 ${r} 搜索栏某个过滤字段的显示名称(通过 i18n 翻译文件)`,
|
|
596
|
+
promptPrefix: '修改为:',
|
|
576
597
|
requiresInput: true,
|
|
577
598
|
inputPlaceholder:
|
|
578
599
|
'请填写字段名,并分别提供中文和英文名称,例如:\n字段:status\n中文:审核状态\n英文:Review Status\n(翻译 key:resources.{resourceName}.fields.{fieldName})',
|
|
@@ -584,7 +605,7 @@ export function getInspectorActions(
|
|
|
584
605
|
skill: null,
|
|
585
606
|
requiresInput: true,
|
|
586
607
|
promptTemplate: `对 ${r} 列表页的搜索栏进行修改`,
|
|
587
|
-
promptPrefix: '
|
|
608
|
+
promptPrefix: '具体要求:',
|
|
588
609
|
inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
|
|
589
610
|
promptSuffix:
|
|
590
611
|
'\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
|
|
@@ -601,6 +622,7 @@ export function getInspectorActions(
|
|
|
601
622
|
label: '按条件显示',
|
|
602
623
|
skill: 'list-createbtn-customization',
|
|
603
624
|
promptTemplate: `为 ${r} 列表页工具栏新建按钮添加条件显示逻辑`,
|
|
625
|
+
promptPrefix: '显示条件:',
|
|
604
626
|
requiresInput: true,
|
|
605
627
|
inputPlaceholder:
|
|
606
628
|
'请描述显示条件,例如:仅角色为 GPU_ADMIN 时才显示新建按钮',
|
|
@@ -611,6 +633,7 @@ export function getInspectorActions(
|
|
|
611
633
|
label: '修改描述(label)',
|
|
612
634
|
skill: 'page-i18n',
|
|
613
635
|
promptTemplate: `修改 ${r} 列表页工具栏新建按钮的显示名称(通过 i18n 翻译文件)`,
|
|
636
|
+
promptPrefix: '修改为:',
|
|
614
637
|
requiresInput: true,
|
|
615
638
|
inputPlaceholder:
|
|
616
639
|
'请分别提供中文和英文,例如:\n中文:新建游戏\n英文:Create Game',
|
|
@@ -634,6 +657,7 @@ export function getInspectorActions(
|
|
|
634
657
|
label: '按条件显示',
|
|
635
658
|
skill: 'list-import-customization',
|
|
636
659
|
promptTemplate: `为 ${r} 列表页工具栏添加按条件显示的 导入按钮`,
|
|
660
|
+
promptPrefix: '显示条件:',
|
|
637
661
|
requiresInput: true,
|
|
638
662
|
inputPlaceholder: '请描述显示条件',
|
|
639
663
|
promptSuffix:
|
|
@@ -643,6 +667,7 @@ export function getInspectorActions(
|
|
|
643
667
|
label: '修改描述(label)',
|
|
644
668
|
skill: 'page-i18n',
|
|
645
669
|
promptTemplate: `修改 ${r} 列表页工具栏导入按钮的显示名称(通过 i18n 翻译文件)`,
|
|
670
|
+
promptPrefix: '修改为:',
|
|
646
671
|
requiresInput: true,
|
|
647
672
|
inputPlaceholder: '请分别提供中文和英文',
|
|
648
673
|
promptSuffix:
|
|
@@ -671,6 +696,7 @@ export function getInspectorActions(
|
|
|
671
696
|
label: '按条件显示',
|
|
672
697
|
skill: 'list-export-customization',
|
|
673
698
|
promptTemplate: `为 ${r} 列表页工具栏添加按条件显示的 导出按钮`,
|
|
699
|
+
promptPrefix: '显示条件:',
|
|
674
700
|
requiresInput: true,
|
|
675
701
|
inputPlaceholder: '请描述显示条件',
|
|
676
702
|
promptSuffix:
|
|
@@ -680,6 +706,7 @@ export function getInspectorActions(
|
|
|
680
706
|
label: '修改描述(label)',
|
|
681
707
|
skill: 'page-i18n',
|
|
682
708
|
promptTemplate: `修改 ${r} 列表页工具栏导出按钮的显示名称(通过 i18n 翻译文件)`,
|
|
709
|
+
promptPrefix: '修改为:',
|
|
683
710
|
requiresInput: true,
|
|
684
711
|
inputPlaceholder: '请分别提供中文和英文',
|
|
685
712
|
promptSuffix:
|
|
@@ -715,6 +742,7 @@ export function getInspectorActions(
|
|
|
715
742
|
label: '修改描述(label)',
|
|
716
743
|
skill: 'page-i18n',
|
|
717
744
|
promptTemplate: `修改 ${r} 列表页工具栏刷新按钮的显示名称(通过 i18n 翻译文件)`,
|
|
745
|
+
promptPrefix: '修改为:',
|
|
718
746
|
requiresInput: true,
|
|
719
747
|
inputPlaceholder: '请分别提供中文和英文',
|
|
720
748
|
promptSuffix:
|
|
@@ -748,7 +776,7 @@ export function getInspectorActions(
|
|
|
748
776
|
skill: null,
|
|
749
777
|
requiresInput: true,
|
|
750
778
|
promptTemplate: `对 ${r} 列表页的工具栏区域(ListPageHeader 组件)进行修改`,
|
|
751
|
-
promptPrefix: '
|
|
779
|
+
promptPrefix: '具体要求:',
|
|
752
780
|
promptSuffix: `注意:ListPageHeader 是公共组件,不可直接修改其源码。\n请优先通过调整列表页中 ListPageHeader 的 render props 来实现;\n如果 render props 无法满足需求,再在列表页内创建局部组件来替代。\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动`,
|
|
753
781
|
inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
|
|
754
782
|
},
|
|
@@ -760,6 +788,7 @@ export function getInspectorActions(
|
|
|
760
788
|
label: '添加操作按钮',
|
|
761
789
|
skill: 'list-custom-row-actions',
|
|
762
790
|
promptTemplate: `为 ${r} 列表页行操作添加自定义按钮(通过CHANGE_STATUS配置 或者 自定义行操作)`,
|
|
791
|
+
promptPrefix: '具体要求:',
|
|
763
792
|
requiresInput: true,
|
|
764
793
|
inputPlaceholder:
|
|
765
794
|
'请描述按钮的名称、修改的状态字段和变更目标的值,例如:添加"发布"按钮,将 status 字段从 PENDING 改为 APPROVED' +
|
|
@@ -772,6 +801,7 @@ export function getInspectorActions(
|
|
|
772
801
|
label: '添加 跳转至外部链接 按钮',
|
|
773
802
|
skill: 'list-row-action-external',
|
|
774
803
|
promptTemplate: `为 ${r} 列表页行操作添加跳转链接按钮`,
|
|
804
|
+
promptPrefix: '具体要求:',
|
|
775
805
|
requiresInput: true,
|
|
776
806
|
inputPlaceholder:
|
|
777
807
|
'请描述按钮名称和跳转目标,例如:添加"查看报表"按钮,跳转到 /reports/:id',
|
|
@@ -782,6 +812,7 @@ export function getInspectorActions(
|
|
|
782
812
|
label: '添加 跳转至站内页面 按钮',
|
|
783
813
|
skill: 'list-row-action-link',
|
|
784
814
|
promptTemplate: `为 ${r} 列表页行操作添加站内页面跳转按钮`,
|
|
815
|
+
promptPrefix: '具体要求:',
|
|
785
816
|
requiresInput: true,
|
|
786
817
|
inputPlaceholder:
|
|
787
818
|
'请描述按钮名称和目标页面,例如:添加"查看详情"按钮,跳转到 /orders/:id/detail',
|
|
@@ -792,9 +823,10 @@ export function getInspectorActions(
|
|
|
792
823
|
label: '按条件显示 编辑 按钮 ',
|
|
793
824
|
skill: 'ui-config-update',
|
|
794
825
|
promptTemplate: `为 ${r} 列表页的 编辑 按钮添加条件显示逻辑(EDIT)`,
|
|
826
|
+
promptPrefix: '显示条件:',
|
|
795
827
|
requiresInput: true,
|
|
796
828
|
inputPlaceholder:
|
|
797
|
-
'
|
|
829
|
+
'请描述显示条件,例如:当 status 为 PENDING 时显示 编辑 按钮',
|
|
798
830
|
promptSuffix:
|
|
799
831
|
'\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
|
|
800
832
|
},
|
|
@@ -803,7 +835,7 @@ export function getInspectorActions(
|
|
|
803
835
|
skill: null,
|
|
804
836
|
requiresInput: true,
|
|
805
837
|
promptTemplate: `对 ${r} 列表页的行操作区域(RowActions 组件)进行修改`,
|
|
806
|
-
promptPrefix: '
|
|
838
|
+
promptPrefix: '具体要求:',
|
|
807
839
|
promptSuffix: `注意:RowActions 是公共组件,不可直接修改其源码。\n请优先通过调整列表页中 RowActions 的 render props 来实现;\n如果 render props 无法满足需求,再在列表页内创建局部组件来替代。\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动`,
|
|
808
840
|
inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
|
|
809
841
|
},
|
|
@@ -839,6 +871,7 @@ export function getInspectorActions(
|
|
|
839
871
|
label: '添加(固定值,如状态)',
|
|
840
872
|
skill: 'list-bulk-actions-batch-modify-modal',
|
|
841
873
|
promptTemplate: `为 ${r} 列表页添加批量编辑弹窗(固定值)`,
|
|
874
|
+
promptPrefix: '具体要求:',
|
|
842
875
|
requiresInput: true,
|
|
843
876
|
inputPlaceholder:
|
|
844
877
|
'请描述要批量修改的字段和固定值,例如:将 status 批量设为 PUBLISHED',
|
|
@@ -849,6 +882,7 @@ export function getInspectorActions(
|
|
|
849
882
|
label: '添加(用户输入)',
|
|
850
883
|
skill: 'list-bulk-actions-batch-modify-modal',
|
|
851
884
|
promptTemplate: `为 ${r} 列表页添加批量编辑弹窗(用户输入)`,
|
|
885
|
+
promptPrefix: '具体要求:',
|
|
852
886
|
requiresInput: true,
|
|
853
887
|
inputPlaceholder:
|
|
854
888
|
'请描述要批量编辑的字段,例如:让用户输入 remark 后批量更新',
|
|
@@ -889,7 +923,7 @@ export function getInspectorActions(
|
|
|
889
923
|
skill: null,
|
|
890
924
|
requiresInput: true,
|
|
891
925
|
promptTemplate: `对 ${r} 列表页的批量操作区域(BulkActions 组件)进行修改`,
|
|
892
|
-
promptPrefix: '
|
|
926
|
+
promptPrefix: '具体要求:',
|
|
893
927
|
promptSuffix: `注意:BulkActions 是公共组件,不可直接修改其源码。\n请优先通过调整列表页中 BulkActions 的 render props(如 renderDeleteButton、extraActions 等)来实现;\n如果 render props 无法满足需求,再在列表页内创建局部组件来替代。\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动`,
|
|
894
928
|
inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
|
|
895
929
|
},
|
|
@@ -902,6 +936,7 @@ export function getInspectorActions(
|
|
|
902
936
|
skill: 'header-customization',
|
|
903
937
|
promptTemplate: `修改网站标题文字`,
|
|
904
938
|
requiresInput: true,
|
|
939
|
+
promptPrefix: '修改为:',
|
|
905
940
|
inputPlaceholder:
|
|
906
941
|
'请描述修改内容,例如:\n- 改为"xxx 管理后台"\n- 隐藏标题只保留 Logo',
|
|
907
942
|
promptSuffix:
|
|
@@ -912,6 +947,7 @@ export function getInspectorActions(
|
|
|
912
947
|
skill: 'header-customization',
|
|
913
948
|
promptTemplate: `修改网站 Logo`,
|
|
914
949
|
requiresInput: true,
|
|
950
|
+
promptPrefix: '具体要求:',
|
|
915
951
|
inputPlaceholder:
|
|
916
952
|
'请描述修改内容,例如:\n- 替换为图片 Logo(提供图片路径或 URL)\n- 修改 Logo 颜色\n- 隐藏 Logo',
|
|
917
953
|
promptSuffix:
|
|
@@ -922,7 +958,7 @@ export function getInspectorActions(
|
|
|
922
958
|
skill: null,
|
|
923
959
|
requiresInput: true,
|
|
924
960
|
promptTemplate: `对页面标题和 Logo 区域进行修改`,
|
|
925
|
-
promptPrefix: '
|
|
961
|
+
promptPrefix: '具体要求:',
|
|
926
962
|
inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
|
|
927
963
|
promptSuffix:
|
|
928
964
|
'\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
|
|
@@ -936,6 +972,7 @@ export function getInspectorActions(
|
|
|
936
972
|
skill: 'header-customization',
|
|
937
973
|
promptTemplate: `修改顶部导航的业务(游戏)选择器`,
|
|
938
974
|
requiresInput: true,
|
|
975
|
+
promptPrefix: '具体要求:',
|
|
939
976
|
inputPlaceholder:
|
|
940
977
|
'请描述修改内容,例如:\n- 隐藏选择器\n- 修改宽度为 200px\n- 默认选中第一项',
|
|
941
978
|
promptSuffix:
|
|
@@ -945,6 +982,7 @@ export function getInspectorActions(
|
|
|
945
982
|
label: '修改语言切换',
|
|
946
983
|
skill: 'header-customization',
|
|
947
984
|
promptTemplate: `修改顶部导航的语言切换`,
|
|
985
|
+
promptPrefix: '具体要求:',
|
|
948
986
|
requiresInput: true,
|
|
949
987
|
inputPlaceholder:
|
|
950
988
|
'请描述修改内容,例如:\n- 隐藏语言切换\n- 只保留中文,移除多语言切换',
|
|
@@ -956,6 +994,7 @@ export function getInspectorActions(
|
|
|
956
994
|
skill: 'header-customization',
|
|
957
995
|
promptTemplate: `修改顶部导航的用户信息区`,
|
|
958
996
|
requiresInput: true,
|
|
997
|
+
promptPrefix: '具体要求:',
|
|
959
998
|
inputPlaceholder:
|
|
960
999
|
'请描述修改内容,例如:\n- 隐藏用户名,只显示头像\n- 隐藏头像和用户名\n- 点击用户名跳转到个人主页',
|
|
961
1000
|
promptSuffix:
|
|
@@ -966,6 +1005,7 @@ export function getInspectorActions(
|
|
|
966
1005
|
skill: 'header-customization',
|
|
967
1006
|
promptTemplate: `修改顶部导航的整体样式`,
|
|
968
1007
|
requiresInput: true,
|
|
1008
|
+
promptPrefix: '具体要求:',
|
|
969
1009
|
inputPlaceholder:
|
|
970
1010
|
'请描述修改内容,例如:\n- 背景色改为深色 #001529\n- 高度改为 48px\n- 左侧添加系统标题文字',
|
|
971
1011
|
promptSuffix:
|
|
@@ -976,7 +1016,7 @@ export function getInspectorActions(
|
|
|
976
1016
|
skill: null,
|
|
977
1017
|
requiresInput: true,
|
|
978
1018
|
promptTemplate: `对顶部导航栏(App Header 组件)进行修改`,
|
|
979
|
-
promptPrefix: '
|
|
1019
|
+
promptPrefix: '具体要求:',
|
|
980
1020
|
inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
|
|
981
1021
|
promptSuffix:
|
|
982
1022
|
'\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
|
|
@@ -994,6 +1034,7 @@ export function getInspectorActions(
|
|
|
994
1034
|
skill: 'show-readonly-header',
|
|
995
1035
|
promptTemplate: `为 ${r} 详情页编辑按钮添加条件显示逻辑`,
|
|
996
1036
|
requiresInput: true,
|
|
1037
|
+
promptPrefix: '显示条件:',
|
|
997
1038
|
inputPlaceholder:
|
|
998
1039
|
'请描述显示条件,例如:仅角色为 ADMIN 时才显示编辑按钮',
|
|
999
1040
|
promptSuffix:
|
|
@@ -1003,6 +1044,7 @@ export function getInspectorActions(
|
|
|
1003
1044
|
label: '修改描述(label)',
|
|
1004
1045
|
skill: 'page-i18n',
|
|
1005
1046
|
promptTemplate: `修改 ${r} 详情页编辑按钮的显示名称(通过 i18n 翻译文件)`,
|
|
1047
|
+
promptPrefix: '修改为:',
|
|
1006
1048
|
requiresInput: true,
|
|
1007
1049
|
inputPlaceholder:
|
|
1008
1050
|
'请分别提供中文和英文,例如:\n中文:修改\n英文:Edit',
|
|
@@ -1033,6 +1075,7 @@ export function getInspectorActions(
|
|
|
1033
1075
|
label: '显示(按条件)',
|
|
1034
1076
|
skill: 'show-readonly-header',
|
|
1035
1077
|
promptTemplate: `为 ${r} 详情页复制按钮添加条件显示逻辑`,
|
|
1078
|
+
promptPrefix: '显示条件:',
|
|
1036
1079
|
requiresInput: true,
|
|
1037
1080
|
inputPlaceholder: '请描述显示条件',
|
|
1038
1081
|
promptSuffix:
|
|
@@ -1042,6 +1085,7 @@ export function getInspectorActions(
|
|
|
1042
1085
|
label: '修改描述(label)',
|
|
1043
1086
|
skill: 'page-i18n',
|
|
1044
1087
|
promptTemplate: `修改 ${r} 详情页复制按钮的显示名称(通过 i18n 翻译文件)`,
|
|
1088
|
+
promptPrefix: '修改为:',
|
|
1045
1089
|
requiresInput: true,
|
|
1046
1090
|
inputPlaceholder:
|
|
1047
1091
|
'请分别提供中文和英文,例如:\n中文:复制\n英文:Clone',
|
|
@@ -1064,7 +1108,8 @@ export function getInspectorActions(
|
|
|
1064
1108
|
{
|
|
1065
1109
|
label: '显示(按条件)',
|
|
1066
1110
|
skill: 'show-readonly-header',
|
|
1067
|
-
promptTemplate: `为 ${r}
|
|
1111
|
+
promptTemplate: `为 ${r} 详情页删除按钮添加条件显示的逻辑`,
|
|
1112
|
+
promptPrefix: '具体逻辑为:',
|
|
1068
1113
|
requiresInput: true,
|
|
1069
1114
|
inputPlaceholder:
|
|
1070
1115
|
'请描述显示条件,例如:当 status 为 PUBLISHED 时隐藏删除按钮',
|
|
@@ -1075,6 +1120,7 @@ export function getInspectorActions(
|
|
|
1075
1120
|
label: '修改描述(label)',
|
|
1076
1121
|
skill: 'page-i18n',
|
|
1077
1122
|
promptTemplate: `修改 ${r} 详情页删除按钮的显示名称(通过 i18n 翻译文件)`,
|
|
1123
|
+
promptPrefix: '修改为:',
|
|
1078
1124
|
requiresInput: true,
|
|
1079
1125
|
inputPlaceholder:
|
|
1080
1126
|
'请分别提供中文和英文,例如:\n中文:删除\n英文:Delete',
|
|
@@ -1105,6 +1151,7 @@ export function getInspectorActions(
|
|
|
1105
1151
|
label: '修改描述(label)',
|
|
1106
1152
|
skill: 'page-i18n',
|
|
1107
1153
|
promptTemplate: `修改 ${r} 详情页刷新按钮的显示名称(通过 i18n 翻译文件)`,
|
|
1154
|
+
promptPrefix: '修改为:',
|
|
1108
1155
|
requiresInput: true,
|
|
1109
1156
|
inputPlaceholder:
|
|
1110
1157
|
'请分别提供中文和英文,例如:\n中文:刷新\n英文:Refresh',
|
|
@@ -1124,7 +1171,7 @@ export function getInspectorActions(
|
|
|
1124
1171
|
label: '添加 自定义操作按钮(可调接口)',
|
|
1125
1172
|
skill: 'show-readonly-header',
|
|
1126
1173
|
promptTemplate: `为 ${r} 详情页工具栏添加自定义操作按钮`,
|
|
1127
|
-
promptPrefix: '
|
|
1174
|
+
promptPrefix: '具体要求:',
|
|
1128
1175
|
requiresInput: true,
|
|
1129
1176
|
inputPlaceholder:
|
|
1130
1177
|
'请描述按钮名称和要调用的接口,例如:添加"审核通过"按钮,点击后调用 POST /api/approve/:id',
|
|
@@ -1143,7 +1190,7 @@ export function getInspectorActions(
|
|
|
1143
1190
|
skill: null,
|
|
1144
1191
|
requiresInput: true,
|
|
1145
1192
|
promptTemplate: `对 ${r} 详情页的操作工具栏(show header 区域)进行修改`,
|
|
1146
|
-
promptPrefix: '
|
|
1193
|
+
promptPrefix: '具体要求:',
|
|
1147
1194
|
inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
|
|
1148
1195
|
promptSuffix:
|
|
1149
1196
|
'\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
|
|
@@ -97,19 +97,36 @@ export default function DevShell() {
|
|
|
97
97
|
});
|
|
98
98
|
}, []);
|
|
99
99
|
|
|
100
|
+
// ── new-conversation + send prompt helper ───────────────────────────────
|
|
101
|
+
// Always start a fresh conversation before sending a prompt. Mirrors the
|
|
102
|
+
// SDK's own "新会话" button: `addConversation('新会话', true)` → emit
|
|
103
|
+
// NEW_CONVERSATION → sendUserPrompt. The second arg `true` forces creation
|
|
104
|
+
// even if the current conversation is empty (no id), so callers always get
|
|
105
|
+
// a fresh slate.
|
|
106
|
+
const startNewConversationAndSend = useCallback(
|
|
107
|
+
async (sdk: any, prompt: string) => {
|
|
108
|
+
await sdk.addConversation('新会话', true);
|
|
109
|
+
// const NEW_CONV = window.ChatSDK?.ChatEventKey?.NEW_CONVERSATION;
|
|
110
|
+
// if (NEW_CONV) sdk.emit(NEW_CONV, {});
|
|
111
|
+
return sdk.sendUserPrompt(prompt);
|
|
112
|
+
},
|
|
113
|
+
[],
|
|
114
|
+
);
|
|
115
|
+
|
|
100
116
|
// ── send prompt helper ───────────────────────────────────────────────────
|
|
101
|
-
const sendPromptToAgent = useCallback(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
.catch((err: any) =>
|
|
117
|
+
const sendPromptToAgent = useCallback(
|
|
118
|
+
(prompt: string) => {
|
|
119
|
+
setAgentVisible(true);
|
|
120
|
+
const sdk = sdkRef.current;
|
|
121
|
+
if (!sdk) return;
|
|
122
|
+
setTimeout(() => {
|
|
123
|
+
startNewConversationAndSend(sdk, prompt).catch((err: any) =>
|
|
109
124
|
console.error('[DevShell] sendUserPrompt failed:', err),
|
|
110
125
|
);
|
|
111
|
-
|
|
112
|
-
|
|
126
|
+
}, 300);
|
|
127
|
+
},
|
|
128
|
+
[startNewConversationAndSend],
|
|
129
|
+
);
|
|
113
130
|
|
|
114
131
|
// ── persist agent visibility ─────────────────────────────────────────────
|
|
115
132
|
useEffect(() => {
|
|
@@ -124,7 +141,7 @@ export default function DevShell() {
|
|
|
124
141
|
header: { logo: '', title: 'Coding Agent' },
|
|
125
142
|
empty: '',
|
|
126
143
|
streamingTimeout: 1800,
|
|
127
|
-
initialConversation:
|
|
144
|
+
initialConversation: false,
|
|
128
145
|
service: {
|
|
129
146
|
agentId: import.meta.env.VITE_AGENT_ID,
|
|
130
147
|
baseURL: import.meta.env.VITE_AGENT_BASE_URL,
|
|
@@ -189,8 +206,7 @@ export default function DevShell() {
|
|
|
189
206
|
.catch(() => {})
|
|
190
207
|
.finally(() => {
|
|
191
208
|
setTimeout(() => {
|
|
192
|
-
sdk
|
|
193
|
-
.sendUserPrompt(data.payload)
|
|
209
|
+
startNewConversationAndSend(sdk, data.payload)
|
|
194
210
|
.catch((err: any) =>
|
|
195
211
|
console.error('[DevShell] sendUserPrompt failed:', err),
|
|
196
212
|
)
|
|
@@ -203,11 +219,10 @@ export default function DevShell() {
|
|
|
203
219
|
});
|
|
204
220
|
} else {
|
|
205
221
|
setTimeout(() => {
|
|
206
|
-
sdk
|
|
207
|
-
|
|
208
|
-
.catch((err: any) =>
|
|
222
|
+
startNewConversationAndSend(sdk, data.payload).catch(
|
|
223
|
+
(err: any) =>
|
|
209
224
|
console.error('[DevShell] sendUserPrompt failed:', err),
|
|
210
|
-
|
|
225
|
+
);
|
|
211
226
|
}, 300);
|
|
212
227
|
}
|
|
213
228
|
break;
|
|
@@ -290,7 +305,7 @@ export default function DevShell() {
|
|
|
290
305
|
sdk.on(keys.STREAMING_STOP, handleStreamStop);
|
|
291
306
|
}
|
|
292
307
|
|
|
293
|
-
sdk
|
|
308
|
+
startNewConversationAndSend(sdk, data.prompt).catch((err: any) => {
|
|
294
309
|
cleanup();
|
|
295
310
|
iframeRef.current?.contentWindow?.postMessage(
|
|
296
311
|
{
|
|
@@ -308,7 +323,7 @@ export default function DevShell() {
|
|
|
308
323
|
}
|
|
309
324
|
window.addEventListener('message', handleMessage);
|
|
310
325
|
return () => window.removeEventListener('message', handleMessage);
|
|
311
|
-
}, [applyPageContext]);
|
|
326
|
+
}, [applyPageContext, startNewConversationAndSend]);
|
|
312
327
|
|
|
313
328
|
// ── Escape key stops inspect ─────────────────────────────────────────────
|
|
314
329
|
useEffect(() => {
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|