wepscli 0.1.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 (130) hide show
  1. package/README.md +293 -0
  2. package/dist/WEPSCLI-shell/agent-runtime.js +824 -0
  3. package/dist/WEPSCLI-shell/agent-runtime.js.map +1 -0
  4. package/dist/WEPSCLI-shell/approval-overlay.js +275 -0
  5. package/dist/WEPSCLI-shell/approval-overlay.js.map +1 -0
  6. package/dist/WEPSCLI-shell/chat-components.js +760 -0
  7. package/dist/WEPSCLI-shell/chat-components.js.map +1 -0
  8. package/dist/WEPSCLI-shell/components.js +850 -0
  9. package/dist/WEPSCLI-shell/components.js.map +1 -0
  10. package/dist/WEPSCLI-shell/config-overlays.js +205 -0
  11. package/dist/WEPSCLI-shell/config-overlays.js.map +1 -0
  12. package/dist/WEPSCLI-shell/debug-log.js +16 -0
  13. package/dist/WEPSCLI-shell/debug-log.js.map +1 -0
  14. package/dist/WEPSCLI-shell/file-change-preview.js +261 -0
  15. package/dist/WEPSCLI-shell/file-change-preview.js.map +1 -0
  16. package/dist/WEPSCLI-shell/helpers.js +112 -0
  17. package/dist/WEPSCLI-shell/helpers.js.map +1 -0
  18. package/dist/WEPSCLI-shell/index.js +3 -0
  19. package/dist/WEPSCLI-shell/index.js.map +1 -0
  20. package/dist/WEPSCLI-shell/provider-add-flow.js +406 -0
  21. package/dist/WEPSCLI-shell/provider-add-flow.js.map +1 -0
  22. package/dist/WEPSCLI-shell/run-wepscli-shell.js +21 -0
  23. package/dist/WEPSCLI-shell/run-wepscli-shell.js.map +1 -0
  24. package/dist/WEPSCLI-shell/runtime-recovery.js +37 -0
  25. package/dist/WEPSCLI-shell/runtime-recovery.js.map +1 -0
  26. package/dist/WEPSCLI-shell/runtime-status.js +66 -0
  27. package/dist/WEPSCLI-shell/runtime-status.js.map +1 -0
  28. package/dist/WEPSCLI-shell/shell-app.js +1047 -0
  29. package/dist/WEPSCLI-shell/shell-app.js.map +1 -0
  30. package/dist/WEPSCLI-shell/shell-modes.js +77 -0
  31. package/dist/WEPSCLI-shell/shell-modes.js.map +1 -0
  32. package/dist/WEPSCLI-shell/slash-commands.js +135 -0
  33. package/dist/WEPSCLI-shell/slash-commands.js.map +1 -0
  34. package/dist/WEPSCLI-shell/theme.js +19 -0
  35. package/dist/WEPSCLI-shell/theme.js.map +1 -0
  36. package/dist/WEPSCLI-shell/tool-approval.js +85 -0
  37. package/dist/WEPSCLI-shell/tool-approval.js.map +1 -0
  38. package/dist/WEPSCLI-shell/tool-diff.js +76 -0
  39. package/dist/WEPSCLI-shell/tool-diff.js.map +1 -0
  40. package/dist/WEPSCLI-shell/tool-file-changes.js +268 -0
  41. package/dist/WEPSCLI-shell/tool-file-changes.js.map +1 -0
  42. package/dist/WEPSCLI-shell/tool-message-detail.js +138 -0
  43. package/dist/WEPSCLI-shell/tool-message-detail.js.map +1 -0
  44. package/dist/WEPSCLI-shell/tool-messages.js +145 -0
  45. package/dist/WEPSCLI-shell/tool-messages.js.map +1 -0
  46. package/dist/WEPSCLI-shell/transcript-panel.js +372 -0
  47. package/dist/WEPSCLI-shell/transcript-panel.js.map +1 -0
  48. package/dist/WEPSCLI-shell/transcript-state.js +62 -0
  49. package/dist/WEPSCLI-shell/transcript-state.js.map +1 -0
  50. package/dist/WEPSCLI-shell/types.js +1 -0
  51. package/dist/WEPSCLI-shell/types.js.map +1 -0
  52. package/dist/cli.js +11 -0
  53. package/dist/cli.js.map +1 -0
  54. package/dist/config.js +40 -0
  55. package/dist/config.js.map +1 -0
  56. package/dist/index.js +4 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/main.js +140 -0
  59. package/dist/main.js.map +1 -0
  60. package/dist/onboarding/action-screen.js +90 -0
  61. package/dist/onboarding/action-screen.js.map +1 -0
  62. package/dist/onboarding/framed-screen.js +35 -0
  63. package/dist/onboarding/framed-screen.js.map +1 -0
  64. package/dist/onboarding/onboarding-app.js +312 -0
  65. package/dist/onboarding/onboarding-app.js.map +1 -0
  66. package/dist/onboarding/run-onboarding.js +23 -0
  67. package/dist/onboarding/run-onboarding.js.map +1 -0
  68. package/dist/onboarding/select-screen.js +21 -0
  69. package/dist/onboarding/select-screen.js.map +1 -0
  70. package/dist/onboarding/summary-screen.js +23 -0
  71. package/dist/onboarding/summary-screen.js.map +1 -0
  72. package/dist/onboarding/text-input-screen.js +55 -0
  73. package/dist/onboarding/text-input-screen.js.map +1 -0
  74. package/dist/onboarding/theme.js +26 -0
  75. package/dist/onboarding/theme.js.map +1 -0
  76. package/dist/provider-profiles/api-key-store.js +51 -0
  77. package/dist/provider-profiles/api-key-store.js.map +1 -0
  78. package/dist/provider-profiles/defaults.js +18 -0
  79. package/dist/provider-profiles/defaults.js.map +1 -0
  80. package/dist/provider-profiles/fetch-models.js +53 -0
  81. package/dist/provider-profiles/fetch-models.js.map +1 -0
  82. package/dist/provider-profiles/index.js +6 -0
  83. package/dist/provider-profiles/index.js.map +1 -0
  84. package/dist/provider-profiles/provider-profile-service.js +223 -0
  85. package/dist/provider-profiles/provider-profile-service.js.map +1 -0
  86. package/dist/provider-profiles/providers-config-store.js +17 -0
  87. package/dist/provider-profiles/providers-config-store.js.map +1 -0
  88. package/dist/provider-profiles/types.js +1 -0
  89. package/dist/provider-profiles/types.js.map +1 -0
  90. package/dist/session-history/session-history-service.js +142 -0
  91. package/dist/session-history/session-history-service.js.map +1 -0
  92. package/dist/shell/animator.js +30 -0
  93. package/dist/shell/animator.js.map +1 -0
  94. package/dist/shell/clickables.js +101 -0
  95. package/dist/shell/clickables.js.map +1 -0
  96. package/dist/shell/dashboard-shell.js +292 -0
  97. package/dist/shell/dashboard-shell.js.map +1 -0
  98. package/dist/shell/index.js +5 -0
  99. package/dist/shell/index.js.map +1 -0
  100. package/dist/shell/keymap.js +14 -0
  101. package/dist/shell/keymap.js.map +1 -0
  102. package/dist/shell/mouse.js +39 -0
  103. package/dist/shell/mouse.js.map +1 -0
  104. package/dist/shell/render.js +122 -0
  105. package/dist/shell/render.js.map +1 -0
  106. package/dist/shell/run-shell.js +36 -0
  107. package/dist/shell/run-shell.js.map +1 -0
  108. package/dist/shell/theme.js +56 -0
  109. package/dist/shell/theme.js.map +1 -0
  110. package/dist/storage/locked-json-file.js +88 -0
  111. package/dist/storage/locked-json-file.js.map +1 -0
  112. package/dist/workbench/animator.js +30 -0
  113. package/dist/workbench/animator.js.map +1 -0
  114. package/dist/workbench/index.js +6 -0
  115. package/dist/workbench/index.js.map +1 -0
  116. package/dist/workbench/mouse.js +39 -0
  117. package/dist/workbench/mouse.js.map +1 -0
  118. package/dist/workbench/render.js +82 -0
  119. package/dist/workbench/render.js.map +1 -0
  120. package/dist/workbench/renderer.js +364 -0
  121. package/dist/workbench/renderer.js.map +1 -0
  122. package/dist/workbench/run-workbench.js +36 -0
  123. package/dist/workbench/run-workbench.js.map +1 -0
  124. package/dist/workbench/theme.js +63 -0
  125. package/dist/workbench/theme.js.map +1 -0
  126. package/dist/workbench/types.js +1 -0
  127. package/dist/workbench/types.js.map +1 -0
  128. package/dist/workbench/workbench-shell.js +649 -0
  129. package/dist/workbench/workbench-shell.js.map +1 -0
  130. package/package.json +65 -0
@@ -0,0 +1,37 @@
1
+ export function getRuntimeRecoveryHint(message) {
2
+ const normalized = message.toLowerCase();
3
+ if (normalized.includes("no api key") || normalized.includes("api key") || normalized.includes("unauthorized") || normalized.includes("forbidden") || normalized.includes("401") || normalized.includes("403")) {
4
+ return {
5
+ label: "Provider auth issue - ready",
6
+ nextStep: "Next: check the active provider credentials, then use /providers or /provider add to fix the endpoint or API key."
7
+ };
8
+ }
9
+ if (normalized.includes("no provider profile selected") || normalized.includes("unknown provider profile") || normalized.includes("provider profile")) {
10
+ return {
11
+ label: "Provider setup issue - ready",
12
+ nextStep: "Next: use /providers to switch provider, or /provider add to create a working provider profile."
13
+ };
14
+ }
15
+ if (normalized.includes("no model configured") || normalized.includes("model") && (normalized.includes("unavailable") || normalized.includes("not found") || normalized.includes("unknown"))) {
16
+ return {
17
+ label: "Model issue - ready",
18
+ nextStep: "Next: use /models to switch to an available model, or /providers to change the active provider."
19
+ };
20
+ }
21
+ if (normalized.includes("rate limit") || normalized.includes("429") || normalized.includes("too many requests") || normalized.includes("quota")) {
22
+ return {
23
+ label: "Provider busy - ready",
24
+ nextStep: "Next: wait and retry, or switch models/providers with /models or /providers."
25
+ };
26
+ }
27
+ if (normalized.includes("fetch failed") || normalized.includes("network") || normalized.includes("timeout") || normalized.includes("timed out") || normalized.includes("enotfound") || normalized.includes("econn") || normalized.includes("socket") || normalized.includes("tls")) {
28
+ return {
29
+ label: "Provider connection issue - ready",
30
+ nextStep: "Next: verify the base URL and network path, then retry. If needed, switch provider with /providers."
31
+ };
32
+ }
33
+ return {
34
+ label: "Request failed - ready",
35
+ nextStep: "Next: adjust the request and retry. Use /debug if the failure keeps repeating."
36
+ };
37
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getRuntimeRecoveryHint","message","normalized","toLowerCase","includes","label","nextStep"],"sources":["runtime-recovery.ts"],"sourcesContent":["export interface RuntimeRecoveryHint {\n\tlabel: string;\n\tnextStep: string;\n}\n\nexport function getRuntimeRecoveryHint(message: string): RuntimeRecoveryHint | undefined {\n\tconst normalized = message.toLowerCase();\n\n\tif (\n\t\tnormalized.includes(\"no api key\") ||\n\t\tnormalized.includes(\"api key\") ||\n\t\tnormalized.includes(\"unauthorized\") ||\n\t\tnormalized.includes(\"forbidden\") ||\n\t\tnormalized.includes(\"401\") ||\n\t\tnormalized.includes(\"403\")\n\t) {\n\t\treturn {\n\t\t\tlabel: \"Provider auth issue - ready\",\n\t\t\tnextStep: \"Next: check the active provider credentials, then use /providers or /provider add to fix the endpoint or API key.\",\n\t\t};\n\t}\n\n\tif (\n\t\tnormalized.includes(\"no provider profile selected\") ||\n\t\tnormalized.includes(\"unknown provider profile\") ||\n\t\tnormalized.includes(\"provider profile\")\n\t) {\n\t\treturn {\n\t\t\tlabel: \"Provider setup issue - ready\",\n\t\t\tnextStep: \"Next: use /providers to switch provider, or /provider add to create a working provider profile.\",\n\t\t};\n\t}\n\n\tif (\n\t\tnormalized.includes(\"no model configured\") ||\n\t\t(normalized.includes(\"model\") && (normalized.includes(\"unavailable\") || normalized.includes(\"not found\") || normalized.includes(\"unknown\")))\n\t) {\n\t\treturn {\n\t\t\tlabel: \"Model issue - ready\",\n\t\t\tnextStep: \"Next: use /models to switch to an available model, or /providers to change the active provider.\",\n\t\t};\n\t}\n\n\tif (\n\t\tnormalized.includes(\"rate limit\") ||\n\t\tnormalized.includes(\"429\") ||\n\t\tnormalized.includes(\"too many requests\") ||\n\t\tnormalized.includes(\"quota\")\n\t) {\n\t\treturn {\n\t\t\tlabel: \"Provider busy - ready\",\n\t\t\tnextStep: \"Next: wait and retry, or switch models/providers with /models or /providers.\",\n\t\t};\n\t}\n\n\tif (\n\t\tnormalized.includes(\"fetch failed\") ||\n\t\tnormalized.includes(\"network\") ||\n\t\tnormalized.includes(\"timeout\") ||\n\t\tnormalized.includes(\"timed out\") ||\n\t\tnormalized.includes(\"enotfound\") ||\n\t\tnormalized.includes(\"econn\") ||\n\t\tnormalized.includes(\"socket\") ||\n\t\tnormalized.includes(\"tls\")\n\t) {\n\t\treturn {\n\t\t\tlabel: \"Provider connection issue - ready\",\n\t\t\tnextStep: \"Next: verify the base URL and network path, then retry. If needed, switch provider with /providers.\",\n\t\t};\n\t}\n\n\treturn {\n\t\tlabel: \"Request failed - ready\",\n\t\tnextStep: \"Next: adjust the request and retry. Use /debug if the failure keeps repeating.\",\n\t};\n}\n"],"mappings":"AAKA,OAAO,SAASA,sBAAsBA,CAACC,OAAe,EAAmC;EACxF,MAAMC,UAAU,GAAGD,OAAO,CAACE,WAAW,CAAC,CAAC;EAExC,IACCD,UAAU,CAACE,QAAQ,CAAC,YAAY,CAAC,IACjCF,UAAU,CAACE,QAAQ,CAAC,SAAS,CAAC,IAC9BF,UAAU,CAACE,QAAQ,CAAC,cAAc,CAAC,IACnCF,UAAU,CAACE,QAAQ,CAAC,WAAW,CAAC,IAChCF,UAAU,CAACE,QAAQ,CAAC,KAAK,CAAC,IAC1BF,UAAU,CAACE,QAAQ,CAAC,KAAK,CAAC,EACzB;IACD,OAAO;MACNC,KAAK,EAAE,6BAA6B;MACpCC,QAAQ,EAAE;IACX,CAAC;EACF;EAEA,IACCJ,UAAU,CAACE,QAAQ,CAAC,8BAA8B,CAAC,IACnDF,UAAU,CAACE,QAAQ,CAAC,0BAA0B,CAAC,IAC/CF,UAAU,CAACE,QAAQ,CAAC,kBAAkB,CAAC,EACtC;IACD,OAAO;MACNC,KAAK,EAAE,8BAA8B;MACrCC,QAAQ,EAAE;IACX,CAAC;EACF;EAEA,IACCJ,UAAU,CAACE,QAAQ,CAAC,qBAAqB,CAAC,IACzCF,UAAU,CAACE,QAAQ,CAAC,OAAO,CAAC,KAAKF,UAAU,CAACE,QAAQ,CAAC,aAAa,CAAC,IAAIF,UAAU,CAACE,QAAQ,CAAC,WAAW,CAAC,IAAIF,UAAU,CAACE,QAAQ,CAAC,SAAS,CAAC,CAAE,EAC3I;IACD,OAAO;MACNC,KAAK,EAAE,qBAAqB;MAC5BC,QAAQ,EAAE;IACX,CAAC;EACF;EAEA,IACCJ,UAAU,CAACE,QAAQ,CAAC,YAAY,CAAC,IACjCF,UAAU,CAACE,QAAQ,CAAC,KAAK,CAAC,IAC1BF,UAAU,CAACE,QAAQ,CAAC,mBAAmB,CAAC,IACxCF,UAAU,CAACE,QAAQ,CAAC,OAAO,CAAC,EAC3B;IACD,OAAO;MACNC,KAAK,EAAE,uBAAuB;MAC9BC,QAAQ,EAAE;IACX,CAAC;EACF;EAEA,IACCJ,UAAU,CAACE,QAAQ,CAAC,cAAc,CAAC,IACnCF,UAAU,CAACE,QAAQ,CAAC,SAAS,CAAC,IAC9BF,UAAU,CAACE,QAAQ,CAAC,SAAS,CAAC,IAC9BF,UAAU,CAACE,QAAQ,CAAC,WAAW,CAAC,IAChCF,UAAU,CAACE,QAAQ,CAAC,WAAW,CAAC,IAChCF,UAAU,CAACE,QAAQ,CAAC,OAAO,CAAC,IAC5BF,UAAU,CAACE,QAAQ,CAAC,QAAQ,CAAC,IAC7BF,UAAU,CAACE,QAAQ,CAAC,KAAK,CAAC,EACzB;IACD,OAAO;MACNC,KAAK,EAAE,mCAAmC;MAC1CC,QAAQ,EAAE;IACX,CAAC;EACF;EAEA,OAAO;IACND,KAAK,EAAE,wBAAwB;IAC/BC,QAAQ,EAAE;EACX,CAAC;AACF","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ export function createIdleRuntimeState() {
2
+ return {
3
+ phase: "idle",
4
+ label: "Ready",
5
+ interruptible: false,
6
+ canContinue: true
7
+ };
8
+ }
9
+ export function createRunningRuntimeState(label = "Running") {
10
+ return {
11
+ phase: "running",
12
+ label,
13
+ interruptible: true,
14
+ canContinue: false
15
+ };
16
+ }
17
+ export function createRetryingRuntimeState(label, detail) {
18
+ return {
19
+ phase: "retrying",
20
+ label,
21
+ detail,
22
+ interruptible: true,
23
+ canContinue: false
24
+ };
25
+ }
26
+ export function createCompactingRuntimeState(label, detail) {
27
+ return {
28
+ phase: "compacting",
29
+ label,
30
+ detail,
31
+ interruptible: true,
32
+ canContinue: false
33
+ };
34
+ }
35
+ export function createInterruptedRuntimeState(label, detail) {
36
+ return {
37
+ phase: "interrupted",
38
+ label,
39
+ detail,
40
+ interruptible: false,
41
+ canContinue: true
42
+ };
43
+ }
44
+ export function createErrorRuntimeState(label, detail) {
45
+ return {
46
+ phase: "error",
47
+ label,
48
+ detail,
49
+ interruptible: false,
50
+ canContinue: true
51
+ };
52
+ }
53
+ export function runtimeStateTone(state) {
54
+ switch (state.phase) {
55
+ case "running":
56
+ return "accent";
57
+ case "retrying":
58
+ case "compacting":
59
+ return "warning";
60
+ case "interrupted":
61
+ case "error":
62
+ return "danger";
63
+ case "idle":
64
+ return "success";
65
+ }
66
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createIdleRuntimeState","phase","label","interruptible","canContinue","createRunningRuntimeState","createRetryingRuntimeState","detail","createCompactingRuntimeState","createInterruptedRuntimeState","createErrorRuntimeState","runtimeStateTone","state"],"sources":["runtime-status.ts"],"sourcesContent":["export type RuntimePhase = \"idle\" | \"running\" | \"retrying\" | \"compacting\" | \"interrupted\" | \"error\";\r\n\r\nexport interface RuntimeSessionState {\r\n\tphase: RuntimePhase;\r\n\tlabel: string;\r\n\tdetail?: string;\r\n\tinterruptible: boolean;\r\n\tcanContinue: boolean;\r\n}\r\n\r\nexport function createIdleRuntimeState(): RuntimeSessionState {\r\n\treturn {\r\n\t\tphase: \"idle\",\r\n\t\tlabel: \"Ready\",\r\n\t\tinterruptible: false,\r\n\t\tcanContinue: true,\r\n\t};\r\n}\r\n\r\nexport function createRunningRuntimeState(label = \"Running\"): RuntimeSessionState {\r\n\treturn {\r\n\t\tphase: \"running\",\r\n\t\tlabel,\r\n\t\tinterruptible: true,\r\n\t\tcanContinue: false,\r\n\t};\r\n}\r\n\r\nexport function createRetryingRuntimeState(label: string, detail?: string): RuntimeSessionState {\r\n\treturn {\r\n\t\tphase: \"retrying\",\r\n\t\tlabel,\r\n\t\tdetail,\r\n\t\tinterruptible: true,\r\n\t\tcanContinue: false,\r\n\t};\r\n}\r\n\r\nexport function createCompactingRuntimeState(label: string, detail?: string): RuntimeSessionState {\r\n\treturn {\r\n\t\tphase: \"compacting\",\r\n\t\tlabel,\r\n\t\tdetail,\r\n\t\tinterruptible: true,\r\n\t\tcanContinue: false,\r\n\t};\r\n}\r\n\r\nexport function createInterruptedRuntimeState(label: string, detail?: string): RuntimeSessionState {\r\n\treturn {\r\n\t\tphase: \"interrupted\",\r\n\t\tlabel,\r\n\t\tdetail,\r\n\t\tinterruptible: false,\r\n\t\tcanContinue: true,\r\n\t};\r\n}\r\n\r\nexport function createErrorRuntimeState(label: string, detail?: string): RuntimeSessionState {\r\n\treturn {\r\n\t\tphase: \"error\",\r\n\t\tlabel,\r\n\t\tdetail,\r\n\t\tinterruptible: false,\r\n\t\tcanContinue: true,\r\n\t};\r\n}\r\n\r\nexport function runtimeStateTone(state: RuntimeSessionState): \"muted\" | \"accent\" | \"warning\" | \"danger\" | \"success\" {\r\n\tswitch (state.phase) {\r\n\t\tcase \"running\":\r\n\t\t\treturn \"accent\";\r\n\t\tcase \"retrying\":\r\n\t\tcase \"compacting\":\r\n\t\t\treturn \"warning\";\r\n\t\tcase \"interrupted\":\r\n\t\tcase \"error\":\r\n\t\t\treturn \"danger\";\r\n\t\tcase \"idle\":\r\n\t\t\treturn \"success\";\r\n\t}\r\n}\r\n"],"mappings":"AAUA,OAAO,SAASA,sBAAsBA,CAAA,EAAwB;EAC7D,OAAO;IACNC,KAAK,EAAE,MAAM;IACbC,KAAK,EAAE,OAAO;IACdC,aAAa,EAAE,KAAK;IACpBC,WAAW,EAAE;EACd,CAAC;AACF;AAEA,OAAO,SAASC,yBAAyBA,CAACH,KAAK,GAAG,SAAS,EAAuB;EACjF,OAAO;IACND,KAAK,EAAE,SAAS;IAChBC,KAAK;IACLC,aAAa,EAAE,IAAI;IACnBC,WAAW,EAAE;EACd,CAAC;AACF;AAEA,OAAO,SAASE,0BAA0BA,CAACJ,KAAa,EAAEK,MAAe,EAAuB;EAC/F,OAAO;IACNN,KAAK,EAAE,UAAU;IACjBC,KAAK;IACLK,MAAM;IACNJ,aAAa,EAAE,IAAI;IACnBC,WAAW,EAAE;EACd,CAAC;AACF;AAEA,OAAO,SAASI,4BAA4BA,CAACN,KAAa,EAAEK,MAAe,EAAuB;EACjG,OAAO;IACNN,KAAK,EAAE,YAAY;IACnBC,KAAK;IACLK,MAAM;IACNJ,aAAa,EAAE,IAAI;IACnBC,WAAW,EAAE;EACd,CAAC;AACF;AAEA,OAAO,SAASK,6BAA6BA,CAACP,KAAa,EAAEK,MAAe,EAAuB;EAClG,OAAO;IACNN,KAAK,EAAE,aAAa;IACpBC,KAAK;IACLK,MAAM;IACNJ,aAAa,EAAE,KAAK;IACpBC,WAAW,EAAE;EACd,CAAC;AACF;AAEA,OAAO,SAASM,uBAAuBA,CAACR,KAAa,EAAEK,MAAe,EAAuB;EAC5F,OAAO;IACNN,KAAK,EAAE,OAAO;IACdC,KAAK;IACLK,MAAM;IACNJ,aAAa,EAAE,KAAK;IACpBC,WAAW,EAAE;EACd,CAAC;AACF;AAEA,OAAO,SAASO,gBAAgBA,CAACC,KAA0B,EAAyD;EACnH,QAAQA,KAAK,CAACX,KAAK;IAClB,KAAK,SAAS;MACb,OAAO,QAAQ;IAChB,KAAK,UAAU;IACf,KAAK,YAAY;MAChB,OAAO,SAAS;IACjB,KAAK,aAAa;IAClB,KAAK,OAAO;MACX,OAAO,QAAQ;IAChB,KAAK,MAAM;MACV,OAAO,SAAS;EAClB;AACD","ignoreList":[]}