@intrect/openswarm 0.4.4 → 0.8.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 (259) hide show
  1. package/README.md +46 -26
  2. package/config.example.yaml +22 -10
  3. package/dist/adapters/agenticLoop.d.ts +45 -2
  4. package/dist/adapters/agenticLoop.d.ts.map +1 -1
  5. package/dist/adapters/agenticLoop.js +209 -61
  6. package/dist/adapters/agenticLoop.js.map +1 -1
  7. package/dist/adapters/chatStream.d.ts +55 -0
  8. package/dist/adapters/chatStream.d.ts.map +1 -0
  9. package/dist/adapters/chatStream.js +116 -0
  10. package/dist/adapters/chatStream.js.map +1 -0
  11. package/dist/adapters/codex.d.ts +7 -0
  12. package/dist/adapters/codex.d.ts.map +1 -1
  13. package/dist/adapters/codex.js +67 -6
  14. package/dist/adapters/codex.js.map +1 -1
  15. package/dist/adapters/codexModels.d.ts +20 -0
  16. package/dist/adapters/codexModels.d.ts.map +1 -0
  17. package/dist/adapters/codexModels.js +195 -0
  18. package/dist/adapters/codexModels.js.map +1 -0
  19. package/dist/adapters/codexResponses.d.ts +97 -0
  20. package/dist/adapters/codexResponses.d.ts.map +1 -0
  21. package/dist/adapters/codexResponses.js +302 -0
  22. package/dist/adapters/codexResponses.js.map +1 -0
  23. package/dist/adapters/gpt.d.ts.map +1 -1
  24. package/dist/adapters/gpt.js +20 -120
  25. package/dist/adapters/gpt.js.map +1 -1
  26. package/dist/adapters/index.d.ts +10 -2
  27. package/dist/adapters/index.d.ts.map +1 -1
  28. package/dist/adapters/index.js +19 -5
  29. package/dist/adapters/index.js.map +1 -1
  30. package/dist/adapters/lmstudio.d.ts +8 -0
  31. package/dist/adapters/lmstudio.d.ts.map +1 -0
  32. package/dist/adapters/lmstudio.js +41 -0
  33. package/dist/adapters/lmstudio.js.map +1 -0
  34. package/dist/adapters/local.d.ts +16 -1
  35. package/dist/adapters/local.d.ts.map +1 -1
  36. package/dist/adapters/local.js +51 -127
  37. package/dist/adapters/local.js.map +1 -1
  38. package/dist/adapters/openrouter.d.ts +37 -0
  39. package/dist/adapters/openrouter.d.ts.map +1 -0
  40. package/dist/adapters/openrouter.js +193 -0
  41. package/dist/adapters/openrouter.js.map +1 -0
  42. package/dist/adapters/resultParsing.d.ts +6 -0
  43. package/dist/adapters/resultParsing.d.ts.map +1 -0
  44. package/dist/adapters/resultParsing.js +139 -0
  45. package/dist/adapters/resultParsing.js.map +1 -0
  46. package/dist/adapters/tools.d.ts +21 -2
  47. package/dist/adapters/tools.d.ts.map +1 -1
  48. package/dist/adapters/tools.js +153 -12
  49. package/dist/adapters/tools.js.map +1 -1
  50. package/dist/adapters/types.d.ts +40 -1
  51. package/dist/adapters/types.d.ts.map +1 -1
  52. package/dist/adapters/webTools.d.ts +9 -0
  53. package/dist/adapters/webTools.d.ts.map +1 -0
  54. package/dist/adapters/webTools.js +195 -0
  55. package/dist/adapters/webTools.js.map +1 -0
  56. package/dist/agents/draftAnalyzer.d.ts +1 -1
  57. package/dist/agents/draftAnalyzer.d.ts.map +1 -1
  58. package/dist/agents/draftAnalyzer.js +3 -3
  59. package/dist/agents/draftAnalyzer.js.map +1 -1
  60. package/dist/agents/pairPipeline.d.ts +26 -1
  61. package/dist/agents/pairPipeline.d.ts.map +1 -1
  62. package/dist/agents/pairPipeline.js +184 -17
  63. package/dist/agents/pairPipeline.js.map +1 -1
  64. package/dist/agents/reflection.d.ts +56 -0
  65. package/dist/agents/reflection.d.ts.map +1 -0
  66. package/dist/agents/reflection.js +120 -0
  67. package/dist/agents/reflection.js.map +1 -0
  68. package/dist/agents/worker.d.ts +8 -0
  69. package/dist/agents/worker.d.ts.map +1 -1
  70. package/dist/agents/worker.js +23 -2
  71. package/dist/agents/worker.js.map +1 -1
  72. package/dist/auth/index.d.ts +3 -1
  73. package/dist/auth/index.d.ts.map +1 -1
  74. package/dist/auth/index.js +3 -1
  75. package/dist/auth/index.js.map +1 -1
  76. package/dist/auth/linearPkce.d.ts +22 -0
  77. package/dist/auth/linearPkce.d.ts.map +1 -0
  78. package/dist/auth/linearPkce.js +208 -0
  79. package/dist/auth/linearPkce.js.map +1 -0
  80. package/dist/auth/oauthPkce.d.ts +4 -3
  81. package/dist/auth/oauthPkce.d.ts.map +1 -1
  82. package/dist/auth/oauthPkce.js +39 -12
  83. package/dist/auth/oauthPkce.js.map +1 -1
  84. package/dist/auth/oauthStore.d.ts +11 -1
  85. package/dist/auth/oauthStore.d.ts.map +1 -1
  86. package/dist/auth/oauthStore.js +14 -2
  87. package/dist/auth/oauthStore.js.map +1 -1
  88. package/dist/auth/openrouterPkce.d.ts +29 -0
  89. package/dist/auth/openrouterPkce.d.ts.map +1 -0
  90. package/dist/auth/openrouterPkce.js +222 -0
  91. package/dist/auth/openrouterPkce.js.map +1 -0
  92. package/dist/automation/autonomousRunner.d.ts +17 -7
  93. package/dist/automation/autonomousRunner.d.ts.map +1 -1
  94. package/dist/automation/autonomousRunner.js +69 -70
  95. package/dist/automation/autonomousRunner.js.map +1 -1
  96. package/dist/automation/backlogGrooming.d.ts +21 -0
  97. package/dist/automation/backlogGrooming.d.ts.map +1 -0
  98. package/dist/automation/backlogGrooming.js +80 -0
  99. package/dist/automation/backlogGrooming.js.map +1 -0
  100. package/dist/automation/localCI.d.ts +24 -0
  101. package/dist/automation/localCI.d.ts.map +1 -0
  102. package/dist/automation/localCI.js +84 -0
  103. package/dist/automation/localCI.js.map +1 -0
  104. package/dist/automation/runnerExecution.d.ts +33 -7
  105. package/dist/automation/runnerExecution.d.ts.map +1 -1
  106. package/dist/automation/runnerExecution.js +202 -154
  107. package/dist/automation/runnerExecution.js.map +1 -1
  108. package/dist/automation/runnerTypes.d.ts +5 -1
  109. package/dist/automation/runnerTypes.d.ts.map +1 -1
  110. package/dist/automation/taskSource.d.ts +101 -0
  111. package/dist/automation/taskSource.d.ts.map +1 -0
  112. package/dist/automation/taskSource.js +136 -0
  113. package/dist/automation/taskSource.js.map +1 -0
  114. package/dist/automation/workerAuditLog.d.ts +29 -0
  115. package/dist/automation/workerAuditLog.d.ts.map +1 -0
  116. package/dist/automation/workerAuditLog.js +82 -0
  117. package/dist/automation/workerAuditLog.js.map +1 -0
  118. package/dist/cli/authHandler.d.ts +14 -5
  119. package/dist/cli/authHandler.d.ts.map +1 -1
  120. package/dist/cli/authHandler.js +131 -36
  121. package/dist/cli/authHandler.js.map +1 -1
  122. package/dist/cli/daemon.d.ts +5 -0
  123. package/dist/cli/daemon.d.ts.map +1 -1
  124. package/dist/cli/daemon.js +13 -0
  125. package/dist/cli/daemon.js.map +1 -1
  126. package/dist/cli/doctorHandler.d.ts +2 -0
  127. package/dist/cli/doctorHandler.d.ts.map +1 -0
  128. package/dist/cli/doctorHandler.js +114 -0
  129. package/dist/cli/doctorHandler.js.map +1 -0
  130. package/dist/cli/initWizard.d.ts +13 -0
  131. package/dist/cli/initWizard.d.ts.map +1 -0
  132. package/dist/cli/initWizard.js +314 -0
  133. package/dist/cli/initWizard.js.map +1 -0
  134. package/dist/cli.js +112 -38
  135. package/dist/cli.js.map +1 -1
  136. package/dist/core/config.d.ts +89 -15
  137. package/dist/core/config.d.ts.map +1 -1
  138. package/dist/core/config.js +100 -23
  139. package/dist/core/config.js.map +1 -1
  140. package/dist/core/envFile.d.ts +6 -0
  141. package/dist/core/envFile.d.ts.map +1 -1
  142. package/dist/core/envFile.js +39 -1
  143. package/dist/core/envFile.js.map +1 -1
  144. package/dist/core/eventHub.d.ts +22 -0
  145. package/dist/core/eventHub.d.ts.map +1 -1
  146. package/dist/core/eventHub.js.map +1 -1
  147. package/dist/core/providerOverride.d.ts +6 -0
  148. package/dist/core/providerOverride.d.ts.map +1 -0
  149. package/dist/core/providerOverride.js +37 -0
  150. package/dist/core/providerOverride.js.map +1 -0
  151. package/dist/core/service.d.ts.map +1 -1
  152. package/dist/core/service.js +43 -20
  153. package/dist/core/service.js.map +1 -1
  154. package/dist/core/types.d.ts +16 -2
  155. package/dist/core/types.d.ts.map +1 -1
  156. package/dist/discord/discordCore.d.ts.map +1 -1
  157. package/dist/discord/discordCore.js +16 -103
  158. package/dist/discord/discordCore.js.map +1 -1
  159. package/dist/discord/discordHandlers.d.ts.map +1 -1
  160. package/dist/discord/discordHandlers.js +15 -12
  161. package/dist/discord/discordHandlers.js.map +1 -1
  162. package/dist/index.js +12 -1
  163. package/dist/index.js.map +1 -1
  164. package/dist/issues/sqliteStore.d.ts.map +1 -1
  165. package/dist/issues/sqliteStore.js +7 -2
  166. package/dist/issues/sqliteStore.js.map +1 -1
  167. package/dist/knowledge/scanner.d.ts.map +1 -1
  168. package/dist/knowledge/scanner.js +5 -0
  169. package/dist/knowledge/scanner.js.map +1 -1
  170. package/dist/linear/linear.d.ts +45 -2
  171. package/dist/linear/linear.d.ts.map +1 -1
  172. package/dist/linear/linear.js +154 -3
  173. package/dist/linear/linear.js.map +1 -1
  174. package/dist/locale/prompts/en.d.ts.map +1 -1
  175. package/dist/locale/prompts/en.js +40 -20
  176. package/dist/locale/prompts/en.js.map +1 -1
  177. package/dist/locale/prompts/ko.d.ts.map +1 -1
  178. package/dist/locale/prompts/ko.js +39 -20
  179. package/dist/locale/prompts/ko.js.map +1 -1
  180. package/dist/locale/types.d.ts +6 -0
  181. package/dist/locale/types.d.ts.map +1 -1
  182. package/dist/mcp/mcpClient.d.ts +27 -0
  183. package/dist/mcp/mcpClient.d.ts.map +1 -0
  184. package/dist/mcp/mcpClient.js +145 -0
  185. package/dist/mcp/mcpClient.js.map +1 -0
  186. package/dist/memory/memoryCore.d.ts.map +1 -1
  187. package/dist/memory/memoryCore.js +8 -2
  188. package/dist/memory/memoryCore.js.map +1 -1
  189. package/dist/memory/repoKnowledge.d.ts +33 -0
  190. package/dist/memory/repoKnowledge.d.ts.map +1 -0
  191. package/dist/memory/repoKnowledge.js +97 -0
  192. package/dist/memory/repoKnowledge.js.map +1 -0
  193. package/dist/notify/notifier.d.ts +26 -0
  194. package/dist/notify/notifier.d.ts.map +1 -0
  195. package/dist/notify/notifier.js +131 -0
  196. package/dist/notify/notifier.js.map +1 -0
  197. package/dist/orchestration/conflictDetector.d.ts +5 -2
  198. package/dist/orchestration/conflictDetector.d.ts.map +1 -1
  199. package/dist/orchestration/conflictDetector.js +35 -6
  200. package/dist/orchestration/conflictDetector.js.map +1 -1
  201. package/dist/orchestration/decisionEngine.d.ts +20 -0
  202. package/dist/orchestration/decisionEngine.d.ts.map +1 -1
  203. package/dist/orchestration/decisionEngine.js +45 -0
  204. package/dist/orchestration/decisionEngine.js.map +1 -1
  205. package/dist/support/banner.d.ts +7 -0
  206. package/dist/support/banner.d.ts.map +1 -0
  207. package/dist/support/banner.js +32 -0
  208. package/dist/support/banner.js.map +1 -0
  209. package/dist/support/chat.js +36 -27
  210. package/dist/support/chat.js.map +1 -1
  211. package/dist/support/chatBackend.d.ts +6 -0
  212. package/dist/support/chatBackend.d.ts.map +1 -1
  213. package/dist/support/chatBackend.js +105 -83
  214. package/dist/support/chatBackend.js.map +1 -1
  215. package/dist/support/chatTui.d.ts.map +1 -1
  216. package/dist/support/chatTui.js +217 -27
  217. package/dist/support/chatTui.js.map +1 -1
  218. package/dist/support/colors.d.ts +15 -0
  219. package/dist/support/colors.d.ts.map +1 -0
  220. package/dist/support/colors.js +23 -0
  221. package/dist/support/colors.js.map +1 -0
  222. package/dist/support/dashboardHtml.d.ts +1 -1
  223. package/dist/support/dashboardHtml.d.ts.map +1 -1
  224. package/dist/support/dashboardHtml.js +318 -65
  225. package/dist/support/dashboardHtml.js.map +1 -1
  226. package/dist/support/planCommand.d.ts +17 -0
  227. package/dist/support/planCommand.d.ts.map +1 -0
  228. package/dist/support/planCommand.js +114 -0
  229. package/dist/support/planCommand.js.map +1 -0
  230. package/dist/support/planner.d.ts +9 -2
  231. package/dist/support/planner.d.ts.map +1 -1
  232. package/dist/support/planner.js +43 -111
  233. package/dist/support/planner.js.map +1 -1
  234. package/dist/support/projectMapper.d.ts.map +1 -1
  235. package/dist/support/projectMapper.js +29 -1
  236. package/dist/support/projectMapper.js.map +1 -1
  237. package/dist/support/promptHelper.d.ts +24 -0
  238. package/dist/support/promptHelper.d.ts.map +1 -0
  239. package/dist/support/promptHelper.js +94 -0
  240. package/dist/support/promptHelper.js.map +1 -0
  241. package/dist/support/rateLimiter.d.ts.map +1 -1
  242. package/dist/support/rateLimiter.js +6 -0
  243. package/dist/support/rateLimiter.js.map +1 -1
  244. package/dist/support/repoMetadata.d.ts +51 -0
  245. package/dist/support/repoMetadata.d.ts.map +1 -0
  246. package/dist/support/repoMetadata.js +91 -0
  247. package/dist/support/repoMetadata.js.map +1 -0
  248. package/dist/support/web.d.ts.map +1 -1
  249. package/dist/support/web.js +196 -71
  250. package/dist/support/web.js.map +1 -1
  251. package/dist/support/worktreeManager.d.ts +6 -1
  252. package/dist/support/worktreeManager.d.ts.map +1 -1
  253. package/dist/support/worktreeManager.js +23 -1
  254. package/dist/support/worktreeManager.js.map +1 -1
  255. package/dist/taskState/store.d.ts +1 -0
  256. package/dist/taskState/store.d.ts.map +1 -1
  257. package/dist/taskState/store.js +22 -1
  258. package/dist/taskState/store.js.map +1 -1
  259. package/package.json +3 -1
@@ -2,7 +2,7 @@ import type { DecisionResult, TaskItem } from '../orchestration/decisionEngine.j
2
2
  import type { ExecutorResult } from '../orchestration/workflow.js';
3
3
  import type { DefaultRolesConfig, ProjectAgentConfig, JobProfile } from '../core/types.js';
4
4
  export interface AutonomousConfig {
5
- defaultAdapter?: 'claude' | 'codex' | 'gpt' | 'local';
5
+ defaultAdapter?: 'codex' | 'codex-responses' | 'gpt' | 'local' | 'lmstudio' | 'openrouter';
6
6
  linearTeamId: string;
7
7
  allowedProjects: string[];
8
8
  heartbeatSchedule: string;
@@ -11,6 +11,8 @@ export interface AutonomousConfig {
11
11
  maxConsecutiveTasks: number;
12
12
  cooldownSeconds: number;
13
13
  dryRun: boolean;
14
+ /** Treat Linear Backlog as a work queue (legacy). Default false = Backlog parked (R5). */
15
+ includeBacklog?: boolean;
14
16
  pairMode?: boolean;
15
17
  pairMaxAttempts?: number;
16
18
  workerModel?: string;
@@ -28,6 +30,8 @@ export interface AutonomousConfig {
28
30
  decomposition?: import('../core/types.js').DecompositionConfig;
29
31
  worktreeMode?: boolean;
30
32
  guards?: Partial<import('../core/types.js').PipelineGuardsConfig>;
33
+ /** Max objective self-repair attempts (lint/bs/test) before giving up (default: 3) */
34
+ maxReflections?: number;
31
35
  /** Per-project task cap in 5h rolling window (default: 6) */
32
36
  dailyTaskCap?: number;
33
37
  /** Cooldown between task completions in ms (default: 1800000 = 30min) */
@@ -1 +1 @@
1
- {"version":3,"file":"runnerTypes.d.ts","sourceRoot":"","sources":["../../src/automation/runnerTypes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,kBAAkB,EAAE,mBAAmB,CAAC;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;IAClE,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"runnerTypes.d.ts","sourceRoot":"","sources":["../../src/automation/runnerTypes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,OAAO,GAAG,iBAAiB,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;IAC3F,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,0FAA0F;IAC1F,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,kBAAkB,EAAE,mBAAmB,CAAC;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;IAClE,sFAAsF;IACtF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,101 @@
1
+ import type { IIssueStore } from '../issues/sqliteStore.js';
2
+ import type { Issue } from '../issues/schema.js';
3
+ import type { TaskItem } from '../orchestration/decisionEngine.js';
4
+ /** The runner's task-state vocabulary (mirrors Linear's updateIssueState states). */
5
+ export type TaskState = 'In Progress' | 'In Review' | 'Done' | 'Backlog' | 'Todo';
6
+ /** Pair-completion stats (matches linear.logPairComplete). */
7
+ export interface PairCompleteStats {
8
+ attempts: number;
9
+ duration: number;
10
+ filesChanged: string[];
11
+ workerSummary?: string;
12
+ workerCommands?: string[];
13
+ reviewerFeedback?: string;
14
+ reviewerDecision?: string;
15
+ testResults?: {
16
+ passed: number;
17
+ failed: number;
18
+ coverage?: number;
19
+ failedTests?: string[];
20
+ };
21
+ remainingWork?: string;
22
+ }
23
+ export type SubIssueResult = {
24
+ id: string;
25
+ identifier: string;
26
+ title: string;
27
+ } | {
28
+ error: string;
29
+ };
30
+ /**
31
+ * Everything the autonomous runner needs from its task tracker. LinearTaskSource
32
+ * preserves today's behavior exactly (thin delegation); SqliteTaskSource backs
33
+ * the same surface with the local store.
34
+ */
35
+ export interface ITaskSource {
36
+ readonly kind: 'linear' | 'local';
37
+ fetchTasks(): Promise<TaskItem[]>;
38
+ /** Create a top-level task/issue (used by the /plan cockpit to seed a parent). */
39
+ createTask(title: string, description: string, projectId?: string): Promise<SubIssueResult>;
40
+ updateState(issueId: string, state: TaskState): Promise<void>;
41
+ addComment(issueId: string, body: string): Promise<void>;
42
+ createSubIssue(parentId: string, title: string, description: string, options?: {
43
+ priority?: number;
44
+ projectId?: string;
45
+ estimatedMinutes?: number;
46
+ }): Promise<SubIssueResult>;
47
+ logPairStart(issueId: string, sessionId: string, projectPath: string): Promise<void>;
48
+ logPairComplete(issueId: string, sessionId: string, stats: PairCompleteStats): Promise<void>;
49
+ logBlocked(issueId: string, sessionName: string, reason: string): Promise<void>;
50
+ logHalt(issueId: string, sessionId: string, confidence: number, iteration: number, reason: string): Promise<void>;
51
+ markAsDecomposed(issueId: string, subIssueCount: number, totalMinutes: number): Promise<void>;
52
+ }
53
+ export declare class LinearTaskSource implements ITaskSource {
54
+ private readonly fetch;
55
+ readonly kind: "linear";
56
+ /** fetch is injected so the existing service.ts fetcher closure (slim mode,
57
+ * comment hydration, task-state enrichment) is preserved verbatim. */
58
+ constructor(fetch: () => Promise<TaskItem[]>);
59
+ fetchTasks(): Promise<TaskItem[]>;
60
+ createTask(title: string, description: string, _projectId?: string): Promise<SubIssueResult>;
61
+ updateState(issueId: string, state: TaskState): Promise<void>;
62
+ addComment(issueId: string, body: string): Promise<void>;
63
+ createSubIssue(parentId: string, title: string, description: string, options?: {
64
+ priority?: number;
65
+ projectId?: string;
66
+ estimatedMinutes?: number;
67
+ }): Promise<SubIssueResult>;
68
+ logPairStart(issueId: string, sessionId: string, projectPath: string): Promise<void>;
69
+ logPairComplete(issueId: string, sessionId: string, stats: PairCompleteStats): Promise<void>;
70
+ logBlocked(issueId: string, sessionName: string, reason: string): Promise<void>;
71
+ logHalt(issueId: string, sessionId: string, confidence: number, iteration: number, reason: string): Promise<void>;
72
+ markAsDecomposed(issueId: string, subIssueCount: number, totalMinutes: number): Promise<void>;
73
+ }
74
+ /** Map a local SQLite Issue → the runner's TaskItem. */
75
+ export declare function issueToTask(issue: Issue): TaskItem;
76
+ export declare class SqliteTaskSource implements ITaskSource {
77
+ private readonly store;
78
+ private readonly defaultProjectId;
79
+ readonly kind: "local";
80
+ constructor(store: IIssueStore, defaultProjectId?: string);
81
+ fetchTasks(): Promise<TaskItem[]>;
82
+ createTask(title: string, description: string, projectId?: string): Promise<SubIssueResult>;
83
+ updateState(issueId: string, state: TaskState): Promise<void>;
84
+ addComment(issueId: string, body: string): Promise<void>;
85
+ createSubIssue(parentId: string, title: string, description: string, options?: {
86
+ priority?: number;
87
+ projectId?: string;
88
+ estimatedMinutes?: number;
89
+ }): Promise<SubIssueResult>;
90
+ logPairStart(issueId: string, _sessionId: string, _projectPath: string): Promise<void>;
91
+ logPairComplete(issueId: string, _sessionId: string, stats: PairCompleteStats): Promise<void>;
92
+ logBlocked(issueId: string, _sessionName: string, reason: string): Promise<void>;
93
+ logHalt(issueId: string, _sessionId: string, confidence: number, iteration: number, reason: string): Promise<void>;
94
+ markAsDecomposed(issueId: string, subIssueCount: number, totalMinutes: number): Promise<void>;
95
+ }
96
+ /**
97
+ * Pick the task source: Linear when configured (preserving its fetcher closure),
98
+ * else the local SQLite store. Called from service startup.
99
+ */
100
+ export declare function selectTaskSource(linearConfigured: boolean, linearFetch: () => Promise<TaskItem[]>): ITaskSource;
101
+ //# sourceMappingURL=taskSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskSource.d.ts","sourceRoot":"","sources":["../../src/automation/taskSource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ // ============================================
2
+ // OpenSwarm - Task source abstraction
3
+ // ============================================
4
+ //
5
+ // The autonomous runner was hardwired to Linear. This abstracts the runner's
6
+ // full Linear surface (fetch + state transitions + comment logging + sub-issue
7
+ // creation) behind ITaskSource so OpenSwarm runs with no external SaaS — falling
8
+ // back to the existing local SQLite issue store (INT-1577). TaskItem.source
9
+ // already supports 'local'.
10
+ import * as linear from '../linear/index.js';
11
+ import { getIssueStore } from '../issues/index.js';
12
+ import { enrichTaskFromState } from '../taskState/store.js';
13
+ // ---- Linear-backed (delegates to the existing linear.* — behavior unchanged) ----
14
+ export class LinearTaskSource {
15
+ fetch;
16
+ kind = 'linear';
17
+ /** fetch is injected so the existing service.ts fetcher closure (slim mode,
18
+ * comment hydration, task-state enrichment) is preserved verbatim. */
19
+ constructor(fetch) {
20
+ this.fetch = fetch;
21
+ }
22
+ fetchTasks() { return this.fetch(); }
23
+ async createTask(title, description, _projectId) {
24
+ const r = await linear.createIssue(title, description, []);
25
+ return 'error' in r ? r : { id: r.id, identifier: r.identifier, title: r.title };
26
+ }
27
+ updateState(issueId, state) { return linear.updateIssueState(issueId, state); }
28
+ addComment(issueId, body) { return linear.addComment(issueId, body); }
29
+ createSubIssue(parentId, title, description, options) {
30
+ return linear.createSubIssue(parentId, title, description, options);
31
+ }
32
+ logPairStart(issueId, sessionId, projectPath) { return linear.logPairStart(issueId, sessionId, projectPath); }
33
+ logPairComplete(issueId, sessionId, stats) { return linear.logPairComplete(issueId, sessionId, stats); }
34
+ logBlocked(issueId, sessionName, reason) { return linear.logBlocked(issueId, sessionName, reason); }
35
+ logHalt(issueId, sessionId, confidence, iteration, reason) { return linear.logHalt(issueId, sessionId, confidence, iteration, reason); }
36
+ markAsDecomposed(issueId, subIssueCount, totalMinutes) { return linear.markAsDecomposed(issueId, subIssueCount, totalMinutes); }
37
+ }
38
+ // ---- SQLite-backed (local issue store, no external account) ----
39
+ const PRIORITY_TO_NUM = { urgent: 1, high: 2, medium: 3, low: 4, none: 4 };
40
+ const STATUS_TO_STATE = {
41
+ backlog: 'Backlog', todo: 'Todo', in_progress: 'In Progress', in_review: 'In Review', done: 'Done', cancelled: 'Backlog',
42
+ };
43
+ const STATE_TO_STATUS = {
44
+ 'In Progress': 'in_progress', 'In Review': 'in_review', Done: 'done', Backlog: 'backlog', Todo: 'todo',
45
+ };
46
+ /** Map a local SQLite Issue → the runner's TaskItem. */
47
+ export function issueToTask(issue) {
48
+ return {
49
+ id: issue.id,
50
+ source: 'local',
51
+ title: issue.title,
52
+ description: issue.description,
53
+ priority: PRIORITY_TO_NUM[issue.priority] ?? 3,
54
+ issueId: issue.id,
55
+ issueIdentifier: issue.linearIdentifier ?? issue.id,
56
+ linearState: STATUS_TO_STATE[issue.status],
57
+ parentId: issue.parentId,
58
+ estimatedMinutes: issue.estimateMinutes,
59
+ createdAt: new Date(issue.createdAt).getTime(),
60
+ };
61
+ }
62
+ export class SqliteTaskSource {
63
+ store;
64
+ defaultProjectId;
65
+ kind = 'local';
66
+ constructor(store, defaultProjectId = 'local') {
67
+ this.store = store;
68
+ this.defaultProjectId = defaultProjectId;
69
+ }
70
+ async fetchTasks() {
71
+ const { issues } = this.store.listIssues({ status: ['todo', 'in_progress'], limit: 200, offset: 0 });
72
+ // Enrich from canonical task state so planner-declared fileScope (plus
73
+ // dependency/topoRank data) reaches the runner — mirrors the Linear path.
74
+ return issues.map((issue) => enrichTaskFromState(issueToTask(issue)));
75
+ }
76
+ async createTask(title, description, projectId) {
77
+ try {
78
+ const issue = this.store.createIssue({ projectId: projectId ?? this.defaultProjectId, title, description, status: 'todo' });
79
+ return { id: issue.id, identifier: issue.id, title: issue.title };
80
+ }
81
+ catch (err) {
82
+ return { error: err instanceof Error ? err.message : String(err) };
83
+ }
84
+ }
85
+ async updateState(issueId, state) {
86
+ this.store.changeStatus(issueId, STATE_TO_STATUS[state]);
87
+ }
88
+ async addComment(issueId, body) {
89
+ this.store.addEvent(issueId, 'commented', { content: body });
90
+ }
91
+ async createSubIssue(parentId, title, description, options) {
92
+ const parent = this.store.getIssue(parentId);
93
+ const numToPriority = { 1: 'urgent', 2: 'high', 3: 'medium', 4: 'low' };
94
+ try {
95
+ const issue = this.store.createIssue({
96
+ projectId: options?.projectId ?? parent?.projectId ?? this.defaultProjectId,
97
+ title,
98
+ description,
99
+ status: 'todo',
100
+ priority: numToPriority[options?.priority ?? 3] ?? 'medium',
101
+ parentId,
102
+ estimateMinutes: options?.estimatedMinutes,
103
+ });
104
+ return { id: issue.id, identifier: issue.id, title: issue.title };
105
+ }
106
+ catch (err) {
107
+ return { error: err instanceof Error ? err.message : String(err) };
108
+ }
109
+ }
110
+ async logPairStart(issueId, _sessionId, _projectPath) {
111
+ await this.addComment(issueId, '🔄 [Automation] Pair started');
112
+ }
113
+ async logPairComplete(issueId, _sessionId, stats) {
114
+ await this.addComment(issueId, `✅ [Automation] Pair complete — ${stats.attempts} attempt(s), ${stats.filesChanged.length} file(s)`);
115
+ }
116
+ async logBlocked(issueId, _sessionName, reason) {
117
+ await this.addComment(issueId, `🚧 [Automation] Blocked: ${reason}`);
118
+ }
119
+ async logHalt(issueId, _sessionId, confidence, iteration, reason) {
120
+ await this.addComment(issueId, `⚠️ [Automation] HALT (confidence ${confidence}%, attempt #${iteration}): ${reason}`);
121
+ }
122
+ async markAsDecomposed(issueId, subIssueCount, totalMinutes) {
123
+ await this.addComment(issueId, `🔀 [Automation] Decomposed into ${subIssueCount} sub-task(s) (~${totalMinutes}min)`);
124
+ await this.updateState(issueId, 'Backlog');
125
+ }
126
+ }
127
+ /**
128
+ * Pick the task source: Linear when configured (preserving its fetcher closure),
129
+ * else the local SQLite store. Called from service startup.
130
+ */
131
+ export function selectTaskSource(linearConfigured, linearFetch) {
132
+ if (linearConfigured)
133
+ return new LinearTaskSource(linearFetch);
134
+ return new SqliteTaskSource(getIssueStore());
135
+ }
136
+ //# sourceMappingURL=taskSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskSource.js","sourceRoot":"","sources":["../../src/automation/taskSource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { WorkerResult } from '../agents/agentPair.js';
2
+ export interface WorkerStartInfo {
3
+ /** 1-based iteration/attempt number. */
4
+ attempt: number;
5
+ maxAttempts?: number;
6
+ taskTitle: string;
7
+ /** Prompt summary — task description or draft intent summary. */
8
+ taskGoal?: string;
9
+ /** Files the worker is expected to touch (from draft analysis / impact). */
10
+ targetFiles?: string[];
11
+ /** Resolved model for this worker run. */
12
+ model?: string;
13
+ /** Max agentic turns (proxy for effort budget). */
14
+ maxTurns?: number;
15
+ /** True when this run follows reviewer/guard feedback (a revision). */
16
+ isRevision?: boolean;
17
+ }
18
+ /** Comment body posted when a worker run starts (the instruction). */
19
+ export declare function buildWorkerStartComment(info: WorkerStartInfo): string;
20
+ export interface WorkerCompleteInfo {
21
+ attempt: number;
22
+ maxAttempts?: number;
23
+ result: WorkerResult;
24
+ /** Worker run duration in seconds. */
25
+ durationSec?: number;
26
+ }
27
+ /** Comment body posted when a worker run completes (the actions taken). */
28
+ export declare function buildWorkerCompleteComment(info: WorkerCompleteInfo): string;
29
+ //# sourceMappingURL=workerAuditLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerAuditLog.d.ts","sourceRoot":"","sources":["../../src/automation/workerAuditLog.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAsB3D,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,sEAAsE;AACtE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAoBrE;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,2EAA2E;AAC3E,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CA+B3E"}
@@ -0,0 +1,82 @@
1
+ // ============================================
2
+ // OpenSwarm - Worker audit log
3
+ // ============================================
4
+ //
5
+ // Every worker run should leave an audit trail on the issue: what it was
6
+ // instructed to do (start) and what it actually did (complete). These build the
7
+ // comment bodies posted via ITaskSource.addComment, so they work for Linear AND
8
+ // the local SQLite task source (which writes addComment → addEvent). See INT-1612.
9
+ /** Caps so a chatty agent can't post a multi-MB comment. */
10
+ const MAX_FILES = 20;
11
+ const MAX_COMMANDS = 12;
12
+ const SUMMARY_CAP = 600;
13
+ const GOAL_CAP = 400;
14
+ function cap(s, n) {
15
+ if (!s)
16
+ return '';
17
+ const trimmed = s.trim();
18
+ return trimmed.length > n ? `${trimmed.slice(0, n - 1)}…` : trimmed;
19
+ }
20
+ /** Render a list as inline code, capped, with an "+N more" suffix when truncated. */
21
+ function codeList(items, max) {
22
+ if (!items || items.length === 0)
23
+ return '_(none)_';
24
+ const shown = items.slice(0, max).map((i) => `\`${i}\``).join(', ');
25
+ const extra = items.length - max;
26
+ return extra > 0 ? `${shown} _+${extra} more_` : shown;
27
+ }
28
+ /** Comment body posted when a worker run starts (the instruction). */
29
+ export function buildWorkerStartComment(info) {
30
+ const attemptLabel = info.maxAttempts
31
+ ? `attempt #${info.attempt}/${info.maxAttempts}`
32
+ : `attempt #${info.attempt}`;
33
+ const heading = info.isRevision ? 'Worker Revision' : 'Worker Instruction';
34
+ const lines = [`🛠️ **[${heading}]** (${attemptLabel})`, ''];
35
+ lines.push(`**Task:** ${cap(info.taskTitle, 200)}`);
36
+ if (info.taskGoal)
37
+ lines.push(`**Goal:** ${cap(info.taskGoal, GOAL_CAP)}`);
38
+ if (info.targetFiles && info.targetFiles.length > 0) {
39
+ lines.push(`**Target files:** ${codeList(info.targetFiles, MAX_FILES)}`);
40
+ }
41
+ const budget = [];
42
+ if (info.model)
43
+ budget.push(`model \`${info.model}\``);
44
+ if (info.maxTurns)
45
+ budget.push(`max turns ${info.maxTurns}`);
46
+ if (budget.length > 0)
47
+ lines.push(`**Effort:** ${budget.join(' · ')}`);
48
+ lines.push('', '---', '_Auto-generated audit log_');
49
+ return lines.join('\n');
50
+ }
51
+ /** Comment body posted when a worker run completes (the actions taken). */
52
+ export function buildWorkerCompleteComment(info) {
53
+ const { result } = info;
54
+ const attemptLabel = info.maxAttempts
55
+ ? `attempt #${info.attempt}/${info.maxAttempts}`
56
+ : `attempt #${info.attempt}`;
57
+ const icon = result.haltReason ? '⚠️' : result.success ? '✅' : '❌';
58
+ const verdict = result.haltReason ? 'Halted' : result.success ? 'Done' : 'Failed';
59
+ const lines = [`${icon} **[Worker Actions — ${verdict}]** (${attemptLabel})`, ''];
60
+ if (result.summary)
61
+ lines.push(`**Summary:** ${cap(result.summary, SUMMARY_CAP)}`);
62
+ const files = result.filesChanged ?? [];
63
+ lines.push(`**Files changed (${files.length}):** ${codeList(files, MAX_FILES)}`);
64
+ const commands = result.commands ?? [];
65
+ if (commands.length > 0) {
66
+ lines.push(`**Commands (${commands.length}):** ${codeList(commands, MAX_COMMANDS)}`);
67
+ }
68
+ if (result.confidencePercent != null) {
69
+ lines.push(`**Confidence:** ${result.confidencePercent}%`);
70
+ }
71
+ if (info.durationSec != null) {
72
+ const d = info.durationSec;
73
+ lines.push(`**Duration:** ${d < 60 ? `${d}s` : `${Math.floor(d / 60)}m ${d % 60}s`}`);
74
+ }
75
+ if (result.haltReason)
76
+ lines.push(`**Halt reason:** ${cap(result.haltReason, GOAL_CAP)}`);
77
+ if (result.error)
78
+ lines.push(`**Error:** ${cap(result.error, GOAL_CAP)}`);
79
+ lines.push('', '---', '_Auto-generated audit log_');
80
+ return lines.join('\n');
81
+ }
82
+ //# sourceMappingURL=workerAuditLog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerAuditLog.js","sourceRoot":"","sources":["../../src/automation/workerAuditLog.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,23 @@
1
- /**
2
- * GPT OAuth 로그인 흐름 실행
3
- */
4
- export declare function handleAuthLogin(provider: string, opts: {
1
+ export interface AuthLoginOpts {
5
2
  clientId?: string;
6
3
  port?: number;
7
- }): Promise<void>;
4
+ /** OpenRouter: PKCE 없이 직접 입력받은 API key */
5
+ apiKey?: string;
6
+ }
7
+ /**
8
+ * 로그인 흐름 (provider별 분기)
9
+ */
10
+ export declare function handleAuthLogin(provider: string, opts: AuthLoginOpts): Promise<void>;
8
11
  /**
9
12
  * 저장된 인증 프로필 상태 표시
10
13
  */
11
14
  export declare function handleAuthStatus(): void;
15
+ /**
16
+ * 사용 가능한 Codex 모델 목록 표시.
17
+ * GPT/Codex OAuth 토큰이 있으면 라이브로(chatgpt.com Codex 백엔드) 조회하고,
18
+ * 없으면 ~/.codex 로컬 소스 + 큐레이트 fallback으로 표시한다.
19
+ */
20
+ export declare function handleAuthModels(): Promise<void>;
12
21
  /**
13
22
  * 인증 프로필 삭제
14
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"authHandler.d.ts","sourceRoot":"","sources":["../../src/cli/authHandler.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjH;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CA6BvC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAcvD"}
1
+ {"version":3,"file":"authHandler.d.ts","sourceRoot":"","sources":["../../src/cli/authHandler.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,IAAI,CAAC,CAoBf;AAqED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAkCvC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAyBtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAWvD"}