@skaile/workspaces 4.11.0 → 4.13.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 +30 -0
- package/dist/{asset-feeds-3TOP4ZKE.js → asset-feeds-AAQOGRLM.js} +14 -13
- package/dist/asset-feeds-AAQOGRLM.js.map +1 -0
- package/dist/asset-manager/catalog-deployer.js +10 -9
- package/dist/asset-manager/index.js +14 -13
- package/dist/asset-manager/installer.js +10 -9
- package/dist/bridge/drivers/claude-sdk.js +229 -26
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +12 -11
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +14 -12
- package/dist/bridge/drivers/continue.js.map +1 -1
- package/dist/bridge/drivers/echo.js +11 -8
- package/dist/bridge/drivers/echo.js.map +1 -1
- package/dist/bridge/drivers/gemini.js +10 -8
- package/dist/bridge/drivers/goose.js +13 -11
- package/dist/bridge/drivers/goose.js.map +1 -1
- package/dist/bridge/drivers/omp.js +8 -6
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +15 -12
- package/dist/bridge/drivers/opencode.js.map +1 -1
- package/dist/bridge/drivers/qwen.js +10 -8
- package/dist/bridge/drivers/qwen.js.map +1 -1
- package/dist/bridge/index.js +14 -13
- package/dist/bridge/src/cloud.d.ts.map +1 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts +18 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/echo.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +1 -1
- package/dist/bridge/src/mcp-tool-schema-filter.d.ts +44 -0
- package/dist/bridge/src/mcp-tool-schema-filter.d.ts.map +1 -0
- package/dist/bridge/src/provider-materialize/continue-config-yaml.d.ts.map +1 -1
- package/dist/bridge/src/provider-materialize/env-drivers.d.ts +20 -5
- package/dist/bridge/src/provider-materialize/env-drivers.d.ts.map +1 -1
- package/dist/bridge/src/provider-materialize/opencode-config.d.ts.map +1 -1
- package/dist/bridge/src/types.d.ts +6 -2
- package/dist/bridge/src/types.d.ts.map +1 -1
- package/dist/{chunk-MKZOK4JU.js → chunk-2FBPAR2V.js} +3 -3
- package/dist/{chunk-MKZOK4JU.js.map → chunk-2FBPAR2V.js.map} +1 -1
- package/dist/{chunk-CJXSTOGW.js → chunk-4JGTXBQB.js} +4 -4
- package/dist/{chunk-CJXSTOGW.js.map → chunk-4JGTXBQB.js.map} +1 -1
- package/dist/{chunk-OUJVFZWJ.js → chunk-4SIMGJIU.js} +4 -9
- package/dist/chunk-4SIMGJIU.js.map +1 -0
- package/dist/{chunk-AT2TJEWG.js → chunk-65VAYFIJ.js} +11 -11
- package/dist/chunk-65VAYFIJ.js.map +1 -0
- package/dist/{chunk-JM2LRJ46.js → chunk-6Y3ICAPP.js} +3 -3
- package/dist/{chunk-JM2LRJ46.js.map → chunk-6Y3ICAPP.js.map} +1 -1
- package/dist/{chunk-7IRJ4K4F.js → chunk-7IH3RKKK.js} +3 -3
- package/dist/{chunk-7IRJ4K4F.js.map → chunk-7IH3RKKK.js.map} +1 -1
- package/dist/{chunk-JECDED7B.js → chunk-7NRF7BQB.js} +5 -5
- package/dist/{chunk-JECDED7B.js.map → chunk-7NRF7BQB.js.map} +1 -1
- package/dist/{chunk-O3DHAGBO.js → chunk-A2T4WIZL.js} +6 -5
- package/dist/chunk-A2T4WIZL.js.map +1 -0
- package/dist/chunk-ALLCAFHQ.js +365 -0
- package/dist/chunk-ALLCAFHQ.js.map +1 -0
- package/dist/chunk-BDFR5MHE.js +141 -0
- package/dist/chunk-BDFR5MHE.js.map +1 -0
- package/dist/{chunk-W4IPN3DD.js → chunk-BOFL7GIF.js} +62 -10
- package/dist/chunk-BOFL7GIF.js.map +1 -0
- package/dist/{chunk-WXB6YEHZ.js → chunk-BRNGJTHH.js} +3 -3
- package/dist/{chunk-WXB6YEHZ.js.map → chunk-BRNGJTHH.js.map} +1 -1
- package/dist/chunk-C3CAXQMA.js +8 -0
- package/dist/chunk-C3CAXQMA.js.map +1 -0
- package/dist/{chunk-35PMOWAD.js → chunk-CPIAQTYM.js} +4 -4
- package/dist/chunk-CPIAQTYM.js.map +1 -0
- package/dist/{chunk-REYJKU7T.js → chunk-DHMBE5J7.js} +12 -364
- package/dist/chunk-DHMBE5J7.js.map +1 -0
- package/dist/{chunk-KSIRR5PL.js → chunk-DPLIN2RA.js} +3 -3
- package/dist/{chunk-KSIRR5PL.js.map → chunk-DPLIN2RA.js.map} +1 -1
- package/dist/{chunk-PBCNRS7Q.js → chunk-EUHB2BD2.js} +6 -6
- package/dist/{chunk-PBCNRS7Q.js.map → chunk-EUHB2BD2.js.map} +1 -1
- package/dist/{chunk-6XKQEDF7.js → chunk-FKWGIDUG.js} +6 -5
- package/dist/chunk-FKWGIDUG.js.map +1 -0
- package/dist/{chunk-ILG4BXYE.js → chunk-GZZPKAV5.js} +27 -3
- package/dist/chunk-GZZPKAV5.js.map +1 -0
- package/dist/{chunk-M5H4DWIA.js → chunk-HGPSZXZP.js} +3 -3
- package/dist/{chunk-M5H4DWIA.js.map → chunk-HGPSZXZP.js.map} +1 -1
- package/dist/{chunk-L3PZINDD.js → chunk-HXTBOZL6.js} +8 -8
- package/dist/{chunk-L3PZINDD.js.map → chunk-HXTBOZL6.js.map} +1 -1
- package/dist/{chunk-IGGHUTOW.js → chunk-HZBRHZPI.js} +4 -4
- package/dist/{chunk-IGGHUTOW.js.map → chunk-HZBRHZPI.js.map} +1 -1
- package/dist/{chunk-VLXODO37.js → chunk-IQFSXFYG.js} +3 -3
- package/dist/{chunk-VLXODO37.js.map → chunk-IQFSXFYG.js.map} +1 -1
- package/dist/{chunk-3HKYCT2M.js → chunk-JMKB7IB4.js} +4 -6
- package/dist/chunk-JMKB7IB4.js.map +1 -0
- package/dist/{chunk-S2MT6SDZ.js → chunk-KTSV5TDX.js} +107 -48
- package/dist/chunk-KTSV5TDX.js.map +1 -0
- package/dist/{chunk-IECQMSQ5.js → chunk-KUH4EKQQ.js} +4 -129
- package/dist/chunk-KUH4EKQQ.js.map +1 -0
- package/dist/{chunk-3YTFHHMI.js → chunk-LCKZCLXA.js} +3 -3
- package/dist/{chunk-3YTFHHMI.js.map → chunk-LCKZCLXA.js.map} +1 -1
- package/dist/{chunk-GXACG5ZE.js → chunk-N6XJGVSK.js} +50 -41
- package/dist/chunk-N6XJGVSK.js.map +1 -0
- package/dist/{chunk-SIGVAFRJ.js → chunk-NC7YSNBP.js} +10 -10
- package/dist/{chunk-SIGVAFRJ.js.map → chunk-NC7YSNBP.js.map} +1 -1
- package/dist/{chunk-UXUDNBJM.js → chunk-NKRAHM7T.js} +3 -3
- package/dist/{chunk-UXUDNBJM.js.map → chunk-NKRAHM7T.js.map} +1 -1
- package/dist/{chunk-WILO77HE.js → chunk-NXTLDFLA.js} +4 -4
- package/dist/{chunk-WILO77HE.js.map → chunk-NXTLDFLA.js.map} +1 -1
- package/dist/{chunk-FAI2SMFE.js → chunk-P2DLXBZK.js} +4 -4
- package/dist/{chunk-FAI2SMFE.js.map → chunk-P2DLXBZK.js.map} +1 -1
- package/dist/{chunk-2HUQUTJ3.js → chunk-PE3A6FFW.js} +4 -4
- package/dist/{chunk-2HUQUTJ3.js.map → chunk-PE3A6FFW.js.map} +1 -1
- package/dist/{chunk-DMUY5C3X.js → chunk-PHURDPQO.js} +10 -8
- package/dist/chunk-PHURDPQO.js.map +1 -0
- package/dist/{chunk-3T5DRUNZ.js → chunk-PQF3NDQH.js} +5 -5
- package/dist/{chunk-3T5DRUNZ.js.map → chunk-PQF3NDQH.js.map} +1 -1
- package/dist/{chunk-7BUZQVRR.js → chunk-Q6NDQ6BH.js} +4 -4
- package/dist/{chunk-7BUZQVRR.js.map → chunk-Q6NDQ6BH.js.map} +1 -1
- package/dist/{chunk-HO4UO25I.js → chunk-QWGSKDD7.js} +91 -7
- package/dist/chunk-QWGSKDD7.js.map +1 -0
- package/dist/{chunk-2D5BYAL6.js → chunk-RQLL7L72.js} +3 -3
- package/dist/{chunk-2D5BYAL6.js.map → chunk-RQLL7L72.js.map} +1 -1
- package/dist/{chunk-3XXQPHGL.js → chunk-T3YUSWVK.js} +4 -4
- package/dist/{chunk-3XXQPHGL.js.map → chunk-T3YUSWVK.js.map} +1 -1
- package/dist/{chunk-MMLXSVQ3.js → chunk-UOJW2DOZ.js} +5 -5
- package/dist/{chunk-MMLXSVQ3.js.map → chunk-UOJW2DOZ.js.map} +1 -1
- package/dist/{chunk-ELPR5XBG.js → chunk-V4RGCKYC.js} +5 -3
- package/dist/chunk-V4RGCKYC.js.map +1 -0
- package/dist/{chunk-UKJMQZV6.js → chunk-VOEBLPXO.js} +2 -2
- package/dist/chunk-VOEBLPXO.js.map +1 -0
- package/dist/{chunk-7SNYWCQS.js → chunk-WIQDBNMF.js} +3 -3
- package/dist/{chunk-7SNYWCQS.js.map → chunk-WIQDBNMF.js.map} +1 -1
- package/dist/{chunk-A3X4LDOD.js → chunk-WQPLZUXU.js} +6 -6
- package/dist/{chunk-A3X4LDOD.js.map → chunk-WQPLZUXU.js.map} +1 -1
- package/dist/{chunk-7ZJXFQ42.js → chunk-WZQWZJYL.js} +3 -3
- package/dist/{chunk-7ZJXFQ42.js.map → chunk-WZQWZJYL.js.map} +1 -1
- package/dist/{chunk-BXV6RLF4.js → chunk-XKPFQ3JT.js} +4 -4
- package/dist/{chunk-BXV6RLF4.js.map → chunk-XKPFQ3JT.js.map} +1 -1
- package/dist/{chunk-KLMXMW6Z.js → chunk-XPDB4O4H.js} +3 -3
- package/dist/{chunk-KLMXMW6Z.js.map → chunk-XPDB4O4H.js.map} +1 -1
- package/dist/{chunk-GUZNTYHE.js → chunk-YXUVOWEU.js} +4 -4
- package/dist/{chunk-GUZNTYHE.js.map → chunk-YXUVOWEU.js.map} +1 -1
- package/dist/{chunk-I3UWSGEB.js → chunk-ZK7DQRB2.js} +3 -3
- package/dist/{chunk-I3UWSGEB.js.map → chunk-ZK7DQRB2.js.map} +1 -1
- package/dist/{chunk-KJM7Y2FW.js → chunk-ZUOZV7CS.js} +7 -7
- package/dist/{chunk-KJM7Y2FW.js.map → chunk-ZUOZV7CS.js.map} +1 -1
- package/dist/cli/index.js +76 -69
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/migrate-legacy-entry.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/store-auth.d.ts.map +1 -1
- package/dist/connectors/config.js +5 -13
- package/dist/connectors/index.js +22 -20
- package/dist/connectors/src/config.d.ts.map +1 -1
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/materialized-connectors.d.ts.map +1 -1
- package/dist/connectors/src/secrets.d.ts.map +1 -1
- package/dist/core/index.js +9 -8
- package/dist/core/logging.js +3 -2
- package/dist/core/manifest.js +2 -2
- package/dist/core/provider-registry-credentials.js +2 -2
- package/dist/core/provider-registry.js +1 -1
- package/dist/core/runtime-assets.js +5 -4
- package/dist/core/src/index.d.ts +3 -3
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/logging/create-logger.d.ts.map +1 -1
- package/dist/core/src/logging/index.d.ts +1 -0
- package/dist/core/src/logging/index.d.ts.map +1 -1
- package/dist/core/src/logging/redact.d.ts +33 -0
- package/dist/core/src/logging/redact.d.ts.map +1 -0
- package/dist/core/src/logging/retention-value.d.ts +7 -0
- package/dist/core/src/logging/retention-value.d.ts.map +1 -0
- package/dist/core/src/logging/retention.d.ts.map +1 -1
- package/dist/core/src/logging/sanitize.d.ts +11 -0
- package/dist/core/src/logging/sanitize.d.ts.map +1 -1
- package/dist/core/src/provider-registry.d.ts +22 -0
- package/dist/core/src/provider-registry.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +51 -2
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +4 -3
- package/dist/deploy/index.js +9 -8
- package/dist/deploy/index.js.map +1 -1
- package/dist/discovery/index.js +3 -3
- package/dist/{ensure-sources-2OC2X3ZM.js → ensure-sources-PSWARJPK.js} +17 -16
- package/dist/ensure-sources-PSWARJPK.js.map +1 -0
- package/dist/factory-assets/connectors/box.js +22 -20
- package/dist/factory-assets/connectors/deploy.js +22 -20
- package/dist/factory-assets/connectors/devserver.js +22 -20
- package/dist/factory-assets/connectors/flow/CONNECTOR.md +4 -2
- package/dist/factory-assets/connectors/flow/adapter.js +22 -20
- package/dist/factory-assets/connectors/flow/contract/schema.d.ts +12 -0
- package/dist/factory-assets/connectors/flow/contract/schema.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract.js +4 -3
- package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine.js +13 -11
- package/dist/factory-assets/connectors/flow/prompt-fragments.js +3 -2
- package/dist/factory-assets/connectors/flow/run-flow.js +24 -22
- package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow.js +22 -20
- package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +22 -20
- package/dist/factory-assets/connectors/gmail.js +22 -20
- package/dist/factory-assets/connectors/googledrive.js +22 -20
- package/dist/factory-assets/connectors/local.js +22 -20
- package/dist/factory-assets/connectors/mattermost.js +22 -20
- package/dist/factory-assets/connectors/memory.js +22 -20
- package/dist/factory-assets/connectors/minio.js +22 -20
- package/dist/factory-assets/connectors/postgres.js +22 -20
- package/dist/factory-assets/connectors/s3.js +22 -20
- package/dist/factory-assets/connectors/sharepoint.js +22 -20
- package/dist/factory-assets/connectors/sqlite.js +22 -20
- package/dist/factory-assets/connectors/static-server.js +22 -20
- package/dist/factory-assets/connectors/tunnel.js +22 -20
- package/dist/factory-assets/connectors/webdav.js +22 -20
- package/dist/factory-assets/connectors/xstate-store.js +22 -20
- package/dist/factory-assets/connectors/xstate.js +22 -20
- package/dist/flows-7EB63Q2Q.js +24 -0
- package/dist/{flows-H6FL4NZU.js.map → flows-7EB63Q2Q.js.map} +1 -1
- package/dist/{helpers-RPJUSSG3.js → helpers-LHHGL2NL.js} +17 -16
- package/dist/{helpers-RPJUSSG3.js.map → helpers-LHHGL2NL.js.map} +1 -1
- package/dist/library/index.js +12 -11
- package/dist/library/install.js +1 -15
- package/dist/library/src/install/install-from-manifest.d.ts.map +1 -1
- package/dist/{library-publish-AAD6GTIF.js → library-publish-4SBO437O.js} +24 -22
- package/dist/library-publish-4SBO437O.js.map +1 -0
- package/dist/open-library-SF2F7NDS.js +37 -0
- package/dist/{open-library-HDOM4MLS.js.map → open-library-SF2F7NDS.js.map} +1 -1
- package/dist/paths-IK6Y4OIU.js +20 -0
- package/dist/{paths-RL6NZW5X.js.map → paths-IK6Y4OIU.js.map} +1 -1
- package/dist/{plugin-store-ZTAJCMTY.js → plugin-store-LUJ4GXSO.js} +11 -10
- package/dist/plugin-store-LUJ4GXSO.js.map +1 -0
- package/dist/{project-2B52FKAY.js → project-ZHPOPJBE.js} +18 -17
- package/dist/{project-2B52FKAY.js.map → project-ZHPOPJBE.js.map} +1 -1
- package/dist/resolver/index.js +10 -9
- package/dist/run-group-engine/index.js.map +1 -1
- package/dist/run-group-engine/src/rollup.d.ts.map +1 -1
- package/dist/runner/index.js +33 -31
- package/dist/runner/src/capability-registry.d.ts +13 -1
- package/dist/runner/src/capability-registry.d.ts.map +1 -1
- package/dist/runner/src/codex-init.d.ts.map +1 -1
- package/dist/runner/src/compaction/orchestrator.d.ts.map +1 -1
- package/dist/runner/src/compaction/strategy.d.ts +8 -5
- package/dist/runner/src/compaction/strategy.d.ts.map +1 -1
- package/dist/runner/src/lifecycle-handler.d.ts.map +1 -1
- package/dist/runner/src/log-content.d.ts +22 -0
- package/dist/runner/src/log-content.d.ts.map +1 -0
- package/dist/runner/src/logging-bootstrap.d.ts +6 -1
- package/dist/runner/src/logging-bootstrap.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-builder.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +14 -13
- package/dist/sdk/bridge.js +14 -13
- package/dist/sdk/core.js +9 -8
- package/dist/sdk/flow.js +13 -11
- package/dist/sdk/index.js +33 -31
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +10 -9
- package/dist/sdk/runner.js +33 -31
- package/dist/{setup-MVBITSVT.js → setup-3NXXR7SH.js} +23 -22
- package/dist/setup-3NXXR7SH.js.map +1 -0
- package/dist/skills-YB5RHUAT.js +24 -0
- package/dist/{skills-Y6MU2NRI.js.map → skills-YB5RHUAT.js.map} +1 -1
- package/dist/source-C2OYNI3T.js +38 -0
- package/dist/{source-53PY7DXF.js.map → source-C2OYNI3T.js.map} +1 -1
- package/dist/{source-manifest-publish-ALRZKEBO.js → source-manifest-publish-BKS763DB.js} +25 -23
- package/dist/source-manifest-publish-BKS763DB.js.map +1 -0
- package/dist/tui/index.js +33 -31
- package/dist/tui/index.js.map +1 -1
- package/dist/types/src/manifests/preset.d.ts +5 -5
- package/dist/workspace-plugin/adapters/mcp.js +15 -14
- package/dist/workspace-plugin/adapters/omp.js +7 -7
- package/dist/workspace-plugin/adapters/omp.js.map +1 -1
- package/dist/workspace-plugin/index.js +4 -3
- package/dist/workspace-plugin/src/adapters/omp.d.ts.map +1 -1
- package/package.json +3 -1
- package/dist/asset-feeds-3TOP4ZKE.js.map +0 -1
- package/dist/chunk-35PMOWAD.js.map +0 -1
- package/dist/chunk-3HKYCT2M.js.map +0 -1
- package/dist/chunk-6XKQEDF7.js.map +0 -1
- package/dist/chunk-AT2TJEWG.js.map +0 -1
- package/dist/chunk-DMUY5C3X.js.map +0 -1
- package/dist/chunk-ELPR5XBG.js.map +0 -1
- package/dist/chunk-GXACG5ZE.js.map +0 -1
- package/dist/chunk-HO4UO25I.js.map +0 -1
- package/dist/chunk-IECQMSQ5.js.map +0 -1
- package/dist/chunk-ILG4BXYE.js.map +0 -1
- package/dist/chunk-O3DHAGBO.js.map +0 -1
- package/dist/chunk-OUJVFZWJ.js.map +0 -1
- package/dist/chunk-REYJKU7T.js.map +0 -1
- package/dist/chunk-S2MT6SDZ.js.map +0 -1
- package/dist/chunk-UKJMQZV6.js.map +0 -1
- package/dist/chunk-W4IPN3DD.js.map +0 -1
- package/dist/ensure-sources-2OC2X3ZM.js.map +0 -1
- package/dist/flows-H6FL4NZU.js +0 -23
- package/dist/library-publish-AAD6GTIF.js.map +0 -1
- package/dist/open-library-HDOM4MLS.js +0 -35
- package/dist/paths-RL6NZW5X.js +0 -19
- package/dist/plugin-store-ZTAJCMTY.js.map +0 -1
- package/dist/setup-MVBITSVT.js.map +0 -1
- package/dist/skills-Y6MU2NRI.js +0 -23
- package/dist/source-53PY7DXF.js +0 -36
- package/dist/source-manifest-publish-ALRZKEBO.js.map +0 -1
|
@@ -1,133 +1,8 @@
|
|
|
1
1
|
import { classifyGenericErrorMessage } from './chunk-GAH4YRCI.js';
|
|
2
|
-
import {
|
|
3
|
-
import { mergeRegistries, resolveEntryBaseUrl, registryEntries, isEntryEnabled, parseModelRef } from './chunk-ILG4BXYE.js';
|
|
2
|
+
import { AgentDriver } from './chunk-PQF3NDQH.js';
|
|
4
3
|
import { spawn } from 'child_process';
|
|
5
4
|
import { createInterface } from 'readline';
|
|
6
5
|
|
|
7
|
-
// bridge/src/provider-materialize/env-drivers.ts
|
|
8
|
-
function resolveEnvDriverSession(config, processEnv = process.env) {
|
|
9
|
-
return {
|
|
10
|
-
registry: config.registry ?? mergeRegistries([]),
|
|
11
|
-
lookupEnv: { ...processEnv, ...config.env },
|
|
12
|
-
...config.modelRef ? { modelRef: config.modelRef } : {},
|
|
13
|
-
...config.roles ? { roles: config.roles } : {}
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
function entrySurface(entry) {
|
|
17
|
-
if (entry.surface) return entry.surface;
|
|
18
|
-
return entry.preset ? getProviderPreset(entry.preset)?.surface : void 0;
|
|
19
|
-
}
|
|
20
|
-
function entryBaseUrl(entry) {
|
|
21
|
-
const resolved = resolveEntryBaseUrl(entry);
|
|
22
|
-
if (resolved) return resolved;
|
|
23
|
-
return entry.preset ? getProviderPreset(entry.preset)?.base_url : void 0;
|
|
24
|
-
}
|
|
25
|
-
function isStockCatalogEndpoint(entry) {
|
|
26
|
-
const preset = entry.preset ? getProviderPreset(entry.preset) : void 0;
|
|
27
|
-
return preset !== void 0 && entryBaseUrl(entry) === preset.base_url;
|
|
28
|
-
}
|
|
29
|
-
function backendProviderName(providerId, entry) {
|
|
30
|
-
const preset = entry.preset ? getProviderPreset(entry.preset) : void 0;
|
|
31
|
-
if (!preset || !isStockCatalogEndpoint(entry)) return providerId;
|
|
32
|
-
return preset.id;
|
|
33
|
-
}
|
|
34
|
-
function selectableEntries(registry) {
|
|
35
|
-
return registryEntries(registry).filter(
|
|
36
|
-
(pair) => (pair[1].kind === "llm" || pair[1].kind === "embed") && isEntryEnabled(pair[1])
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
function entryModelIds(entry) {
|
|
40
|
-
const logicalIds = [
|
|
41
|
-
...Object.keys(entry.model_map ?? {}),
|
|
42
|
-
...Object.keys(entry.capabilities ?? {}).filter((id) => !(id in (entry.model_map ?? {})))
|
|
43
|
-
];
|
|
44
|
-
return logicalIds.map((id) => [id, entry.model_map?.[id] ?? id]);
|
|
45
|
-
}
|
|
46
|
-
function describeBinding(providerId, entry, modelId, providerModelId, warnings) {
|
|
47
|
-
const surface = entrySurface(entry);
|
|
48
|
-
const baseUrl = entryBaseUrl(entry);
|
|
49
|
-
return {
|
|
50
|
-
providerId,
|
|
51
|
-
entry,
|
|
52
|
-
...modelId === void 0 ? {} : { modelId },
|
|
53
|
-
...providerModelId === void 0 ? {} : { providerModelId },
|
|
54
|
-
...surface ? { surface } : {},
|
|
55
|
-
...baseUrl ? { baseUrl } : {},
|
|
56
|
-
backendProviderId: backendProviderName(providerId, entry),
|
|
57
|
-
warnings
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
function resolveRegistryBinding(session) {
|
|
61
|
-
const entries = selectableEntries(session.registry);
|
|
62
|
-
if (entries.length === 0) return void 0;
|
|
63
|
-
const selector = session.modelRef?.trim();
|
|
64
|
-
if (!selector) {
|
|
65
|
-
const [providerId, entry] = entries[0];
|
|
66
|
-
return describeBinding(providerId, entry, void 0, void 0, []);
|
|
67
|
-
}
|
|
68
|
-
const named = entries.find(([id]) => id === selector);
|
|
69
|
-
if (named) return describeBinding(named[0], named[1], void 0, void 0, []);
|
|
70
|
-
const resolved = parseModelRef(selector, session.registry, session.roles);
|
|
71
|
-
if (!resolved) return void 0;
|
|
72
|
-
const match = entries.find(([id]) => id === resolved.providerId);
|
|
73
|
-
if (!match) return void 0;
|
|
74
|
-
return describeBinding(
|
|
75
|
-
match[0],
|
|
76
|
-
match[1],
|
|
77
|
-
resolved.modelId,
|
|
78
|
-
resolved.providerModelId,
|
|
79
|
-
resolved.warnings
|
|
80
|
-
);
|
|
81
|
-
}
|
|
82
|
-
function credentialsForEveryProvider(session) {
|
|
83
|
-
return registryCredentialEnv(session.registry, { env: session.lookupEnv });
|
|
84
|
-
}
|
|
85
|
-
function assertDriverSpeaksSurface(driverId, productName, binding) {
|
|
86
|
-
const supported = BUILTIN_DRIVER_CATALOG[driverId]?.surfaces;
|
|
87
|
-
if (!supported || supported.length === 0) return;
|
|
88
|
-
const surface = binding.surface;
|
|
89
|
-
if (!surface || supported.includes(surface)) return;
|
|
90
|
-
throw new Error(
|
|
91
|
-
`${productName} cannot speak the '${surface}' surface of AI provider entry '${binding.providerId}'. ${productName} speaks: ${supported.join(", ")}. Point this session's model at an entry with one of those surfaces, or run it on a driver that speaks '${surface}'.`
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
function registryModelEntries(session) {
|
|
95
|
-
const out = [];
|
|
96
|
-
const seen = /* @__PURE__ */ new Set();
|
|
97
|
-
for (const [providerId, entry] of selectableEntries(session.registry)) {
|
|
98
|
-
const backendId = backendProviderName(providerId, entry);
|
|
99
|
-
const label = entry.label ?? providerId;
|
|
100
|
-
for (const [logicalId, providerModelId] of entryModelIds(entry)) {
|
|
101
|
-
const id = `${backendId}/${providerModelId}`;
|
|
102
|
-
if (seen.has(id)) continue;
|
|
103
|
-
seen.add(id);
|
|
104
|
-
out.push({ id, name: `${label} ${logicalId}` });
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return out;
|
|
108
|
-
}
|
|
109
|
-
function bindSingleProviderEntry(driverId, productName, session) {
|
|
110
|
-
const binding = resolveRegistryBinding(session);
|
|
111
|
-
if (!binding) return void 0;
|
|
112
|
-
assertDriverSpeaksSurface(driverId, productName, binding);
|
|
113
|
-
return binding;
|
|
114
|
-
}
|
|
115
|
-
function backendModelSelector(binding) {
|
|
116
|
-
if (!binding.providerModelId) return void 0;
|
|
117
|
-
return `${binding.backendProviderId}/${binding.providerModelId}`;
|
|
118
|
-
}
|
|
119
|
-
function continueRoleBinding(session) {
|
|
120
|
-
const binding = resolveRegistryBinding(session);
|
|
121
|
-
if (!binding) return void 0;
|
|
122
|
-
return {
|
|
123
|
-
role: "chat",
|
|
124
|
-
providerId: binding.providerId,
|
|
125
|
-
provider: binding.backendProviderId,
|
|
126
|
-
...binding.providerModelId ? { model: binding.providerModelId } : {},
|
|
127
|
-
...binding.baseUrl ? { apiBase: binding.baseUrl } : {},
|
|
128
|
-
apiKeyEnv: providerCredentialEnvName(binding.providerId)
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
6
|
var SubprocessCliDriver = class extends AgentDriver {
|
|
132
7
|
/** `"jsonl"` streams events line-by-line; `"buffered"` parses all stdout once on exit. */
|
|
133
8
|
mode = "jsonl";
|
|
@@ -550,6 +425,6 @@ function extractCost(json) {
|
|
|
550
425
|
return typeof c === "number" ? c : void 0;
|
|
551
426
|
}
|
|
552
427
|
|
|
553
|
-
export { SubprocessCliDriver,
|
|
554
|
-
//# sourceMappingURL=chunk-
|
|
555
|
-
//# sourceMappingURL=chunk-
|
|
428
|
+
export { SubprocessCliDriver, extractCost, extractText, extractTokens };
|
|
429
|
+
//# sourceMappingURL=chunk-KUH4EKQQ.js.map
|
|
430
|
+
//# sourceMappingURL=chunk-KUH4EKQQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../bridge/src/drivers/_subprocess-cli.ts"],"names":[],"mappings":";;;;;AAqCO,IAAe,mBAAA,GAAf,cAA2C,WAAA,CAAY;AAAA;AAAA,EAezC,IAAA,GAA6B,OAAA;AAAA,EAEtC,MAAA;AAAA,EAEF,IAAA,GAA4B,IAAA;AAAA,EAC5B,EAAA,GAAuB,IAAA;AAAA,EACvB,eAAyB,EAAC;AAAA,EAC1B,YAAA,GAAe,EAAA;AAAA,EACf,OAAA,GAAU,KAAA;AAAA;AAAA,EAGV,QAAA,GAAW,EAAA;AAAA,EACX,eAAA,GAAkB,KAAA;AAAA,EAClB,qBAAqC,EAAC;AAAA,EACtC,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA,GAAW,KAAA;AAAA,EACX,WAAA,GAAmC,IAAA;AAAA,EACnC,UAAA,GAA4C,IAAA;AAAA,EAE1C,UAAA;AAAA,EACA,WAAA,GAAiC,IAAA;AAAA,EAE3C,YAAY,MAAA,EAAqB;AAC/B,IAAA,KAAA,EAAM;AACN,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA,EAEA,IAAa,gBAAA,GAAuC;AAClD,IAAA,OAAO,IAAA,CAAK,UAAA;AAAA,EACd;AAAA,EAES,QAAA,GAA+B;AACtC,IAAA,OAAO,KAAK,MAAA,CAAO,KAAA;AAAA,EACrB;AAAA,EAES,aAAA,GAAmC;AAC1C,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EACd;AAAA,EAES,YAAY,KAAA,EAA0E;AAC7F,IAAA,IAAI,MAAM,KAAA,KAAU,MAAA,EAAW,IAAA,CAAK,MAAA,CAAO,QAAQ,KAAA,CAAM,KAAA;AACzD,IAAA,IAAI,MAAM,QAAA,KAAa,MAAA,EAAW,IAAA,CAAK,MAAA,CAAO,WAAW,KAAA,CAAM,QAAA;AAC/D,IAAA,IAAI,MAAM,MAAA,KAAW,MAAA,EAAW,IAAA,CAAK,MAAA,CAAO,SAAS,KAAA,CAAM,MAAA;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAAA,EACjB;AAAA,EAEA,IAAI,SAAA,GAAqB;AACvB,IAAA,OAAO,IAAA,CAAK,IAAA,KAAS,IAAA,IAAQ,CAAC,KAAK,IAAA,CAAK,MAAA;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,OAAO,OAAA,EAAgC;AAC3C,IAAA,IAAI,IAAA,CAAK,MAAM,MAAM,IAAI,MAAM,CAAA,EAAG,IAAA,CAAK,WAAW,CAAA,yBAAA,CAA2B,CAAA;AAC7E,IAAA,IAAI,CAAC,IAAA,CAAK,OAAA,EAAS,MAAM,KAAK,KAAA,EAAM;AAEpC,IAAA,IAAA,CAAK,QAAA,GAAW,EAAA;AAChB,IAAA,IAAA,CAAK,eAAA,GAAkB,KAAA;AACvB,IAAA,IAAA,CAAK,qBAAqB,EAAC;AAC3B,IAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AACjB,IAAA,IAAA,CAAK,QAAA,GAAW,KAAA;AAChB,IAAA,IAAA,CAAK,eAAe,EAAC;AACrB,IAAA,IAAA,CAAK,YAAA,GAAe,EAAA;AACpB,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAEnB,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,aAAA,CAAc,OAAO,CAAA;AAC3C,IAAA,MAAM,cAAc,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,SAAS,CAAA,WAAA,CAAa,CAAA;AAC9D,IAAA,MAAM,OAAA,GAAU,QAAQ,GAAA,CAAI,CAAA,EAAG,KAAK,SAAS,CAAA,eAAA,CAAiB,IACzD,OAAA,CAAQ,GAAA,CAAI,GAAG,IAAA,CAAK,SAAS,iBAAiB,CAAA,CAAa,KAAA,CAAM,KAAK,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,GACvF,EAAC;AACL,IAAA,MAAM,GAAA,GAAM,eAAe,IAAA,CAAK,UAAA;AAChC,IAAA,MAAM,IAAA,GAAO,CAAC,GAAG,OAAA,EAAS,GAAG,KAAK,SAAA,CAAU,QAAA,EAAU,IAAA,CAAK,UAAU,CAAC,CAAA;AACtE,IAAA,MAAM,GAAA,GAAM,KAAK,QAAA,EAAS;AAE1B,IAAA,OAAO,IAAI,OAAA,CAAc,CAAC,OAAA,EAAS,MAAA,KAAW;AAC5C,MAAA,IAAA,CAAK,WAAA,GAAc,OAAA;AACnB,MAAA,IAAA,CAAK,UAAA,GAAa,MAAA;AAClB,MAAA,IAAA,CAAK,GAAA,CAAI,KAAK,cAAA,EAAgB;AAAA,QAC5B,GAAA;AAAA,QACA,GAAA,EAAK,KAAK,MAAA,CAAO,GAAA;AAAA,QACjB,MAAA,EAAQ,OAAA,CAAQ,IAAA,CAAK,UAAU;AAAA,OAChC,CAAA;AAED,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,GAAA,EAAK,IAAA,EAAM;AAAA,QAC5B,GAAA,EAAK,KAAK,MAAA,CAAO,GAAA;AAAA,QACjB,GAAA;AAAA,QACA,KAAA,EAAO,CAAC,QAAA,EAAU,MAAA,EAAQ,MAAM;AAAA,OACjC,CAAA;AACD,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,MAAA,MAAM,WAAA,GAAc,IAAA;AAEpB,MAAA,WAAA,CAAY,EAAA,CAAG,OAAA,EAAS,CAAC,GAAA,KAAe;AACtC,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,oBAAA,CAAqB,GAA4B,CAAA;AACrE,QAAA,IAAA,CAAK,IAAI,KAAA,CAAM,aAAA,EAAe,GAAA,EAAK,EAAE,QAAQ,CAAA;AAC7C,QAAA,IAAA,CAAK,UAAU,MAAM,CAAA;AACrB,QAAA,IAAA,CAAK,IAAA,CAAK,aAAA,EAAe,EAAE,IAAA,EAAM,aAAkC,CAAA;AACnE,QAAA,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,MAAA,CAAO,IAAI,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA,EAAG,EAAE,MAAA,EAAQ,CAAC,CAAA;AAAA,MACxE,CAAC,CAAA;AAED,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,IAAI,IAAA,CAAK,SAAS,OAAA,EAAS;AACzB,UAAA,MAAM,KAAK,eAAA,CAAgB,EAAE,KAAA,EAAO,IAAA,CAAK,QAAQ,CAAA;AACjD,UAAA,IAAA,CAAK,EAAA,GAAK,EAAA;AACV,UAAC,EAAA,CAA+B,GAAG,MAAA,EAAQ,CAAC,SAAiB,IAAA,CAAK,YAAA,CAAa,IAAI,CAAC,CAAA;AAAA,QACtF,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,MAAA,CAAO,YAAY,MAAM,CAAA;AAC9B,UAAA,IAAA,CAAK,MAAA,CAAO,EAAA,CAAG,MAAA,EAAQ,CAAC,KAAA,KAAkB;AACxC,YAAA,IAAA,CAAK,YAAA,IAAgB,KAAA;AAAA,UACvB,CAAC,CAAA;AAAA,QACH;AAAA,MACF;AAEA,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,MAAM,WAAW,eAAA,CAAgB,EAAE,KAAA,EAAO,IAAA,CAAK,QAAQ,CAAA;AACvD,QAAC,QAAA,CAAqC,EAAA,CAAG,MAAA,EAAQ,CAAC,IAAA,KAAiB;AACjE,UAAA,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,QAAA,EAAU,EAAE,MAAM,CAAA;AACjC,UAAA,IAAA,CAAK,YAAA,CAAa,KAAK,IAAI,CAAA;AAC3B,UAAA,IAAI,KAAK,YAAA,CAAa,MAAA,GAAS,EAAA,EAAI,IAAA,CAAK,aAAa,KAAA,EAAM;AAAA,QAC7D,CAAC,CAAA;AAAA,MACH;AAEA,MAAA,WAAA,CAAY,EAAA,CAAG,MAAA,EAAQ,CAAC,IAAA,EAAqB,MAAA,KAAkC;AAC7E,QAAA,IAAA,CAAK,IAAI,IAAA,CAAK,YAAA,EAAc,EAAE,IAAA,EAAM,QAAQ,CAAA;AAC5C,QAAA,IAAA,CAAK,MAAA,CAAO,MAAM,MAAM,CAAA;AAAA,MAC1B,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,IAAA,IAAA,CAAK,IAAA,EAAM,KAAK,SAAS,CAAA;AAAA,EAC3B;AAAA,EAEA,IAAA,GAAa;AACX,IAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,IAAA,IAAA,CAAK,IAAA,EAAM,KAAK,SAAS,CAAA;AACzB,IAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,EACf;AAAA,EAEA,MAAM,YAAA,GAA8B;AAClC,IAAA,IAAA,CAAK,IAAA,EAAK;AACV,IAAA,IAAA,CAAK,UAAA,GAAa,MAAA;AAClB,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,EACrB;AAAA;AAAA,EAWU,WAAW,KAAA,EAAsB;AAAA,EAAC;AAAA;AAAA,EAGlC,eAAe,IAAA,EAAoB;AAAA,EAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUpC,YAAA,CAAa,MAAqB,MAAA,EAAkD;AAC5F,IAAA,IAAI,SAAS,CAAA,IAAM,IAAA,KAAS,IAAA,IAAQ,MAAA,KAAW,MAAO,OAAO,IAAA;AAC7D,IAAA,MAAM,OAAO,IAAA,CAAK,YAAA,CAAa,MAAM,GAAG,CAAA,CAAE,KAAK,IAAI,CAAA;AACnD,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,CAAA,EAAG,IAAA,CAAK,WAAW,CAAA,kBAAA,EAAqB,IAAA,IAAQ,MAAM,CAAA,EAAG,IAAA,GAAO,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AAAA,MACzF,QAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,IAAA;AAAA,MACX,IAAA,EAAM,IAAA,IAAQ,CAAA,IAAA,EAAO,IAAA,CAAK,WAAW,CAAA,mDAAA;AAAA,KACvC;AAAA,EACF;AAAA;AAAA;AAAA,EAKU,cAAc,OAAA,EAAyB;AAC/C,IAAA,OAAO,KAAK,MAAA,CAAO,YAAA,GAAe,CAAA,EAAG,IAAA,CAAK,OAAO,YAAY;;AAAA;;AAAA,EAAc,OAAO,CAAA,CAAA,GAAK,OAAA;AAAA,EACzF;AAAA,EAEU,mBAAmB,QAAA,EAAwB;AACnD,IAAA,IAAI,CAAC,KAAK,eAAA,EAAiB;AACzB,MAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AACvB,MAAA,IAAA,CAAK,QAAA,GAAW,EAAA;AAChB,MAAA,IAAA,CAAK,KAAK,aAAA,EAAe;AAAA,QACvB,IAAA,EAAM,eAAA;AAAA,QACN,OAAA,EAAS,YAAY,EAAE;AAAA,OACH,CAAA;AAAA,IACxB;AACA,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,UAAA,CAAW,IAAA,CAAK,QAAQ,CAAA,GAC3C,QAAA,CAAS,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,GACnC,QAAA;AACJ,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAA,CAAK,KAAK,aAAA,EAAe;AAAA,QACvB,IAAA,EAAM,gBAAA;AAAA,QACN,OAAA,EAAS,YAAY,QAAQ,CAAA;AAAA,QAC7B,UAAA,EAAY;AAAA,OACQ,CAAA;AAAA,IACxB;AAAA,EACF;AAAA,EAEU,iBAAiB,QAAA,EAAyB;AAClD,IAAA,IAAI,CAAC,KAAK,eAAA,EAAiB;AAC3B,IAAA,MAAM,IAAA,GAAO,YAAY,IAAA,CAAK,QAAA;AAC9B,IAAA,IAAA,CAAK,KAAK,aAAA,EAAe;AAAA,MACvB,IAAA,EAAM,aAAA;AAAA,MACN,OAAA,EAAS,YAAY,IAAI;AAAA,KACL,CAAA;AACtB,IAAA,IAAA,CAAK,eAAA,GAAkB,KAAA;AACvB,IAAA,IAAA,CAAK,QAAA,GAAW,EAAA;AAAA,EAClB;AAAA,EAEU,YAAA,CAAa,MAAc,KAAA,EAAsB;AACzD,IAAA,IAAA,CAAK,KAAK,aAAA,EAAe;AAAA,MACvB,IAAA,EAAM,WAAA;AAAA,MACN,IAAA;AAAA,MACA,IAAA,EAAM,EAAE,IAAA,EAAK;AAAA,MACb;AAAA,KACoB,CAAA;AAAA,EACxB;AAAA,EAEU,cAAA,CAAe,IAAA,EAAc,IAAA,EAAe,OAAA,GAAU,KAAA,EAAa;AAC3E,IAAA,IAAA,CAAK,kBAAA,CAAmB,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,IAAA,EAAM,OAAA,EAAS,CAAA;AACzF,IAAA,IAAA,CAAK,KAAK,aAAA,EAAe;AAAA,MACvB,IAAA,EAAM,oBAAA;AAAA,MACN,QAAA,EAAU;AAAA,KACU,CAAA;AAAA,EACxB;AAAA,EAEQ,gBAAA,GAAyB;AAC/B,IAAA,IAAI,IAAA,CAAK,kBAAA,CAAmB,MAAA,KAAW,CAAA,EAAG;AAC1C,IAAA,IAAA,CAAK,KAAK,aAAA,EAAe;AAAA,MACvB,IAAA,EAAM,UAAA;AAAA,MACN,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,kBAAkB;AAAA,KACpB,CAAA;AACtB,IAAA,IAAA,CAAK,qBAAqB,EAAC;AAAA,EAC7B;AAAA,EAEU,WAAW,IAAA,EAKZ;AACP,IAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,IAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,IAAA,IAAI,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,WAAA,GAAc,IAAA,CAAK,MAAA;AACzC,IAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,IAAA,IAAA,CAAK,KAAK,aAAA,EAAe;AAAA,MACvB,IAAA,EAAM,QAAA;AAAA,MACN,OAAA,EAAS,KAAK,OAAA,IAAW,SAAA;AAAA,MACzB,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,OAAA,EAAS,KAAK,OAAA,IAAW,CAAA;AAAA,MACzB,GAAI,KAAK,MAAA,GAAS,EAAE,QAAQ,IAAA,CAAK,MAAA,KAAW;AAAC,KACzB,CAAA;AAAA,EACxB;AAAA,EAEU,SAAA,CAAU,MAAA,EAAoB,KAAA,GAAQ,KAAA,EAAa;AAC3D,IAAA,IAAA,CAAK,KAAK,aAAA,EAAe;AAAA,MACvB,IAAA,EAAM,OAAA;AAAA,MACN,OAAO,MAAA,CAAO,OAAA;AAAA,MACd,MAAA;AAAA,MACA;AAAA,KACoB,CAAA;AAAA,EACxB;AAAA,EAEU,cAAA,CAAe,IAAa,IAAA,EAAqB;AACzD,IAAA,IAAI,CAAC,EAAA,IAAM,EAAA,KAAO,IAAA,CAAK,UAAA,EAAY;AACnC,IAAA,IAAA,CAAK,UAAA,GAAa,EAAA;AAClB,IAAA,IAAA,CAAK,KAAK,aAAA,EAAe;AAAA,MACvB,IAAA,EAAM,cAAA;AAAA,MACN,eAAA,EAAiB,EAAA;AAAA,MACjB,GAAI,IAAA,GAAO,EAAE,WAAA,EAAa,IAAA,KAAS;AAAC,KAChB,CAAA;AAAA,EACxB;AAAA;AAAA,EAGU,gBAAgB,OAAA,EAA6B;AACrD,IAAA,MAAM,OAAA,GAAU,4BAA4B,OAAO,CAAA;AACnD,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO;AAAA,QACL,OAAA;AAAA,QACA,QAAA,EAAU,SAAA;AAAA,QACV,SAAA,EAAW,IAAA;AAAA,QACX,IAAA,EAAM,CAAA,cAAA,EAAiB,IAAA,CAAK,WAAW,CAAA,sCAAA;AAAA,OACzC;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GACJ,QAAQ,QAAA,KAAa,MAAA,GACjB,4CAA4C,IAAA,CAAK,WAAW,MAC5D,OAAA,CAAQ,QAAA,KAAa,eACnB,CAAA,EAAG,IAAA,CAAK,WAAW,CAAA,wDAAA,CAAA,GACnB,OAAA,CAAQ,aAAa,OAAA,GACnB,wGAAA,GACA,CAAA,0CAAA,EAA6C,IAAA,CAAK,WAAW,CAAA,CAAA,CAAA;AACvE,IAAA,OAAO,EAAE,SAAS,QAAA,EAAU,OAAA,CAAQ,UAAU,SAAA,EAAW,OAAA,CAAQ,WAAW,IAAA,EAAK;AAAA,EACnF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBU,OAAA,CAAQ,SAAA,GAAsB,EAAC,EAA2B;AAClE,IAAA,MAAM,MAA8B,EAAC;AACrC,IAAA,MAAM,QAAA,GAAW,CAAC,MAAA,EAAQ,MAAA,EAAQ,QAAQ,UAAA,EAAY,mBAAA,EAAqB,GAAG,SAAS,CAAA;AACvF,IAAA,KAAA,MAAW,OAAO,QAAA,EAAU;AAC1B,MAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AACzB,MAAA,IAAI,CAAA,KAAM,MAAA,EAAW,GAAA,CAAI,GAAG,CAAA,GAAI,CAAA;AAAA,IAClC;AACA,IAAA,KAAA,MAAW,CAAC,KAAK,KAAK,CAAA,IAAK,OAAO,OAAA,CAAQ,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtD,MAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC/B,MAAA,IAAI,GAAA,CAAI,UAAA,CAAW,CAAA,EAAG,IAAA,CAAK,SAAS,UAAU,CAAA,IAAK,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC9E,QAAA,GAAA,CAAI,GAAG,CAAA,GAAI,KAAA;AAAA,MACb;AAAA,IACF;AACA,IAAA,IAAI,IAAA,CAAK,OAAO,UAAA,EAAY;AAC1B,MAAA,GAAA,CAAI,eAAA,GAAkB,CAAA,QAAA,EAAW,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA,qCAAA,CAAA;AAAA,IACzD;AACA,IAAA,IAAI,IAAA,CAAK,OAAO,GAAA,EAAK,MAAA,CAAO,OAAO,GAAA,EAAK,IAAA,CAAK,OAAO,GAAG,CAAA;AACvD,IAAA,OAAO,GAAA;AAAA,EACT;AAAA;AAAA,EAIQ,aAAa,IAAA,EAAoB;AACvC,IAAA,IAAI,CAAC,IAAA,CAAK,IAAA,EAAK,EAAG;AAClB,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI;AACF,MAAA,IAAA,GAAO,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,IACxB,CAAA,CAAA,MAAQ;AACN,MAAA,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,sBAAA,EAAwB,EAAE,MAAM,CAAA;AAC/C,MAAA;AAAA,IACF;AACA,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,WAAW,IAAI,CAAA;AAAA,IACtB,SAAS,GAAA,EAAK;AACZ,MAAA,IAAA,CAAK,GAAA,CAAI,KAAK,kBAAA,EAAoB,EAAE,OAAO,MAAA,CAAO,GAAG,GAAG,CAAA;AAAA,IAC1D;AAAA,EACF;AAAA,EAEQ,MAAA,CAAO,MAAqB,MAAA,EAAqC;AACvE,IAAA,IAAA,CAAK,OAAA,EAAQ;AAEb,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,MAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,MAAA,IAAA,CAAK,IAAA,CAAK,aAAA,EAAe,EAAE,IAAA,EAAM,aAAkC,CAAA;AACnE,MAAA,IAAA,CAAK,aAAA,EAAc;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,KAAK,IAAA,KAAS,UAAA,KAAe,IAAA,KAAS,CAAA,IAAK,SAAS,IAAA,CAAA,EAAO;AAC7D,MAAA,IAAI;AACF,QAAA,IAAA,CAAK,cAAA,CAAe,KAAK,YAAY,CAAA;AAAA,MACvC,SAAS,GAAA,EAAK;AACZ,QAAA,IAAA,CAAK,GAAA,CAAI,KAAK,sBAAA,EAAwB,EAAE,OAAO,MAAA,CAAO,GAAG,GAAG,CAAA;AAAA,MAC9D;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM,MAAM,CAAA;AAC9C,IAAA,IAAI,OAAA,IAAW,CAAC,IAAA,CAAK,SAAA,EAAW;AAC9B,MAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,MAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,MAAA,IAAA,CAAK,UAAU,OAAO,CAAA;AACtB,MAAA,IAAA,CAAK,IAAA,CAAK,aAAA,EAAe,EAAE,IAAA,EAAM,aAAkC,CAAA;AACnE,MAAA,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,MAAA,CAAO,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG,EAAE,MAAA,EAAQ,OAAA,EAAS,CAAC,CAAA;AAChF,MAAA;AAAA,IACF;AAIA,IAAA,IAAI,CAAC,KAAK,SAAA,EAAW,IAAA,CAAK,WAAW,EAAE,OAAA,EAAS,kBAAkB,CAAA;AAAA,SAC7D;AACH,MAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,MAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,IACxB;AACA,IAAA,IAAA,CAAK,IAAA,CAAK,aAAA,EAAe,EAAE,IAAA,EAAM,aAAkC,CAAA;AACnE,IAAA,IAAA,CAAK,aAAA,EAAc;AAAA,EACrB;AAAA,EAEQ,aAAA,GAAsB;AAC5B,IAAA,MAAM,UAAU,IAAA,CAAK,WAAA;AACrB,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,IAAA,OAAA,IAAU;AAAA,EACZ;AAAA,EAEQ,aAAa,GAAA,EAAkB;AACrC,IAAA,MAAM,SAAS,IAAA,CAAK,UAAA;AACpB,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,IAAA,MAAA,GAAS,GAAG,CAAA;AAAA,EACd;AAAA,EAEQ,OAAA,GAAgB;AACtB,IAAA,IAAA,CAAK,IAAI,KAAA,EAAM;AACf,IAAA,IAAA,CAAK,EAAA,GAAK,IAAA;AACV,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EACd;AAAA,EAEQ,qBAAqB,GAAA,EAAwC;AACnE,IAAA,IAAI,GAAA,CAAI,SAAS,QAAA,EAAU;AACzB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,CAAA,EAAG,IAAA,CAAK,UAAU,CAAA,kBAAA,CAAA;AAAA,QAC3B,QAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAW,KAAA;AAAA,QACX,IAAA,EAAM,KAAK,WAAA;AAAY,OACzB;AAAA,IACF;AACA,IAAA,IAAI,GAAA,CAAI,SAAS,QAAA,EAAU;AACzB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,CAAA,0BAAA,EAA6B,IAAA,CAAK,UAAU,CAAA,CAAA;AAAA,QACrD,QAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAW,KAAA;AAAA,QACX,IAAA,EAAM,CAAA,+BAAA,EAAkC,IAAA,CAAK,UAAU,CAAA,QAAA;AAAA,OACzD;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,SAAS,GAAA,CAAI,OAAA;AAAA,MACb,QAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,IAAA;AAAA,MACX,IAAA,EAAM,CAAA,6CAAA,EAAgD,IAAA,CAAK,WAAW,CAAA,YAAA;AAAA,KACxE;AAAA,EACF;AACF;AAOA,SAAS,YAAY,IAAA,EAA4B;AAC/C,EAAA,OAAO,EAAE,IAAA,EAAM,WAAA,EAAa,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,CAAA,EAAE;AAChE;AAGO,SAAS,YAAY,IAAA,EAAmB;AAC7C,EAAA,IAAI,OAAO,IAAA,EAAM,IAAA,KAAS,QAAA,SAAiB,IAAA,CAAK,IAAA;AAChD,EAAA,IAAI,OAAO,IAAA,EAAM,KAAA,KAAU,QAAA,SAAiB,IAAA,CAAK,KAAA;AACjD,EAAA,IAAI,OAAO,IAAA,EAAM,OAAA,KAAY,QAAA,SAAiB,IAAA,CAAK,OAAA;AACnD,EAAA,IAAI,OAAO,IAAA,EAAM,QAAA,KAAa,QAAA,SAAiB,IAAA,CAAK,QAAA;AACpD,EAAA,MAAM,MAAM,IAAA,EAAM,OAAA;AAClB,EAAA,IAAI,OAAO,GAAA,EAAK,OAAA,KAAY,QAAA,SAAiB,GAAA,CAAI,OAAA;AACjD,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAA,EAAK,OAAO,CAAA,EAAG;AAC/B,IAAA,OAAO,IAAI,OAAA,CACR,MAAA;AAAA,MACC,CAAC,CAAA,KAAA,CAAY,CAAA,EAAG,IAAA,KAAS,MAAA,IAAU,GAAG,IAAA,KAAS,MAAA,KAAc,OAAO,CAAA,EAAG,IAAA,KAAS;AAAA,KAClF,CACC,IAAI,CAAC,CAAA,KAAW,EAAE,IAAI,CAAA,CACtB,KAAK,EAAE,CAAA;AAAA,EACZ;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,KAAK,CAAA,EAAG;AAC9B,IAAA,OAAO,KAAK,KAAA,CACT,MAAA,CAAO,CAAC,CAAA,KAAW,OAAO,CAAA,EAAG,IAAA,KAAS,QAAQ,CAAA,CAC9C,IAAI,CAAC,CAAA,KAAW,EAAE,IAAI,CAAA,CACtB,KAAK,EAAE,CAAA;AAAA,EACZ;AACA,EAAA,OAAO,EAAA;AACT;AAGO,SAAS,cAAc,IAAA,EAA8B;AAC1D,EAAA,MAAM,CAAA,GAAI,MAAM,KAAA,IAAS,IAAA,EAAM,OAAO,KAAA,IAAS,IAAA,EAAM,KAAA,IAAS,IAAA,EAAM,MAAA,IAAU,IAAA;AAC9E,EAAA,IAAI,CAAC,CAAA,IAAK,OAAO,CAAA,KAAM,UAAU,OAAO,IAAA;AACxC,EAAA,MAAM,KAAA,GAAQ,EAAE,YAAA,IAAgB,CAAA,CAAE,eAAe,CAAA,CAAE,aAAA,IAAiB,CAAA,CAAE,gBAAA,IAAoB,CAAA,CAAE,KAAA;AAC5F,EAAA,MAAM,MAAA,GACJ,EAAE,aAAA,IAAiB,CAAA,CAAE,gBAAgB,CAAA,CAAE,iBAAA,IAAqB,CAAA,CAAE,oBAAA,IAAwB,CAAA,CAAE,MAAA;AAC1F,EAAA,MAAM,SAAA,GAAY,CAAA,CAAE,mBAAA,IAAuB,CAAA,CAAE,mBAAmB,CAAA,CAAE,uBAAA;AAClE,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,MAAA,KAAW,MAAA,EAAW,OAAO,IAAA;AACxD,EAAA,MAAM,SAAqB,EAAC;AAC5B,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,MAAA,CAAO,WAAA,GAAc,KAAA;AACpD,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,EAAU,MAAA,CAAO,YAAA,GAAe,MAAA;AACtD,EAAA,IAAI,OAAO,SAAA,KAAc,QAAA,EAAU,MAAA,CAAO,eAAA,GAAkB,SAAA;AAC5D,EAAA,OAAO,MAAA;AACT;AAGO,SAAS,YAAY,IAAA,EAA+B;AACzD,EAAA,MAAM,CAAA,GACJ,IAAA,EAAM,IAAA,IAAQ,IAAA,EAAM,OAAA,IAAW,IAAA,EAAM,cAAA,IAAkB,IAAA,EAAM,KAAA,EAAO,IAAA,IAAQ,IAAA,EAAM,KAAA,EAAO,IAAA;AAC3F,EAAA,OAAO,OAAO,CAAA,KAAM,QAAA,GAAW,CAAA,GAAI,MAAA;AACrC","file":"chunk-KUH4EKQQ.js","sourcesContent":["import { type ChildProcess, spawn } from \"node:child_process\";\nimport type { EventEmitter } from \"node:events\";\nimport { createInterface, type Interface } from \"node:readline\";\nimport type { Logger, TokenUsage } from \"@skaile/workspaces/types\";\nimport { classifyGenericErrorMessage } from \"../error-classifier.js\";\nimport {\n type AgentConfig,\n AgentDriver,\n type AgentError,\n type AgentEvent,\n type AgentMessage,\n} from \"../types.js\";\n\n/**\n * Shared base for one-shot **subprocess CLI** agent backends (Gemini, Qwen,\n * OpenCode, Goose, Continue).\n *\n * These backends are neither persistent JSON-RPC subprocesses (`omp`) nor\n * in-process SDKs (`claude-sdk`, `codex`). In headless mode each is invoked\n * **once per turn** — `prompt()` spawns the CLI fresh, a `readline` loop maps\n * newline-delimited JSON on stdout to the unified {@link AgentEvent} stream, and\n * **process exit marks the end of the turn**. Multi-turn continuity comes from\n * capturing a backend session id (emitted as `session_info`) and replaying it\n * via a resume flag on the next spawn.\n *\n * Subclasses implement {@link buildArgs}, {@link buildEnv}, and either\n * {@link handleJson} (streaming JSONL, the default) or {@link handleBuffered}\n * (`mode = \"buffered\"`, for CLIs that print a single JSON blob at the end).\n *\n * **Terminal-sequence invariant.** Subclasses MUST NOT emit `agent_end`. The\n * base emits exactly one `result` (synthesizing a success result when the\n * stream produced none) followed by a single `agent_end` on clean exit, or an\n * `error` + `agent_end` on crash. This keeps the turn-completion contract\n * (`prompt()` resolves after `agent_end`) identical across every CLI driver.\n *\n * @docLink packages/bridge/drivers#subprocess-cli\n */\nexport abstract class SubprocessCliDriver extends AgentDriver {\n /** Per-driver logger, constructed once by the subclass. */\n protected abstract readonly log: Logger;\n /** Default binary name spawned in production (e.g. `\"gemini\"`). */\n protected abstract readonly defaultBin: string;\n /** Human product name used in error messages / hints (e.g. `\"Gemini CLI\"`). */\n protected abstract readonly productName: string;\n /**\n * Test-seam env prefix. `<PREFIX>_BRIDGE_BIN` overrides the spawn binary and\n * `<PREFIX>_BRIDGE_PREARGS` (space-delimited) supplies leading argv — used by\n * the fake-CLI harness to redirect spawn without monkey-patching\n * `child_process`. Both are ignored in production.\n */\n protected abstract readonly envPrefix: string;\n /** `\"jsonl\"` streams events line-by-line; `\"buffered\"` parses all stdout once on exit. */\n protected readonly mode: \"jsonl\" | \"buffered\" = \"jsonl\";\n\n protected config: AgentConfig;\n\n private proc: ChildProcess | null = null;\n private rl: Interface | null = null;\n private stderrBuffer: string[] = [];\n private stdoutBuffer = \"\";\n private started = false;\n\n // ── Per-turn state ──────────────────────────────────────────────────────\n private prevText = \"\";\n private activeAssistant = false;\n private pendingToolResults: AgentMessage[] = [];\n private sawResult = false;\n private aborting = false;\n private turnResolve: (() => void) | null = null;\n private turnReject: ((err: Error) => void) | null = null;\n\n protected _sessionId?: string;\n protected _lastTokens: TokenUsage | null = null;\n\n constructor(config: AgentConfig) {\n super();\n this.config = config;\n }\n\n override get runtimeSessionId(): string | undefined {\n return this._sessionId;\n }\n\n override getModel(): string | undefined {\n return this.config.model;\n }\n\n override getTokenUsage(): TokenUsage | null {\n return this._lastTokens;\n }\n\n override reconfigure(patch: Partial<Pick<AgentConfig, \"model\" | \"thinking\" | \"effort\">>): void {\n if (patch.model !== undefined) this.config.model = patch.model;\n if (patch.thinking !== undefined) this.config.thinking = patch.thinking;\n if (patch.effort !== undefined) this.config.effort = patch.effort;\n }\n\n /**\n * No-op for one-shot CLIs — there is no long-lived process to spawn until the\n * first prompt. Kept so the runner's `start()` → `prompt()` ordering works\n * uniformly; binary-presence failures surface as a `config` error on the\n * first spawn (see {@link classifyProcessError}).\n */\n async start(): Promise<void> {\n this.started = true;\n }\n\n get isRunning(): boolean {\n return this.proc !== null && !this.proc.killed;\n }\n\n /**\n * Sends a user message to the CLI and resolves after the turn completes\n * (`agent_end`). Spawns a fresh child per call; rejects if the child exits\n * non-zero before emitting a result, so the caller never hangs.\n */\n async prompt(message: string): Promise<void> {\n if (this.proc) throw new Error(`${this.productName} turn already in progress`);\n if (!this.started) await this.start();\n\n this.prevText = \"\";\n this.activeAssistant = false;\n this.pendingToolResults = [];\n this.sawResult = false;\n this.aborting = false;\n this.stderrBuffer = [];\n this.stdoutBuffer = \"\";\n this._lastTokens = null;\n\n const composed = this.composePrompt(message);\n const overrideBin = process.env[`${this.envPrefix}_BRIDGE_BIN`];\n const preArgs = process.env[`${this.envPrefix}_BRIDGE_PREARGS`]\n ? (process.env[`${this.envPrefix}_BRIDGE_PREARGS`] as string).split(/\\s+/).filter(Boolean)\n : [];\n const bin = overrideBin || this.defaultBin;\n const args = [...preArgs, ...this.buildArgs(composed, this._sessionId)];\n const env = this.buildEnv();\n\n return new Promise<void>((resolve, reject) => {\n this.turnResolve = resolve;\n this.turnReject = reject;\n this.log.info(\"spawning CLI\", {\n bin,\n cwd: this.config.cwd,\n resume: Boolean(this._sessionId),\n });\n\n const proc = spawn(bin, args, {\n cwd: this.config.cwd,\n env,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n }) as ChildProcess;\n this.proc = proc;\n const procEmitter = proc as unknown as EventEmitter;\n\n procEmitter.on(\"error\", (err: Error) => {\n const detail = this.classifyProcessError(err as NodeJS.ErrnoException);\n this.log.error(\"spawn error\", err, { detail });\n this.pushError(detail);\n this.emit(\"agent-event\", { type: \"agent_end\" } satisfies AgentEvent);\n this.settleReject(Object.assign(new Error(detail.message), { detail }));\n });\n\n if (proc.stdout) {\n if (this.mode === \"jsonl\") {\n const rl = createInterface({ input: proc.stdout });\n this.rl = rl;\n (rl as unknown as EventEmitter).on(\"line\", (line: string) => this.onStdoutLine(line));\n } else {\n proc.stdout.setEncoding(\"utf8\");\n proc.stdout.on(\"data\", (chunk: string) => {\n this.stdoutBuffer += chunk;\n });\n }\n }\n\n if (proc.stderr) {\n const stderrRl = createInterface({ input: proc.stderr });\n (stderrRl as unknown as EventEmitter).on(\"line\", (line: string) => {\n this.log.debug(\"stderr\", { line });\n this.stderrBuffer.push(line);\n if (this.stderrBuffer.length > 20) this.stderrBuffer.shift();\n });\n }\n\n procEmitter.on(\"exit\", (code: number | null, signal: NodeJS.Signals | null) => {\n this.log.info(\"CLI exited\", { code, signal });\n this.onExit(code, signal);\n });\n });\n }\n\n /** Out-of-band abort: terminates the current child. Driver stays usable for the next prompt. */\n async abort(): Promise<void> {\n this.aborting = true;\n this.proc?.kill(\"SIGTERM\");\n }\n\n kill(): void {\n this.aborting = true;\n this.proc?.kill(\"SIGTERM\");\n this.cleanup();\n }\n\n async resetSession(): Promise<void> {\n this.kill();\n this._sessionId = undefined;\n this._lastTokens = null;\n }\n\n // ── Subclass hooks ────────────────────────────────────────────────────────\n\n /** Build the CLI argv (binary excluded) for one turn. `resumeId` is the captured session id, if any. */\n protected abstract buildArgs(message: string, resumeId: string | undefined): string[];\n\n /** Build the child-process env (explicit allowlist — see {@link baseEnv}). */\n protected abstract buildEnv(): Record<string, string>;\n\n /** Map one parsed stdout JSON object to events via the `push*` helpers. Streaming (`jsonl`) mode only. */\n protected handleJson(_json: unknown): void {}\n\n /** Parse the full stdout blob once on clean exit. `buffered` mode only. */\n protected handleBuffered(_raw: string): void {}\n\n /** Install-failure hint surfaced when the binary is missing. */\n protected abstract installHint(): string;\n\n /**\n * Classify a non-zero exit into an {@link AgentError}, or `null` to treat the\n * exit as success (e.g. a turn-limit code where a result was already\n * emitted). Default: code `0` / clean signal → success; otherwise `process`.\n */\n protected classifyExit(code: number | null, signal: NodeJS.Signals | null): AgentError | null {\n if (code === 0 || (code === null && signal === null)) return null;\n const tail = this.stderrBuffer.slice(-10).join(\"\\n\");\n return {\n message: `${this.productName} exited with code ${code ?? \"null\"}${tail ? `: ${tail}` : \"\"}`,\n category: \"process\",\n retryable: true,\n hint: tail || `The ${this.productName} process exited unexpectedly. Try the prompt again.`,\n };\n }\n\n // ── Protected emit helpers (used by handleJson / handleBuffered) ────────────\n\n /** Prepend `systemPrompt` to the user message — uniform across CLIs lacking a reliable system flag. */\n protected composePrompt(message: string): string {\n return this.config.systemPrompt ? `${this.config.systemPrompt}\\n\\n---\\n\\n${message}` : message;\n }\n\n protected pushAssistantDelta(fullText: string): void {\n if (!this.activeAssistant) {\n this.activeAssistant = true;\n this.prevText = \"\";\n this.emit(\"agent-event\", {\n type: \"message_start\",\n message: asstMessage(\"\"),\n } satisfies AgentEvent);\n }\n const delta = fullText.startsWith(this.prevText)\n ? fullText.slice(this.prevText.length)\n : fullText;\n this.prevText = fullText;\n if (delta) {\n this.emit(\"agent-event\", {\n type: \"message_update\",\n message: asstMessage(fullText),\n _textDelta: delta,\n } satisfies AgentEvent);\n }\n }\n\n protected pushAssistantEnd(fullText?: string): void {\n if (!this.activeAssistant) return;\n const text = fullText ?? this.prevText;\n this.emit(\"agent-event\", {\n type: \"message_end\",\n message: asstMessage(text),\n } satisfies AgentEvent);\n this.activeAssistant = false;\n this.prevText = \"\";\n }\n\n protected pushToolCall(name: string, input: unknown): void {\n this.emit(\"agent-event\", {\n type: \"tool_call\",\n name,\n tool: { name },\n input,\n } satisfies AgentEvent);\n }\n\n protected pushToolResult(name: string, data: unknown, isError = false): void {\n this.pendingToolResults.push({ role: \"tool\", toolName: name, content: \"\", data, isError });\n this.emit(\"agent-event\", {\n type: \"tool_execution_end\",\n toolName: name,\n } satisfies AgentEvent);\n }\n\n private flushToolResults(): void {\n if (this.pendingToolResults.length === 0) return;\n this.emit(\"agent-event\", {\n type: \"turn_end\",\n toolResults: [...this.pendingToolResults],\n } satisfies AgentEvent);\n this.pendingToolResults = [];\n }\n\n protected pushResult(opts: {\n tokens?: TokenUsage | null;\n costUsd?: number;\n summary?: string;\n subtype?: string;\n }): void {\n this.pushAssistantEnd();\n this.flushToolResults();\n if (opts.tokens) this._lastTokens = opts.tokens;\n this.sawResult = true;\n this.emit(\"agent-event\", {\n type: \"result\",\n subtype: opts.subtype ?? \"success\",\n summary: opts.summary,\n costUsd: opts.costUsd ?? 0,\n ...(opts.tokens ? { tokens: opts.tokens } : {}),\n } satisfies AgentEvent);\n }\n\n protected pushError(detail: AgentError, fatal = false): void {\n this.emit(\"agent-event\", {\n type: \"error\",\n error: detail.message,\n detail,\n fatal,\n } satisfies AgentEvent);\n }\n\n protected captureSession(id?: string, file?: string): void {\n if (!id || id === this._sessionId) return;\n this._sessionId = id;\n this.emit(\"agent-event\", {\n type: \"session_info\",\n driverSessionId: id,\n ...(file ? { sessionFile: file } : {}),\n } satisfies AgentEvent);\n }\n\n /** Shared keyword classification + per-driver hint copy (mirrors omp/codex). */\n protected classifyMessage(message: string): AgentError {\n const generic = classifyGenericErrorMessage(message);\n if (!generic) {\n return {\n message,\n category: \"unknown\",\n retryable: true,\n hint: `An unexpected ${this.productName} error occurred. Try the prompt again.`,\n };\n }\n const hint =\n generic.category === \"auth\"\n ? `Check the API key / login configured for ${this.productName}.`\n : generic.category === \"rate_limit\"\n ? `${this.productName} hit a provider rate limit. Wait a moment and try again.`\n : generic.category === \"model\"\n ? \"The selected model is unavailable or the context is too long. Change the model or start a new session.\"\n : `A network error occurred while talking to ${this.productName}.`;\n return { message, category: generic.category, retryable: generic.retryable, hint };\n }\n\n // ── Env allowlist ──────────────────────────────────────────────────────────\n\n /**\n * Explicit env whitelist forwarded to the child. Omits anything provisioned\n * by `provision_secrets` so user credentials stay out of the subprocess\n * environment. Always passes through the driver's test-seam vars and\n * `FAKE_CLI_*`.\n *\n * `config.env` is merged **over** the whitelist, not in place of it. It used\n * to replace it wholesale, which meant any caller that set a single variable\n * silently dropped `PATH` and `HOME` and the spawn failed with ENOENT —\n * unusable as the delivery channel for registry-derived endpoint variables\n * (plan §2.3, \"Delivery rule\"). Widening keeps both: the caller's variables\n * win per key, the process still has a `PATH`.\n */\n protected baseEnv(extraKeys: string[] = []): Record<string, string> {\n const out: Record<string, string> = {};\n const explicit = [\"PATH\", \"HOME\", \"USER\", \"HOSTNAME\", \"SKAILE_SESSION_ID\", ...extraKeys];\n for (const key of explicit) {\n const v = process.env[key];\n if (v !== undefined) out[key] = v;\n }\n for (const [key, value] of Object.entries(process.env)) {\n if (typeof value !== \"string\") continue;\n if (key.startsWith(`${this.envPrefix}_BRIDGE_`) || key.startsWith(\"FAKE_CLI_\")) {\n out[key] = value;\n }\n }\n if (this.config.sshKeyPath) {\n out.GIT_SSH_COMMAND = `ssh -i \"${this.config.sshKeyPath}\" -o StrictHostKeyChecking=accept-new`;\n }\n if (this.config.env) Object.assign(out, this.config.env);\n return out;\n }\n\n // ── Internals ────────────────────────────────────────────────────────────\n\n private onStdoutLine(line: string): void {\n if (!line.trim()) return;\n let json: unknown;\n try {\n json = JSON.parse(line);\n } catch {\n this.log.debug(\"non-JSON stdout line\", { line });\n return;\n }\n try {\n this.handleJson(json);\n } catch (err) {\n this.log.warn(\"handleJson threw\", { error: String(err) });\n }\n }\n\n private onExit(code: number | null, signal: NodeJS.Signals | null): void {\n this.cleanup();\n\n if (this.aborting) {\n this.pushAssistantEnd();\n this.flushToolResults();\n this.emit(\"agent-event\", { type: \"agent_end\" } satisfies AgentEvent);\n this.settleResolve();\n return;\n }\n\n if (this.mode === \"buffered\" && (code === 0 || code === null)) {\n try {\n this.handleBuffered(this.stdoutBuffer);\n } catch (err) {\n this.log.warn(\"handleBuffered threw\", { error: String(err) });\n }\n }\n\n const exitErr = this.classifyExit(code, signal);\n if (exitErr && !this.sawResult) {\n this.pushAssistantEnd();\n this.flushToolResults();\n this.pushError(exitErr);\n this.emit(\"agent-event\", { type: \"agent_end\" } satisfies AgentEvent);\n this.settleReject(Object.assign(new Error(exitErr.message), { detail: exitErr }));\n return;\n }\n\n // Clean exit (or non-zero exit after a result already streamed): close any\n // open assistant message, synthesize a success result if none arrived, end.\n if (!this.sawResult) this.pushResult({ summary: \"Task completed\" });\n else {\n this.pushAssistantEnd();\n this.flushToolResults();\n }\n this.emit(\"agent-event\", { type: \"agent_end\" } satisfies AgentEvent);\n this.settleResolve();\n }\n\n private settleResolve(): void {\n const resolve = this.turnResolve;\n this.turnResolve = null;\n this.turnReject = null;\n resolve?.();\n }\n\n private settleReject(err: Error): void {\n const reject = this.turnReject;\n this.turnResolve = null;\n this.turnReject = null;\n reject?.(err);\n }\n\n private cleanup(): void {\n this.rl?.close();\n this.rl = null;\n this.proc = null;\n }\n\n private classifyProcessError(err: NodeJS.ErrnoException): AgentError {\n if (err.code === \"ENOENT\") {\n return {\n message: `${this.defaultBin} command not found`,\n category: \"config\",\n retryable: false,\n hint: this.installHint(),\n };\n }\n if (err.code === \"EACCES\") {\n return {\n message: `Permission denied running ${this.defaultBin}`,\n category: \"config\",\n retryable: false,\n hint: `Check file permissions for the ${this.defaultBin} binary.`,\n };\n }\n return {\n message: err.message,\n category: \"process\",\n retryable: true,\n hint: `An unexpected process error occurred running ${this.productName}. Try again.`,\n };\n }\n}\n\n// ───────────────────────────────────────────────────────────────────────────\n// Tolerant JSON extractors — shared because the upstream stream-json schemas\n// are not fully pinned; read the common field-name variants defensively.\n// ───────────────────────────────────────────────────────────────────────────\n\nfunction asstMessage(text: string): AgentMessage {\n return { role: \"assistant\", content: [{ type: \"text\", text }] };\n}\n\n/** Pull assistant text out of a CLI event, trying the common field names. */\nexport function extractText(json: any): string {\n if (typeof json?.text === \"string\") return json.text;\n if (typeof json?.delta === \"string\") return json.delta;\n if (typeof json?.content === \"string\") return json.content;\n if (typeof json?.response === \"string\") return json.response;\n const msg = json?.message;\n if (typeof msg?.content === \"string\") return msg.content;\n if (Array.isArray(msg?.content)) {\n return msg.content\n .filter(\n (b: any) => (b?.type === \"text\" || b?.type === undefined) && typeof b?.text === \"string\",\n )\n .map((b: any) => b.text)\n .join(\"\");\n }\n if (Array.isArray(json?.parts)) {\n return json.parts\n .filter((p: any) => typeof p?.text === \"string\")\n .map((p: any) => p.text)\n .join(\"\");\n }\n return \"\";\n}\n\n/** Map a CLI usage/stats object onto {@link TokenUsage}, trying common field names. */\nexport function extractTokens(json: any): TokenUsage | null {\n const u = json?.usage ?? json?.stats?.usage ?? json?.stats ?? json?.tokens ?? json;\n if (!u || typeof u !== \"object\") return null;\n const input = u.input_tokens ?? u.inputTokens ?? u.prompt_tokens ?? u.promptTokenCount ?? u.input;\n const output =\n u.output_tokens ?? u.outputTokens ?? u.completion_tokens ?? u.candidatesTokenCount ?? u.output;\n const cacheRead = u.cached_input_tokens ?? u.cacheReadTokens ?? u.cachedContentTokenCount;\n if (input === undefined && output === undefined) return null;\n const tokens: TokenUsage = {};\n if (typeof input === \"number\") tokens.inputTokens = input;\n if (typeof output === \"number\") tokens.outputTokens = output;\n if (typeof cacheRead === \"number\") tokens.cacheReadTokens = cacheRead;\n return tokens;\n}\n\n/** Pull a per-turn USD cost from a CLI result object, or `undefined`. */\nexport function extractCost(json: any): number | undefined {\n const c =\n json?.cost ?? json?.costUsd ?? json?.total_cost_usd ?? json?.stats?.cost ?? json?.usage?.cost;\n return typeof c === \"number\" ? c : undefined;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { findAiAssetsRoot } from './chunk-
|
|
1
|
+
import { findAiAssetsRoot } from './chunk-7IH3RKKK.js';
|
|
2
2
|
import { readAllSessions } from './chunk-R6O6YWU7.js';
|
|
3
3
|
import { okJson, err } from './chunk-X5YPJV4N.js';
|
|
4
4
|
|
|
@@ -68,5 +68,5 @@ async function flowFindFlowForSession(projectDir, runId) {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
export { flowFindFlowForSession, flowGetSession, flowList, flowListSessions, flowShow };
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
//# sourceMappingURL=chunk-LCKZCLXA.js.map
|
|
72
|
+
//# sourceMappingURL=chunk-LCKZCLXA.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../workspace-plugin/src/tools/flows.ts"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../workspace-plugin/src/tools/flows.ts"],"names":[],"mappings":"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","file":"chunk-LCKZCLXA.js","sourcesContent":["// src/tools/flows.ts\n\nimport type { ToolResult } from \"../types.js\";\nimport { err, okJson } from \"../types.js\";\nimport { findAiAssetsRoot } from \"../utils/ai-assets.js\";\nimport { readAllSessions } from \"./sessions.js\";\n\n// ── Flow tools ────────────────────────────────────────────────────────────────\n\n/**\n * List all flow definitions available in the project's `ai-assets` directory.\n *\n * Returns a JSON array of summary objects `{ id, name, nodeCount }`.\n * Returns an empty array when no `ai-assets` root is found.\n *\n * @param projectDir - Absolute path to the skaile project root.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowList(projectDir: string): Promise<ToolResult> {\n try {\n const assetsRoot = await findAiAssetsRoot(projectDir);\n if (!assetsRoot) return okJson([]);\n const { loadAllFlows } = await import(\n \"@skaile/workspaces/factory-assets/connectors/flow/engine\"\n );\n const flows = loadAllFlows(assetsRoot);\n const summary = flows.map((f: any) => ({\n id: f.id,\n name: f.name ?? f.id,\n nodeCount: f.nodes?.length ?? 0,\n }));\n return okJson(summary);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Show the full flow definition (nodes, edges, metadata) for a specific flow.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param flowId - Flow ID as returned by {@link flowList}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowShow(projectDir: string, flowId: string): Promise<ToolResult> {\n try {\n const assetsRoot = await findAiAssetsRoot(projectDir);\n if (!assetsRoot) return err(`Flow not found: ${flowId}`);\n const { loadAllFlows } = await import(\n \"@skaile/workspaces/factory-assets/connectors/flow/engine\"\n );\n const flows = loadAllFlows(assetsRoot);\n const flow = flows.find((f: any) => f.id === flowId);\n if (!flow) return err(`Flow not found: ${flowId}`);\n return okJson(flow);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * List all past and active flow run sessions for the workspace.\n *\n * Delegates to {@link readAllSessions} (reads `.skaile/sessions/*.json`),\n * sorted newest-first by `updatedAt`.\n *\n * @param projectDir - Absolute path to the skaile project root.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowListSessions(projectDir: string): Promise<ToolResult> {\n try {\n const sessions = await readAllSessions(projectDir);\n return okJson(sessions);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Get driver metadata for a specific flow run session.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param runId - Run ID from {@link flowListSessions}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowGetSession(projectDir: string, runId: string): Promise<ToolResult> {\n try {\n const sessions = await readAllSessions(projectDir);\n const session = sessions.find((s) => s.runId === runId);\n if (!session) return err(`Session not found: ${runId}`);\n return okJson(session);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Resolve and return the flow definition that was used in a past session.\n *\n * Looks up the session by `runId`, reads its `flowId`, then returns the full\n * flow definition from `ai-assets`.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param runId - Run ID from {@link flowListSessions}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowFindFlowForSession(\n projectDir: string,\n runId: string,\n): Promise<ToolResult> {\n try {\n const sessions = await readAllSessions(projectDir);\n const session = sessions.find((s) => s.runId === runId);\n if (!session) return err(`Session not found: ${runId}`);\n\n const assetsRoot = await findAiAssetsRoot(projectDir);\n if (!assetsRoot) return err(`Flow not found for session: ${runId} (no ai-assets root)`);\n\n const { loadAllFlows } = await import(\n \"@skaile/workspaces/factory-assets/connectors/flow/engine\"\n );\n const flows = loadAllFlows(assetsRoot);\n const flow = flows.find((f: any) => f.id === session.flowId);\n if (!flow) return err(`Flow not found: ${session.flowId}`);\n return okJson(flow);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n"]}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { declaredConnectErrorKind, ClassifiedConnectError, withConnectErrorKind } from './chunk-YZSMZK37.js';
|
|
2
|
-
import { OAuthRequiredError, ConnectorFieldMissingError, LegacyAuthGrammarError, resolveAuthRef, readUnavailableMarker, ConnectorStartupError } from './chunk-
|
|
3
|
-
import { EventNormalizer } from './chunk-
|
|
4
|
-
import { resolveModelTier } from './chunk-
|
|
5
|
-
import { createDriver } from './chunk-
|
|
2
|
+
import { OAuthRequiredError, ConnectorFieldMissingError, LegacyAuthGrammarError, resolveAuthRef, readUnavailableMarker, ConnectorStartupError } from './chunk-UOJW2DOZ.js';
|
|
3
|
+
import { EventNormalizer } from './chunk-IQFSXFYG.js';
|
|
4
|
+
import { resolveModelTier } from './chunk-XKPFQ3JT.js';
|
|
5
|
+
import { createDriver } from './chunk-PQF3NDQH.js';
|
|
6
6
|
import { pluginRegistry } from './chunk-6E6PKKAD.js';
|
|
7
7
|
import { computeStimulus } from './chunk-IFGTRL2I.js';
|
|
8
|
-
import { interpolateNodeInstruction, resolveNodeBindings, getConsumedOutputSchema, validateConsumedNodeOutput, appendAttempt, resolveTerminalFailureStatus, remainingActiveExecutionMs, deriveCheckEvidence, computeFlowStateFromSnapshots, availableRouterFrontier, evaluateRouterSelection, routerSelectionOutput, planRouterSkips, unsettledRouterBranchIds, countFailedAttempts, hasAutomaticRetryBudget, persistedRouterSelection } from './chunk-
|
|
9
|
-
import { INPUT_SCHEMA_SHAPES_HINT, coerceInputSchema } from './chunk-
|
|
10
|
-
import {
|
|
11
|
-
import { describeStimulus, buildOrchestratorPrompt, renderSubpromptPrompt, renderStimulusPrompt } from './chunk-
|
|
12
|
-
import { deterministicNodeKindLabel, nodeInstruction, flowDefaults, isAgentNode, isGateNode, isCheckNode, nodeRequiresApproval, isSubFlowNode, isFunctionNode, isSubpromptNode, isRouterNode, isActiveRuntimeNode, nodeIsOptional, nodeLabel, nodeAssets } from './chunk-
|
|
8
|
+
import { interpolateNodeInstruction, resolveNodeBindings, getConsumedOutputSchema, validateConsumedNodeOutput, appendAttempt, resolveTerminalFailureStatus, remainingActiveExecutionMs, deriveCheckEvidence, computeFlowStateFromSnapshots, availableRouterFrontier, evaluateRouterSelection, routerSelectionOutput, planRouterSkips, unsettledRouterBranchIds, countFailedAttempts, hasAutomaticRetryBudget, persistedRouterSelection } from './chunk-A2T4WIZL.js';
|
|
9
|
+
import { INPUT_SCHEMA_SHAPES_HINT, coerceInputSchema } from './chunk-XPDB4O4H.js';
|
|
10
|
+
import { parseFlowDefinition } from './chunk-ALLCAFHQ.js';
|
|
11
|
+
import { describeStimulus, buildOrchestratorPrompt, renderSubpromptPrompt, renderStimulusPrompt } from './chunk-RQLL7L72.js';
|
|
12
|
+
import { deterministicNodeKindLabel, nodeInstruction, flowDefaults, isAgentNode, isGateNode, isCheckNode, nodeRequiresApproval, isSubFlowNode, isFunctionNode, isSubpromptNode, isRouterNode, isActiveRuntimeNode, nodeIsOptional, nodeLabel, nodeAssets } from './chunk-V4RGCKYC.js';
|
|
13
|
+
import { classifierDecision, withoutReservedClassifierFields } from './chunk-DHMBE5J7.js';
|
|
13
14
|
import { withActivityLabelDefs } from './chunk-O64WU6WS.js';
|
|
14
15
|
import { processAlive } from './chunk-4GY63JU6.js';
|
|
15
|
-
import { withFsDeadline, tryWithFsDeadline, FsDeadlineError, fsDeadlineMs } from './chunk-
|
|
16
|
-
import { portableSpawn } from './chunk-
|
|
17
|
-
import { createLogger } from './chunk-
|
|
16
|
+
import { withFsDeadline, tryWithFsDeadline, FsDeadlineError, fsDeadlineMs } from './chunk-2FBPAR2V.js';
|
|
17
|
+
import { portableSpawn } from './chunk-DPLIN2RA.js';
|
|
18
|
+
import { createLogger, redactCredentials } from './chunk-BOFL7GIF.js';
|
|
18
19
|
import { resolve, relative, sep, isAbsolute, join, dirname } from 'path';
|
|
19
20
|
import { mkdir, rename, writeFile, readFile, stat, cp, chmod, rm, readdir, realpath } from 'fs/promises';
|
|
20
21
|
import * as z4 from 'zod';
|
|
@@ -1535,14 +1536,11 @@ var MIN_REFRESH_DELAY_MS = 3e4;
|
|
|
1535
1536
|
var TRANSIENT_REFRESH_RETRY_MS = 3e4;
|
|
1536
1537
|
var MAX_REARM_MS = 24 * 24 * 60 * 60 * 1e3;
|
|
1537
1538
|
var execFileAsync2 = promisify(execFile);
|
|
1538
|
-
function redactUrlAuth(text) {
|
|
1539
|
-
return text.replace(/\/\/[^/\s]*@/g, "//***@");
|
|
1540
|
-
}
|
|
1541
1539
|
function redactError(err) {
|
|
1542
1540
|
const original = err instanceof Error ? err : new Error(String(err));
|
|
1543
|
-
const copy = new Error(
|
|
1541
|
+
const copy = new Error(redactCredentials(original.message));
|
|
1544
1542
|
copy.name = original.name;
|
|
1545
|
-
copy.stack = original.stack === void 0 ? void 0 :
|
|
1543
|
+
copy.stack = original.stack === void 0 ? void 0 : redactCredentials(original.stack);
|
|
1546
1544
|
return copy;
|
|
1547
1545
|
}
|
|
1548
1546
|
var BOOTSTRAP_COMMIT_NAME = "Skaile";
|
|
@@ -1690,7 +1688,7 @@ async function syncSubmodules(cwd, log) {
|
|
|
1690
1688
|
await git(["submodule", "update", "--init", "--recursive"], cwd, 12e4);
|
|
1691
1689
|
} catch (err) {
|
|
1692
1690
|
log.warn("git submodule update failed \u2014 checkout may be incomplete", {
|
|
1693
|
-
error:
|
|
1691
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
1694
1692
|
});
|
|
1695
1693
|
}
|
|
1696
1694
|
}
|
|
@@ -1934,7 +1932,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
1934
1932
|
origin: "tier-1",
|
|
1935
1933
|
tier: 1,
|
|
1936
1934
|
provider: providerKind,
|
|
1937
|
-
scope:
|
|
1935
|
+
scope: redactCredentials(state.url),
|
|
1938
1936
|
expiresAt: initial.expiresAt ? initial.expiresAt.toISOString() : null,
|
|
1939
1937
|
...initial.scope ? { permissions: initial.scope } : {},
|
|
1940
1938
|
...skipReason === null ? {} : { warning: "static-credential", reason: skipReason }
|
|
@@ -2131,7 +2129,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
2131
2129
|
});
|
|
2132
2130
|
outcome = "fetched";
|
|
2133
2131
|
} catch (err) {
|
|
2134
|
-
const message =
|
|
2132
|
+
const message = redactCredentials(err instanceof Error ? err.message : String(err));
|
|
2135
2133
|
if (!/couldn't find remote ref/i.test(message)) {
|
|
2136
2134
|
this.log.warn("session-branch fetch failed", { sessionBranch, error: message });
|
|
2137
2135
|
return "failed";
|
|
@@ -2148,7 +2146,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
2148
2146
|
} catch (err) {
|
|
2149
2147
|
this.log.warn("could not update session-branch fetch refspec", {
|
|
2150
2148
|
sessionBranch,
|
|
2151
|
-
error:
|
|
2149
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
2152
2150
|
});
|
|
2153
2151
|
}
|
|
2154
2152
|
return outcome;
|
|
@@ -2168,7 +2166,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
2168
2166
|
} catch (err) {
|
|
2169
2167
|
this.log.warn("could not re-point session branch at origin", {
|
|
2170
2168
|
sessionBranch,
|
|
2171
|
-
error:
|
|
2169
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
2172
2170
|
});
|
|
2173
2171
|
}
|
|
2174
2172
|
}
|
|
@@ -2207,7 +2205,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
2207
2205
|
} catch (err) {
|
|
2208
2206
|
this.log.warn("could not line up the local session branch with origin", {
|
|
2209
2207
|
sessionBranch,
|
|
2210
|
-
error:
|
|
2208
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
2211
2209
|
});
|
|
2212
2210
|
}
|
|
2213
2211
|
}
|
|
@@ -2228,7 +2226,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
2228
2226
|
} catch (err) {
|
|
2229
2227
|
this.log.warn("merge of origin session branch failed", {
|
|
2230
2228
|
branch,
|
|
2231
|
-
error:
|
|
2229
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
2232
2230
|
});
|
|
2233
2231
|
await this.resolveConflictsOrAbort(s, cwd, "merge");
|
|
2234
2232
|
}
|
|
@@ -2248,7 +2246,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
2248
2246
|
} catch (err) {
|
|
2249
2247
|
this.log.warn("could not record the pushed session branch", {
|
|
2250
2248
|
branch,
|
|
2251
|
-
error:
|
|
2249
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
2252
2250
|
});
|
|
2253
2251
|
}
|
|
2254
2252
|
}
|
|
@@ -2512,7 +2510,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
2512
2510
|
} catch (err) {
|
|
2513
2511
|
this.log.warn("merge failed", {
|
|
2514
2512
|
branch: s.activeBranch,
|
|
2515
|
-
error:
|
|
2513
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
2516
2514
|
});
|
|
2517
2515
|
const resolved = await this.resolveConflictsOrAbort(s, handle.mountPath, "merge");
|
|
2518
2516
|
if (resolved) {
|
|
@@ -2630,7 +2628,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
2630
2628
|
const urlPrefix = this.deriveCredentialScope(url);
|
|
2631
2629
|
const helperScriptPath = join(skaileDir, `credential-helper-${declaration.id}.sh`);
|
|
2632
2630
|
const refreshAttemptPath = join(skaileDir, `refresh-attempt-${declaration.id}`);
|
|
2633
|
-
const reason =
|
|
2631
|
+
const reason = redactCredentials(err instanceof Error ? err.message : String(err));
|
|
2634
2632
|
this.ensureAttemptStamp(declaration.id, refreshAttemptPath);
|
|
2635
2633
|
writeHelperScript(
|
|
2636
2634
|
helperScriptPath,
|
|
@@ -2952,7 +2950,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
2952
2950
|
return out.length === 0 ? 0 : out.split("\n").length;
|
|
2953
2951
|
} catch (err) {
|
|
2954
2952
|
this.log.warn("ls-remote probe failed \u2014 assuming a populated remote", {
|
|
2955
|
-
error:
|
|
2953
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
2956
2954
|
});
|
|
2957
2955
|
return null;
|
|
2958
2956
|
}
|
|
@@ -3011,7 +3009,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
3011
3009
|
} catch (err) {
|
|
3012
3010
|
this.log.warn("empty-remote publish push failed; deferring to lifecycle push", {
|
|
3013
3011
|
branch,
|
|
3014
|
-
error:
|
|
3012
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
3015
3013
|
});
|
|
3016
3014
|
}
|
|
3017
3015
|
const publishedElsewhere = await this.countRemoteHeads(targetDir, authUrl, branch);
|
|
@@ -3022,7 +3020,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
3022
3020
|
} catch (err) {
|
|
3023
3021
|
this.log.warn("adopting the concurrently-created branch failed; keeping local branch", {
|
|
3024
3022
|
branch,
|
|
3025
|
-
error:
|
|
3023
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
3026
3024
|
});
|
|
3027
3025
|
}
|
|
3028
3026
|
}
|
|
@@ -3181,7 +3179,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
3181
3179
|
s.fetchInFlight = true;
|
|
3182
3180
|
void this.runPeriodicFetch(s, mountPath).catch((err) => {
|
|
3183
3181
|
this.log.debug("periodic fetch failed", {
|
|
3184
|
-
error:
|
|
3182
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
3185
3183
|
});
|
|
3186
3184
|
}).finally(() => {
|
|
3187
3185
|
s.fetchInFlight = false;
|
|
@@ -3206,7 +3204,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
3206
3204
|
} catch (err) {
|
|
3207
3205
|
this.log.warn("rebase failed", {
|
|
3208
3206
|
branch: s.branch,
|
|
3209
|
-
error:
|
|
3207
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
3210
3208
|
});
|
|
3211
3209
|
await this.resolveConflictsOrAbort(s, mountPath, "rebase");
|
|
3212
3210
|
}
|
|
@@ -3266,7 +3264,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
3266
3264
|
this.log.warn("merge of base into session branch failed", {
|
|
3267
3265
|
branch: s.activeBranch,
|
|
3268
3266
|
base: s.branch,
|
|
3269
|
-
error:
|
|
3267
|
+
error: redactCredentials(err instanceof Error ? err.message : String(err))
|
|
3270
3268
|
});
|
|
3271
3269
|
await this.resolveConflictsOrAbort(s, mountPath, "merge");
|
|
3272
3270
|
}
|
|
@@ -6950,12 +6948,14 @@ var ConnectorManager = class {
|
|
|
6950
6948
|
driver: decl.driver,
|
|
6951
6949
|
access: decl.access,
|
|
6952
6950
|
...decl.label !== void 0 ? { label: decl.label } : {},
|
|
6953
|
-
...decl.mount?.source !== void 0 ? { source: decl.mount.source } : {},
|
|
6951
|
+
...decl.mount?.source !== void 0 ? { source: redactCredentials(decl.mount.source) } : {},
|
|
6954
6952
|
...mountPath !== void 0 ? { mountPath } : {},
|
|
6955
6953
|
// A host-declared unavailable connector is never fail-fast material.
|
|
6956
6954
|
required: unavailable === void 0 && decl.access === "read-write" && decl.mount != null,
|
|
6957
|
-
|
|
6958
|
-
|
|
6955
|
+
// Redacted here as well as at the callers: every failure record reaches
|
|
6956
|
+
// the agent through `connector_list`, whoever wrote the text.
|
|
6957
|
+
error: redactCredentials(error),
|
|
6958
|
+
...unavailable !== void 0 ? { unavailable: redactMarker(unavailable) } : {}
|
|
6959
6959
|
});
|
|
6960
6960
|
}
|
|
6961
6961
|
/**
|
|
@@ -6967,7 +6967,9 @@ var ConnectorManager = class {
|
|
|
6967
6967
|
* newer than that record and replace it in a host's newest-wins failure view.
|
|
6968
6968
|
*/
|
|
6969
6969
|
recordUnavailable(decl, unavailable) {
|
|
6970
|
-
const msg =
|
|
6970
|
+
const msg = redactCredentials(
|
|
6971
|
+
`Not attached by the host (${unavailable.reason})` + (unavailable.detail ? `: ${unavailable.detail}` : "")
|
|
6972
|
+
);
|
|
6971
6973
|
this.recordFailure(decl, msg, unavailable);
|
|
6972
6974
|
this.mgrLog.warn("connector declared unavailable by the host", {
|
|
6973
6975
|
id: decl.id,
|
|
@@ -7148,7 +7150,7 @@ var ConnectorManager = class {
|
|
|
7148
7150
|
};
|
|
7149
7151
|
} catch (err) {
|
|
7150
7152
|
if (!this.active.has(decl.id)) this.releaseMountTarget(decl.id);
|
|
7151
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
7153
|
+
const msg = redactCredentials(err instanceof Error ? err.message : String(err));
|
|
7152
7154
|
this.recordFailure(decl, msg);
|
|
7153
7155
|
const errorKind = classifyConnectError(err);
|
|
7154
7156
|
this.mgrLog.error("connect failed", err, {
|
|
@@ -7258,7 +7260,7 @@ var ConnectorManager = class {
|
|
|
7258
7260
|
return handle;
|
|
7259
7261
|
} catch (err) {
|
|
7260
7262
|
this.releaseMountTarget(declaration.id);
|
|
7261
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
7263
|
+
const msg = redactCredentials(err instanceof Error ? err.message : String(err));
|
|
7262
7264
|
this.recordFailure(declaration, msg);
|
|
7263
7265
|
const errorKind = classifyConnectError(err);
|
|
7264
7266
|
this.opts.onStatusChange?.({
|
|
@@ -7692,6 +7694,13 @@ var ConnectorManager = class {
|
|
|
7692
7694
|
return buildSkillBody(descriptor, ops, shellAccess);
|
|
7693
7695
|
}
|
|
7694
7696
|
};
|
|
7697
|
+
function redactMarker(marker) {
|
|
7698
|
+
return {
|
|
7699
|
+
...marker,
|
|
7700
|
+
reason: redactCredentials(marker.reason),
|
|
7701
|
+
...marker.detail !== void 0 ? { detail: redactCredentials(marker.detail) } : {}
|
|
7702
|
+
};
|
|
7703
|
+
}
|
|
7695
7704
|
var zStatic = z4.z ?? z4.default ?? z4;
|
|
7696
7705
|
function readFailedConnectors(manager) {
|
|
7697
7706
|
if (typeof manager.listFailedConnectors !== "function") return [];
|
|
@@ -11494,5 +11503,5 @@ function describeFlowOperations() {
|
|
|
11494
11503
|
}
|
|
11495
11504
|
|
|
11496
11505
|
export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, BoxConnector, ClassifierSubpromptRunner, ConnectorManager, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, MAX_REARM_MS, MIN_REFRESH_DELAY_MS, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, NO_ACTIVE_FLOW_ERROR, PortPool, PostgresConnector, REFRESH_LEAD_MS, S3Connector, SQLiteConnector, SessionInlineSubFlowRunner, SessionNodeExecutor, SessionSubpromptRunner, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildConnectorToolDefs, buildFlowPromptEvent, buildFlowToolDefs, buildLazyFlowToolDefs, buildLazySdkFlowTools, buildSdkConnectorTools, buildSdkFlowTools, checkFleetMountLiveness, classifierQuestion, classifyConnectError, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector20, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createFsWatcher, createWorktree, defaultSpawn, describeFlowOperations, driveOrchestratorTurn, ensureDirMode, ensureFleetMounted, ensureRefreshAttemptStamp, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, readGitSyncStatus, registerBuiltinConnectors, removeMountBlock, removeUnavailableMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock, writeUnavailableMountBlock };
|
|
11497
|
-
//# sourceMappingURL=chunk-
|
|
11498
|
-
//# sourceMappingURL=chunk-
|
|
11506
|
+
//# sourceMappingURL=chunk-N6XJGVSK.js.map
|
|
11507
|
+
//# sourceMappingURL=chunk-N6XJGVSK.js.map
|