dsh-llm-omp-transports 0.2.5 → 0.2.8

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 (73) hide show
  1. package/README.md +190 -15
  2. package/lib/adapter.d.ts +112 -2
  3. package/lib/adapter.js +152 -2
  4. package/lib/adapter.js.map +1 -1
  5. package/lib/catalog/cursor.d.ts +4 -4
  6. package/lib/catalog/cursor.js +2 -2
  7. package/lib/catalog/devin.d.ts +4 -4
  8. package/lib/catalog/devin.js +2 -2
  9. package/lib/catalog/factory-droid.d.ts +31 -0
  10. package/lib/catalog/factory-droid.js +1183 -0
  11. package/lib/catalog/factory-droid.js.map +1 -0
  12. package/lib/catalog/gitlab-duo-agent.d.ts +26 -0
  13. package/lib/catalog/gitlab-duo-agent.js +29 -0
  14. package/lib/catalog/gitlab-duo-agent.js.map +1 -0
  15. package/lib/catalog/gitlab-duo.d.ts +32 -0
  16. package/lib/catalog/gitlab-duo.js +1049 -0
  17. package/lib/catalog/gitlab-duo.js.map +1 -0
  18. package/lib/catalog/google-antigravity.d.ts +27 -0
  19. package/lib/catalog/google-antigravity.js +1062 -0
  20. package/lib/catalog/google-antigravity.js.map +1 -0
  21. package/lib/catalog/google-gemini-cli.d.ts +28 -0
  22. package/lib/catalog/google-gemini-cli.js +330 -0
  23. package/lib/catalog/google-gemini-cli.js.map +1 -0
  24. package/lib/devin/auth.d.ts +5 -0
  25. package/lib/devin/auth.js +11 -24
  26. package/lib/devin/auth.js.map +1 -1
  27. package/lib/devin/transport.d.ts +22 -6
  28. package/lib/devin/transport.js +10 -25
  29. package/lib/devin/transport.js.map +1 -1
  30. package/lib/factory-droid/auth.d.ts +123 -0
  31. package/lib/factory-droid/auth.js +326 -0
  32. package/lib/factory-droid/auth.js.map +1 -0
  33. package/lib/factory-droid/credentials.d.ts +41 -0
  34. package/lib/factory-droid/credentials.js +185 -0
  35. package/lib/factory-droid/credentials.js.map +1 -0
  36. package/lib/gitlab/auth.d.ts +192 -0
  37. package/lib/gitlab/auth.js +349 -0
  38. package/lib/gitlab/auth.js.map +1 -0
  39. package/lib/gitlab/credentials.d.ts +59 -0
  40. package/lib/gitlab/credentials.js +163 -0
  41. package/lib/gitlab/credentials.js.map +1 -0
  42. package/lib/google/auth.d.ts +130 -0
  43. package/lib/google/auth.js +590 -0
  44. package/lib/google/auth.js.map +1 -0
  45. package/lib/google/callback-listener.d.ts +84 -0
  46. package/lib/google/callback-listener.js +289 -0
  47. package/lib/google/callback-listener.js.map +1 -0
  48. package/lib/google/client-facts.generated.d.ts +13 -0
  49. package/lib/google/client-facts.generated.js +12 -0
  50. package/lib/google/client-facts.generated.js.map +1 -0
  51. package/lib/google/credentials.d.ts +49 -0
  52. package/lib/google/credentials.js +167 -0
  53. package/lib/google/credentials.js.map +1 -0
  54. package/lib/google/route.d.ts +56 -0
  55. package/lib/google/route.js +85 -0
  56. package/lib/google/route.js.map +1 -0
  57. package/lib/index.d.ts +556 -16
  58. package/lib/index.js +611 -6
  59. package/lib/index.js.map +1 -1
  60. package/lib/omp/cursor.mjs +183 -47
  61. package/lib/omp/devin.mjs +46 -40
  62. package/lib/omp/factory-droid.mjs +37069 -0
  63. package/lib/omp/gitlab-duo-agent.mjs +12671 -0
  64. package/lib/omp/gitlab-duo.mjs +51506 -0
  65. package/lib/omp/google.mjs +20805 -0
  66. package/lib/omp.d.ts +290 -0
  67. package/lib/projection.d.ts +241 -4
  68. package/lib/projection.js +431 -10
  69. package/lib/projection.js.map +1 -1
  70. package/lib/transport/fetch.d.ts +9 -0
  71. package/lib/transport/fetch.js +41 -0
  72. package/lib/transport/fetch.js.map +1 -0
  73. package/package.json +13 -12
package/README.md CHANGED
@@ -11,16 +11,17 @@ and the plugin page lists both bundle components
11
11
  |---|---|
12
12
  | npm package | `dsh-llm-omp-transports` |
13
13
  | Plugin id | `llm-omp-transports` |
14
- | Routes | `cursor`, `devin` (the seam is provider-generic) |
15
- | Credential scope | `llm-omp-transports/<provider>`: `llm-omp-transports/cursor`, `llm-omp-transports/devin` |
14
+ | Routes | `cursor`, `devin`, `google-gemini-cli`, `google-antigravity`, `factory-droid`, `gitlab-duo`, `gitlab-duo-agent` (the seam is provider-generic) |
15
+ | Credential scope | `llm-omp-transports/<provider>` — one record per route (`cursor`, `devin`, `google-gemini-cli`, `google-antigravity`, `factory-droid`, `gitlab-duo`, `gitlab-duo-agent`) |
16
16
  | Runtime | Node 24 (the bundle imports Node builtins only) |
17
17
  | License | MIT |
18
18
 
19
19
  The plugin registers its own route on the DSH `llm` seam, so it depends on no
20
20
  upstream DSH change. `@oh-my-pi/pi-ai` and `@oh-my-pi/pi-catalog` are used at
21
21
  **build time only**: the build inlines the pinned omp transports into one ESM
22
- artifact per route (`lib/omp/cursor.mjs`, `lib/omp/devin.mjs`), and the
23
- published package imports nothing from `@oh-my-pi/*` or `bun:*` at runtime.
22
+ artifact per route (`lib/omp/cursor.mjs`, `lib/omp/devin.mjs`), plus one shared
23
+ artifact for the two Google routes (`lib/omp/google.mjs`), and the published
24
+ package imports nothing from `@oh-my-pi/*` or `bun:*` at runtime.
24
25
 
25
26
  ## Cursor support status
26
27
 
@@ -72,6 +73,106 @@ published package imports nothing from `@oh-my-pi/*` or `bun:*` at runtime.
72
73
  - **Images** — not yet, same as Cursor: text-only input, image blocks refused
73
74
  with `CONTENT_UNSUPPORTED`.
74
75
 
76
+ ## Google support status
77
+
78
+ Two routes share one artifact: `google-gemini-cli` (Google's Gemini CLI client)
79
+ and `google-antigravity` (the Antigravity hub client). The bundled
80
+ `streamGoogleGeminiCli` dispatches on `model.provider`, so the route is a data
81
+ difference — separate OAuth client, catalogs, hosts, scopes and credential
82
+ records — not a second code path.
83
+
84
+ - **Text streaming** — yes, including reasoning parts and usage.
85
+ - **Reasoning streaming** — yes, with each row's own effort ladder: the
86
+ budget-mode rows send `thinkingConfig.thinkingBudget`, the Gemini-3+ rows send
87
+ `thinkingLevel`. A row with `requiresEffort` refuses a turn that selects no
88
+ effort (`UNSUPPORTED_REASONING_EFFORT`), exactly as omp does.
89
+ - **Tool-call handoff** — yes, native to DSH's tool loop, like Devin: the
90
+ transport emits the call and finishes the turn `toolUse`. Antigravity's
91
+ default tool mode (`VALIDATED`) is sent on every request that declares tools.
92
+ - **Sign-in** — yes, with a real loopback listener on `127.0.0.1`:
93
+ `:8085/oauth2callback` for Gemini CLI and `:51121/oauth-callback` for
94
+ Antigravity, as the pinned rules declare. The browser redirect completes the
95
+ flow automatically; if the port is taken the listener falls back to an
96
+ ephemeral port and the authorize page names the port it actually bound. The
97
+ full address the browser landed on (or `code#state`) can also be pasted; a
98
+ pasted code without the state is refused, because that is exactly the shape a
99
+ forged callback would have. Anything the listener does not recognise — a
100
+ foreign `state`, an `error=`, a missing code — is answered `400` and dropped
101
+ without ending the attempt, so a stray request cannot kill the sign-in. The
102
+ listener closes on the matching callback, on an aborted attempt and **on a
103
+ timeout** (five minutes, `GoogleFlowOptions.waitMs` for tests): an expired wait
104
+ fails with `AUTH_FAILED` and commits nothing.
105
+ - **Refresh** — yes. The resolver refreshes once, under the credential store's
106
+ per-key lock, when `expires - 60 s <= now`, keeps the `projectId` and an
107
+ un-rotated `refresh_token`, and reports a dead sign-in as `REAUTH_REQUIRED`.
108
+ - **Credential record** — `llm-omp-transports/<route>` with
109
+ `{access, refresh, expires, projectId, email?}`. The adapter hands the
110
+ transport the structured JSON envelope (`token`, `projectId`, `refreshToken`,
111
+ `expiresAt`, `email`) that omp parses.
112
+ - **Project discovery** — sign-in finishes with the Cloud Code Assist project:
113
+ `loadCodeAssist` → (tier onboarding `onboardUser` + LRO poll, or the required
114
+ `GOOGLE_CLOUD_PROJECT` / `GOOGLE_CLOUD_PROJECT_ID` variable for a
115
+ `legacy-tier`/paid account). Antigravity additionally checks free-tier
116
+ eligibility and bounds onboarding at 30 s.
117
+ - **Models** — generated from the pinned `@oh-my-pi/pi-catalog@18.12.3`: 7 rows
118
+ for `google-gemini-cli`, 22 for `google-antigravity`, served without a network
119
+ call.
120
+ - **Routes** — both declared configurable, so the Models page has
121
+ `providers.google-gemini-cli` and `providers.google-antigravity` allow-lists.
122
+ - **Images** — not yet, same posture as the other routes: text-only input, image
123
+ blocks refused with `CONTENT_UNSUPPORTED`. omp's Antigravity image path
124
+ decodes through `Bun.Image`, which does not exist under Node, so that path is
125
+ dead here by construction; the projection never reaches it.
126
+
127
+ ## Factory Droid support status
128
+
129
+ - **Text streaming** — yes, including reasoning parts and usage.
130
+ - **Wires** — four protocols behind one proxy, selected by the model **id** inside the
131
+ artifact (Anthropic Messages for Claude rows, the Responses API for GPT/Grok, Chat
132
+ Completions for Kimi/GLM/DeepSeek, native generateContent for Gemini). The plugin never
133
+ chooses a backend, and rows carry no base URL: the transport derives the per-wire proxy
134
+ path and honours the account's residency host.
135
+ - **Sign-in** — WorkOS **device code**: the flow shows the verification page and the user
136
+ code, the human approves in the browser, and the poll completes the grant. No listener and
137
+ no paste; the attempt's own signal is the only cancellation channel.
138
+ - **Refresh** — yes: one refresh inside a 60 s window under the credential store's per-key
139
+ lock, keeping the account scope (`orgId`/`region`/`inferenceRegion`), which the adapter
140
+ forwards to the transport as `oauthIdentity` so a EU account gets its own host.
141
+ - **Catalog** — 62 rows from the KDL registry seed (`models.json` has no factory-droid key),
142
+ zero-cost Factory credits.
143
+ - **Build** — the graph needs three **entry-scoped build substitutions** (empty catalog data,
144
+ a lean provider registry, a lean env-key map) to fit its ceiling; see the limits below.
145
+
146
+ ## GitLab Duo support status
147
+
148
+ Two routes over GitLab's AI surface, both registered from one catalog pin.
149
+
150
+ **`gitlab-duo` (proxy).** The transport POSTs for a direct-access token, substitutes the
151
+ row's `upstreamModelId` and delegates to one of three generic wire transports
152
+ (Anthropic Messages, OpenAI Responses, Chat Completions) through GitLab's gateway.
153
+
154
+ - 16 catalog rows carrying the upstream id, the wire and the full compat object.
155
+ - **Sign-in** — OAuth code with PKCE, the loopback listener on `localhost:8080/callback`
156
+ **without port fallback** (the redirect is registered exactly) and a paste prompt as the
157
+ fallback path. `GITLAB_CLIENT_ID`/`GITLAB_REDIRECT_URI` support a custom OAuth app, and a
158
+ `GITLAB_TOKEN` personal access token works as the bearer.
159
+ - **Refresh** — one refresh inside a 60 s window; the artifact's direct-access token cache
160
+ is keyed on the GitLab token, so a rotated token misses it by construction.
161
+
162
+ **`gitlab-duo-agent` (Duo Workflow).** One WebSocket workflow per turn; GitLab's
163
+ server-side loop yields at every tool call, so DSH's native tool loop executes them and the
164
+ next turn replays the result through the goal transcript.
165
+
166
+ - 1 static row (`claude_sonnet_4_6_vertex`, 1M context); live model discovery is not
167
+ implemented, and the server may pin another model on its side.
168
+ - **Sign-in** — paste-only: the browser hands the code to VS Code, so the human pastes the
169
+ full `vscode://gitlab.gitlab-workflow/authentication?code=…&state=…` URL. The state is
170
+ mandatory (no listener means it is the only thing tying the paste to the attempt), and a
171
+ refresh echoes the `vscode` redirect.
172
+ - **Session state** — a fresh map per request (plan A6): each turn re-seeds a workflow and
173
+ replays the transcript instead of resuming another turn's socket. Correct but heavier;
174
+ sticky resume is a follow-up.
175
+
75
176
  ## Hard constraints
76
177
 
77
178
  - **Pinned, build-time-only omp.** `@oh-my-pi/pi-ai` and `@oh-my-pi/pi-catalog`
@@ -90,8 +191,9 @@ published package imports nothing from `@oh-my-pi/*` or `bun:*` at runtime.
90
191
  committed manifest is unchanged after a build, so an omp bump that changes
91
192
  the contract shows up as a reviewable manifest diff before it can reach a
92
193
  request.
93
- - **Generated catalog.** The Cursor model table is generated from the pinned
94
- catalog and is not hand-edited. An omp or catalog bump requires
194
+ - **Generated catalogs.** The model tables (`cursor`, `devin`,
195
+ `google-gemini-cli`, `google-antigravity`) are generated from the pinned
196
+ catalog and are not hand-edited. An omp or catalog bump requires
95
197
  `pnpm -C packages/llm-omp run generate:catalog`.
96
198
 
97
199
  ## Limits and risks
@@ -120,10 +222,18 @@ published package imports nothing from `@oh-my-pi/*` or `bun:*` at runtime.
120
222
  stops at the handoff; the result is only replayed on the follow-up request.
121
223
  Tool declarations travel as MCP definitions, and `toolHistory` is accepted
122
224
  but cannot be replayed (the active tool set is the projection).
123
- - **Only MCP calls are handed off.** Cursor-native exec frames (`read`, `shell`,
124
- `write`, `delete`, `grep`, `ls`, `diagnostics`, streamed edits) are answered
125
- by the transport with `Tool not available` and are **not** executed by DSH
126
- (live reachability unverified).
225
+ - **Colliding DSH tools are aliased, not dropped.** The transport keeps
226
+ Cursor's own `read`/`bash`/`write`/`delete`/`ls`/`grep`/`todo` names off the
227
+ MCP advertisement, so a DSH tool with one of those names is advertised as
228
+ `dsh_<name>`; the event stream restores the DSH name on the tool call, while
229
+ history replay keeps the advertised alias so the follow-up request stays
230
+ consistent. The seven `dsh_<native>` names are reserved: a DSH tool that
231
+ already carries one is refused with `TOOL_ALIAS_COLLISION`, which fails the
232
+ whole request and requires renaming the tool. Any other tool name travels
233
+ unchanged. Cursor-native exec frames (`read`, `shell`, `write`, `delete`,
234
+ `grep`, `ls`, `diagnostics`, streamed edits) are still answered by the
235
+ transport with `Tool not available` and are **not** executed by DSH (live
236
+ reachability unverified).
127
237
  - **Advisory request knobs are ignored.** Cursor's agent protocol has no field
128
238
  for an output cap, sampling temperature, stop sequences or an auxiliary-call
129
239
  purpose; DSH's `maxTokens`, `temperature`, `stop` and `purpose` never reach
@@ -147,6 +257,44 @@ published package imports nothing from `@oh-my-pi/*` or `bun:*` at runtime.
147
257
  code skips the state check (the page is the only place the state could
148
258
  travel).
149
259
 
260
+ - **The Factory Droid artifact strips the registry-derived env-key map.** Its graph would
261
+ otherwise pull omp's whole provider registry, so one entry-scoped substitution keeps the
262
+ pin's `getEnvApiKey` but not the `PROVIDER_REGISTRY` half — the computed Foundry/ADC/Bedrock
263
+ resolvers are gone. That path is unreachable for this route (every request carries the
264
+ stored WorkOS token), and a catalog-declared plain variable (`OPENAI_API_KEY`, …) still
265
+ resolves. The install id is per-process rather than persisted for the same reason: the
266
+ transport must not write to a user's home.
267
+ - **Unofficial Google clients.** The Google routes reuse the OAuth clients and
268
+ client identities the pinned omp rules capture — Gemini CLI
269
+ (`GeminiCLI/0.46.0/...` plus `Client-Metadata`) and Antigravity
270
+ (`antigravity/hub/<version> ...`). Same posture as the Cursor and Devin
271
+ routes: the MIT license covers the code, not the service, and a first live
272
+ turn rejected with `401`/`403` on a valid token stops the route until a
273
+ product decision (stop condition **S4**) — never a retry under another
274
+ identity.
275
+ - **Antigravity version lookup.** Before the first Antigravity request the
276
+ artifact reads the client version from the public update manifest (D11),
277
+ because the backend gates newer models on that version. A failed lookup is
278
+ silent and falls back to the pinned `2.19.1` for ten minutes; an explicit
279
+ `PI_AI_ANTIGRAVITY_VERSION` skips the lookup. That is the only outbound
280
+ request the routes make besides the vendor API itself.
281
+ - **Google sign-in waits at most five minutes.** The loopback listener is
282
+ bounded by a wait budget (five minutes by default): a browser that never
283
+ returns fails the attempt with `AUTH_FAILED`, closes the socket and commits
284
+ nothing. An aborted attempt is reported as a cancellation, not a failure.
285
+ When the configured port is taken, the fallback is an ephemeral port; a host
286
+ that can bind neither fails the sign-in rather than silently dropping the
287
+ browser half (pasting still works only while the listener is up).
288
+ - **Google attribution deviates on both routes.** The Cloud Code Assist wire
289
+ sets a vendor `user-agent` that the backend gates on, so DSH's attribution
290
+ `user-agent` is filled only where a request left the header absent — the same
291
+ fill-absent wrapper the Devin handshake uses.
292
+ - **Real Google endpoints unverified.** The wire suite drives the bundled
293
+ transport end to end over a stubbed `fetch` (URL, envelope, headers, SSE,
294
+ in-band errors, Antigravity failover and the version manifest), but it never
295
+ calls Google. A first live sign-in and turn is a manual smoke check, not a
296
+ claim of server acceptance.
297
+
150
298
  ## Develop and test
151
299
 
152
300
  ```sh
@@ -156,10 +304,10 @@ pnpm -C packages/llm-omp test
156
304
  pnpm -C packages/llm-omp run generate:catalog
157
305
  ```
158
306
 
159
- `build` bundles the pinned omp graphs from `scripts/omp-entry.ts` and
160
- `scripts/omp-entry-devin.ts` into `lib/omp/cursor.mjs` and `lib/omp/devin.mjs`
161
- and rewrites `scripts/omp-manifest.json`; run it before `test` after a pin or
162
- shim change. CI runs the same sequence and then fails if
307
+ `build` bundles the pinned omp graphs from `scripts/omp-entry.ts`,
308
+ `scripts/omp-entry-devin.ts` and `scripts/omp-entry-google.ts` into
309
+ `lib/omp/cursor.mjs`, `lib/omp/devin.mjs` and `lib/omp/google.mjs` and rewrites
310
+ `scripts/omp-manifest.json`; run it before `test` after a pin or shim change. CI runs the same sequence and then fails if
163
311
  the committed manifest drifted.
164
312
 
165
313
  The install proof lives at the repository root and needs `pnpm` and `dsh` on
@@ -172,7 +320,7 @@ node scripts/verify-install.mjs
172
320
  It packs both packages, installs the root tarball into a fresh DSH profile,
173
321
  and asserts that the composed profile carries both loader rows
174
322
  (`dsh-keys-manager` and `llm-omp-transports`). It does not exercise the
175
- plugin-manager UI or any Cursor network behavior.
323
+ plugin-manager UI or any provider network behavior.
176
324
 
177
325
  ## Release
178
326
 
@@ -190,3 +338,30 @@ plugin surface.
190
338
  ## License
191
339
 
192
340
  Released under the [MIT License](../../LICENSE).
341
+
342
+ - **The GitLab Duo proxy is the largest artifact.** It bundles three production wire
343
+ transports plus GitLab's gateway shim, which is why its ceiling is the package's highest;
344
+ the same entry-scoped substitutions keep the model catalog and the builtin registry out.
345
+ - **Duo's Anthropic inner wire is not proven end-to-end in the suite.** The transport retries
346
+ a refused turn on that wire, so the test bounds the turn and asserts the request; the SSE
347
+ decode itself is exercised through the OpenAI wires and by the sibling routes' suites.
348
+ - **`gitlab-duo-agent`'s checkpoint loop is not proven in-suite.** The suite proves the REST
349
+ bootstrap, the bearer, and that no socket opens before a workflow exists, plus the adapter's
350
+ tool handoff contract; the fake-socket round trip (start frame, checkpoint deltas,
351
+ `runMCPTool` reseed, stall restart) needs a scripted nine-call bootstrap and a checkpoint
352
+ corpus, and is the recorded follow-up. The first live turn is a manual smoke item.
353
+
354
+ ## Deferred
355
+
356
+ `factory-droid` **ships** in this component: the 17 MB graph that kept it out of the earlier
357
+ plan (issue `I-000253`) is built through the accepted, drift-gated build substitutions, so the
358
+ issue is resolved by that work rather than bypassed. What remains deferred is narrower:
359
+
360
+ - **Sticky GitLab Duo workflow resume.** Each turn re-seeds a workflow and replays the goal
361
+ transcript instead of resuming the previous socket; correct but heavier, and the in-memory
362
+ session map that would resume it is a follow-up.
363
+ - **The live transcript proof for `gitlab-duo-agent`.** The fake-socket checkpoint round trip
364
+ (start frame, checkpoint deltas, `runMCPTool` reseed, stall restart) needs a scripted REST
365
+ bootstrap plus a checkpoint corpus, and the first live turn is a manual smoke item.
366
+ - **The Duo Anthropic inner wire's SSE decode** — the wire retries a refused turn, so its
367
+ suite bounds the turn and asserts the request instead of the stream.
package/lib/adapter.d.ts CHANGED
@@ -20,11 +20,21 @@ import { LlmAdapter } from '@deepseek-ai/dsh-llm';
20
20
  import type { GenerateOptions, LlmModelInfo, LlmProviderInfo, LlmResolvedModelInfo, StreamChunk } from '@deepseek-ai/dsh-llm';
21
21
  import type { RouteProfile } from './projection.js';
22
22
  import type { OmpAssistantMessageEvent, OmpContext } from './omp.js';
23
- import type { CursorModelRow, DevinModelRow, OmpCursorModel, OmpCursorOptions, OmpDevinModel, OmpDevinOptions } from './omp.js';
23
+ import type { CursorModelRow, DevinModelRow, FactoryDroidModelRow, GitLabDuoAgentModelRow, GitLabDuoModelRow, GoogleModelRow, OmpCursorModel, OmpCursorOptions, OmpDevinModel, OmpDevinOptions, OmpFactoryDroidModel, OmpFactoryDroidOptions, OmpGitLabDuoAgentModel, OmpGitLabDuoModel, OmpGitLabDuoOptions, OmpGitLabDuoWorkflowOptions, OmpGoogleModel, OmpGoogleOptions } from './omp.js';
24
24
  /** The Cursor provider route this adapter owns. */
25
25
  export declare const CURSOR_ROUTE = "cursor";
26
26
  /** The Devin provider route this adapter owns. */
27
27
  export declare const DEVIN_ROUTE = "devin";
28
+ /** The Gemini CLI provider route this adapter owns. */
29
+ export declare const GOOGLE_GEMINI_CLI_ROUTE = "google-gemini-cli";
30
+ /** The Antigravity provider route this adapter owns. */
31
+ export declare const GOOGLE_ANTIGRAVITY_ROUTE = "google-antigravity";
32
+ /** The Factory Droid provider route this adapter owns. */
33
+ export declare const FACTORY_DROID_ROUTE = "factory-droid";
34
+ /** The GitLab Duo proxy provider route this adapter owns. */
35
+ export declare const GITLAB_DUO_ROUTE = "gitlab-duo";
36
+ /** The GitLab Duo agent (Duo Workflow) provider route this adapter owns. */
37
+ export declare const GITLAB_DUO_AGENT_ROUTE = "gitlab-duo-agent";
28
38
  /** Machine code for a model id the generated catalog does not contain. */
29
39
  export declare const UNKNOWN_MODEL = "UNKNOWN_MODEL";
30
40
  /** Machine code for a provider route this adapter does not serve. */
@@ -54,7 +64,7 @@ export interface ProjectedTransportRequest<Model, Options> {
54
64
  /** What differs between the routes: identity, catalog, projection and credential record. */
55
65
  export interface TransportRoute<Row extends TransportRow, Model, Options extends TransportOptions> {
56
66
  /** Provider id; also the registered route set the projection's profile accepts. */
57
- readonly id: 'cursor' | 'devin';
67
+ readonly id: 'cursor' | 'devin' | 'factory-droid' | 'gitlab-duo' | 'gitlab-duo-agent' | 'google-gemini-cli' | 'google-antigravity';
58
68
  /** Models-page / provider-info display name. */
59
69
  readonly displayName: string;
60
70
  /** The `ctx.credentials` record this route reads. */
@@ -77,6 +87,55 @@ export interface TransportRoute<Row extends TransportRow, Model, Options extends
77
87
  export declare const CURSOR_TRANSPORT_ROUTE: TransportRoute<CursorModelRow, OmpCursorModel, OmpCursorOptions>;
78
88
  /** The Devin route's facts. */
79
89
  export declare const DEVIN_TRANSPORT_ROUTE: TransportRoute<DevinModelRow, OmpDevinModel, OmpDevinOptions>;
90
+ /**
91
+ * The two Google routes' facts.
92
+ *
93
+ * One artifact serves both: `streamGoogleGeminiCli` dispatches on
94
+ * `model.provider`, so only the profile, the catalog and the credential record
95
+ * differ. The credential key is the route id under the package namespace
96
+ * (`llm-omp-transports/<route>`), as it is for cursor and devin; the Google
97
+ * resolver reads and writes those records.
98
+ */
99
+ export declare const GOOGLE_GEMINI_CLI_TRANSPORT_ROUTE: TransportRoute<GoogleModelRow, OmpGoogleModel, OmpGoogleOptions>;
100
+ /** The Antigravity route's facts: the same provider over its own catalog and endpoint family. */
101
+ export declare const GOOGLE_ANTIGRAVITY_TRANSPORT_ROUTE: TransportRoute<GoogleModelRow, OmpGoogleModel, OmpGoogleOptions>;
102
+ /**
103
+ * The Factory Droid route's credential record.
104
+ *
105
+ * The WorkOS device-code resolver that reads and writes it lands with the auth
106
+ * task; the key is declared here because the adapter is what names it in
107
+ * `assertUsableApiKey` refusals, and both sides must agree on the string.
108
+ */
109
+ export declare const FACTORY_DROID_CREDENTIAL_KEY: "llm-omp-transports/factory-droid";
110
+ /**
111
+ * The Factory Droid route's facts.
112
+ *
113
+ * The rows come from the KDL registry seed (the pin's `models.json` has no
114
+ * factory-droid rows), and the transport picks one of four wire protocols from
115
+ * the model id inside the artifact, so the route record carries no wire field.
116
+ */
117
+ export declare const FACTORY_DROID_TRANSPORT_ROUTE: TransportRoute<FactoryDroidModelRow, OmpFactoryDroidModel, OmpFactoryDroidOptions>;
118
+ /** The GitLab Duo proxy route's credential record. */
119
+ export declare const GITLAB_DUO_CREDENTIAL_KEY: "llm-omp-transports/gitlab-duo";
120
+ /**
121
+ * The GitLab Duo proxy route's facts.
122
+ *
123
+ * The rows come from the pinned catalog's proxy table; each carries the upstream
124
+ * id and the wire the gateway routes it to, so the route record needs no wire
125
+ * field — the transport resolves both from the row.
126
+ */
127
+ export declare const GITLAB_DUO_TRANSPORT_ROUTE: TransportRoute<GitLabDuoModelRow, OmpGitLabDuoModel, OmpGitLabDuoOptions>;
128
+ /** The GitLab Duo agent route's credential record. */
129
+ export declare const GITLAB_DUO_AGENT_CREDENTIAL_KEY: "llm-omp-transports/gitlab-duo-agent";
130
+ /**
131
+ * The GitLab Duo agent route's facts.
132
+ *
133
+ * One static row: the provider's live model discovery is a non-goal for this
134
+ * slice, so the picker offers what the pinned catalog declares. The transport
135
+ * runs GitLab's server-side workflow loop over a WebSocket; tool execution stays
136
+ * on DSH's side, so the route record carries no executor or wire-model field.
137
+ */
138
+ export declare const GITLAB_DUO_AGENT_TRANSPORT_ROUTE: TransportRoute<GitLabDuoAgentModelRow, OmpGitLabDuoAgentModel, OmpGitLabDuoWorkflowOptions>;
80
139
  /** What an adapter needs from its host plugin. */
81
140
  export interface OmpAdapterOptions<Model, Options extends TransportOptions> {
82
141
  /**
@@ -102,6 +161,18 @@ export interface OmpAdapterOptions<Model, Options extends TransportOptions> {
102
161
  * a non-empty list narrows the advertised models and the accepted ids.
103
162
  */
104
163
  models?: () => readonly string[] | undefined;
164
+ /**
165
+ * Extra transport options resolved per request, after the credential.
166
+ *
167
+ * @remarks
168
+ * The Factory Droid route stores its account scope (`orgId`/`region`/
169
+ * `inferenceRegion`) with the grant, and the transport needs it as
170
+ * `options.oauthIdentity` to pick the EU host. The base class merges whatever
171
+ * this returns into the transport options, so a route that has no such data
172
+ * (cursor, devin, google, gitlab) simply omits it — the ignored-field contract
173
+ * the design chose over a route-specific adapter subclass.
174
+ */
175
+ identity?: () => Promise<Readonly<Record<string, unknown>> | undefined>;
105
176
  }
106
177
  /** The adapter configuration for one concrete route. */
107
178
  interface OmpRouteAdapterConfig<Row extends TransportRow, Model, Options extends TransportOptions> extends OmpAdapterOptions<Model, Options> {
@@ -124,6 +195,17 @@ declare abstract class OmpTransportAdapter<Row extends TransportRow, Model, Opti
124
195
  private allowed;
125
196
  /** Resolve one catalog row, refusing ids the configured allow-list excludes. */
126
197
  private rowFor;
198
+ /**
199
+ * Describe this adapter's own route, echoing the id it was asked about.
200
+ *
201
+ * @remarks
202
+ * The id is echoed back (`id: provider`) so a caller sees the route it named,
203
+ * but only for a route this adapter owns: a foreign id raises
204
+ * {@link UNKNOWN_PROVIDER} instead of answering another provider's id with
205
+ * this route's display name. That guard is a deliberate tightening over the
206
+ * Cursor adapter's first behaviour (it once returned a display name for any
207
+ * id); it applies to every route and is pinned in both directions.
208
+ */
127
209
  providerInfo(provider: string): LlmProviderInfo;
128
210
  listModels(provider: string): Promise<readonly LlmModelInfo[]>;
129
211
  resolveModel(provider: string, model: string): Promise<LlmResolvedModelInfo>;
@@ -146,4 +228,32 @@ export type OmpDevinAdapterConfig = OmpAdapterOptions<OmpDevinModel, OmpDevinOpt
146
228
  export declare class OmpDevinAdapter extends OmpTransportAdapter<DevinModelRow, OmpDevinModel, OmpDevinOptions> {
147
229
  constructor(options: OmpDevinAdapterConfig);
148
230
  }
231
+ /** The DSH llm adapter configuration for a Google route. */
232
+ export type OmpGoogleAdapterConfig = OmpAdapterOptions<OmpGoogleModel, OmpGoogleOptions>;
233
+ /** The Gemini CLI adapter: the bundled `streamGoogleGeminiCli` over the Gemini CLI catalog. */
234
+ export declare class OmpGoogleGeminiCliAdapter extends OmpTransportAdapter<GoogleModelRow, OmpGoogleModel, OmpGoogleOptions> {
235
+ constructor(options: OmpGoogleAdapterConfig);
236
+ }
237
+ /** The Antigravity adapter: the same artifact and transport over the Antigravity catalog. */
238
+ export declare class OmpGoogleAntigravityAdapter extends OmpTransportAdapter<GoogleModelRow, OmpGoogleModel, OmpGoogleOptions> {
239
+ constructor(options: OmpGoogleAdapterConfig);
240
+ }
241
+ /** The DSH llm adapter configuration for the Factory Droid route. */
242
+ export type OmpFactoryDroidAdapterConfig = OmpAdapterOptions<OmpFactoryDroidModel, OmpFactoryDroidOptions>;
243
+ /** The Factory Droid adapter: the bundled `streamFactoryDroid` over the registry seed catalog. */
244
+ export declare class OmpFactoryDroidAdapter extends OmpTransportAdapter<FactoryDroidModelRow, OmpFactoryDroidModel, OmpFactoryDroidOptions> {
245
+ constructor(options: OmpFactoryDroidAdapterConfig);
246
+ }
247
+ /** The DSH llm adapter configuration for the GitLab Duo agent route. */
248
+ export type OmpGitLabDuoAgentAdapterConfig = OmpAdapterOptions<OmpGitLabDuoAgentModel, OmpGitLabDuoWorkflowOptions>;
249
+ /** The GitLab Duo agent adapter: the bundled workflow transport over its one-row catalog. */
250
+ export declare class OmpGitLabDuoAgentAdapter extends OmpTransportAdapter<GitLabDuoAgentModelRow, OmpGitLabDuoAgentModel, OmpGitLabDuoWorkflowOptions> {
251
+ constructor(options: OmpGitLabDuoAgentAdapterConfig);
252
+ }
253
+ /** The DSH llm adapter configuration for the GitLab Duo proxy route. */
254
+ export type OmpGitLabDuoAdapterConfig = OmpAdapterOptions<OmpGitLabDuoModel, OmpGitLabDuoOptions>;
255
+ /** The GitLab Duo adapter: the bundled proxy transport over its 16-row catalog. */
256
+ export declare class OmpGitLabDuoAdapter extends OmpTransportAdapter<GitLabDuoModelRow, OmpGitLabDuoModel, OmpGitLabDuoOptions> {
257
+ constructor(options: OmpGitLabDuoAdapterConfig);
258
+ }
149
259
  export {};
package/lib/adapter.js CHANGED
@@ -19,13 +19,28 @@
19
19
  import { LlmAdapter, LlmError, ReasoningEffortId, assertUsableApiKey } from '@deepseek-ai/dsh-llm';
20
20
  import { CURSOR_MODELS } from './catalog/cursor.js';
21
21
  import { DEVIN_MODELS } from './catalog/devin.js';
22
+ import { FACTORY_DROID_MODELS } from './catalog/factory-droid.js';
23
+ import { GITLAB_DUO_MODELS } from './catalog/gitlab-duo.js';
24
+ import { GITLAB_DUO_AGENT_MODELS } from './catalog/gitlab-duo-agent.js';
25
+ import { GOOGLE_ANTIGRAVITY_MODELS } from './catalog/google-antigravity.js';
26
+ import { GOOGLE_GEMINI_CLI_MODELS } from './catalog/google-gemini-cli.js';
22
27
  import { CURSOR_CREDENTIAL_KEY } from './cursor/credentials.js';
23
28
  import { DEVIN_CREDENTIAL_KEY } from './devin/credentials.js';
24
- import { CURSOR_PROFILE, DEVIN_PROFILE, abortedFinish, projectDevinRequest, projectEvents, projectRequest } from './projection.js';
29
+ import { CURSOR_PROFILE, DEVIN_PROFILE, FACTORY_DROID_PROFILE, GITLAB_DUO_AGENT_PROFILE, GITLAB_DUO_PROFILE, GOOGLE_ANTIGRAVITY_PROFILE, GOOGLE_GEMINI_CLI_PROFILE, abortedFinish, projectDevinRequest, projectEvents, projectFactoryDroidRequest, projectGitLabDuoAgentRequest, projectGitLabDuoRequest, projectGoogleRequest, projectRequest, } from './projection.js';
25
30
  /** The Cursor provider route this adapter owns. */
26
31
  export const CURSOR_ROUTE = 'cursor';
27
32
  /** The Devin provider route this adapter owns. */
28
33
  export const DEVIN_ROUTE = 'devin';
34
+ /** The Gemini CLI provider route this adapter owns. */
35
+ export const GOOGLE_GEMINI_CLI_ROUTE = 'google-gemini-cli';
36
+ /** The Antigravity provider route this adapter owns. */
37
+ export const GOOGLE_ANTIGRAVITY_ROUTE = 'google-antigravity';
38
+ /** The Factory Droid provider route this adapter owns. */
39
+ export const FACTORY_DROID_ROUTE = 'factory-droid';
40
+ /** The GitLab Duo proxy provider route this adapter owns. */
41
+ export const GITLAB_DUO_ROUTE = 'gitlab-duo';
42
+ /** The GitLab Duo agent (Duo Workflow) provider route this adapter owns. */
43
+ export const GITLAB_DUO_AGENT_ROUTE = 'gitlab-duo-agent';
29
44
  /** Machine code for a model id the generated catalog does not contain. */
30
45
  export const UNKNOWN_MODEL = 'UNKNOWN_MODEL';
31
46
  /** Machine code for a provider route this adapter does not serve. */
@@ -68,6 +83,92 @@ export const DEVIN_TRANSPORT_ROUTE = {
68
83
  models: DEVIN_MODELS,
69
84
  project: projectDevinRequest,
70
85
  };
86
+ /**
87
+ * The two Google routes' facts.
88
+ *
89
+ * One artifact serves both: `streamGoogleGeminiCli` dispatches on
90
+ * `model.provider`, so only the profile, the catalog and the credential record
91
+ * differ. The credential key is the route id under the package namespace
92
+ * (`llm-omp-transports/<route>`), as it is for cursor and devin; the Google
93
+ * resolver reads and writes those records.
94
+ */
95
+ export const GOOGLE_GEMINI_CLI_TRANSPORT_ROUTE = {
96
+ id: GOOGLE_GEMINI_CLI_ROUTE,
97
+ displayName: 'Google Gemini CLI',
98
+ credentialKey: `llm-omp-transports/${GOOGLE_GEMINI_CLI_ROUTE}`,
99
+ profile: GOOGLE_GEMINI_CLI_PROFILE,
100
+ models: GOOGLE_GEMINI_CLI_MODELS,
101
+ project: (row, options) => projectGoogleRequest(row, GOOGLE_GEMINI_CLI_PROFILE, options),
102
+ efforts: row => row.thinking?.efforts,
103
+ };
104
+ /** The Antigravity route's facts: the same provider over its own catalog and endpoint family. */
105
+ export const GOOGLE_ANTIGRAVITY_TRANSPORT_ROUTE = {
106
+ id: GOOGLE_ANTIGRAVITY_ROUTE,
107
+ displayName: 'Google Antigravity',
108
+ credentialKey: `llm-omp-transports/${GOOGLE_ANTIGRAVITY_ROUTE}`,
109
+ profile: GOOGLE_ANTIGRAVITY_PROFILE,
110
+ models: GOOGLE_ANTIGRAVITY_MODELS,
111
+ project: (row, options) => projectGoogleRequest(row, GOOGLE_ANTIGRAVITY_PROFILE, options),
112
+ efforts: row => row.thinking?.efforts,
113
+ };
114
+ /**
115
+ * The Factory Droid route's credential record.
116
+ *
117
+ * The WorkOS device-code resolver that reads and writes it lands with the auth
118
+ * task; the key is declared here because the adapter is what names it in
119
+ * `assertUsableApiKey` refusals, and both sides must agree on the string.
120
+ */
121
+ export const FACTORY_DROID_CREDENTIAL_KEY = `llm-omp-transports/${FACTORY_DROID_ROUTE}`;
122
+ /**
123
+ * The Factory Droid route's facts.
124
+ *
125
+ * The rows come from the KDL registry seed (the pin's `models.json` has no
126
+ * factory-droid rows), and the transport picks one of four wire protocols from
127
+ * the model id inside the artifact, so the route record carries no wire field.
128
+ */
129
+ export const FACTORY_DROID_TRANSPORT_ROUTE = {
130
+ id: FACTORY_DROID_ROUTE,
131
+ displayName: 'Factory Droid',
132
+ credentialKey: FACTORY_DROID_CREDENTIAL_KEY,
133
+ profile: FACTORY_DROID_PROFILE,
134
+ models: FACTORY_DROID_MODELS,
135
+ project: (row, options) => projectFactoryDroidRequest(row, options),
136
+ };
137
+ /** The GitLab Duo proxy route's credential record. */
138
+ export const GITLAB_DUO_CREDENTIAL_KEY = `llm-omp-transports/${GITLAB_DUO_ROUTE}`;
139
+ /**
140
+ * The GitLab Duo proxy route's facts.
141
+ *
142
+ * The rows come from the pinned catalog's proxy table; each carries the upstream
143
+ * id and the wire the gateway routes it to, so the route record needs no wire
144
+ * field — the transport resolves both from the row.
145
+ */
146
+ export const GITLAB_DUO_TRANSPORT_ROUTE = {
147
+ id: GITLAB_DUO_ROUTE,
148
+ displayName: 'GitLab Duo',
149
+ credentialKey: GITLAB_DUO_CREDENTIAL_KEY,
150
+ profile: GITLAB_DUO_PROFILE,
151
+ models: GITLAB_DUO_MODELS,
152
+ project: (row, options) => projectGitLabDuoRequest(row, options),
153
+ };
154
+ /** The GitLab Duo agent route's credential record. */
155
+ export const GITLAB_DUO_AGENT_CREDENTIAL_KEY = `llm-omp-transports/${GITLAB_DUO_AGENT_ROUTE}`;
156
+ /**
157
+ * The GitLab Duo agent route's facts.
158
+ *
159
+ * One static row: the provider's live model discovery is a non-goal for this
160
+ * slice, so the picker offers what the pinned catalog declares. The transport
161
+ * runs GitLab's server-side workflow loop over a WebSocket; tool execution stays
162
+ * on DSH's side, so the route record carries no executor or wire-model field.
163
+ */
164
+ export const GITLAB_DUO_AGENT_TRANSPORT_ROUTE = {
165
+ id: GITLAB_DUO_AGENT_ROUTE,
166
+ displayName: 'GitLab Duo Agent',
167
+ credentialKey: GITLAB_DUO_AGENT_CREDENTIAL_KEY,
168
+ profile: GITLAB_DUO_AGENT_PROFILE,
169
+ models: GITLAB_DUO_AGENT_MODELS,
170
+ project: (row, options) => projectGitLabDuoAgentRequest(row, options),
171
+ };
71
172
  /**
72
173
  * The DSH llm adapter for one omp-backed route.
73
174
  *
@@ -99,6 +200,17 @@ class OmpTransportAdapter extends LlmAdapter {
99
200
  }
100
201
  return row;
101
202
  }
203
+ /**
204
+ * Describe this adapter's own route, echoing the id it was asked about.
205
+ *
206
+ * @remarks
207
+ * The id is echoed back (`id: provider`) so a caller sees the route it named,
208
+ * but only for a route this adapter owns: a foreign id raises
209
+ * {@link UNKNOWN_PROVIDER} instead of answering another provider's id with
210
+ * this route's display name. That guard is a deliberate tightening over the
211
+ * Cursor adapter's first behaviour (it once returned a display name for any
212
+ * id); it applies to every route and is pinned in both directions.
213
+ */
102
214
  providerInfo(provider) {
103
215
  this.assertRoute(provider);
104
216
  return { id: provider, name: this.config.route.displayName };
@@ -160,7 +272,15 @@ class OmpTransportAdapter extends LlmAdapter {
160
272
  yield abortedFinish();
161
273
  return;
162
274
  }
163
- const transportOptions = { ...request.options, apiKey: accessKey };
275
+ // Route-specific extras (Factory Droid's account scope) merge beside the
276
+ // credential: they are read from the same record the token came from, so the
277
+ // transport never sees a half-known identity.
278
+ const extras = await this.config.identity?.();
279
+ const transportOptions = {
280
+ ...request.options,
281
+ apiKey: accessKey,
282
+ ...(extras === undefined ? {} : extras),
283
+ };
164
284
  yield* projectEvents(this.config.transport(request.model, request.context, transportOptions), options.signal, this.config.route.profile);
165
285
  }
166
286
  /** Build the seam's exact-model metadata from one catalog row. */
@@ -207,4 +327,34 @@ export class OmpDevinAdapter extends OmpTransportAdapter {
207
327
  super({ route: DEVIN_TRANSPORT_ROUTE, ...options });
208
328
  }
209
329
  }
330
+ /** The Gemini CLI adapter: the bundled `streamGoogleGeminiCli` over the Gemini CLI catalog. */
331
+ export class OmpGoogleGeminiCliAdapter extends OmpTransportAdapter {
332
+ constructor(options) {
333
+ super({ route: GOOGLE_GEMINI_CLI_TRANSPORT_ROUTE, ...options });
334
+ }
335
+ }
336
+ /** The Antigravity adapter: the same artifact and transport over the Antigravity catalog. */
337
+ export class OmpGoogleAntigravityAdapter extends OmpTransportAdapter {
338
+ constructor(options) {
339
+ super({ route: GOOGLE_ANTIGRAVITY_TRANSPORT_ROUTE, ...options });
340
+ }
341
+ }
342
+ /** The Factory Droid adapter: the bundled `streamFactoryDroid` over the registry seed catalog. */
343
+ export class OmpFactoryDroidAdapter extends OmpTransportAdapter {
344
+ constructor(options) {
345
+ super({ route: FACTORY_DROID_TRANSPORT_ROUTE, ...options });
346
+ }
347
+ }
348
+ /** The GitLab Duo agent adapter: the bundled workflow transport over its one-row catalog. */
349
+ export class OmpGitLabDuoAgentAdapter extends OmpTransportAdapter {
350
+ constructor(options) {
351
+ super({ route: GITLAB_DUO_AGENT_TRANSPORT_ROUTE, ...options });
352
+ }
353
+ }
354
+ /** The GitLab Duo adapter: the bundled proxy transport over its 16-row catalog. */
355
+ export class OmpGitLabDuoAdapter extends OmpTransportAdapter {
356
+ constructor(options) {
357
+ super({ route: GITLAB_DUO_TRANSPORT_ROUTE, ...options });
358
+ }
359
+ }
210
360
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}