@skaile/workspaces 0.29.0 → 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.
- package/CHANGELOG.md +51 -0
- package/dist/{asset-feeds-2V7LZIG7.js → asset-feeds-IWOBYROH.js} +14 -13
- package/dist/asset-feeds-IWOBYROH.js.map +1 -0
- package/dist/asset-manager/index.js +12 -12
- package/dist/asset-manager/installer.js +11 -11
- package/dist/asset-manager/renderers.js +2 -2
- package/dist/asset-manager/src/index.d.ts +27 -0
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +1 -2
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/asset-manager/src/renderers.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +324 -226
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +3 -3
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +4 -4
- package/dist/bridge/drivers/echo.js +2 -2
- package/dist/bridge/drivers/echo.js.map +1 -1
- package/dist/bridge/drivers/gemini.js +5 -5
- package/dist/bridge/drivers/goose.js +4 -4
- package/dist/bridge/drivers/omp.js +3 -3
- package/dist/bridge/drivers/opencode.js +4 -4
- package/dist/bridge/drivers/qwen.js +5 -5
- package/dist/bridge/index.js +4 -4
- package/dist/bridge/src/drivers/claude-sdk.d.ts +64 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/echo.d.ts +1 -1
- package/dist/bridge/src/drivers/echo.d.ts.map +1 -1
- package/dist/bridge/src/error-classifier.d.ts.map +1 -1
- package/dist/bridge/src/normalizer.d.ts +5 -0
- package/dist/bridge/src/normalizer.d.ts.map +1 -1
- package/dist/{chunk-LDUNTZB6.js → chunk-26L2B6P6.js} +2 -2
- package/dist/{chunk-LDUNTZB6.js.map → chunk-26L2B6P6.js.map} +1 -1
- package/dist/{chunk-FWHOU3CX.js → chunk-2VKVWN5E.js} +6 -6
- package/dist/{chunk-FWHOU3CX.js.map → chunk-2VKVWN5E.js.map} +1 -1
- package/dist/{chunk-2FS4FPZ7.js → chunk-4AGIEU7V.js} +44 -62
- package/dist/chunk-4AGIEU7V.js.map +1 -0
- package/dist/{chunk-ZONCCO5N.js → chunk-4R6DROGN.js} +30 -32
- package/dist/chunk-4R6DROGN.js.map +1 -0
- package/dist/{chunk-3QQSSRYN.js → chunk-5DQOZFWJ.js} +416 -345
- package/dist/chunk-5DQOZFWJ.js.map +1 -0
- package/dist/{chunk-XFQ2OXYR.js → chunk-5MJJYIL4.js} +3 -3
- package/dist/{chunk-XFQ2OXYR.js.map → chunk-5MJJYIL4.js.map} +1 -1
- package/dist/{chunk-AKSR434V.js → chunk-5XAQDOMU.js} +79 -56
- package/dist/chunk-5XAQDOMU.js.map +1 -0
- package/dist/{chunk-MBOR7D65.js → chunk-67MFR5LS.js} +3 -3
- package/dist/{chunk-MBOR7D65.js.map → chunk-67MFR5LS.js.map} +1 -1
- package/dist/{chunk-7GWYRVAX.js → chunk-6LW7Q53Z.js} +162 -165
- package/dist/chunk-6LW7Q53Z.js.map +1 -0
- package/dist/{chunk-SF4GWVR5.js → chunk-6TCOYFVJ.js} +86 -55
- package/dist/chunk-6TCOYFVJ.js.map +1 -0
- package/dist/{chunk-QMONOHXT.js → chunk-74UKG2LA.js} +3 -3
- package/dist/{chunk-QMONOHXT.js.map → chunk-74UKG2LA.js.map} +1 -1
- package/dist/{chunk-JIQLLZ65.js → chunk-7MANNJ3U.js} +534 -235
- package/dist/chunk-7MANNJ3U.js.map +1 -0
- package/dist/{chunk-7R6W5EQR.js → chunk-ACXLKNIM.js} +2 -2
- package/dist/{chunk-7R6W5EQR.js.map → chunk-ACXLKNIM.js.map} +1 -1
- package/dist/{chunk-3OKP6F2J.js → chunk-AKYEI3D6.js} +9 -9
- package/dist/{chunk-3OKP6F2J.js.map → chunk-AKYEI3D6.js.map} +1 -1
- package/dist/{chunk-CMG3GJ6B.js → chunk-DAI754GK.js} +4 -4
- package/dist/{chunk-CMG3GJ6B.js.map → chunk-DAI754GK.js.map} +1 -1
- package/dist/{chunk-FENG6OO6.js → chunk-FRRTUVUM.js} +4593 -4466
- package/dist/chunk-FRRTUVUM.js.map +1 -0
- package/dist/{chunk-TV72ZJYN.js → chunk-GXC3TYMQ.js} +60 -47
- package/dist/chunk-GXC3TYMQ.js.map +1 -0
- package/dist/{chunk-IERB3UXJ.js → chunk-H5YXL4KI.js} +83 -69
- package/dist/chunk-H5YXL4KI.js.map +1 -0
- package/dist/{chunk-QDJKE557.js → chunk-HRKB2ATT.js} +64 -64
- package/dist/chunk-HRKB2ATT.js.map +1 -0
- package/dist/{chunk-ZEKWHJBB.js → chunk-IZIFMNTI.js} +3 -3
- package/dist/{chunk-ZEKWHJBB.js.map → chunk-IZIFMNTI.js.map} +1 -1
- package/dist/{chunk-24UIWON4.js → chunk-JB35MVBN.js} +167 -156
- package/dist/chunk-JB35MVBN.js.map +1 -0
- package/dist/{chunk-UIZKIUC6.js → chunk-KHZI44SS.js} +3 -3
- package/dist/chunk-KHZI44SS.js.map +1 -0
- package/dist/{chunk-5YO3H5Q4.js → chunk-KY5NY7LB.js} +3 -3
- package/dist/chunk-KY5NY7LB.js.map +1 -0
- package/dist/{chunk-MIH45XPY.js → chunk-LA2YSXEE.js} +1974 -1919
- package/dist/chunk-LA2YSXEE.js.map +1 -0
- package/dist/{chunk-IEJ5IOC3.js → chunk-LFDZYCEO.js} +4 -2
- package/dist/chunk-LFDZYCEO.js.map +1 -0
- package/dist/{chunk-2NOE4AGD.js → chunk-LIK75OJ5.js} +3 -3
- package/dist/{chunk-2NOE4AGD.js.map → chunk-LIK75OJ5.js.map} +1 -1
- package/dist/{chunk-PAYAFNXG.js → chunk-NGJ6E344.js} +104 -74
- package/dist/chunk-NGJ6E344.js.map +1 -0
- package/dist/{chunk-5V5KZQIC.js → chunk-PVMAIVNL.js} +4 -4
- package/dist/{chunk-5V5KZQIC.js.map → chunk-PVMAIVNL.js.map} +1 -1
- package/dist/{chunk-HK5FRWG6.js → chunk-R6O6YWU7.js} +2 -2
- package/dist/{chunk-HK5FRWG6.js.map → chunk-R6O6YWU7.js.map} +1 -1
- package/dist/{chunk-PRLD7EXG.js → chunk-SBGHNXJD.js} +2 -2
- package/dist/{chunk-PRLD7EXG.js.map → chunk-SBGHNXJD.js.map} +1 -1
- package/dist/{chunk-5RBPPBEK.js → chunk-SCJD3FMO.js} +4 -4
- package/dist/{chunk-5RBPPBEK.js.map → chunk-SCJD3FMO.js.map} +1 -1
- package/dist/{chunk-BZ2JU7IP.js → chunk-TU4VZULO.js} +5 -5
- package/dist/{chunk-BZ2JU7IP.js.map → chunk-TU4VZULO.js.map} +1 -1
- package/dist/{chunk-CBNMIKUO.js → chunk-VGFYUD3T.js} +158 -108
- package/dist/chunk-VGFYUD3T.js.map +1 -0
- package/dist/{chunk-Z3XXKR5E.js → chunk-WDMH4UMD.js} +4 -6
- package/dist/chunk-WDMH4UMD.js.map +1 -0
- package/dist/{chunk-W7W66MDZ.js → chunk-X46FY45B.js} +44 -42
- package/dist/chunk-X46FY45B.js.map +1 -0
- package/dist/{chunk-JKNWJ64A.js → chunk-XGCXFX7X.js} +2 -2
- package/dist/{chunk-JKNWJ64A.js.map → chunk-XGCXFX7X.js.map} +1 -1
- package/dist/{chunk-TDZGENVP.js → chunk-XOAF5QAE.js} +2094 -1901
- package/dist/chunk-XOAF5QAE.js.map +1 -0
- package/dist/{chunk-FQHHCICT.js → chunk-XVDXGQ55.js} +226 -226
- package/dist/chunk-XVDXGQ55.js.map +1 -0
- package/dist/{chunk-M4KLIEIJ.js → chunk-YBJLYT4S.js} +3 -3
- package/dist/chunk-YBJLYT4S.js.map +1 -0
- package/dist/{chunk-OKRUTSG7.js → chunk-ZDKJHQY2.js} +2 -2
- package/dist/{chunk-OKRUTSG7.js.map → chunk-ZDKJHQY2.js.map} +1 -1
- package/dist/{chunk-UBCZVONU.js → chunk-ZME3JDA6.js} +3 -3
- package/dist/{chunk-UBCZVONU.js.map → chunk-ZME3JDA6.js.map} +1 -1
- package/dist/cli/index.js +2811 -2662
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/asset-feeds.d.ts +0 -9
- package/dist/cli/src/asset-feeds.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/config.d.ts.map +1 -1
- package/dist/cli/src/commands/deploy.d.ts.map +1 -1
- package/dist/cli/src/commands/integration.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/manage.d.ts.map +1 -1
- package/dist/cli/src/commands/preset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +1 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/show.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/ensure-sources.d.ts.map +1 -1
- package/dist/cli/src/flow-discovery.d.ts.map +1 -1
- package/dist/cli/src/open-registry.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/index.d.ts +4 -6
- package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/paths.d.ts +0 -2
- package/dist/cli/src/plugin-store/paths.d.ts.map +1 -1
- package/dist/cli/src/setup.d.ts.map +1 -1
- package/dist/connectors/config.js +9 -9
- package/dist/connectors/index.js +12 -12
- package/dist/connectors/rclone.js +2 -2
- package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
- package/dist/connectors/src/connector-registry.d.ts.map +1 -1
- package/dist/connectors/src/connector-types.d.ts +1 -1
- package/dist/connectors/src/connector-types.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +5 -5
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
- package/dist/{connectors-PTCSHCHZ.js → connectors-DY7UBBV5.js} +3 -3
- package/dist/{connectors-PTCSHCHZ.js.map → connectors-DY7UBBV5.js.map} +1 -1
- package/dist/connectors-shared/src/index.d.ts +1 -1
- package/dist/connectors-shared/src/index.d.ts.map +1 -1
- package/dist/core/index.js +8 -8
- package/dist/core/logging.js +1 -1
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.js +2 -2
- package/dist/core/runtime-assets.js +5 -5
- package/dist/core/src/lock.d.ts +0 -9
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/logging/create-logger.d.ts.map +1 -1
- package/dist/core/src/logging/index.d.ts +11 -11
- package/dist/core/src/logging/index.d.ts.map +1 -1
- package/dist/core/src/logging/log-store.d.ts.map +1 -1
- package/dist/core/src/logging/sinks/no-op-sink.d.ts.map +1 -1
- package/dist/core/src/logging/sinks/sqlite-sink.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +6 -0
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/publish-manifest.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts +0 -12
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/runtime-assets.d.ts.map +1 -1
- package/dist/core/src/store.d.ts +1 -1
- package/dist/core/src/store.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +0 -27
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/store.js +1 -1
- package/dist/core/workspace-config.js +4 -4
- package/dist/deploy/index.js +8 -8
- package/dist/discovery/index.js +6 -6
- package/dist/discovery/src/asset-kind-registry.d.ts +1 -1
- package/dist/discovery/src/asset-kind-registry.d.ts.map +1 -1
- package/dist/discovery/src/builtin-providers.d.ts.map +1 -1
- package/dist/discovery/src/discover-manifest.d.ts +1 -1
- package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
- package/dist/discovery/src/discover.d.ts +30 -3
- package/dist/discovery/src/discover.d.ts.map +1 -1
- package/dist/discovery/src/domains.d.ts +144 -0
- package/dist/discovery/src/domains.d.ts.map +1 -0
- package/dist/discovery/src/index.d.ts +9 -7
- package/dist/discovery/src/index.d.ts.map +1 -1
- package/dist/discovery/src/source-config.d.ts +1 -1
- package/dist/discovery/src/source-config.d.ts.map +1 -1
- package/dist/discovery/src/tree-entries.d.ts +13 -1
- package/dist/discovery/src/tree-entries.d.ts.map +1 -1
- package/dist/ensure-sources-6GW6UBXY.js +84 -0
- package/dist/ensure-sources-6GW6UBXY.js.map +1 -0
- package/dist/factory-assets/connectors/deploy/adapter.d.ts +1 -1
- package/dist/factory-assets/connectors/deploy/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/deploy.js +12 -12
- package/dist/factory-assets/connectors/devserver/adapter.d.ts +1 -1
- package/dist/factory-assets/connectors/devserver/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/devserver.js +12 -12
- package/dist/factory-assets/connectors/flow/adapter.d.ts +16 -2
- package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/adapter.js +12 -12
- package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine/index.d.ts +3 -3
- package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine.js +9 -9
- package/dist/factory-assets/connectors/flow/index.d.ts +1 -1
- package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +15 -15
- package/dist/factory-assets/connectors/flow.js +12 -12
- package/dist/factory-assets/connectors/git/driver.d.ts +32 -0
- package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +12 -12
- package/dist/factory-assets/connectors/gmail/adapter.d.ts +1 -1
- package/dist/factory-assets/connectors/gmail/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/gmail.js +12 -12
- package/dist/factory-assets/connectors/googledrive.js +12 -12
- package/dist/factory-assets/connectors/local/driver.d.ts +1 -2
- package/dist/factory-assets/connectors/local/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/local.js +12 -12
- package/dist/factory-assets/connectors/mattermost/adapter.d.ts +1 -1
- package/dist/factory-assets/connectors/mattermost/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/mattermost.js +12 -12
- package/dist/factory-assets/connectors/memory/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/memory.js +12 -12
- package/dist/factory-assets/connectors/minio/adapter.d.ts +1 -1
- package/dist/factory-assets/connectors/minio/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/minio.js +12 -12
- package/dist/factory-assets/connectors/postgres/adapter.d.ts +6 -1
- package/dist/factory-assets/connectors/postgres/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/postgres.js +12 -12
- package/dist/factory-assets/connectors/s3/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/s3.js +12 -12
- package/dist/factory-assets/connectors/sharepoint.js +12 -12
- package/dist/factory-assets/connectors/sqlite/adapter.d.ts +1 -1
- package/dist/factory-assets/connectors/sqlite/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/sqlite.js +12 -12
- package/dist/factory-assets/connectors/static-server/adapter.d.ts +6 -1
- package/dist/factory-assets/connectors/static-server/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/static-server.js +12 -12
- package/dist/factory-assets/connectors/tunnel/adapter.d.ts +1 -1
- package/dist/factory-assets/connectors/tunnel/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/tunnel.js +12 -12
- package/dist/factory-assets/connectors/webdav.js +12 -12
- package/dist/factory-assets/connectors/xstate/adapter.d.ts +1 -1
- package/dist/factory-assets/connectors/xstate/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/xstate-store/adapter.d.ts +7 -0
- package/dist/factory-assets/connectors/xstate-store/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/xstate-store.js +12 -12
- package/dist/factory-assets/connectors/xstate.js +12 -12
- package/dist/flows-JXO3KGC2.js +7 -0
- package/dist/{flows-L3GHQD7F.js.map → flows-JXO3KGC2.js.map} +1 -1
- package/dist/library/index.js +13 -13
- package/dist/library/install.js +9 -9
- package/dist/library/src/config.d.ts.map +1 -1
- package/dist/library/src/index.d.ts +27 -27
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/install/index.d.ts +2 -2
- package/dist/library/src/install/index.d.ts.map +1 -1
- package/dist/library/src/install/install-from-manifest.d.ts +0 -21
- package/dist/library/src/install/install-from-manifest.d.ts.map +1 -1
- package/dist/library/src/knowledge/index.d.ts +2 -2
- package/dist/library/src/knowledge/index.d.ts.map +1 -1
- package/dist/library/src/knowledge/knowledge-kind-provider.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts +2 -2
- package/dist/library/src/local/library.d.ts.map +1 -1
- package/dist/library/src/local/store-paths.d.ts.map +1 -1
- package/dist/library/src/pin-resolver.d.ts.map +1 -1
- package/dist/library/src/preset/apply.d.ts +2 -2
- package/dist/library/src/preset/apply.d.ts.map +1 -1
- package/dist/library/src/preset/index.d.ts +10 -10
- package/dist/library/src/preset/index.d.ts.map +1 -1
- package/dist/library/src/preset/parse.d.ts.map +1 -1
- package/dist/library/src/preset/resolve-item.d.ts +1 -1
- package/dist/library/src/preset/resolve-item.d.ts.map +1 -1
- package/dist/library/src/preset/upgrade.d.ts +1 -1
- package/dist/library/src/preset/upgrade.d.ts.map +1 -1
- package/dist/library/src/remote/index.d.ts +5 -5
- package/dist/library/src/remote/index.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/library/src/remote/rest-catalog-source.d.ts +1 -1
- package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
- package/dist/library/src/sync/driver.d.ts +1 -1
- package/dist/library/src/sync/driver.d.ts.map +1 -1
- package/dist/library/src/sync/git-driver.d.ts +1 -1
- package/dist/library/src/sync/git-driver.d.ts.map +1 -1
- package/dist/library/src/sync/local-driver.d.ts +1 -1
- package/dist/library/src/sync/local-driver.d.ts.map +1 -1
- package/dist/library/src/workspace-config.d.ts +0 -9
- package/dist/library/src/workspace-config.d.ts.map +1 -1
- package/dist/open-library-SH6NCJM2.js +23 -0
- package/dist/{open-library-3VJY74LQ.js.map → open-library-SH6NCJM2.js.map} +1 -1
- package/dist/paths-YSXGJ7TO.js +15 -0
- package/dist/{paths-CE66L3AL.js.map → paths-YSXGJ7TO.js.map} +1 -1
- package/dist/plugin-registry/src/targets.d.ts +2 -3
- package/dist/plugin-registry/src/targets.d.ts.map +1 -1
- package/dist/{plugin-store-GL5VKYUA.js → plugin-store-2KMDUF7R.js} +11 -14
- package/dist/plugin-store-2KMDUF7R.js.map +1 -0
- package/dist/plugins/index.js +1 -1
- package/dist/plugins/src/asset-kind-registry.d.ts +1 -1
- package/dist/plugins/src/asset-kind-registry.d.ts.map +1 -1
- package/dist/plugins/src/catalog-source.d.ts +5 -0
- package/dist/plugins/src/catalog-source.d.ts.map +1 -1
- package/dist/plugins/src/index.d.ts +5 -5
- package/dist/plugins/src/index.d.ts.map +1 -1
- package/dist/{provider-GAWKFQ3T.js → provider-ZPT443IX.js} +18 -16
- package/dist/provider-ZPT443IX.js.map +1 -0
- package/dist/resolver/index.js +1 -1
- package/dist/resolver/src/preamble.d.ts.map +1 -1
- package/dist/runner/index.js +17 -17
- package/dist/runner/src/builtin-capabilities.d.ts +12 -0
- package/dist/runner/src/builtin-capabilities.d.ts.map +1 -1
- package/dist/runner/src/capability-registry.d.ts.map +1 -1
- package/dist/runner/src/compaction/index.d.ts +0 -4
- package/dist/runner/src/compaction/index.d.ts.map +1 -1
- package/dist/runner/src/compaction/orchestrator.d.ts +23 -2
- package/dist/runner/src/compaction/orchestrator.d.ts.map +1 -1
- package/dist/runner/src/composition/compile.d.ts.map +1 -1
- package/dist/runner/src/composition/index.d.ts +4 -4
- package/dist/runner/src/composition/index.d.ts.map +1 -1
- package/dist/runner/src/composition/resolve.d.ts.map +1 -1
- package/dist/runner/src/composition/types.d.ts +2 -2
- package/dist/runner/src/composition/types.d.ts.map +1 -1
- package/dist/runner/src/config.d.ts +2 -2
- package/dist/runner/src/config.d.ts.map +1 -1
- package/dist/runner/src/define-capability.d.ts +1 -1
- package/dist/runner/src/define-capability.d.ts.map +1 -1
- package/dist/runner/src/external-mcp.d.ts.map +1 -1
- package/dist/runner/src/index.d.ts +9 -9
- package/dist/runner/src/index.d.ts.map +1 -1
- package/dist/runner/src/logging-bootstrap.d.ts +1 -1
- package/dist/runner/src/logging-bootstrap.d.ts.map +1 -1
- package/dist/runner/src/manifest.d.ts.map +1 -1
- package/dist/runner/src/resource-handler.d.ts.map +1 -1
- package/dist/runner/src/resources.d.ts.map +1 -1
- package/dist/runner/src/runner-capabilities.d.ts +25 -0
- package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-builder.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +12 -12
- package/dist/sdk/bridge.js +4 -4
- package/dist/sdk/core.js +8 -8
- package/dist/sdk/flow.js +9 -9
- package/dist/sdk/index.js +92 -76
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +1 -1
- package/dist/sdk/runner.js +17 -17
- package/dist/sdk/session.js +1 -1
- package/dist/sdk/src/agent-session.d.ts +8 -0
- package/dist/sdk/src/agent-session.d.ts.map +1 -1
- package/dist/sdk/src/factory.d.ts.map +1 -1
- package/dist/sdk/src/index.d.ts +2 -2
- package/dist/sdk/src/index.d.ts.map +1 -1
- package/dist/sdk/store.js +1 -1
- package/dist/sdk/telemetry.js +1 -1
- package/dist/secrets/index.js +2 -2
- package/dist/secrets/src/index.d.ts +8 -8
- package/dist/secrets/src/index.d.ts.map +1 -1
- package/dist/secrets/src/lifecycle.d.ts +1 -2
- package/dist/secrets/src/lifecycle.d.ts.map +1 -1
- package/dist/secrets/src/providers/env.d.ts +1 -1
- package/dist/secrets/src/providers/env.d.ts.map +1 -1
- package/dist/secrets/src/providers/local.d.ts +1 -1
- package/dist/secrets/src/providers/local.d.ts.map +1 -1
- package/dist/secrets/src/router.d.ts +1 -1
- package/dist/secrets/src/router.d.ts.map +1 -1
- package/dist/session/index.js +1 -1
- package/dist/session/src/mentions.d.ts.map +1 -1
- package/dist/{sessions-2IUX4P3P.js → sessions-DICDEONJ.js} +3 -3
- package/dist/{sessions-2IUX4P3P.js.map → sessions-DICDEONJ.js.map} +1 -1
- package/dist/{setup-4YMN2BDU.js → setup-6MQ6QWML.js} +198 -175
- package/dist/setup-6MQ6QWML.js.map +1 -0
- package/dist/skills-BMI6H7HI.js +7 -0
- package/dist/{skills-6HJ3WINN.js.map → skills-BMI6H7HI.js.map} +1 -1
- package/dist/store/index.js +1 -1
- package/dist/store/src/index.d.ts +1 -1
- package/dist/store/src/index.d.ts.map +1 -1
- package/dist/store/src/resource-client.d.ts +1 -1
- package/dist/store/src/resource-client.d.ts.map +1 -1
- package/dist/store/src/vue.d.ts.map +1 -1
- package/dist/store/vue.js.map +1 -1
- package/dist/store-client-LDYF4TK4.js +15 -0
- package/dist/{store-client-BCP5LCAZ.js.map → store-client-LDYF4TK4.js.map} +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/src/context.d.ts.map +1 -1
- package/dist/telemetry/src/index.d.ts +3 -3
- package/dist/telemetry/src/index.d.ts.map +1 -1
- package/dist/telemetry/src/otel/gen-ai.d.ts +1 -1
- package/dist/telemetry/src/otel/gen-ai.d.ts.map +1 -1
- package/dist/telemetry/src/otel/provider.d.ts.map +1 -1
- package/dist/transport/src/index.d.ts +1 -1
- package/dist/transport/src/index.d.ts.map +1 -1
- package/dist/tui/index.js +251 -218
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/src/index.d.ts +2 -2
- package/dist/tui/src/index.d.ts.map +1 -1
- package/dist/tui/src/repl-renderer.d.ts.map +1 -1
- package/dist/tui/src/repl-session.d.ts +1 -1
- package/dist/tui/src/repl-session.d.ts.map +1 -1
- package/dist/tui/src/repl.d.ts.map +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/envelope.d.ts +1 -1
- package/dist/types/src/envelope.d.ts.map +1 -1
- package/dist/types/src/manifests/agent.d.ts.map +1 -1
- package/dist/types/src/manifests/connector.d.ts.map +1 -1
- package/dist/types/src/manifests/contract.d.ts.map +1 -1
- package/dist/types/src/manifests/index.d.ts +16 -16
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/types/src/manifests/mcp-server.d.ts.map +1 -1
- package/dist/types/src/manifests/mount.d.ts.map +1 -1
- package/dist/types/src/manifests/persona.d.ts.map +1 -1
- package/dist/types/src/manifests/preset.d.ts +0 -18
- package/dist/types/src/manifests/preset.d.ts.map +1 -1
- package/dist/types/src/manifests/prompt.d.ts.map +1 -1
- package/dist/types/src/manifests/ruleset.d.ts.map +1 -1
- package/dist/types/src/manifests/skill.d.ts.map +1 -1
- package/dist/validator-VF5M764T.js +5 -0
- package/dist/{validator-47SQUW3J.js.map → validator-VF5M764T.js.map} +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +6 -6
- package/dist/workspace-plugin/adapters/omp.js +76 -69
- package/dist/workspace-plugin/adapters/omp.js.map +1 -1
- package/dist/workspace-plugin/index.js +2 -2
- package/dist/workspace-plugin/src/adapters/omp.d.ts.map +1 -1
- package/dist/workspace-plugin/src/tools/connectors.d.ts.map +1 -1
- package/dist/workspace-plugin/src/tools/flows.d.ts.map +1 -1
- package/dist/workspace-plugin/src/tools/sessions.d.ts.map +1 -1
- package/dist/workspace-plugin/src/tools/skills.d.ts.map +1 -1
- package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
- package/package.json +1 -2
- package/dist/asset-feeds-2V7LZIG7.js.map +0 -1
- package/dist/chunk-24UIWON4.js.map +0 -1
- package/dist/chunk-2FS4FPZ7.js.map +0 -1
- package/dist/chunk-3QQSSRYN.js.map +0 -1
- package/dist/chunk-5YO3H5Q4.js.map +0 -1
- package/dist/chunk-7GWYRVAX.js.map +0 -1
- package/dist/chunk-AKSR434V.js.map +0 -1
- package/dist/chunk-CBNMIKUO.js.map +0 -1
- package/dist/chunk-FENG6OO6.js.map +0 -1
- package/dist/chunk-FQHHCICT.js.map +0 -1
- package/dist/chunk-IEJ5IOC3.js.map +0 -1
- package/dist/chunk-IERB3UXJ.js.map +0 -1
- package/dist/chunk-JIQLLZ65.js.map +0 -1
- package/dist/chunk-M4KLIEIJ.js.map +0 -1
- package/dist/chunk-MIH45XPY.js.map +0 -1
- package/dist/chunk-PAYAFNXG.js.map +0 -1
- package/dist/chunk-QDJKE557.js.map +0 -1
- package/dist/chunk-SF4GWVR5.js.map +0 -1
- package/dist/chunk-TDZGENVP.js.map +0 -1
- package/dist/chunk-TV72ZJYN.js.map +0 -1
- package/dist/chunk-UIZKIUC6.js.map +0 -1
- package/dist/chunk-W7W66MDZ.js.map +0 -1
- package/dist/chunk-Z3XXKR5E.js.map +0 -1
- package/dist/chunk-ZONCCO5N.js.map +0 -1
- package/dist/ensure-sources-BNSRO5G7.js +0 -74
- package/dist/ensure-sources-BNSRO5G7.js.map +0 -1
- package/dist/flows-L3GHQD7F.js +0 -7
- package/dist/open-library-3VJY74LQ.js +0 -23
- package/dist/paths-CE66L3AL.js +0 -15
- package/dist/plugin-store-GL5VKYUA.js.map +0 -1
- package/dist/provider-GAWKFQ3T.js.map +0 -1
- package/dist/setup-4YMN2BDU.js.map +0 -1
- package/dist/skills-6HJ3WINN.js +0 -7
- package/dist/store-client-BCP5LCAZ.js +0 -15
- 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-
|
|
4
|
-
import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
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: "
|
|
951
|
-
|
|
952
|
-
|
|
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
|