@coralai/sps-cli 0.62.1 → 0.63.1

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 (170) hide show
  1. package/dist/commands/cardAdd.d.ts.map +1 -1
  2. package/dist/commands/cardAdd.js +14 -2
  3. package/dist/commands/cardAdd.js.map +1 -1
  4. package/dist/commands/projectInit.d.ts +1 -10
  5. package/dist/commands/projectInit.d.ts.map +1 -1
  6. package/dist/commands/projectInit.js +0 -26
  7. package/dist/commands/projectInit.js.map +1 -1
  8. package/dist/commands/skillCommand.d.ts.map +1 -1
  9. package/dist/commands/skillCommand.js +76 -4
  10. package/dist/commands/skillCommand.js.map +1 -1
  11. package/dist/commands/tick.d.ts +0 -2
  12. package/dist/commands/tick.d.ts.map +1 -1
  13. package/dist/commands/tick.js +2 -61
  14. package/dist/commands/tick.js.map +1 -1
  15. package/dist/console/index.d.ts.map +1 -1
  16. package/dist/console/index.js +0 -2
  17. package/dist/console/index.js.map +1 -1
  18. package/dist/console/routes/cards.d.ts.map +1 -1
  19. package/dist/console/routes/cards.js +1 -0
  20. package/dist/console/routes/cards.js.map +1 -1
  21. package/dist/console/routes/chat.d.ts.map +1 -1
  22. package/dist/console/routes/chat.js +3 -4
  23. package/dist/console/routes/chat.js.map +1 -1
  24. package/dist/console/routes/fs.js +8 -0
  25. package/dist/console/routes/fs.js.map +1 -1
  26. package/dist/console/routes/projects.d.ts.map +1 -1
  27. package/dist/console/routes/projects.js +0 -3
  28. package/dist/console/routes/projects.js.map +1 -1
  29. package/dist/console/routes/workers.d.ts.map +1 -1
  30. package/dist/console/routes/workers.js +4 -36
  31. package/dist/console/routes/workers.js.map +1 -1
  32. package/dist/console-assets/assets/ShowcasePage-Dr28LDVD.js +156 -0
  33. package/dist/console-assets/assets/ShowcasePage-EkuegwaP.css +1 -0
  34. package/dist/console-assets/assets/index-BpeUR5Ve.js +850 -0
  35. package/dist/console-assets/assets/index-kvQdjMeT.css +1 -0
  36. package/dist/console-assets/fonts/saiba-45.woff2 +0 -0
  37. package/dist/console-assets/index.html +2 -2
  38. package/dist/core/config.d.ts +2 -4
  39. package/dist/core/config.d.ts.map +1 -1
  40. package/dist/core/config.js +0 -2
  41. package/dist/core/config.js.map +1 -1
  42. package/dist/core/intel/types.d.ts +2 -51
  43. package/dist/core/intel/types.d.ts.map +1 -1
  44. package/dist/core/intel/types.js +2 -2
  45. package/dist/core/skills/SkillsManager.d.ts +7 -1
  46. package/dist/core/skills/SkillsManager.d.ts.map +1 -1
  47. package/dist/core/skills/SkillsManager.js +60 -15
  48. package/dist/core/skills/SkillsManager.js.map +1 -1
  49. package/dist/core/skills/match/embeddingRecall.d.ts +4 -0
  50. package/dist/core/skills/match/embeddingRecall.d.ts.map +1 -0
  51. package/dist/core/skills/match/embeddingRecall.js +101 -0
  52. package/dist/core/skills/match/embeddingRecall.js.map +1 -0
  53. package/dist/core/skills/match/skillEnrich.d.ts +36 -0
  54. package/dist/core/skills/match/skillEnrich.d.ts.map +1 -0
  55. package/dist/core/skills/match/skillEnrich.js +90 -0
  56. package/dist/core/skills/match/skillEnrich.js.map +1 -0
  57. package/dist/core/skills/match/skillMatcher.d.ts +26 -0
  58. package/dist/core/skills/match/skillMatcher.d.ts.map +1 -0
  59. package/dist/core/skills/match/skillMatcher.js +69 -0
  60. package/dist/core/skills/match/skillMatcher.js.map +1 -0
  61. package/dist/core/skills/match/skillSelect.d.ts +20 -0
  62. package/dist/core/skills/match/skillSelect.d.ts.map +1 -0
  63. package/dist/core/skills/match/skillSelect.js +55 -0
  64. package/dist/core/skills/match/skillSelect.js.map +1 -0
  65. package/dist/core/skills/registration.d.ts +32 -0
  66. package/dist/core/skills/registration.d.ts.map +1 -0
  67. package/dist/core/skills/registration.js +141 -0
  68. package/dist/core/skills/registration.js.map +1 -0
  69. package/dist/core/skills/types.d.ts +10 -0
  70. package/dist/core/skills/types.d.ts.map +1 -1
  71. package/dist/engines/StageEngine.d.ts +13 -2
  72. package/dist/engines/StageEngine.d.ts.map +1 -1
  73. package/dist/engines/StageEngine.js +42 -23
  74. package/dist/engines/StageEngine.js.map +1 -1
  75. package/dist/im/router.d.ts +1 -1
  76. package/dist/im/router.d.ts.map +1 -1
  77. package/dist/im/router.js +3 -10
  78. package/dist/im/router.js.map +1 -1
  79. package/dist/interfaces/TaskBackend.d.ts +2 -0
  80. package/dist/interfaces/TaskBackend.d.ts.map +1 -1
  81. package/dist/main.js +2 -46
  82. package/dist/main.js.map +1 -1
  83. package/dist/providers/LLMClient.d.ts +1 -22
  84. package/dist/providers/LLMClient.d.ts.map +1 -1
  85. package/dist/providers/LLMClient.js +5 -90
  86. package/dist/providers/LLMClient.js.map +1 -1
  87. package/dist/providers/MarkdownTaskBackend.d.ts +1 -0
  88. package/dist/providers/MarkdownTaskBackend.d.ts.map +1 -1
  89. package/dist/providers/MarkdownTaskBackend.js +8 -0
  90. package/dist/providers/MarkdownTaskBackend.js.map +1 -1
  91. package/dist/providers/RuntimeSessionRuntime.d.ts.map +1 -1
  92. package/dist/providers/RuntimeSessionRuntime.js +5 -1
  93. package/dist/providers/RuntimeSessionRuntime.js.map +1 -1
  94. package/dist/providers/llm/chatTools.d.ts +0 -5
  95. package/dist/providers/llm/chatTools.d.ts.map +1 -1
  96. package/dist/providers/llm/chatTools.js +4 -9
  97. package/dist/providers/llm/chatTools.js.map +1 -1
  98. package/dist/providers/mcp/spsMcpServer.d.ts.map +1 -1
  99. package/dist/providers/mcp/spsMcpServer.js +42 -11
  100. package/dist/providers/mcp/spsMcpServer.js.map +1 -1
  101. package/dist/providers/media/mediaProviders.d.ts +1 -1
  102. package/dist/providers/media/mediaProviders.d.ts.map +1 -1
  103. package/dist/providers/media/mediaProviders.js +1 -1
  104. package/dist/providers/media/mediaProviders.js.map +1 -1
  105. package/dist/providers/models/utilityModels.d.ts +26 -0
  106. package/dist/providers/models/utilityModels.d.ts.map +1 -0
  107. package/dist/providers/models/utilityModels.js +75 -0
  108. package/dist/providers/models/utilityModels.js.map +1 -0
  109. package/dist/services/CardService.d.ts +6 -0
  110. package/dist/services/CardService.d.ts.map +1 -1
  111. package/dist/services/CardService.js +17 -0
  112. package/dist/services/CardService.js.map +1 -1
  113. package/dist/services/ProjectService.d.ts +1 -9
  114. package/dist/services/ProjectService.d.ts.map +1 -1
  115. package/dist/services/ProjectService.js +0 -1
  116. package/dist/services/ProjectService.js.map +1 -1
  117. package/dist/services/WorkerService.d.ts +0 -8
  118. package/dist/services/WorkerService.d.ts.map +1 -1
  119. package/dist/services/WorkerService.js +2 -72
  120. package/dist/services/WorkerService.js.map +1 -1
  121. package/dist/services/container.d.ts +0 -2
  122. package/dist/services/container.d.ts.map +1 -1
  123. package/dist/services/container.js +0 -2
  124. package/dist/services/container.js.map +1 -1
  125. package/dist/shared/types.d.ts +6 -0
  126. package/dist/shared/types.d.ts.map +1 -1
  127. package/package.json +1 -1
  128. package/skills/checklist-review/SKILL.md +2 -0
  129. package/skills/probe-playbook/SKILL.md +10 -1
  130. package/skills/registry.yaml +8 -1
  131. package/skills/skill-creator/SKILL.md +14 -1
  132. package/skills/sps-chat/SKILL.md +33 -11
  133. package/skills/sps-pipeline/SKILL.md +26 -4
  134. package/skills/sps-subagent/SKILL.md +13 -4
  135. package/skills/visual-rubric/SKILL.md +2 -0
  136. package/skills/writer/SKILL.md +2 -0
  137. package/dist/console/routes/smartarrange.d.ts +0 -4
  138. package/dist/console/routes/smartarrange.d.ts.map +0 -1
  139. package/dist/console/routes/smartarrange.js +0 -107
  140. package/dist/console/routes/smartarrange.js.map +0 -1
  141. package/dist/console-assets/assets/index-B5aqtaR6.js +0 -859
  142. package/dist/console-assets/assets/index-IdqQLk1r.css +0 -10
  143. package/dist/core/intel/planStore.d.ts +0 -23
  144. package/dist/core/intel/planStore.d.ts.map +0 -1
  145. package/dist/core/intel/planStore.js +0 -67
  146. package/dist/core/intel/planStore.js.map +0 -1
  147. package/dist/engines/SmartArrangeEngine.d.ts +0 -75
  148. package/dist/engines/SmartArrangeEngine.d.ts.map +0 -1
  149. package/dist/engines/SmartArrangeEngine.js +0 -112
  150. package/dist/engines/SmartArrangeEngine.js.map +0 -1
  151. package/dist/engines/smartarrange/PipelineWorkerExec.d.ts +0 -37
  152. package/dist/engines/smartarrange/PipelineWorkerExec.d.ts.map +0 -1
  153. package/dist/engines/smartarrange/PipelineWorkerExec.js +0 -43
  154. package/dist/engines/smartarrange/PipelineWorkerExec.js.map +0 -1
  155. package/dist/engines/smartarrange/cardSink.d.ts +0 -29
  156. package/dist/engines/smartarrange/cardSink.d.ts.map +0 -1
  157. package/dist/engines/smartarrange/cardSink.js +0 -43
  158. package/dist/engines/smartarrange/cardSink.js.map +0 -1
  159. package/dist/engines/smartarrange/runner.d.ts +0 -24
  160. package/dist/engines/smartarrange/runner.d.ts.map +0 -1
  161. package/dist/engines/smartarrange/runner.js +0 -72
  162. package/dist/engines/smartarrange/runner.js.map +0 -1
  163. package/dist/engines/smartarrange/screenshot.d.ts +0 -5
  164. package/dist/engines/smartarrange/screenshot.d.ts.map +0 -1
  165. package/dist/engines/smartarrange/screenshot.js +0 -117
  166. package/dist/engines/smartarrange/screenshot.js.map +0 -1
  167. package/dist/services/SmartArrangeService.d.ts +0 -22
  168. package/dist/services/SmartArrangeService.d.ts.map +0 -1
  169. package/dist/services/SmartArrangeService.js +0 -58
  170. package/dist/services/SmartArrangeService.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"SmartArrangeEngine.js","sourceRoot":"","sources":["../../src/engines/SmartArrangeEngine.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- /**
2
- * @module engines/smartarrange/PipelineWorkerExec
3
- * @description WorkerExec 实现(归一路线):把 smartArrange 的执行交给 pipeline(StageEngine/worker-manager),
4
- * 自己只读看板状态、不 spawn worker、不保活会话(执行由 pipeline 独立完成)。
5
- * - dispatch: no-op —— 卡已由 CardSink 落进 Backlog,pipeline 的 scheduler/StageEngine 自取、派 worker
6
- * (含 skills 白名单 / durable resume / 重试 / 监控,全白拿)。
7
- * - sync: 每 tick 读看板,缓存 busy(有卡在 Backlog 或在途)+ 新完成卡(Done 里未消费的)。
8
- * - isBusy / takeLastResult: 返回 sync 缓存。单轨:一次 ≤1 张。
9
- * - stop: no-op —— worker 生命周期由 pipeline 管,tick 完成判定收尾。
10
- * 见 docs/design/smartarrange-on-pipeline.md。
11
- * @layer engine
12
- * @boundedContext smartarrange
13
- */
14
- import type { TaskBackend } from '../../interfaces/TaskBackend.js';
15
- import type { ProjectPipelineAdapter } from '../../core/projectPipelineAdapter.js';
16
- import type { WorkerExec } from '../SmartArrangeEngine.js';
17
- type Result = {
18
- seq: number;
19
- title: string;
20
- execStatus: 'completed' | 'failed';
21
- };
22
- export declare class PipelineWorkerExec implements WorkerExec {
23
- private readonly backend;
24
- private readonly adapter;
25
- private busy;
26
- private pending;
27
- private readonly reviewed;
28
- constructor(backend: TaskBackend, adapter: ProjectPipelineAdapter);
29
- /** 读看板:busy = 有卡不在 Done/Planning(Backlog 排队 或 在途);新完成 = Done 里未评审过的(单轨取一张)。 */
30
- sync(): Promise<void>;
31
- isBusy(): boolean;
32
- takeLastResult(): Result | null;
33
- dispatch(): void;
34
- stop(): Promise<void>;
35
- }
36
- export {};
37
- //# sourceMappingURL=PipelineWorkerExec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PipelineWorkerExec.d.ts","sourceRoot":"","sources":["../../../src/engines/smartarrange/PipelineWorkerExec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,KAAK,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,WAAW,GAAG,QAAQ,CAAA;CAAE,CAAC;AAEjF,qBAAa,kBAAmB,YAAW,UAAU;IAMjD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAG3B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,sBAAsB;IAGlD,+EAA+E;IACzE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B,MAAM,IAAI,OAAO;IAIjB,cAAc,IAAI,MAAM,GAAG,IAAI;IAM/B,QAAQ,IAAI,IAAI;IAIV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
@@ -1,43 +0,0 @@
1
- export class PipelineWorkerExec {
2
- backend;
3
- adapter;
4
- busy = false;
5
- pending = null;
6
- reviewed = new Set();
7
- constructor(backend, adapter) {
8
- this.backend = backend;
9
- this.adapter = adapter;
10
- }
11
- /** 读看板:busy = 有卡不在 Done/Planning(Backlog 排队 或 在途);新完成 = Done 里未评审过的(单轨取一张)。 */
12
- async sync() {
13
- const all = await this.backend.listAll();
14
- const done = this.adapter.states.done;
15
- const planning = this.adapter.states.planning;
16
- this.busy = all.some((c) => c.state !== done && c.state !== planning);
17
- if (!this.pending) {
18
- const doneCard = all.find((c) => c.state === done && !this.reviewed.has(Number(c.seq)));
19
- if (doneCard) {
20
- const seq = Number(doneCard.seq);
21
- this.reviewed.add(seq);
22
- // pipeline 把 worker 跑完 = 卡进 Done;质量好坏由 orchestrator 的 LLM 评审另判。
23
- // NEEDS-FIX(pipeline 自己判失败时打)映射成 failed,否则 completed。
24
- this.pending = { seq, title: doneCard.title, execStatus: doneCard.labels?.includes('NEEDS-FIX') ? 'failed' : 'completed' };
25
- }
26
- }
27
- }
28
- isBusy() {
29
- return this.busy;
30
- }
31
- takeLastResult() {
32
- const r = this.pending;
33
- this.pending = null;
34
- return r;
35
- }
36
- dispatch() {
37
- // no-op:卡已由 CardSink 落进 Backlog,pipeline 自取。
38
- }
39
- async stop() {
40
- // no-op:worker 由 pipeline 管理生命周期。
41
- }
42
- }
43
- //# sourceMappingURL=PipelineWorkerExec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PipelineWorkerExec.js","sourceRoot":"","sources":["../../../src/engines/smartarrange/PipelineWorkerExec.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,kBAAkB;IAMV;IACA;IANX,IAAI,GAAG,KAAK,CAAC;IACb,OAAO,GAAkB,IAAI,CAAC;IACrB,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9C,YACmB,OAAoB,EACpB,OAA+B;QAD/B,YAAO,GAAP,OAAO,CAAa;QACpB,YAAO,GAAP,OAAO,CAAwB;IAC/C,CAAC;IAEJ,+EAA+E;IAC/E,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxF,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvB,gEAAgE;gBAChE,sDAAsD;gBACtD,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7H,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,QAAQ;QACN,6CAA6C;IAC/C,CAAC;IAED,KAAK,CAAC,IAAI;QACR,kCAAkC;IACpC,CAAC;CACF"}
@@ -1,29 +0,0 @@
1
- /**
2
- * @module engines/smartarrange/cardSink
3
- * @description CardSink 实现:smartArrange 的动态卡**统一为 markdown 卡**(cards/<state>/*.md),
4
- * 与看板同一份数据 —— 监工动态产的卡也是 markdown 文件,看板/编排页都读它。
5
- * create=生在 Inprogress(已派发);markResult=worker 跑完移 Done(失败则 Done+NEEDS-FIX)。
6
- * prompt 写进「## 描述」,派发/结果时间写进「## 日志」(服务器本地时间)。
7
- * @layer engine
8
- * @boundedContext smartarrange
9
- */
10
- import type { TaskBackend } from '../../interfaces/TaskBackend.js';
11
- import type { CardSink } from '../SmartArrangeEngine.js';
12
- export declare class IntelCardSink implements CardSink {
13
- private readonly backend;
14
- private readonly activeState;
15
- private readonly doneState;
16
- constructor(backend: TaskBackend, activeState?: string, doneState?: string);
17
- /** 动态落一张 markdown 卡(生在 Inprogress = 已派发),返回 seq。 */
18
- create(card: {
19
- title: string;
20
- prompt: string;
21
- skills: string[];
22
- taskId: string;
23
- }): Promise<{
24
- seq: number;
25
- }>;
26
- /** worker 跑完上一卡:completed → 移 Done;failed → Done + NEEDS-FIX 标记。 */
27
- markResult(seq: number, execStatus: 'completed' | 'failed'): Promise<void>;
28
- }
29
- //# sourceMappingURL=cardSink.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cardSink.d.ts","sourceRoot":"","sources":["../../../src/engines/smartarrange/cardSink.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,qBAAa,aAAc,YAAW,QAAQ;IAE1C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,OAAO,EAAE,WAAW,EACpB,WAAW,SAAe,EAC1B,SAAS,SAAS;IAGrC,oDAAoD;IAC9C,MAAM,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAYjH,oEAAoE;IAC9D,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAejF"}
@@ -1,43 +0,0 @@
1
- export class IntelCardSink {
2
- backend;
3
- activeState;
4
- doneState;
5
- constructor(backend, activeState = 'Inprogress', doneState = 'Done') {
6
- this.backend = backend;
7
- this.activeState = activeState;
8
- this.doneState = doneState;
9
- }
10
- /** 动态落一张 markdown 卡(生在 Inprogress = 已派发),返回 seq。 */
11
- async create(card) {
12
- const created = await this.backend.create(card.title, card.prompt, this.activeState);
13
- const seq = Number(created.seq);
14
- try {
15
- if (card.skills?.length)
16
- await this.backend.setSkills(created.seq, card.skills);
17
- await this.backend.comment(created.seq, `[smartArrange] 派发卡片(task ${card.taskId})`);
18
- }
19
- catch {
20
- /* 元数据写入失败不阻塞派卡 */
21
- }
22
- return { seq };
23
- }
24
- /** worker 跑完上一卡:completed → 移 Done;failed → Done + NEEDS-FIX 标记。 */
25
- async markResult(seq, execStatus) {
26
- const s = String(seq);
27
- try {
28
- if (execStatus === 'completed') {
29
- await this.backend.comment(s, '[smartArrange] worker 完成');
30
- await this.backend.move(s, this.doneState);
31
- }
32
- else {
33
- await this.backend.addLabel(s, 'NEEDS-FIX');
34
- await this.backend.comment(s, '[smartArrange] worker 失败');
35
- await this.backend.move(s, this.doneState);
36
- }
37
- }
38
- catch {
39
- /* 状态流转失败不阻塞编排 */
40
- }
41
- }
42
- }
43
- //# sourceMappingURL=cardSink.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cardSink.js","sourceRoot":"","sources":["../../../src/engines/smartarrange/cardSink.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,aAAa;IAEL;IACA;IACA;IAHnB,YACmB,OAAoB,EACpB,cAAc,YAAY,EAC1B,YAAY,MAAM;QAFlB,YAAO,GAAP,OAAO,CAAa;QACpB,gBAAW,GAAX,WAAW,CAAe;QAC1B,cAAS,GAAT,SAAS,CAAS;IAClC,CAAC;IAEJ,oDAAoD;IACpD,KAAK,CAAC,MAAM,CAAC,IAAyE;QACpF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACrF,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;gBAAE,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAChF,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,4BAA4B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACtF,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,UAAkC;QAC9D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBAC5C,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC;CACF"}
@@ -1,24 +0,0 @@
1
- import { type ProjectConfig } from '../../core/config.js';
2
- export interface SmartArrangeRunnerCtx {
3
- project: string;
4
- cwd: string;
5
- runtimeDir: string;
6
- logsDir: string;
7
- maxRounds: number;
8
- config: ProjectConfig;
9
- log?: (m: string) => void;
10
- emit?: (ev: {
11
- type: string;
12
- [k: string]: unknown;
13
- }) => void;
14
- }
15
- export declare class SmartArrangeRunner {
16
- private readonly exec;
17
- private readonly engine;
18
- constructor(ctx: SmartArrangeRunnerCtx);
19
- tick(): Promise<void>;
20
- approve(): void;
21
- /** 收尾杀 worker 进程(done/halted 时引擎已调;这里供外部超时收尾)。 */
22
- stop(): Promise<void>;
23
- }
24
- //# sourceMappingURL=runner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/engines/smartarrange/runner.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAS1D,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC7D;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAEhC,GAAG,EAAE,qBAAqB;IAgChC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,IAAI,IAAI;IAIf,kDAAkD;IAC5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
@@ -1,72 +0,0 @@
1
- /**
2
- * @module engines/smartarrange/runner
3
- * @description SmartArrange 组装层:把 LLMClient / CardSink / PipelineWorkerExec 装进 SmartArrangeEngine,
4
- * 暴露 tick()/approve() 给 tick 命令调。执行统一交给 pipeline(归一路线,见 docs/design/smartarrange-on-pipeline.md)。
5
- * @layer engine
6
- * @boundedContext smartarrange
7
- */
8
- import { existsSync, readFileSync } from 'node:fs';
9
- import { join } from 'node:path';
10
- import { loadAgentsConfig } from '../../core/intel/agentsConfig.js';
11
- import { LLMClient } from '../../providers/LLMClient.js';
12
- import { createTaskBackend } from '../../providers/registry.js';
13
- import { SmartArrangeEngine } from '../SmartArrangeEngine.js';
14
- import { PipelineWorkerExec } from './PipelineWorkerExec.js';
15
- import { IntelCardSink } from './cardSink.js';
16
- import { ProjectPipelineAdapter } from '../../core/projectPipelineAdapter.js';
17
- import { captureScreenshot } from './screenshot.js';
18
- export class SmartArrangeRunner {
19
- exec;
20
- engine;
21
- constructor(ctx) {
22
- const agents = loadAgentsConfig();
23
- // 项目级模型覆盖(只覆盖 model 串,agent/mode/provider 沿用全局默认);空=用全局。
24
- if (ctx.config.WORKER_MODEL)
25
- agents.worker = { ...agents.worker, model: ctx.config.WORKER_MODEL };
26
- if (ctx.config.SA_REVIEWER_MODEL)
27
- agents.reviewer = { ...agents.reviewer, model: ctx.config.SA_REVIEWER_MODEL };
28
- const llm = new LLMClient(agents, ctx.cwd); // 传 cwd → orchestrate 挂只读探查工具
29
- const taskBackend = createTaskBackend(ctx.config); // 卡 = markdown 文件,与看板同源
30
- // 归一:卡落 Backlog → pipeline 的 scheduler/StageEngine 自取、派 worker(skills/durable resume/重试/监控全白拿);
31
- // exec 只读看板(busy/新完成),不 spawn、不保活。worker 的 memory/prompt 由 StageEngine 侧负责。
32
- const adapter = new ProjectPipelineAdapter(ctx.config, ctx.cwd);
33
- // 图谱增量同步不在此挂:卡片完成走共享的 StageEngine.releaseAndDone,那里同步阻塞 await syncGraph
34
- // (pipeline 与 smartArrange 都跑在同一 StageEngine 上),两模式一处覆盖、不重复。
35
- const cards = new IntelCardSink(taskBackend, adapter.states.backlog);
36
- this.exec = new PipelineWorkerExec(taskBackend, adapter);
37
- ctx.log?.('[smartArrange] 执行交给 pipeline,orchestrator 只产卡+评审');
38
- this.engine = new SmartArrangeEngine({
39
- llm,
40
- cards,
41
- exec: this.exec,
42
- planFile: join(ctx.runtimeDir, 'plan.json'),
43
- sessionFile: join(ctx.runtimeDir, 'session.json'),
44
- readGoal: () => readGoal(ctx.cwd),
45
- maxRounds: ctx.maxRounds,
46
- // 自门控:非游戏/无 html 入口 → 返 null 不启 browser;有入口才截图预喂(见 screenshot.ts)
47
- captureScreenshot: () => captureScreenshot(ctx.cwd),
48
- log: ctx.log,
49
- emit: ctx.emit,
50
- });
51
- }
52
- async tick() {
53
- await this.engine.tick(); // worker session 由 exec.dispatch lazy spawn(planning/待确认阶段不 spawn)
54
- }
55
- approve() {
56
- this.engine.approvePlan();
57
- }
58
- /** 收尾杀 worker 进程(done/halted 时引擎已调;这里供外部超时收尾)。 */
59
- async stop() {
60
- await this.exec.stop();
61
- }
62
- }
63
- function readGoal(cwd) {
64
- const f = join(cwd, 'docs', 'GOAL.md');
65
- try {
66
- return existsSync(f) ? readFileSync(f, 'utf-8').trim() : '';
67
- }
68
- catch {
69
- return '';
70
- }
71
- }
72
- //# sourceMappingURL=runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/engines/smartarrange/runner.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /** 找游戏 html 入口(常见位置);无 → 非游戏项目,返 null。 */
2
- export declare function findGameEntry(cwd: string): string | null;
3
- /** 截一张(尽量进实战态的)游玩截图 → data URL;任何失败返 null。 */
4
- export declare function captureScreenshot(cwd: string): Promise<string | null>;
5
- //# sourceMappingURL=screenshot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../src/engines/smartarrange/screenshot.ts"],"names":[],"mappings":"AAcA,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMxD;AAuDD,8CAA8C;AAC9C,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkC3E"}
@@ -1,117 +0,0 @@
1
- /**
2
- * @module engines/smartarrange/screenshot
3
- * @description 截图证据源(游戏类):起一个本地静态 HTTP server serve 游戏入口所在目录,playwright
4
- * 经 http:// 打开、尝试驱动进实战、截图 → data URL,预喂给 orchestrator(vision)。
5
- * **必须 serve-root(非 file://)**:Vite/Phaser 等 ESM/绝对路径/fetch 游戏在 file:// 下跑不起来。
6
- * 优雅降级:无 html 入口 / 无 browser / 启动失败 → 返回 null,绝不阻塞编排。
7
- * @layer engine
8
- * @boundedContext smartarrange
9
- */
10
- import { createServer } from 'node:http';
11
- import { existsSync } from 'node:fs';
12
- import { readFile } from 'node:fs/promises';
13
- import { basename, dirname, extname, join, normalize, resolve } from 'node:path';
14
- /** 找游戏 html 入口(常见位置);无 → 非游戏项目,返 null。 */
15
- export function findGameEntry(cwd) {
16
- for (const rel of ['dist/index.html', 'index.html', 'public/index.html', 'build/index.html']) {
17
- const f = join(cwd, rel);
18
- if (existsSync(f))
19
- return f;
20
- }
21
- return null;
22
- }
23
- const MIME = {
24
- '.html': 'text/html; charset=utf-8',
25
- '.js': 'text/javascript; charset=utf-8',
26
- '.mjs': 'text/javascript; charset=utf-8',
27
- '.css': 'text/css; charset=utf-8',
28
- '.json': 'application/json; charset=utf-8',
29
- '.png': 'image/png',
30
- '.jpg': 'image/jpeg',
31
- '.jpeg': 'image/jpeg',
32
- '.gif': 'image/gif',
33
- '.webp': 'image/webp',
34
- '.svg': 'image/svg+xml',
35
- '.ico': 'image/x-icon',
36
- '.wasm': 'application/wasm',
37
- '.mp3': 'audio/mpeg',
38
- '.ogg': 'audio/ogg',
39
- '.wav': 'audio/wav',
40
- '.woff2': 'font/woff2',
41
- };
42
- /** 起一个只读静态 server serve `root`,返回 { baseUrl, close }。端口 0 = 系统分配。 */
43
- function serveDir(root) {
44
- const safeRoot = resolve(root);
45
- const server = createServer(async (req, res) => {
46
- try {
47
- let p = decodeURIComponent((req.url ?? '/').split('?')[0]);
48
- if (p.endsWith('/'))
49
- p += 'index.html';
50
- const abs = normalize(join(safeRoot, p));
51
- if (abs !== safeRoot && !abs.startsWith(safeRoot + '/')) {
52
- res.statusCode = 403;
53
- res.end('forbidden');
54
- return;
55
- }
56
- const data = await readFile(abs);
57
- res.setHeader('Content-Type', MIME[extname(abs).toLowerCase()] ?? 'application/octet-stream');
58
- res.end(data);
59
- }
60
- catch {
61
- res.statusCode = 404;
62
- res.end('not found');
63
- }
64
- });
65
- return new Promise((res) => {
66
- server.listen(0, '127.0.0.1', () => {
67
- const addr = server.address();
68
- const port = typeof addr === 'object' && addr ? addr.port : 0;
69
- res({
70
- baseUrl: `http://127.0.0.1:${port}/`,
71
- close: () => new Promise((r) => server.close(() => r())),
72
- });
73
- });
74
- });
75
- }
76
- /** 截一张(尽量进实战态的)游玩截图 → data URL;任何失败返 null。 */
77
- export async function captureScreenshot(cwd) {
78
- const entry = findGameEntry(cwd);
79
- if (!entry)
80
- return null;
81
- let browser;
82
- let srv;
83
- try {
84
- srv = await serveDir(dirname(entry)); // serve 入口所在目录(如 dist/),让绝对路径/模块/fetch 正常
85
- const url = srv.baseUrl + basename(entry);
86
- const { chromium } = (await import('playwright-core'));
87
- browser = await chromium.launch();
88
- const page = await browser.newPage({ viewport: { width: 480, height: 800 } });
89
- await page.goto(url, { waitUntil: 'load', timeout: 15_000 });
90
- await page.waitForTimeout(2000);
91
- // 通用启发式:点中心 + 喂几个键,尝试从菜单进入实战
92
- await page.mouse.click(240, 400).catch(() => { });
93
- for (const k of ['Space', 'Enter', 'ArrowUp'])
94
- await page.keyboard.press(k).catch(() => { });
95
- await page.waitForTimeout(2500);
96
- const buf = await page.screenshot();
97
- return `data:image/png;base64,${buf.toString('base64')}`;
98
- }
99
- catch {
100
- return null; // browser 未装 / 启动失败 → 优雅降级
101
- }
102
- finally {
103
- try {
104
- await browser?.close();
105
- }
106
- catch {
107
- /* noop */
108
- }
109
- try {
110
- await srv?.close();
111
- }
112
- catch {
113
- /* noop */
114
- }
115
- }
116
- }
117
- //# sourceMappingURL=screenshot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../src/engines/smartarrange/screenshot.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import type { PlanState } from '../core/intel/types.js';
2
- import { type DomainError } from '../shared/errors.js';
3
- import { type Result } from '../shared/result.js';
4
- export declare class SmartArrangeService {
5
- /** 读当前编排计划(null = 尚无 smartArrange run);供轮询「待批准 / 运行中 / 完成」。 */
6
- getPlan(project: string): PlanState | null;
7
- /** 批准首轮任务清单(awaiting-approval → running),让 worker 开跑。幂等:非待批准态直接回当前状态。 */
8
- approve(project: string): Result<{
9
- status: string;
10
- }, DomainError>;
11
- /**
12
- * 停掉当前编排运行:planning / awaiting-approval / running → halted。
13
- * 幂等:已 halted/done 或无 run 时不改,直接回当前状态。
14
- * 语义保证:SmartArrangeEngine.tick 的 `case 'halted': return` 使下一 tick 直接停、不推进、不复活;
15
- * tick 的完成判定(status===done||halted)也据此结束循环。故置 halted 后轮询 getPlan 稳定显示 halted,
16
- * 状态同步不会把停掉的局复活。(worker 进程的收尾由调用方另配 pipelines.stop。)
17
- */
18
- halt(project: string): Result<{
19
- status: string;
20
- }, DomainError>;
21
- }
22
- //# sourceMappingURL=SmartArrangeService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SmartArrangeService.d.ts","sourceRoot":"","sources":["../../src/services/SmartArrangeService.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAM3D,qBAAa,mBAAmB;IAC9B,+DAA+D;IAC/D,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI1C,yEAAyE;IACzE,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,WAAW,CAAC;IAiBjE;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,WAAW,CAAC;CAgB/D"}
@@ -1,58 +0,0 @@
1
- /**
2
- * @module services/SmartArrangeService
3
- * @description SmartArrange 编排运行的读取 + 人工确认(approve)。把原 console 路由里的 plan 读写
4
- * 抽成容器方法,供**进程内**调用方(如 gameforge 嵌入 sps-cli)直接调,不经 HTTP。
5
- * 典型流程:projects.create → pipelines.start →(轮询 getPlan 到 awaiting-approval)→ approve。
6
- * @layer services
7
- */
8
- import { join } from 'node:path';
9
- import { loadPlan, savePlan } from '../core/intel/planStore.js';
10
- import { resolveProjectPaths } from '../core/paths.js';
11
- import { domainError } from '../shared/errors.js';
12
- import { err, ok } from '../shared/result.js';
13
- function planPath(project) {
14
- return join(resolveProjectPaths(project).runtimeDir, 'intel', 'current', 'plan.json');
15
- }
16
- export class SmartArrangeService {
17
- /** 读当前编排计划(null = 尚无 smartArrange run);供轮询「待批准 / 运行中 / 完成」。 */
18
- getPlan(project) {
19
- return loadPlan(planPath(project));
20
- }
21
- /** 批准首轮任务清单(awaiting-approval → running),让 worker 开跑。幂等:非待批准态直接回当前状态。 */
22
- approve(project) {
23
- const file = planPath(project);
24
- const plan = loadPlan(file);
25
- if (!plan) {
26
- return err(domainError('not-found', 'NO_SMARTARRANGE_RUN', 'no smartArrange run', {
27
- details: { project },
28
- }));
29
- }
30
- if (plan.status === 'awaiting-approval') {
31
- plan.status = 'running';
32
- savePlan(file, plan);
33
- }
34
- return ok({ status: plan.status });
35
- }
36
- /**
37
- * 停掉当前编排运行:planning / awaiting-approval / running → halted。
38
- * 幂等:已 halted/done 或无 run 时不改,直接回当前状态。
39
- * 语义保证:SmartArrangeEngine.tick 的 `case 'halted': return` 使下一 tick 直接停、不推进、不复活;
40
- * tick 的完成判定(status===done||halted)也据此结束循环。故置 halted 后轮询 getPlan 稳定显示 halted,
41
- * 状态同步不会把停掉的局复活。(worker 进程的收尾由调用方另配 pipelines.stop。)
42
- */
43
- halt(project) {
44
- const file = planPath(project);
45
- const plan = loadPlan(file);
46
- if (!plan) {
47
- return err(domainError('not-found', 'NO_SMARTARRANGE_RUN', 'no smartArrange run', {
48
- details: { project },
49
- }));
50
- }
51
- if (plan.status !== 'halted' && plan.status !== 'done') {
52
- plan.status = 'halted';
53
- savePlan(file, plan);
54
- }
55
- return ok({ status: plan.status });
56
- }
57
- }
58
- //# sourceMappingURL=SmartArrangeService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SmartArrangeService.js","sourceRoot":"","sources":["../../src/services/SmartArrangeService.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAoB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAE3D,SAAS,QAAQ,CAAC,OAAe;IAC/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,OAAO,mBAAmB;IAC9B,+DAA+D;IAC/D,OAAO,CAAC,OAAe;QACrB,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,yEAAyE;IACzE,OAAO,CAAC,OAAe;QACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,GAAG,CACR,WAAW,CAAC,WAAW,EAAE,qBAAqB,EAAE,qBAAqB,EAAE;gBACrE,OAAO,EAAE,EAAE,OAAO,EAAE;aACrB,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,OAAe;QAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,GAAG,CACR,WAAW,CAAC,WAAW,EAAE,qBAAqB,EAAE,qBAAqB,EAAE;gBACrE,OAAO,EAAE,EAAE,OAAO,EAAE;aACrB,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;CACF"}