@skaile/workspaces 0.29.1 → 0.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/{asset-feeds-2V7LZIG7.js → asset-feeds-IWOBYROH.js} +14 -13
  3. package/dist/asset-feeds-IWOBYROH.js.map +1 -0
  4. package/dist/asset-manager/index.js +12 -12
  5. package/dist/asset-manager/installer.js +11 -11
  6. package/dist/asset-manager/renderers.js +2 -2
  7. package/dist/asset-manager/src/index.d.ts +27 -0
  8. package/dist/asset-manager/src/index.d.ts.map +1 -1
  9. package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
  10. package/dist/asset-manager/src/installer.d.ts +1 -2
  11. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  12. package/dist/asset-manager/src/renderers.d.ts.map +1 -1
  13. package/dist/bridge/drivers/claude-sdk.js +324 -226
  14. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  15. package/dist/bridge/drivers/codex.js +3 -3
  16. package/dist/bridge/drivers/codex.js.map +1 -1
  17. package/dist/bridge/drivers/continue.js +4 -4
  18. package/dist/bridge/drivers/echo.js +2 -2
  19. package/dist/bridge/drivers/echo.js.map +1 -1
  20. package/dist/bridge/drivers/gemini.js +5 -5
  21. package/dist/bridge/drivers/goose.js +4 -4
  22. package/dist/bridge/drivers/omp.js +3 -3
  23. package/dist/bridge/drivers/opencode.js +4 -4
  24. package/dist/bridge/drivers/qwen.js +5 -5
  25. package/dist/bridge/index.js +4 -4
  26. package/dist/bridge/src/drivers/claude-sdk.d.ts +64 -0
  27. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  28. package/dist/bridge/src/drivers/echo.d.ts +1 -1
  29. package/dist/bridge/src/drivers/echo.d.ts.map +1 -1
  30. package/dist/bridge/src/error-classifier.d.ts.map +1 -1
  31. package/dist/bridge/src/normalizer.d.ts +5 -0
  32. package/dist/bridge/src/normalizer.d.ts.map +1 -1
  33. package/dist/{chunk-LDUNTZB6.js → chunk-26L2B6P6.js} +2 -2
  34. package/dist/{chunk-LDUNTZB6.js.map → chunk-26L2B6P6.js.map} +1 -1
  35. package/dist/{chunk-FWHOU3CX.js → chunk-2VKVWN5E.js} +6 -6
  36. package/dist/{chunk-FWHOU3CX.js.map → chunk-2VKVWN5E.js.map} +1 -1
  37. package/dist/{chunk-2FS4FPZ7.js → chunk-4AGIEU7V.js} +44 -62
  38. package/dist/chunk-4AGIEU7V.js.map +1 -0
  39. package/dist/{chunk-ZONCCO5N.js → chunk-4R6DROGN.js} +30 -32
  40. package/dist/chunk-4R6DROGN.js.map +1 -0
  41. package/dist/{chunk-3QQSSRYN.js → chunk-5DQOZFWJ.js} +416 -345
  42. package/dist/chunk-5DQOZFWJ.js.map +1 -0
  43. package/dist/{chunk-LD4QIVBY.js → chunk-5MJJYIL4.js} +3 -3
  44. package/dist/{chunk-LD4QIVBY.js.map → chunk-5MJJYIL4.js.map} +1 -1
  45. package/dist/{chunk-AKSR434V.js → chunk-5XAQDOMU.js} +79 -56
  46. package/dist/chunk-5XAQDOMU.js.map +1 -0
  47. package/dist/{chunk-MBOR7D65.js → chunk-67MFR5LS.js} +3 -3
  48. package/dist/{chunk-MBOR7D65.js.map → chunk-67MFR5LS.js.map} +1 -1
  49. package/dist/{chunk-7GWYRVAX.js → chunk-6LW7Q53Z.js} +162 -165
  50. package/dist/chunk-6LW7Q53Z.js.map +1 -0
  51. package/dist/{chunk-SF4GWVR5.js → chunk-6TCOYFVJ.js} +86 -55
  52. package/dist/chunk-6TCOYFVJ.js.map +1 -0
  53. package/dist/{chunk-QMONOHXT.js → chunk-74UKG2LA.js} +3 -3
  54. package/dist/{chunk-QMONOHXT.js.map → chunk-74UKG2LA.js.map} +1 -1
  55. package/dist/{chunk-JIQLLZ65.js → chunk-7MANNJ3U.js} +534 -235
  56. package/dist/chunk-7MANNJ3U.js.map +1 -0
  57. package/dist/{chunk-7R6W5EQR.js → chunk-ACXLKNIM.js} +2 -2
  58. package/dist/{chunk-7R6W5EQR.js.map → chunk-ACXLKNIM.js.map} +1 -1
  59. package/dist/{chunk-72IA6BTP.js → chunk-AKYEI3D6.js} +9 -9
  60. package/dist/{chunk-72IA6BTP.js.map → chunk-AKYEI3D6.js.map} +1 -1
  61. package/dist/{chunk-CMG3GJ6B.js → chunk-DAI754GK.js} +4 -4
  62. package/dist/{chunk-CMG3GJ6B.js.map → chunk-DAI754GK.js.map} +1 -1
  63. package/dist/{chunk-OTFG5Q7H.js → chunk-FRRTUVUM.js} +4594 -4480
  64. package/dist/chunk-FRRTUVUM.js.map +1 -0
  65. package/dist/{chunk-TV72ZJYN.js → chunk-GXC3TYMQ.js} +60 -47
  66. package/dist/chunk-GXC3TYMQ.js.map +1 -0
  67. package/dist/{chunk-IERB3UXJ.js → chunk-H5YXL4KI.js} +83 -69
  68. package/dist/chunk-H5YXL4KI.js.map +1 -0
  69. package/dist/{chunk-QDJKE557.js → chunk-HRKB2ATT.js} +64 -64
  70. package/dist/chunk-HRKB2ATT.js.map +1 -0
  71. package/dist/{chunk-ZEKWHJBB.js → chunk-IZIFMNTI.js} +3 -3
  72. package/dist/{chunk-ZEKWHJBB.js.map → chunk-IZIFMNTI.js.map} +1 -1
  73. package/dist/{chunk-24UIWON4.js → chunk-JB35MVBN.js} +167 -156
  74. package/dist/chunk-JB35MVBN.js.map +1 -0
  75. package/dist/{chunk-UIZKIUC6.js → chunk-KHZI44SS.js} +3 -3
  76. package/dist/chunk-KHZI44SS.js.map +1 -0
  77. package/dist/{chunk-5YO3H5Q4.js → chunk-KY5NY7LB.js} +3 -3
  78. package/dist/chunk-KY5NY7LB.js.map +1 -0
  79. package/dist/{chunk-MIH45XPY.js → chunk-LA2YSXEE.js} +1974 -1919
  80. package/dist/chunk-LA2YSXEE.js.map +1 -0
  81. package/dist/{chunk-IEJ5IOC3.js → chunk-LFDZYCEO.js} +4 -2
  82. package/dist/chunk-LFDZYCEO.js.map +1 -0
  83. package/dist/{chunk-2NOE4AGD.js → chunk-LIK75OJ5.js} +3 -3
  84. package/dist/{chunk-2NOE4AGD.js.map → chunk-LIK75OJ5.js.map} +1 -1
  85. package/dist/{chunk-PAYAFNXG.js → chunk-NGJ6E344.js} +104 -74
  86. package/dist/chunk-NGJ6E344.js.map +1 -0
  87. package/dist/{chunk-5V5KZQIC.js → chunk-PVMAIVNL.js} +4 -4
  88. package/dist/{chunk-5V5KZQIC.js.map → chunk-PVMAIVNL.js.map} +1 -1
  89. package/dist/{chunk-HK5FRWG6.js → chunk-R6O6YWU7.js} +2 -2
  90. package/dist/{chunk-HK5FRWG6.js.map → chunk-R6O6YWU7.js.map} +1 -1
  91. package/dist/{chunk-PRLD7EXG.js → chunk-SBGHNXJD.js} +2 -2
  92. package/dist/{chunk-PRLD7EXG.js.map → chunk-SBGHNXJD.js.map} +1 -1
  93. package/dist/{chunk-5RBPPBEK.js → chunk-SCJD3FMO.js} +4 -4
  94. package/dist/{chunk-5RBPPBEK.js.map → chunk-SCJD3FMO.js.map} +1 -1
  95. package/dist/{chunk-BZ2JU7IP.js → chunk-TU4VZULO.js} +5 -5
  96. package/dist/{chunk-BZ2JU7IP.js.map → chunk-TU4VZULO.js.map} +1 -1
  97. package/dist/{chunk-DVMSGGCM.js → chunk-VGFYUD3T.js} +158 -108
  98. package/dist/chunk-VGFYUD3T.js.map +1 -0
  99. package/dist/{chunk-Z3XXKR5E.js → chunk-WDMH4UMD.js} +4 -6
  100. package/dist/chunk-WDMH4UMD.js.map +1 -0
  101. package/dist/{chunk-W7W66MDZ.js → chunk-X46FY45B.js} +44 -42
  102. package/dist/chunk-X46FY45B.js.map +1 -0
  103. package/dist/{chunk-JKNWJ64A.js → chunk-XGCXFX7X.js} +2 -2
  104. package/dist/{chunk-JKNWJ64A.js.map → chunk-XGCXFX7X.js.map} +1 -1
  105. package/dist/{chunk-MLJKA3S6.js → chunk-XOAF5QAE.js} +2094 -1901
  106. package/dist/chunk-XOAF5QAE.js.map +1 -0
  107. package/dist/{chunk-FQHHCICT.js → chunk-XVDXGQ55.js} +226 -226
  108. package/dist/chunk-XVDXGQ55.js.map +1 -0
  109. package/dist/{chunk-M4KLIEIJ.js → chunk-YBJLYT4S.js} +3 -3
  110. package/dist/chunk-YBJLYT4S.js.map +1 -0
  111. package/dist/{chunk-OKRUTSG7.js → chunk-ZDKJHQY2.js} +2 -2
  112. package/dist/{chunk-OKRUTSG7.js.map → chunk-ZDKJHQY2.js.map} +1 -1
  113. package/dist/{chunk-UBCZVONU.js → chunk-ZME3JDA6.js} +3 -3
  114. package/dist/{chunk-UBCZVONU.js.map → chunk-ZME3JDA6.js.map} +1 -1
  115. package/dist/cli/index.js +2811 -2662
  116. package/dist/cli/index.js.map +1 -1
  117. package/dist/cli/src/asset-feeds.d.ts +0 -9
  118. package/dist/cli/src/asset-feeds.d.ts.map +1 -1
  119. package/dist/cli/src/commands/catalog-cmd.d.ts.map +1 -1
  120. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  121. package/dist/cli/src/commands/config.d.ts.map +1 -1
  122. package/dist/cli/src/commands/deploy.d.ts.map +1 -1
  123. package/dist/cli/src/commands/integration.d.ts.map +1 -1
  124. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  125. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  126. package/dist/cli/src/commands/preset-cmd.d.ts.map +1 -1
  127. package/dist/cli/src/commands/project.d.ts +1 -1
  128. package/dist/cli/src/commands/project.d.ts.map +1 -1
  129. package/dist/cli/src/commands/show.d.ts.map +1 -1
  130. package/dist/cli/src/commands/source.d.ts.map +1 -1
  131. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  132. package/dist/cli/src/ensure-sources.d.ts.map +1 -1
  133. package/dist/cli/src/flow-discovery.d.ts.map +1 -1
  134. package/dist/cli/src/open-registry.d.ts.map +1 -1
  135. package/dist/cli/src/plugin-store/index.d.ts +4 -6
  136. package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
  137. package/dist/cli/src/plugin-store/paths.d.ts +0 -2
  138. package/dist/cli/src/plugin-store/paths.d.ts.map +1 -1
  139. package/dist/cli/src/setup.d.ts.map +1 -1
  140. package/dist/connectors/config.js +9 -9
  141. package/dist/connectors/index.js +12 -12
  142. package/dist/connectors/rclone.js +2 -2
  143. package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
  144. package/dist/connectors/src/connector-registry.d.ts.map +1 -1
  145. package/dist/connectors/src/connector-types.d.ts +1 -1
  146. package/dist/connectors/src/connector-types.d.ts.map +1 -1
  147. package/dist/connectors/src/index.d.ts +5 -5
  148. package/dist/connectors/src/index.d.ts.map +1 -1
  149. package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
  150. package/dist/{connectors-PTCSHCHZ.js → connectors-DY7UBBV5.js} +3 -3
  151. package/dist/{connectors-PTCSHCHZ.js.map → connectors-DY7UBBV5.js.map} +1 -1
  152. package/dist/connectors-shared/src/index.d.ts +1 -1
  153. package/dist/connectors-shared/src/index.d.ts.map +1 -1
  154. package/dist/core/index.js +8 -8
  155. package/dist/core/logging.js +1 -1
  156. package/dist/core/manifest.js +2 -2
  157. package/dist/core/models.js +1 -1
  158. package/dist/core/publish-manifest.js +2 -2
  159. package/dist/core/runtime-assets.js +5 -5
  160. package/dist/core/src/lock.d.ts +0 -9
  161. package/dist/core/src/lock.d.ts.map +1 -1
  162. package/dist/core/src/logging/create-logger.d.ts.map +1 -1
  163. package/dist/core/src/logging/index.d.ts +11 -11
  164. package/dist/core/src/logging/index.d.ts.map +1 -1
  165. package/dist/core/src/logging/log-store.d.ts.map +1 -1
  166. package/dist/core/src/logging/sinks/no-op-sink.d.ts.map +1 -1
  167. package/dist/core/src/logging/sinks/sqlite-sink.d.ts.map +1 -1
  168. package/dist/core/src/manifest.d.ts.map +1 -1
  169. package/dist/core/src/models.d.ts +6 -0
  170. package/dist/core/src/models.d.ts.map +1 -1
  171. package/dist/core/src/publish-manifest.d.ts.map +1 -1
  172. package/dist/core/src/repo-manager.d.ts +0 -12
  173. package/dist/core/src/repo-manager.d.ts.map +1 -1
  174. package/dist/core/src/runtime-assets.d.ts.map +1 -1
  175. package/dist/core/src/store.d.ts +1 -1
  176. package/dist/core/src/store.d.ts.map +1 -1
  177. package/dist/core/src/walker.d.ts.map +1 -1
  178. package/dist/core/src/workspace-config.d.ts +0 -27
  179. package/dist/core/src/workspace-config.d.ts.map +1 -1
  180. package/dist/core/store.js +1 -1
  181. package/dist/core/workspace-config.js +4 -4
  182. package/dist/deploy/index.js +8 -8
  183. package/dist/discovery/index.js +6 -6
  184. package/dist/discovery/src/asset-kind-registry.d.ts +1 -1
  185. package/dist/discovery/src/asset-kind-registry.d.ts.map +1 -1
  186. package/dist/discovery/src/builtin-providers.d.ts.map +1 -1
  187. package/dist/discovery/src/discover-manifest.d.ts +1 -1
  188. package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
  189. package/dist/discovery/src/discover.d.ts +30 -3
  190. package/dist/discovery/src/discover.d.ts.map +1 -1
  191. package/dist/discovery/src/domains.d.ts +144 -0
  192. package/dist/discovery/src/domains.d.ts.map +1 -0
  193. package/dist/discovery/src/index.d.ts +9 -7
  194. package/dist/discovery/src/index.d.ts.map +1 -1
  195. package/dist/discovery/src/source-config.d.ts +1 -1
  196. package/dist/discovery/src/source-config.d.ts.map +1 -1
  197. package/dist/discovery/src/tree-entries.d.ts +13 -1
  198. package/dist/discovery/src/tree-entries.d.ts.map +1 -1
  199. package/dist/ensure-sources-6GW6UBXY.js +84 -0
  200. package/dist/ensure-sources-6GW6UBXY.js.map +1 -0
  201. package/dist/factory-assets/connectors/deploy/adapter.d.ts +1 -1
  202. package/dist/factory-assets/connectors/deploy/adapter.d.ts.map +1 -1
  203. package/dist/factory-assets/connectors/deploy.js +12 -12
  204. package/dist/factory-assets/connectors/devserver/adapter.d.ts +1 -1
  205. package/dist/factory-assets/connectors/devserver/adapter.d.ts.map +1 -1
  206. package/dist/factory-assets/connectors/devserver.js +12 -12
  207. package/dist/factory-assets/connectors/flow/adapter.d.ts +16 -2
  208. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
  209. package/dist/factory-assets/connectors/flow/adapter.js +12 -12
  210. package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -1
  211. package/dist/factory-assets/connectors/flow/engine/index.d.ts +3 -3
  212. package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -1
  213. package/dist/factory-assets/connectors/flow/engine.js +9 -9
  214. package/dist/factory-assets/connectors/flow/index.d.ts +1 -1
  215. package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
  216. package/dist/factory-assets/connectors/flow/run-flow.js +15 -15
  217. package/dist/factory-assets/connectors/flow.js +12 -12
  218. package/dist/factory-assets/connectors/git/driver.d.ts +32 -0
  219. package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
  220. package/dist/factory-assets/connectors/git.js +12 -12
  221. package/dist/factory-assets/connectors/gmail/adapter.d.ts +1 -1
  222. package/dist/factory-assets/connectors/gmail/adapter.d.ts.map +1 -1
  223. package/dist/factory-assets/connectors/gmail.js +12 -12
  224. package/dist/factory-assets/connectors/googledrive.js +12 -12
  225. package/dist/factory-assets/connectors/local/driver.d.ts +1 -2
  226. package/dist/factory-assets/connectors/local/driver.d.ts.map +1 -1
  227. package/dist/factory-assets/connectors/local.js +12 -12
  228. package/dist/factory-assets/connectors/mattermost/adapter.d.ts +1 -1
  229. package/dist/factory-assets/connectors/mattermost/adapter.d.ts.map +1 -1
  230. package/dist/factory-assets/connectors/mattermost.js +12 -12
  231. package/dist/factory-assets/connectors/memory/adapter.d.ts.map +1 -1
  232. package/dist/factory-assets/connectors/memory.js +12 -12
  233. package/dist/factory-assets/connectors/minio/adapter.d.ts +1 -1
  234. package/dist/factory-assets/connectors/minio/adapter.d.ts.map +1 -1
  235. package/dist/factory-assets/connectors/minio.js +12 -12
  236. package/dist/factory-assets/connectors/postgres/adapter.d.ts +6 -1
  237. package/dist/factory-assets/connectors/postgres/adapter.d.ts.map +1 -1
  238. package/dist/factory-assets/connectors/postgres.js +12 -12
  239. package/dist/factory-assets/connectors/s3/driver.d.ts.map +1 -1
  240. package/dist/factory-assets/connectors/s3.js +12 -12
  241. package/dist/factory-assets/connectors/sharepoint.js +12 -12
  242. package/dist/factory-assets/connectors/sqlite/adapter.d.ts +1 -1
  243. package/dist/factory-assets/connectors/sqlite/adapter.d.ts.map +1 -1
  244. package/dist/factory-assets/connectors/sqlite.js +12 -12
  245. package/dist/factory-assets/connectors/static-server/adapter.d.ts +6 -1
  246. package/dist/factory-assets/connectors/static-server/adapter.d.ts.map +1 -1
  247. package/dist/factory-assets/connectors/static-server.js +12 -12
  248. package/dist/factory-assets/connectors/tunnel/adapter.d.ts +1 -1
  249. package/dist/factory-assets/connectors/tunnel/adapter.d.ts.map +1 -1
  250. package/dist/factory-assets/connectors/tunnel.js +12 -12
  251. package/dist/factory-assets/connectors/webdav.js +12 -12
  252. package/dist/factory-assets/connectors/xstate/adapter.d.ts +1 -1
  253. package/dist/factory-assets/connectors/xstate/adapter.d.ts.map +1 -1
  254. package/dist/factory-assets/connectors/xstate-store/adapter.d.ts +7 -0
  255. package/dist/factory-assets/connectors/xstate-store/adapter.d.ts.map +1 -1
  256. package/dist/factory-assets/connectors/xstate-store.js +12 -12
  257. package/dist/factory-assets/connectors/xstate.js +12 -12
  258. package/dist/flows-JXO3KGC2.js +7 -0
  259. package/dist/{flows-L3GHQD7F.js.map → flows-JXO3KGC2.js.map} +1 -1
  260. package/dist/library/index.js +13 -13
  261. package/dist/library/install.js +9 -9
  262. package/dist/library/src/config.d.ts.map +1 -1
  263. package/dist/library/src/index.d.ts +27 -27
  264. package/dist/library/src/index.d.ts.map +1 -1
  265. package/dist/library/src/install/index.d.ts +2 -2
  266. package/dist/library/src/install/index.d.ts.map +1 -1
  267. package/dist/library/src/install/install-from-manifest.d.ts +0 -21
  268. package/dist/library/src/install/install-from-manifest.d.ts.map +1 -1
  269. package/dist/library/src/knowledge/index.d.ts +2 -2
  270. package/dist/library/src/knowledge/index.d.ts.map +1 -1
  271. package/dist/library/src/knowledge/knowledge-kind-provider.d.ts.map +1 -1
  272. package/dist/library/src/local/library.d.ts +2 -2
  273. package/dist/library/src/local/library.d.ts.map +1 -1
  274. package/dist/library/src/local/store-paths.d.ts.map +1 -1
  275. package/dist/library/src/pin-resolver.d.ts.map +1 -1
  276. package/dist/library/src/preset/apply.d.ts +2 -2
  277. package/dist/library/src/preset/apply.d.ts.map +1 -1
  278. package/dist/library/src/preset/index.d.ts +10 -10
  279. package/dist/library/src/preset/index.d.ts.map +1 -1
  280. package/dist/library/src/preset/parse.d.ts.map +1 -1
  281. package/dist/library/src/preset/resolve-item.d.ts +1 -1
  282. package/dist/library/src/preset/resolve-item.d.ts.map +1 -1
  283. package/dist/library/src/preset/upgrade.d.ts +1 -1
  284. package/dist/library/src/preset/upgrade.d.ts.map +1 -1
  285. package/dist/library/src/remote/index.d.ts +5 -5
  286. package/dist/library/src/remote/index.d.ts.map +1 -1
  287. package/dist/library/src/remote/remote-catalog-source.d.ts +1 -1
  288. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  289. package/dist/library/src/remote/rest-catalog-source.d.ts +1 -1
  290. package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
  291. package/dist/library/src/sync/driver.d.ts +1 -1
  292. package/dist/library/src/sync/driver.d.ts.map +1 -1
  293. package/dist/library/src/sync/git-driver.d.ts +1 -1
  294. package/dist/library/src/sync/git-driver.d.ts.map +1 -1
  295. package/dist/library/src/sync/local-driver.d.ts +1 -1
  296. package/dist/library/src/sync/local-driver.d.ts.map +1 -1
  297. package/dist/library/src/workspace-config.d.ts +0 -9
  298. package/dist/library/src/workspace-config.d.ts.map +1 -1
  299. package/dist/open-library-SH6NCJM2.js +23 -0
  300. package/dist/{open-library-3VJY74LQ.js.map → open-library-SH6NCJM2.js.map} +1 -1
  301. package/dist/paths-YSXGJ7TO.js +15 -0
  302. package/dist/{paths-CE66L3AL.js.map → paths-YSXGJ7TO.js.map} +1 -1
  303. package/dist/plugin-registry/src/targets.d.ts +2 -3
  304. package/dist/plugin-registry/src/targets.d.ts.map +1 -1
  305. package/dist/{plugin-store-GL5VKYUA.js → plugin-store-2KMDUF7R.js} +11 -14
  306. package/dist/plugin-store-2KMDUF7R.js.map +1 -0
  307. package/dist/plugins/index.js +1 -1
  308. package/dist/plugins/src/asset-kind-registry.d.ts +1 -1
  309. package/dist/plugins/src/asset-kind-registry.d.ts.map +1 -1
  310. package/dist/plugins/src/catalog-source.d.ts +5 -0
  311. package/dist/plugins/src/catalog-source.d.ts.map +1 -1
  312. package/dist/plugins/src/index.d.ts +5 -5
  313. package/dist/plugins/src/index.d.ts.map +1 -1
  314. package/dist/{provider-GAWKFQ3T.js → provider-ZPT443IX.js} +18 -16
  315. package/dist/provider-ZPT443IX.js.map +1 -0
  316. package/dist/resolver/index.js +1 -1
  317. package/dist/resolver/src/preamble.d.ts.map +1 -1
  318. package/dist/runner/index.js +17 -17
  319. package/dist/runner/src/builtin-capabilities.d.ts +12 -0
  320. package/dist/runner/src/builtin-capabilities.d.ts.map +1 -1
  321. package/dist/runner/src/capability-registry.d.ts.map +1 -1
  322. package/dist/runner/src/compaction/index.d.ts +0 -4
  323. package/dist/runner/src/compaction/index.d.ts.map +1 -1
  324. package/dist/runner/src/compaction/orchestrator.d.ts +23 -2
  325. package/dist/runner/src/compaction/orchestrator.d.ts.map +1 -1
  326. package/dist/runner/src/composition/compile.d.ts.map +1 -1
  327. package/dist/runner/src/composition/index.d.ts +4 -4
  328. package/dist/runner/src/composition/index.d.ts.map +1 -1
  329. package/dist/runner/src/composition/resolve.d.ts.map +1 -1
  330. package/dist/runner/src/composition/types.d.ts +2 -2
  331. package/dist/runner/src/composition/types.d.ts.map +1 -1
  332. package/dist/runner/src/config.d.ts +2 -2
  333. package/dist/runner/src/config.d.ts.map +1 -1
  334. package/dist/runner/src/define-capability.d.ts +1 -1
  335. package/dist/runner/src/define-capability.d.ts.map +1 -1
  336. package/dist/runner/src/external-mcp.d.ts.map +1 -1
  337. package/dist/runner/src/index.d.ts +9 -9
  338. package/dist/runner/src/index.d.ts.map +1 -1
  339. package/dist/runner/src/logging-bootstrap.d.ts +1 -1
  340. package/dist/runner/src/logging-bootstrap.d.ts.map +1 -1
  341. package/dist/runner/src/manifest.d.ts.map +1 -1
  342. package/dist/runner/src/resource-handler.d.ts.map +1 -1
  343. package/dist/runner/src/resources.d.ts.map +1 -1
  344. package/dist/runner/src/runner-capabilities.d.ts +25 -0
  345. package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
  346. package/dist/runner/src/serve.d.ts.map +1 -1
  347. package/dist/runner/src/session-builder.d.ts.map +1 -1
  348. package/dist/sdk/asset-manager.js +12 -12
  349. package/dist/sdk/bridge.js +4 -4
  350. package/dist/sdk/core.js +8 -8
  351. package/dist/sdk/flow.js +9 -9
  352. package/dist/sdk/index.js +92 -76
  353. package/dist/sdk/index.js.map +1 -1
  354. package/dist/sdk/resolver.js +1 -1
  355. package/dist/sdk/runner.js +17 -17
  356. package/dist/sdk/session.js +1 -1
  357. package/dist/sdk/src/agent-session.d.ts +8 -0
  358. package/dist/sdk/src/agent-session.d.ts.map +1 -1
  359. package/dist/sdk/src/factory.d.ts.map +1 -1
  360. package/dist/sdk/src/index.d.ts +2 -2
  361. package/dist/sdk/src/index.d.ts.map +1 -1
  362. package/dist/sdk/store.js +1 -1
  363. package/dist/sdk/telemetry.js +1 -1
  364. package/dist/secrets/index.js +2 -2
  365. package/dist/secrets/src/index.d.ts +8 -8
  366. package/dist/secrets/src/index.d.ts.map +1 -1
  367. package/dist/secrets/src/lifecycle.d.ts +1 -2
  368. package/dist/secrets/src/lifecycle.d.ts.map +1 -1
  369. package/dist/secrets/src/providers/env.d.ts +1 -1
  370. package/dist/secrets/src/providers/env.d.ts.map +1 -1
  371. package/dist/secrets/src/providers/local.d.ts +1 -1
  372. package/dist/secrets/src/providers/local.d.ts.map +1 -1
  373. package/dist/secrets/src/router.d.ts +1 -1
  374. package/dist/secrets/src/router.d.ts.map +1 -1
  375. package/dist/session/index.js +1 -1
  376. package/dist/session/src/mentions.d.ts.map +1 -1
  377. package/dist/{sessions-2IUX4P3P.js → sessions-DICDEONJ.js} +3 -3
  378. package/dist/{sessions-2IUX4P3P.js.map → sessions-DICDEONJ.js.map} +1 -1
  379. package/dist/{setup-4YMN2BDU.js → setup-6MQ6QWML.js} +198 -175
  380. package/dist/setup-6MQ6QWML.js.map +1 -0
  381. package/dist/skills-BMI6H7HI.js +7 -0
  382. package/dist/{skills-6HJ3WINN.js.map → skills-BMI6H7HI.js.map} +1 -1
  383. package/dist/store/index.js +1 -1
  384. package/dist/store/src/index.d.ts +1 -1
  385. package/dist/store/src/index.d.ts.map +1 -1
  386. package/dist/store/src/resource-client.d.ts +1 -1
  387. package/dist/store/src/resource-client.d.ts.map +1 -1
  388. package/dist/store/src/vue.d.ts.map +1 -1
  389. package/dist/store/vue.js.map +1 -1
  390. package/dist/store-client-LDYF4TK4.js +15 -0
  391. package/dist/{store-client-BCP5LCAZ.js.map → store-client-LDYF4TK4.js.map} +1 -1
  392. package/dist/telemetry/index.js +1 -1
  393. package/dist/telemetry/src/context.d.ts.map +1 -1
  394. package/dist/telemetry/src/index.d.ts +3 -3
  395. package/dist/telemetry/src/index.d.ts.map +1 -1
  396. package/dist/telemetry/src/otel/gen-ai.d.ts +1 -1
  397. package/dist/telemetry/src/otel/gen-ai.d.ts.map +1 -1
  398. package/dist/telemetry/src/otel/provider.d.ts.map +1 -1
  399. package/dist/transport/src/index.d.ts +1 -1
  400. package/dist/transport/src/index.d.ts.map +1 -1
  401. package/dist/tui/index.js +251 -218
  402. package/dist/tui/index.js.map +1 -1
  403. package/dist/tui/src/index.d.ts +2 -2
  404. package/dist/tui/src/index.d.ts.map +1 -1
  405. package/dist/tui/src/repl-renderer.d.ts.map +1 -1
  406. package/dist/tui/src/repl-session.d.ts +1 -1
  407. package/dist/tui/src/repl-session.d.ts.map +1 -1
  408. package/dist/tui/src/repl.d.ts.map +1 -1
  409. package/dist/types/manifests.js +1 -1
  410. package/dist/types/src/envelope.d.ts +1 -1
  411. package/dist/types/src/envelope.d.ts.map +1 -1
  412. package/dist/types/src/manifests/agent.d.ts.map +1 -1
  413. package/dist/types/src/manifests/connector.d.ts.map +1 -1
  414. package/dist/types/src/manifests/contract.d.ts.map +1 -1
  415. package/dist/types/src/manifests/index.d.ts +16 -16
  416. package/dist/types/src/manifests/index.d.ts.map +1 -1
  417. package/dist/types/src/manifests/mcp-server.d.ts.map +1 -1
  418. package/dist/types/src/manifests/mount.d.ts.map +1 -1
  419. package/dist/types/src/manifests/persona.d.ts.map +1 -1
  420. package/dist/types/src/manifests/preset.d.ts +0 -18
  421. package/dist/types/src/manifests/preset.d.ts.map +1 -1
  422. package/dist/types/src/manifests/prompt.d.ts.map +1 -1
  423. package/dist/types/src/manifests/ruleset.d.ts.map +1 -1
  424. package/dist/types/src/manifests/skill.d.ts.map +1 -1
  425. package/dist/validator-VF5M764T.js +5 -0
  426. package/dist/{validator-47SQUW3J.js.map → validator-VF5M764T.js.map} +1 -1
  427. package/dist/workspace-plugin/adapters/mcp.js +6 -6
  428. package/dist/workspace-plugin/adapters/omp.js +76 -69
  429. package/dist/workspace-plugin/adapters/omp.js.map +1 -1
  430. package/dist/workspace-plugin/index.js +2 -2
  431. package/dist/workspace-plugin/src/adapters/omp.d.ts.map +1 -1
  432. package/dist/workspace-plugin/src/tools/connectors.d.ts.map +1 -1
  433. package/dist/workspace-plugin/src/tools/flows.d.ts.map +1 -1
  434. package/dist/workspace-plugin/src/tools/sessions.d.ts.map +1 -1
  435. package/dist/workspace-plugin/src/tools/skills.d.ts.map +1 -1
  436. package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
  437. package/package.json +1 -2
  438. package/dist/asset-feeds-2V7LZIG7.js.map +0 -1
  439. package/dist/chunk-24UIWON4.js.map +0 -1
  440. package/dist/chunk-2FS4FPZ7.js.map +0 -1
  441. package/dist/chunk-3QQSSRYN.js.map +0 -1
  442. package/dist/chunk-5YO3H5Q4.js.map +0 -1
  443. package/dist/chunk-7GWYRVAX.js.map +0 -1
  444. package/dist/chunk-AKSR434V.js.map +0 -1
  445. package/dist/chunk-DVMSGGCM.js.map +0 -1
  446. package/dist/chunk-FQHHCICT.js.map +0 -1
  447. package/dist/chunk-IEJ5IOC3.js.map +0 -1
  448. package/dist/chunk-IERB3UXJ.js.map +0 -1
  449. package/dist/chunk-JIQLLZ65.js.map +0 -1
  450. package/dist/chunk-M4KLIEIJ.js.map +0 -1
  451. package/dist/chunk-MIH45XPY.js.map +0 -1
  452. package/dist/chunk-MLJKA3S6.js.map +0 -1
  453. package/dist/chunk-OTFG5Q7H.js.map +0 -1
  454. package/dist/chunk-PAYAFNXG.js.map +0 -1
  455. package/dist/chunk-QDJKE557.js.map +0 -1
  456. package/dist/chunk-SF4GWVR5.js.map +0 -1
  457. package/dist/chunk-TV72ZJYN.js.map +0 -1
  458. package/dist/chunk-UIZKIUC6.js.map +0 -1
  459. package/dist/chunk-W7W66MDZ.js.map +0 -1
  460. package/dist/chunk-Z3XXKR5E.js.map +0 -1
  461. package/dist/chunk-ZONCCO5N.js.map +0 -1
  462. package/dist/ensure-sources-BNSRO5G7.js +0 -74
  463. package/dist/ensure-sources-BNSRO5G7.js.map +0 -1
  464. package/dist/flows-L3GHQD7F.js +0 -7
  465. package/dist/open-library-3VJY74LQ.js +0 -23
  466. package/dist/paths-CE66L3AL.js +0 -15
  467. package/dist/plugin-store-GL5VKYUA.js.map +0 -1
  468. package/dist/provider-GAWKFQ3T.js.map +0 -1
  469. package/dist/setup-4YMN2BDU.js.map +0 -1
  470. package/dist/skills-6HJ3WINN.js +0 -7
  471. package/dist/store-client-BCP5LCAZ.js +0 -15
  472. package/dist/validator-47SQUW3J.js +0 -5
@@ -1,9 +1,9 @@
1
1
  import { dispatchCapability } from '../../chunk-RRVQAE5D.js';
2
2
  import { fetchProviderModels } from '../../chunk-BMQKMOQY.js';
3
- import { AuthError, classifyClaudeSdkError } from '../../chunk-PAYAFNXG.js';
4
- import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-ZEKWHJBB.js';
3
+ import { AuthError, classifyClaudeSdkError } from '../../chunk-NGJ6E344.js';
4
+ import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-IZIFMNTI.js';
5
5
  import '../../chunk-6E6PKKAD.js';
6
- import '../../chunk-24UIWON4.js';
6
+ import '../../chunk-JB35MVBN.js';
7
7
  import '../../chunk-NSBPE2FW.js';
8
8
  import { spawnSync } from 'child_process';
9
9
  import { existsSync, readFileSync, readdirSync, writeFileSync, renameSync } from 'fs';
@@ -360,115 +360,24 @@ var ClaudeSdkDriver = class extends AgentDriver {
360
360
  const errMsg = err instanceof Error ? err.message : String(err);
361
361
  const isStaleResume = !_budget.staleResume && /No conversation found with session ID/i.test(errMsg);
362
362
  if (isStaleResume) {
363
- const staleId = this.config.resumeSessionId || this.sessionId || "unknown";
364
- this.log.warn("stale Claude Code session, retrying with a fresh session", { staleId });
365
- this.emit("agent-event", {
366
- type: "resume_failed",
367
- resumeSessionId: staleId,
368
- reason: "jsonl_lost"
369
- });
370
- this.emit("agent-event", {
371
- type: "error",
372
- error: "Claude Code session state was lost (likely a prior crash). Restarting with a fresh session \u2014 previous conversation context is not available.",
373
- fatal: false
374
- });
375
- this.sessionId = "";
376
- this.hasSession = false;
377
- this.query = null;
378
- this.config.resumeSessionId = void 0;
379
- this.turnResolve = null;
380
- this.turnReject = null;
381
- this.running = false;
363
+ this.prepareStaleResumeRetry();
382
364
  retrying = true;
383
365
  return this.prompt(message, { ..._budget, staleResume: true });
384
366
  }
385
367
  const isPoisonedHistory = !_budget.poison && /invalid_request_error/i.test(errMsg) && /media[_ ]?type|could not process image|image exceeds|cache_control/i.test(errMsg);
386
368
  const poisonSessionId = this.config.resumeSessionId || this.sessionId;
387
369
  if (isPoisonedHistory && poisonSessionId) {
388
- const scrub = scrubPoisonedTranscript({
389
- configDir: this.resolveClaudeConfigDir(),
390
- sessionId: poisonSessionId,
391
- log: this.log
392
- });
393
- if (scrub.changed) {
394
- this.log.warn("scrubbed poisoned Claude Code transcript, retrying resume", {
395
- sessionId: poisonSessionId,
396
- corrected: scrub.corrected,
397
- stubbed: scrub.stubbed,
398
- cacheStripped: scrub.cacheStripped
399
- });
400
- this.emit("agent-event", {
401
- type: "resume_failed",
402
- resumeSessionId: poisonSessionId,
403
- reason: "jsonl_poisoned"
404
- });
405
- const plural = (n) => n === 1 ? "" : "s";
406
- const repairs = [];
407
- if (scrub.corrected > 0)
408
- repairs.push(`${scrub.corrected} media type${plural(scrub.corrected)} corrected`);
409
- if (scrub.stubbed > 0)
410
- repairs.push(`${scrub.stubbed} image${plural(scrub.stubbed)} removed`);
411
- if (scrub.cacheStripped > 0)
412
- repairs.push(
413
- `${scrub.cacheStripped} malformed block${plural(scrub.cacheStripped)} cleaned`
414
- );
415
- this.emit("agent-event", {
416
- type: "error",
417
- error: `Recovered corrupt data in the conversation history (${repairs.join(", ")}). Retrying \u2014 earlier context is preserved.`,
418
- fatal: false
419
- });
420
- this.query = null;
421
- this.turnResolve = null;
422
- this.turnReject = null;
423
- this.running = false;
370
+ if (this.attemptPoisonScrubRetry(poisonSessionId)) {
424
371
  retrying = true;
425
372
  return this.prompt(message, { ..._budget, poison: true });
426
373
  }
427
- this.log.warn("poisoned-transcript error but scrub found nothing to repair", {
428
- sessionId: poisonSessionId,
429
- filePath: scrub.filePath
430
- });
431
374
  }
432
375
  const isAuthError = err instanceof AuthError && !_budget.auth;
433
376
  if (isAuthError && this.config.onAuthError) {
434
- this.log.info("auth error caught; invoking onAuthError refresh callback");
435
- let refreshed = false;
436
- try {
437
- const mint = await this.config.onAuthError({
438
- configId: this.config.aiProviderConfigId ?? ""
439
- });
440
- refreshed = mint.ok;
441
- if (!mint.ok) {
442
- this.log.info("onAuthError reported refresh failure; surfacing AuthError", {
443
- code: mint.code
444
- });
445
- }
446
- } catch (refreshErr) {
447
- this.log.warn("onAuthError callback threw; surfacing original AuthError", {
448
- error: refreshErr instanceof Error ? refreshErr.message : String(refreshErr)
449
- });
450
- }
451
- if (refreshed) {
452
- this.log.info("credentials refreshed; retrying prompt");
453
- this.query = null;
454
- this.turnResolve = null;
455
- this.turnReject = null;
456
- this.running = false;
377
+ if (await this.attemptAuthSelfHeal(err)) {
457
378
  retrying = true;
458
379
  return this.prompt(message, { ..._budget, auth: true });
459
380
  }
460
- try {
461
- this.emit("agent-event", {
462
- type: "error",
463
- error: err.message,
464
- detail: err.detail
465
- });
466
- } catch (emitErr) {
467
- this.log.warn(
468
- "agent-event listener threw during deferred auth-error surfacing; suppressing",
469
- { error: emitErr instanceof Error ? emitErr.message : String(emitErr) }
470
- );
471
- }
472
381
  }
473
382
  throw err;
474
383
  } finally {
@@ -479,6 +388,133 @@ var ClaudeSdkDriver = class extends AgentDriver {
479
388
  }
480
389
  }
481
390
  }
391
+ /**
392
+ * Side-effects of the stale-resume recovery path: emit the resume-outcome and
393
+ * non-fatal error events, then reset session state so the recursive prompt()
394
+ * starts a fresh session. The caller owns the decision to recurse — this only
395
+ * performs the state mutation, never control flow.
396
+ */
397
+ prepareStaleResumeRetry() {
398
+ const staleId = this.config.resumeSessionId || this.sessionId || "unknown";
399
+ this.log.warn("stale Claude Code session, retrying with a fresh session", { staleId });
400
+ this.emit("agent-event", {
401
+ type: "resume_failed",
402
+ resumeSessionId: staleId,
403
+ reason: "jsonl_lost"
404
+ });
405
+ this.emit("agent-event", {
406
+ type: "error",
407
+ error: "Claude Code session state was lost (likely a prior crash). Restarting with a fresh session \u2014 previous conversation context is not available.",
408
+ fatal: false
409
+ });
410
+ this.sessionId = "";
411
+ this.hasSession = false;
412
+ this.query = null;
413
+ this.config.resumeSessionId = void 0;
414
+ this.turnResolve = null;
415
+ this.turnReject = null;
416
+ this.running = false;
417
+ }
418
+ /**
419
+ * Side-effects of the poisoned-transcript recovery path: scrub the on-disk
420
+ * transcript and, when something was repaired, emit recovery events and reset
421
+ * query state. Returns `true` when the scrub changed the transcript (the
422
+ * caller should recurse) and `false` otherwise. The caller owns the decision
423
+ * to recurse — this only performs the scrub + state mutation, never control
424
+ * flow.
425
+ */
426
+ attemptPoisonScrubRetry(poisonSessionId) {
427
+ const scrub = scrubPoisonedTranscript({
428
+ configDir: this.resolveClaudeConfigDir(),
429
+ sessionId: poisonSessionId,
430
+ log: this.log
431
+ });
432
+ if (scrub.changed) {
433
+ this.log.warn("scrubbed poisoned Claude Code transcript, retrying resume", {
434
+ sessionId: poisonSessionId,
435
+ corrected: scrub.corrected,
436
+ stubbed: scrub.stubbed,
437
+ cacheStripped: scrub.cacheStripped
438
+ });
439
+ this.emit("agent-event", {
440
+ type: "resume_failed",
441
+ resumeSessionId: poisonSessionId,
442
+ reason: "jsonl_poisoned"
443
+ });
444
+ const plural = (n) => n === 1 ? "" : "s";
445
+ const repairs = [];
446
+ if (scrub.corrected > 0)
447
+ repairs.push(`${scrub.corrected} media type${plural(scrub.corrected)} corrected`);
448
+ if (scrub.stubbed > 0) repairs.push(`${scrub.stubbed} image${plural(scrub.stubbed)} removed`);
449
+ if (scrub.cacheStripped > 0)
450
+ repairs.push(
451
+ `${scrub.cacheStripped} malformed block${plural(scrub.cacheStripped)} cleaned`
452
+ );
453
+ this.emit("agent-event", {
454
+ type: "error",
455
+ error: `Recovered corrupt data in the conversation history (${repairs.join(", ")}). Retrying \u2014 earlier context is preserved.`,
456
+ fatal: false
457
+ });
458
+ this.query = null;
459
+ this.turnResolve = null;
460
+ this.turnReject = null;
461
+ this.running = false;
462
+ return true;
463
+ }
464
+ this.log.warn("poisoned-transcript error but scrub found nothing to repair", {
465
+ sessionId: poisonSessionId,
466
+ filePath: scrub.filePath
467
+ });
468
+ return false;
469
+ }
470
+ /**
471
+ * Side-effects of the auth-error recovery path: invoke the `onAuthError`
472
+ * refresh callback. On success, reset query state and return `true` (the
473
+ * caller should recurse). On failure, emit the deferred `agent-event: error`
474
+ * (paired with the deferral in {@link failTurn}) and return `false`. The
475
+ * caller owns the decision to recurse and the subsequent rethrow — this only
476
+ * performs the refresh + state mutation, never control flow.
477
+ */
478
+ async attemptAuthSelfHeal(err) {
479
+ this.log.info("auth error caught; invoking onAuthError refresh callback");
480
+ let refreshed = false;
481
+ try {
482
+ const mint = await this.config.onAuthError({
483
+ configId: this.config.aiProviderConfigId ?? ""
484
+ });
485
+ refreshed = mint.ok;
486
+ if (!mint.ok) {
487
+ this.log.info("onAuthError reported refresh failure; surfacing AuthError", {
488
+ code: mint.code
489
+ });
490
+ }
491
+ } catch (refreshErr) {
492
+ this.log.warn("onAuthError callback threw; surfacing original AuthError", {
493
+ error: refreshErr instanceof Error ? refreshErr.message : String(refreshErr)
494
+ });
495
+ }
496
+ if (refreshed) {
497
+ this.log.info("credentials refreshed; retrying prompt");
498
+ this.query = null;
499
+ this.turnResolve = null;
500
+ this.turnReject = null;
501
+ this.running = false;
502
+ return true;
503
+ }
504
+ try {
505
+ this.emit("agent-event", {
506
+ type: "error",
507
+ error: err.message,
508
+ detail: err.detail
509
+ });
510
+ } catch (emitErr) {
511
+ this.log.warn(
512
+ "agent-event listener threw during deferred auth-error surfacing; suppressing",
513
+ { error: emitErr instanceof Error ? emitErr.message : String(emitErr) }
514
+ );
515
+ }
516
+ return false;
517
+ }
482
518
  /**
483
519
  * Resolve the Claude Code config directory — the parent of `projects/` — from
484
520
  * the driver config, the process environment, or the `~/.claude` default.
@@ -714,42 +750,54 @@ var ClaudeSdkDriver = class extends AgentDriver {
714
750
  try {
715
751
  for await (const msg of this.query) {
716
752
  if (this.abortController?.signal.aborted) break;
717
- const sessionId = "session_id" in msg ? msg.session_id : void 0;
718
- if (sessionId) {
719
- if (!this.hasSession) {
720
- this.hasSession = true;
721
- this.log.debug("session id assigned", { sessionId });
722
- }
723
- this.sessionId = sessionId;
724
- }
753
+ this.captureSessionId(msg);
725
754
  this.handleSdkMessage(msg);
726
755
  if (msg.type === "result" && !msg.is_error) {
727
756
  this.completeTurn();
728
757
  }
729
758
  }
730
759
  } catch (err) {
731
- const error = err instanceof Error ? err : new Error(String(err));
732
- if (error.name === "AbortError" || this.abortController?.signal.aborted) {
733
- this.log.info("aborted");
734
- } else {
735
- const detail = classifyClaudeSdkError({
736
- errors: [error.message],
737
- oauthCredential: this.usingOauthCredential
738
- });
739
- this.log.error("consumer error", {
740
- message: error.message,
741
- category: detail.category,
742
- retryable: detail.retryable
743
- });
744
- const surfaced = detail.category === "auth" ? new AuthError(detail) : error;
745
- this.failTurn(surfaced, detail);
746
- }
760
+ this.handleConsumerError(err);
747
761
  } finally {
748
762
  this.log.debug("query generator ended");
749
763
  this.completeTurn();
750
764
  this.query = null;
751
765
  }
752
766
  }
767
+ /** Capture the SDK session id from a message (first one assigns hasSession). */
768
+ captureSessionId(msg) {
769
+ const sessionId = "session_id" in msg ? msg.session_id : void 0;
770
+ if (sessionId) {
771
+ if (!this.hasSession) {
772
+ this.hasSession = true;
773
+ this.log.debug("session id assigned", { sessionId });
774
+ }
775
+ this.sessionId = sessionId;
776
+ }
777
+ }
778
+ /**
779
+ * Handle an error thrown by the query's async generator. Aborts are logged
780
+ * silently; everything else is classified and routed through {@link failTurn}
781
+ * (auth-shaped failures promoted to {@link AuthError}).
782
+ */
783
+ handleConsumerError(err) {
784
+ const error = err instanceof Error ? err : new Error(String(err));
785
+ if (error.name === "AbortError" || this.abortController?.signal.aborted) {
786
+ this.log.info("aborted");
787
+ return;
788
+ }
789
+ const detail = classifyClaudeSdkError({
790
+ errors: [error.message],
791
+ oauthCredential: this.usingOauthCredential
792
+ });
793
+ this.log.error("consumer error", {
794
+ message: error.message,
795
+ category: detail.category,
796
+ retryable: detail.retryable
797
+ });
798
+ const surfaced = detail.category === "auth" ? new AuthError(detail) : error;
799
+ this.failTurn(surfaced, detail);
800
+ }
753
801
  /**
754
802
  * Signal the current turn as done — idempotent per turn.
755
803
  *
@@ -834,6 +882,23 @@ var ClaudeSdkDriver = class extends AgentDriver {
834
882
  // Message handling
835
883
  // ---------------------------------------------------------------------------
836
884
  handleSdkMessage(msg) {
885
+ if (this.handleRateLimitEvent(msg)) return;
886
+ if (msg.type === "assistant") {
887
+ this.handleAssistantMessage(msg);
888
+ } else if (msg.type === "stream_event") {
889
+ this.handleStreamEvent(msg);
890
+ } else if (msg.type === "user") {
891
+ this.handleUserMessage(msg);
892
+ } else if (msg.type === "result") {
893
+ this.handleResultMessage(msg);
894
+ }
895
+ }
896
+ /**
897
+ * Surface subscription rate-limit telemetry as a structured warning log.
898
+ * Returns `true` when the message was a rate-limit event (and fully handled),
899
+ * so the caller can stop dispatching.
900
+ */
901
+ handleRateLimitEvent(msg) {
837
902
  const maybeRateLimit = msg;
838
903
  if (maybeRateLimit.type === "rate_limit_event" && maybeRateLimit.rate_limit_info) {
839
904
  const info = maybeRateLimit.rate_limit_info;
@@ -843,116 +908,149 @@ var ClaudeSdkDriver = class extends AgentDriver {
843
908
  utilization: info.utilization,
844
909
  resetsAt: info.resetsAt
845
910
  });
846
- return;
911
+ return true;
847
912
  }
848
- if (msg.type === "assistant") {
849
- const agentMsg = this.mapAssistantMessage(msg);
850
- this.emit("agent-event", { type: "message_start", message: agentMsg });
851
- if (agentMsg.toolCalls) {
852
- for (const tc of agentMsg.toolCalls) {
853
- this.emit("agent-event", {
854
- type: "tool_call",
855
- name: tc.name,
856
- tool: { name: tc.name },
857
- input: tc.input
858
- });
859
- }
860
- }
861
- this.prevText = "";
862
- this.emit("agent-event", { type: "message_end", message: agentMsg });
863
- } else if (msg.type === "stream_event") {
864
- const event = msg.event;
865
- if (event?.type === "content_block_delta" && event.delta?.type === "text_delta" && event.delta.text) {
866
- const delta = event.delta.text;
867
- this.prevText += delta;
868
- const agentMsg = {
869
- role: "assistant",
870
- content: [{ type: "text", text: this.prevText }]
871
- };
872
- this.emit("agent-event", {
873
- type: "message_update",
874
- message: agentMsg,
875
- _textDelta: delta
876
- });
877
- }
878
- } else if (msg.type === "user") {
879
- const toolResults = this.mapToolResults(msg);
880
- for (const result of toolResults) {
881
- this.emit("agent-event", {
882
- type: "tool_execution_end",
883
- toolName: result.toolName
884
- });
885
- }
886
- if (toolResults.length > 0) {
887
- this.emit("agent-event", { type: "turn_end", toolResults });
888
- }
889
- } else if (msg.type === "result") {
890
- const usage = msg.usage;
891
- if (usage) {
892
- const tokens = {};
893
- if (typeof usage.input_tokens === "number") tokens.inputTokens = usage.input_tokens;
894
- if (typeof usage.output_tokens === "number") tokens.outputTokens = usage.output_tokens;
895
- if (typeof usage.cache_read_input_tokens === "number")
896
- tokens.cacheReadTokens = usage.cache_read_input_tokens;
897
- if (typeof usage.cache_creation_input_tokens === "number")
898
- tokens.cacheCreationTokens = usage.cache_creation_input_tokens;
899
- this._lastTokens = tokens;
900
- }
901
- const modelUsage = msg.modelUsage;
902
- if (modelUsage) {
903
- const first = Object.values(modelUsage)[0];
904
- if (first?.contextWindow) this._contextWindow = first.contextWindow;
905
- }
906
- if (msg.subtype === "success" && !msg.is_error) {
907
- if (msg.result) {
908
- const agentMsg = {
909
- role: "assistant",
910
- content: msg.result
911
- };
912
- this.emit("agent-event", { type: "message_end", message: agentMsg });
913
- }
914
- this.emit("agent-event", {
915
- type: "result",
916
- subtype: msg.subtype,
917
- summary: msg.result ?? "Task completed",
918
- costUsd: msg.total_cost_usd ?? 0,
919
- ...this._lastTokens ? { tokens: this._lastTokens } : {}
920
- });
921
- } else {
922
- const looseMsg = msg;
923
- const errors = looseMsg.errors?.length ? looseMsg.errors : [];
924
- if (looseMsg.is_error) {
925
- const detail = classifyClaudeSdkError({
926
- errors,
927
- terminalReason: msg.terminal_reason,
928
- subtype: msg.subtype,
929
- oauthCredential: this.usingOauthCredential
930
- });
931
- this.log.error("turn ended with error", {
932
- subtype: msg.subtype,
933
- terminalReason: msg.terminal_reason,
934
- errorsCount: errors.length,
935
- category: detail.category,
936
- retryable: detail.retryable
937
- });
938
- const errorText = errors.join("; ") || `Agent stopped: ${msg.subtype}`;
939
- if (detail.category === "auth") {
940
- this.failTurn(new AuthError({ ...detail, message: errorText }), detail);
941
- } else if (errors.length > 0) {
942
- this.emit("agent-event", {
943
- type: "error",
944
- error: errorText,
945
- detail
946
- });
947
- }
948
- }
913
+ return false;
914
+ }
915
+ handleAssistantMessage(msg) {
916
+ const agentMsg = this.mapAssistantMessage(msg);
917
+ this.emit("agent-event", { type: "message_start", message: agentMsg });
918
+ if (agentMsg.toolCalls) {
919
+ for (const tc of agentMsg.toolCalls) {
949
920
  this.emit("agent-event", {
950
- type: "result",
951
- subtype: msg.subtype,
952
- errors
921
+ type: "tool_call",
922
+ name: tc.name,
923
+ tool: { name: tc.name },
924
+ input: tc.input
953
925
  });
954
926
  }
955
927
  }
928
+ this.prevText = "";
929
+ this.emit("agent-event", { type: "message_end", message: agentMsg });
930
+ }
931
+ handleStreamEvent(msg) {
932
+ const event = msg.event;
933
+ if (event?.type === "content_block_delta" && event.delta?.type === "text_delta" && event.delta.text) {
934
+ const delta = event.delta.text;
935
+ this.prevText += delta;
936
+ const agentMsg = {
937
+ role: "assistant",
938
+ content: [{ type: "text", text: this.prevText }]
939
+ };
940
+ this.emit("agent-event", {
941
+ type: "message_update",
942
+ message: agentMsg,
943
+ _textDelta: delta
944
+ });
945
+ }
946
+ }
947
+ handleUserMessage(msg) {
948
+ const toolResults = this.mapToolResults(msg);
949
+ for (const result of toolResults) {
950
+ this.emit("agent-event", {
951
+ type: "tool_execution_end",
952
+ toolName: result.toolName
953
+ });
954
+ }
955
+ if (toolResults.length > 0) {
956
+ this.emit("agent-event", { type: "turn_end", toolResults });
957
+ }
958
+ }
959
+ handleResultMessage(msg) {
960
+ this.captureResultUsage(msg);
961
+ if (msg.subtype === "success" && !msg.is_error) {
962
+ this.handleSuccessResult(msg);
963
+ } else {
964
+ this.handleErrorResult(msg);
965
+ }
966
+ }
967
+ /**
968
+ * Capture token usage + context-window size from a result message.
969
+ * Anthropic separates fresh prompt input from cached/cache-creation
970
+ * tokens — surface all four to consumers that want a complete picture.
971
+ */
972
+ captureResultUsage(msg) {
973
+ const usage = msg.usage;
974
+ if (usage) {
975
+ const tokens = {};
976
+ if (typeof usage.input_tokens === "number") tokens.inputTokens = usage.input_tokens;
977
+ if (typeof usage.output_tokens === "number") tokens.outputTokens = usage.output_tokens;
978
+ if (typeof usage.cache_read_input_tokens === "number")
979
+ tokens.cacheReadTokens = usage.cache_read_input_tokens;
980
+ if (typeof usage.cache_creation_input_tokens === "number")
981
+ tokens.cacheCreationTokens = usage.cache_creation_input_tokens;
982
+ this._lastTokens = tokens;
983
+ }
984
+ const modelUsage = msg.modelUsage;
985
+ if (modelUsage) {
986
+ const first = Object.values(modelUsage)[0];
987
+ if (first?.contextWindow) this._contextWindow = first.contextWindow;
988
+ }
989
+ }
990
+ /** Emit the message_end (if any) + success result event for a clean turn. */
991
+ handleSuccessResult(msg) {
992
+ if (msg.result) {
993
+ const agentMsg = {
994
+ role: "assistant",
995
+ content: msg.result
996
+ };
997
+ this.emit("agent-event", { type: "message_end", message: agentMsg });
998
+ }
999
+ this.emit("agent-event", {
1000
+ type: "result",
1001
+ subtype: msg.subtype,
1002
+ summary: msg.result ?? "Task completed",
1003
+ costUsd: msg.total_cost_usd ?? 0,
1004
+ ...this._lastTokens ? { tokens: this._lastTokens } : {}
1005
+ });
1006
+ }
1007
+ /**
1008
+ * Handle the non-clean branch (legacy `SDKResultError`, or a `success`
1009
+ * subtype carrying `is_error: true`). Read via the loose shape since the
1010
+ * second case omits `errors` on the typed variant. See devlog note
1011
+ * 2026-06-08-claude-sdk-error-result-handling.
1012
+ */
1013
+ handleErrorResult(msg) {
1014
+ const looseMsg = msg;
1015
+ const errors = looseMsg.errors?.length ? looseMsg.errors : [];
1016
+ if (looseMsg.is_error) {
1017
+ this.handleResultErrorPayload(msg, errors);
1018
+ }
1019
+ this.emit("agent-event", {
1020
+ type: "result",
1021
+ subtype: msg.subtype,
1022
+ errors
1023
+ });
1024
+ }
1025
+ /**
1026
+ * Classify + route an `is_error` result payload: auth-shaped errors throw
1027
+ * via `failTurn`; populated non-auth errors surface a normal `error` event;
1028
+ * empty errors defer to the consumer-error catch.
1029
+ */
1030
+ handleResultErrorPayload(msg, errors) {
1031
+ const detail = classifyClaudeSdkError({
1032
+ errors,
1033
+ terminalReason: msg.terminal_reason,
1034
+ subtype: msg.subtype,
1035
+ oauthCredential: this.usingOauthCredential
1036
+ });
1037
+ this.log.error("turn ended with error", {
1038
+ subtype: msg.subtype,
1039
+ terminalReason: msg.terminal_reason,
1040
+ errorsCount: errors.length,
1041
+ category: detail.category,
1042
+ retryable: detail.retryable
1043
+ });
1044
+ const errorText = errors.join("; ") || `Agent stopped: ${msg.subtype}`;
1045
+ if (detail.category === "auth") {
1046
+ this.failTurn(new AuthError({ ...detail, message: errorText }), detail);
1047
+ } else if (errors.length > 0) {
1048
+ this.emit("agent-event", {
1049
+ type: "error",
1050
+ error: errorText,
1051
+ detail
1052
+ });
1053
+ }
956
1054
  }
957
1055
  // ---------------------------------------------------------------------------
958
1056
  // Helpers