@skaile/workspaces 5.6.1 → 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +176 -0
- package/README.md +4 -2
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-LU7NHOAP.js → asset-feeds-EYRZR4K5.js} +55 -31
- package/dist/asset-feeds-EYRZR4K5.js.map +1 -0
- package/dist/asset-manager/catalog-deployer.js +10 -10
- package/dist/asset-manager/index.js +16 -16
- package/dist/asset-manager/installer.js +12 -12
- package/dist/asset-manager/renderers.js +11 -11
- package/dist/asset-manager/src/index.d.ts +364 -30
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/install-agent.d.ts +11 -0
- package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +6 -3
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +148 -212
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +91 -67
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +16 -17
- package/dist/bridge/drivers/continue.js.map +1 -1
- package/dist/bridge/drivers/echo.js +4 -4
- package/dist/bridge/drivers/gemini.js +8 -8
- package/dist/bridge/drivers/goose.js +16 -17
- package/dist/bridge/drivers/goose.js.map +1 -1
- package/dist/bridge/drivers/omp.js +68 -104
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +16 -17
- package/dist/bridge/drivers/opencode.js.map +1 -1
- package/dist/bridge/drivers/qwen.js +8 -8
- package/dist/bridge/index.js +17 -18
- package/dist/bridge/src/codex/managed-driver.d.ts +13 -10
- package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -1
- package/dist/bridge/src/drivers/_subprocess-cli.d.ts +12 -2
- package/dist/bridge/src/drivers/_subprocess-cli.d.ts.map +1 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts +37 -62
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/codex.d.ts +26 -10
- package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
- package/dist/bridge/src/drivers/continue.d.ts +2 -2
- package/dist/bridge/src/drivers/continue.d.ts.map +1 -1
- package/dist/bridge/src/drivers/gemini.d.ts +2 -2
- package/dist/bridge/src/drivers/gemini.d.ts.map +1 -1
- package/dist/bridge/src/drivers/goose.d.ts +2 -2
- package/dist/bridge/src/drivers/goose.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp.d.ts +24 -35
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/drivers/opencode.d.ts +2 -2
- package/dist/bridge/src/drivers/opencode.d.ts.map +1 -1
- package/dist/bridge/src/drivers/recovery-policy.d.ts +79 -0
- package/dist/bridge/src/drivers/recovery-policy.d.ts.map +1 -0
- package/dist/bridge/src/index.d.ts +1 -0
- package/dist/bridge/src/index.d.ts.map +1 -1
- package/dist/bridge/src/reconfigure-ledger.d.ts +117 -0
- package/dist/bridge/src/reconfigure-ledger.d.ts.map +1 -0
- package/dist/bridge/src/types.d.ts +57 -6
- package/dist/bridge/src/types.d.ts.map +1 -1
- package/dist/{chunk-OLLAQLFJ.js → chunk-2FRUUDZY.js} +5 -5
- package/dist/{chunk-OLLAQLFJ.js.map → chunk-2FRUUDZY.js.map} +1 -1
- package/dist/{chunk-SDFROXSA.js → chunk-2LWYNQK7.js} +3 -3
- package/dist/{chunk-SDFROXSA.js.map → chunk-2LWYNQK7.js.map} +1 -1
- package/dist/{chunk-TZCQ7ZWQ.js → chunk-36AFURKZ.js} +10 -11
- package/dist/chunk-36AFURKZ.js.map +1 -0
- package/dist/{chunk-MX3UQXLU.js → chunk-4MQS7CAF.js} +256 -92
- package/dist/chunk-4MQS7CAF.js.map +1 -0
- package/dist/{chunk-45VFGT7A.js → chunk-4PTSR4UU.js} +3 -3
- package/dist/{chunk-45VFGT7A.js.map → chunk-4PTSR4UU.js.map} +1 -1
- package/dist/{chunk-VX3INFBA.js → chunk-6GRX5L6A.js} +5 -5
- package/dist/{chunk-VX3INFBA.js.map → chunk-6GRX5L6A.js.map} +1 -1
- package/dist/{chunk-NFGRW3L7.js → chunk-7RGTAEG6.js} +3 -3
- package/dist/{chunk-NFGRW3L7.js.map → chunk-7RGTAEG6.js.map} +1 -1
- package/dist/{chunk-5B5IZVEP.js → chunk-AWQYXZVG.js} +15 -6
- package/dist/chunk-AWQYXZVG.js.map +1 -0
- package/dist/{chunk-XBSQ4KMC.js → chunk-B4X2N7JQ.js} +205 -3
- package/dist/chunk-B4X2N7JQ.js.map +1 -0
- package/dist/{chunk-FRHE7FFB.js → chunk-B6GIW55K.js} +5 -3
- package/dist/chunk-B6GIW55K.js.map +1 -0
- package/dist/{chunk-LLKKLKZJ.js → chunk-BJNUNQAW.js} +3 -3
- package/dist/{chunk-LLKKLKZJ.js.map → chunk-BJNUNQAW.js.map} +1 -1
- package/dist/{chunk-7ZHLYXTI.js → chunk-BTE2V4IW.js} +3 -3
- package/dist/{chunk-7ZHLYXTI.js.map → chunk-BTE2V4IW.js.map} +1 -1
- package/dist/{chunk-ZBBM6O6P.js → chunk-CGT45WN7.js} +3 -3
- package/dist/{chunk-ZBBM6O6P.js.map → chunk-CGT45WN7.js.map} +1 -1
- package/dist/{chunk-47ZD34KB.js → chunk-CIFS5K6T.js} +3 -3
- package/dist/{chunk-47ZD34KB.js.map → chunk-CIFS5K6T.js.map} +1 -1
- package/dist/{chunk-BTISGSK4.js → chunk-CKQEIY43.js} +4 -4
- package/dist/{chunk-BTISGSK4.js.map → chunk-CKQEIY43.js.map} +1 -1
- package/dist/{chunk-KXTO7HON.js → chunk-EAZECHPM.js} +3 -3
- package/dist/{chunk-KXTO7HON.js.map → chunk-EAZECHPM.js.map} +1 -1
- package/dist/{chunk-VKSXST23.js → chunk-EF7NPDDU.js} +4 -4
- package/dist/{chunk-VKSXST23.js.map → chunk-EF7NPDDU.js.map} +1 -1
- package/dist/chunk-EPBKISS5.js +84 -0
- package/dist/chunk-EPBKISS5.js.map +1 -0
- package/dist/{chunk-VJENKWXF.js → chunk-F2EKONM7.js} +3 -3
- package/dist/{chunk-VJENKWXF.js.map → chunk-F2EKONM7.js.map} +1 -1
- package/dist/{chunk-DMLDYFDS.js → chunk-F3RDEH5U.js} +7 -4
- package/dist/chunk-F3RDEH5U.js.map +1 -0
- package/dist/{chunk-UAP2XHRF.js → chunk-FTJJO3EM.js} +39 -29
- package/dist/chunk-FTJJO3EM.js.map +1 -0
- package/dist/{chunk-2GRB5ITE.js → chunk-FVJK4QWM.js} +4 -4
- package/dist/{chunk-2GRB5ITE.js.map → chunk-FVJK4QWM.js.map} +1 -1
- package/dist/{chunk-AOAZCSDI.js → chunk-FZNG4V4J.js} +16 -30
- package/dist/chunk-FZNG4V4J.js.map +1 -0
- package/dist/{chunk-BF33SCLY.js → chunk-GB7WDMH2.js} +4 -4
- package/dist/{chunk-BF33SCLY.js.map → chunk-GB7WDMH2.js.map} +1 -1
- package/dist/{chunk-NARITJS2.js → chunk-GCICGXDD.js} +3 -3
- package/dist/{chunk-NARITJS2.js.map → chunk-GCICGXDD.js.map} +1 -1
- package/dist/{chunk-PA7WLID3.js → chunk-GTILM2CI.js} +56 -5
- package/dist/chunk-GTILM2CI.js.map +1 -0
- package/dist/{chunk-WIHQWVWL.js → chunk-GXXFLBUQ.js} +26 -27
- package/dist/chunk-GXXFLBUQ.js.map +1 -0
- package/dist/{chunk-PTO2YDDG.js → chunk-H7QUDDKH.js} +1337 -168
- package/dist/chunk-H7QUDDKH.js.map +1 -0
- package/dist/{chunk-I4QBZLOR.js → chunk-HG34RNTK.js} +7 -13
- package/dist/chunk-HG34RNTK.js.map +1 -0
- package/dist/{chunk-65EYRFZJ.js → chunk-HYDRDNKN.js} +10 -6
- package/dist/chunk-HYDRDNKN.js.map +1 -0
- package/dist/{chunk-4GNJELPH.js → chunk-I6NLLJHZ.js} +2 -2
- package/dist/{chunk-4GNJELPH.js.map → chunk-I6NLLJHZ.js.map} +1 -1
- package/dist/{chunk-VSQFGU5D.js → chunk-ILFGVSTJ.js} +3 -3
- package/dist/{chunk-VSQFGU5D.js.map → chunk-ILFGVSTJ.js.map} +1 -1
- package/dist/{chunk-2XFUXGV6.js → chunk-IONAUNWB.js} +3 -3
- package/dist/{chunk-2XFUXGV6.js.map → chunk-IONAUNWB.js.map} +1 -1
- package/dist/{chunk-CT6NQSA4.js → chunk-ISHJITXJ.js} +3 -3
- package/dist/{chunk-CT6NQSA4.js.map → chunk-ISHJITXJ.js.map} +1 -1
- package/dist/chunk-IZCR27MU.js +60 -0
- package/dist/chunk-IZCR27MU.js.map +1 -0
- package/dist/{chunk-2W4LBLIN.js → chunk-JAKOMFC6.js} +68 -20
- package/dist/chunk-JAKOMFC6.js.map +1 -0
- package/dist/{chunk-MFHKHXDE.js → chunk-L5VSIPQD.js} +5 -5
- package/dist/chunk-L5VSIPQD.js.map +1 -0
- package/dist/{chunk-RGXVQZOV.js → chunk-LEMHVDET.js} +89 -67
- package/dist/chunk-LEMHVDET.js.map +1 -0
- package/dist/{chunk-37FTLYFP.js → chunk-LNFKL23K.js} +3 -3
- package/dist/{chunk-37FTLYFP.js.map → chunk-LNFKL23K.js.map} +1 -1
- package/dist/{chunk-6NPINANG.js → chunk-LSXHED6I.js} +6 -6
- package/dist/{chunk-6NPINANG.js.map → chunk-LSXHED6I.js.map} +1 -1
- package/dist/{chunk-XUUYAS3Z.js → chunk-M3WPBTGJ.js} +3 -3
- package/dist/{chunk-XUUYAS3Z.js.map → chunk-M3WPBTGJ.js.map} +1 -1
- package/dist/{chunk-QZLWJETK.js → chunk-MGGFBZWA.js} +3 -3
- package/dist/{chunk-QZLWJETK.js.map → chunk-MGGFBZWA.js.map} +1 -1
- package/dist/{chunk-QD772CGQ.js → chunk-NPLPCRW5.js} +5 -5
- package/dist/{chunk-QD772CGQ.js.map → chunk-NPLPCRW5.js.map} +1 -1
- package/dist/{chunk-QCI6D7E4.js → chunk-NUELZWCF.js} +266 -170
- package/dist/chunk-NUELZWCF.js.map +1 -0
- package/dist/{chunk-GP6ZL7PE.js → chunk-OFBIWVCR.js} +3 -3
- package/dist/{chunk-GP6ZL7PE.js.map → chunk-OFBIWVCR.js.map} +1 -1
- package/dist/{chunk-D2V42LUE.js → chunk-P23M65LB.js} +93 -52
- package/dist/chunk-P23M65LB.js.map +1 -0
- package/dist/{chunk-46OVMT76.js → chunk-PMECEZK3.js} +16 -10
- package/dist/chunk-PMECEZK3.js.map +1 -0
- package/dist/{chunk-27HS2DHB.js → chunk-PTSGWKHR.js} +4 -4
- package/dist/{chunk-27HS2DHB.js.map → chunk-PTSGWKHR.js.map} +1 -1
- package/dist/{chunk-OKGUDNDT.js → chunk-Q6E6FM7P.js} +35 -33
- package/dist/chunk-Q6E6FM7P.js.map +1 -0
- package/dist/{chunk-PJS2YWGG.js → chunk-QOP6KDFR.js} +8 -9
- package/dist/chunk-QOP6KDFR.js.map +1 -0
- package/dist/{chunk-AO7VJ6G6.js → chunk-QVNRCDTV.js} +29 -8
- package/dist/chunk-QVNRCDTV.js.map +1 -0
- package/dist/{chunk-VBBBZDI7.js → chunk-S53LOR7B.js} +3 -3
- package/dist/{chunk-VBBBZDI7.js.map → chunk-S53LOR7B.js.map} +1 -1
- package/dist/{chunk-KUFNKVBM.js → chunk-SH5D7U7N.js} +20 -7
- package/dist/{chunk-KUFNKVBM.js.map → chunk-SH5D7U7N.js.map} +1 -1
- package/dist/{chunk-SX4UIDKT.js → chunk-UAROCOXF.js} +3 -3
- package/dist/{chunk-SX4UIDKT.js.map → chunk-UAROCOXF.js.map} +1 -1
- package/dist/{chunk-JMKB7IB4.js → chunk-UMVKJM4Q.js} +4 -4
- package/dist/chunk-UMVKJM4Q.js.map +1 -0
- package/dist/{chunk-HCYS7GFP.js → chunk-V2DXZYBB.js} +3 -3
- package/dist/{chunk-HCYS7GFP.js.map → chunk-V2DXZYBB.js.map} +1 -1
- package/dist/{chunk-KYXOGHY6.js → chunk-W5DWWE4Y.js} +4 -4
- package/dist/{chunk-KYXOGHY6.js.map → chunk-W5DWWE4Y.js.map} +1 -1
- package/dist/{chunk-FK6HPLQA.js → chunk-WTQ3TATB.js} +3 -3
- package/dist/{chunk-FK6HPLQA.js.map → chunk-WTQ3TATB.js.map} +1 -1
- package/dist/{chunk-OGLDAJFL.js → chunk-Y4N2NUZD.js} +4 -4
- package/dist/{chunk-OGLDAJFL.js.map → chunk-Y4N2NUZD.js.map} +1 -1
- package/dist/{chunk-XOGG7VDZ.js → chunk-Y7QA2OLD.js} +17 -25
- package/dist/chunk-Y7QA2OLD.js.map +1 -0
- package/dist/{chunk-2KOKBTR4.js → chunk-YSHVQGUS.js} +123 -28
- package/dist/chunk-YSHVQGUS.js.map +1 -0
- package/dist/chunk-ZAOGFXDO.js +112 -0
- package/dist/chunk-ZAOGFXDO.js.map +1 -0
- package/dist/{chunk-7KLC4LZO.js → chunk-ZKSJMZKD.js} +17 -13
- package/dist/chunk-ZKSJMZKD.js.map +1 -0
- package/dist/cli/index.js +1169 -672
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/asset-feeds.d.ts +5 -2
- package/dist/cli/src/asset-feeds.d.ts.map +1 -1
- package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +27 -5
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/library-index.d.ts +49 -4
- package/dist/cli/src/commands/library-index.d.ts.map +1 -1
- package/dist/cli/src/commands/library-publish.d.ts +9 -0
- package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/manage.d.ts +8 -2
- package/dist/cli/src/commands/manage.d.ts.map +1 -1
- package/dist/cli/src/commands/outdated.d.ts +10 -4
- package/dist/cli/src/commands/outdated.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +15 -4
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/publish-core.d.ts +10 -1
- package/dist/cli/src/commands/publish-core.d.ts.map +1 -1
- package/dist/cli/src/commands/session.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts +18 -3
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/cli/src/commands/tree.d.ts.map +1 -1
- package/dist/cli/src/commands/update.d.ts +1 -1
- package/dist/cli/src/commands/update.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/flow-discovery.d.ts +8 -5
- package/dist/cli/src/flow-discovery.d.ts.map +1 -1
- package/dist/cli/src/open-library.d.ts +0 -11
- package/dist/cli/src/open-library.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +30 -10
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/connectors/config.js +6 -6
- package/dist/connectors/index.js +26 -27
- package/dist/connectors/src/access-policy.d.ts +33 -0
- package/dist/connectors/src/access-policy.d.ts.map +1 -0
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +2 -0
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors-O6Y6VESP.js +44 -0
- package/dist/{connectors-HWENZFKW.js.map → connectors-O6Y6VESP.js.map} +1 -1
- package/dist/connectors-shared/index.js +2 -2
- package/dist/core/index.js +9 -9
- 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/ref.js +1 -1
- package/dist/core/runtime-assets.js +6 -6
- package/dist/core/src/cache-paths.d.ts.map +1 -1
- package/dist/core/src/index.d.ts +4 -4
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +3 -3
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/logging/config.d.ts +9 -1
- package/dist/core/src/logging/config.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts +17 -2
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +22 -6
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts +41 -6
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/store.d.ts +16 -2
- package/dist/core/src/store.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +10 -1
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/store.js +2 -2
- package/dist/core/workspace-config.js +5 -5
- package/dist/deploy/index.js +9 -9
- package/dist/discovery/index.js +5 -5
- package/dist/discovery/src/index.d.ts +1 -1
- package/dist/discovery/src/index.d.ts.map +1 -1
- package/dist/discovery/src/source-config.d.ts +12 -0
- package/dist/discovery/src/source-config.d.ts.map +1 -1
- package/dist/discovery/src/tree-entries.d.ts.map +1 -1
- package/dist/{ensure-sources-DSTSXJWK.js → ensure-sources-SKLNM4UZ.js} +19 -19
- package/dist/{ensure-sources-DSTSXJWK.js.map → ensure-sources-SKLNM4UZ.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +26 -27
- package/dist/factory-assets/connectors/deploy.js +26 -27
- package/dist/factory-assets/connectors/devserver.js +26 -27
- package/dist/factory-assets/connectors/flow/adapter.d.ts +6 -0
- package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/adapter.js +26 -27
- package/dist/factory-assets/connectors/flow/contract/expression.d.ts +3 -0
- package/dist/factory-assets/connectors/flow/contract/expression.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract/output-fields.d.ts +1 -1
- package/dist/factory-assets/connectors/flow/contract/output-fields.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract/schema.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract.js +4 -4
- package/dist/factory-assets/connectors/flow/engine/flow-output.d.ts +4 -3
- package/dist/factory-assets/connectors/flow/engine/flow-output.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts +6 -1
- package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine.js +13 -13
- package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/prompt-fragments.js +3 -3
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +28 -29
- package/dist/factory-assets/connectors/flow.js +26 -27
- package/dist/factory-assets/connectors/git/config.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +26 -27
- package/dist/factory-assets/connectors/gmail.js +26 -27
- package/dist/factory-assets/connectors/googledrive.js +26 -27
- package/dist/factory-assets/connectors/local.js +26 -27
- package/dist/factory-assets/connectors/mattermost.js +26 -27
- package/dist/factory-assets/connectors/memory.js +26 -27
- package/dist/factory-assets/connectors/minio.js +26 -27
- package/dist/factory-assets/connectors/postgres.js +26 -27
- package/dist/factory-assets/connectors/s3.js +26 -27
- package/dist/factory-assets/connectors/sharepoint.js +26 -27
- package/dist/factory-assets/connectors/sqlite.js +26 -27
- package/dist/factory-assets/connectors/static-server.js +26 -27
- package/dist/factory-assets/connectors/tunnel.js +26 -27
- package/dist/factory-assets/connectors/webdav.js +26 -27
- package/dist/factory-assets/connectors/xstate-store.js +26 -27
- package/dist/factory-assets/connectors/xstate.js +26 -27
- package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +10 -7
- package/dist/flows-CBYRSAGS.js +26 -0
- package/dist/{flows-ENQY2DV7.js.map → flows-CBYRSAGS.js.map} +1 -1
- package/dist/{helpers-R44RUTDY.js → helpers-MWZDRBLD.js} +19 -19
- package/dist/{helpers-R44RUTDY.js.map → helpers-MWZDRBLD.js.map} +1 -1
- package/dist/library/index.js +13 -13
- package/dist/library/install.js +3 -3
- package/dist/library/src/index.d.ts +5 -3
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/local/library-manager.d.ts +6 -0
- package/dist/library/src/local/library-manager.d.ts.map +1 -1
- package/dist/library/src/local/local-catalog-source.d.ts +5 -2
- package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
- package/dist/library/src/local/scan-authoring-libraries.d.ts +43 -0
- package/dist/library/src/local/scan-authoring-libraries.d.ts.map +1 -0
- package/dist/library/src/manifest-writer.d.ts +46 -1
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/sync/git-driver.d.ts +12 -0
- package/dist/library/src/sync/git-driver.d.ts.map +1 -1
- package/dist/{library-publish-LFOJJVMK.js → library-publish-PICMDSB2.js} +129 -49
- package/dist/library-publish-PICMDSB2.js.map +1 -0
- package/dist/open-library-OG457THY.js +40 -0
- package/dist/{open-library-4WUMQHES.js.map → open-library-OG457THY.js.map} +1 -1
- package/dist/open-registry-ZUZJ7MS7.js +32 -0
- package/dist/{open-registry-NVPCQPND.js.map → open-registry-ZUZJ7MS7.js.map} +1 -1
- package/dist/paths-FQ64OLJG.js +22 -0
- package/dist/{paths-YUCP7K6U.js.map → paths-FQ64OLJG.js.map} +1 -1
- package/dist/{plugin-store-66QFBNEO.js → plugin-store-MPAMD5OT.js} +11 -11
- package/dist/{plugin-store-66QFBNEO.js.map → plugin-store-MPAMD5OT.js.map} +1 -1
- package/dist/project-2GFT5LEZ.js +41 -0
- package/dist/{project-VMOHUXBD.js.map → project-2GFT5LEZ.js.map} +1 -1
- package/dist/resolver/index.js +10 -10
- package/dist/runner/index.js +41 -42
- package/dist/runner/src/logging-bootstrap.d.ts +6 -0
- package/dist/runner/src/logging-bootstrap.d.ts.map +1 -1
- package/dist/runner/src/reconfigure-handler.d.ts +38 -17
- package/dist/runner/src/reconfigure-handler.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-capability-wiring.d.ts +0 -2
- package/dist/runner/src/session-capability-wiring.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +16 -16
- package/dist/sdk/bridge.js +17 -18
- package/dist/sdk/core.js +9 -9
- package/dist/sdk/flow.js +13 -13
- package/dist/sdk/index.js +69 -46
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +10 -10
- package/dist/sdk/runner.js +41 -42
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/src/agent-session.d.ts +8 -0
- package/dist/sdk/src/agent-session.d.ts.map +1 -1
- package/dist/sdk/store.js +2 -1
- package/dist/sdk/types.js +1 -1
- package/dist/secrets/index.js +2 -2
- package/dist/session/index.js +2 -2
- package/dist/{setup-PYY23HGZ.js → setup-WHMCSIF2.js} +27 -28
- package/dist/setup-WHMCSIF2.js.map +1 -0
- package/dist/skills-TVO26Y4V.js +26 -0
- package/dist/{skills-CS7NE5TT.js.map → skills-TVO26Y4V.js.map} +1 -1
- package/dist/source-LKOFTOEK.js +41 -0
- package/dist/{source-JCF6KSQN.js.map → source-LKOFTOEK.js.map} +1 -1
- package/dist/{source-manifest-publish-O6P7G2M7.js → source-manifest-publish-L5J3QXER.js} +28 -28
- package/dist/{source-manifest-publish-O6P7G2M7.js.map → source-manifest-publish-L5J3QXER.js.map} +1 -1
- package/dist/store/index.js +2 -1
- package/dist/store/src/store.d.ts +8 -5
- package/dist/store/src/store.d.ts.map +1 -1
- package/dist/tui/index.js +41 -42
- package/dist/tui/index.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/ask-slots.d.ts +68 -0
- package/dist/types/src/ask-slots.d.ts.map +1 -0
- package/dist/types/src/delivery.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +29 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/manifests/index.d.ts +1 -1
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/types/src/manifests/preset.d.ts +4 -0
- package/dist/types/src/manifests/preset.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +12 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +33 -34
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +2 -2
- package/package.json +1 -1
- package/dist/asset-feeds-LU7NHOAP.js.map +0 -1
- package/dist/chunk-2KOKBTR4.js.map +0 -1
- package/dist/chunk-2NYXQYHN.js +0 -22
- package/dist/chunk-2NYXQYHN.js.map +0 -1
- package/dist/chunk-2W4LBLIN.js.map +0 -1
- package/dist/chunk-46OVMT76.js.map +0 -1
- package/dist/chunk-5B5IZVEP.js.map +0 -1
- package/dist/chunk-65EYRFZJ.js.map +0 -1
- package/dist/chunk-7KLC4LZO.js.map +0 -1
- package/dist/chunk-AO7VJ6G6.js.map +0 -1
- package/dist/chunk-AOAZCSDI.js.map +0 -1
- package/dist/chunk-D2V42LUE.js.map +0 -1
- package/dist/chunk-DMLDYFDS.js.map +0 -1
- package/dist/chunk-EINLFFP6.js +0 -59
- package/dist/chunk-EINLFFP6.js.map +0 -1
- package/dist/chunk-FRHE7FFB.js.map +0 -1
- package/dist/chunk-I4QBZLOR.js.map +0 -1
- package/dist/chunk-JMKB7IB4.js.map +0 -1
- package/dist/chunk-MFHKHXDE.js.map +0 -1
- package/dist/chunk-MX3UQXLU.js.map +0 -1
- package/dist/chunk-OKGUDNDT.js.map +0 -1
- package/dist/chunk-PA7WLID3.js.map +0 -1
- package/dist/chunk-PJS2YWGG.js.map +0 -1
- package/dist/chunk-PTO2YDDG.js.map +0 -1
- package/dist/chunk-QCI6D7E4.js.map +0 -1
- package/dist/chunk-RGXVQZOV.js.map +0 -1
- package/dist/chunk-TZCQ7ZWQ.js.map +0 -1
- package/dist/chunk-UAP2XHRF.js.map +0 -1
- package/dist/chunk-WIHQWVWL.js.map +0 -1
- package/dist/chunk-XBSQ4KMC.js.map +0 -1
- package/dist/chunk-XOGG7VDZ.js.map +0 -1
- package/dist/connectors-HWENZFKW.js +0 -45
- package/dist/flows-ENQY2DV7.js +0 -26
- package/dist/library-publish-LFOJJVMK.js.map +0 -1
- package/dist/open-library-4WUMQHES.js +0 -40
- package/dist/open-registry-NVPCQPND.js +0 -32
- package/dist/paths-YUCP7K6U.js +0 -22
- package/dist/project-VMOHUXBD.js +0 -41
- package/dist/setup-PYY23HGZ.js.map +0 -1
- package/dist/skills-CS7NE5TT.js +0 -26
- package/dist/source-JCF6KSQN.js +0 -41
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { driverSessionConfigHome, removeSessionConfigFile, writeSessionConfigFile } from '../../chunk-
|
|
2
|
-
import { SubprocessCliDriver, extractText } from '../../chunk-
|
|
3
|
-
import { resolveEnvDriverSession, resolveRegistryBinding, harnessModelSelector, credentialsForEveryProvider, registryModelEntries, selectableEntries, isStockCatalogEndpoint, entrySurface, entryBaseUrl, entryModelIds, versionedAnthropicBaseUrl } from '../../chunk-
|
|
4
|
-
import '../../chunk-
|
|
1
|
+
import { driverSessionConfigHome, removeSessionConfigFile, writeSessionConfigFile } from '../../chunk-EAZECHPM.js';
|
|
2
|
+
import { SubprocessCliDriver, extractText } from '../../chunk-SH5D7U7N.js';
|
|
3
|
+
import { resolveEnvDriverSession, resolveRegistryBinding, harnessModelSelector, credentialsForEveryProvider, registryModelEntries, selectableEntries, isStockCatalogEndpoint, entrySurface, entryBaseUrl, entryModelIds, versionedAnthropicBaseUrl } from '../../chunk-BJNUNQAW.js';
|
|
4
|
+
import '../../chunk-B4X2N7JQ.js';
|
|
5
5
|
import '../../chunk-YROR332M.js';
|
|
6
|
-
import { BUILTIN_DRIVER_CATALOG, getBridgeLogger, registryDriverConfig, providerCredentialEnvName } from '../../chunk-
|
|
6
|
+
import { BUILTIN_DRIVER_CATALOG, getBridgeLogger, registryDriverConfig, providerCredentialEnvName } from '../../chunk-AWQYXZVG.js';
|
|
7
7
|
import '../../chunk-6E6PKKAD.js';
|
|
8
|
-
import '../../chunk-
|
|
8
|
+
import '../../chunk-36AFURKZ.js';
|
|
9
9
|
import '../../chunk-4GY63JU6.js';
|
|
10
|
-
import '../../chunk-
|
|
11
|
-
import '../../chunk-
|
|
10
|
+
import '../../chunk-GB7WDMH2.js';
|
|
11
|
+
import '../../chunk-PMECEZK3.js';
|
|
12
12
|
import '../../chunk-5BEFNLOR.js';
|
|
13
13
|
import '../../chunk-A2ULN3KX.js';
|
|
14
|
-
import '../../chunk-
|
|
15
|
-
import '../../chunk-
|
|
14
|
+
import '../../chunk-JAKOMFC6.js';
|
|
15
|
+
import '../../chunk-L5VSIPQD.js';
|
|
16
16
|
import '../../chunk-CPSIPIX7.js';
|
|
17
|
-
import '../../chunk-
|
|
17
|
+
import '../../chunk-BTE2V4IW.js';
|
|
18
18
|
import '../../chunk-RVRB27AN.js';
|
|
19
|
-
import '../../chunk-
|
|
20
|
-
import '../../chunk-
|
|
19
|
+
import '../../chunk-GTILM2CI.js';
|
|
20
|
+
import '../../chunk-QVNRCDTV.js';
|
|
21
21
|
import '../../chunk-ICSCSM5D.js';
|
|
22
|
-
import '../../chunk-
|
|
22
|
+
import '../../chunk-UMVKJM4Q.js';
|
|
23
23
|
import '../../chunk-MJHSLODD.js';
|
|
24
24
|
import '../../chunk-C3CAXQMA.js';
|
|
25
25
|
import '../../chunk-BOFL7GIF.js';
|
|
@@ -159,9 +159,8 @@ var OpenCodeDriver = class extends SubprocessCliDriver {
|
|
|
159
159
|
this.providers ??= resolveEnvDriverSession(this.config);
|
|
160
160
|
return this.providers;
|
|
161
161
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if (patch.model !== void 0) this.providers = void 0;
|
|
162
|
+
onReconfigured(applied) {
|
|
163
|
+
if (applied.model !== void 0) this.providers = void 0;
|
|
165
164
|
}
|
|
166
165
|
getModel() {
|
|
167
166
|
return resolveRegistryBinding(this.providerSession())?.providerModelId ?? this.config.model;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../bridge/src/provider-materialize/opencode-config.ts","../../../bridge/src/drivers/opencode.ts"],"names":[],"mappings":"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","file":"opencode.js","sourcesContent":["/**\n * OpenCode's `opencode.json` adapter — the file half of the OpenCode row\n * (§2.3).\n *\n * OpenCode names providers out of [models.dev](https://models.dev): a stock\n * endpoint is already in that list, so the env half's `-m <preset>/<model>`\n * reaches it with nothing written. An endpoint models.dev has never heard of —\n * a self-hosted gateway, a LiteLLM proxy, an Ollama box — exists for OpenCode\n * only if a `provider` block in `opencode.json` describes it:\n *\n * ```jsonc\n * {\n * \"provider\": {\n * \"corp-gateway\": {\n * \"npm\": \"@ai-sdk/openai-compatible\",\n * \"name\": \"Corp Gateway\",\n * \"options\": {\n * \"baseURL\": \"https://llm.corp.example/v1\",\n * \"apiKey\": \"{env:SKAILE_AIP_CORP_GATEWAY_KEY}\"\n * },\n * \"models\": { \"corp-fast-1\": { \"name\": \"corp-fast-1\" } }\n * }\n * }\n * }\n * ```\n *\n * The block is keyed by {@link harnessProviderName}, so the name in the file\n * is the name the env half already puts on `-m`. `npm` is the Vercel AI SDK\n * package for the entry's wire `surface`; OpenCode instantiates the provider\n * from it, which is why an entry on a surface with no package is left out\n * rather than guessed at.\n *\n * **Credentials never enter the file.** `options.apiKey` holds OpenCode's own\n * `{env:VAR}` indirection naming the per-entry variable\n * `SKAILE_AIP_<ID>_KEY`; the value rides in the child environment.\n *\n * The document is written to `<home>/opencode/opencode.json` and the child's\n * `XDG_CONFIG_HOME` is pointed at `<home>` — see\n * {@link driverSessionConfigHome} for why that, and not the developer's\n * `~/.config/opencode`.\n *\n * @docLink packages/bridge/drivers#one-shot-cli-drivers-gemini-qwen-opencode-goose-continue\n */\n\nimport { join } from \"node:path\";\nimport type {\n AIProviderLlmEntry,\n AIProviderSurface,\n} from \"@skaile/workspaces/core/provider-registry\";\nimport { providerCredentialEnvName } from \"./credential-env.js\";\nimport {\n harnessModelSelector,\n entryBaseUrl,\n entryModelIds,\n entrySurface,\n type EnvDriverSession,\n isStockCatalogEndpoint,\n resolveRegistryBinding,\n selectableEntries,\n versionedAnthropicBaseUrl,\n} from \"./env-drivers.js\";\nimport {\n driverSessionConfigHome,\n removeSessionConfigFile,\n writeSessionConfigFile,\n} from \"./session-config-home.js\";\n\n/**\n * `surface` → the Vercel AI SDK package OpenCode loads for it. These are the\n * four surfaces `BUILTIN_DRIVER_CATALOG.opencode.surfaces` declares; a surface\n * with no package here cannot be instantiated, so the entry is skipped.\n */\nconst OPENCODE_NPM_PACKAGE: Partial<Record<AIProviderSurface, string>> = {\n \"anthropic-messages\": \"@ai-sdk/anthropic\",\n \"openai-completions\": \"@ai-sdk/openai-compatible\",\n \"openai-responses\": \"@ai-sdk/openai\",\n \"google-generative-ai\": \"@ai-sdk/google\",\n};\n\n/** Credential kinds whose value the adapter hands over in an env var. */\nconst ENV_DELIVERED_CREDENTIALS: Record<string, true> = {\n api_key_header: true,\n bearer: true,\n command: true,\n};\n\n/** Subdirectory OpenCode reads its global config from, under the config home. */\nexport const OPENCODE_CONFIG_DIRNAME = \"opencode\";\n\n/** Filename OpenCode reads its global config from. */\nexport const OPENCODE_CONFIG_FILENAME = \"opencode.json\";\n\n/** One `provider.<id>` block, in OpenCode's own vocabulary. */\nexport interface OpenCodeProviderBlock {\n /** AI SDK package OpenCode instantiates the provider from. */\n npm: string;\n /** Display name in the `/models` picker. */\n name: string;\n options: {\n baseURL?: string;\n /** OpenCode's `{env:VAR}` indirection — never a secret. */\n apiKey?: string;\n headers?: Record<string, string>;\n };\n /** Provider-side model id → its display entry. */\n models: Record<string, { name: string }>;\n}\n\n/** The subset of `opencode.json` this adapter owns. */\nexport interface OpenCodeConfigDocument {\n $schema: string;\n /** `<provider>/<model>` the session selected, when it selected one. */\n model?: string;\n provider: Record<string, OpenCodeProviderBlock>;\n}\n\n/** An entry OpenCode cannot be taught, and why. */\nexport interface OpenCodeSkippedEntry {\n id: string;\n reason: string;\n}\n\n/** Result of {@link buildOpenCodeConfigDocument}. */\nexport interface OpenCodeConfigBuild {\n document: OpenCodeConfigDocument;\n /** Entries left out of the document — non-fatal, logged by the driver. */\n skipped: OpenCodeSkippedEntry[];\n}\n\n/**\n * Render one entry as a provider block, or explain why OpenCode cannot load\n * it.\n */\nexport function renderOpenCodeProvider(\n providerId: string,\n entry: AIProviderLlmEntry,\n): { block: OpenCodeProviderBlock } | { skipped: string } {\n const surface = entrySurface(entry);\n const npm = surface ? OPENCODE_NPM_PACKAGE[surface] : undefined;\n if (!npm)\n return {\n skipped: surface\n ? `OpenCode has no AI SDK package for surface '${surface}'`\n : \"entry declares no surface\",\n };\n const baseUrl = entryBaseUrl(entry);\n if (!baseUrl)\n return { skipped: \"entry states no base_url, and OpenCode does not know this provider\" };\n\n const models: Record<string, { name: string }> = {};\n for (const [logicalId, providerModelId] of entryModelIds(entry)) {\n models[providerModelId] = { name: `${entry.label ?? providerId} ${logicalId}` };\n }\n\n const block: OpenCodeProviderBlock = {\n npm,\n name: entry.label ?? providerId,\n // `@ai-sdk/anthropic` posts to `<baseURL>/messages`.\n options: { baseURL: versionedAnthropicBaseUrl(baseUrl, surface) },\n models,\n };\n const credentialKind = entry.credential?.kind;\n if (credentialKind && ENV_DELIVERED_CREDENTIALS[credentialKind])\n block.options.apiKey = `{env:${providerCredentialEnvName(providerId)}}`;\n if (entry.headers && Object.keys(entry.headers).length > 0)\n block.options.headers = { ...entry.headers };\n return { block };\n}\n\n/**\n * Build the document for a session: one block per entry OpenCode cannot name\n * on its own, plus the selected `<provider>/<model>`.\n *\n * The selected model is added to its provider's `models` map even when no\n * `model_map` declared it — a selector naming a model the registry did not\n * enumerate still has to resolve, and `-m` would otherwise name a model the\n * provider block does not list.\n *\n * An empty registry renders nothing — there is no endpoint of the session's\n * own to tell OpenCode about, and models.dev already covers the stock ones.\n */\nexport function buildOpenCodeConfigDocument(session: EnvDriverSession): OpenCodeConfigBuild {\n const document: OpenCodeConfigDocument = {\n $schema: \"https://opencode.ai/config.json\",\n provider: {},\n };\n const skipped: OpenCodeSkippedEntry[] = [];\n\n for (const [providerId, entry] of selectableEntries(session.registry)) {\n // OpenCode already knows every catalog endpoint through models.dev, under\n // the same name `harnessProviderName` gives `-m`. What it cannot know is\n // an endpoint of the session's own, and that is exactly what this file is\n // for — one rule, read by both halves.\n if (isStockCatalogEndpoint(entry)) continue;\n const rendered = renderOpenCodeProvider(providerId, entry);\n if (\"skipped\" in rendered) skipped.push({ id: providerId, reason: rendered.skipped });\n else document.provider[providerId] = rendered.block;\n }\n\n const binding = resolveRegistryBinding(session);\n const selector = binding ? harnessModelSelector(binding) : undefined;\n if (binding && selector) {\n document.model = selector;\n const block = document.provider[binding.providerId];\n if (block && binding.providerModelId && !block.models[binding.providerModelId])\n block.models[binding.providerModelId] = { name: binding.providerModelId };\n }\n\n return { document, skipped };\n}\n\n/** What {@link materializeOpenCodeConfig} handed the driver. */\nexport interface OpenCodeMaterialization extends OpenCodeConfigBuild {\n /** Child env fragment: `XDG_CONFIG_HOME`, or empty when nothing was written. */\n env: Record<string, string>;\n /** Absolute path of the rendered file, when one was written. */\n path?: string;\n}\n\n/**\n * Render the session's custom endpoints and point the child at them.\n *\n * A session whose every endpoint is already a models.dev provider writes\n * nothing and leaves `XDG_CONFIG_HOME` alone: relocating it would hide the\n * developer's own `~/.config/opencode` for no gain. A file left by an earlier\n * render of the same session is removed in that case, so a session that drops\n * its custom endpoint stops answering to it.\n */\nexport function materializeOpenCodeConfig(\n session: EnvDriverSession,\n config: { cwd: string; sessionId?: string },\n): OpenCodeMaterialization {\n const build = buildOpenCodeConfigDocument(session);\n const home = driverSessionConfigHome(\"opencode\", config);\n const dir = join(home, OPENCODE_CONFIG_DIRNAME);\n if (Object.keys(build.document.provider).length === 0) {\n removeSessionConfigFile(dir, OPENCODE_CONFIG_FILENAME);\n return { ...build, env: {} };\n }\n const path = writeSessionConfigFile(\n dir,\n OPENCODE_CONFIG_FILENAME,\n `${JSON.stringify(build.document, null, 2)}\\n`,\n );\n return { ...build, env: { XDG_CONFIG_HOME: home }, path };\n}\n","import type { DriverTarget } from \"@skaile/workspaces/plugin-registry\";\nimport type { Logger, TokenUsage } from \"@skaile/workspaces/types\";\nimport * as z from \"zod\";\nimport { getBridgeLogger } from \"../logger.js\";\nimport type { ModelEntry } from \"../models.js\";\nimport {\n harnessModelSelector,\n credentialsForEveryProvider,\n type EnvDriverSession,\n registryModelEntries,\n resolveEnvDriverSession,\n resolveRegistryBinding,\n} from \"../provider-materialize/env-drivers.js\";\nimport { materializeOpenCodeConfig } from \"../provider-materialize/opencode-config.js\";\nimport { registryDriverConfig } from \"../provider-registry-derive.js\";\nimport { BUILTIN_DRIVER_CATALOG } from \"../registry.js\";\nimport type { AgentConfig, DriverInfo } from \"../types.js\";\nimport { extractText, SubprocessCliDriver } from \"./_subprocess-cli.js\";\n\n/**\n * One `opencode run --format json` event, as emitted by opencode-ai 1.18.31:\n * `{type, timestamp, sessionID, part}` with the payload nested under `part`.\n * Only the fields the driver reads are pinned; other keys are stripped.\n */\nconst OpenCodeEvent = z.object({\n type: z.string(),\n sessionID: z.string().optional(),\n part: z\n .object({\n text: z.string().optional(),\n reason: z.string().optional(),\n cost: z.number().optional(),\n tokens: z\n .object({\n input: z.number().optional(),\n output: z.number().optional(),\n total: z.number().optional(),\n reasoning: z.number().optional(),\n cache: z.object({ read: z.number().optional(), write: z.number().optional() }).optional(),\n })\n .optional(),\n })\n .default({}),\n});\ntype OpenCodeTokens = NonNullable<z.infer<typeof OpenCodeEvent>[\"part\"][\"tokens\"]>;\n\n/** Map `step_finish.part.tokens` onto {@link TokenUsage}; zero cache/reasoning counts are omitted. */\nfunction opencodeTokens(t: OpenCodeTokens | undefined): TokenUsage | null {\n if (!t) return null;\n const usage: TokenUsage = {};\n if (t.input !== undefined) usage.inputTokens = t.input;\n if (t.output !== undefined) usage.outputTokens = t.output;\n if (t.total !== undefined) usage.totalTokens = t.total;\n if (t.reasoning) usage.reasoningTokens = t.reasoning;\n if (t.cache?.read) usage.cacheReadTokens = t.cache.read;\n if (t.cache?.write) usage.cacheCreationTokens = t.cache.write;\n return Object.keys(usage).length > 0 ? usage : null;\n}\n\n/** Sum two usages field by field (a turn can span several opencode steps). */\nfunction addTokens(a: TokenUsage | null, b: TokenUsage): TokenUsage {\n if (!a) return b;\n const out: TokenUsage = { ...a };\n for (const key of Object.keys(b) as (keyof TokenUsage)[])\n out[key] = (a[key] ?? 0) + (b[key] ?? 0);\n return out;\n}\n\n/**\n * Agent driver for **OpenCode** (`opencode`), the model-agnostic open-source\n * coding agent.\n *\n * Spawns `opencode run \"<prompt>\" --format json` per turn and maps OpenCode's\n * JSON event stream to the unified {@link AgentEvent} stream. A\n * `credentials-n` harness (§2.3): every enabled AI provider entry's\n * credential reaches the child environment, and the active model is selected\n * as `-m <provider>/<model>`. An endpoint models.dev does not know is\n * additionally rendered into a session-private `opencode.json`\n * (`provider-materialize/opencode-config.ts`) that `XDG_CONFIG_HOME` points\n * the child at.\n *\n * @remarks\n * - The prompt is a **positional argument** — OpenCode's `-p` flag is a\n * basic-auth password, not the prompt.\n * - Session resume via `-s <id>`; the session id is read from `sessionID`,\n * present on every event, and emitted once as `session_info`.\n * - The event schema is pinned against opencode-ai 1.18.31 by a recorded\n * fixture (`tests/fixtures/opencode-1.18-events.jsonl`).\n *\n * @see https://github.com/sst/opencode\n * @docLink packages/bridge/drivers#opencode-driver\n */\nexport class OpenCodeDriver extends SubprocessCliDriver {\n readonly driverInfo: DriverInfo = {\n id: \"opencode\",\n name: \"OpenCode\",\n modelAgnostic: true,\n supportsInBandAbort: false,\n };\n\n protected readonly log: Logger = getBridgeLogger(\"opencode\");\n protected readonly defaultBin = \"opencode\";\n protected readonly productName = \"OpenCode\";\n protected readonly envPrefix = \"OPENCODE\";\n\n private providers?: EnvDriverSession;\n\n /** This session's AI providers, resolved once from the config. */\n private providerSession(): EnvDriverSession {\n this.providers ??= resolveEnvDriverSession(this.config);\n return this.providers;\n }\n\n override reconfigure(patch: Partial<Pick<AgentConfig, \"model\" | \"thinking\" | \"effort\">>): void {\n super.reconfigure(patch);\n if (patch.model !== undefined) this.providers = undefined;\n }\n\n override getModel(): string | undefined {\n return resolveRegistryBinding(this.providerSession())?.providerModelId ?? this.config.model;\n }\n\n protected buildArgs(message: string, resumeId: string | undefined): string[] {\n const args = [\"run\", message, \"--format\", \"json\"];\n const binding = resolveRegistryBinding(this.providerSession());\n const model = binding ? harnessModelSelector(binding) : this.config.model;\n if (model) args.push(\"-m\", model);\n if (resumeId) args.push(\"-s\", resumeId);\n return args;\n }\n\n /**\n * Base env plus one credential variable per enabled registry entry — the\n * canonical `SKAILE_AIP_<ID>_KEY` and, for a stock catalog endpoint, the\n * vendor carrier OpenCode reads on its own (`ANTHROPIC_API_KEY`, …). There\n * is no per-driver key allowlist: what reaches the child is exactly what\n * the registry can authenticate.\n *\n * This is also where the session's custom endpoints are rendered. It runs\n * once per spawn, so a `reconfigure()` between turns re-renders rather than\n * leaving the child pointed at the previous selection.\n */\n protected buildEnv(): Record<string, string> {\n const session = this.providerSession();\n const materialized = materializeOpenCodeConfig(session, this.config);\n for (const entry of materialized.skipped)\n this.log.warn(\"OpenCode cannot address an AI provider entry\", {\n providerId: entry.id,\n reason: entry.reason,\n });\n if (materialized.path)\n this.log.debug(\"rendered OpenCode provider config\", { path: materialized.path });\n return {\n ...this.baseEnv(),\n ...credentialsForEveryProvider(session),\n ...materialized.env,\n };\n }\n\n protected installHint(): string {\n return \"OpenCode is not installed or not on your PATH. Install it with `npm i -g opencode-ai`.\";\n }\n\n override async prompt(message: string): Promise<void> {\n this.turnText = \"\";\n this.turnTokens = null;\n this.turnCost = undefined;\n return super.prompt(message);\n }\n\n /** Assistant text of the current turn, joined across `text` parts and steps. */\n private turnText = \"\";\n /** Usage summed across the turn's `step_finish` events. */\n private turnTokens: TokenUsage | null = null;\n private turnCost: number | undefined;\n\n /**\n * Map `opencode run --format json` (pinned against opencode-ai 1.18.31,\n * fixture `tests/fixtures/opencode-1.18-events.jsonl`). Every event is\n * `{type, timestamp, sessionID, part}` with the payload under `part`;\n * observed types are `step_start`, `text` and `step_finish`. Anything else\n * is ignored rather than guessed at.\n */\n protected handleJson(json: unknown): void {\n const parsed = OpenCodeEvent.safeParse(json);\n if (!parsed.success) return;\n const { type, sessionID, part } = parsed.data;\n this.captureSession(sessionID);\n switch (type) {\n case \"text\": {\n const text = extractText(parsed.data);\n if (!text) break;\n this.turnText += text;\n this.pushAssistantDelta(this.turnText);\n break;\n }\n\n case \"step_finish\": {\n const tokens = opencodeTokens(part.tokens);\n if (tokens) this.turnTokens = addTokens(this.turnTokens, tokens);\n if (part.cost !== undefined) this.turnCost = (this.turnCost ?? 0) + part.cost;\n // [INFERENCE] a step ending in tool calls is followed by another step\n // in the same turn; only the observed terminal reason ends the turn.\n if (part.reason === \"tool-calls\") break;\n this.pushResult({\n tokens: this.turnTokens,\n costUsd: this.turnCost,\n summary: this.turnText || \"Task completed\",\n });\n this.turnText = \"\";\n this.turnTokens = null;\n this.turnCost = undefined;\n break;\n }\n }\n }\n\n /**\n * OpenCode has no model-list endpoint of its own (it reads models.dev), so\n * the session's registry is the list: every enabled entry's mapped ids,\n * namespaced exactly as `-m` takes them.\n */\n override async listModels(): Promise<ModelEntry[]> {\n return registryModelEntries(this.providerSession());\n }\n}\n\n/**\n * `DriverTarget` wrapper for the opencode driver. Registered into the plugin\n * registry by `registerBuiltinDrivers()`.\n */\nexport const opencodeDriverTarget: DriverTarget<AgentConfig> = {\n id: \"opencode\",\n displayName: BUILTIN_DRIVER_CATALOG.opencode?.name ?? \"OpenCode\",\n apiVersion: 1,\n configSchema: z.custom<AgentConfig>(() => true),\n create: async (config, _ctx) => new OpenCodeDriver(config),\n listModels: async (registry, options) =>\n new OpenCodeDriver({\n cwd: process.cwd(),\n sessionId: \"model-list\",\n ...registryDriverConfig(registry, options),\n }).listModels(),\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../bridge/src/provider-materialize/opencode-config.ts","../../../bridge/src/drivers/opencode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwEA,IAAM,oBAAA,GAAmE;AAAA,EACvE,oBAAA,EAAsB,mBAAA;AAAA,EACtB,oBAAA,EAAsB,2BAAA;AAAA,EACtB,kBAAA,EAAoB,gBAAA;AAAA,EACpB,sBAAA,EAAwB;AAC1B,CAAA;AAGA,IAAM,yBAAA,GAAkD;AAAA,EACtD,cAAA,EAAgB,IAAA;AAAA,EAChB,MAAA,EAAQ,IAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAGO,IAAM,uBAAA,GAA0B,UAAA;AAGhC,IAAM,wBAAA,GAA2B,eAAA;AA2CjC,SAAS,sBAAA,CACd,YACA,KAAA,EACwD;AACxD,EAAA,MAAM,OAAA,GAAU,aAAa,KAAK,CAAA;AAClC,EAAA,MAAM,GAAA,GAAM,OAAA,GAAU,oBAAA,CAAqB,OAAO,CAAA,GAAI,MAAA;AACtD,EAAA,IAAI,CAAC,GAAA;AACH,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,OAAA,GACL,CAAA,4CAAA,EAA+C,OAAO,CAAA,CAAA,CAAA,GACtD;AAAA,KACN;AACF,EAAA,MAAM,OAAA,GAAU,aAAa,KAAK,CAAA;AAClC,EAAA,IAAI,CAAC,OAAA;AACH,IAAA,OAAO,EAAE,SAAS,oEAAA,EAAqE;AAEzF,EAAA,MAAM,SAA2C,EAAC;AAClD,EAAA,KAAA,MAAW,CAAC,SAAA,EAAW,eAAe,CAAA,IAAK,aAAA,CAAc,KAAK,CAAA,EAAG;AAC/D,IAAA,MAAA,CAAO,eAAe,CAAA,GAAI,EAAE,IAAA,EAAM,CAAA,EAAG,MAAM,KAAA,IAAS,UAAU,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAG;AAAA,EAChF;AAEA,EAAA,MAAM,KAAA,GAA+B;AAAA,IACnC,GAAA;AAAA,IACA,IAAA,EAAM,MAAM,KAAA,IAAS,UAAA;AAAA;AAAA,IAErB,SAAS,EAAE,OAAA,EAAS,yBAAA,CAA0B,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IAChE;AAAA,GACF;AACA,EAAA,MAAM,cAAA,GAAiB,MAAM,UAAA,EAAY,IAAA;AACzC,EAAA,IAAI,cAAA,IAAkB,0BAA0B,cAAc,CAAA;AAC5D,IAAA,KAAA,CAAM,OAAA,CAAQ,MAAA,GAAS,CAAA,KAAA,EAAQ,yBAAA,CAA0B,UAAU,CAAC,CAAA,CAAA,CAAA;AACtE,EAAA,IAAI,MAAM,OAAA,IAAW,MAAA,CAAO,KAAK,KAAA,CAAM,OAAO,EAAE,MAAA,GAAS,CAAA;AACvD,IAAA,KAAA,CAAM,OAAA,CAAQ,OAAA,GAAU,EAAE,GAAG,MAAM,OAAA,EAAQ;AAC7C,EAAA,OAAO,EAAE,KAAA,EAAM;AACjB;AAcO,SAAS,4BAA4B,OAAA,EAAgD;AAC1F,EAAA,MAAM,QAAA,GAAmC;AAAA,IACvC,OAAA,EAAS,iCAAA;AAAA,IACT,UAAU;AAAC,GACb;AACA,EAAA,MAAM,UAAkC,EAAC;AAEzC,EAAA,KAAA,MAAW,CAAC,UAAA,EAAY,KAAK,KAAK,iBAAA,CAAkB,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAKrE,IAAA,IAAI,sBAAA,CAAuB,KAAK,CAAA,EAAG;AACnC,IAAA,MAAM,QAAA,GAAW,sBAAA,CAAuB,UAAA,EAAY,KAAK,CAAA;AACzD,IAAA,IAAI,SAAA,IAAa,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,EAAE,IAAI,UAAA,EAAY,MAAA,EAAQ,QAAA,CAAS,OAAA,EAAS,CAAA;AAAA,SAC/E,QAAA,CAAS,QAAA,CAAS,UAAU,CAAA,GAAI,QAAA,CAAS,KAAA;AAAA,EAChD;AAEA,EAAA,MAAM,OAAA,GAAU,uBAAuB,OAAO,CAAA;AAC9C,EAAA,MAAM,QAAA,GAAW,OAAA,GAAU,oBAAA,CAAqB,OAAO,CAAA,GAAI,MAAA;AAC3D,EAAA,IAAI,WAAW,QAAA,EAAU;AACvB,IAAA,QAAA,CAAS,KAAA,GAAQ,QAAA;AACjB,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,QAAA,CAAS,OAAA,CAAQ,UAAU,CAAA;AAClD,IAAA,IAAI,SAAS,OAAA,CAAQ,eAAA,IAAmB,CAAC,KAAA,CAAM,MAAA,CAAO,QAAQ,eAAe,CAAA;AAC3E,MAAA,KAAA,CAAM,OAAO,OAAA,CAAQ,eAAe,IAAI,EAAE,IAAA,EAAM,QAAQ,eAAA,EAAgB;AAAA,EAC5E;AAEA,EAAA,OAAO,EAAE,UAAU,OAAA,EAAQ;AAC7B;AAmBO,SAAS,yBAAA,CACd,SACA,MAAA,EACyB;AACzB,EAAA,MAAM,KAAA,GAAQ,4BAA4B,OAAO,CAAA;AACjD,EAAA,MAAM,IAAA,GAAO,uBAAA,CAAwB,UAAA,EAAY,MAAM,CAAA;AACvD,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,EAAM,uBAAuB,CAAA;AAC9C,EAAA,IAAI,OAAO,IAAA,CAAK,KAAA,CAAM,SAAS,QAAQ,CAAA,CAAE,WAAW,CAAA,EAAG;AACrD,IAAA,uBAAA,CAAwB,KAAK,wBAAwB,CAAA;AACrD,IAAA,OAAO,EAAE,GAAG,KAAA,EAAO,GAAA,EAAK,EAAC,EAAE;AAAA,EAC7B;AACA,EAAA,MAAM,IAAA,GAAO,sBAAA;AAAA,IACX,GAAA;AAAA,IACA,wBAAA;AAAA,IACA,GAAG,IAAA,CAAK,SAAA,CAAU,MAAM,QAAA,EAAU,IAAA,EAAM,CAAC,CAAC;AAAA;AAAA,GAC5C;AACA,EAAA,OAAO,EAAE,GAAG,KAAA,EAAO,GAAA,EAAK,EAAE,eAAA,EAAiB,IAAA,IAAQ,IAAA,EAAK;AAC1D;;;AC7NA,IAAM,gBAAkB,CAAA,CAAA,MAAA,CAAO;AAAA,EAC7B,MAAQ,CAAA,CAAA,MAAA,EAAO;AAAA,EACf,SAAA,EAAa,CAAA,CAAA,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,MACG,CAAA,CAAA,MAAA,CAAO;AAAA,IACN,IAAA,EAAQ,CAAA,CAAA,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC1B,MAAA,EAAU,CAAA,CAAA,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC5B,IAAA,EAAQ,CAAA,CAAA,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC1B,QACG,CAAA,CAAA,MAAA,CAAO;AAAA,MACN,KAAA,EAAS,CAAA,CAAA,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAC3B,MAAA,EAAU,CAAA,CAAA,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAC5B,KAAA,EAAS,CAAA,CAAA,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAC3B,SAAA,EAAa,CAAA,CAAA,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAC/B,KAAA,EAAS,CAAA,CAAA,MAAA,CAAO,EAAE,IAAA,EAAQ,UAAO,CAAE,QAAA,EAAS,EAAG,KAAA,EAAS,UAAO,CAAE,QAAA,EAAS,EAAG,EAAE,QAAA;AAAS,KACzF,EACA,QAAA;AAAS,GACb,CAAA,CACA,OAAA,CAAQ,EAAE;AACf,CAAC,CAAA;AAID,SAAS,eAAe,CAAA,EAAkD;AACxE,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,MAAM,QAAoB,EAAC;AAC3B,EAAA,IAAI,CAAA,CAAE,KAAA,KAAU,MAAA,EAAW,KAAA,CAAM,cAAc,CAAA,CAAE,KAAA;AACjD,EAAA,IAAI,CAAA,CAAE,MAAA,KAAW,MAAA,EAAW,KAAA,CAAM,eAAe,CAAA,CAAE,MAAA;AACnD,EAAA,IAAI,CAAA,CAAE,KAAA,KAAU,MAAA,EAAW,KAAA,CAAM,cAAc,CAAA,CAAE,KAAA;AACjD,EAAA,IAAI,CAAA,CAAE,SAAA,EAAW,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,SAAA;AAC3C,EAAA,IAAI,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,CAAM,eAAA,GAAkB,EAAE,KAAA,CAAM,IAAA;AACnD,EAAA,IAAI,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,mBAAA,GAAsB,EAAE,KAAA,CAAM,KAAA;AACxD,EAAA,OAAO,OAAO,IAAA,CAAK,KAAK,CAAA,CAAE,MAAA,GAAS,IAAI,KAAA,GAAQ,IAAA;AACjD;AAGA,SAAS,SAAA,CAAU,GAAsB,CAAA,EAA2B;AAClE,EAAA,IAAI,CAAC,GAAG,OAAO,CAAA;AACf,EAAA,MAAM,GAAA,GAAkB,EAAE,GAAG,CAAA,EAAE;AAC/B,EAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA;AAC7B,IAAA,GAAA,CAAI,GAAG,KAAK,CAAA,CAAE,GAAG,KAAK,CAAA,KAAM,CAAA,CAAE,GAAG,CAAA,IAAK,CAAA,CAAA;AACxC,EAAA,OAAO,GAAA;AACT;AA0BO,IAAM,cAAA,GAAN,cAA6B,mBAAA,CAAoB;AAAA,EAC7C,UAAA,GAAyB;AAAA,IAChC,EAAA,EAAI,UAAA;AAAA,IACJ,IAAA,EAAM,UAAA;AAAA,IACN,aAAA,EAAe,IAAA;AAAA,IACf,mBAAA,EAAqB;AAAA,GACvB;AAAA,EAEmB,GAAA,GAAc,gBAAgB,UAAU,CAAA;AAAA,EACxC,UAAA,GAAa,UAAA;AAAA,EACb,WAAA,GAAc,UAAA;AAAA,EACd,SAAA,GAAY,UAAA;AAAA,EAEvB,SAAA;AAAA;AAAA,EAGA,eAAA,GAAoC;AAC1C,IAAA,IAAA,CAAK,SAAA,KAAc,uBAAA,CAAwB,IAAA,CAAK,MAAM,CAAA;AACtD,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA,EAEmB,eAAe,OAAA,EAAmC;AACnE,IAAA,IAAI,OAAA,CAAQ,KAAA,KAAU,MAAA,EAAW,IAAA,CAAK,SAAA,GAAY,MAAA;AAAA,EACpD;AAAA,EAES,QAAA,GAA+B;AACtC,IAAA,OAAO,uBAAuB,IAAA,CAAK,eAAA,EAAiB,CAAA,EAAG,eAAA,IAAmB,KAAK,MAAA,CAAO,KAAA;AAAA,EACxF;AAAA,EAEU,SAAA,CAAU,SAAiB,QAAA,EAAwC;AAC3E,IAAA,MAAM,IAAA,GAAO,CAAC,KAAA,EAAO,OAAA,EAAS,YAAY,MAAM,CAAA;AAChD,IAAA,MAAM,OAAA,GAAU,sBAAA,CAAuB,IAAA,CAAK,eAAA,EAAiB,CAAA;AAC7D,IAAA,MAAM,QAAQ,OAAA,GAAU,oBAAA,CAAqB,OAAO,CAAA,GAAI,KAAK,MAAA,CAAO,KAAA;AACpE,IAAA,IAAI,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AAChC,IAAA,IAAI,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,QAAQ,CAAA;AACtC,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaU,QAAA,GAAmC;AAC3C,IAAA,MAAM,OAAA,GAAU,KAAK,eAAA,EAAgB;AACrC,IAAA,MAAM,YAAA,GAAe,yBAAA,CAA0B,OAAA,EAAS,IAAA,CAAK,MAAM,CAAA;AACnE,IAAA,KAAA,MAAW,SAAS,YAAA,CAAa,OAAA;AAC/B,MAAA,IAAA,CAAK,GAAA,CAAI,KAAK,8CAAA,EAAgD;AAAA,QAC5D,YAAY,KAAA,CAAM,EAAA;AAAA,QAClB,QAAQ,KAAA,CAAM;AAAA,OACf,CAAA;AACH,IAAA,IAAI,YAAA,CAAa,IAAA;AACf,MAAA,IAAA,CAAK,IAAI,KAAA,CAAM,mCAAA,EAAqC,EAAE,IAAA,EAAM,YAAA,CAAa,MAAM,CAAA;AACjF,IAAA,OAAO;AAAA,MACL,GAAG,KAAK,OAAA,EAAQ;AAAA,MAChB,GAAG,4BAA4B,OAAO,CAAA;AAAA,MACtC,GAAG,YAAA,CAAa;AAAA,KAClB;AAAA,EACF;AAAA,EAEU,WAAA,GAAsB;AAC9B,IAAA,OAAO,wFAAA;AAAA,EACT;AAAA,EAEA,MAAe,OAAO,OAAA,EAAgC;AACpD,IAAA,IAAA,CAAK,QAAA,GAAW,EAAA;AAChB,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,MAAA;AAChB,IAAA,OAAO,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,EAC7B;AAAA;AAAA,EAGQ,QAAA,GAAW,EAAA;AAAA;AAAA,EAEX,UAAA,GAAgC,IAAA;AAAA,EAChC,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASE,WAAW,IAAA,EAAqB;AACxC,IAAA,MAAM,MAAA,GAAS,aAAA,CAAc,SAAA,CAAU,IAAI,CAAA;AAC3C,IAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACrB,IAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,KAAS,MAAA,CAAO,IAAA;AACzC,IAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAC7B,IAAA,QAAQ,IAAA;AAAM,MACZ,KAAK,MAAA,EAAQ;AACX,QAAA,MAAM,IAAA,GAAO,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA;AACpC,QAAA,IAAI,CAAC,IAAA,EAAM;AACX,QAAA,IAAA,CAAK,QAAA,IAAY,IAAA;AACjB,QAAA,IAAA,CAAK,kBAAA,CAAmB,KAAK,QAAQ,CAAA;AACrC,QAAA;AAAA,MACF;AAAA,MAEA,KAAK,aAAA,EAAe;AAClB,QAAA,MAAM,MAAA,GAAS,cAAA,CAAe,IAAA,CAAK,MAAM,CAAA;AACzC,QAAA,IAAI,QAAQ,IAAA,CAAK,UAAA,GAAa,SAAA,CAAU,IAAA,CAAK,YAAY,MAAM,CAAA;AAC/D,QAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAW,IAAA,CAAK,YAAY,IAAA,CAAK,QAAA,IAAY,KAAK,IAAA,CAAK,IAAA;AAGzE,QAAA,IAAI,IAAA,CAAK,WAAW,YAAA,EAAc;AAClC,QAAA,IAAA,CAAK,UAAA,CAAW;AAAA,UACd,QAAQ,IAAA,CAAK,UAAA;AAAA,UACb,SAAS,IAAA,CAAK,QAAA;AAAA,UACd,OAAA,EAAS,KAAK,QAAA,IAAY;AAAA,SAC3B,CAAA;AACD,QAAA,IAAA,CAAK,QAAA,GAAW,EAAA;AAChB,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,QAAA,IAAA,CAAK,QAAA,GAAW,MAAA;AAChB,QAAA;AAAA,MACF;AAAA;AACF,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAe,UAAA,GAAoC;AACjD,IAAA,OAAO,oBAAA,CAAqB,IAAA,CAAK,eAAA,EAAiB,CAAA;AAAA,EACpD;AACF;AAMO,IAAM,oBAAA,GAAkD;AAAA,EAC7D,EAAA,EAAI,UAAA;AAAA,EACJ,WAAA,EAAa,sBAAA,CAAuB,QAAA,EAAU,IAAA,IAAQ,UAAA;AAAA,EACtD,UAAA,EAAY,CAAA;AAAA,EACZ,YAAA,EAAgB,CAAA,CAAA,MAAA,CAAoB,MAAM,IAAI,CAAA;AAAA,EAC9C,QAAQ,OAAO,MAAA,EAAQ,IAAA,KAAS,IAAI,eAAe,MAAM,CAAA;AAAA,EACzD,UAAA,EAAY,OAAO,QAAA,EAAU,OAAA,KAC3B,IAAI,cAAA,CAAe;AAAA,IACjB,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,IACjB,SAAA,EAAW,YAAA;AAAA,IACX,GAAG,oBAAA,CAAqB,QAAA,EAAU,OAAO;AAAA,GAC1C,EAAE,UAAA;AACP","file":"opencode.js","sourcesContent":["/**\n * OpenCode's `opencode.json` adapter — the file half of the OpenCode row\n * (§2.3).\n *\n * OpenCode names providers out of [models.dev](https://models.dev): a stock\n * endpoint is already in that list, so the env half's `-m <preset>/<model>`\n * reaches it with nothing written. An endpoint models.dev has never heard of —\n * a self-hosted gateway, a LiteLLM proxy, an Ollama box — exists for OpenCode\n * only if a `provider` block in `opencode.json` describes it:\n *\n * ```jsonc\n * {\n * \"provider\": {\n * \"corp-gateway\": {\n * \"npm\": \"@ai-sdk/openai-compatible\",\n * \"name\": \"Corp Gateway\",\n * \"options\": {\n * \"baseURL\": \"https://llm.corp.example/v1\",\n * \"apiKey\": \"{env:SKAILE_AIP_CORP_GATEWAY_KEY}\"\n * },\n * \"models\": { \"corp-fast-1\": { \"name\": \"corp-fast-1\" } }\n * }\n * }\n * }\n * ```\n *\n * The block is keyed by {@link harnessProviderName}, so the name in the file\n * is the name the env half already puts on `-m`. `npm` is the Vercel AI SDK\n * package for the entry's wire `surface`; OpenCode instantiates the provider\n * from it, which is why an entry on a surface with no package is left out\n * rather than guessed at.\n *\n * **Credentials never enter the file.** `options.apiKey` holds OpenCode's own\n * `{env:VAR}` indirection naming the per-entry variable\n * `SKAILE_AIP_<ID>_KEY`; the value rides in the child environment.\n *\n * The document is written to `<home>/opencode/opencode.json` and the child's\n * `XDG_CONFIG_HOME` is pointed at `<home>` — see\n * {@link driverSessionConfigHome} for why that, and not the developer's\n * `~/.config/opencode`.\n *\n * @docLink packages/bridge/drivers#one-shot-cli-drivers-gemini-qwen-opencode-goose-continue\n */\n\nimport { join } from \"node:path\";\nimport type {\n AIProviderLlmEntry,\n AIProviderSurface,\n} from \"@skaile/workspaces/core/provider-registry\";\nimport { providerCredentialEnvName } from \"./credential-env.js\";\nimport {\n harnessModelSelector,\n entryBaseUrl,\n entryModelIds,\n entrySurface,\n type EnvDriverSession,\n isStockCatalogEndpoint,\n resolveRegistryBinding,\n selectableEntries,\n versionedAnthropicBaseUrl,\n} from \"./env-drivers.js\";\nimport {\n driverSessionConfigHome,\n removeSessionConfigFile,\n writeSessionConfigFile,\n} from \"./session-config-home.js\";\n\n/**\n * `surface` → the Vercel AI SDK package OpenCode loads for it. These are the\n * four surfaces `BUILTIN_DRIVER_CATALOG.opencode.surfaces` declares; a surface\n * with no package here cannot be instantiated, so the entry is skipped.\n */\nconst OPENCODE_NPM_PACKAGE: Partial<Record<AIProviderSurface, string>> = {\n \"anthropic-messages\": \"@ai-sdk/anthropic\",\n \"openai-completions\": \"@ai-sdk/openai-compatible\",\n \"openai-responses\": \"@ai-sdk/openai\",\n \"google-generative-ai\": \"@ai-sdk/google\",\n};\n\n/** Credential kinds whose value the adapter hands over in an env var. */\nconst ENV_DELIVERED_CREDENTIALS: Record<string, true> = {\n api_key_header: true,\n bearer: true,\n command: true,\n};\n\n/** Subdirectory OpenCode reads its global config from, under the config home. */\nexport const OPENCODE_CONFIG_DIRNAME = \"opencode\";\n\n/** Filename OpenCode reads its global config from. */\nexport const OPENCODE_CONFIG_FILENAME = \"opencode.json\";\n\n/** One `provider.<id>` block, in OpenCode's own vocabulary. */\nexport interface OpenCodeProviderBlock {\n /** AI SDK package OpenCode instantiates the provider from. */\n npm: string;\n /** Display name in the `/models` picker. */\n name: string;\n options: {\n baseURL?: string;\n /** OpenCode's `{env:VAR}` indirection — never a secret. */\n apiKey?: string;\n headers?: Record<string, string>;\n };\n /** Provider-side model id → its display entry. */\n models: Record<string, { name: string }>;\n}\n\n/** The subset of `opencode.json` this adapter owns. */\nexport interface OpenCodeConfigDocument {\n $schema: string;\n /** `<provider>/<model>` the session selected, when it selected one. */\n model?: string;\n provider: Record<string, OpenCodeProviderBlock>;\n}\n\n/** An entry OpenCode cannot be taught, and why. */\nexport interface OpenCodeSkippedEntry {\n id: string;\n reason: string;\n}\n\n/** Result of {@link buildOpenCodeConfigDocument}. */\nexport interface OpenCodeConfigBuild {\n document: OpenCodeConfigDocument;\n /** Entries left out of the document — non-fatal, logged by the driver. */\n skipped: OpenCodeSkippedEntry[];\n}\n\n/**\n * Render one entry as a provider block, or explain why OpenCode cannot load\n * it.\n */\nexport function renderOpenCodeProvider(\n providerId: string,\n entry: AIProviderLlmEntry,\n): { block: OpenCodeProviderBlock } | { skipped: string } {\n const surface = entrySurface(entry);\n const npm = surface ? OPENCODE_NPM_PACKAGE[surface] : undefined;\n if (!npm)\n return {\n skipped: surface\n ? `OpenCode has no AI SDK package for surface '${surface}'`\n : \"entry declares no surface\",\n };\n const baseUrl = entryBaseUrl(entry);\n if (!baseUrl)\n return { skipped: \"entry states no base_url, and OpenCode does not know this provider\" };\n\n const models: Record<string, { name: string }> = {};\n for (const [logicalId, providerModelId] of entryModelIds(entry)) {\n models[providerModelId] = { name: `${entry.label ?? providerId} ${logicalId}` };\n }\n\n const block: OpenCodeProviderBlock = {\n npm,\n name: entry.label ?? providerId,\n // `@ai-sdk/anthropic` posts to `<baseURL>/messages`.\n options: { baseURL: versionedAnthropicBaseUrl(baseUrl, surface) },\n models,\n };\n const credentialKind = entry.credential?.kind;\n if (credentialKind && ENV_DELIVERED_CREDENTIALS[credentialKind])\n block.options.apiKey = `{env:${providerCredentialEnvName(providerId)}}`;\n if (entry.headers && Object.keys(entry.headers).length > 0)\n block.options.headers = { ...entry.headers };\n return { block };\n}\n\n/**\n * Build the document for a session: one block per entry OpenCode cannot name\n * on its own, plus the selected `<provider>/<model>`.\n *\n * The selected model is added to its provider's `models` map even when no\n * `model_map` declared it — a selector naming a model the registry did not\n * enumerate still has to resolve, and `-m` would otherwise name a model the\n * provider block does not list.\n *\n * An empty registry renders nothing — there is no endpoint of the session's\n * own to tell OpenCode about, and models.dev already covers the stock ones.\n */\nexport function buildOpenCodeConfigDocument(session: EnvDriverSession): OpenCodeConfigBuild {\n const document: OpenCodeConfigDocument = {\n $schema: \"https://opencode.ai/config.json\",\n provider: {},\n };\n const skipped: OpenCodeSkippedEntry[] = [];\n\n for (const [providerId, entry] of selectableEntries(session.registry)) {\n // OpenCode already knows every catalog endpoint through models.dev, under\n // the same name `harnessProviderName` gives `-m`. What it cannot know is\n // an endpoint of the session's own, and that is exactly what this file is\n // for — one rule, read by both halves.\n if (isStockCatalogEndpoint(entry)) continue;\n const rendered = renderOpenCodeProvider(providerId, entry);\n if (\"skipped\" in rendered) skipped.push({ id: providerId, reason: rendered.skipped });\n else document.provider[providerId] = rendered.block;\n }\n\n const binding = resolveRegistryBinding(session);\n const selector = binding ? harnessModelSelector(binding) : undefined;\n if (binding && selector) {\n document.model = selector;\n const block = document.provider[binding.providerId];\n if (block && binding.providerModelId && !block.models[binding.providerModelId])\n block.models[binding.providerModelId] = { name: binding.providerModelId };\n }\n\n return { document, skipped };\n}\n\n/** What {@link materializeOpenCodeConfig} handed the driver. */\nexport interface OpenCodeMaterialization extends OpenCodeConfigBuild {\n /** Child env fragment: `XDG_CONFIG_HOME`, or empty when nothing was written. */\n env: Record<string, string>;\n /** Absolute path of the rendered file, when one was written. */\n path?: string;\n}\n\n/**\n * Render the session's custom endpoints and point the child at them.\n *\n * A session whose every endpoint is already a models.dev provider writes\n * nothing and leaves `XDG_CONFIG_HOME` alone: relocating it would hide the\n * developer's own `~/.config/opencode` for no gain. A file left by an earlier\n * render of the same session is removed in that case, so a session that drops\n * its custom endpoint stops answering to it.\n */\nexport function materializeOpenCodeConfig(\n session: EnvDriverSession,\n config: { cwd: string; sessionId?: string },\n): OpenCodeMaterialization {\n const build = buildOpenCodeConfigDocument(session);\n const home = driverSessionConfigHome(\"opencode\", config);\n const dir = join(home, OPENCODE_CONFIG_DIRNAME);\n if (Object.keys(build.document.provider).length === 0) {\n removeSessionConfigFile(dir, OPENCODE_CONFIG_FILENAME);\n return { ...build, env: {} };\n }\n const path = writeSessionConfigFile(\n dir,\n OPENCODE_CONFIG_FILENAME,\n `${JSON.stringify(build.document, null, 2)}\\n`,\n );\n return { ...build, env: { XDG_CONFIG_HOME: home }, path };\n}\n","import type { DriverTarget } from \"@skaile/workspaces/plugin-registry\";\nimport type { Logger, TokenUsage } from \"@skaile/workspaces/types\";\nimport * as z from \"zod\";\nimport { getBridgeLogger } from \"../logger.js\";\nimport type { ModelEntry } from \"../models.js\";\nimport {\n harnessModelSelector,\n credentialsForEveryProvider,\n type EnvDriverSession,\n registryModelEntries,\n resolveEnvDriverSession,\n resolveRegistryBinding,\n} from \"../provider-materialize/env-drivers.js\";\nimport { materializeOpenCodeConfig } from \"../provider-materialize/opencode-config.js\";\nimport { registryDriverConfig } from \"../provider-registry-derive.js\";\nimport { BUILTIN_DRIVER_CATALOG } from \"../registry.js\";\nimport type { AgentConfig, DriverInfo, ReconfigureApplied } from \"../types.js\";\nimport { extractText, SubprocessCliDriver } from \"./_subprocess-cli.js\";\n\n/**\n * One `opencode run --format json` event, as emitted by opencode-ai 1.18.31:\n * `{type, timestamp, sessionID, part}` with the payload nested under `part`.\n * Only the fields the driver reads are pinned; other keys are stripped.\n */\nconst OpenCodeEvent = z.object({\n type: z.string(),\n sessionID: z.string().optional(),\n part: z\n .object({\n text: z.string().optional(),\n reason: z.string().optional(),\n cost: z.number().optional(),\n tokens: z\n .object({\n input: z.number().optional(),\n output: z.number().optional(),\n total: z.number().optional(),\n reasoning: z.number().optional(),\n cache: z.object({ read: z.number().optional(), write: z.number().optional() }).optional(),\n })\n .optional(),\n })\n .default({}),\n});\ntype OpenCodeTokens = NonNullable<z.infer<typeof OpenCodeEvent>[\"part\"][\"tokens\"]>;\n\n/** Map `step_finish.part.tokens` onto {@link TokenUsage}; zero cache/reasoning counts are omitted. */\nfunction opencodeTokens(t: OpenCodeTokens | undefined): TokenUsage | null {\n if (!t) return null;\n const usage: TokenUsage = {};\n if (t.input !== undefined) usage.inputTokens = t.input;\n if (t.output !== undefined) usage.outputTokens = t.output;\n if (t.total !== undefined) usage.totalTokens = t.total;\n if (t.reasoning) usage.reasoningTokens = t.reasoning;\n if (t.cache?.read) usage.cacheReadTokens = t.cache.read;\n if (t.cache?.write) usage.cacheCreationTokens = t.cache.write;\n return Object.keys(usage).length > 0 ? usage : null;\n}\n\n/** Sum two usages field by field (a turn can span several opencode steps). */\nfunction addTokens(a: TokenUsage | null, b: TokenUsage): TokenUsage {\n if (!a) return b;\n const out: TokenUsage = { ...a };\n for (const key of Object.keys(b) as (keyof TokenUsage)[])\n out[key] = (a[key] ?? 0) + (b[key] ?? 0);\n return out;\n}\n\n/**\n * Agent driver for **OpenCode** (`opencode`), the model-agnostic open-source\n * coding agent.\n *\n * Spawns `opencode run \"<prompt>\" --format json` per turn and maps OpenCode's\n * JSON event stream to the unified {@link AgentEvent} stream. A\n * `credentials-n` harness (§2.3): every enabled AI provider entry's\n * credential reaches the child environment, and the active model is selected\n * as `-m <provider>/<model>`. An endpoint models.dev does not know is\n * additionally rendered into a session-private `opencode.json`\n * (`provider-materialize/opencode-config.ts`) that `XDG_CONFIG_HOME` points\n * the child at.\n *\n * @remarks\n * - The prompt is a **positional argument** — OpenCode's `-p` flag is a\n * basic-auth password, not the prompt.\n * - Session resume via `-s <id>`; the session id is read from `sessionID`,\n * present on every event, and emitted once as `session_info`.\n * - The event schema is pinned against opencode-ai 1.18.31 by a recorded\n * fixture (`tests/fixtures/opencode-1.18-events.jsonl`).\n *\n * @see https://github.com/sst/opencode\n * @docLink packages/bridge/drivers#opencode-driver\n */\nexport class OpenCodeDriver extends SubprocessCliDriver {\n readonly driverInfo: DriverInfo = {\n id: \"opencode\",\n name: \"OpenCode\",\n modelAgnostic: true,\n supportsInBandAbort: false,\n };\n\n protected readonly log: Logger = getBridgeLogger(\"opencode\");\n protected readonly defaultBin = \"opencode\";\n protected readonly productName = \"OpenCode\";\n protected readonly envPrefix = \"OPENCODE\";\n\n private providers?: EnvDriverSession;\n\n /** This session's AI providers, resolved once from the config. */\n private providerSession(): EnvDriverSession {\n this.providers ??= resolveEnvDriverSession(this.config);\n return this.providers;\n }\n\n protected override onReconfigured(applied: ReconfigureApplied): void {\n if (applied.model !== undefined) this.providers = undefined;\n }\n\n override getModel(): string | undefined {\n return resolveRegistryBinding(this.providerSession())?.providerModelId ?? this.config.model;\n }\n\n protected buildArgs(message: string, resumeId: string | undefined): string[] {\n const args = [\"run\", message, \"--format\", \"json\"];\n const binding = resolveRegistryBinding(this.providerSession());\n const model = binding ? harnessModelSelector(binding) : this.config.model;\n if (model) args.push(\"-m\", model);\n if (resumeId) args.push(\"-s\", resumeId);\n return args;\n }\n\n /**\n * Base env plus one credential variable per enabled registry entry — the\n * canonical `SKAILE_AIP_<ID>_KEY` and, for a stock catalog endpoint, the\n * vendor carrier OpenCode reads on its own (`ANTHROPIC_API_KEY`, …). There\n * is no per-driver key allowlist: what reaches the child is exactly what\n * the registry can authenticate.\n *\n * This is also where the session's custom endpoints are rendered. It runs\n * once per spawn, so a `reconfigure()` between turns re-renders rather than\n * leaving the child pointed at the previous selection.\n */\n protected buildEnv(): Record<string, string> {\n const session = this.providerSession();\n const materialized = materializeOpenCodeConfig(session, this.config);\n for (const entry of materialized.skipped)\n this.log.warn(\"OpenCode cannot address an AI provider entry\", {\n providerId: entry.id,\n reason: entry.reason,\n });\n if (materialized.path)\n this.log.debug(\"rendered OpenCode provider config\", { path: materialized.path });\n return {\n ...this.baseEnv(),\n ...credentialsForEveryProvider(session),\n ...materialized.env,\n };\n }\n\n protected installHint(): string {\n return \"OpenCode is not installed or not on your PATH. Install it with `npm i -g opencode-ai`.\";\n }\n\n override async prompt(message: string): Promise<void> {\n this.turnText = \"\";\n this.turnTokens = null;\n this.turnCost = undefined;\n return super.prompt(message);\n }\n\n /** Assistant text of the current turn, joined across `text` parts and steps. */\n private turnText = \"\";\n /** Usage summed across the turn's `step_finish` events. */\n private turnTokens: TokenUsage | null = null;\n private turnCost: number | undefined;\n\n /**\n * Map `opencode run --format json` (pinned against opencode-ai 1.18.31,\n * fixture `tests/fixtures/opencode-1.18-events.jsonl`). Every event is\n * `{type, timestamp, sessionID, part}` with the payload under `part`;\n * observed types are `step_start`, `text` and `step_finish`. Anything else\n * is ignored rather than guessed at.\n */\n protected handleJson(json: unknown): void {\n const parsed = OpenCodeEvent.safeParse(json);\n if (!parsed.success) return;\n const { type, sessionID, part } = parsed.data;\n this.captureSession(sessionID);\n switch (type) {\n case \"text\": {\n const text = extractText(parsed.data);\n if (!text) break;\n this.turnText += text;\n this.pushAssistantDelta(this.turnText);\n break;\n }\n\n case \"step_finish\": {\n const tokens = opencodeTokens(part.tokens);\n if (tokens) this.turnTokens = addTokens(this.turnTokens, tokens);\n if (part.cost !== undefined) this.turnCost = (this.turnCost ?? 0) + part.cost;\n // [INFERENCE] a step ending in tool calls is followed by another step\n // in the same turn; only the observed terminal reason ends the turn.\n if (part.reason === \"tool-calls\") break;\n this.pushResult({\n tokens: this.turnTokens,\n costUsd: this.turnCost,\n summary: this.turnText || \"Task completed\",\n });\n this.turnText = \"\";\n this.turnTokens = null;\n this.turnCost = undefined;\n break;\n }\n }\n }\n\n /**\n * OpenCode has no model-list endpoint of its own (it reads models.dev), so\n * the session's registry is the list: every enabled entry's mapped ids,\n * namespaced exactly as `-m` takes them.\n */\n override async listModels(): Promise<ModelEntry[]> {\n return registryModelEntries(this.providerSession());\n }\n}\n\n/**\n * `DriverTarget` wrapper for the opencode driver. Registered into the plugin\n * registry by `registerBuiltinDrivers()`.\n */\nexport const opencodeDriverTarget: DriverTarget<AgentConfig> = {\n id: \"opencode\",\n displayName: BUILTIN_DRIVER_CATALOG.opencode?.name ?? \"OpenCode\",\n apiVersion: 1,\n configSchema: z.custom<AgentConfig>(() => true),\n create: async (config, _ctx) => new OpenCodeDriver(config),\n listModels: async (registry, options) =>\n new OpenCodeDriver({\n cwd: process.cwd(),\n sessionId: \"model-list\",\n ...registryDriverConfig(registry, options),\n }).listModels(),\n};\n"]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { GeminiFamilyDriver } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import { resolveRegistryBinding } from '../../chunk-
|
|
4
|
-
import { fetchProviderModels } from '../../chunk-
|
|
5
|
-
import '../../chunk-
|
|
1
|
+
import { GeminiFamilyDriver } from '../../chunk-QOP6KDFR.js';
|
|
2
|
+
import '../../chunk-SH5D7U7N.js';
|
|
3
|
+
import { resolveRegistryBinding } from '../../chunk-BJNUNQAW.js';
|
|
4
|
+
import { fetchProviderModels } from '../../chunk-PTSGWKHR.js';
|
|
5
|
+
import '../../chunk-B4X2N7JQ.js';
|
|
6
6
|
import '../../chunk-YROR332M.js';
|
|
7
|
-
import { BUILTIN_DRIVER_CATALOG, getBridgeLogger, entryCredentialValue, registryDriverConfig } from '../../chunk-
|
|
7
|
+
import { BUILTIN_DRIVER_CATALOG, getBridgeLogger, entryCredentialValue, registryDriverConfig } from '../../chunk-AWQYXZVG.js';
|
|
8
8
|
import '../../chunk-6E6PKKAD.js';
|
|
9
|
-
import '../../chunk-
|
|
9
|
+
import '../../chunk-B6GIW55K.js';
|
|
10
10
|
import '../../chunk-ICSCSM5D.js';
|
|
11
|
-
import '../../chunk-
|
|
11
|
+
import '../../chunk-UMVKJM4Q.js';
|
|
12
12
|
import '../../chunk-MJHSLODD.js';
|
|
13
13
|
import '../../chunk-C3CAXQMA.js';
|
|
14
14
|
import '../../chunk-BOFL7GIF.js';
|
package/dist/bridge/index.js
CHANGED
|
@@ -1,30 +1,29 @@
|
|
|
1
|
-
export { BridgeRuntime, EventNormalizer, createRuntime, detectFileChange, detectFileChanges, labelToolCall, summarizeToolCall, summarizeToolResult, validateApiKey } from '../chunk-
|
|
2
|
-
export { ANTHROPIC_DEFAULT_BASE_URL, agentTranscriptStore, buildClaudeEndpointEnv, claudeEndpointMode, localTranscriptStore, probeResumeTranscript, resolveClaudeConfigDir, transcriptStoreForRuntime } from '../chunk-
|
|
3
|
-
export { scopeReconfigureModel } from '../chunk-EINLFFP6.js';
|
|
1
|
+
export { BridgeRuntime, EventNormalizer, createRuntime, detectFileChange, detectFileChanges, labelToolCall, summarizeToolCall, summarizeToolResult, validateApiKey } from '../chunk-6GRX5L6A.js';
|
|
2
|
+
export { ANTHROPIC_DEFAULT_BASE_URL, agentTranscriptStore, buildClaudeEndpointEnv, claudeEndpointMode, localTranscriptStore, probeResumeTranscript, resolveClaudeConfigDir, transcriptStoreForRuntime } from '../chunk-S53LOR7B.js';
|
|
4
3
|
export { CODEX_NATIVE_STATE_FORMAT, CodexNativeStateUnavailable } from '../chunk-LOO5CB5M.js';
|
|
5
|
-
export { dispatchCapability, filterRenderCapabilities, renderFallback } from '../chunk-
|
|
6
|
-
export { ModelTierResolutionError, PROVIDER_MODEL_TIERS, STATIC_MODELS, fetchProviderModels, getModels, getStaticModels, modelIdTargetForEntry, resolveManifestModel, resolveModelCapabilities, resolveModelTier } from '../chunk-
|
|
7
|
-
export { AccountUnavailableError, AuthError, RUNNER_PRIVATE_ENV_KEYS, classifyClaudeSdkError, reclassifyAuthAsAccountUnavailable, stripRunnerPrivateEnv } from '../chunk-
|
|
4
|
+
export { dispatchCapability, filterRenderCapabilities, renderFallback } from '../chunk-GCICGXDD.js';
|
|
5
|
+
export { ModelTierResolutionError, PROVIDER_MODEL_TIERS, STATIC_MODELS, fetchProviderModels, getModels, getStaticModels, modelIdTargetForEntry, resolveManifestModel, resolveModelCapabilities, resolveModelTier } from '../chunk-PTSGWKHR.js';
|
|
6
|
+
export { AccountUnavailableError, AuthError, RUNNER_PRIVATE_ENV_KEYS, ReconfigureLedger, classifyClaudeSdkError, reclassifyAuthAsAccountUnavailable, scopeReconfigureModel, stripRunnerPrivateEnv } from '../chunk-B4X2N7JQ.js';
|
|
8
7
|
export { AGENT_EXEC_ENV, agentExecRequested, resolveAgentExec, wrapAgentCommand } from '../chunk-YROR332M.js';
|
|
9
|
-
export { AGENT_EFFORT_LEVELS, AI_PROVIDER_PRESETS, AgentDriver, BUILTIN_DRIVER_CATALOG, DRIVER_CATALOG, PROVIDER_CREDENTIAL_ENV_PREFIX, PROVIDER_CREDENTIAL_ENV_SUFFIX, buildCredentialHeaders, catalogLayer, conventionalCredentialEnvName, createDriver, driverCapabilities, entryCredentialEnv, entryCredentialValue, expandPreset, getBridgeLogger, getProviderPreset, listDrivers, listModelsForDriver, listProviderPresets, presetBaseUrl, probeProviderEntry, providerCredentialEnvName, registerBuiltinDrivers, registryCredentialEnv, registryDriverConfig, resolveEntryCredential, resolvePresetBaseUrl, resolveProbeUrl, supportsLiveToolUpdates, toAgentEffort, toMergedRegistry } from '../chunk-
|
|
8
|
+
export { AGENT_EFFORT_LEVELS, AI_PROVIDER_PRESETS, AgentDriver, BUILTIN_DRIVER_CATALOG, DRIVER_CATALOG, PROVIDER_CREDENTIAL_ENV_PREFIX, PROVIDER_CREDENTIAL_ENV_SUFFIX, buildCredentialHeaders, catalogLayer, conventionalCredentialEnvName, createDriver, driverCapabilities, entryCredentialEnv, entryCredentialValue, expandPreset, getBridgeLogger, getProviderPreset, listDrivers, listModelsForDriver, listProviderPresets, presetBaseUrl, probeProviderEntry, providerCredentialEnvName, registerBuiltinDrivers, registryCredentialEnv, registryDriverConfig, resolveEntryCredential, resolvePresetBaseUrl, resolveProbeUrl, supportsLiveToolUpdates, toAgentEffort, toMergedRegistry } from '../chunk-AWQYXZVG.js';
|
|
10
9
|
import '../chunk-6E6PKKAD.js';
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
13
|
-
import '../chunk-
|
|
10
|
+
import '../chunk-F3RDEH5U.js';
|
|
11
|
+
import '../chunk-B6GIW55K.js';
|
|
12
|
+
import '../chunk-36AFURKZ.js';
|
|
14
13
|
import '../chunk-4GY63JU6.js';
|
|
15
|
-
import '../chunk-
|
|
16
|
-
import '../chunk-
|
|
14
|
+
import '../chunk-GB7WDMH2.js';
|
|
15
|
+
import '../chunk-PMECEZK3.js';
|
|
17
16
|
import '../chunk-5BEFNLOR.js';
|
|
18
17
|
import '../chunk-A2ULN3KX.js';
|
|
19
|
-
import '../chunk-
|
|
20
|
-
import '../chunk-
|
|
18
|
+
import '../chunk-JAKOMFC6.js';
|
|
19
|
+
import '../chunk-L5VSIPQD.js';
|
|
21
20
|
import '../chunk-CPSIPIX7.js';
|
|
22
|
-
import '../chunk-
|
|
21
|
+
import '../chunk-BTE2V4IW.js';
|
|
23
22
|
import '../chunk-RVRB27AN.js';
|
|
24
|
-
import '../chunk-
|
|
25
|
-
import '../chunk-
|
|
23
|
+
import '../chunk-GTILM2CI.js';
|
|
24
|
+
import '../chunk-QVNRCDTV.js';
|
|
26
25
|
import '../chunk-ICSCSM5D.js';
|
|
27
|
-
import '../chunk-
|
|
26
|
+
import '../chunk-UMVKJM4Q.js';
|
|
28
27
|
import '../chunk-MJHSLODD.js';
|
|
29
28
|
import '../chunk-C3CAXQMA.js';
|
|
30
29
|
import '../chunk-BOFL7GIF.js';
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import { AgentDriver, type AgentConfig, type AgentPromptInput } from "../types.js";
|
|
2
|
-
/**
|
|
1
|
+
import { AgentDriver, type AgentConfig, type AgentPromptInput, type DriverInfo, type ReconfigureOutcome, type ReconfigurePatch } from "../types.js";
|
|
2
|
+
/** Managed (App Server) adapter. `codexDriverTarget` picks it over the standalone `CodexDriver` via `isManagedCodexConfig`. */
|
|
3
3
|
export declare class ManagedCodexDriver extends AgentDriver {
|
|
4
4
|
private config;
|
|
5
|
-
readonly driverInfo:
|
|
6
|
-
id: string;
|
|
7
|
-
name: string;
|
|
8
|
-
modelAgnostic: boolean;
|
|
9
|
-
supportsInBandAbort: boolean;
|
|
10
|
-
};
|
|
5
|
+
readonly driverInfo: DriverInfo;
|
|
11
6
|
private client?;
|
|
12
7
|
private connecting?;
|
|
13
8
|
private options?;
|
|
@@ -37,12 +32,16 @@ export declare class ManagedCodexDriver extends AgentDriver {
|
|
|
37
32
|
private queued;
|
|
38
33
|
private admittedTurns;
|
|
39
34
|
private loginCompleted?;
|
|
40
|
-
|
|
35
|
+
/** Recovery budget for the connection's startup (no active turn); reset on each start. */
|
|
36
|
+
private startupRecovery;
|
|
41
37
|
private startupAuthAttempted;
|
|
42
38
|
private readonly questions;
|
|
43
39
|
get acceptsReplyAsPrompt(): boolean;
|
|
44
40
|
hasPendingQuestion(): boolean;
|
|
45
41
|
answerQuestion(answer: string, question?: string, requestId?: string): boolean;
|
|
42
|
+
/** The settings a later prompt will run on; `config` only takes them at the next turn. */
|
|
43
|
+
private readonly desired;
|
|
44
|
+
private readonly reconfig;
|
|
46
45
|
constructor(config: AgentConfig);
|
|
47
46
|
get runtimeSessionId(): string | undefined;
|
|
48
47
|
get isRunning(): boolean;
|
|
@@ -58,7 +57,11 @@ export declare class ManagedCodexDriver extends AgentDriver {
|
|
|
58
57
|
kill(): void;
|
|
59
58
|
dispose(): Promise<void>;
|
|
60
59
|
resetSession(): Promise<void>;
|
|
61
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Store a model / thinking / effort change; the next prompt merges it into the
|
|
62
|
+
* config before the turn starts, and a turn in flight keeps what it began with.
|
|
63
|
+
*/
|
|
64
|
+
reconfigure(patch: ReconfigurePatch): Promise<ReconfigureOutcome>;
|
|
62
65
|
private closeGeneration;
|
|
63
66
|
private notification;
|
|
64
67
|
private item;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-driver.d.ts","sourceRoot":"","sources":["../../../../bridge/src/codex/managed-driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"managed-driver.d.ts","sourceRoot":"","sources":["../../../../bridge/src/codex/managed-driver.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,WAAW,EACX,KAAK,WAAW,EAGhB,KAAK,gBAAgB,EAIrB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AA6HrB,+HAA+H;AAC/H,qBAAa,kBAAmB,SAAQ,WAAW;IAqErC,OAAO,CAAC,MAAM;IApE1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAM7B;IACF,OAAO,CAAC,MAAM,CAAC,CAAuB;IACtC,OAAO,CAAC,UAAU,CAAC,CAAgC;IACnD,OAAO,CAAC,OAAO,CAAC,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAAC,CAA0B;IAC7C,OAAO,CAAC,oBAAoB,CAAC,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,CAA0C;IAC3D,OAAO,CAAC,KAAK,CAAC,CAAqB;IACnC,OAAO,CAAC,UAAU,CAAwD;IAC1E,OAAO,CAAC,iBAAiB,CAAC,CAGxB;IACF,OAAO,CAAC,cAAc,CAOpB;IACF,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,YAAY,CAAC,CAA8D;IACnF,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAa;IACtC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAC,CAGrB;IACF,0FAA0F;IAC1F,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoD;IAE9E,IAAa,oBAAoB,IAAI,OAAO,CAE3C;IACQ,kBAAkB,IAAI,OAAO;IAG7B,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAIvF,0FAA0F;IAC1F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;gBAEzB,MAAM,EAAE,WAAW;IAqBvC,IAAa,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAElD;IACD,IAAI,SAAS,IAAI,OAAO,CAEvB;IACQ,QAAQ,IAAI,MAAM,GAAG,SAAS;IAIjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA4Bd,UAAU;YA0SV,YAAY;YA8BZ,OAAO;IAmDrB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsB9C,OAAO;IAuFf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B5B,IAAI,IAAI,IAAI;IAMG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBnC;;;OAGG;IACM,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI1E,OAAO,CAAC,eAAe;IAsDvB,OAAO,CAAC,YAAY;IA+GpB,OAAO,CAAC,IAAI;IAgGZ,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,UAAU;IA8DlB,OAAO,CAAC,KAAK;CAMd"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Logger, TokenUsage } from "@skaile/workspaces/types";
|
|
2
|
-
import { type AgentConfig, AgentDriver, type AgentError } from "../types.js";
|
|
2
|
+
import { type AgentConfig, AgentDriver, type AgentError, type ReconfigureApplied, type ReconfigureOutcome, type ReconfigurePatch } from "../types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Shared base for one-shot **subprocess CLI** agent harnesses (Gemini, Qwen,
|
|
5
5
|
* OpenCode, Goose, Continue).
|
|
@@ -41,6 +41,7 @@ export declare abstract class SubprocessCliDriver extends AgentDriver {
|
|
|
41
41
|
/** `"jsonl"` streams events line-by-line; `"buffered"` parses all stdout once on exit. */
|
|
42
42
|
protected readonly mode: "jsonl" | "buffered";
|
|
43
43
|
protected config: AgentConfig;
|
|
44
|
+
private readonly reconfig;
|
|
44
45
|
private proc;
|
|
45
46
|
private rl;
|
|
46
47
|
private stderrBuffer;
|
|
@@ -59,7 +60,16 @@ export declare abstract class SubprocessCliDriver extends AgentDriver {
|
|
|
59
60
|
get runtimeSessionId(): string | undefined;
|
|
60
61
|
getModel(): string | undefined;
|
|
61
62
|
getTokenUsage(): TokenUsage | null;
|
|
62
|
-
|
|
63
|
+
/**
|
|
64
|
+
* A one-shot CLI has no resident process: a patch is stored and the next
|
|
65
|
+
* spawn reads it. The ledger scopes the model and writes the config.
|
|
66
|
+
*/
|
|
67
|
+
reconfigure(patch: ReconfigurePatch): Promise<ReconfigureOutcome>;
|
|
68
|
+
/**
|
|
69
|
+
* A patch was stored in {@link config}. Subclasses that cache something derived
|
|
70
|
+
* from the model (rendered provider files, bindings) invalidate it here.
|
|
71
|
+
*/
|
|
72
|
+
protected onReconfigured(applied: ReconfigureApplied): void;
|
|
63
73
|
/**
|
|
64
74
|
* No-op for one-shot CLIs — there is no long-lived process to spawn until the
|
|
65
75
|
* first prompt. Kept so the runner's `start()` → `prompt()` ordering works
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_subprocess-cli.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/_subprocess-cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"_subprocess-cli.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/_subprocess-cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAKnE,OAAO,EACL,KAAK,WAAW,EAChB,WAAW,EACX,KAAK,UAAU,EAGf,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8BAAsB,mBAAoB,SAAQ,WAAW;IAC3D,2DAA2D;IAC3D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACxC,mEAAmE;IACnE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC/C,+EAA+E;IAC/E,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAChD;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC9C,0FAA0F;IAC1F,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAAW;IAExD,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,UAAU,CAAuC;IAEzD,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,WAAW,EAAE,UAAU,GAAG,IAAI,CAAQ;gBAEpC,MAAM,EAAE,WAAW;IAS/B,IAAa,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAElD;IAEQ,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B,aAAa,IAAI,UAAU,GAAG,IAAI;IAI3C;;;OAGG;IACM,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI1E;;;OAGG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAI3D;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8E5C,gGAAgG;IAC1F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,IAAI,IAAI,IAAI;IAMN,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAQnC,wGAAwG;IACxG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE;IAErF,8EAA8E;IAC9E,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAErD,0GAA0G;IAC1G,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAE1C,2EAA2E;IAC3E,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAE5C,gEAAgE;IAChE,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,MAAM;IAExC;;;;OAIG;IACH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI;IAa7F,uGAAuG;IACvG,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIhD,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAsBpD,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAWnD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAS1D,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,UAAQ,GAAG,IAAI;IAQ5E,OAAO,CAAC,gBAAgB;IASxB,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE;QACzB,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI;IAcR,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,UAAQ,GAAG,IAAI;IAS5D,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAU1D,gFAAgF;IAChF,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAuBtD;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,OAAO,CAAC,SAAS,GAAE,MAAM,EAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAsBnE,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,MAAM;IAwCd,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,oBAAoB;CAwB7B;AAWD,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAwB7C;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,UAAU,GAAG,IAAI,CAa1D;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAIzD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ContextUsageDetail, type DriverContextReport, type ModelTokenUsage, type TokenUsage } from "@skaile/workspaces/types";
|
|
2
2
|
import type { DriverTarget } from "@skaile/workspaces/plugin-registry";
|
|
3
3
|
import { type ModelEntry } from "../models.js";
|
|
4
|
-
import { type AgentConfig, AgentDriver, type DriverInfo, type SlashCommandInfo } from "../types.js";
|
|
4
|
+
import { type AgentConfig, AgentDriver, type ReconfigureOutcome, type ReconfigurePatch, type DriverInfo, type SlashCommandInfo } from "../types.js";
|
|
5
5
|
/** One entry of the SDK result's `modelUsage` map (`ModelUsage` in the SDK's `sdk.d.ts`). */
|
|
6
6
|
type SdkModelUsage = {
|
|
7
7
|
inputTokens?: number;
|
|
@@ -95,10 +95,6 @@ export declare class ClaudeSdkDriver extends AgentDriver {
|
|
|
95
95
|
* {@link shouldRecycleQuery}; reset on every fresh spawn.
|
|
96
96
|
*/
|
|
97
97
|
private lastNumTurns;
|
|
98
|
-
/** What the resident query runs; `null` until the first spawn. */
|
|
99
|
-
private liveQueryConfig;
|
|
100
|
-
/** A config change the resident query cannot take live: respawn at the next turn. */
|
|
101
|
-
private recycleForConfig;
|
|
102
98
|
/**
|
|
103
99
|
* The capability tool set the resident query's `skaile-capabilities` server
|
|
104
100
|
* was built from ({@link capabilityToolsKey}); `null` without capability hooks.
|
|
@@ -107,8 +103,8 @@ export declare class ClaudeSdkDriver extends AgentDriver {
|
|
|
107
103
|
* respawn rebuilds the server — see {@link capabilityToolsChanged}.
|
|
108
104
|
*/
|
|
109
105
|
private liveCapabilityToolsKey;
|
|
110
|
-
/**
|
|
111
|
-
private
|
|
106
|
+
/** Owns the desired config, drift and ordering of live reconfigures. */
|
|
107
|
+
private readonly reconfig;
|
|
112
108
|
/** {@link LIVE_SET_MODEL_TIMEOUT_MS}, as a field so tests can shorten it. */
|
|
113
109
|
private setModelTimeoutMs;
|
|
114
110
|
/**
|
|
@@ -143,30 +139,24 @@ export declare class ClaudeSdkDriver extends AgentDriver {
|
|
|
143
139
|
*/
|
|
144
140
|
private errorResultGraceTimer;
|
|
145
141
|
/**
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
* been spent.
|
|
149
|
-
*
|
|
142
|
+
* The in-flight turn's recovery budget: which one-shot recoveries (stale
|
|
143
|
+
* resume, poison scrub, auth refresh, limit failover, query-ended replay) have
|
|
144
|
+
* been spent. Owned by the recovery policy; the single source for "was this
|
|
145
|
+
* kind already spent?" and "is it still available?".
|
|
150
146
|
*
|
|
151
147
|
* Set unconditionally at the top of every {@link runPrompt} attempt; never
|
|
152
|
-
* reset elsewhere — the next
|
|
148
|
+
* reset elsewhere — the next attempt's set is the only legitimate transition.
|
|
153
149
|
*/
|
|
154
|
-
private
|
|
150
|
+
private recoveryBudget;
|
|
155
151
|
/**
|
|
156
|
-
*
|
|
157
|
-
* {@link
|
|
152
|
+
* The recovery policy's answer for the failure that rejected this attempt,
|
|
153
|
+
* recorded where the failure was classified ({@link failTurn}, or the
|
|
154
|
+
* dispatch-failure site in {@link consumeMessages}). {@link failTurn} defers
|
|
155
|
+
* the error event on it and {@link runPrompt}'s catch carries it out — the
|
|
156
|
+
* policy is never consulted a second time for the same failure. `null` until
|
|
157
|
+
* a failure is recorded; cleared at every attempt start and turn end.
|
|
158
158
|
*/
|
|
159
|
-
private
|
|
160
|
-
/**
|
|
161
|
-
* Mirror of the in-flight turn's stale-resume retry budget — same contract as
|
|
162
|
-
* {@link authSelfHealUsed}, for the "No conversation found" fresh-session retry.
|
|
163
|
-
*/
|
|
164
|
-
private staleResumeRetryUsed;
|
|
165
|
-
/**
|
|
166
|
-
* Mirror of the in-flight turn's poisoned-transcript scrub budget — same
|
|
167
|
-
* contract as {@link authSelfHealUsed}.
|
|
168
|
-
*/
|
|
169
|
-
private poisonScrubUsed;
|
|
159
|
+
private recoveryDecision;
|
|
170
160
|
/**
|
|
171
161
|
* Set when THIS attempt saw an upstream usage-limit rejection: either the
|
|
172
162
|
* SDK's `rate_limit_event` telemetry with `status: "rejected"`, or an error
|
|
@@ -317,15 +307,12 @@ export declare class ClaudeSdkDriver extends AgentDriver {
|
|
|
317
307
|
* applies at the start of the next one, as omp does). A change it cannot take
|
|
318
308
|
* live (thinking/effort, a model on another registry entry, a rejected or
|
|
319
309
|
* timed-out `setModel`) recycles the query at the next turn boundary, so the
|
|
320
|
-
* fresh CLI resumes with the new config.
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
private syncLiveQueryConfig;
|
|
327
|
-
/** Bring the resident query in line with the driver config. Never rejects. */
|
|
328
|
-
private applyConfigToLiveQuery;
|
|
310
|
+
* fresh CLI resumes with the new config. The {@link ReconfigureLedger} owns
|
|
311
|
+
* the scope rule, ordering and drift; {@link applyLive} is this driver's hook.
|
|
312
|
+
*/
|
|
313
|
+
reconfigure(patch: ReconfigurePatch): Promise<ReconfigureOutcome>;
|
|
314
|
+
/** Bring the resident query in line with a drifted config. Never rejects. */
|
|
315
|
+
private applyLive;
|
|
329
316
|
getModel(): string | undefined;
|
|
330
317
|
/**
|
|
331
318
|
* Dynamically imports `@anthropic-ai/claude-agent-sdk`.
|
|
@@ -649,13 +636,15 @@ export declare class ClaudeSdkDriver extends AgentDriver {
|
|
|
649
636
|
* caller transitions even if the listener chain misbehaves; the emit is
|
|
650
637
|
* wrapped in try/catch so a listener failure cannot leak out.
|
|
651
638
|
*
|
|
652
|
-
*
|
|
653
|
-
*
|
|
654
|
-
*
|
|
655
|
-
*
|
|
656
|
-
* {@link
|
|
657
|
-
*
|
|
658
|
-
*
|
|
639
|
+
* Recovery deferral: the recovery policy is asked ONCE per failure
|
|
640
|
+
* ({@link decideRecovery}) — unless the caller already decided and passes its
|
|
641
|
+
* answer as `decided` — and the answer is recorded on the turn. When it names
|
|
642
|
+
* an attempt, the downstream `agent-event: error` emission is deferred: the
|
|
643
|
+
* rejected turn promise still travels to {@link runPrompt}'s catch, which
|
|
644
|
+
* carries out that recorded attempt. If the attempt succeeds the user never
|
|
645
|
+
* sees the failure (a 401 self-heal, a seat switch, a stale-resume replay);
|
|
646
|
+
* if it declines, the catch emits the held-back error exactly once. A retry
|
|
647
|
+
* that fails again is decided afresh against the spent budget, so it emits
|
|
659
648
|
* normally. This stops the historical "401 flashes in the UI even though
|
|
660
649
|
* self-heal worked" misbehaviour where the bridge emitted the error event
|
|
661
650
|
* before the retry decision was known.
|
|
@@ -666,25 +655,13 @@ export declare class ClaudeSdkDriver extends AgentDriver {
|
|
|
666
655
|
*/
|
|
667
656
|
private failTurn;
|
|
668
657
|
/**
|
|
669
|
-
*
|
|
670
|
-
*
|
|
671
|
-
*
|
|
672
|
-
* (to decide whether to reject the turn at all) — one predicate so the two
|
|
673
|
-
* can never disagree and strand a deferred event.
|
|
674
|
-
*/
|
|
675
|
-
private willFailoverOnLimit;
|
|
676
|
-
/**
|
|
677
|
-
* Whether `message` is a lost-transcript resume failure that `runPrompt` will
|
|
678
|
-
* still retry on a fresh session. The same test `runPrompt`'s catch applies,
|
|
679
|
-
* so a deferred error is always followed by the retry that drops it.
|
|
680
|
-
*/
|
|
681
|
-
private willRetryStaleResume;
|
|
682
|
-
/**
|
|
683
|
-
* Whether `runPrompt`'s catch will attempt a transcript scrub for `message`.
|
|
684
|
-
* The scrub may still find nothing, so unlike {@link willRetryStaleResume}
|
|
685
|
-
* the deferred error is not always dropped: `runPrompt` flushes it then.
|
|
658
|
+
* Ask the recovery policy what to do about `err`. Called once per failure, by
|
|
659
|
+
* the code that classifies it; the answer is recorded in
|
|
660
|
+
* {@link recoveryDecision} and acted on by {@link runPrompt}'s catch.
|
|
686
661
|
*/
|
|
687
|
-
private
|
|
662
|
+
private decideRecovery;
|
|
663
|
+
/** Which host callbacks and session state a recovery could use right now. */
|
|
664
|
+
private recoveryWiring;
|
|
688
665
|
/** Emit one `agent-event: error`, swallowing a throwing listener. */
|
|
689
666
|
private emitTurnErrorEvent;
|
|
690
667
|
/** Fold a replayed failover attempt's usage into the `result` that ends the turn, once. */
|
|
@@ -758,8 +735,6 @@ export declare class ClaudeSdkDriver extends AgentDriver {
|
|
|
758
735
|
* why that is forced: `_devlog/notes/2026-06-08-auth-error-text-suppress.md`.
|
|
759
736
|
*/
|
|
760
737
|
private isSuppressibleAuthRenderText;
|
|
761
|
-
/** Whether a 401 on this attempt can still be self-healed and retried. */
|
|
762
|
-
private authSelfHealAvailable;
|
|
763
738
|
/**
|
|
764
739
|
* Stash a dropped auth render as evidence for {@link handleResultErrorPayload}.
|
|
765
740
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/claude-sdk.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAExB,KAAK,eAAe,EACpB,KAAK,UAAU,EAEhB,MAAM,0BAA0B,CAAC;AAkBlC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAqBvE,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAIpE,OAAO,EACL,KAAK,WAAW,EAChB,WAAW,
|
|
1
|
+
{"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/claude-sdk.ts"],"names":[],"mappings":"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"}
|