@a5c-ai/genty-platform 5.1.1-staging.0ad6ac75ae4a

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 (584) hide show
  1. package/README.md +48 -0
  2. package/dist/anycli/cache.d.ts +45 -0
  3. package/dist/anycli/cache.d.ts.map +1 -0
  4. package/dist/anycli/cache.js +118 -0
  5. package/dist/anycli/index.d.ts +10 -0
  6. package/dist/anycli/index.d.ts.map +1 -0
  7. package/dist/anycli/index.js +25 -0
  8. package/dist/anycli/types.d.ts +32 -0
  9. package/dist/anycli/types.d.ts.map +1 -0
  10. package/dist/anycli/types.js +9 -0
  11. package/dist/api/breakpoints.d.ts +93 -0
  12. package/dist/api/breakpoints.d.ts.map +1 -0
  13. package/dist/api/breakpoints.js +334 -0
  14. package/dist/api/effects.d.ts +14 -0
  15. package/dist/api/effects.d.ts.map +1 -0
  16. package/dist/api/effects.js +306 -0
  17. package/dist/api/effectsTypes.d.ts +79 -0
  18. package/dist/api/effectsTypes.d.ts.map +1 -0
  19. package/dist/api/effectsTypes.js +6 -0
  20. package/dist/api/eventStream.d.ts +34 -0
  21. package/dist/api/eventStream.d.ts.map +1 -0
  22. package/dist/api/eventStream.js +126 -0
  23. package/dist/api/index.d.ts +10 -0
  24. package/dist/api/index.d.ts.map +1 -0
  25. package/dist/api/index.js +27 -0
  26. package/dist/api/runs.d.ts +85 -0
  27. package/dist/api/runs.d.ts.map +1 -0
  28. package/dist/api/runs.js +247 -0
  29. package/dist/api/utils.d.ts +28 -0
  30. package/dist/api/utils.d.ts.map +1 -0
  31. package/dist/api/utils.js +74 -0
  32. package/dist/breakpoints/approvalChains.d.ts +68 -0
  33. package/dist/breakpoints/approvalChains.d.ts.map +1 -0
  34. package/dist/breakpoints/approvalChains.js +111 -0
  35. package/dist/breakpoints/delegation.d.ts +42 -0
  36. package/dist/breakpoints/delegation.d.ts.map +1 -0
  37. package/dist/breakpoints/delegation.js +199 -0
  38. package/dist/breakpoints/delegationTypes.d.ts +46 -0
  39. package/dist/breakpoints/delegationTypes.d.ts.map +1 -0
  40. package/dist/breakpoints/delegationTypes.js +10 -0
  41. package/dist/breakpoints/postures.d.ts +28 -0
  42. package/dist/breakpoints/postures.d.ts.map +1 -0
  43. package/dist/breakpoints/postures.js +100 -0
  44. package/dist/compression/compaction.d.ts +82 -0
  45. package/dist/compression/compaction.d.ts.map +1 -0
  46. package/dist/compression/compaction.js +310 -0
  47. package/dist/context/dynamic.d.ts +16 -0
  48. package/dist/context/dynamic.d.ts.map +1 -0
  49. package/dist/context/dynamic.js +55 -0
  50. package/dist/context/instructions.d.ts +8 -0
  51. package/dist/context/instructions.d.ts.map +1 -0
  52. package/dist/context/instructions.js +77 -0
  53. package/dist/cost/claudeCodeParser.d.ts +81 -0
  54. package/dist/cost/claudeCodeParser.d.ts.map +1 -0
  55. package/dist/cost/claudeCodeParser.js +232 -0
  56. package/dist/cost/collector.d.ts +42 -0
  57. package/dist/cost/collector.d.ts.map +1 -0
  58. package/dist/cost/collector.js +105 -0
  59. package/dist/cost/effectCost.d.ts +23 -0
  60. package/dist/cost/effectCost.d.ts.map +1 -0
  61. package/dist/cost/effectCost.js +26 -0
  62. package/dist/cost/index.d.ts +7 -0
  63. package/dist/cost/index.d.ts.map +1 -0
  64. package/dist/cost/index.js +28 -0
  65. package/dist/cost/journal.d.ts +40 -0
  66. package/dist/cost/journal.d.ts.map +1 -0
  67. package/dist/cost/journal.js +158 -0
  68. package/dist/cost/types.d.ts +164 -0
  69. package/dist/cost/types.d.ts.map +1 -0
  70. package/dist/cost/types.js +228 -0
  71. package/dist/daemon/automationExecutor.d.ts +16 -0
  72. package/dist/daemon/automationExecutor.d.ts.map +1 -0
  73. package/dist/daemon/automationExecutor.js +222 -0
  74. package/dist/daemon/config.d.ts +8 -0
  75. package/dist/daemon/config.d.ts.map +1 -0
  76. package/dist/daemon/config.js +245 -0
  77. package/dist/daemon/daemonLog.d.ts +13 -0
  78. package/dist/daemon/daemonLog.d.ts.map +1 -0
  79. package/dist/daemon/daemonLog.js +64 -0
  80. package/dist/daemon/durableQueue.d.ts +41 -0
  81. package/dist/daemon/durableQueue.d.ts.map +1 -0
  82. package/dist/daemon/durableQueue.js +183 -0
  83. package/dist/daemon/fileWatcher.d.ts +9 -0
  84. package/dist/daemon/fileWatcher.d.ts.map +1 -0
  85. package/dist/daemon/fileWatcher.js +144 -0
  86. package/dist/daemon/index.d.ts +9 -0
  87. package/dist/daemon/index.d.ts.map +1 -0
  88. package/dist/daemon/index.js +26 -0
  89. package/dist/daemon/lifecycle.d.ts +12 -0
  90. package/dist/daemon/lifecycle.d.ts.map +1 -0
  91. package/dist/daemon/lifecycle.js +257 -0
  92. package/dist/daemon/loop.d.ts +27 -0
  93. package/dist/daemon/loop.d.ts.map +1 -0
  94. package/dist/daemon/loop.js +387 -0
  95. package/dist/daemon/timerScheduler.d.ts +13 -0
  96. package/dist/daemon/timerScheduler.d.ts.map +1 -0
  97. package/dist/daemon/timerScheduler.js +212 -0
  98. package/dist/daemon/types.d.ts +122 -0
  99. package/dist/daemon/types.d.ts.map +1 -0
  100. package/dist/daemon/types.js +25 -0
  101. package/dist/daemon/webhookListener.d.ts +6 -0
  102. package/dist/daemon/webhookListener.d.ts.map +1 -0
  103. package/dist/daemon/webhookListener.js +132 -0
  104. package/dist/extensions/discovery.d.ts +15 -0
  105. package/dist/extensions/discovery.d.ts.map +1 -0
  106. package/dist/extensions/discovery.js +119 -0
  107. package/dist/extensions/installer.d.ts +14 -0
  108. package/dist/extensions/installer.d.ts.map +1 -0
  109. package/dist/extensions/installer.js +100 -0
  110. package/dist/governance/authority.d.ts +68 -0
  111. package/dist/governance/authority.d.ts.map +1 -0
  112. package/dist/governance/authority.js +136 -0
  113. package/dist/governance/bridge.d.ts +17 -0
  114. package/dist/governance/bridge.d.ts.map +1 -0
  115. package/dist/governance/bridge.js +46 -0
  116. package/dist/governance/builtins.d.ts +25 -0
  117. package/dist/governance/builtins.d.ts.map +1 -0
  118. package/dist/governance/builtins.js +67 -0
  119. package/dist/governance/categories.d.ts +58 -0
  120. package/dist/governance/categories.d.ts.map +1 -0
  121. package/dist/governance/categories.js +120 -0
  122. package/dist/governance/decisionTrail.d.ts +60 -0
  123. package/dist/governance/decisionTrail.d.ts.map +1 -0
  124. package/dist/governance/decisionTrail.js +68 -0
  125. package/dist/governance/engine.d.ts +20 -0
  126. package/dist/governance/engine.d.ts.map +1 -0
  127. package/dist/governance/engine.js +124 -0
  128. package/dist/governance/index.d.ts +20 -0
  129. package/dist/governance/index.d.ts.map +1 -0
  130. package/dist/governance/index.js +75 -0
  131. package/dist/governance/logging.d.ts +18 -0
  132. package/dist/governance/logging.d.ts.map +1 -0
  133. package/dist/governance/logging.js +83 -0
  134. package/dist/governance/mandate.d.ts +83 -0
  135. package/dist/governance/mandate.d.ts.map +1 -0
  136. package/dist/governance/mandate.js +180 -0
  137. package/dist/governance/permissionEvents.d.ts +51 -0
  138. package/dist/governance/permissionEvents.d.ts.map +1 -0
  139. package/dist/governance/permissionEvents.js +52 -0
  140. package/dist/governance/permissionPropagation.d.ts +18 -0
  141. package/dist/governance/permissionPropagation.d.ts.map +1 -0
  142. package/dist/governance/permissionPropagation.js +58 -0
  143. package/dist/governance/postureBridge.d.ts +17 -0
  144. package/dist/governance/postureBridge.d.ts.map +1 -0
  145. package/dist/governance/postureBridge.js +117 -0
  146. package/dist/governance/sandboxBridge.d.ts +49 -0
  147. package/dist/governance/sandboxBridge.d.ts.map +1 -0
  148. package/dist/governance/sandboxBridge.js +77 -0
  149. package/dist/governance/sandboxPolicy.d.ts +51 -0
  150. package/dist/governance/sandboxPolicy.d.ts.map +1 -0
  151. package/dist/governance/sandboxPolicy.js +177 -0
  152. package/dist/governance/types.d.ts +3 -0
  153. package/dist/governance/types.d.ts.map +1 -0
  154. package/dist/governance/types.js +5 -0
  155. package/dist/harness/adapters/adapterBridge.d.ts +71 -0
  156. package/dist/harness/adapters/adapterBridge.d.ts.map +1 -0
  157. package/dist/harness/adapters/adapterBridge.js +117 -0
  158. package/dist/harness/adapters/adapterClientFactory.d.ts +29 -0
  159. package/dist/harness/adapters/adapterClientFactory.d.ts.map +1 -0
  160. package/dist/harness/adapters/adapterClientFactory.js +90 -0
  161. package/dist/harness/adapters/adapterEventEmitter.d.ts +51 -0
  162. package/dist/harness/adapters/adapterEventEmitter.d.ts.map +1 -0
  163. package/dist/harness/adapters/adapterEventEmitter.js +143 -0
  164. package/dist/harness/adapters/adapterEventMapper.d.ts +63 -0
  165. package/dist/harness/adapters/adapterEventMapper.d.ts.map +1 -0
  166. package/dist/harness/adapters/adapterEventMapper.js +100 -0
  167. package/dist/harness/adapters/adapterHarnessMap.d.ts +25 -0
  168. package/dist/harness/adapters/adapterHarnessMap.d.ts.map +1 -0
  169. package/dist/harness/adapters/adapterHarnessMap.js +55 -0
  170. package/dist/harness/adapters/adapterStdinReader.d.ts +45 -0
  171. package/dist/harness/adapters/adapterStdinReader.d.ts.map +1 -0
  172. package/dist/harness/adapters/adapterStdinReader.js +106 -0
  173. package/dist/harness/adapters/adapterTypes.d.ts +122 -0
  174. package/dist/harness/adapters/adapterTypes.d.ts.map +1 -0
  175. package/dist/harness/adapters/adapterTypes.js +11 -0
  176. package/dist/harness/adapters/index.d.ts +17 -0
  177. package/dist/harness/adapters/index.d.ts.map +1 -0
  178. package/dist/harness/adapters/index.js +34 -0
  179. package/dist/harness/backgroundTracker.d.ts +64 -0
  180. package/dist/harness/backgroundTracker.d.ts.map +1 -0
  181. package/dist/harness/backgroundTracker.js +107 -0
  182. package/dist/harness/builtInHarness.d.ts +3 -0
  183. package/dist/harness/builtInHarness.d.ts.map +1 -0
  184. package/dist/harness/builtInHarness.js +18 -0
  185. package/dist/harness/capabilityRouter.d.ts +76 -0
  186. package/dist/harness/capabilityRouter.d.ts.map +1 -0
  187. package/dist/harness/capabilityRouter.js +176 -0
  188. package/dist/harness/extensionToolBridge.d.ts +13 -0
  189. package/dist/harness/extensionToolBridge.d.ts.map +1 -0
  190. package/dist/harness/extensionToolBridge.js +23 -0
  191. package/dist/harness/fallbackChains.d.ts +42 -0
  192. package/dist/harness/fallbackChains.d.ts.map +1 -0
  193. package/dist/harness/fallbackChains.js +69 -0
  194. package/dist/harness/gentySessionContext.d.ts +31 -0
  195. package/dist/harness/gentySessionContext.d.ts.map +1 -0
  196. package/dist/harness/gentySessionContext.js +49 -0
  197. package/dist/harness/gentySessionIntegration.d.ts +16 -0
  198. package/dist/harness/gentySessionIntegration.d.ts.map +1 -0
  199. package/dist/harness/gentySessionIntegration.js +66 -0
  200. package/dist/harness/hostContract.d.ts +63 -0
  201. package/dist/harness/hostContract.d.ts.map +1 -0
  202. package/dist/harness/hostContract.js +136 -0
  203. package/dist/harness/index.d.ts +18 -0
  204. package/dist/harness/index.d.ts.map +1 -0
  205. package/dist/harness/index.js +91 -0
  206. package/dist/harness/internal/createRun/agent-core-loop.d.ts +43 -0
  207. package/dist/harness/internal/createRun/agent-core-loop.d.ts.map +1 -0
  208. package/dist/harness/internal/createRun/agent-core-loop.js +247 -0
  209. package/dist/harness/internal/createRun/askUserQuestion.d.ts +11 -0
  210. package/dist/harness/internal/createRun/askUserQuestion.d.ts.map +1 -0
  211. package/dist/harness/internal/createRun/askUserQuestion.js +162 -0
  212. package/dist/harness/internal/createRun/index.d.ts +25 -0
  213. package/dist/harness/internal/createRun/index.d.ts.map +1 -0
  214. package/dist/harness/internal/createRun/index.js +163 -0
  215. package/dist/harness/internal/createRun/orchestration/constants.d.ts +7 -0
  216. package/dist/harness/internal/createRun/orchestration/constants.d.ts.map +1 -0
  217. package/dist/harness/internal/createRun/orchestration/constants.js +17 -0
  218. package/dist/harness/internal/createRun/orchestration/dispatch.d.ts +23 -0
  219. package/dist/harness/internal/createRun/orchestration/dispatch.d.ts.map +1 -0
  220. package/dist/harness/internal/createRun/orchestration/dispatch.js +135 -0
  221. package/dist/harness/internal/createRun/orchestration/effects.d.ts +135 -0
  222. package/dist/harness/internal/createRun/orchestration/effects.d.ts.map +1 -0
  223. package/dist/harness/internal/createRun/orchestration/effects.js +865 -0
  224. package/dist/harness/internal/createRun/orchestration/effectsHelpers.d.ts +20 -0
  225. package/dist/harness/internal/createRun/orchestration/effectsHelpers.d.ts.map +1 -0
  226. package/dist/harness/internal/createRun/orchestration/effectsHelpers.js +79 -0
  227. package/dist/harness/internal/createRun/orchestration/externalPhase.d.ts +3 -0
  228. package/dist/harness/internal/createRun/orchestration/externalPhase.d.ts.map +1 -0
  229. package/dist/harness/internal/createRun/orchestration/externalPhase.js +403 -0
  230. package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.d.ts +16 -0
  231. package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.d.ts.map +1 -0
  232. package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.js +106 -0
  233. package/dist/harness/internal/createRun/orchestration/hookDecisionEffects.d.ts +32 -0
  234. package/dist/harness/internal/createRun/orchestration/hookDecisionEffects.d.ts.map +1 -0
  235. package/dist/harness/internal/createRun/orchestration/hookDecisionEffects.js +76 -0
  236. package/dist/harness/internal/createRun/orchestration/index.d.ts +29 -0
  237. package/dist/harness/internal/createRun/orchestration/index.d.ts.map +1 -0
  238. package/dist/harness/internal/createRun/orchestration/index.js +370 -0
  239. package/dist/harness/internal/createRun/orchestration/internalPhase.d.ts +3 -0
  240. package/dist/harness/internal/createRun/orchestration/internalPhase.d.ts.map +1 -0
  241. package/dist/harness/internal/createRun/orchestration/internalPhase.js +656 -0
  242. package/dist/harness/internal/createRun/orchestration/internalTools.d.ts +27 -0
  243. package/dist/harness/internal/createRun/orchestration/internalTools.d.ts.map +1 -0
  244. package/dist/harness/internal/createRun/orchestration/internalTools.js +264 -0
  245. package/dist/harness/internal/createRun/orchestration/internalToolsHelpers.d.ts +17 -0
  246. package/dist/harness/internal/createRun/orchestration/internalToolsHelpers.d.ts.map +1 -0
  247. package/dist/harness/internal/createRun/orchestration/internalToolsHelpers.js +23 -0
  248. package/dist/harness/internal/createRun/orchestration/taskResult.d.ts +10 -0
  249. package/dist/harness/internal/createRun/orchestration/taskResult.d.ts.map +1 -0
  250. package/dist/harness/internal/createRun/orchestration/taskResult.js +67 -0
  251. package/dist/harness/internal/createRun/orchestration/types.d.ts +48 -0
  252. package/dist/harness/internal/createRun/orchestration/types.d.ts.map +1 -0
  253. package/dist/harness/internal/createRun/orchestration/types.js +2 -0
  254. package/dist/harness/internal/createRun/orchestration/verbose.d.ts +7 -0
  255. package/dist/harness/internal/createRun/orchestration/verbose.d.ts.map +1 -0
  256. package/dist/harness/internal/createRun/orchestration/verbose.js +240 -0
  257. package/dist/harness/internal/createRun/orchestration/workerSessionEnhancer.d.ts +4 -0
  258. package/dist/harness/internal/createRun/orchestration/workerSessionEnhancer.d.ts.map +1 -0
  259. package/dist/harness/internal/createRun/orchestration/workerSessionEnhancer.js +36 -0
  260. package/dist/harness/internal/createRun/output.d.ts +40 -0
  261. package/dist/harness/internal/createRun/output.d.ts.map +1 -0
  262. package/dist/harness/internal/createRun/output.js +467 -0
  263. package/dist/harness/internal/createRun/pi.d.ts +10 -0
  264. package/dist/harness/internal/createRun/pi.d.ts.map +1 -0
  265. package/dist/harness/internal/createRun/pi.js +35 -0
  266. package/dist/harness/internal/createRun/planProcess/agentOutput.d.ts +5 -0
  267. package/dist/harness/internal/createRun/planProcess/agentOutput.d.ts.map +1 -0
  268. package/dist/harness/internal/createRun/planProcess/agentOutput.js +113 -0
  269. package/dist/harness/internal/createRun/planProcess/delegation.d.ts +23 -0
  270. package/dist/harness/internal/createRun/planProcess/delegation.d.ts.map +1 -0
  271. package/dist/harness/internal/createRun/planProcess/delegation.js +176 -0
  272. package/dist/harness/internal/createRun/planProcess/external.d.ts +14 -0
  273. package/dist/harness/internal/createRun/planProcess/external.d.ts.map +1 -0
  274. package/dist/harness/internal/createRun/planProcess/external.js +139 -0
  275. package/dist/harness/internal/createRun/planProcess/index.d.ts +12 -0
  276. package/dist/harness/internal/createRun/planProcess/index.d.ts.map +1 -0
  277. package/dist/harness/internal/createRun/planProcess/index.js +24 -0
  278. package/dist/harness/internal/createRun/planProcess/paths.d.ts +7 -0
  279. package/dist/harness/internal/createRun/planProcess/paths.d.ts.map +1 -0
  280. package/dist/harness/internal/createRun/planProcess/paths.js +98 -0
  281. package/dist/harness/internal/createRun/planProcess/phase.d.ts +6 -0
  282. package/dist/harness/internal/createRun/planProcess/phase.d.ts.map +1 -0
  283. package/dist/harness/internal/createRun/planProcess/phase.js +424 -0
  284. package/dist/harness/internal/createRun/planProcess/phaseHelpers.d.ts +37 -0
  285. package/dist/harness/internal/createRun/planProcess/phaseHelpers.d.ts.map +1 -0
  286. package/dist/harness/internal/createRun/planProcess/phaseHelpers.js +159 -0
  287. package/dist/harness/internal/createRun/planProcess/phaseTypes.d.ts +25 -0
  288. package/dist/harness/internal/createRun/planProcess/phaseTypes.d.ts.map +1 -0
  289. package/dist/harness/internal/createRun/planProcess/phaseTypes.js +6 -0
  290. package/dist/harness/internal/createRun/planProcess/prompts.d.ts +22 -0
  291. package/dist/harness/internal/createRun/planProcess/prompts.d.ts.map +1 -0
  292. package/dist/harness/internal/createRun/planProcess/prompts.js +239 -0
  293. package/dist/harness/internal/createRun/planProcess/recovery.d.ts +18 -0
  294. package/dist/harness/internal/createRun/planProcess/recovery.d.ts.map +1 -0
  295. package/dist/harness/internal/createRun/planProcess/recovery.js +205 -0
  296. package/dist/harness/internal/createRun/planProcess/runState.d.ts +40 -0
  297. package/dist/harness/internal/createRun/planProcess/runState.d.ts.map +1 -0
  298. package/dist/harness/internal/createRun/planProcess/runState.js +179 -0
  299. package/dist/harness/internal/createRun/planProcess/understandIntent.d.ts +22 -0
  300. package/dist/harness/internal/createRun/planProcess/understandIntent.d.ts.map +1 -0
  301. package/dist/harness/internal/createRun/planProcess/understandIntent.js +65 -0
  302. package/dist/harness/internal/createRun/planProcess/validation.d.ts +4 -0
  303. package/dist/harness/internal/createRun/planProcess/validation.d.ts.map +1 -0
  304. package/dist/harness/internal/createRun/planProcess/validation.js +260 -0
  305. package/dist/harness/internal/createRun/planProcess/validationSource.d.ts +13 -0
  306. package/dist/harness/internal/createRun/planProcess/validationSource.d.ts.map +1 -0
  307. package/dist/harness/internal/createRun/planProcess/validationSource.js +345 -0
  308. package/dist/harness/internal/createRun/planProcess/validationText.d.ts +3 -0
  309. package/dist/harness/internal/createRun/planProcess/validationText.d.ts.map +1 -0
  310. package/dist/harness/internal/createRun/planProcess/validationText.js +145 -0
  311. package/dist/harness/internal/createRun/prompts.d.ts +59 -0
  312. package/dist/harness/internal/createRun/prompts.d.ts.map +1 -0
  313. package/dist/harness/internal/createRun/prompts.js +427 -0
  314. package/dist/harness/internal/createRun/resumeState.d.ts +28 -0
  315. package/dist/harness/internal/createRun/resumeState.d.ts.map +1 -0
  316. package/dist/harness/internal/createRun/resumeState.js +133 -0
  317. package/dist/harness/internal/createRun/utils.d.ts +184 -0
  318. package/dist/harness/internal/createRun/utils.d.ts.map +1 -0
  319. package/dist/harness/internal/createRun/utils.js +218 -0
  320. package/dist/harness/internal.d.ts +13 -0
  321. package/dist/harness/internal.d.ts.map +1 -0
  322. package/dist/harness/internal.js +149 -0
  323. package/dist/harness/invoker/launch.d.ts +20 -0
  324. package/dist/harness/invoker/launch.d.ts.map +1 -0
  325. package/dist/harness/invoker/launch.js +23 -0
  326. package/dist/harness/invoker/processControl.d.ts +11 -0
  327. package/dist/harness/invoker/processControl.d.ts.map +1 -0
  328. package/dist/harness/invoker/processControl.js +50 -0
  329. package/dist/harness/invoker.d.ts +44 -0
  330. package/dist/harness/invoker.d.ts.map +1 -0
  331. package/dist/harness/invoker.js +276 -0
  332. package/dist/harness/modeSelector.d.ts +50 -0
  333. package/dist/harness/modeSelector.d.ts.map +1 -0
  334. package/dist/harness/modeSelector.js +124 -0
  335. package/dist/harness/modelSelection.d.ts +37 -0
  336. package/dist/harness/modelSelection.d.ts.map +1 -0
  337. package/dist/harness/modelSelection.js +81 -0
  338. package/dist/harness/operatorCommands.d.ts +38 -0
  339. package/dist/harness/operatorCommands.d.ts.map +1 -0
  340. package/dist/harness/operatorCommands.js +118 -0
  341. package/dist/harness/piSecureSandbox.d.ts +8 -0
  342. package/dist/harness/piSecureSandbox.d.ts.map +1 -0
  343. package/dist/harness/piSecureSandbox.js +366 -0
  344. package/dist/harness/piSecureSandboxTypes.d.ts +51 -0
  345. package/dist/harness/piSecureSandboxTypes.d.ts.map +1 -0
  346. package/dist/harness/piSecureSandboxTypes.js +6 -0
  347. package/dist/harness/piWrapper/compaction.d.ts +13 -0
  348. package/dist/harness/piWrapper/compaction.d.ts.map +1 -0
  349. package/dist/harness/piWrapper/compaction.js +38 -0
  350. package/dist/harness/piWrapper/instructionPrompts.d.ts +2 -0
  351. package/dist/harness/piWrapper/instructionPrompts.d.ts.map +1 -0
  352. package/dist/harness/piWrapper/instructionPrompts.js +97 -0
  353. package/dist/harness/piWrapper/moduleSupport.d.ts +78 -0
  354. package/dist/harness/piWrapper/moduleSupport.d.ts.map +1 -0
  355. package/dist/harness/piWrapper/moduleSupport.js +207 -0
  356. package/dist/harness/piWrapper.d.ts +82 -0
  357. package/dist/harness/piWrapper.d.ts.map +1 -0
  358. package/dist/harness/piWrapper.js +406 -0
  359. package/dist/harness/planMode.d.ts +68 -0
  360. package/dist/harness/planMode.d.ts.map +1 -0
  361. package/dist/harness/planMode.js +145 -0
  362. package/dist/harness/selectionPolicies.d.ts +29 -0
  363. package/dist/harness/selectionPolicies.d.ts.map +1 -0
  364. package/dist/harness/selectionPolicies.js +165 -0
  365. package/dist/harness/types.d.ts +276 -0
  366. package/dist/harness/types.d.ts.map +1 -0
  367. package/dist/harness/types.js +34 -0
  368. package/dist/index.d.ts +16 -0
  369. package/dist/index.d.ts.map +1 -0
  370. package/dist/index.js +54 -0
  371. package/dist/interaction/askUserQuestion/core.d.ts +8 -0
  372. package/dist/interaction/askUserQuestion/core.d.ts.map +1 -0
  373. package/dist/interaction/askUserQuestion/core.js +112 -0
  374. package/dist/interaction/askUserQuestion/terminal.d.ts +15 -0
  375. package/dist/interaction/askUserQuestion/terminal.d.ts.map +1 -0
  376. package/dist/interaction/askUserQuestion/terminal.js +128 -0
  377. package/dist/interaction/askUserQuestion.d.ts +10 -0
  378. package/dist/interaction/askUserQuestion.d.ts.map +1 -0
  379. package/dist/interaction/askUserQuestion.js +295 -0
  380. package/dist/interaction/askUserQuestionTypes.d.ts +31 -0
  381. package/dist/interaction/askUserQuestionTypes.d.ts.map +1 -0
  382. package/dist/interaction/askUserQuestionTypes.js +6 -0
  383. package/dist/interaction/index.d.ts +8 -0
  384. package/dist/interaction/index.d.ts.map +1 -0
  385. package/dist/interaction/index.js +28 -0
  386. package/dist/interaction/interactionRouter.d.ts +25 -0
  387. package/dist/interaction/interactionRouter.d.ts.map +1 -0
  388. package/dist/interaction/interactionRouter.js +55 -0
  389. package/dist/interaction/model-switch.d.ts +16 -0
  390. package/dist/interaction/model-switch.d.ts.map +1 -0
  391. package/dist/interaction/model-switch.js +41 -0
  392. package/dist/interaction/steering.d.ts +17 -0
  393. package/dist/interaction/steering.d.ts.map +1 -0
  394. package/dist/interaction/steering.js +41 -0
  395. package/dist/mcp/channels/allowlist.d.ts +19 -0
  396. package/dist/mcp/channels/allowlist.d.ts.map +1 -0
  397. package/dist/mcp/channels/allowlist.js +140 -0
  398. package/dist/mcp/channels/channelManager.d.ts +64 -0
  399. package/dist/mcp/channels/channelManager.d.ts.map +1 -0
  400. package/dist/mcp/channels/channelManager.js +137 -0
  401. package/dist/mcp/channels/inboundQueue.d.ts +47 -0
  402. package/dist/mcp/channels/inboundQueue.d.ts.map +1 -0
  403. package/dist/mcp/channels/inboundQueue.js +96 -0
  404. package/dist/mcp/channels/index.d.ts +16 -0
  405. package/dist/mcp/channels/index.d.ts.map +1 -0
  406. package/dist/mcp/channels/index.js +38 -0
  407. package/dist/mcp/channels/outbound.d.ts +33 -0
  408. package/dist/mcp/channels/outbound.d.ts.map +1 -0
  409. package/dist/mcp/channels/outbound.js +94 -0
  410. package/dist/mcp/channels/permissionRelay.d.ts +62 -0
  411. package/dist/mcp/channels/permissionRelay.d.ts.map +1 -0
  412. package/dist/mcp/channels/permissionRelay.js +159 -0
  413. package/dist/mcp/channels/types.d.ts +135 -0
  414. package/dist/mcp/channels/types.d.ts.map +1 -0
  415. package/dist/mcp/channels/types.js +16 -0
  416. package/dist/mcp/client/config.d.ts +28 -0
  417. package/dist/mcp/client/config.d.ts.map +1 -0
  418. package/dist/mcp/client/config.js +144 -0
  419. package/dist/mcp/client/executor.d.ts +30 -0
  420. package/dist/mcp/client/executor.d.ts.map +1 -0
  421. package/dist/mcp/client/executor.js +61 -0
  422. package/dist/mcp/client/index.d.ts +12 -0
  423. package/dist/mcp/client/index.d.ts.map +1 -0
  424. package/dist/mcp/client/index.js +27 -0
  425. package/dist/mcp/client/manager.d.ts +74 -0
  426. package/dist/mcp/client/manager.d.ts.map +1 -0
  427. package/dist/mcp/client/manager.js +215 -0
  428. package/dist/mcp/client/toolRegistry.d.ts +113 -0
  429. package/dist/mcp/client/toolRegistry.d.ts.map +1 -0
  430. package/dist/mcp/client/toolRegistry.js +190 -0
  431. package/dist/mcp/client/types.d.ts +96 -0
  432. package/dist/mcp/client/types.d.ts.map +1 -0
  433. package/dist/mcp/client/types.js +15 -0
  434. package/dist/mcp/transport/index.d.ts +9 -0
  435. package/dist/mcp/transport/index.d.ts.map +1 -0
  436. package/dist/mcp/transport/index.js +13 -0
  437. package/dist/mcp/transport/session.d.ts +18 -0
  438. package/dist/mcp/transport/session.d.ts.map +1 -0
  439. package/dist/mcp/transport/session.js +78 -0
  440. package/dist/mcp/transport/types.d.ts +19 -0
  441. package/dist/mcp/transport/types.d.ts.map +1 -0
  442. package/dist/mcp/transport/types.js +7 -0
  443. package/dist/mcp/transport/websocket.d.ts +41 -0
  444. package/dist/mcp/transport/websocket.d.ts.map +1 -0
  445. package/dist/mcp/transport/websocket.js +271 -0
  446. package/dist/observability/health.d.ts +19 -0
  447. package/dist/observability/health.d.ts.map +1 -0
  448. package/dist/observability/health.js +129 -0
  449. package/dist/observability/index.d.ts +7 -0
  450. package/dist/observability/index.d.ts.map +1 -0
  451. package/dist/observability/index.js +22 -0
  452. package/dist/observability/runStatus.d.ts +44 -0
  453. package/dist/observability/runStatus.d.ts.map +1 -0
  454. package/dist/observability/runStatus.js +169 -0
  455. package/dist/observability/timeline.d.ts +11 -0
  456. package/dist/observability/timeline.d.ts.map +1 -0
  457. package/dist/observability/timeline.js +176 -0
  458. package/dist/observability/types.d.ts +62 -0
  459. package/dist/observability/types.d.ts.map +1 -0
  460. package/dist/observability/types.js +8 -0
  461. package/dist/observability/webhooks.d.ts +68 -0
  462. package/dist/observability/webhooks.d.ts.map +1 -0
  463. package/dist/observability/webhooks.js +132 -0
  464. package/dist/plugins/index.d.ts +11 -0
  465. package/dist/plugins/index.d.ts.map +1 -0
  466. package/dist/plugins/index.js +18 -0
  467. package/dist/plugins/loader.d.ts +37 -0
  468. package/dist/plugins/loader.d.ts.map +1 -0
  469. package/dist/plugins/loader.js +112 -0
  470. package/dist/plugins/sandbox.d.ts +38 -0
  471. package/dist/plugins/sandbox.d.ts.map +1 -0
  472. package/dist/plugins/sandbox.js +109 -0
  473. package/dist/plugins/types.d.ts +27 -0
  474. package/dist/plugins/types.d.ts.map +1 -0
  475. package/dist/plugins/types.js +7 -0
  476. package/dist/plugins/version-check.d.ts +23 -0
  477. package/dist/plugins/version-check.d.ts.map +1 -0
  478. package/dist/plugins/version-check.js +70 -0
  479. package/dist/processes/index.d.ts +12 -0
  480. package/dist/processes/index.d.ts.map +1 -0
  481. package/dist/processes/index.js +15 -0
  482. package/dist/processes/recommender.d.ts +36 -0
  483. package/dist/processes/recommender.d.ts.map +1 -0
  484. package/dist/processes/recommender.js +73 -0
  485. package/dist/processes/scorer.d.ts +26 -0
  486. package/dist/processes/scorer.d.ts.map +1 -0
  487. package/dist/processes/scorer.js +104 -0
  488. package/dist/processes/types.d.ts +48 -0
  489. package/dist/processes/types.d.ts.map +1 -0
  490. package/dist/processes/types.js +9 -0
  491. package/dist/runtime/index.d.ts +3 -0
  492. package/dist/runtime/index.d.ts.map +1 -0
  493. package/dist/runtime/index.js +28 -0
  494. package/dist/seams/contract.d.ts +63 -0
  495. package/dist/seams/contract.d.ts.map +1 -0
  496. package/dist/seams/contract.js +141 -0
  497. package/dist/seams/index.d.ts +3 -0
  498. package/dist/seams/index.d.ts.map +1 -0
  499. package/dist/seams/index.js +8 -0
  500. package/dist/session/context.d.ts +22 -0
  501. package/dist/session/context.d.ts.map +1 -0
  502. package/dist/session/context.js +113 -0
  503. package/dist/session/continuityState.d.ts +39 -0
  504. package/dist/session/continuityState.d.ts.map +1 -0
  505. package/dist/session/continuityState.js +164 -0
  506. package/dist/session/cost.d.ts +72 -0
  507. package/dist/session/cost.d.ts.map +1 -0
  508. package/dist/session/cost.js +221 -0
  509. package/dist/session/discovery.d.ts +22 -0
  510. package/dist/session/discovery.d.ts.map +1 -0
  511. package/dist/session/discovery.js +35 -0
  512. package/dist/session/history.d.ts +30 -0
  513. package/dist/session/history.d.ts.map +1 -0
  514. package/dist/session/history.js +144 -0
  515. package/dist/session/index.d.ts +7 -0
  516. package/dist/session/index.d.ts.map +1 -0
  517. package/dist/session/index.js +70 -0
  518. package/dist/session/memoryExtraction.d.ts +65 -0
  519. package/dist/session/memoryExtraction.d.ts.map +1 -0
  520. package/dist/session/memoryExtraction.js +201 -0
  521. package/dist/session/parse.d.ts +45 -0
  522. package/dist/session/parse.d.ts.map +1 -0
  523. package/dist/session/parse.js +170 -0
  524. package/dist/session/persistence.d.ts +46 -0
  525. package/dist/session/persistence.d.ts.map +1 -0
  526. package/dist/session/persistence.js +180 -0
  527. package/dist/session/types.d.ts +267 -0
  528. package/dist/session/types.d.ts.map +1 -0
  529. package/dist/session/types.js +45 -0
  530. package/dist/session/write.d.ts +61 -0
  531. package/dist/session/write.d.ts.map +1 -0
  532. package/dist/session/write.js +213 -0
  533. package/dist/skills/chain.d.ts +31 -0
  534. package/dist/skills/chain.d.ts.map +1 -0
  535. package/dist/skills/chain.js +113 -0
  536. package/dist/skills/discovery.d.ts +34 -0
  537. package/dist/skills/discovery.d.ts.map +1 -0
  538. package/dist/skills/discovery.js +185 -0
  539. package/dist/skills/index.d.ts +12 -0
  540. package/dist/skills/index.d.ts.map +1 -0
  541. package/dist/skills/index.js +18 -0
  542. package/dist/skills/router.d.ts +35 -0
  543. package/dist/skills/router.d.ts.map +1 -0
  544. package/dist/skills/router.js +143 -0
  545. package/dist/skills/types.d.ts +33 -0
  546. package/dist/skills/types.d.ts.map +1 -0
  547. package/dist/skills/types.js +5 -0
  548. package/dist/storage/atomic.d.ts +2 -0
  549. package/dist/storage/atomic.d.ts.map +1 -0
  550. package/dist/storage/atomic.js +54 -0
  551. package/dist/storage/clock.d.ts +2 -0
  552. package/dist/storage/clock.d.ts.map +1 -0
  553. package/dist/storage/clock.js +6 -0
  554. package/dist/storage/index.d.ts +7 -0
  555. package/dist/storage/index.d.ts.map +1 -0
  556. package/dist/storage/index.js +9 -0
  557. package/dist/storage/journalWatcher.d.ts +24 -0
  558. package/dist/storage/journalWatcher.d.ts.map +1 -0
  559. package/dist/storage/journalWatcher.js +173 -0
  560. package/dist/storage/paths.d.ts +5 -0
  561. package/dist/storage/paths.d.ts.map +1 -0
  562. package/dist/storage/paths.js +26 -0
  563. package/dist/storage/snapshotState.d.ts +10 -0
  564. package/dist/storage/snapshotState.d.ts.map +1 -0
  565. package/dist/storage/snapshotState.js +15 -0
  566. package/dist/storage/storeTaskArtifacts.d.ts +6 -0
  567. package/dist/storage/storeTaskArtifacts.d.ts.map +1 -0
  568. package/dist/storage/storeTaskArtifacts.js +55 -0
  569. package/dist/storage/types.d.ts +21 -0
  570. package/dist/storage/types.d.ts.map +1 -0
  571. package/dist/storage/types.js +2 -0
  572. package/dist/tasks/crud.d.ts +33 -0
  573. package/dist/tasks/crud.d.ts.map +1 -0
  574. package/dist/tasks/crud.js +150 -0
  575. package/dist/tasks/index.d.ts +2 -0
  576. package/dist/tasks/index.d.ts.map +1 -0
  577. package/dist/tasks/index.js +9 -0
  578. package/dist/trust/harness-signing.d.ts +15 -0
  579. package/dist/trust/harness-signing.d.ts.map +1 -0
  580. package/dist/trust/harness-signing.js +46 -0
  581. package/dist/trust/key-store.d.ts +15 -0
  582. package/dist/trust/key-store.d.ts.map +1 -0
  583. package/dist/trust/key-store.js +66 -0
  584. package/package.json +161 -0
@@ -0,0 +1,406 @@
1
+ "use strict";
2
+ /**
3
+ * Pi programmatic API wrapper.
4
+ *
5
+ * Wraps `@earendil-works/pi-coding-agent`'s `createAgentSession()` to expose
6
+ * a persistent `AgentSession` through a babysitter-friendly interface.
7
+ *
8
+ * The session is lazily initialized on first use and reused across prompts.
9
+ * Events are forwarded through the `subscribe()` method.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AgentCoreSessionHandle = void 0;
13
+ exports.createAgentCoreSession = createAgentCoreSession;
14
+ const node_os_1 = require("node:os");
15
+ const node_path_1 = require("node:path");
16
+ const babysitter_sdk_1 = require("@a5c-ai/babysitter-sdk");
17
+ const piSecureSandbox_1 = require("./piSecureSandbox");
18
+ const compaction_1 = require("./piWrapper/compaction");
19
+ const instructionPrompts_1 = require("./piWrapper/instructionPrompts");
20
+ const moduleSupport_1 = require("./piWrapper/moduleSupport");
21
+ const DEFAULT_TIMEOUT_MS = 900_000;
22
+ const DEFAULT_INIT_FAILURE_BACKOFF_MS = 1_000;
23
+ const DEFAULT_BASH_SANDBOX_MODE = "local";
24
+ const AGENT_END_PROMPT_SETTLE_GRACE_MS = 250;
25
+ const PI_AGENT_DIR_ENV = "PI_CODING_AGENT_DIR";
26
+ const DEFAULT_PI_AGENT_DIR = (0, node_path_1.join)((0, node_os_1.homedir)(), ".pi", "agent");
27
+ const CODING_TOOL_NAMES = ["read", "bash", "edit", "write"];
28
+ const READONLY_TOOL_NAMES = ["read", "grep", "find", "ls"];
29
+ function resolvePiAgentDir(agentDir) {
30
+ const configured = agentDir?.trim() || process.env[PI_AGENT_DIR_ENV]?.trim();
31
+ if (!configured) {
32
+ return DEFAULT_PI_AGENT_DIR;
33
+ }
34
+ if (configured === "~") {
35
+ return (0, node_os_1.homedir)();
36
+ }
37
+ if (configured.startsWith("~/")) {
38
+ return (0, node_path_1.join)((0, node_os_1.homedir)(), configured.slice(2));
39
+ }
40
+ return configured;
41
+ }
42
+ // ---------------------------------------------------------------------------
43
+ // AgentCoreSessionHandle
44
+ // ---------------------------------------------------------------------------
45
+ /**
46
+ * Handle for interacting with the Pi coding agent programmatically.
47
+ *
48
+ * Wraps `AgentSession` from `@earendil-works/pi-coding-agent`. The underlying
49
+ * session is created lazily on first `prompt()` call and reused thereafter.
50
+ */
51
+ class AgentCoreSessionHandle {
52
+ options;
53
+ session = null;
54
+ initPromise = null;
55
+ initFailure = null;
56
+ initRetryAfterMs = 0;
57
+ cleanupTasks = [];
58
+ constructor(options = {}) {
59
+ this.options = options;
60
+ }
61
+ /**
62
+ * Initialize the underlying AgentSession.
63
+ *
64
+ * Called automatically by `prompt()` if the session hasn't been created yet.
65
+ * Safe to call multiple times — subsequent calls are no-ops.
66
+ */
67
+ async initialize() {
68
+ if (this.session)
69
+ return;
70
+ if (this.initFailure && Date.now() < this.initRetryAfterMs) {
71
+ throw this.initFailure;
72
+ }
73
+ if (this.initFailure) {
74
+ this.initFailure = null;
75
+ this.initRetryAfterMs = 0;
76
+ }
77
+ if (this.initPromise) {
78
+ await this.initPromise;
79
+ return;
80
+ }
81
+ this.initPromise = this.doInitialize().catch((err) => {
82
+ this.initPromise = null;
83
+ this.initFailure = err;
84
+ this.initRetryAfterMs = Date.now() + (this.options.initFailureBackoffMs ?? DEFAULT_INIT_FAILURE_BACKOFF_MS);
85
+ throw err;
86
+ });
87
+ await this.initPromise;
88
+ }
89
+ /**
90
+ * Send a prompt to the Pi agent and wait for completion.
91
+ *
92
+ * Initializes the session if needed, sends the prompt, waits for the
93
+ * `agent_end` event, and returns collected output.
94
+ */
95
+ async prompt(text, timeout) {
96
+ await this.initialize();
97
+ const session = this.requireSession();
98
+ const effectiveTimeout = timeout ?? this.options.timeout ?? DEFAULT_TIMEOUT_MS;
99
+ const start = Date.now();
100
+ return new Promise((resolve, reject) => {
101
+ let settled = false;
102
+ let timer;
103
+ let agentEndGraceTimer;
104
+ let agentEndResult = null;
105
+ let promptSettled = false;
106
+ const finishWithResult = (result) => {
107
+ if (settled)
108
+ return;
109
+ settled = true;
110
+ if (timer)
111
+ clearTimeout(timer);
112
+ if (agentEndGraceTimer)
113
+ clearTimeout(agentEndGraceTimer);
114
+ resolve(result);
115
+ };
116
+ const finishWithPromptError = (err) => {
117
+ if (settled)
118
+ return;
119
+ settled = true;
120
+ if (timer)
121
+ clearTimeout(timer);
122
+ if (agentEndGraceTimer)
123
+ clearTimeout(agentEndGraceTimer);
124
+ const message = err instanceof Error ? err.message : String(err);
125
+ resolve({
126
+ output: message,
127
+ exitCode: 1,
128
+ duration: Date.now() - start,
129
+ success: false,
130
+ });
131
+ };
132
+ // Set up timeout
133
+ if (effectiveTimeout > 0) {
134
+ timer = setTimeout(() => {
135
+ if (settled)
136
+ return;
137
+ settled = true;
138
+ unsubscribe();
139
+ void session.abort();
140
+ reject(new babysitter_sdk_1.BabysitterRuntimeError("PiTimeoutError", `Pi prompt timed out after ${effectiveTimeout}ms`, { category: babysitter_sdk_1.ErrorCategory.External }));
141
+ }, effectiveTimeout);
142
+ }
143
+ // Subscribe to events to detect completion
144
+ const unsubscribe = session.subscribe((event) => {
145
+ if (settled)
146
+ return;
147
+ if (event.type === "agent_end") {
148
+ const messages = Array.isArray(event.messages)
149
+ ? event.messages
150
+ : undefined;
151
+ unsubscribe();
152
+ const assistantFailure = (0, moduleSupport_1.extractAssistantFailure)(messages);
153
+ const assistantText = session.getLastAssistantText();
154
+ const output = assistantText && assistantText.trim().length > 0
155
+ ? assistantText
156
+ : assistantFailure ?? "";
157
+ agentEndResult = {
158
+ output,
159
+ exitCode: assistantFailure ? 1 : 0,
160
+ duration: Date.now() - start,
161
+ success: !assistantFailure,
162
+ };
163
+ if (promptSettled) {
164
+ finishWithResult(agentEndResult);
165
+ return;
166
+ }
167
+ agentEndGraceTimer = setTimeout(() => {
168
+ if (agentEndResult) {
169
+ finishWithResult(agentEndResult);
170
+ }
171
+ }, AGENT_END_PROMPT_SETTLE_GRACE_MS);
172
+ }
173
+ });
174
+ // Fire the prompt — errors are caught and resolved as failures
175
+ session.prompt(text)
176
+ .then(() => {
177
+ promptSettled = true;
178
+ if (agentEndResult) {
179
+ finishWithResult(agentEndResult);
180
+ }
181
+ })
182
+ .catch((err) => {
183
+ promptSettled = true;
184
+ if (agentEndResult) {
185
+ finishWithResult(agentEndResult);
186
+ return;
187
+ }
188
+ unsubscribe();
189
+ finishWithPromptError(err);
190
+ });
191
+ });
192
+ }
193
+ /**
194
+ * Steer the running agent with an instruction.
195
+ *
196
+ * Steering messages are delivered immediately to the agent while it is
197
+ * processing a prompt.
198
+ */
199
+ async steer(text) {
200
+ const session = this.requireSession();
201
+ await session.steer(text);
202
+ }
203
+ /** Queue a follow-up message for after the current turn completes. */
204
+ async followUp(text) {
205
+ const session = this.requireSession();
206
+ await session.followUp(text);
207
+ }
208
+ /**
209
+ * Subscribe to session events.
210
+ *
211
+ * Returns an unsubscribe function.
212
+ */
213
+ subscribe(listener) {
214
+ const session = this.requireSession();
215
+ return session.subscribe(listener);
216
+ }
217
+ /** Execute a bash command through the agent's sandbox. */
218
+ async executeBash(command, onChunk) {
219
+ await this.initialize();
220
+ const session = this.requireSession();
221
+ const result = await session.executeBash(command, onChunk);
222
+ return {
223
+ output: result.output,
224
+ exitCode: result.exitCode,
225
+ cancelled: result.cancelled,
226
+ };
227
+ }
228
+ /** Abort the current prompt execution. */
229
+ async abort() {
230
+ if (this.session) {
231
+ await this.session.abort();
232
+ }
233
+ }
234
+ /** Dispose of the session and release resources. */
235
+ dispose() {
236
+ if (this.session) {
237
+ const session = this.session;
238
+ if (session.isStreaming) {
239
+ void session.abort().catch(() => undefined);
240
+ }
241
+ session.dispose();
242
+ this.session = null;
243
+ this.initPromise = null;
244
+ this.initFailure = null;
245
+ this.initRetryAfterMs = 0;
246
+ }
247
+ while (this.cleanupTasks.length > 0) {
248
+ const cleanup = this.cleanupTasks.pop();
249
+ if (cleanup) {
250
+ void cleanup();
251
+ }
252
+ }
253
+ }
254
+ /** The underlying pi session ID, if initialized. */
255
+ get sessionId() {
256
+ return this.session?.sessionId;
257
+ }
258
+ /** Whether the session is currently streaming a response. */
259
+ get isStreaming() {
260
+ return this.session?.isStreaming ?? false;
261
+ }
262
+ /** Whether the session has been initialized. */
263
+ get isInitialized() {
264
+ return this.session !== null;
265
+ }
266
+ // ---------------------------------------------------------------------------
267
+ // Internal helpers
268
+ // ---------------------------------------------------------------------------
269
+ async cleanupPendingTasks() {
270
+ while (this.cleanupTasks.length > 0) {
271
+ const cleanup = this.cleanupTasks.pop();
272
+ if (cleanup) {
273
+ await cleanup();
274
+ }
275
+ }
276
+ }
277
+ async doInitialize() {
278
+ const mod = await (0, moduleSupport_1.loadPiModule)();
279
+ const azureOpenAiEnv = (0, moduleSupport_1.configureAzureOpenAiEnvDefaults)(typeof this.options.model === "string" ? this.options.model : undefined) ?? {};
280
+ const piEnv = Object.keys(azureOpenAiEnv).length > 0
281
+ ? { ...process.env, ...azureOpenAiEnv }
282
+ : process.env;
283
+ const createOpts = {};
284
+ const cwd = this.options.workspace ?? process.cwd();
285
+ const agentDir = resolvePiAgentDir(this.options.agentDir);
286
+ const compressionConfig = (0, compaction_1.loadCompressionConfigSafe)(cwd);
287
+ const compactionEnabled = this.options.enableCompaction ??
288
+ Boolean(compressionConfig?.enabled && compressionConfig.layers.sdkContextHook.enabled);
289
+ const compactionSettings = (0, compaction_1.buildCompactionSettings)(compactionEnabled);
290
+ createOpts.cwd = cwd;
291
+ createOpts.agentDir = agentDir;
292
+ if (piEnv !== process.env) {
293
+ createOpts.env = piEnv;
294
+ }
295
+ if (this.options.thinkingLevel)
296
+ createOpts.thinkingLevel = this.options.thinkingLevel;
297
+ const customTools = [...(this.options.customTools ?? [])];
298
+ if (this.options.ephemeral) {
299
+ createOpts.sessionManager = mod.SessionManager.inMemory();
300
+ }
301
+ const secureBashBackend = this.options.toolsMode === "coding" || this.options.toolsMode === "readonly"
302
+ ? await (0, piSecureSandbox_1.createSecureBashBackend)({
303
+ workspace: cwd,
304
+ mode: this.options.bashSandbox ?? DEFAULT_BASH_SANDBOX_MODE,
305
+ })
306
+ : null;
307
+ if (secureBashBackend) {
308
+ this.cleanupTasks.push(() => secureBashBackend.dispose());
309
+ }
310
+ if (this.options.toolsMode === "coding") {
311
+ createOpts.tools = [...CODING_TOOL_NAMES];
312
+ }
313
+ else if (this.options.toolsMode === "readonly") {
314
+ createOpts.tools = [...READONLY_TOOL_NAMES];
315
+ }
316
+ if (secureBashBackend && typeof mod.createBashToolDefinition === "function") {
317
+ customTools.unshift(mod.createBashToolDefinition(cwd, {
318
+ operations: secureBashBackend.operations,
319
+ }));
320
+ }
321
+ if (customTools.length > 0) {
322
+ createOpts.customTools = customTools;
323
+ }
324
+ const appendedSystemPrompt = [
325
+ ...(0, instructionPrompts_1.discoverRepoInstructionPrompts)(cwd),
326
+ ...(this.options.appendSystemPrompt ?? []),
327
+ ...(secureBashBackend ? [secureBashBackend.promptNote] : []),
328
+ ];
329
+ if (this.options.systemPrompt ||
330
+ appendedSystemPrompt.length > 0 ||
331
+ this.options.isolated ||
332
+ compactionEnabled) {
333
+ const settingsManager = mod.SettingsManager.inMemory({
334
+ quietStartup: true,
335
+ compaction: compactionSettings.compaction,
336
+ branchSummary: compactionSettings.branchSummary,
337
+ });
338
+ createOpts.settingsManager = settingsManager;
339
+ if (this.options.systemPrompt ||
340
+ appendedSystemPrompt.length > 0 ||
341
+ this.options.isolated) {
342
+ const resourceLoader = new mod.DefaultResourceLoader({
343
+ cwd,
344
+ agentDir,
345
+ settingsManager,
346
+ noExtensions: this.options.isolated === true,
347
+ noSkills: this.options.isolated === true,
348
+ noPromptTemplates: this.options.isolated === true,
349
+ noThemes: this.options.isolated === true,
350
+ agentsFilesOverride: this.options.isolated === true
351
+ ? () => ({ agentsFiles: [] })
352
+ : undefined,
353
+ systemPromptOverride: this.options.systemPrompt
354
+ ? () => this.options.systemPrompt
355
+ : undefined,
356
+ appendSystemPromptOverride: appendedSystemPrompt.length > 0
357
+ ? (base) => [...base, ...appendedSystemPrompt]
358
+ : undefined,
359
+ });
360
+ await resourceLoader.reload();
361
+ createOpts.resourceLoader = resourceLoader;
362
+ }
363
+ }
364
+ // Resolve model string to a model object from pi's ModelRegistry.
365
+ // The `createAgentSession` API expects a model object (with provider,
366
+ // api, baseUrl, etc.), not a plain string. We accept formats:
367
+ // "provider:modelId" e.g. "azure-openai-responses:gpt-4.1"
368
+ // "modelId" e.g. "gpt-4.1" (searches all providers)
369
+ if (typeof this.options.model === "string") {
370
+ const resolved = await (0, moduleSupport_1.resolvePiModel)(mod, this.options.model, piEnv);
371
+ if (resolved) {
372
+ createOpts.model = resolved;
373
+ }
374
+ else {
375
+ await this.cleanupPendingTasks();
376
+ throw new babysitter_sdk_1.BabysitterRuntimeError("PiModelResolutionFailed", (0, moduleSupport_1.describePiModelResolutionFailure)(this.options.model), { category: babysitter_sdk_1.ErrorCategory.Configuration });
377
+ }
378
+ }
379
+ try {
380
+ const { session } = await mod.createAgentSession(createOpts);
381
+ if (this.options.uiContext && typeof session.bindExtensions === "function") {
382
+ await session.bindExtensions({ uiContext: this.options.uiContext });
383
+ }
384
+ this.session = session;
385
+ }
386
+ catch (error) {
387
+ await this.cleanupPendingTasks();
388
+ throw error;
389
+ }
390
+ }
391
+ requireSession() {
392
+ if (!this.session) {
393
+ throw new babysitter_sdk_1.BabysitterRuntimeError("PiSessionNotInitialized", "Pi session has not been initialized — call initialize() or prompt() first", { category: babysitter_sdk_1.ErrorCategory.Runtime });
394
+ }
395
+ return this.session;
396
+ }
397
+ }
398
+ exports.AgentCoreSessionHandle = AgentCoreSessionHandle;
399
+ /**
400
+ * Create a new Pi session handle.
401
+ *
402
+ * The underlying `AgentSession` is created lazily on first use.
403
+ */
404
+ function createAgentCoreSession(options) {
405
+ return new AgentCoreSessionHandle(options);
406
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * GAP-USER-012: Plan Mode with Verification
3
+ *
4
+ * Interactive plan-verify-execute loop. Generates structured plans,
5
+ * presents for approval, executes with per-step verification,
6
+ * and allows plan modification mid-execution.
7
+ */
8
+ /** A single step in an execution plan. */
9
+ export interface PlanStep {
10
+ /** Unique step identifier. */
11
+ id: string;
12
+ /** Human-readable title. */
13
+ title: string;
14
+ /** Description of what this step does. */
15
+ description: string;
16
+ /** Step status. */
17
+ status: PlanStepStatus;
18
+ /** Dependencies (IDs of steps that must complete first). */
19
+ dependsOn: string[];
20
+ /** Verification criteria for this step. */
21
+ verificationCriteria?: string;
22
+ /** Task ID if this step was dispatched as an effect. */
23
+ effectId?: string;
24
+ /** Timestamp of completion. */
25
+ completedAt?: string;
26
+ /** Feedback received during verification. */
27
+ feedback?: string;
28
+ }
29
+ export type PlanStepStatus = "pending" | "in_progress" | "completed" | "failed" | "skipped" | "modified";
30
+ /** An execution plan. */
31
+ export interface ExecutionPlan {
32
+ /** Plan ID. */
33
+ id: string;
34
+ /** Plan title. */
35
+ title: string;
36
+ /** Overall goal/description. */
37
+ description: string;
38
+ /** Ordered steps. */
39
+ steps: PlanStep[];
40
+ /** Plan status. */
41
+ status: PlanStatus;
42
+ /** Creation timestamp. */
43
+ createdAt: string;
44
+ /** Last update timestamp. */
45
+ updatedAt: string;
46
+ }
47
+ export type PlanStatus = "draft" | "approved" | "executing" | "completed" | "failed" | "modified";
48
+ /** Create a new execution plan. */
49
+ export declare function createPlan(id: string, title: string, description: string, steps: Array<Omit<PlanStep, "status">>): ExecutionPlan;
50
+ /** Update a step's status. */
51
+ export declare function updateStepStatus(plan: ExecutionPlan, stepId: string, status: PlanStepStatus, feedback?: string): ExecutionPlan;
52
+ /** Insert a new step into the plan at a given position. */
53
+ export declare function insertStep(plan: ExecutionPlan, step: Omit<PlanStep, "status">, afterStepId?: string): ExecutionPlan;
54
+ /** Remove a step from the plan. Also removes it from other steps' dependsOn lists. */
55
+ export declare function removeStep(plan: ExecutionPlan, stepId: string): ExecutionPlan;
56
+ /** Get the next executable step (all dependencies satisfied). */
57
+ export declare function getNextStep(plan: ExecutionPlan): PlanStep | undefined;
58
+ /** Get plan progress summary. */
59
+ export declare function getPlanProgress(plan: ExecutionPlan): {
60
+ total: number;
61
+ completed: number;
62
+ failed: number;
63
+ pending: number;
64
+ percentComplete: number;
65
+ };
66
+ /** Format plan for display. */
67
+ export declare function formatPlanForDisplay(plan: ExecutionPlan): string;
68
+ //# sourceMappingURL=planMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planMode.d.ts","sourceRoot":"","sources":["../../src/harness/planMode.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,0CAA0C;AAC1C,MAAM,WAAW,QAAQ;IACvB,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,2CAA2C;IAC3C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAEzG,yBAAyB;AACzB,MAAM,WAAW,aAAa;IAC5B,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IACX,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,mBAAmB;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAMlG,mCAAmC;AACnC,wBAAgB,UAAU,CACxB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GACrC,aAAa,CAWf;AAED,8BAA8B;AAC9B,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,EACtB,QAAQ,CAAC,EAAE,MAAM,GAChB,aAAa,CAuBf;AAED,2DAA2D;AAC3D,wBAAgB,UAAU,CACxB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAC9B,WAAW,CAAC,EAAE,MAAM,GACnB,aAAa,CAiBf;AAED,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAc7E;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ,GAAG,SAAS,CAWrE;AAED,iCAAiC;AACjC,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB,CAYA;AAED,+BAA+B;AAC/B,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CA2BhE"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ /**
3
+ * GAP-USER-012: Plan Mode with Verification
4
+ *
5
+ * Interactive plan-verify-execute loop. Generates structured plans,
6
+ * presents for approval, executes with per-step verification,
7
+ * and allows plan modification mid-execution.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createPlan = createPlan;
11
+ exports.updateStepStatus = updateStepStatus;
12
+ exports.insertStep = insertStep;
13
+ exports.removeStep = removeStep;
14
+ exports.getNextStep = getNextStep;
15
+ exports.getPlanProgress = getPlanProgress;
16
+ exports.formatPlanForDisplay = formatPlanForDisplay;
17
+ // ---------------------------------------------------------------------------
18
+ // Plan construction
19
+ // ---------------------------------------------------------------------------
20
+ /** Create a new execution plan. */
21
+ function createPlan(id, title, description, steps) {
22
+ const now = new Date().toISOString();
23
+ return {
24
+ id,
25
+ title,
26
+ description,
27
+ steps: steps.map((s) => ({ ...s, status: "pending" })),
28
+ status: "draft",
29
+ createdAt: now,
30
+ updatedAt: now,
31
+ };
32
+ }
33
+ /** Update a step's status. */
34
+ function updateStepStatus(plan, stepId, status, feedback) {
35
+ const now = new Date().toISOString();
36
+ const steps = plan.steps.map((s) => {
37
+ if (s.id !== stepId)
38
+ return s;
39
+ return {
40
+ ...s,
41
+ status,
42
+ completedAt: status === "completed" || status === "failed" ? now : s.completedAt,
43
+ feedback: feedback ?? s.feedback,
44
+ };
45
+ });
46
+ // Derive plan status from step statuses
47
+ const allCompleted = steps.every((s) => s.status === "completed" || s.status === "skipped");
48
+ const anyFailed = steps.some((s) => s.status === "failed");
49
+ const anyInProgress = steps.some((s) => s.status === "in_progress");
50
+ let planStatus = plan.status;
51
+ if (allCompleted)
52
+ planStatus = "completed";
53
+ else if (anyFailed)
54
+ planStatus = "failed";
55
+ else if (anyInProgress)
56
+ planStatus = "executing";
57
+ return { ...plan, steps, status: planStatus, updatedAt: now };
58
+ }
59
+ /** Insert a new step into the plan at a given position. */
60
+ function insertStep(plan, step, afterStepId) {
61
+ const now = new Date().toISOString();
62
+ const newStep = { ...step, status: "pending" };
63
+ const steps = [...plan.steps];
64
+ if (afterStepId) {
65
+ const idx = steps.findIndex((s) => s.id === afterStepId);
66
+ if (idx >= 0) {
67
+ steps.splice(idx + 1, 0, newStep);
68
+ }
69
+ else {
70
+ steps.push(newStep);
71
+ }
72
+ }
73
+ else {
74
+ steps.push(newStep);
75
+ }
76
+ return { ...plan, steps, status: "modified", updatedAt: now };
77
+ }
78
+ /** Remove a step from the plan. Also removes it from other steps' dependsOn lists. */
79
+ function removeStep(plan, stepId) {
80
+ const now = new Date().toISOString();
81
+ const steps = plan.steps
82
+ .filter((s) => s.id !== stepId)
83
+ .map((s) => ({
84
+ ...s,
85
+ dependsOn: s.dependsOn.filter((dep) => dep !== stepId),
86
+ }));
87
+ return {
88
+ ...plan,
89
+ steps,
90
+ status: "modified",
91
+ updatedAt: now,
92
+ };
93
+ }
94
+ /** Get the next executable step (all dependencies satisfied). */
95
+ function getNextStep(plan) {
96
+ const completedIds = new Set(plan.steps
97
+ .filter((s) => s.status === "completed" || s.status === "skipped")
98
+ .map((s) => s.id));
99
+ return plan.steps.find((s) => s.status === "pending" &&
100
+ s.dependsOn.every((dep) => completedIds.has(dep)));
101
+ }
102
+ /** Get plan progress summary. */
103
+ function getPlanProgress(plan) {
104
+ const total = plan.steps.length;
105
+ const completed = plan.steps.filter((s) => s.status === "completed" || s.status === "skipped").length;
106
+ const failed = plan.steps.filter((s) => s.status === "failed").length;
107
+ const pending = plan.steps.filter((s) => s.status === "pending").length;
108
+ return {
109
+ total,
110
+ completed,
111
+ failed,
112
+ pending,
113
+ percentComplete: total > 0 ? Math.round((completed / total) * 100) : 0,
114
+ };
115
+ }
116
+ /** Format plan for display. */
117
+ function formatPlanForDisplay(plan) {
118
+ const progress = getPlanProgress(plan);
119
+ const lines = [
120
+ `## ${plan.title}`,
121
+ `Status: ${plan.status} | Progress: ${progress.completed}/${progress.total} (${progress.percentComplete}%)`,
122
+ "",
123
+ plan.description,
124
+ "",
125
+ "### Steps",
126
+ ];
127
+ for (const step of plan.steps) {
128
+ const statusIcon = {
129
+ pending: "[ ]",
130
+ in_progress: "[~]",
131
+ completed: "[x]",
132
+ failed: "[!]",
133
+ skipped: "[-]",
134
+ modified: "[*]",
135
+ }[step.status];
136
+ lines.push(`${statusIcon} **${step.id}**: ${step.title}`);
137
+ if (step.description)
138
+ lines.push(` ${step.description}`);
139
+ if (step.dependsOn.length > 0)
140
+ lines.push(` Depends on: ${step.dependsOn.join(", ")}`);
141
+ if (step.feedback)
142
+ lines.push(` Feedback: ${step.feedback}`);
143
+ }
144
+ return lines.join("\n");
145
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * GAP-HADAPT-008: Harness Selection Policies.
3
+ *
4
+ * Configurable policies for harness selection: cost-optimized,
5
+ * latency-optimized, capability-first, user-preferred.
6
+ * Policy evaluator scores candidates using selectHarness from capabilityRouter.
7
+ */
8
+ import { type TaskRequirements, type HarnessCandidate, type RoutingResult } from "./capabilityRouter";
9
+ export type PolicyName = "cost-optimized" | "latency-optimized" | "capability-first" | "user-preferred";
10
+ export interface SelectionPolicy {
11
+ name: PolicyName;
12
+ description: string;
13
+ evaluate(candidates: HarnessCandidate[], requirements: Partial<TaskRequirements>, options?: PolicyEvaluatorOptions): PolicyEvaluatorResult;
14
+ }
15
+ export interface PolicyEvaluatorResult {
16
+ selected: HarnessCandidate | null;
17
+ policyName: PolicyName;
18
+ score: number;
19
+ reason: string;
20
+ routingResult: RoutingResult | null;
21
+ }
22
+ export interface PolicyEvaluatorOptions {
23
+ preferredHarness?: string;
24
+ }
25
+ export declare function getDefaultPolicy(): SelectionPolicy;
26
+ export declare function getPolicyByName(name: PolicyName): SelectionPolicy;
27
+ export declare function createPolicyEvaluator(policy: SelectionPolicy): (candidates: HarnessCandidate[], requirements: Partial<TaskRequirements>, options?: PolicyEvaluatorOptions) => PolicyEvaluatorResult;
28
+ export declare function evaluatePolicy(policyName: PolicyName, candidates: HarnessCandidate[], requirements: Partial<TaskRequirements>, options?: PolicyEvaluatorOptions): PolicyEvaluatorResult;
29
+ //# sourceMappingURL=selectionPolicies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectionPolicies.d.ts","sourceRoot":"","sources":["../../src/harness/selectionPolicies.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAO5B,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,CAAC;AAErB,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CACN,UAAU,EAAE,gBAAgB,EAAE,EAC9B,YAAY,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACvC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,qBAAqB,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAkKD,wBAAgB,gBAAgB,IAAI,eAAe,CAElD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAMjE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,GACtB,CACD,UAAU,EAAE,gBAAgB,EAAE,EAC9B,YAAY,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACvC,OAAO,CAAC,EAAE,sBAAsB,KAC7B,qBAAqB,CAGzB;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,YAAY,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACvC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,qBAAqB,CAGvB"}