@skaile/workspaces 2.9.0 → 3.1.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.
Files changed (159) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +17 -6
  3. package/dist/{asset-feeds-EO2QDJ4C.js → asset-feeds-3XCKB542.js} +4 -4
  4. package/dist/{asset-feeds-EO2QDJ4C.js.map → asset-feeds-3XCKB542.js.map} +1 -1
  5. package/dist/asset-manager/index.js +1 -1
  6. package/dist/bridge/drivers/claude-sdk.js +6 -206
  7. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  8. package/dist/bridge/drivers/codex.js +2 -2
  9. package/dist/bridge/drivers/continue.js +2 -2
  10. package/dist/bridge/drivers/echo.js +1 -1
  11. package/dist/bridge/drivers/gemini.js +4 -4
  12. package/dist/bridge/drivers/goose.js +2 -2
  13. package/dist/bridge/drivers/omp.js +1 -1
  14. package/dist/bridge/drivers/opencode.js +2 -2
  15. package/dist/bridge/drivers/qwen.js +4 -4
  16. package/dist/bridge/index.js +14 -4
  17. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  18. package/dist/bridge/src/drivers/resume-probe.d.ts +54 -0
  19. package/dist/bridge/src/drivers/resume-probe.d.ts.map +1 -0
  20. package/dist/bridge/src/drivers/scrub-transcript.d.ts +17 -0
  21. package/dist/bridge/src/drivers/scrub-transcript.d.ts.map +1 -1
  22. package/dist/bridge/src/index.d.ts +1 -0
  23. package/dist/bridge/src/index.d.ts.map +1 -1
  24. package/dist/bridge/src/models.d.ts +59 -0
  25. package/dist/bridge/src/models.d.ts.map +1 -1
  26. package/dist/{chunk-ZR2X4SIG.js → chunk-2U4ISGE2.js} +5 -5
  27. package/dist/{chunk-ZR2X4SIG.js.map → chunk-2U4ISGE2.js.map} +1 -1
  28. package/dist/chunk-46LE3GNY.js +296 -0
  29. package/dist/chunk-46LE3GNY.js.map +1 -0
  30. package/dist/{chunk-INHE5U74.js → chunk-5QGMEPUX.js} +8 -12
  31. package/dist/chunk-5QGMEPUX.js.map +1 -0
  32. package/dist/{chunk-TU7JDHKS.js → chunk-7HXS7WZF.js} +2 -2
  33. package/dist/{chunk-TU7JDHKS.js.map → chunk-7HXS7WZF.js.map} +1 -1
  34. package/dist/{chunk-OHLKWUO3.js → chunk-7KFN2EPR.js} +12 -4
  35. package/dist/chunk-7KFN2EPR.js.map +1 -0
  36. package/dist/{chunk-YFAED6OB.js → chunk-BENN6MO4.js} +4 -4
  37. package/dist/{chunk-YFAED6OB.js.map → chunk-BENN6MO4.js.map} +1 -1
  38. package/dist/{chunk-AGFAOSCZ.js → chunk-F5VREBV2.js} +8 -5
  39. package/dist/chunk-F5VREBV2.js.map +1 -0
  40. package/dist/{chunk-L3TS7ZO4.js → chunk-FP7DNGX6.js} +3 -3
  41. package/dist/{chunk-L3TS7ZO4.js.map → chunk-FP7DNGX6.js.map} +1 -1
  42. package/dist/{chunk-E5VGAW4E.js → chunk-H26KDA7J.js} +230 -9
  43. package/dist/chunk-H26KDA7J.js.map +1 -0
  44. package/dist/{chunk-VNIKF66R.js → chunk-HA2H3FLE.js} +4 -4
  45. package/dist/{chunk-VNIKF66R.js.map → chunk-HA2H3FLE.js.map} +1 -1
  46. package/dist/{chunk-5LA4XI4Y.js → chunk-HNR2IT34.js} +27 -13
  47. package/dist/chunk-HNR2IT34.js.map +1 -0
  48. package/dist/{chunk-BIKTLLLD.js → chunk-MJ6EME7A.js} +6 -6
  49. package/dist/{chunk-BIKTLLLD.js.map → chunk-MJ6EME7A.js.map} +1 -1
  50. package/dist/{chunk-ZXJKWA44.js → chunk-N4GFUWWC.js} +3 -3
  51. package/dist/{chunk-ZXJKWA44.js.map → chunk-N4GFUWWC.js.map} +1 -1
  52. package/dist/{chunk-UTHMTZEH.js → chunk-PT2ZUW2E.js} +2 -2
  53. package/dist/{chunk-UTHMTZEH.js.map → chunk-PT2ZUW2E.js.map} +1 -1
  54. package/dist/{chunk-XXDQHZJY.js → chunk-PUEHYNBT.js} +3 -3
  55. package/dist/{chunk-XXDQHZJY.js.map → chunk-PUEHYNBT.js.map} +1 -1
  56. package/dist/{chunk-HY3MBSNC.js → chunk-QFO4IYBZ.js} +2 -2
  57. package/dist/{chunk-HY3MBSNC.js.map → chunk-QFO4IYBZ.js.map} +1 -1
  58. package/dist/{chunk-UAIR3K6X.js → chunk-S5FV6ISY.js} +8 -5
  59. package/dist/chunk-S5FV6ISY.js.map +1 -0
  60. package/dist/{chunk-AFUOORJE.js → chunk-TARN55L3.js} +6 -6
  61. package/dist/{chunk-AFUOORJE.js.map → chunk-TARN55L3.js.map} +1 -1
  62. package/dist/{chunk-BMQKMOQY.js → chunk-V34ZEXSE.js} +61 -3
  63. package/dist/chunk-V34ZEXSE.js.map +1 -0
  64. package/dist/{chunk-QVFCDSRH.js → chunk-VBMY3VCW.js} +3 -3
  65. package/dist/{chunk-QVFCDSRH.js.map → chunk-VBMY3VCW.js.map} +1 -1
  66. package/dist/{chunk-XHSS3YHV.js → chunk-X73AMPOT.js} +16 -7
  67. package/dist/chunk-X73AMPOT.js.map +1 -0
  68. package/dist/{chunk-4PSDPZUG.js → chunk-ZGTM4BOU.js} +2 -2
  69. package/dist/{chunk-4PSDPZUG.js.map → chunk-ZGTM4BOU.js.map} +1 -1
  70. package/dist/cli/index.js +38 -38
  71. package/dist/connectors/index.js +11 -5
  72. package/dist/{ensure-sources-6ZOD45TO.js → ensure-sources-AST427RF.js} +4 -4
  73. package/dist/{ensure-sources-6ZOD45TO.js.map → ensure-sources-AST427RF.js.map} +1 -1
  74. package/dist/factory-assets/connectors/box.js +11 -5
  75. package/dist/factory-assets/connectors/deploy.js +11 -5
  76. package/dist/factory-assets/connectors/devserver.js +11 -5
  77. package/dist/factory-assets/connectors/flow/CONNECTOR.md +47 -6
  78. package/dist/factory-assets/connectors/flow/adapter.d.ts +5 -0
  79. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
  80. package/dist/factory-assets/connectors/flow/adapter.js +11 -5
  81. package/dist/factory-assets/connectors/flow/contract/flow.v2.schema.json +0 -6
  82. package/dist/factory-assets/connectors/flow/contract/normalize.d.ts.map +1 -1
  83. package/dist/factory-assets/connectors/flow/contract/schema.d.ts +0 -4
  84. package/dist/factory-assets/connectors/flow/contract/schema.d.ts.map +1 -1
  85. package/dist/factory-assets/connectors/flow/contract.js +2 -2
  86. package/dist/factory-assets/connectors/flow/engine/bindings.d.ts.map +1 -1
  87. package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts +7 -1
  88. package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts.map +1 -1
  89. package/dist/factory-assets/connectors/flow/engine/types.d.ts +12 -12
  90. package/dist/factory-assets/connectors/flow/engine/types.d.ts.map +1 -1
  91. package/dist/factory-assets/connectors/flow/engine.js +3 -3
  92. package/dist/factory-assets/connectors/flow/index.d.ts +1 -0
  93. package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
  94. package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts +3 -0
  95. package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts.map +1 -1
  96. package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts +14 -0
  97. package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts.map +1 -1
  98. package/dist/factory-assets/connectors/flow/prompt-fragments.js +2 -2
  99. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  100. package/dist/factory-assets/connectors/flow/run-flow.js +12 -6
  101. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts +99 -0
  102. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts.map +1 -0
  103. package/dist/factory-assets/connectors/flow.js +11 -5
  104. package/dist/factory-assets/connectors/git.js +11 -5
  105. package/dist/factory-assets/connectors/gmail.js +11 -5
  106. package/dist/factory-assets/connectors/googledrive.js +11 -5
  107. package/dist/factory-assets/connectors/local.js +11 -5
  108. package/dist/factory-assets/connectors/mattermost.js +11 -5
  109. package/dist/factory-assets/connectors/memory.js +11 -5
  110. package/dist/factory-assets/connectors/minio.js +11 -5
  111. package/dist/factory-assets/connectors/postgres.js +11 -5
  112. package/dist/factory-assets/connectors/s3.js +11 -5
  113. package/dist/factory-assets/connectors/sharepoint.js +11 -5
  114. package/dist/factory-assets/connectors/sqlite.js +11 -5
  115. package/dist/factory-assets/connectors/static-server.js +11 -5
  116. package/dist/factory-assets/connectors/tunnel.js +11 -5
  117. package/dist/factory-assets/connectors/webdav.js +11 -5
  118. package/dist/factory-assets/connectors/xstate-store.js +11 -5
  119. package/dist/factory-assets/connectors/xstate.js +11 -5
  120. package/dist/{flows-7N5AUUIS.js → flows-LQSVM45J.js} +3 -3
  121. package/dist/{flows-7N5AUUIS.js.map → flows-LQSVM45J.js.map} +1 -1
  122. package/dist/{helpers-HWLCANAK.js → helpers-IZDG57TR.js} +4 -4
  123. package/dist/{helpers-HWLCANAK.js.map → helpers-IZDG57TR.js.map} +1 -1
  124. package/dist/{library-publish-GSAIZCO3.js → library-publish-XGJ7IOU2.js} +9 -9
  125. package/dist/{library-publish-GSAIZCO3.js.map → library-publish-XGJ7IOU2.js.map} +1 -1
  126. package/dist/{open-library-ZB2STYC6.js → open-library-YDS66KLH.js} +8 -8
  127. package/dist/{open-library-ZB2STYC6.js.map → open-library-YDS66KLH.js.map} +1 -1
  128. package/dist/{project-EJFCLSHS.js → project-NR53RZOT.js} +5 -5
  129. package/dist/{project-EJFCLSHS.js.map → project-NR53RZOT.js.map} +1 -1
  130. package/dist/runner/index.js +15 -15
  131. package/dist/runner/src/serve.d.ts.map +1 -1
  132. package/dist/sdk/asset-manager.js +1 -1
  133. package/dist/sdk/bridge.js +14 -4
  134. package/dist/sdk/flow.js +3 -3
  135. package/dist/sdk/index.js +15 -15
  136. package/dist/sdk/runner.js +15 -15
  137. package/dist/{setup-RHWARBBB.js → setup-I5SLLHRA.js} +6 -6
  138. package/dist/{setup-RHWARBBB.js.map → setup-I5SLLHRA.js.map} +1 -1
  139. package/dist/{source-ILV6ZKWM.js → source-DDZKKQH2.js} +9 -9
  140. package/dist/{source-ILV6ZKWM.js.map → source-DDZKKQH2.js.map} +1 -1
  141. package/dist/{source-manifest-publish-QE2IFDRW.js → source-manifest-publish-OTVKHRX3.js} +10 -10
  142. package/dist/{source-manifest-publish-QE2IFDRW.js.map → source-manifest-publish-OTVKHRX3.js.map} +1 -1
  143. package/dist/tui/index.js +15 -15
  144. package/dist/types/src/lifecycle.d.ts +12 -0
  145. package/dist/types/src/lifecycle.d.ts.map +1 -1
  146. package/dist/workspace-plugin/adapters/mcp.js +1 -1
  147. package/dist/workspace-plugin/adapters/omp.js +3 -3
  148. package/dist/workspace-plugin/index.js +1 -1
  149. package/package.json +1 -1
  150. package/dist/chunk-5LA4XI4Y.js.map +0 -1
  151. package/dist/chunk-AGFAOSCZ.js.map +0 -1
  152. package/dist/chunk-BMQKMOQY.js.map +0 -1
  153. package/dist/chunk-E5VGAW4E.js.map +0 -1
  154. package/dist/chunk-INHE5U74.js.map +0 -1
  155. package/dist/chunk-ISQWMBKD.js +0 -74
  156. package/dist/chunk-ISQWMBKD.js.map +0 -1
  157. package/dist/chunk-OHLKWUO3.js.map +0 -1
  158. package/dist/chunk-UAIR3K6X.js.map +0 -1
  159. package/dist/chunk-XHSS3YHV.js.map +0 -1
@@ -1,6 +1,6 @@
1
- import { fetchProviderModels } from '../../chunk-BMQKMOQY.js';
1
+ import { fetchProviderModels } from '../../chunk-V34ZEXSE.js';
2
2
  import { classifyGenericErrorMessage } from '../../chunk-GAH4YRCI.js';
3
- import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-HY3MBSNC.js';
3
+ import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-QFO4IYBZ.js';
4
4
  import '../../chunk-6E6PKKAD.js';
5
5
  import '../../chunk-U5POE4BA.js';
6
6
  import '../../chunk-7GOCNYUV.js';
@@ -1,6 +1,6 @@
1
- import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-L3TS7ZO4.js';
1
+ import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-FP7DNGX6.js';
2
2
  import '../../chunk-GAH4YRCI.js';
3
- import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-HY3MBSNC.js';
3
+ import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-QFO4IYBZ.js';
4
4
  import '../../chunk-6E6PKKAD.js';
5
5
  import '../../chunk-U5POE4BA.js';
6
6
  import '../../chunk-7GOCNYUV.js';
@@ -1,5 +1,5 @@
1
1
  import { dispatchCapability } from '../../chunk-RRVQAE5D.js';
2
- import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-HY3MBSNC.js';
2
+ import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-QFO4IYBZ.js';
3
3
  import '../../chunk-6E6PKKAD.js';
4
4
  import '../../chunk-U5POE4BA.js';
5
5
  import '../../chunk-7GOCNYUV.js';
@@ -1,8 +1,8 @@
1
- export { GeminiDriver, GeminiFamilyDriver, geminiDriverTarget } from '../../chunk-ZR2X4SIG.js';
2
- import '../../chunk-L3TS7ZO4.js';
3
- import '../../chunk-BMQKMOQY.js';
1
+ export { GeminiDriver, GeminiFamilyDriver, geminiDriverTarget } from '../../chunk-2U4ISGE2.js';
2
+ import '../../chunk-FP7DNGX6.js';
3
+ import '../../chunk-V34ZEXSE.js';
4
4
  import '../../chunk-GAH4YRCI.js';
5
- import '../../chunk-HY3MBSNC.js';
5
+ import '../../chunk-QFO4IYBZ.js';
6
6
  import '../../chunk-6E6PKKAD.js';
7
7
  import '../../chunk-U5POE4BA.js';
8
8
  import '../../chunk-7GOCNYUV.js';
@@ -1,6 +1,6 @@
1
- import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-L3TS7ZO4.js';
1
+ import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-FP7DNGX6.js';
2
2
  import '../../chunk-GAH4YRCI.js';
3
- import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-HY3MBSNC.js';
3
+ import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-QFO4IYBZ.js';
4
4
  import '../../chunk-6E6PKKAD.js';
5
5
  import '../../chunk-U5POE4BA.js';
6
6
  import '../../chunk-7GOCNYUV.js';
@@ -1,5 +1,5 @@
1
1
  import { classifyGenericErrorMessage } from '../../chunk-GAH4YRCI.js';
2
- import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-HY3MBSNC.js';
2
+ import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-QFO4IYBZ.js';
3
3
  import '../../chunk-6E6PKKAD.js';
4
4
  import '../../chunk-U5POE4BA.js';
5
5
  import '../../chunk-7GOCNYUV.js';
@@ -1,6 +1,6 @@
1
- import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-L3TS7ZO4.js';
1
+ import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-FP7DNGX6.js';
2
2
  import '../../chunk-GAH4YRCI.js';
3
- import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-HY3MBSNC.js';
3
+ import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-QFO4IYBZ.js';
4
4
  import '../../chunk-6E6PKKAD.js';
5
5
  import '../../chunk-U5POE4BA.js';
6
6
  import '../../chunk-7GOCNYUV.js';
@@ -1,8 +1,8 @@
1
- import { GeminiFamilyDriver } from '../../chunk-ZR2X4SIG.js';
2
- import '../../chunk-L3TS7ZO4.js';
3
- import { fetchProviderModels } from '../../chunk-BMQKMOQY.js';
1
+ import { GeminiFamilyDriver } from '../../chunk-2U4ISGE2.js';
2
+ import '../../chunk-FP7DNGX6.js';
3
+ import { fetchProviderModels } from '../../chunk-V34ZEXSE.js';
4
4
  import '../../chunk-GAH4YRCI.js';
5
- import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-HY3MBSNC.js';
5
+ import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-QFO4IYBZ.js';
6
6
  import '../../chunk-6E6PKKAD.js';
7
7
  import '../../chunk-U5POE4BA.js';
8
8
  import '../../chunk-7GOCNYUV.js';
@@ -1,10 +1,20 @@
1
- export { BridgeRuntime, EventNormalizer, createRuntime, detectFileChange, detectFileChanges, summarizeToolCall, summarizeToolResult, validateApiKey } from '../chunk-VNIKF66R.js';
2
- export { CLOUD_SECRET_ENV_KEYS, SUPPORTED_CLOUDS, buildClaudeCloudEnv } from '../chunk-ISQWMBKD.js';
1
+ export { BridgeRuntime, EventNormalizer, createRuntime, detectFileChange, detectFileChanges, summarizeToolCall, summarizeToolResult, validateApiKey } from '../chunk-HA2H3FLE.js';
2
+ export { CLOUD_SECRET_ENV_KEYS, SUPPORTED_CLOUDS, buildClaudeCloudEnv, probeResumeTranscript, resolveClaudeConfigDir } from '../chunk-46LE3GNY.js';
3
3
  export { dispatchCapability, filterRenderCapabilities, renderFallback } from '../chunk-RRVQAE5D.js';
4
- export { STATIC_MODELS, fetchProviderModels, getModels, getStaticModels } from '../chunk-BMQKMOQY.js';
4
+ export { ModelTierResolutionError, PROVIDER_MODEL_TIERS, STATIC_MODELS, fetchProviderModels, getModels, getStaticModels, resolveModelTier } from '../chunk-V34ZEXSE.js';
5
5
  export { AccountUnavailableError, AuthError, classifyClaudeSdkError, reclassifyAuthAsAccountUnavailable } from '../chunk-GAH4YRCI.js';
6
- export { AgentDriver, BUILTIN_DRIVER_CATALOG, DRIVER_CATALOG, createDriver, getBridgeLogger, listDrivers, listModelsForDriver, registerBuiltinDrivers } from '../chunk-HY3MBSNC.js';
6
+ export { AgentDriver, BUILTIN_DRIVER_CATALOG, DRIVER_CATALOG, createDriver, getBridgeLogger, listDrivers, listModelsForDriver, registerBuiltinDrivers } from '../chunk-QFO4IYBZ.js';
7
7
  import '../chunk-6E6PKKAD.js';
8
+ import '../chunk-P43HBWKK.js';
9
+ import '../chunk-F3HNW354.js';
10
+ import '../chunk-K5GBV4SA.js';
11
+ import '../chunk-ZAP2BDHG.js';
12
+ import '../chunk-UFY2HFLO.js';
13
+ import '../chunk-Q26C5GLO.js';
14
+ import '../chunk-MENCWIHW.js';
15
+ import '../chunk-P4VHQA4N.js';
16
+ import '../chunk-DYMWJAL4.js';
17
+ import '../chunk-GEEW6SY2.js';
8
18
  import '../chunk-U5POE4BA.js';
9
19
  import '../chunk-7GOCNYUV.js';
10
20
  import '../chunk-NSBPE2FW.js';
@@ -1 +1 @@
1
- {"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/claude-sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/claude-sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Pre-first-turn resume probe for the Claude Agent SDK driver.
3
+ *
4
+ * A tier-1 native resume only hands its session id to the SDK inside the first
5
+ * real turn, so the `jsonl_lost` outcome ("No conversation found") is invisible
6
+ * until a turn is consumed. The runner shares the container filesystem with the
7
+ * SDK, so a cheap `stat` of the on-disk JSONL transcript is an authoritative,
8
+ * side-effect-free signal of whether the resume will find its history — no
9
+ * probe query, no spurious model turn.
10
+ *
11
+ * @module
12
+ */
13
+ /**
14
+ * Outcome of {@link probeResumeTranscript}: whether the SDK transcript for a
15
+ * requested tier-1 resume exists on disk.
16
+ *
17
+ * @category Resume probe
18
+ */
19
+ export type ResumeProbeOutcome = "transcript_found" | "jsonl_lost";
20
+ /**
21
+ * Resolve the Claude Code config directory — the parent of `projects/` — from
22
+ * an explicit env map, the process environment, or the `~/.claude` default.
23
+ *
24
+ * The runner's probe and the claude-sdk driver share this one resolver, so they
25
+ * agree as long as they see the same `CLAUDE_CONFIG_DIR`. Today they do:
26
+ * `CLAUDE_CONFIG_DIR` is container-scoped and neither side threads a per-session
27
+ * override through `config.env`, so both fall through to `process.env`. If a
28
+ * future change ever set the driver's `config.env.CLAUDE_CONFIG_DIR` to a
29
+ * divergent path, the reactive `resume_failed { jsonl_lost }` turn remains the
30
+ * safety net.
31
+ *
32
+ * @category Resume probe
33
+ */
34
+ export declare function resolveClaudeConfigDir(env?: Record<string, string | undefined>): string;
35
+ /**
36
+ * Probe whether the SDK JSONL transcript for `sessionId` exists on disk.
37
+ *
38
+ * Non-null locator result → `transcript_found`; null → `jsonl_lost`;
39
+ * `undefined` → outcome unknown (the probe exceeded its budget or errored). The
40
+ * caller leaves the ack field ABSENT on `undefined` so the reactive
41
+ * `resume_failed { jsonl_lost }` turn stays the safety net — a timed-out probe
42
+ * must never masquerade as a genuine `jsonl_lost` and force a needless downgrade.
43
+ *
44
+ * `opts.timeoutMs` overrides {@link RESUME_PROBE_TIMEOUT_MS}; `opts.locate`
45
+ * overrides the transcript locator (used by tests / alternate stores).
46
+ *
47
+ * @category Resume probe
48
+ */
49
+ export declare function probeResumeTranscript(sessionId: string, opts?: {
50
+ env?: Record<string, string | undefined>;
51
+ timeoutMs?: number;
52
+ locate?: (configDir: string, sessionId: string) => Promise<string | null>;
53
+ }): Promise<ResumeProbeOutcome | undefined>;
54
+ //# sourceMappingURL=resume-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume-probe.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/resume-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAeH;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG,YAAY,CAAC;AAEnE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAEvF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;IACL,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC3E,GACA,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAiBzC"}
@@ -110,6 +110,23 @@ export interface ScrubTranscriptResult {
110
110
  * @category Transcript repair
111
111
  */
112
112
  export declare function sniffImageMediaType(base64: string): string | null;
113
+ /**
114
+ * Locate the JSONL transcript for `sessionId` under `<configDir>/projects/`.
115
+ *
116
+ * Claude Code encodes the project directory into the `projects/` subfolder
117
+ * name; rather than reproduce that encoding, this scans every subfolder for
118
+ * `<sessionId>.jsonl` (the session id is a UUID — globally unique).
119
+ *
120
+ * Async and deadline-bounded since #454. The `existsSync(projectsDir)` probe is
121
+ * gone: `readdir` already fails on a missing directory, so the probe was a
122
+ * second stat on the same path for no information.
123
+ *
124
+ * `timeoutMs` defaults to {@link fsDeadlineMs} so callers that only need the
125
+ * path (the resume probe) can omit it.
126
+ *
127
+ * @category Transcript repair
128
+ */
129
+ export declare function locateTranscriptPath(configDir: string, sessionId: string, timeoutMs?: number): Promise<string | null>;
113
130
  /**
114
131
  * Scan a Claude Code SDK transcript for image content blocks whose declared
115
132
  * `media_type` does not match the actual bytes, repair them, and atomically
@@ -1 +1 @@
1
- {"version":3,"file":"scrub-transcript.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/scrub-transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAQH;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7D;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,GAAG,CAAC,EAAE,WAAW,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,uFAAuF;IACvF,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAeD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwCjE;AAgMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,CAsFhC"}
1
+ {"version":3,"file":"scrub-transcript.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/scrub-transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAQH;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7D;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,GAAG,CAAC,EAAE,WAAW,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,uFAAuF;IACvF,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAeD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwCjE;AA6FD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,MAAuB,GACjC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB;AAgED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,CAsFhC"}
@@ -5,6 +5,7 @@ export * from "./logger.js";
5
5
  export * from "./models.js";
6
6
  export * from "./normalizer.js";
7
7
  export * from "./registry.js";
8
+ export { probeResumeTranscript, type ResumeProbeOutcome, resolveClaudeConfigDir, } from "./drivers/resume-probe.js";
8
9
  export * from "./runtime.js";
9
10
  export * from "./types.js";
10
11
  export * from "./validation.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,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,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"}
@@ -87,4 +87,63 @@ export declare const STATIC_MODELS: Record<string, ModelEntry[]>;
87
87
  * @docLink packages/bridge/api-reference#models
88
88
  */
89
89
  export declare function getStaticModels(provider: string): ModelEntry[];
90
+ /** Per-tier concrete model ids for one provider. */
91
+ export interface ModelTierOverrides {
92
+ small?: string;
93
+ default?: string;
94
+ deep?: string;
95
+ }
96
+ /**
97
+ * Built-in tier→model mapping per provider. This is the point of the closed
98
+ * `small | default | deep` vocabulary: an authored flow names an intent and the
99
+ * runtime owns which concrete model serves it, so flows stay portable across
100
+ * model-lineup changes.
101
+ *
102
+ * These are **direct provider-API ids**. A gateway transport (Bedrock, Vertex,
103
+ * Azure) addresses the same models by different ids — Bedrock prefixes
104
+ * `us.anthropic.`, for instance — and that translation belongs to whoever owns
105
+ * the deployment, not here. {@link resolveModelTier} therefore consults this
106
+ * table only on the direct API and demands an explicit override otherwise,
107
+ * rather than handing a gateway an id it cannot serve.
108
+ *
109
+ * Every id here must also appear in {@link STATIC_MODELS} — a test asserts it,
110
+ * so the two cannot drift into naming a model the catalog disowns. That check
111
+ * proves internal consistency only; it cannot tell you an id is still current
112
+ * with a provider's live lineup.
113
+ *
114
+ * Where a provider's lineup has no genuinely distinct model for a tier, the
115
+ * entry deliberately repeats the neighbouring one. That is a reviewable
116
+ * property of that lineup, unlike inheriting whatever model the session
117
+ * happened to start with — which is how `small` could silently mean Opus.
118
+ */
119
+ export declare const PROVIDER_MODEL_TIERS: Record<string, Required<ModelTierOverrides>>;
120
+ /** Raised when a tier names an intent this provider cannot serve. */
121
+ export declare class ModelTierResolutionError extends Error {
122
+ readonly tier: "small" | "deep";
123
+ readonly provider: string | undefined;
124
+ constructor(tier: "small" | "deep", provider: string | undefined);
125
+ }
126
+ /**
127
+ * Resolve a Flow v2 `run.model` tier to a concrete model id.
128
+ *
129
+ * `"default"` and an absent tier **inherit `sessionModel` first**. The session
130
+ * model is the one id known to work for this deployment — it already carries
131
+ * whatever provider, lineup and gateway translation the host configured — so
132
+ * preferring a built-in over it would silently downgrade a configured model
133
+ * and, on a gateway transport, substitute an id that provider cannot serve.
134
+ *
135
+ * `"small"` and `"deep"` never fall back to `sessionModel`: they resolve from
136
+ * an override, then from {@link PROVIDER_MODEL_TIERS} on the direct provider
137
+ * API, and otherwise throw {@link ModelTierResolutionError}. Inheriting there
138
+ * would run an arbitrary model behind an author's explicit request for a cheap
139
+ * or a strong one — a cost or quality surprise that shows up only in the bill
140
+ * or the output. Failing names it at the node instead.
141
+ *
142
+ * Pure: no I/O, no environment reads.
143
+ */
144
+ export declare function resolveModelTier(tier: "small" | "default" | "deep" | undefined, sessionModel: string | undefined, options?: {
145
+ provider?: string;
146
+ cloud?: string;
147
+ overrides?: ModelTierOverrides;
148
+ }): string | undefined;
90
149
  //# sourceMappingURL=models.d.ts.map
@@ -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;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CA+C5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkB7F;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"}
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;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CA+C5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkB7F;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"}
@@ -1,6 +1,6 @@
1
- import { SubprocessCliDriver, extractText, extractCost, extractTokens } from './chunk-L3TS7ZO4.js';
2
- import { getStaticModels, fetchProviderModels } from './chunk-BMQKMOQY.js';
3
- import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from './chunk-HY3MBSNC.js';
1
+ import { SubprocessCliDriver, extractText, extractCost, extractTokens } from './chunk-FP7DNGX6.js';
2
+ import { getStaticModels, fetchProviderModels } from './chunk-V34ZEXSE.js';
3
+ import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from './chunk-QFO4IYBZ.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-ZR2X4SIG.js.map
110
- //# sourceMappingURL=chunk-ZR2X4SIG.js.map
109
+ //# sourceMappingURL=chunk-2U4ISGE2.js.map
110
+ //# sourceMappingURL=chunk-2U4ISGE2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../bridge/src/drivers/gemini.ts"],"names":[],"mappings":"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","file":"chunk-ZR2X4SIG.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
+ {"version":3,"sources":["../bridge/src/drivers/gemini.ts"],"names":[],"mappings":"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","file":"chunk-2U4ISGE2.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"]}