@skaile/workspaces 4.6.0 → 4.7.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 +12 -0
- package/dist/{asset-feeds-3XUEJHLJ.js → asset-feeds-CV7EE4GI.js} +7 -7
- package/dist/{asset-feeds-3XUEJHLJ.js.map → asset-feeds-CV7EE4GI.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +3 -3
- package/dist/asset-manager/index.js +6 -6
- package/dist/asset-manager/installer.js +4 -4
- package/dist/bridge/codex-app-server.js +4 -4
- package/dist/bridge/drivers/claude-sdk.js +52 -9
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +6 -6
- package/dist/bridge/drivers/continue.js +6 -6
- package/dist/bridge/drivers/echo.js +1 -1
- package/dist/bridge/drivers/gemini.js +4 -4
- package/dist/bridge/drivers/goose.js +6 -6
- package/dist/bridge/drivers/omp.js +1 -1
- package/dist/bridge/drivers/opencode.js +6 -6
- package/dist/bridge/drivers/qwen.js +4 -4
- package/dist/bridge/index.js +6 -6
- package/dist/bridge/src/drivers/claude-sdk.d.ts +16 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/{chunk-YNZ5FIFH.js → chunk-4AAEBUX7.js} +7 -7
- package/dist/{chunk-YNZ5FIFH.js.map → chunk-4AAEBUX7.js.map} +1 -1
- package/dist/{chunk-JXCUUZA3.js → chunk-4ZTPYIBE.js} +9 -6
- package/dist/chunk-4ZTPYIBE.js.map +1 -0
- package/dist/{chunk-KMFZVPYR.js → chunk-5GYFYGVW.js} +2 -2
- package/dist/{chunk-KMFZVPYR.js.map → chunk-5GYFYGVW.js.map} +1 -1
- package/dist/{chunk-2HZJKDLG.js → chunk-7UM46L33.js} +2 -2
- package/dist/{chunk-2HZJKDLG.js.map → chunk-7UM46L33.js.map} +1 -1
- package/dist/{chunk-EVVE4SL4.js → chunk-A42QGGSB.js} +3 -3
- package/dist/{chunk-EVVE4SL4.js.map → chunk-A42QGGSB.js.map} +1 -1
- package/dist/{chunk-UJPVUN6H.js → chunk-BCXZ74DM.js} +4 -4
- package/dist/{chunk-UJPVUN6H.js.map → chunk-BCXZ74DM.js.map} +1 -1
- package/dist/{chunk-PTETBRRC.js → chunk-DS7B54NF.js} +3 -3
- package/dist/{chunk-PTETBRRC.js.map → chunk-DS7B54NF.js.map} +1 -1
- package/dist/{chunk-KW7YIRYL.js → chunk-DYT3AQBM.js} +44 -4
- package/dist/chunk-DYT3AQBM.js.map +1 -0
- package/dist/{chunk-6ZQU5WKJ.js → chunk-HBBVWZ4T.js} +4 -4
- package/dist/{chunk-6ZQU5WKJ.js.map → chunk-HBBVWZ4T.js.map} +1 -1
- package/dist/{chunk-K27T47OO.js → chunk-HKOC273F.js} +71 -5
- package/dist/chunk-HKOC273F.js.map +1 -0
- package/dist/{chunk-COK4WPU4.js → chunk-HR2AGPLJ.js} +4 -4
- package/dist/{chunk-COK4WPU4.js.map → chunk-HR2AGPLJ.js.map} +1 -1
- package/dist/{chunk-SAXTWLXZ.js → chunk-HVTU3CVF.js} +187 -48
- package/dist/chunk-HVTU3CVF.js.map +1 -0
- package/dist/{chunk-W3YYB7K7.js → chunk-IECSLI55.js} +3 -3
- package/dist/{chunk-W3YYB7K7.js.map → chunk-IECSLI55.js.map} +1 -1
- package/dist/{chunk-QVTROHEZ.js → chunk-IUVPPJ4T.js} +3 -3
- package/dist/{chunk-QVTROHEZ.js.map → chunk-IUVPPJ4T.js.map} +1 -1
- package/dist/{chunk-35XUCUKZ.js → chunk-J2NEKEZK.js} +3 -3
- package/dist/{chunk-35XUCUKZ.js.map → chunk-J2NEKEZK.js.map} +1 -1
- package/dist/{chunk-DXXIALYF.js → chunk-JH63TVZG.js} +5 -5
- package/dist/{chunk-DXXIALYF.js.map → chunk-JH63TVZG.js.map} +1 -1
- package/dist/{chunk-WVSF3IEQ.js → chunk-JWWER4L5.js} +2 -2
- package/dist/{chunk-WVSF3IEQ.js.map → chunk-JWWER4L5.js.map} +1 -1
- package/dist/{chunk-63PBQN5U.js → chunk-MHROUPZN.js} +9 -9
- package/dist/{chunk-63PBQN5U.js.map → chunk-MHROUPZN.js.map} +1 -1
- package/dist/{chunk-NWZQMJTI.js → chunk-NIHNZC6E.js} +3 -3
- package/dist/{chunk-NWZQMJTI.js.map → chunk-NIHNZC6E.js.map} +1 -1
- package/dist/{chunk-VZOUBMM4.js → chunk-NV6R6HJR.js} +5 -5
- package/dist/{chunk-VZOUBMM4.js.map → chunk-NV6R6HJR.js.map} +1 -1
- package/dist/{chunk-TRGMQUAZ.js → chunk-NYRLSXTB.js} +66 -47
- package/dist/chunk-NYRLSXTB.js.map +1 -0
- package/dist/{chunk-D3332IMQ.js → chunk-P2PXD3AF.js} +6 -6
- package/dist/{chunk-D3332IMQ.js.map → chunk-P2PXD3AF.js.map} +1 -1
- package/dist/{chunk-CU32AWH5.js → chunk-Q5WGUPC5.js} +3 -3
- package/dist/{chunk-CU32AWH5.js.map → chunk-Q5WGUPC5.js.map} +1 -1
- package/dist/{chunk-ZGYPEVZW.js → chunk-RN3N7PHY.js} +5 -5
- package/dist/{chunk-ZGYPEVZW.js.map → chunk-RN3N7PHY.js.map} +1 -1
- package/dist/{chunk-5CDL6VZQ.js → chunk-S5TEP5WI.js} +7 -7
- package/dist/{chunk-5CDL6VZQ.js.map → chunk-S5TEP5WI.js.map} +1 -1
- package/dist/{chunk-REILIKVM.js → chunk-SU5LVG6T.js} +3 -3
- package/dist/{chunk-REILIKVM.js.map → chunk-SU5LVG6T.js.map} +1 -1
- package/dist/{chunk-23BTREZQ.js → chunk-TKHJXUG3.js} +4 -4
- package/dist/{chunk-23BTREZQ.js.map → chunk-TKHJXUG3.js.map} +1 -1
- package/dist/{chunk-V7SHQXDI.js → chunk-U4LC6PLI.js} +3 -3
- package/dist/{chunk-V7SHQXDI.js.map → chunk-U4LC6PLI.js.map} +1 -1
- package/dist/{chunk-YSJKLJD4.js → chunk-VRBEMXEM.js} +3 -3
- package/dist/{chunk-YSJKLJD4.js.map → chunk-VRBEMXEM.js.map} +1 -1
- package/dist/{chunk-2CFREMKM.js → chunk-XENB453B.js} +4 -4
- package/dist/{chunk-2CFREMKM.js.map → chunk-XENB453B.js.map} +1 -1
- package/dist/cli/index.js +50 -50
- package/dist/connectors/config.js +4 -4
- package/dist/connectors/index.js +9 -9
- package/dist/connectors/src/config.d.ts.map +1 -1
- package/dist/connectors/src/connector-manager.d.ts +9 -0
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
- package/dist/connectors/src/connector-types.d.ts +25 -0
- package/dist/connectors/src/connector-types.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +2 -2
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -3
- package/dist/core/runtime-assets.js +2 -2
- package/dist/core/src/index.d.ts +1 -1
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +64 -0
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +1 -1
- package/dist/deploy/index.js +3 -3
- package/dist/{ensure-sources-MFQDQPYL.js → ensure-sources-E5C3NAZ5.js} +9 -9
- package/dist/{ensure-sources-MFQDQPYL.js.map → ensure-sources-E5C3NAZ5.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +9 -9
- package/dist/factory-assets/connectors/deploy.js +9 -9
- package/dist/factory-assets/connectors/devserver.js +9 -9
- package/dist/factory-assets/connectors/flow/adapter.js +9 -9
- package/dist/factory-assets/connectors/flow/engine.js +4 -4
- package/dist/factory-assets/connectors/flow/run-flow.js +10 -10
- package/dist/factory-assets/connectors/flow.js +9 -9
- package/dist/factory-assets/connectors/git.js +9 -9
- package/dist/factory-assets/connectors/gmail.js +9 -9
- package/dist/factory-assets/connectors/googledrive.js +9 -9
- package/dist/factory-assets/connectors/local.js +9 -9
- package/dist/factory-assets/connectors/mattermost.js +9 -9
- package/dist/factory-assets/connectors/memory.js +9 -9
- package/dist/factory-assets/connectors/minio.js +9 -9
- package/dist/factory-assets/connectors/postgres.js +9 -9
- package/dist/factory-assets/connectors/s3.js +9 -9
- package/dist/factory-assets/connectors/sharepoint.js +9 -9
- package/dist/factory-assets/connectors/sqlite.js +9 -9
- package/dist/factory-assets/connectors/static-server.js +9 -9
- package/dist/factory-assets/connectors/tunnel.js +9 -9
- package/dist/factory-assets/connectors/webdav.js +9 -9
- package/dist/factory-assets/connectors/xstate-store.js +9 -9
- package/dist/factory-assets/connectors/xstate.js +9 -9
- package/dist/{flows-X4KJC4RH.js → flows-DAA2HPCK.js} +6 -6
- package/dist/{flows-X4KJC4RH.js.map → flows-DAA2HPCK.js.map} +1 -1
- package/dist/{helpers-VQLLQ6HB.js → helpers-B37XGJHI.js} +9 -9
- package/dist/{helpers-VQLLQ6HB.js.map → helpers-B37XGJHI.js.map} +1 -1
- package/dist/library/index.js +4 -4
- package/dist/library/install.js +3 -3
- package/dist/{library-publish-73SFVNCE.js → library-publish-ANMJDDZH.js} +13 -13
- package/dist/{library-publish-73SFVNCE.js.map → library-publish-ANMJDDZH.js.map} +1 -1
- package/dist/{open-library-QGTUQMUG.js → open-library-O5HS654Y.js} +11 -11
- package/dist/{open-library-QGTUQMUG.js.map → open-library-O5HS654Y.js.map} +1 -1
- package/dist/{paths-FRD62K2N.js → paths-LH7LD4CC.js} +6 -6
- package/dist/{paths-FRD62K2N.js.map → paths-LH7LD4CC.js.map} +1 -1
- package/dist/{plugin-store-54SEASTK.js → plugin-store-A6VLQHCT.js} +5 -5
- package/dist/{plugin-store-54SEASTK.js.map → plugin-store-A6VLQHCT.js.map} +1 -1
- package/dist/{project-LWS5PYIF.js → project-DLAPSJ36.js} +10 -10
- package/dist/{project-LWS5PYIF.js.map → project-DLAPSJ36.js.map} +1 -1
- package/dist/resolver/index.js +3 -3
- package/dist/runner/index.js +15 -15
- package/dist/runner/src/runner-capabilities.d.ts +33 -2
- package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
- package/dist/runner/src/serial-lock.d.ts +17 -0
- package/dist/runner/src/serial-lock.d.ts.map +1 -0
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-capability-wiring.d.ts +5 -0
- package/dist/runner/src/session-capability-wiring.d.ts.map +1 -1
- package/dist/runner/src/session-resource-handlers.d.ts.map +1 -1
- package/dist/runner/src/skill-staging.d.ts +76 -0
- package/dist/runner/src/skill-staging.d.ts.map +1 -0
- package/dist/sdk/asset-manager.js +6 -6
- package/dist/sdk/bridge.js +6 -6
- package/dist/sdk/core.js +3 -3
- package/dist/sdk/flow.js +4 -4
- package/dist/sdk/index.js +15 -15
- package/dist/sdk/resolver.js +3 -3
- package/dist/sdk/runner.js +15 -15
- package/dist/{setup-EOJWDJK2.js → setup-TMPJSDCX.js} +13 -13
- package/dist/{setup-EOJWDJK2.js.map → setup-TMPJSDCX.js.map} +1 -1
- package/dist/{skills-C6NOMIBV.js → skills-ZO66BL2Y.js} +5 -5
- package/dist/{skills-C6NOMIBV.js.map → skills-ZO66BL2Y.js.map} +1 -1
- package/dist/{source-Q5IIYTRA.js → source-5WMBWNO7.js} +12 -12
- package/dist/{source-Q5IIYTRA.js.map → source-5WMBWNO7.js.map} +1 -1
- package/dist/{source-manifest-publish-Z3WC4HA2.js → source-manifest-publish-WBVQV3JC.js} +14 -14
- package/dist/{source-manifest-publish-Z3WC4HA2.js.map → source-manifest-publish-WBVQV3JC.js.map} +1 -1
- package/dist/tui/index.js +15 -15
- package/dist/validator-FA2PFW6N.js +5 -0
- package/dist/{validator-P5ESKTW5.js.map → validator-FA2PFW6N.js.map} +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +6 -6
- package/dist/workspace-plugin/adapters/omp.js +10 -10
- package/dist/workspace-plugin/index.js +1 -1
- package/dist/workspace-plugin/src/tools/validator.d.ts +1 -0
- package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-JXCUUZA3.js.map +0 -1
- package/dist/chunk-K27T47OO.js.map +0 -1
- package/dist/chunk-KW7YIRYL.js.map +0 -1
- package/dist/chunk-SAXTWLXZ.js.map +0 -1
- package/dist/chunk-TRGMQUAZ.js.map +0 -1
- package/dist/validator-P5ESKTW5.js +0 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { SubprocessCliDriver, extractText, extractCost, extractTokens, resolveEnvDriverSession, bindSingleProviderEntry, resolveRegistryBinding } from './chunk-
|
|
2
|
-
import { getStaticModels, fetchProviderModels } from './chunk-
|
|
3
|
-
import { getProviderPreset, BUILTIN_DRIVER_CATALOG, getBridgeLogger, entryCredentialValue, registryDriverConfig } from './chunk-
|
|
1
|
+
import { SubprocessCliDriver, extractText, extractCost, extractTokens, resolveEnvDriverSession, bindSingleProviderEntry, resolveRegistryBinding } from './chunk-Q5WGUPC5.js';
|
|
2
|
+
import { getStaticModels, fetchProviderModels } from './chunk-IUVPPJ4T.js';
|
|
3
|
+
import { getProviderPreset, BUILTIN_DRIVER_CATALOG, getBridgeLogger, entryCredentialValue, registryDriverConfig } from './chunk-5GYFYGVW.js';
|
|
4
4
|
import * as z from 'zod';
|
|
5
5
|
|
|
6
6
|
var GOOGLE_DEFAULT_BASE_URL = getProviderPreset("google")?.base_url;
|
|
@@ -183,5 +183,5 @@ var geminiDriverTarget = {
|
|
|
183
183
|
};
|
|
184
184
|
|
|
185
185
|
export { GeminiDriver, GeminiFamilyDriver, geminiDriverTarget };
|
|
186
|
-
//# sourceMappingURL=chunk-
|
|
187
|
-
//# sourceMappingURL=chunk-
|
|
186
|
+
//# sourceMappingURL=chunk-NV6R6HJR.js.map
|
|
187
|
+
//# sourceMappingURL=chunk-NV6R6HJR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../bridge/src/drivers/gemini.ts"],"names":[],"mappings":"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","file":"chunk-VZOUBMM4.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 { getProviderPreset } from \"../provider-catalog.js\";\nimport { entryCredentialValue } from \"../provider-materialize/credential-env.js\";\nimport {\n bindSingleProviderEntry,\n type EnvDriverSession,\n type RegistryModelBinding,\n resolveEnvDriverSession,\n resolveRegistryBinding,\n} from \"../provider-materialize/env-drivers.js\";\nimport { registryDriverConfig } from \"../provider-registry-derive.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 * The Gemini API host the CLI talks to unless told otherwise — the catalog's\n * `google` preset, so the two can never drift apart.\n */\nconst GOOGLE_DEFAULT_BASE_URL = getProviderPreset(\"google\")?.base_url;\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 // ── Registry binding ──────────────────────────────────────────────────────\n\n private providers?: EnvDriverSession;\n private boundEntry?: RegistryModelBinding;\n private bindingResolved = false;\n\n /** This session's AI providers, resolved once from the config. */\n protected providerSession(): EnvDriverSession {\n this.providers ??= resolveEnvDriverSession(this.config);\n return this.providers;\n }\n\n /**\n * The AI provider entry this session's model selector names, memoized until\n * the model changes.\n *\n * Gemini CLI and Qwen Code are `single`-plurality backends (§2.3): they\n * address one endpoint, so the bound entry supplies both the credential and\n * the base URL. Resolving through {@link bindSingleProviderEntry} is what\n * puts the surface check — which throws — on the start path.\n */\n protected registryBinding(): RegistryModelBinding | undefined {\n if (this.bindingResolved) return this.boundEntry;\n const binding = bindSingleProviderEntry(\n this.driverInfo.id,\n this.productName,\n this.providerSession(),\n );\n for (const warning of binding?.warnings ?? []) this.log.warn(warning);\n this.boundEntry = binding;\n this.bindingResolved = true;\n return binding;\n }\n\n /**\n * Fail before the first spawn when the bound entry speaks a surface this\n * backend cannot — the error names the surface.\n */\n override async start(): Promise<void> {\n this.registryBinding();\n await super.start();\n }\n\n override reconfigure(patch: Partial<Pick<AgentConfig, \"model\" | \"thinking\" | \"effort\">>): void {\n super.reconfigure(patch);\n if (patch.model !== undefined) {\n this.providers = undefined;\n this.bindingResolved = false;\n }\n }\n\n /** The provider-side model id the backend is actually run with. */\n override getModel(): string | undefined {\n return resolveRegistryBinding(this.providerSession())?.providerModelId ?? this.config.model;\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 * models only (`surface: google-generative-ai`): the AI provider entry the\n * session's model selector names supplies `GEMINI_API_KEY`, the `-m` model id\n * and — for a non-default endpoint — `GOOGLE_GEMINI_BASE_URL`.\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 const model = this.registryBinding()?.providerModelId ?? this.config.model;\n if (model) args.push(\"-m\", model);\n return args;\n }\n\n protected buildEnv(): Record<string, string> {\n const env = this.baseEnv([\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\", \"GOOGLE_GEMINI_BASE_URL\"]);\n const binding = this.registryBinding();\n if (!binding) return env;\n\n // The entry is the authority: inherited Google carriers are dropped so an\n // ambient key cannot authenticate a session pointed somewhere else.\n delete env.GEMINI_API_KEY;\n delete env.GOOGLE_API_KEY;\n delete env.GOOGLE_GEMINI_BASE_URL;\n const key = entryCredentialValue(binding.providerId, binding.entry, {\n env: this.providerSession().lookupEnv,\n });\n if (key) env.GEMINI_API_KEY = key;\n // Only a non-default endpoint is worth naming: Gemini CLI reads\n // GOOGLE_GEMINI_BASE_URL as an override of its own default host.\n if (binding.baseUrl && binding.baseUrl !== GOOGLE_DEFAULT_BASE_URL) {\n env.GOOGLE_GEMINI_BASE_URL = binding.baseUrl;\n }\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 /**\n * Discovery runs against the bound entry: its credential and, for a\n * non-default endpoint, its base URL. Without an entry the ambient\n * `GEMINI_API_KEY` is the last resort, and an unreachable API falls back to\n * the static Google catalog.\n */\n override async listModels(): Promise<ModelEntry[]> {\n const session = this.providerSession();\n const binding = resolveRegistryBinding(session);\n const key = binding\n ? entryCredentialValue(binding.providerId, binding.entry, { env: session.lookupEnv })\n : session.lookupEnv.GEMINI_API_KEY;\n if (!key) return getStaticModels(\"google\");\n const result = await fetchProviderModels(\n \"google\",\n key,\n binding?.baseUrl && binding.baseUrl !== GOOGLE_DEFAULT_BASE_URL\n ? { baseUrl: binding.baseUrl }\n : {},\n );\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 (registry, options) =>\n new GeminiDriver({\n cwd: process.cwd(),\n sessionId: \"model-list\",\n ...registryDriverConfig(registry, options),\n }).listModels(),\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../bridge/src/drivers/gemini.ts"],"names":[],"mappings":"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","file":"chunk-NV6R6HJR.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 { getProviderPreset } from \"../provider-catalog.js\";\nimport { entryCredentialValue } from \"../provider-materialize/credential-env.js\";\nimport {\n bindSingleProviderEntry,\n type EnvDriverSession,\n type RegistryModelBinding,\n resolveEnvDriverSession,\n resolveRegistryBinding,\n} from \"../provider-materialize/env-drivers.js\";\nimport { registryDriverConfig } from \"../provider-registry-derive.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 * The Gemini API host the CLI talks to unless told otherwise — the catalog's\n * `google` preset, so the two can never drift apart.\n */\nconst GOOGLE_DEFAULT_BASE_URL = getProviderPreset(\"google\")?.base_url;\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 // ── Registry binding ──────────────────────────────────────────────────────\n\n private providers?: EnvDriverSession;\n private boundEntry?: RegistryModelBinding;\n private bindingResolved = false;\n\n /** This session's AI providers, resolved once from the config. */\n protected providerSession(): EnvDriverSession {\n this.providers ??= resolveEnvDriverSession(this.config);\n return this.providers;\n }\n\n /**\n * The AI provider entry this session's model selector names, memoized until\n * the model changes.\n *\n * Gemini CLI and Qwen Code are `single`-plurality backends (§2.3): they\n * address one endpoint, so the bound entry supplies both the credential and\n * the base URL. Resolving through {@link bindSingleProviderEntry} is what\n * puts the surface check — which throws — on the start path.\n */\n protected registryBinding(): RegistryModelBinding | undefined {\n if (this.bindingResolved) return this.boundEntry;\n const binding = bindSingleProviderEntry(\n this.driverInfo.id,\n this.productName,\n this.providerSession(),\n );\n for (const warning of binding?.warnings ?? []) this.log.warn(warning);\n this.boundEntry = binding;\n this.bindingResolved = true;\n return binding;\n }\n\n /**\n * Fail before the first spawn when the bound entry speaks a surface this\n * backend cannot — the error names the surface.\n */\n override async start(): Promise<void> {\n this.registryBinding();\n await super.start();\n }\n\n override reconfigure(patch: Partial<Pick<AgentConfig, \"model\" | \"thinking\" | \"effort\">>): void {\n super.reconfigure(patch);\n if (patch.model !== undefined) {\n this.providers = undefined;\n this.bindingResolved = false;\n }\n }\n\n /** The provider-side model id the backend is actually run with. */\n override getModel(): string | undefined {\n return resolveRegistryBinding(this.providerSession())?.providerModelId ?? this.config.model;\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 * models only (`surface: google-generative-ai`): the AI provider entry the\n * session's model selector names supplies `GEMINI_API_KEY`, the `-m` model id\n * and — for a non-default endpoint — `GOOGLE_GEMINI_BASE_URL`.\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 const model = this.registryBinding()?.providerModelId ?? this.config.model;\n if (model) args.push(\"-m\", model);\n return args;\n }\n\n protected buildEnv(): Record<string, string> {\n const env = this.baseEnv([\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\", \"GOOGLE_GEMINI_BASE_URL\"]);\n const binding = this.registryBinding();\n if (!binding) return env;\n\n // The entry is the authority: inherited Google carriers are dropped so an\n // ambient key cannot authenticate a session pointed somewhere else.\n delete env.GEMINI_API_KEY;\n delete env.GOOGLE_API_KEY;\n delete env.GOOGLE_GEMINI_BASE_URL;\n const key = entryCredentialValue(binding.providerId, binding.entry, {\n env: this.providerSession().lookupEnv,\n });\n if (key) env.GEMINI_API_KEY = key;\n // Only a non-default endpoint is worth naming: Gemini CLI reads\n // GOOGLE_GEMINI_BASE_URL as an override of its own default host.\n if (binding.baseUrl && binding.baseUrl !== GOOGLE_DEFAULT_BASE_URL) {\n env.GOOGLE_GEMINI_BASE_URL = binding.baseUrl;\n }\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 /**\n * Discovery runs against the bound entry: its credential and, for a\n * non-default endpoint, its base URL. Without an entry the ambient\n * `GEMINI_API_KEY` is the last resort, and an unreachable API falls back to\n * the static Google catalog.\n */\n override async listModels(): Promise<ModelEntry[]> {\n const session = this.providerSession();\n const binding = resolveRegistryBinding(session);\n const key = binding\n ? entryCredentialValue(binding.providerId, binding.entry, { env: session.lookupEnv })\n : session.lookupEnv.GEMINI_API_KEY;\n if (!key) return getStaticModels(\"google\");\n const result = await fetchProviderModels(\n \"google\",\n key,\n binding?.baseUrl && binding.baseUrl !== GOOGLE_DEFAULT_BASE_URL\n ? { baseUrl: binding.baseUrl }\n : {},\n );\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 (registry, options) =>\n new GeminiDriver({\n cwd: process.cwd(),\n sessionId: \"model-list\",\n ...registryDriverConfig(registry, options),\n }).listModels(),\n};\n"]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { declaredConnectErrorKind, ClassifiedConnectError, withConnectErrorKind } from './chunk-SDNGG6FB.js';
|
|
2
|
-
import { OAuthRequiredError, LegacyAuthGrammarError, resolveAuthRef } 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-DYT3AQBM.js';
|
|
3
|
+
import { EventNormalizer } from './chunk-U4LC6PLI.js';
|
|
4
|
+
import { resolveModelTier } from './chunk-IUVPPJ4T.js';
|
|
5
|
+
import { createDriver } from './chunk-5GYFYGVW.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-
|
|
8
|
+
import { interpolateNodeInstruction, resolveNodeBindings, getConsumedOutputSchema, validateConsumedNodeOutput, appendAttempt, resolveTerminalFailureStatus, remainingActiveExecutionMs, deriveCheckEvidence, computeFlowStateFromSnapshots, availableRouterFrontier, evaluateRouterSelection, routerSelectionOutput, planRouterSkips, unsettledRouterBranchIds, countFailedAttempts, hasAutomaticRetryBudget, persistedRouterSelection } from './chunk-NIHNZC6E.js';
|
|
9
9
|
import { INPUT_SCHEMA_SHAPES_HINT, coerceInputSchema } from './chunk-TIOT3ZOQ.js';
|
|
10
10
|
import { classifierDecision, withoutReservedClassifierFields, parseFlowDefinition } from './chunk-53ORCYPJ.js';
|
|
11
11
|
import { describeStimulus, buildOrchestratorPrompt, renderSubpromptPrompt, renderStimulusPrompt } from './chunk-2D5BYAL6.js';
|
|
12
12
|
import { deterministicNodeKindLabel, nodeInstruction, flowDefaults, isAgentNode, isGateNode, isCheckNode, nodeRequiresApproval, isSubFlowNode, isFunctionNode, isSubpromptNode, isRouterNode, isActiveRuntimeNode, nodeIsOptional, nodeLabel, nodeAssets } from './chunk-ELPR5XBG.js';
|
|
13
13
|
import { withActivityLabelDefs } from './chunk-QAH24E5U.js';
|
|
14
|
-
import { processAlive } from './chunk-
|
|
14
|
+
import { processAlive } from './chunk-BCXZ74DM.js';
|
|
15
15
|
import { withFsDeadline, tryWithFsDeadline, FsDeadlineError, fsDeadlineMs } from './chunk-MKZOK4JU.js';
|
|
16
16
|
import { portableSpawn } from './chunk-KSIRR5PL.js';
|
|
17
17
|
import { createLogger } from './chunk-W4IPN3DD.js';
|
|
@@ -736,34 +736,6 @@ function runIsolatedPrompt(driver, prompt) {
|
|
|
736
736
|
});
|
|
737
737
|
}
|
|
738
738
|
|
|
739
|
-
// connectors/src/connector-types.ts
|
|
740
|
-
var ConnectorFieldMissingError = class extends Error {
|
|
741
|
-
connectorId;
|
|
742
|
-
field;
|
|
743
|
-
triedRef;
|
|
744
|
-
availableProviders;
|
|
745
|
-
constructor(opts) {
|
|
746
|
-
super(
|
|
747
|
-
`Connector "${opts.connectorId}" is missing required field "${opts.field.key}" (tried: ${opts.triedRef || "(none)"}). Available providers: ${opts.availableProviders.join(", ") || "(none)"}`
|
|
748
|
-
);
|
|
749
|
-
this.name = "ConnectorFieldMissingError";
|
|
750
|
-
this.connectorId = opts.connectorId;
|
|
751
|
-
this.field = opts.field;
|
|
752
|
-
this.triedRef = opts.triedRef;
|
|
753
|
-
this.availableProviders = opts.availableProviders;
|
|
754
|
-
}
|
|
755
|
-
};
|
|
756
|
-
var ConnectorStartupError = class extends Error {
|
|
757
|
-
report;
|
|
758
|
-
failedReadWrite;
|
|
759
|
-
constructor(message, report, failedReadWrite) {
|
|
760
|
-
super(message);
|
|
761
|
-
this.name = "ConnectorStartupError";
|
|
762
|
-
this.report = report;
|
|
763
|
-
this.failedReadWrite = failedReadWrite;
|
|
764
|
-
}
|
|
765
|
-
};
|
|
766
|
-
|
|
767
739
|
// connectors/src/classify-connect-error.ts
|
|
768
740
|
function classifyConnectError(err) {
|
|
769
741
|
const declared = declaredConnectErrorKind(err);
|
|
@@ -6587,7 +6559,7 @@ var ConnectorManager = class {
|
|
|
6587
6559
|
* Remember a connect failure so the agent can be told about it. Called from
|
|
6588
6560
|
* both the bulk (`attemptConnect`) and hot-plug (`connect`) failure paths.
|
|
6589
6561
|
*/
|
|
6590
|
-
recordFailure(decl, error) {
|
|
6562
|
+
recordFailure(decl, error, unavailable) {
|
|
6591
6563
|
if (this.active.has(decl.id)) return;
|
|
6592
6564
|
let mountPath;
|
|
6593
6565
|
if (decl.mount != null) {
|
|
@@ -6603,9 +6575,29 @@ var ConnectorManager = class {
|
|
|
6603
6575
|
...decl.label !== void 0 ? { label: decl.label } : {},
|
|
6604
6576
|
...decl.mount?.source !== void 0 ? { source: decl.mount.source } : {},
|
|
6605
6577
|
...mountPath !== void 0 ? { mountPath } : {},
|
|
6606
|
-
|
|
6607
|
-
|
|
6578
|
+
// A host-declared unavailable connector is never fail-fast material.
|
|
6579
|
+
required: unavailable === void 0 && decl.access === "read-write" && decl.mount != null,
|
|
6580
|
+
error,
|
|
6581
|
+
...unavailable !== void 0 ? { unavailable } : {}
|
|
6582
|
+
});
|
|
6583
|
+
}
|
|
6584
|
+
/**
|
|
6585
|
+
* Record a host-declared unavailable connector as failed without touching its
|
|
6586
|
+
* driver or mount target. Returns the failure message.
|
|
6587
|
+
*
|
|
6588
|
+
* No `connector_status` is emitted: the host that wrote the marker already
|
|
6589
|
+
* holds this failure with its own typed reason, and an echoed event would be
|
|
6590
|
+
* newer than that record and replace it in a host's newest-wins failure view.
|
|
6591
|
+
*/
|
|
6592
|
+
recordUnavailable(decl, unavailable) {
|
|
6593
|
+
const msg = `Not attached by the host (${unavailable.reason})` + (unavailable.detail ? `: ${unavailable.detail}` : "");
|
|
6594
|
+
this.recordFailure(decl, msg, unavailable);
|
|
6595
|
+
this.mgrLog.warn("connector declared unavailable by the host", {
|
|
6596
|
+
id: decl.id,
|
|
6597
|
+
driver: decl.driver,
|
|
6598
|
+
reason: unavailable.reason
|
|
6608
6599
|
});
|
|
6600
|
+
return msg;
|
|
6609
6601
|
}
|
|
6610
6602
|
/** Release every mount target owned by `id` (on disconnect). */
|
|
6611
6603
|
releaseMountTarget(id) {
|
|
@@ -6687,7 +6679,7 @@ var ConnectorManager = class {
|
|
|
6687
6679
|
const claimed = [];
|
|
6688
6680
|
try {
|
|
6689
6681
|
for (const decl of declarations) {
|
|
6690
|
-
if (decl.mount == null) continue;
|
|
6682
|
+
if (decl.mount == null || readUnavailableMarker(decl.unavailable)) continue;
|
|
6691
6683
|
const absPath = this.resolveMountTarget(decl);
|
|
6692
6684
|
const isNew = !this.mountTargets.has(absPath);
|
|
6693
6685
|
this.reserveMountTarget(decl.id, absPath);
|
|
@@ -6708,9 +6700,10 @@ var ConnectorManager = class {
|
|
|
6708
6700
|
});
|
|
6709
6701
|
if (options?.failOnReadWriteError) {
|
|
6710
6702
|
const declById = new Map(declarations.map((d) => [d.id, d]));
|
|
6711
|
-
const failedRw = results.filter(
|
|
6712
|
-
|
|
6713
|
-
|
|
6703
|
+
const failedRw = results.filter((r) => {
|
|
6704
|
+
const decl = declById.get(r.id);
|
|
6705
|
+
return !r.connected && r.access === "read-write" && decl?.mount != null && !readUnavailableMarker(decl.unavailable);
|
|
6706
|
+
}).map((r) => ({ id: r.id, error: r.error ?? "unknown error" }));
|
|
6714
6707
|
if (failedRw.length > 0) {
|
|
6715
6708
|
const summary = failedRw.map((f) => `"${f.id}": ${f.error}`).join("; ");
|
|
6716
6709
|
this.mgrLog.error("connectAll failed: required read-write connector(s) failed", void 0, {
|
|
@@ -6731,6 +6724,11 @@ var ConnectorManager = class {
|
|
|
6731
6724
|
* can keep going.
|
|
6732
6725
|
*/
|
|
6733
6726
|
async attemptConnect(decl, preResolved) {
|
|
6727
|
+
const unavailable = readUnavailableMarker(decl.unavailable);
|
|
6728
|
+
if (unavailable) {
|
|
6729
|
+
const msg = this.recordUnavailable(decl, unavailable);
|
|
6730
|
+
return { id: decl.id, connected: false, error: msg, access: decl.access };
|
|
6731
|
+
}
|
|
6734
6732
|
this.opts.onStatusChange?.({
|
|
6735
6733
|
type: "connector_status",
|
|
6736
6734
|
connectorId: decl.id,
|
|
@@ -6836,6 +6834,20 @@ var ConnectorManager = class {
|
|
|
6836
6834
|
* @returns The `ConnectorHandle` for subsequent operations.
|
|
6837
6835
|
*/
|
|
6838
6836
|
async connect(declaration) {
|
|
6837
|
+
const unavailable = readUnavailableMarker(declaration.unavailable);
|
|
6838
|
+
if (unavailable) {
|
|
6839
|
+
if (this.active.has(declaration.id)) {
|
|
6840
|
+
try {
|
|
6841
|
+
await this.disconnect(declaration.id);
|
|
6842
|
+
} catch (err) {
|
|
6843
|
+
this.mgrLog.warn("disconnect before marking unavailable failed", {
|
|
6844
|
+
id: declaration.id,
|
|
6845
|
+
error: err instanceof Error ? err.message : String(err)
|
|
6846
|
+
});
|
|
6847
|
+
}
|
|
6848
|
+
}
|
|
6849
|
+
throw new Error(this.recordUnavailable(declaration, unavailable));
|
|
6850
|
+
}
|
|
6839
6851
|
this.opts.onStatusChange?.({
|
|
6840
6852
|
type: "connector_status",
|
|
6841
6853
|
connectorId: declaration.id,
|
|
@@ -7604,16 +7616,17 @@ function buildFailedConnectorSection(failed) {
|
|
|
7604
7616
|
const lines = [
|
|
7605
7617
|
"## Mount failures \u2014 read this first",
|
|
7606
7618
|
"",
|
|
7607
|
-
"The following connectors **failed to connect** in this session. Their directories are ordinary local folders: **not** connected, **not** synced, and **not** backend-managed git worktrees. Any other statement in this prompt \u2014 including the host platform's own description of the workspace \u2014 that describes these paths as a managed, synced, or version-controlled workspace **is superseded by this section**.",
|
|
7619
|
+
"The following connectors **failed to connect** in this session. Their directories, where they exist, are ordinary local folders: **not** connected, **not** synced, and **not** backend-managed git worktrees. Any other statement in this prompt \u2014 including the host platform's own description of the workspace \u2014 that describes these paths as a managed, synced, or version-controlled workspace **is superseded by this section**.",
|
|
7608
7620
|
"",
|
|
7609
7621
|
"| Mount | Driver | Path | Access | Required | Failure |",
|
|
7610
7622
|
"|---|---|---|---|---|---|"
|
|
7611
7623
|
];
|
|
7612
7624
|
for (const f of failed) {
|
|
7613
|
-
const
|
|
7625
|
+
const where = f.mountPath ?? f.source;
|
|
7626
|
+
const path = where === void 0 ? "`(no mount)`" : f.unavailable !== void 0 ? `\`${where}\` (not created by this declaration \u2014 do not write here)` : `\`${where}\``;
|
|
7614
7627
|
const required = f.required ? "yes" : "no";
|
|
7615
7628
|
lines.push(
|
|
7616
|
-
`| ${f.id} | ${f.driver} |
|
|
7629
|
+
`| ${f.id} | ${f.driver} | ${path} | ${f.access} | ${required} | ${oneLine(f.error)} |`
|
|
7617
7630
|
);
|
|
7618
7631
|
}
|
|
7619
7632
|
lines.push("");
|
|
@@ -7624,6 +7637,12 @@ function buildFailedConnectorSection(failed) {
|
|
|
7624
7637
|
lines.push(
|
|
7625
7638
|
"**There is nothing to fix inside this workspace.** The credential for a mount is minted by the host platform, not by anything in here and not by any project setting \u2014 there is no credential field to fill in. Report the failure text above verbatim to the user and ask them to reconnect the connector's provider link on the platform, then restart the session. Do not retry the connection yourself; a connector that failed at startup stays failed until the session restarts."
|
|
7626
7639
|
);
|
|
7640
|
+
if (failed.some((f) => f.unavailable !== void 0)) {
|
|
7641
|
+
lines.push("");
|
|
7642
|
+
lines.push(
|
|
7643
|
+
"**`Not attached by the host`** means the host platform declined the mount before this session started, so no connection was attempted here. The reason and detail are the platform's own: pass them on, since the fix may be the mount's declaration in the platform's settings rather than its credential. Such a mount's directory was **not created by this declaration**, so reading it normally fails with `ENOENT` (a directory left by an earlier, replaced connection may remain). Do not create it or write there: a path inside the primary workspace would put the files into that workspace, where they are synced and committed as if they belonged to it."
|
|
7644
|
+
);
|
|
7645
|
+
}
|
|
7627
7646
|
if (failed.some((f) => f.driver === "git")) {
|
|
7628
7647
|
lines.push("");
|
|
7629
7648
|
lines.push(
|
|
@@ -11120,6 +11139,6 @@ function describeFlowOperations() {
|
|
|
11120
11139
|
return new FlowAdapter().tools.describeOperations({ access: "read-write" });
|
|
11121
11140
|
}
|
|
11122
11141
|
|
|
11123
|
-
export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, BoxConnector, ClassifierSubpromptRunner,
|
|
11124
|
-
//# sourceMappingURL=chunk-
|
|
11125
|
-
//# sourceMappingURL=chunk-
|
|
11142
|
+
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, 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 };
|
|
11143
|
+
//# sourceMappingURL=chunk-NYRLSXTB.js.map
|
|
11144
|
+
//# sourceMappingURL=chunk-NYRLSXTB.js.map
|