@skaile/workspaces 3.14.0 → 3.15.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 +165 -0
- package/dist/{asset-feeds-STHKKTW3.js → asset-feeds-XSUE5LE6.js} +7 -7
- package/dist/{asset-feeds-STHKKTW3.js.map → asset-feeds-XSUE5LE6.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +1 -1
- package/dist/asset-manager/index.js +7 -7
- package/dist/asset-manager/installer.js +4 -4
- package/dist/asset-manager/renderers.js +2 -2
- package/dist/bridge/drivers/claude-sdk.js +9 -6
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +2 -2
- package/dist/bridge/drivers/continue.js +2 -2
- package/dist/bridge/drivers/echo.js +1 -1
- package/dist/bridge/drivers/gemini.js +4 -4
- package/dist/bridge/drivers/goose.js +2 -2
- package/dist/bridge/drivers/omp.js +145 -6
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +2 -2
- package/dist/bridge/drivers/qwen.js +4 -4
- package/dist/bridge/index.js +4 -4
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp.d.ts +62 -0
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/index.d.ts +1 -0
- package/dist/bridge/src/index.d.ts.map +1 -1
- package/dist/bridge/src/models.d.ts +27 -2
- package/dist/bridge/src/models.d.ts.map +1 -1
- package/dist/bridge/src/provider-endpoints.d.ts +39 -0
- package/dist/bridge/src/provider-endpoints.d.ts.map +1 -1
- package/dist/bridge/src/validation.d.ts +6 -1
- package/dist/bridge/src/validation.d.ts.map +1 -1
- package/dist/{chunk-ZSZSDBBW.js → chunk-4OQ2HQCQ.js} +5 -5
- package/dist/{chunk-ZSZSDBBW.js.map → chunk-4OQ2HQCQ.js.map} +1 -1
- package/dist/{chunk-GY5SLCH2.js → chunk-5WMFU575.js} +158 -13
- package/dist/chunk-5WMFU575.js.map +1 -0
- package/dist/{chunk-UTW6YKAC.js → chunk-6YDXCJGK.js} +2 -2
- package/dist/{chunk-UTW6YKAC.js.map → chunk-6YDXCJGK.js.map} +1 -1
- package/dist/{chunk-IRORTHGA.js → chunk-AN6NAFRT.js} +21 -7
- package/dist/chunk-AN6NAFRT.js.map +1 -0
- package/dist/{chunk-HYFJPR7W.js → chunk-CWTL2QWL.js} +7 -7
- package/dist/{chunk-HYFJPR7W.js.map → chunk-CWTL2QWL.js.map} +1 -1
- package/dist/{chunk-2A7BV6WT.js → chunk-DTSKPMP3.js} +9 -6
- package/dist/chunk-DTSKPMP3.js.map +1 -0
- package/dist/{chunk-IEX5YV4R.js → chunk-DVSASEGO.js} +3 -3
- package/dist/{chunk-IEX5YV4R.js.map → chunk-DVSASEGO.js.map} +1 -1
- package/dist/{chunk-XICDQVOG.js → chunk-DWO2N72K.js} +4 -4
- package/dist/{chunk-XICDQVOG.js.map → chunk-DWO2N72K.js.map} +1 -1
- package/dist/{chunk-AZPXCHDK.js → chunk-F2WTSHZS.js} +3 -4
- package/dist/chunk-F2WTSHZS.js.map +1 -0
- package/dist/{chunk-URB2QZ4W.js → chunk-FI4QNNMD.js} +5 -5
- package/dist/{chunk-URB2QZ4W.js.map → chunk-FI4QNNMD.js.map} +1 -1
- package/dist/{chunk-PGUTER7Z.js → chunk-FYLIY6TO.js} +3 -3
- package/dist/{chunk-PGUTER7Z.js.map → chunk-FYLIY6TO.js.map} +1 -1
- package/dist/{chunk-V34ZEXSE.js → chunk-GURXUF2J.js} +32 -7
- package/dist/chunk-GURXUF2J.js.map +1 -0
- package/dist/{chunk-NELENR57.js → chunk-LAOS2TZU.js} +5 -5
- package/dist/{chunk-NELENR57.js.map → chunk-LAOS2TZU.js.map} +1 -1
- package/dist/{chunk-5F33LGZL.js → chunk-LVZ5NGME.js} +3 -3
- package/dist/{chunk-5F33LGZL.js.map → chunk-LVZ5NGME.js.map} +1 -1
- package/dist/{chunk-KKMRT6GU.js → chunk-MTCLDJPR.js} +7 -7
- package/dist/{chunk-KKMRT6GU.js.map → chunk-MTCLDJPR.js.map} +1 -1
- package/dist/{chunk-GRMQBBN4.js → chunk-O52DU5KU.js} +2 -2
- package/dist/{chunk-GRMQBBN4.js.map → chunk-O52DU5KU.js.map} +1 -1
- package/dist/{chunk-PW4SJE3X.js → chunk-PPKK5EV6.js} +3 -3
- package/dist/{chunk-PW4SJE3X.js.map → chunk-PPKK5EV6.js.map} +1 -1
- package/dist/{chunk-OCLCDB7G.js → chunk-Q7KWJO4J.js} +5 -5
- package/dist/{chunk-OCLCDB7G.js.map → chunk-Q7KWJO4J.js.map} +1 -1
- package/dist/{chunk-OYZIURPH.js → chunk-QZ6XXD3A.js} +3 -3
- package/dist/{chunk-OYZIURPH.js.map → chunk-QZ6XXD3A.js.map} +1 -1
- package/dist/{chunk-Z7W4B7P2.js → chunk-TMAGWRKY.js} +6 -6
- package/dist/{chunk-Z7W4B7P2.js.map → chunk-TMAGWRKY.js.map} +1 -1
- package/dist/{chunk-Y6JJHOLR.js → chunk-VFPFW67T.js} +9 -9
- package/dist/{chunk-Y6JJHOLR.js.map → chunk-VFPFW67T.js.map} +1 -1
- package/dist/{chunk-WAFHQDLK.js → chunk-WE7ONZNB.js} +3 -3
- package/dist/{chunk-WAFHQDLK.js.map → chunk-WE7ONZNB.js.map} +1 -1
- package/dist/{chunk-O7WKKINT.js → chunk-X5EYJEEQ.js} +4 -4
- package/dist/{chunk-O7WKKINT.js.map → chunk-X5EYJEEQ.js.map} +1 -1
- package/dist/{chunk-AONVXRAE.js → chunk-Z5ED4E57.js} +2 -2
- package/dist/{chunk-AONVXRAE.js.map → chunk-Z5ED4E57.js.map} +1 -1
- package/dist/cli/index.js +46 -46
- package/dist/cli/index.js.map +1 -1
- package/dist/connectors/config.js +1 -1
- package/dist/connectors/index.js +6 -6
- package/dist/core/index.js +1 -1
- package/dist/core/src/settings.d.ts +12 -1
- package/dist/core/src/settings.d.ts.map +1 -1
- package/dist/deploy/index.js +1 -1
- package/dist/discovery/index.js +2 -2
- package/dist/{ensure-sources-BFVKV773.js → ensure-sources-SFQT5GXY.js} +10 -10
- package/dist/{ensure-sources-BFVKV773.js.map → ensure-sources-SFQT5GXY.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +6 -6
- package/dist/factory-assets/connectors/deploy.js +6 -6
- package/dist/factory-assets/connectors/devserver.js +6 -6
- package/dist/factory-assets/connectors/flow/adapter.js +6 -6
- package/dist/factory-assets/connectors/flow/engine.js +2 -2
- package/dist/factory-assets/connectors/flow/run-flow.js +7 -7
- package/dist/factory-assets/connectors/flow.js +6 -6
- package/dist/factory-assets/connectors/git.js +6 -6
- package/dist/factory-assets/connectors/gmail.js +6 -6
- package/dist/factory-assets/connectors/googledrive.js +6 -6
- package/dist/factory-assets/connectors/local.js +6 -6
- package/dist/factory-assets/connectors/mattermost.js +6 -6
- package/dist/factory-assets/connectors/memory.js +6 -6
- package/dist/factory-assets/connectors/minio.js +6 -6
- package/dist/factory-assets/connectors/postgres.js +6 -6
- package/dist/factory-assets/connectors/s3.js +6 -6
- package/dist/factory-assets/connectors/sharepoint.js +6 -6
- package/dist/factory-assets/connectors/sqlite.js +6 -6
- package/dist/factory-assets/connectors/static-server.js +6 -6
- package/dist/factory-assets/connectors/tunnel.js +6 -6
- package/dist/factory-assets/connectors/webdav.js +6 -6
- package/dist/factory-assets/connectors/xstate-store.js +6 -6
- package/dist/factory-assets/connectors/xstate.js +6 -6
- package/dist/{flows-4R4VJ5VM.js → flows-Z3DM5BHF.js} +4 -4
- package/dist/{flows-4R4VJ5VM.js.map → flows-Z3DM5BHF.js.map} +1 -1
- package/dist/{helpers-CQV2V2SL.js → helpers-VRQXNHFR.js} +10 -10
- package/dist/{helpers-CQV2V2SL.js.map → helpers-VRQXNHFR.js.map} +1 -1
- package/dist/library/index.js +4 -4
- package/dist/library/install.js +1 -1
- package/dist/{library-publish-6FZCXPYU.js → library-publish-DV3B2ITY.js} +14 -14
- package/dist/{library-publish-6FZCXPYU.js.map → library-publish-DV3B2ITY.js.map} +1 -1
- package/dist/{open-library-4EOFZ4QD.js → open-library-2BXBAC6Q.js} +12 -12
- package/dist/{open-library-4EOFZ4QD.js.map → open-library-2BXBAC6Q.js.map} +1 -1
- package/dist/{paths-S7UESJKT.js → paths-AI7MDPNA.js} +3 -3
- package/dist/{paths-S7UESJKT.js.map → paths-AI7MDPNA.js.map} +1 -1
- package/dist/{plugin-store-5SJX2PRR.js → plugin-store-OO5EZBYP.js} +3 -3
- package/dist/{plugin-store-5SJX2PRR.js.map → plugin-store-OO5EZBYP.js.map} +1 -1
- package/dist/{project-J7RSKBAU.js → project-2TYDMEZB.js} +11 -11
- package/dist/{project-J7RSKBAU.js.map → project-2TYDMEZB.js.map} +1 -1
- package/dist/resolver/index.js +1 -1
- package/dist/runner/index.js +9 -9
- package/dist/runner/src/compaction/orchestrator.d.ts +23 -0
- package/dist/runner/src/compaction/orchestrator.d.ts.map +1 -1
- package/dist/runner/src/compaction-gate.d.ts +93 -0
- package/dist/runner/src/compaction-gate.d.ts.map +1 -0
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +7 -7
- package/dist/sdk/bridge.js +4 -4
- package/dist/sdk/core.js +1 -1
- package/dist/sdk/flow.js +2 -2
- package/dist/sdk/index.js +9 -9
- package/dist/sdk/resolver.js +1 -1
- package/dist/sdk/runner.js +9 -9
- package/dist/{setup-OQT5YK2Q.js → setup-EH4TZFMN.js} +6 -6
- package/dist/{setup-OQT5YK2Q.js.map → setup-EH4TZFMN.js.map} +1 -1
- package/dist/{skills-OBJX3VYG.js → skills-XZOG6ZPX.js} +3 -3
- package/dist/{skills-OBJX3VYG.js.map → skills-XZOG6ZPX.js.map} +1 -1
- package/dist/{source-AJ27AS6D.js → source-PVTUMNAO.js} +13 -13
- package/dist/{source-AJ27AS6D.js.map → source-PVTUMNAO.js.map} +1 -1
- package/dist/{source-manifest-publish-UCA2O5UA.js → source-manifest-publish-3XYTUVQQ.js} +15 -15
- package/dist/{source-manifest-publish-UCA2O5UA.js.map → source-manifest-publish-3XYTUVQQ.js.map} +1 -1
- package/dist/tui/index.js +9 -9
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/manifests/agent.d.ts +47 -7
- package/dist/types/src/manifests/agent.d.ts.map +1 -1
- package/dist/types/src/manifests/index.d.ts +2 -2
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +2 -2
- package/dist/workspace-plugin/adapters/omp.js +7 -7
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +2 -1
- package/dist/chunk-2A7BV6WT.js.map +0 -1
- package/dist/chunk-AZPXCHDK.js.map +0 -1
- package/dist/chunk-GY5SLCH2.js.map +0 -1
- package/dist/chunk-IRORTHGA.js.map +0 -1
- package/dist/chunk-V34ZEXSE.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omp.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/omp.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAKvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,KAAK,WAAW,EAAE,WAAW,EAAmB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"omp.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/omp.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAKvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,KAAK,WAAW,EAAE,WAAW,EAAmB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAO9F;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,qBAAqB,mpCAiExB,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAalF;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,qJAgBpB,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAE9C,CAAC;AAyDF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,CAgBtE;AAkCD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,SAAU,SAAQ,WAAW;IACxC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAK7B;IAEF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkC;IACtD,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,QAAQ,CAAM;IACtB,+DAA+D;IAC/D,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,+EAA+E;IAC/E,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,UAAU,CAAuC;IAEzD,IAAa,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAElD;IAEQ,QAAQ,IAAI,MAAM,GAAG,SAAS;IAIvC;;;;;;;;OAQG;gBACS,MAAM,EAAE,WAAW;IAKlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAOrB,MAAM;IA0LpB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,WAAW;IAyEnB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAOnB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAOlB;;;;OAIG;YACW,gBAAgB;IAqC9B,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,IAAI;IAcZ;;;;;;;;;;;;OAYG;IACU,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnD;;;;;;OAMG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC,0EAA0E;IAC1E,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;;;;OAKG;IACH,IAAI,IAAI,IAAI;IAON,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,oBAAoB;IAoBb,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IA8BlD,OAAO,CAAC,OAAO;CAQhB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,WAAW,CASrD,CAAC"}
|
|
@@ -4,6 +4,7 @@ export { AccountUnavailableError, AuthError, type ClaudeSdkResultErrorInput, cla
|
|
|
4
4
|
export * from "./logger.js";
|
|
5
5
|
export * from "./models.js";
|
|
6
6
|
export * from "./normalizer.js";
|
|
7
|
+
export * from "./provider-endpoints.js";
|
|
7
8
|
export * from "./registry.js";
|
|
8
9
|
export { probeResumeTranscript, type ResumeProbeOutcome, resolveClaudeConfigDir, } from "./drivers/resume-probe.js";
|
|
9
10
|
export * from "./runtime.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../bridge/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,KAAK,yBAAyB,EAC9B,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../bridge/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,KAAK,yBAAyB,EAC9B,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
|
@@ -38,6 +38,25 @@ export interface FetchModelsResult {
|
|
|
38
38
|
/** Whether the result came from a live API call or the static fallback. */
|
|
39
39
|
source: "api" | "static";
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Options controlling where a model-list fetch is addressed.
|
|
43
|
+
*
|
|
44
|
+
* @since 1.5.0
|
|
45
|
+
*/
|
|
46
|
+
export interface FetchModelsOptions {
|
|
47
|
+
/**
|
|
48
|
+
* Base URL to resolve the provider's models endpoint against — e.g. the
|
|
49
|
+
* gateway a session already routes completions through. Overrides the
|
|
50
|
+
* provider's `baseUrlEnv` value.
|
|
51
|
+
*/
|
|
52
|
+
baseUrl?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Environment consulted for the provider's base-URL env var
|
|
55
|
+
* (`ANTHROPIC_BASE_URL` for `anthropic`). Defaults to `process.env`; pass an
|
|
56
|
+
* explicit record to keep a call hermetic.
|
|
57
|
+
*/
|
|
58
|
+
env?: Record<string, string | undefined>;
|
|
59
|
+
}
|
|
41
60
|
/**
|
|
42
61
|
* Fetch the model list from a provider's REST API.
|
|
43
62
|
*
|
|
@@ -45,13 +64,18 @@ export interface FetchModelsResult {
|
|
|
45
64
|
* `{ ok: false, models: [], error }` on any HTTP or network failure — the
|
|
46
65
|
* caller should fall back to {@link getStaticModels} in that case.
|
|
47
66
|
*
|
|
67
|
+
* When the provider is reachable through a gateway, the request targets the
|
|
68
|
+
* configured base URL rather than the provider's public API — see
|
|
69
|
+
* {@link resolveProviderModelsUrl}. Without one, behaviour is unchanged.
|
|
70
|
+
*
|
|
48
71
|
* @param provider - Provider name matching a key in the shared `PROVIDER_ENDPOINTS` map
|
|
49
72
|
* (e.g. `"anthropic"`, `"openai"`, `"google"`).
|
|
50
73
|
* @param apiKey - API key forwarded in the request header or query parameter.
|
|
74
|
+
* @param options - Optional base-URL / environment overrides.
|
|
51
75
|
* @returns Resolved model list with source attribution.
|
|
52
76
|
* @docLink packages/bridge/api-reference#models
|
|
53
77
|
*/
|
|
54
|
-
export declare function fetchProviderModels(provider: string, apiKey: string): Promise<FetchModelsResult>;
|
|
78
|
+
export declare function fetchProviderModels(provider: string, apiKey: string, options?: FetchModelsOptions): Promise<FetchModelsResult>;
|
|
55
79
|
/**
|
|
56
80
|
* Get models for a provider, trying the live API first and falling back to the static catalog.
|
|
57
81
|
*
|
|
@@ -61,10 +85,11 @@ export declare function fetchProviderModels(provider: string, apiKey: string): P
|
|
|
61
85
|
*
|
|
62
86
|
* @param provider - Provider name (e.g. `"anthropic"`, `"openai"`, `"google"`).
|
|
63
87
|
* @param apiKey - Optional API key; omit to skip the live fetch and use the static catalog.
|
|
88
|
+
* @param options - Optional base-URL / environment overrides (see {@link FetchModelsOptions}).
|
|
64
89
|
* @returns Resolved model list with source attribution.
|
|
65
90
|
* @docLink packages/bridge/api-reference#models
|
|
66
91
|
*/
|
|
67
|
-
export declare function getModels(provider: string, apiKey?: string): Promise<FetchModelsResult>;
|
|
92
|
+
export declare function getModels(provider: string, apiKey?: string, options?: FetchModelsOptions): Promise<FetchModelsResult>;
|
|
68
93
|
/**
|
|
69
94
|
* Offline model catalog keyed by provider name.
|
|
70
95
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../bridge/src/models.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,yFAAyF;IACzF,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;CACd;AA6GD;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,EAAE,EAAE,OAAO,CAAC;IACZ,4CAA4C;IAC5C,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC1B;AAED
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../bridge/src/models.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,yFAAyF;IACzF,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;CACd;AA6GD;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,EAAE,EAAE,OAAO,CAAC;IACZ,4CAA4C;IAC5C,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAmD5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAkB5B;AAMD;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAgEtD,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAE9D;AAMD,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAmC7E,CAAC;AAEF,qEAAqE;AACrE,qBAAa,wBAAyB,SAAQ,KAAK;IAE/C,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;gBAD5B,IAAI,EAAE,OAAO,GAAG,MAAM,EACtB,QAAQ,EAAE,MAAM,GAAG,SAAS;CAQxC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EAC9C,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,kBAAkB,CAAA;CAAO,GAClF,MAAM,GAAG,SAAS,CAWpB"}
|
|
@@ -8,9 +8,48 @@
|
|
|
8
8
|
*/
|
|
9
9
|
/** REST endpoint descriptor for a provider's models listing. */
|
|
10
10
|
export interface ProviderEndpoint {
|
|
11
|
+
/** Full models-list URL against the provider's own public API. */
|
|
11
12
|
url: string;
|
|
13
|
+
/**
|
|
14
|
+
* Path appended to a caller- or env-supplied base URL. Present only for
|
|
15
|
+
* providers that can legitimately be addressed through a gateway/proxy that
|
|
16
|
+
* emulates their wire protocol.
|
|
17
|
+
*/
|
|
18
|
+
path?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Env var carrying a base-URL override for this provider, using the same
|
|
21
|
+
* name the provider's own SDK reads. Consulted by
|
|
22
|
+
* {@link resolveProviderModelsUrl} when no explicit base URL is passed.
|
|
23
|
+
*/
|
|
24
|
+
baseUrlEnv?: string;
|
|
12
25
|
headers: (key: string) => Record<string, string>;
|
|
13
26
|
queryParam?: string;
|
|
14
27
|
}
|
|
15
28
|
export declare const PROVIDER_ENDPOINTS: Record<string, ProviderEndpoint>;
|
|
29
|
+
/**
|
|
30
|
+
* Resolve the models-list URL for a provider, honouring a configured base URL.
|
|
31
|
+
*
|
|
32
|
+
* Behind a gateway (LiteLLM, a corporate proxy, an Anthropic-compatible
|
|
33
|
+
* router) the credential in play is the *gateway's*, not the provider's. Firing
|
|
34
|
+
* discovery at the provider's own public API therefore 401s and yields an empty
|
|
35
|
+
* catalog — which a caller that reads "empty" as "unknown" then degrades into
|
|
36
|
+
* "accept anything". Resolving against the same base URL the runtime already
|
|
37
|
+
* routes completions through keeps discovery and dispatch pointed at one place.
|
|
38
|
+
*
|
|
39
|
+
* Precedence: explicit `baseUrl` argument → the endpoint's `baseUrlEnv` value
|
|
40
|
+
* in `env` → the provider's own `url`. A provider with no `path` has no
|
|
41
|
+
* gateway form and always returns `url`.
|
|
42
|
+
*
|
|
43
|
+
* The base URL is joined tolerantly: a trailing slash is stripped, and a base
|
|
44
|
+
* that already ends in the path's leading version segment (`…/v1` for a
|
|
45
|
+
* `/v1/models` path) is not doubled up. Both spellings are common in the wild.
|
|
46
|
+
*
|
|
47
|
+
* Pure: reads only the `env` record it is handed.
|
|
48
|
+
*
|
|
49
|
+
* @since 1.5.0
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveProviderModelsUrl(provider: string, options?: {
|
|
52
|
+
baseUrl?: string;
|
|
53
|
+
env?: Record<string, string | undefined>;
|
|
54
|
+
}): string | undefined;
|
|
16
55
|
//# sourceMappingURL=provider-endpoints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-endpoints.d.ts","sourceRoot":"","sources":["../../../bridge/src/provider-endpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gEAAgE;AAChE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"provider-endpoints.d.ts","sourceRoot":"","sources":["../../../bridge/src/provider-endpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gEAAgE;AAChE,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA8C/D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAAO,GAC3E,MAAM,GAAG,SAAS,CAUpB"}
|
|
@@ -20,8 +20,13 @@ export interface ValidationResult {
|
|
|
20
20
|
* @param provider - Provider name matching a key in the shared `PROVIDER_ENDPOINTS` map
|
|
21
21
|
* (e.g. `"anthropic"`, `"openai"`, `"google"`).
|
|
22
22
|
* @param key - API key to validate.
|
|
23
|
+
* @param options - Optional base-URL / environment overrides; defaults to the
|
|
24
|
+
* provider's own API, or its `baseUrlEnv` value when one is set.
|
|
23
25
|
* @returns Validation result with optional error description.
|
|
24
26
|
* @docLink packages/bridge/api-reference#validation
|
|
25
27
|
*/
|
|
26
|
-
export declare function validateApiKey(provider: string, key: string
|
|
28
|
+
export declare function validateApiKey(provider: string, key: string, options?: {
|
|
29
|
+
baseUrl?: string;
|
|
30
|
+
env?: Record<string, string | undefined>;
|
|
31
|
+
}): Promise<ValidationResult>;
|
|
27
32
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../bridge/src/validation.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAIlG;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,EAAE,EAAE,OAAO,CAAC;IACZ,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../bridge/src/validation.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAIlG;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,EAAE,EAAE,OAAO,CAAC;IACZ,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAAO,GAC3E,OAAO,CAAC,gBAAgB,CAAC,CAoC3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { SubprocessCliDriver, extractText, extractCost, extractTokens } from './chunk-
|
|
2
|
-
import { getStaticModels, fetchProviderModels } from './chunk-
|
|
3
|
-
import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from './chunk-
|
|
1
|
+
import { SubprocessCliDriver, extractText, extractCost, extractTokens } from './chunk-FYLIY6TO.js';
|
|
2
|
+
import { getStaticModels, fetchProviderModels } from './chunk-GURXUF2J.js';
|
|
3
|
+
import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from './chunk-Z5ED4E57.js';
|
|
4
4
|
import * as z from 'zod';
|
|
5
5
|
|
|
6
6
|
var GeminiFamilyDriver = class extends SubprocessCliDriver {
|
|
@@ -106,5 +106,5 @@ var geminiDriverTarget = {
|
|
|
106
106
|
};
|
|
107
107
|
|
|
108
108
|
export { GeminiDriver, GeminiFamilyDriver, geminiDriverTarget };
|
|
109
|
-
//# sourceMappingURL=chunk-
|
|
110
|
-
//# sourceMappingURL=chunk-
|
|
109
|
+
//# sourceMappingURL=chunk-4OQ2HQCQ.js.map
|
|
110
|
+
//# sourceMappingURL=chunk-4OQ2HQCQ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../bridge/src/drivers/gemini.ts"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../bridge/src/drivers/gemini.ts"],"names":[],"mappings":"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","file":"chunk-4OQ2HQCQ.js","sourcesContent":["import type { DriverTarget } from \"@skaile/workspaces/plugin-registry\";\nimport type { Logger } from \"@skaile/workspaces/types\";\nimport * as z from \"zod\";\nimport { getBridgeLogger } from \"../logger.js\";\nimport { fetchProviderModels, getStaticModels, type ModelEntry } from \"../models.js\";\nimport { BUILTIN_DRIVER_CATALOG } from \"../registry.js\";\nimport type { AgentConfig, DriverInfo } from \"../types.js\";\nimport { extractCost, extractText, extractTokens, SubprocessCliDriver } from \"./_subprocess-cli.js\";\n\n/**\n * Shared base for the Gemini-CLI event family. Gemini CLI and Qwen Code (a fork\n * of Gemini CLI) emit the same `stream-json` event shape, so both dispatch the\n * same {@link handleJson}: `init`/`system` → session capture, `message`/\n * `assistant` → streamed assistant text, `tool_use` / `tool_result` → tool\n * events, `result` → tokens + cost.\n *\n * @docLink packages/bridge/drivers#gemini-driver\n */\nexport abstract class GeminiFamilyDriver extends SubprocessCliDriver {\n protected handleJson(json: any): void {\n switch (json?.type) {\n case \"init\":\n case \"system\":\n this.captureSession(json.sessionId ?? json.session_id ?? json.id);\n break;\n\n case \"message\":\n case \"assistant\": {\n const role = json.role ?? json.message?.role ?? \"assistant\";\n if (role !== \"assistant\") break;\n const text = extractText(json);\n if (json.done === true || json.final === true || json.finished === true) {\n this.pushAssistantEnd(text);\n } else {\n this.pushAssistantDelta(text);\n }\n break;\n }\n\n case \"tool_use\":\n case \"tool_call\":\n this.pushToolCall(json.name ?? json.tool ?? \"tool\", json.input ?? json.args ?? {});\n break;\n\n case \"tool_result\":\n this.pushToolResult(\n json.name ?? json.tool ?? \"tool\",\n json.result ?? json.output ?? json.content,\n Boolean(json.is_error ?? json.isError ?? json.error),\n );\n break;\n\n case \"error\":\n this.pushError(this.classifyMessage(String(json.message ?? json.error ?? \"error\")));\n break;\n\n case \"result\":\n this.captureSession(json.sessionId ?? json.session_id);\n this.pushResult({\n tokens: extractTokens(json),\n costUsd: extractCost(json),\n summary: extractText(json) || \"Task completed\",\n });\n break;\n }\n }\n}\n\n/**\n * Agent driver for the Google **Gemini CLI** (`gemini`).\n *\n * Spawns `gemini -p \"<prompt>\" --output-format stream-json` per turn and maps\n * the stream-json events to the unified {@link AgentEvent} stream. Google /\n * Vertex models only — uses `GEMINI_API_KEY` from `apiKeys.google` /\n * `apiKeys.gemini` / env.\n *\n * @remarks\n * - **Requires Gemini CLI ≥ v0.6.1** — earlier versions reject\n * `--output-format`. A too-old CLI surfaces as a `process`-category exit error.\n * - **Session resume is not available in headless (`-p`) mode** — the CLI errors\n * if asked to resume non-interactively, so this driver runs single-turn per\n * process and logs a warning when a resume id is present.\n * - Exit codes: `42` → input/validation error, `53` → turn-limit (treated as a\n * completed turn).\n *\n * @see https://github.com/google-gemini/gemini-cli\n * @docLink packages/bridge/drivers#gemini-driver\n */\nexport class GeminiDriver extends GeminiFamilyDriver {\n readonly driverInfo: DriverInfo = {\n id: \"gemini\",\n name: \"Gemini CLI\",\n modelAgnostic: false,\n supportsInBandAbort: false,\n };\n\n protected readonly log: Logger = getBridgeLogger(\"gemini\");\n protected readonly defaultBin = \"gemini\";\n protected readonly productName = \"Gemini CLI\";\n protected readonly envPrefix = \"GEMINI\";\n\n protected buildArgs(message: string, resumeId: string | undefined): string[] {\n if (resumeId) {\n this.log.warn(\"Gemini CLI cannot resume in headless mode; starting a fresh turn\", {\n resumeId,\n });\n }\n const args = [\"-p\", message, \"--output-format\", \"stream-json\"];\n if (this.config.model) args.push(\"-m\", this.config.model);\n return args;\n }\n\n protected buildEnv(): Record<string, string> {\n const env = this.baseEnv([\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]);\n const key =\n this.config.apiKeys?.google ??\n this.config.apiKeys?.gemini ??\n this.config.env?.GEMINI_API_KEY ??\n process.env.GEMINI_API_KEY;\n if (key) env.GEMINI_API_KEY = key;\n return env;\n }\n\n protected installHint(): string {\n return \"Gemini CLI is not installed or not on your PATH. Install it with `npm i -g @google/gemini-cli` (≥ v0.6.1).\";\n }\n\n protected override classifyExit(code: number | null, signal: NodeJS.Signals | null) {\n if (code === 42) {\n return {\n message: \"Gemini CLI reported an input error (exit 42)\",\n category: \"validation\" as const,\n retryable: false,\n hint: \"The prompt or flags were rejected by Gemini CLI. Check the model name and arguments.\",\n };\n }\n if (code === 53) return null; // turn-limit — the result was already emitted.\n return super.classifyExit(code, signal);\n }\n\n override async listModels(): Promise<ModelEntry[]> {\n const key =\n this.config.apiKeys?.google ?? this.config.apiKeys?.gemini ?? process.env.GEMINI_API_KEY;\n if (!key) return getStaticModels(\"google\");\n const result = await fetchProviderModels(\"google\", key);\n return result.ok && result.models.length > 0 ? result.models : getStaticModels(\"google\");\n }\n}\n\n/**\n * `DriverTarget` wrapper for the gemini driver. Registered into the plugin\n * registry by `registerBuiltinDrivers()`.\n */\nexport const geminiDriverTarget: DriverTarget<AgentConfig> = {\n id: \"gemini\",\n displayName: BUILTIN_DRIVER_CATALOG.gemini?.name ?? \"Gemini CLI\",\n apiVersion: 1,\n configSchema: z.custom<AgentConfig>(() => true),\n create: async (config, _ctx) => new GeminiDriver(config),\n listModels: async (apiKeys) =>\n new GeminiDriver({ cwd: process.cwd(), sessionId: \"model-list\", apiKeys }).listModels(),\n};\n"]}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { WorkspacePlugin } from './chunk-
|
|
1
|
+
import { WorkspacePlugin } from './chunk-6YDXCJGK.js';
|
|
2
2
|
import { assembleSystemPrompt, buildCapabilitiesPromptSection } from './chunk-W3UDISS2.js';
|
|
3
3
|
import { WebSocketServerTransport } from './chunk-WQ7DE5UC.js';
|
|
4
|
-
import { resolveFlowPath } from './chunk-
|
|
4
|
+
import { resolveFlowPath } from './chunk-LAOS2TZU.js';
|
|
5
5
|
import { findAiAssetsRoot, deployCatalogEntry, undeployCatalogEntry } from './chunk-GHWJHOYX.js';
|
|
6
|
-
import { registerBuiltinConnectors, buildConnectorPromptSection, findMissingPackages, installNpmPackages, ConnectorManager, ConnectorStartupError, buildSdkConnectorTools, driveOrchestratorTurn, SessionNodeExecutor, SessionSubpromptRunner, SessionInlineSubFlowRunner, buildSdkFlowTools } from './chunk-
|
|
6
|
+
import { registerBuiltinConnectors, buildConnectorPromptSection, findMissingPackages, installNpmPackages, ConnectorManager, ConnectorStartupError, buildSdkConnectorTools, driveOrchestratorTurn, SessionNodeExecutor, SessionSubpromptRunner, SessionInlineSubFlowRunner, buildSdkFlowTools } from './chunk-MTCLDJPR.js';
|
|
7
7
|
import { loadConnectorDeclarations, SecretProviderChain, PreMintedSecretProvider, InMemorySecretProvider, resolvedConfigToDeclarations, isKnownSecretRef, deriveSingleMaterializedConnectorDeclaration } from './chunk-3UU3D2Q3.js';
|
|
8
|
-
import { EventNormalizer } from './chunk-
|
|
8
|
+
import { EventNormalizer } from './chunk-DTSKPMP3.js';
|
|
9
9
|
import { SUPPORTED_CLOUDS, probeResumeTranscript, CLOUD_SECRET_ENV_KEYS } from './chunk-RUFTB7QN.js';
|
|
10
10
|
import { classifyClaudeSdkError } from './chunk-GAH4YRCI.js';
|
|
11
|
-
import { createDriver } from './chunk-
|
|
12
|
-
import { loadFlow } from './chunk-
|
|
11
|
+
import { createDriver } from './chunk-Z5ED4E57.js';
|
|
12
|
+
import { loadFlow } from './chunk-QZ6XXD3A.js';
|
|
13
13
|
import { parseFlowDefinition } from './chunk-HY6CIKFH.js';
|
|
14
14
|
import { renderStimulusPrompt } from './chunk-2D5BYAL6.js';
|
|
15
15
|
import { PROTOCOL_VERSION } from './chunk-2KBA5OO2.js';
|
|
16
|
-
import { resolveSettings, resolveApiKey, providerEnvKey } from './chunk-
|
|
16
|
+
import { resolveSettings, resolveApiKey, providerEnvKey } from './chunk-F2WTSHZS.js';
|
|
17
17
|
import { resolveDriverPaths } from './chunk-K5GBV4SA.js';
|
|
18
18
|
import { resolveRuntimeAssets } from './chunk-SH572OBN.js';
|
|
19
19
|
import { resolveSkWorkspaceConfig, resolveAgentDir, cloudConfigFromProfile, stageMaterializedSkills, loadMcpServerDeclarations, COMPACTION_DEFAULTS, validateAssetRecipeAttr, deriveSingleMaterializedMcpDeclaration } from './chunk-IP3GXHOB.js';
|
|
@@ -3123,6 +3123,108 @@ function cleanupCloudCredentialFiles(projectDir) {
|
|
|
3123
3123
|
}
|
|
3124
3124
|
}
|
|
3125
3125
|
|
|
3126
|
+
// runner/src/compaction-gate.ts
|
|
3127
|
+
var CompactionGate = class {
|
|
3128
|
+
/**
|
|
3129
|
+
* Every compaction currently holding the driver.
|
|
3130
|
+
*
|
|
3131
|
+
* A set rather than a boolean because holds can overlap: a driver swap
|
|
3132
|
+
* rebuilds the orchestrator, and the new instance carries its own
|
|
3133
|
+
* `_isCompacting`, so it can start a compaction while the previous
|
|
3134
|
+
* instance's call is still unwinding. Keyed by handle so the older one
|
|
3135
|
+
* settling cannot open the gate under the newer one — the same identity
|
|
3136
|
+
* check `DriverSwapGate.beginSwap` makes for swaps.
|
|
3137
|
+
*/
|
|
3138
|
+
held = /* @__PURE__ */ new Set();
|
|
3139
|
+
/** Resolves when the last hold is released. Null whenever the driver is free. */
|
|
3140
|
+
opened = null;
|
|
3141
|
+
release = null;
|
|
3142
|
+
/**
|
|
3143
|
+
* Mark a compaction as occupying the driver. The returned handle is the only
|
|
3144
|
+
* thing that can release it.
|
|
3145
|
+
*/
|
|
3146
|
+
begin() {
|
|
3147
|
+
const hold = /* @__PURE__ */ Symbol("compaction");
|
|
3148
|
+
if (this.held.size === 0) {
|
|
3149
|
+
this.opened = new Promise((resolve4) => {
|
|
3150
|
+
this.release = resolve4;
|
|
3151
|
+
});
|
|
3152
|
+
}
|
|
3153
|
+
this.held.add(hold);
|
|
3154
|
+
return hold;
|
|
3155
|
+
}
|
|
3156
|
+
/**
|
|
3157
|
+
* Release one hold, opening the gate once none remain. Unknown and null
|
|
3158
|
+
* handles are ignored, so a settle signal that fires without a matching
|
|
3159
|
+
* `begin()` is harmless.
|
|
3160
|
+
*
|
|
3161
|
+
* Call this from a signal the orchestrator emits unconditionally. A `begin()`
|
|
3162
|
+
* whose `settle()` can be skipped holds user turns forever, which is a worse
|
|
3163
|
+
* failure than the discarded reply this gate exists to prevent.
|
|
3164
|
+
*/
|
|
3165
|
+
settle(hold) {
|
|
3166
|
+
if (hold == null || !this.held.delete(hold)) return;
|
|
3167
|
+
if (this.held.size > 0) return;
|
|
3168
|
+
const release = this.release;
|
|
3169
|
+
this.opened = null;
|
|
3170
|
+
this.release = null;
|
|
3171
|
+
release?.();
|
|
3172
|
+
}
|
|
3173
|
+
/**
|
|
3174
|
+
* Wait for the driver to be free.
|
|
3175
|
+
*
|
|
3176
|
+
* Returns `idle` when nothing was in flight, `waited` when every compaction
|
|
3177
|
+
* settled within the bound, and `timeout` when they did not. A caller that
|
|
3178
|
+
* gets `timeout` must surface it rather than dispatch: a compaction still
|
|
3179
|
+
* holding the driver past this bound is stuck, and dispatching into it
|
|
3180
|
+
* reproduces the silent loss.
|
|
3181
|
+
*
|
|
3182
|
+
* Re-checks in a loop, as `DriverSwapGate.awaitSwap` does, so a compaction
|
|
3183
|
+
* armed while this turn was already waiting is also awaited. `timeoutMs`
|
|
3184
|
+
* bounds the whole wait, not each iteration.
|
|
3185
|
+
*/
|
|
3186
|
+
async awaitIdle(timeoutMs) {
|
|
3187
|
+
if (this.held.size === 0) return "idle";
|
|
3188
|
+
const deadline = Date.now() + timeoutMs;
|
|
3189
|
+
let waited = false;
|
|
3190
|
+
while (this.held.size > 0) {
|
|
3191
|
+
const opened = this.opened;
|
|
3192
|
+
if (!opened) break;
|
|
3193
|
+
const remaining = deadline - Date.now();
|
|
3194
|
+
if (remaining <= 0) return "timeout";
|
|
3195
|
+
if (await raceDeadline(opened, remaining) === "timeout") return "timeout";
|
|
3196
|
+
waited = true;
|
|
3197
|
+
}
|
|
3198
|
+
return waited ? "waited" : "idle";
|
|
3199
|
+
}
|
|
3200
|
+
};
|
|
3201
|
+
async function raceDeadline(opened, ms) {
|
|
3202
|
+
let timer;
|
|
3203
|
+
const expired = new Promise((resolve4) => {
|
|
3204
|
+
timer = setTimeout(() => resolve4("timeout"), ms);
|
|
3205
|
+
timer.unref?.();
|
|
3206
|
+
});
|
|
3207
|
+
try {
|
|
3208
|
+
return await Promise.race([opened.then(() => "opened"), expired]);
|
|
3209
|
+
} finally {
|
|
3210
|
+
if (timer) clearTimeout(timer);
|
|
3211
|
+
}
|
|
3212
|
+
}
|
|
3213
|
+
var DEFAULT_COMPACTION_GATE_TIMEOUT_MS = 60 * 6e4;
|
|
3214
|
+
function compactionGateTimeoutMs() {
|
|
3215
|
+
const raw = Number(process.env.SKAILE_COMPACTION_GATE_TIMEOUT_MS);
|
|
3216
|
+
return Number.isFinite(raw) && raw > 0 ? raw : DEFAULT_COMPACTION_GATE_TIMEOUT_MS;
|
|
3217
|
+
}
|
|
3218
|
+
var COMPACTION_GATE_TIMEOUT_MESSAGE = "The session is still compacting its history and could not take this message. Send it again in a moment.";
|
|
3219
|
+
async function guardTurnAgainstCompaction(deps) {
|
|
3220
|
+
const outcome = await deps.gate.awaitIdle(deps.timeoutMs ?? compactionGateTimeoutMs());
|
|
3221
|
+
if (outcome === "waited") deps.log(`[serve] ${deps.what} released after compaction settled`);
|
|
3222
|
+
if (outcome !== "timeout") return true;
|
|
3223
|
+
deps.log(`[serve] ${deps.what} abandoned: a compaction has held the driver past its bound`);
|
|
3224
|
+
deps.sendEvent({ type: "error", message: COMPACTION_GATE_TIMEOUT_MESSAGE, fatal: false });
|
|
3225
|
+
return false;
|
|
3226
|
+
}
|
|
3227
|
+
|
|
3126
3228
|
// runner/src/driver-swap-gate.ts
|
|
3127
3229
|
var DriverSwapGate = class {
|
|
3128
3230
|
/** Resolves when the in-flight driver recreate settles (resolve or reject). */
|
|
@@ -3374,6 +3476,10 @@ var CompactionOrchestrator = class {
|
|
|
3374
3476
|
config;
|
|
3375
3477
|
opts;
|
|
3376
3478
|
_isCompacting = false;
|
|
3479
|
+
/** Whether {@link CompactionOrchestratorOptions.onCompactionStart} has fired for the current call. */
|
|
3480
|
+
_startFired = false;
|
|
3481
|
+
/** Whether {@link CompactionOrchestratorOptions.onCompactionEnd} has fired for the current call. */
|
|
3482
|
+
_endFired = false;
|
|
3377
3483
|
lastCompactionSeq = null;
|
|
3378
3484
|
lastCompactionTime = null;
|
|
3379
3485
|
/**
|
|
@@ -3428,12 +3534,34 @@ var CompactionOrchestrator = class {
|
|
|
3428
3534
|
async compact(trigger, focus) {
|
|
3429
3535
|
if (this._isCompacting) return null;
|
|
3430
3536
|
this._isCompacting = true;
|
|
3537
|
+
this._startFired = false;
|
|
3538
|
+
this._endFired = false;
|
|
3431
3539
|
try {
|
|
3432
3540
|
return await this._doCompact(trigger, focus);
|
|
3433
3541
|
} finally {
|
|
3434
3542
|
this._isCompacting = false;
|
|
3543
|
+
try {
|
|
3544
|
+
this._endCompaction();
|
|
3545
|
+
} catch (err) {
|
|
3546
|
+
this.opts.onLog?.(
|
|
3547
|
+
`[compaction] onCompactionEnd threw while unwinding: ${err instanceof Error ? err.message : String(err)}`
|
|
3548
|
+
);
|
|
3549
|
+
} finally {
|
|
3550
|
+
this.opts.onCompactionSettled?.();
|
|
3551
|
+
}
|
|
3435
3552
|
}
|
|
3436
3553
|
}
|
|
3554
|
+
/**
|
|
3555
|
+
* Fire {@link CompactionOrchestratorOptions.onCompactionEnd} once per
|
|
3556
|
+
* compaction. The host stops suppressing forwarded events here, so a second
|
|
3557
|
+
* call would emit a stray idle status over the injection turn that follows
|
|
3558
|
+
* it on the success path.
|
|
3559
|
+
*/
|
|
3560
|
+
_endCompaction() {
|
|
3561
|
+
if (!this._startFired || this._endFired) return;
|
|
3562
|
+
this._endFired = true;
|
|
3563
|
+
this.opts.onCompactionEnd?.();
|
|
3564
|
+
}
|
|
3437
3565
|
/**
|
|
3438
3566
|
* One compaction attempt, plus at most one narrowed retry.
|
|
3439
3567
|
*
|
|
@@ -3461,7 +3589,10 @@ var CompactionOrchestrator = class {
|
|
|
3461
3589
|
modelAtCompaction: driverModel,
|
|
3462
3590
|
capabilitySignatureAtCompaction
|
|
3463
3591
|
};
|
|
3464
|
-
if (!isRetry)
|
|
3592
|
+
if (!isRetry) {
|
|
3593
|
+
this._startFired = true;
|
|
3594
|
+
this.opts.onCompactionStart?.(trigger);
|
|
3595
|
+
}
|
|
3465
3596
|
this.opts.onLog?.(
|
|
3466
3597
|
`[compaction] ${isRetry ? "Retrying" : "Starting"} (trigger=${trigger}, tokens=${tokensBefore})`
|
|
3467
3598
|
);
|
|
@@ -3482,7 +3613,7 @@ var CompactionOrchestrator = class {
|
|
|
3482
3613
|
if (this._shouldRetry(trigger, errorCode, focus, isRetry)) {
|
|
3483
3614
|
return await this._doCompact(trigger, RETRY_FOCUS_DIRECTIVE, { tokensBefore });
|
|
3484
3615
|
}
|
|
3485
|
-
this.
|
|
3616
|
+
this._endCompaction();
|
|
3486
3617
|
return null;
|
|
3487
3618
|
}
|
|
3488
3619
|
const actualUsage = this.driver.getTokenUsage();
|
|
@@ -3491,7 +3622,7 @@ var CompactionOrchestrator = class {
|
|
|
3491
3622
|
if (!validation.ok) {
|
|
3492
3623
|
this._emitValidationFailure(attempt, validation.errorCode, tokensAfter, summaryText);
|
|
3493
3624
|
this._beginCooldown();
|
|
3494
|
-
this.
|
|
3625
|
+
this._endCompaction();
|
|
3495
3626
|
return null;
|
|
3496
3627
|
}
|
|
3497
3628
|
return await this._completeCompaction(
|
|
@@ -3711,7 +3842,7 @@ var CompactionOrchestrator = class {
|
|
|
3711
3842
|
this.lastCompactionTime = Date.now();
|
|
3712
3843
|
this.lastSummary = summaryText;
|
|
3713
3844
|
this.messagesSinceCompaction = 0;
|
|
3714
|
-
this.
|
|
3845
|
+
this._endCompaction();
|
|
3715
3846
|
if (trigger !== "hibernate") {
|
|
3716
3847
|
this.opts.onLog?.("[compaction] Resetting driver session");
|
|
3717
3848
|
await this.driver.resetSession();
|
|
@@ -5737,6 +5868,7 @@ async function startAgentServer(opts) {
|
|
|
5737
5868
|
let driverStarted = false;
|
|
5738
5869
|
let driverStartInFlight = null;
|
|
5739
5870
|
const driverSwapGate = new DriverSwapGate();
|
|
5871
|
+
const compactionGate = new CompactionGate();
|
|
5740
5872
|
let driverRestartChain = Promise.resolve();
|
|
5741
5873
|
let driver = secretsMode === "env" ? agentSession.driver : void 0;
|
|
5742
5874
|
let secretsProvisioned = secretsMode === "env";
|
|
@@ -5761,15 +5893,19 @@ async function startAgentServer(opts) {
|
|
|
5761
5893
|
let eventSeq = 0;
|
|
5762
5894
|
let lastEmittedRuntimeSession;
|
|
5763
5895
|
let compacting = false;
|
|
5896
|
+
let suppressedBy = null;
|
|
5764
5897
|
let compactionOrchestrator = null;
|
|
5765
5898
|
const compactionConfig = wsConfig.compaction;
|
|
5766
5899
|
function rebuildCompactionOrchestrator() {
|
|
5767
5900
|
if (!driver) return;
|
|
5901
|
+
let gateHold = null;
|
|
5768
5902
|
compactionOrchestrator = new CompactionOrchestrator({
|
|
5769
5903
|
driver,
|
|
5770
5904
|
config: compactionConfig,
|
|
5771
5905
|
onCompactionStart: (trigger) => {
|
|
5772
5906
|
compacting = true;
|
|
5907
|
+
gateHold = compactionGate.begin();
|
|
5908
|
+
suppressedBy = gateHold;
|
|
5773
5909
|
sendEvent({ type: "status", phase: "compacting" });
|
|
5774
5910
|
log(`[serve] compaction started (trigger=${trigger})`);
|
|
5775
5911
|
},
|
|
@@ -5780,9 +5916,15 @@ async function startAgentServer(opts) {
|
|
|
5780
5916
|
sendEvent(event);
|
|
5781
5917
|
},
|
|
5782
5918
|
onCompactionEnd: () => {
|
|
5919
|
+
if (suppressedBy !== gateHold) return;
|
|
5783
5920
|
compacting = false;
|
|
5921
|
+
suppressedBy = null;
|
|
5784
5922
|
sendEvent({ type: "status", phase: "idle" });
|
|
5785
5923
|
},
|
|
5924
|
+
onCompactionSettled: () => {
|
|
5925
|
+
compactionGate.settle(gateHold);
|
|
5926
|
+
gateHold = null;
|
|
5927
|
+
},
|
|
5786
5928
|
onLog: (line) => log(`[serve] ${line}`),
|
|
5787
5929
|
// Phase 3: stamp every CompactionAttemptEvent with the registry's
|
|
5788
5930
|
// current signature so wake-time tier-1 selection has the input it
|
|
@@ -6587,6 +6729,7 @@ async function startAgentServer(opts) {
|
|
|
6587
6729
|
rejectSessionReady(err instanceof Error ? err : new Error(errMsg));
|
|
6588
6730
|
});
|
|
6589
6731
|
}
|
|
6732
|
+
const awaitCompactionIdle = (what) => guardTurnAgainstCompaction({ gate: compactionGate, what, log, sendEvent });
|
|
6590
6733
|
async function handlePrompt(cmd) {
|
|
6591
6734
|
if (cmd.messageId) sendEvent({ type: "prompt_ack", messageId: cmd.messageId });
|
|
6592
6735
|
if (!await awaitSessionReadyOrFail()) return;
|
|
@@ -6601,6 +6744,7 @@ async function startAgentServer(opts) {
|
|
|
6601
6744
|
}
|
|
6602
6745
|
log(`[serve] prompt: ${cmd.prompt.slice(0, 80)}...`);
|
|
6603
6746
|
await driverSwapGate.awaitSwap();
|
|
6747
|
+
if (!await awaitCompactionIdle("prompt")) return;
|
|
6604
6748
|
await restageMaterializedSkills(true);
|
|
6605
6749
|
const activeFlow = getOnlyActiveFlow();
|
|
6606
6750
|
if (activeFlow) {
|
|
@@ -6653,6 +6797,7 @@ async function startAgentServer(opts) {
|
|
|
6653
6797
|
log(`[serve] reply: ${cmd.answer.slice(0, 80)}...`);
|
|
6654
6798
|
await driverSwapGate.awaitSwap();
|
|
6655
6799
|
if (driver.hasPendingQuestion() && driver.answerQuestion(cmd.answer, cmd.question)) return;
|
|
6800
|
+
if (!await awaitCompactionIdle("reply")) return;
|
|
6656
6801
|
const endTurn = driverSwapGate.beginTurn();
|
|
6657
6802
|
try {
|
|
6658
6803
|
await driver.prompt(cmd.answer);
|
|
@@ -7194,5 +7339,5 @@ function touchSession(state) {
|
|
|
7194
7339
|
}
|
|
7195
7340
|
|
|
7196
7341
|
export { CLAUDE_CODE_CREDENTIALS_KEY, COMPILE_MANIFEST_FILENAME, CapabilityRegistry, DEFAULT_CAPABILITY_CALL_TIMEOUT_MS, DEFAULT_COALESCE_MS, DEFAULT_FLOW_MUTATE_CONNECTOR_WAIT_MS, MOUNT_LIST_MAX_DEPTH, MOUNT_LIST_MAX_ENTRIES, MOUNT_READ_DEADLINE_FACTOR, MOUNT_TREE_OP_DEADLINE_FACTOR, MarkdownStreamer, PreInitRingSink, agentDefinitionExists, bootstrapCapabilityRegistry, bootstrapRunnerLogStore, buildAgentResources, buildClientCapabilityHandler, buildConnectorTokenMediator, buildContextSection, buildEnvironmentSection, buildResourcesAvailablePayload, buildStoreSnapshotReplay, builtinCapabilities, capabilityLogInstance, clearPreInitRingSink, clearSession, compileComposition, computeCapabilitySignature, connectorRefreshKind, createAgentSession, createFlowConnectorReadiness, createSessionStimulusBus, defineCapability, deleteSession, dispatchRunnerCapabilityInvocation, emitSystemPromptComposed, ensureClaudeSettingsDisablesConnectors, ensureGitConfigInclude, executeConnectorMutate, extractClaudeAiOauthExpiresAt, getPreInitRingSink, handleMountResourceRequest, handleResourceRequest, hasNonTerminalFlow, hostOpResumeStimulus, installPreInitRingSink, isTerminalFlowStatus, listSessions, loadAgentManifest, loadCompileManifest, loadCompileManifestFromDir, loadSession, loadSessionById, mcpAuthSecretKey, newSession, nulTailPaddingLength, pickRepointedManager, planFlowMutate, reconcilePendingDecisions, registerActiveFlow, registerCompositionCapabilities, rejectCapabilityOnApprovalDeny, resetRunnerLogStore, resolveAgentComposition, resolveAgentMixins, resolveBinding, resolveCapabilityCallTimeoutMs, resolveCapabilityResult, resolveComposition, resolveFlowMutateConnectorWaitMs, resolveMixin, runAgentChat, saveSession, setCurrentSession, setUpFlowConnector, startAgentServer, stimulusFromMetas, touchSession, validateInputResponse, writeClaudeCodeCredentialsFile };
|
|
7197
|
-
//# sourceMappingURL=chunk-
|
|
7198
|
-
//# sourceMappingURL=chunk-
|
|
7342
|
+
//# sourceMappingURL=chunk-5WMFU575.js.map
|
|
7343
|
+
//# sourceMappingURL=chunk-5WMFU575.js.map
|