@vibesdotdev/integrations-gemini 0.0.0-stage → 1.0.0-rc.3
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/LICENSE +126 -0
- package/README.md +35 -2
- package/dist/ai/client.consumer.d.ts +9 -0
- package/dist/ai/client.consumer.d.ts.map +1 -0
- package/dist/ai/client.consumer.js +36 -0
- package/dist/ai/client.consumer.js.map +1 -0
- package/dist/ai/client.d.ts +10 -0
- package/dist/ai/client.d.ts.map +1 -0
- package/dist/ai/client.js +16 -0
- package/dist/ai/client.js.map +1 -0
- package/dist/ai/cloud.plugin.d.ts +6 -0
- package/dist/ai/cloud.plugin.d.ts.map +1 -0
- package/dist/ai/cloud.plugin.js +110 -0
- package/dist/ai/cloud.plugin.js.map +1 -0
- package/dist/ai/failure.d.ts +26 -0
- package/dist/ai/failure.d.ts.map +1 -0
- package/dist/ai/failure.js +31 -0
- package/dist/ai/failure.js.map +1 -0
- package/dist/ai/index.d.ts +6 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +5 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/metadata/provider-models/gemini/gemini-gemini-2-5-flash.json +18 -0
- package/dist/ai/metadata/provider-models/gemini/gemini-gemini-2-5-pro.json +18 -0
- package/dist/ai/metadata/provider-models/gemini/gemini-gemini-3-1-pro-preview.json +18 -0
- package/dist/ai/metadata/provider-models/gemini/gemini-gemini-3-5-flash-lite.json +18 -0
- package/dist/ai/metadata/provider-models/gemini/gemini-gemini-3-6-flash.json +18 -0
- package/dist/ai/metadata/provider-models/gemini/gemini-gemini-3-8-flash.json +18 -0
- package/dist/ai/metadata/provider-models/gemini/gemini-gemini-3-8-pro.json +18 -0
- package/dist/ai/metadata/provider-models/gemini/gemini-gemini-3-flash-preview.json +18 -0
- package/dist/ai/metadata/providers/gemini.json +8 -0
- package/dist/ai/provider.consumer.plugin.d.ts +5 -0
- package/dist/ai/provider.consumer.plugin.d.ts.map +1 -0
- package/dist/ai/provider.consumer.plugin.js +60 -0
- package/dist/ai/provider.consumer.plugin.js.map +1 -0
- package/dist/ai/provider.plugin.d.ts +2 -0
- package/dist/ai/provider.plugin.d.ts.map +1 -0
- package/dist/ai/provider.plugin.js +2 -0
- package/dist/ai/provider.plugin.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/gemini/config/config.gemini.descriptor.d.ts +4206 -0
- package/dist/ai/providers/cloud/frontier/gemini/config/config.gemini.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/gemini/config/config.gemini.descriptor.js +16 -0
- package/dist/ai/providers/cloud/frontier/gemini/config/config.gemini.descriptor.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/gemini/config/schemas/index.d.ts +27 -0
- package/dist/ai/providers/cloud/frontier/gemini/config/schemas/index.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/gemini/config/schemas/index.js +21 -0
- package/dist/ai/providers/cloud/frontier/gemini/config/schemas/index.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/gemini/index.d.ts +5 -0
- package/dist/ai/providers/cloud/frontier/gemini/index.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/gemini/index.js +4 -0
- package/dist/ai/providers/cloud/frontier/gemini/index.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/gemini/provider.gemini.descriptor.d.ts +183 -0
- package/dist/ai/providers/cloud/frontier/gemini/provider.gemini.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/gemini/provider.gemini.descriptor.js +86 -0
- package/dist/ai/providers/cloud/frontier/gemini/provider.gemini.descriptor.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-failure.d.ts +140 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-failure.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-failure.js +167 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-failure.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.descriptor.d.ts +25 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.descriptor.js +14 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.descriptor.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.impl.d.ts +33 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.impl.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.impl.js +145 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.impl.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.descriptor.d.ts +13 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.descriptor.js +11 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.descriptor.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.impl.consumer.d.ts +33 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.impl.consumer.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.impl.consumer.js +101 -0
- package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.impl.consumer.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/client.d.ts +63 -0
- package/dist/ai/providers/gemini/antigravity-server/client.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/client.js +177 -0
- package/dist/ai/providers/gemini/antigravity-server/client.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/connection.d.ts +141 -0
- package/dist/ai/providers/gemini/antigravity-server/connection.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/connection.js +469 -0
- package/dist/ai/providers/gemini/antigravity-server/connection.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/failure-chunk.d.ts +10 -0
- package/dist/ai/providers/gemini/antigravity-server/failure-chunk.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/failure-chunk.js +29 -0
- package/dist/ai/providers/gemini/antigravity-server/failure-chunk.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/index.d.ts +10 -0
- package/dist/ai/providers/gemini/antigravity-server/index.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/index.js +10 -0
- package/dist/ai/providers/gemini/antigravity-server/index.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/protocol.d.ts +114 -0
- package/dist/ai/providers/gemini/antigravity-server/protocol.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/protocol.js +112 -0
- package/dist/ai/providers/gemini/antigravity-server/protocol.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/runtime-execution.d.ts +41 -0
- package/dist/ai/providers/gemini/antigravity-server/runtime-execution.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/runtime-execution.js +145 -0
- package/dist/ai/providers/gemini/antigravity-server/runtime-execution.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/session-records.d.ts +64 -0
- package/dist/ai/providers/gemini/antigravity-server/session-records.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/session-records.js +39 -0
- package/dist/ai/providers/gemini/antigravity-server/session-records.js.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/session.d.ts +31 -0
- package/dist/ai/providers/gemini/antigravity-server/session.d.ts.map +1 -0
- package/dist/ai/providers/gemini/antigravity-server/session.js +153 -0
- package/dist/ai/providers/gemini/antigravity-server/session.js.map +1 -0
- package/dist/ai/providers/gemini/cli-probes.d.ts +75 -0
- package/dist/ai/providers/gemini/cli-probes.d.ts.map +1 -0
- package/dist/ai/providers/gemini/cli-probes.js +121 -0
- package/dist/ai/providers/gemini/cli-probes.js.map +1 -0
- package/dist/ai/providers/gemini/detection/index.d.ts +2 -0
- package/dist/ai/providers/gemini/detection/index.d.ts.map +1 -0
- package/dist/ai/providers/gemini/detection/index.js +2 -0
- package/dist/ai/providers/gemini/detection/index.js.map +1 -0
- package/dist/ai/providers/gemini/detection/system.d.ts +25 -0
- package/dist/ai/providers/gemini/detection/system.d.ts.map +1 -0
- package/dist/ai/providers/gemini/detection/system.js +81 -0
- package/dist/ai/providers/gemini/detection/system.js.map +1 -0
- package/dist/ai/providers/gemini/docs/ai.providers.gemini.docs.descriptor.d.ts +4 -0
- package/dist/ai/providers/gemini/docs/ai.providers.gemini.docs.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/gemini/docs/ai.providers.gemini.docs.descriptor.js +55 -0
- package/dist/ai/providers/gemini/docs/ai.providers.gemini.docs.descriptor.js.map +1 -0
- package/dist/ai/providers/gemini/gemini-cli-status.d.ts +42 -0
- package/dist/ai/providers/gemini/gemini-cli-status.d.ts.map +1 -0
- package/dist/ai/providers/gemini/gemini-cli-status.js +134 -0
- package/dist/ai/providers/gemini/gemini-cli-status.js.map +1 -0
- package/dist/ai/providers/gemini/gemini.provider.impl.consumer.d.ts +9 -0
- package/dist/ai/providers/gemini/gemini.provider.impl.consumer.d.ts.map +1 -0
- package/dist/ai/providers/gemini/gemini.provider.impl.consumer.js +60 -0
- package/dist/ai/providers/gemini/gemini.provider.impl.consumer.js.map +1 -0
- package/dist/ai/providers/gemini/gemini.provider.impl.d.ts +22 -0
- package/dist/ai/providers/gemini/gemini.provider.impl.d.ts.map +1 -0
- package/dist/ai/providers/gemini/gemini.provider.impl.js +143 -0
- package/dist/ai/providers/gemini/gemini.provider.impl.js.map +1 -0
- package/dist/ai/providers/gemini/index.d.ts +9 -0
- package/dist/ai/providers/gemini/index.d.ts.map +1 -0
- package/dist/ai/providers/gemini/index.js +7 -0
- package/dist/ai/providers/gemini/index.js.map +1 -0
- package/dist/ai/providers/gemini/recommendations.d.ts +24 -0
- package/dist/ai/providers/gemini/recommendations.d.ts.map +1 -0
- package/dist/ai/providers/gemini/recommendations.js +36 -0
- package/dist/ai/providers/gemini/recommendations.js.map +1 -0
- package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.descriptor.d.ts +34 -0
- package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.descriptor.d.ts.map +1 -0
- package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.descriptor.js +23 -0
- package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.descriptor.js.map +1 -0
- package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.impl.d.ts +46 -0
- package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.impl.d.ts.map +1 -0
- package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.impl.js +165 -0
- package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.impl.js.map +1 -0
- package/dist/ai/specs/cli-response.d.ts +12 -0
- package/dist/ai/specs/cli-response.d.ts.map +1 -0
- package/dist/ai/specs/cli-response.js +36 -0
- package/dist/ai/specs/cli-response.js.map +1 -0
- package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.descriptor.d.ts +32 -0
- package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.descriptor.d.ts.map +1 -0
- package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.descriptor.js +21 -0
- package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.descriptor.js.map +1 -0
- package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.impl.d.ts +33 -0
- package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.impl.d.ts.map +1 -0
- package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.impl.js +84 -0
- package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.impl.js.map +1 -0
- package/dist/ai/specs/gemini-image/gemini-image.spec.descriptor.d.ts +37 -0
- package/dist/ai/specs/gemini-image/gemini-image.spec.descriptor.d.ts.map +1 -0
- package/dist/ai/specs/gemini-image/gemini-image.spec.descriptor.js +34 -0
- package/dist/ai/specs/gemini-image/gemini-image.spec.descriptor.js.map +1 -0
- package/dist/ai/specs/gemini-image/gemini-image.spec.impl.d.ts +42 -0
- package/dist/ai/specs/gemini-image/gemini-image.spec.impl.d.ts.map +1 -0
- package/dist/ai/specs/gemini-image/gemini-image.spec.impl.js +116 -0
- package/dist/ai/specs/gemini-image/gemini-image.spec.impl.js.map +1 -0
- package/dist/external/antigravity/index.d.ts +162 -0
- package/dist/external/antigravity/index.d.ts.map +1 -0
- package/dist/external/antigravity/index.js +7 -0
- package/dist/external/antigravity/index.js.map +1 -0
- package/dist/external/antigravity/manifest.d.ts +6 -0
- package/dist/external/antigravity/manifest.d.ts.map +1 -0
- package/dist/external/antigravity/manifest.js +70 -0
- package/dist/external/antigravity/manifest.js.map +1 -0
- package/dist/external/antigravity-subscription.operation.descriptors.d.ts +61 -0
- package/dist/external/antigravity-subscription.operation.descriptors.d.ts.map +1 -0
- package/dist/external/antigravity-subscription.operation.descriptors.js +26 -0
- package/dist/external/antigravity-subscription.operation.descriptors.js.map +1 -0
- package/dist/external/antigravity-subscription.operations.d.ts +4 -0
- package/dist/external/antigravity-subscription.operations.d.ts.map +1 -0
- package/dist/external/antigravity-subscription.operations.js +49 -0
- package/dist/external/antigravity-subscription.operations.js.map +1 -0
- package/dist/external/external.plugin.d.ts +3 -0
- package/dist/external/external.plugin.d.ts.map +1 -0
- package/dist/external/external.plugin.js +30 -0
- package/dist/external/external.plugin.js.map +1 -0
- package/dist/external/gemini-cli/index.d.ts +162 -0
- package/dist/external/gemini-cli/index.d.ts.map +1 -0
- package/dist/external/gemini-cli/index.js +5 -0
- package/dist/external/gemini-cli/index.js.map +1 -0
- package/dist/external/gemini-cli/manifest.d.ts +10 -0
- package/dist/external/gemini-cli/manifest.d.ts.map +1 -0
- package/dist/external/gemini-cli/manifest.js +80 -0
- package/dist/external/gemini-cli/manifest.js.map +1 -0
- package/dist/external/gemini-presets.d.ts +817 -0
- package/dist/external/gemini-presets.d.ts.map +1 -0
- package/dist/external/gemini-presets.js +59 -0
- package/dist/external/gemini-presets.js.map +1 -0
- package/dist/external/index.d.ts +4 -0
- package/dist/external/index.d.ts.map +1 -0
- package/dist/external/index.js +4 -0
- package/dist/external/index.js.map +1 -0
- package/dist/failure-outcome.d.ts +25 -0
- package/dist/failure-outcome.d.ts.map +1 -0
- package/dist/failure-outcome.js +28 -0
- package/dist/failure-outcome.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/cli.d.ts +97 -0
- package/dist/schemas/cli.d.ts.map +1 -0
- package/dist/schemas/cli.js +51 -0
- package/dist/schemas/cli.js.map +1 -0
- package/dist/schemas/health.d.ts +8 -0
- package/dist/schemas/health.d.ts.map +1 -0
- package/dist/schemas/health.js +6 -0
- package/dist/schemas/health.js.map +1 -0
- package/dist/schemas/imagen.d.ts +31 -0
- package/dist/schemas/imagen.d.ts.map +1 -0
- package/dist/schemas/imagen.js +18 -0
- package/dist/schemas/imagen.js.map +1 -0
- package/dist/schemas/mcp-config.d.ts +13 -0
- package/dist/schemas/mcp-config.d.ts.map +1 -0
- package/dist/schemas/mcp-config.js +13 -0
- package/dist/schemas/mcp-config.js.map +1 -0
- package/package.json +129 -4
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemini CLI status classification.
|
|
3
|
+
*
|
|
4
|
+
* Google retired Gemini Code Assist for individuals from the Gemini CLI and
|
|
5
|
+
* moved the subscription to the Antigravity suite. The CLI reports that as an
|
|
6
|
+
* `IneligibleTierError` on stderr (Node `util.inspect` output, not JSON):
|
|
7
|
+
*
|
|
8
|
+
* Error authenticating: IneligibleTierError: This client is no longer supported ...
|
|
9
|
+
* at throwIneligibleOrProjectIdError (...)
|
|
10
|
+
* {
|
|
11
|
+
* ineligibleTiers: [
|
|
12
|
+
* { reasonCode: 'UNSUPPORTED_CLIENT', reasonMessage: '...', tierId: 'free-tier', tierName: '...' }
|
|
13
|
+
* ]
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* This module turns that output into a structured failure (reason code,
|
|
17
|
+
* upstream message, migration URL, remedy) so health, detection, and the
|
|
18
|
+
* generation path all surface the same actionable diagnosis. It never reads
|
|
19
|
+
* credential files and never includes raw stack traces in user-facing text.
|
|
20
|
+
*/
|
|
21
|
+
export const ANTIGRAVITY_URL = 'https://antigravity.google';
|
|
22
|
+
export const GEMINI_CLI_BINARY = 'gemini';
|
|
23
|
+
export const ANTIGRAVITY_CLI_BINARY = 'agy';
|
|
24
|
+
export const GEMINI_CLI_MIGRATION_SUMMARY = 'Gemini CLI: subscription moved to Antigravity';
|
|
25
|
+
export const GEMINI_API_KEY_FALLBACK = "set authMethod to 'api-key' with a GEMINI_API_KEY credential reference";
|
|
26
|
+
export const ANTIGRAVITY_LOGIN_COMMAND = 'vibes dev external antigravity login';
|
|
27
|
+
export const ANTIGRAVITY_STATUS_COMMAND = 'vibes dev external antigravity status';
|
|
28
|
+
export const ANTIGRAVITY_REMEDY = `install the Antigravity CLI (${ANTIGRAVITY_CLI_BINARY}, ${ANTIGRAVITY_URL}), sign in with \`${ANTIGRAVITY_LOGIN_COMMAND}\` (that runs \`${ANTIGRAVITY_CLI_BINARY}\`), and set this connection's authMethod to 'antigravity'`;
|
|
29
|
+
import { CapabilityError } from '@vibesdotdev/kernel';
|
|
30
|
+
import { geminiFailure } from "../../failure.js";
|
|
31
|
+
/** Read `key: 'value'` (util.inspect) or `"key": "value"` (JSON) from a text block. */
|
|
32
|
+
function readInspectField(block, key) {
|
|
33
|
+
const pattern = new RegExp(`["']?${key}["']?\\s*:\\s*(?:'((?:[^'\\\\]|\\\\.)*)'|"((?:[^"\\\\]|\\\\.)*)")`);
|
|
34
|
+
const match = pattern.exec(block);
|
|
35
|
+
if (!match)
|
|
36
|
+
return undefined;
|
|
37
|
+
const raw = match[1] ?? match[2] ?? '';
|
|
38
|
+
return raw.replace(/\\(['"\\])/g, '$1');
|
|
39
|
+
}
|
|
40
|
+
/** Extract every `ineligibleTiers[]` entry the Gemini CLI printed. */
|
|
41
|
+
export function parseGeminiCliIneligibleTiers(output) {
|
|
42
|
+
const tiers = [];
|
|
43
|
+
const pattern = /["']?reasonCode["']?\s*:\s*['"]([A-Z0-9_]+)['"]/g;
|
|
44
|
+
let match;
|
|
45
|
+
while ((match = pattern.exec(output)) !== null) {
|
|
46
|
+
const block = output.slice(match.index, match.index + 1200);
|
|
47
|
+
tiers.push({
|
|
48
|
+
reasonCode: match[1],
|
|
49
|
+
reasonMessage: readInspectField(block, 'reasonMessage'),
|
|
50
|
+
tierId: readInspectField(block, 'tierId'),
|
|
51
|
+
tierName: readInspectField(block, 'tierName')
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return tiers;
|
|
55
|
+
}
|
|
56
|
+
export function geminiCliRemedy(code) {
|
|
57
|
+
switch (code) {
|
|
58
|
+
case 'UNSUPPORTED_CLIENT':
|
|
59
|
+
case 'INELIGIBLE_TIER':
|
|
60
|
+
return `${ANTIGRAVITY_REMEDY}; or ${GEMINI_API_KEY_FALLBACK}.`;
|
|
61
|
+
case 'AUTH_REQUIRED':
|
|
62
|
+
return `run \`${GEMINI_CLI_BINARY}\` interactively to sign in; or ${ANTIGRAVITY_REMEDY}; or ${GEMINI_API_KEY_FALLBACK}.`;
|
|
63
|
+
case 'TRUST_REQUIRED':
|
|
64
|
+
return 'run the Gemini CLI from a trusted folder or set GEMINI_CLI_TRUST_WORKSPACE=true for headless use.';
|
|
65
|
+
case 'CLI_UNAVAILABLE':
|
|
66
|
+
return `install @google/gemini-cli so \`${GEMINI_CLI_BINARY}\` resolves on PATH; or ${ANTIGRAVITY_REMEDY}; or ${GEMINI_API_KEY_FALLBACK}.`;
|
|
67
|
+
default:
|
|
68
|
+
return `re-run \`${GEMINI_CLI_BINARY}\` interactively to read its diagnostics; or ${GEMINI_API_KEY_FALLBACK}.`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Classify Gemini CLI stderr/stdout (or a transport error message that embeds
|
|
73
|
+
* it). Returns `null` when the output carries no recognisable failure.
|
|
74
|
+
*/
|
|
75
|
+
export function classifyGeminiCliOutput(output) {
|
|
76
|
+
const text = (output ?? '').trim();
|
|
77
|
+
if (!text)
|
|
78
|
+
return null;
|
|
79
|
+
const tiers = parseGeminiCliIneligibleTiers(text);
|
|
80
|
+
const unsupported = tiers.find((tier) => tier.reasonCode === 'UNSUPPORTED_CLIENT') ??
|
|
81
|
+
(/migrate to the Antigravity/i.test(text) ? { reasonCode: 'UNSUPPORTED_CLIENT' } : undefined);
|
|
82
|
+
if (unsupported) {
|
|
83
|
+
return {
|
|
84
|
+
code: 'UNSUPPORTED_CLIENT', reasonCode: 'UNSUPPORTED_CLIENT',
|
|
85
|
+
message: GEMINI_CLI_MIGRATION_SUMMARY, url: ANTIGRAVITY_URL,
|
|
86
|
+
remedy: geminiCliRemedy('UNSUPPORTED_CLIENT')
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
if (tiers.length > 0) {
|
|
90
|
+
return {
|
|
91
|
+
code: 'INELIGIBLE_TIER', reasonCode: 'INELIGIBLE_TIER',
|
|
92
|
+
message: 'Gemini CLI subscription is unavailable.',
|
|
93
|
+
remedy: geminiCliRemedy('INELIGIBLE_TIER')
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (/not running in a trusted directory|trusted folder/i.test(text)) {
|
|
97
|
+
return {
|
|
98
|
+
code: 'TRUST_REQUIRED',
|
|
99
|
+
message: 'Gemini CLI is not running in a trusted directory.',
|
|
100
|
+
remedy: geminiCliRemedy('TRUST_REQUIRED')
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (/ENOENT|command not found|not found on PATH|No such file or directory/i.test(text)) {
|
|
104
|
+
return {
|
|
105
|
+
code: 'CLI_UNAVAILABLE',
|
|
106
|
+
message: 'Gemini CLI binary is unavailable.',
|
|
107
|
+
remedy: geminiCliRemedy('CLI_UNAVAILABLE')
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
if (/Error authenticating|not authenticated|authentication required|please sign in|login required/i.test(text)) {
|
|
111
|
+
return {
|
|
112
|
+
code: 'AUTH_REQUIRED',
|
|
113
|
+
message: 'Gemini CLI is not authenticated.',
|
|
114
|
+
remedy: geminiCliRemedy('AUTH_REQUIRED')
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
const reasons = {
|
|
120
|
+
UNSUPPORTED_CLIENT: 'gemini-cli-retired',
|
|
121
|
+
INELIGIBLE_TIER: 'gemini-cli-tier-ineligible',
|
|
122
|
+
AUTH_REQUIRED: 'gemini-cli-auth-required',
|
|
123
|
+
TRUST_REQUIRED: 'gemini-cli-trust-required',
|
|
124
|
+
CLI_UNAVAILABLE: 'gemini-cli-unavailable',
|
|
125
|
+
CLI_ERROR: 'gemini-cli-failed'
|
|
126
|
+
};
|
|
127
|
+
export function geminiCliFailure(failure) {
|
|
128
|
+
const refusal = geminiFailure(reasons[failure.code]);
|
|
129
|
+
return new CapabilityError(`${refusal.message} Remedy: ${geminiCliRemedy(failure.code)}`, refusal.code, { reason: refusal.reason, retryable: false });
|
|
130
|
+
}
|
|
131
|
+
export function describeGeminiCliFailure(failure) {
|
|
132
|
+
return geminiCliFailure(failure).message;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=gemini-cli-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-cli-status.js","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/gemini-cli-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ProviderOperationOptions, ProviderHealthCheckResult, DetectedProviderInstance } from '@vibesdotdev/ai/interfaces/provider-type';
|
|
2
|
+
import type { GeminiConnection } from '../cloud/frontier/gemini/config/schemas/index.ts';
|
|
3
|
+
import { GeminiProviderType } from './gemini.provider.impl.ts';
|
|
4
|
+
export declare class GeminiConsumerProviderType extends GeminiProviderType {
|
|
5
|
+
private resolveExecution;
|
|
6
|
+
detectInstalled(): Promise<DetectedProviderInstance[]>;
|
|
7
|
+
protected checkConnectionHealth(config: GeminiConnection, options?: ProviderOperationOptions): Promise<ProviderHealthCheckResult>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=gemini.provider.impl.consumer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.provider.impl.consumer.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/gemini.provider.impl.consumer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAC9I,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAK/D,qBAAa,0BAA2B,SAAQ,kBAAkB;YACnD,gBAAgB;IAQf,eAAe,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;cAc5C,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;CA0BhJ"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { settle } from '@vibesdotdev/kernel';
|
|
2
|
+
import { GeminiProviderType } from "./gemini.provider.impl.js";
|
|
3
|
+
import { geminiFailure } from "../../failure.js";
|
|
4
|
+
import { ANTIGRAVITY_CLI_BINARY, GEMINI_CLI_BINARY, geminiCliFailure } from "./gemini-cli-status.js";
|
|
5
|
+
import { probeAntigravityCli, probeGeminiCli, probeTimeout } from "./cli-probes.js";
|
|
6
|
+
export class GeminiConsumerProviderType extends GeminiProviderType {
|
|
7
|
+
async resolveExecution() {
|
|
8
|
+
if (this.context.runtime.scope.hardware !== 'consumer')
|
|
9
|
+
return null;
|
|
10
|
+
if (!this.context.runtime.hasKind('runtime/execution'))
|
|
11
|
+
return null;
|
|
12
|
+
const result = await settle(() => this.context.runtime.query('runtime/execution').select());
|
|
13
|
+
if (!result.ok)
|
|
14
|
+
throw geminiFailure('gemini-execution-unavailable', result.cause);
|
|
15
|
+
return result.value?.impl ?? null;
|
|
16
|
+
}
|
|
17
|
+
async detectInstalled() {
|
|
18
|
+
const instances = await super.detectInstalled();
|
|
19
|
+
const execution = await this.resolveExecution();
|
|
20
|
+
if (execution && await execution.resolveCommand(ANTIGRAVITY_CLI_BINARY)) {
|
|
21
|
+
instances.push({ name: 'Google Antigravity CLI', source: 'system',
|
|
22
|
+
config: { authMethod: 'antigravity', tokenSource: 'antigravity-auth' } });
|
|
23
|
+
}
|
|
24
|
+
if (execution && await execution.resolveCommand(GEMINI_CLI_BINARY)) {
|
|
25
|
+
instances.push({ name: 'Google Gemini CLI', source: 'system',
|
|
26
|
+
config: { authMethod: 'gemini-cli', tokenSource: 'gemini-cli-auth' } });
|
|
27
|
+
}
|
|
28
|
+
return instances;
|
|
29
|
+
}
|
|
30
|
+
async checkConnectionHealth(config, options) {
|
|
31
|
+
if (config.authMethod === 'api-key')
|
|
32
|
+
return super.checkConnectionHealth(config, options);
|
|
33
|
+
const execution = await this.resolveExecution();
|
|
34
|
+
if (!execution)
|
|
35
|
+
throw geminiFailure('gemini-execution-unavailable');
|
|
36
|
+
const start = Date.now();
|
|
37
|
+
const timeout = probeTimeout(options?.timeout);
|
|
38
|
+
if (config.authMethod === 'gemini-cli') {
|
|
39
|
+
const probe = await probeGeminiCli(this.context.runtime, execution, timeout);
|
|
40
|
+
switch (probe.kind) {
|
|
41
|
+
case 'unavailable': throw geminiFailure('gemini-cli-unavailable');
|
|
42
|
+
case 'timeout': throw geminiFailure('gemini-health-timeout');
|
|
43
|
+
case 'failure': throw geminiCliFailure(probe.failure);
|
|
44
|
+
case 'healthy': break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const probe = await probeAntigravityCli(this.context.runtime, execution, timeout);
|
|
49
|
+
switch (probe.kind) {
|
|
50
|
+
case 'unavailable': throw geminiFailure('antigravity-cli-unavailable');
|
|
51
|
+
case 'timeout': throw geminiFailure('gemini-health-timeout');
|
|
52
|
+
case 'failure': throw geminiFailure('antigravity-cli-failed');
|
|
53
|
+
case 'healthy': break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return { healthy: true, checkedAt: new Date(), latencyMs: Date.now() - start,
|
|
57
|
+
message: 'Gemini subscription CLI is available', availableModalities: ['text'] };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=gemini.provider.impl.consumer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.provider.impl.consumer.js","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/gemini.provider.impl.consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrG,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpF,MAAM,OAAO,0BAA2B,SAAQ,kBAAkB;IACzD,KAAK,CAAC,gBAAgB;QAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC;YAAE,OAAO,IAAI,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAwC,mBAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACnI,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,aAAa,CAAC,8BAA8B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;IACnC,CAAC;IAEQ,KAAK,CAAC,eAAe;QAC7B,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAChD,IAAI,SAAS,IAAI,MAAM,SAAS,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACzE,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,QAAQ;gBAChE,MAAM,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,SAAS,IAAI,MAAM,SAAS,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACpE,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ;gBAC3D,MAAM,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAEkB,KAAK,CAAC,qBAAqB,CAAC,MAAwB,EAAE,OAAkC;QAC1G,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAChD,IAAI,CAAC,SAAS;YAAE,MAAM,aAAa,CAAC,8BAA8B,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC7E,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,aAAa,CAAC,CAAC,MAAM,aAAa,CAAC,wBAAwB,CAAC,CAAC;gBAClE,KAAK,SAAS,CAAC,CAAC,MAAM,aAAa,CAAC,uBAAuB,CAAC,CAAC;gBAC7D,KAAK,SAAS,CAAC,CAAC,MAAM,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACtD,KAAK,SAAS,CAAC,CAAC,MAAM;YACvB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAClF,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,aAAa,CAAC,CAAC,MAAM,aAAa,CAAC,6BAA6B,CAAC,CAAC;gBACvE,KAAK,SAAS,CAAC,CAAC,MAAM,aAAa,CAAC,uBAAuB,CAAC,CAAC;gBAC7D,KAAK,SAAS,CAAC,CAAC,MAAM,aAAa,CAAC,wBAAwB,CAAC,CAAC;gBAC9D,KAAK,SAAS,CAAC,CAAC,MAAM;YACvB,CAAC;QACF,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;YAC3E,OAAO,EAAE,sCAAsC,EAAE,mBAAmB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IACnF,CAAC;CACD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ConfigurationRecord } from '@vibesdotdev/ai/providers-runtime/config/schemas/credential-reference';
|
|
2
|
+
import type { ProviderOperationOptions, AIProviderTypeContext, AIProviderTypeInterface, ConnectionValidationResult, DetectedProviderInstance, ModelRecommendation, ProviderGenerateOptions, ProviderGenerateResult, ProviderHealthCheckResult } from '@vibesdotdev/ai/interfaces/provider-type';
|
|
3
|
+
import type { GenerationRequest } from '@vibesdotdev/ai/interfaces/adapter';
|
|
4
|
+
import type { AIModelDescriptor, Modality } from '@vibesdotdev/ai/models/schemas';
|
|
5
|
+
import type { AIProviderDescriptor } from '@vibesdotdev/ai/providers-runtime/schemas/provider-descriptor';
|
|
6
|
+
import type { AIProviderTypeDescriptor } from '@vibesdotdev/ai/providers-runtime/schemas/type-descriptor';
|
|
7
|
+
import { type GeminiConnection } from '../cloud/frontier/gemini/config/schemas/index.ts';
|
|
8
|
+
export declare class GeminiProviderType implements AIProviderTypeInterface {
|
|
9
|
+
readonly descriptor: AIProviderTypeDescriptor;
|
|
10
|
+
protected readonly context: AIProviderTypeContext;
|
|
11
|
+
constructor(descriptor: AIProviderTypeDescriptor, context: AIProviderTypeContext);
|
|
12
|
+
generate<T extends Modality>(provider: AIProviderDescriptor, model: AIModelDescriptor, request: GenerationRequest<T>, options?: ProviderGenerateOptions): Promise<ProviderGenerateResult<T>>;
|
|
13
|
+
detectInstalled(): Promise<DetectedProviderInstance[]>;
|
|
14
|
+
recommendModels(useCase: string): Promise<ModelRecommendation[]>;
|
|
15
|
+
protected readConnection(config: ConfigurationRecord): GeminiConnection;
|
|
16
|
+
checkHealth(config: ConfigurationRecord, options?: ProviderOperationOptions): Promise<ProviderHealthCheckResult>;
|
|
17
|
+
protected checkConnectionHealth(config: GeminiConnection, options?: ProviderOperationOptions): Promise<ProviderHealthCheckResult>;
|
|
18
|
+
authenticate(config: ConfigurationRecord, options?: ProviderOperationOptions): Promise<ProviderHealthCheckResult>;
|
|
19
|
+
validateConnection(config: ConfigurationRecord): Promise<ConnectionValidationResult>;
|
|
20
|
+
dispose(): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=gemini.provider.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.provider.impl.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/gemini.provider.impl.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uEAAuE,CAAC;AAEjH,OAAO,KAAK,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAChS,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+DAA+D,CAAC;AAC1G,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2DAA2D,CAAC;AAC1G,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAIjH,qBAAa,kBAAmB,YAAW,uBAAuB;IACrD,QAAQ,CAAC,UAAU,EAAE,wBAAwB;IAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,qBAAqB;gBAAvF,UAAU,EAAE,wBAAwB,EAAqB,OAAO,EAAE,qBAAqB;IAE5G,QAAQ,CAAC,CAAC,SAAS,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,iBAAiB,EACpF,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAahG,eAAe,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAmBtD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA8CtE,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,gBAAgB;IAMjE,WAAW,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;cAItG,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAuBjI,YAAY,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAKjH,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAOpF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAC9B"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { settle, settleNow } from '@vibesdotdev/kernel';
|
|
2
|
+
import { getVibesAIClient } from '@vibesdotdev/ai/client';
|
|
3
|
+
import { AnyGenerationRequestSchema } from '@vibesdotdev/ai/generation/execution/schemas/request';
|
|
4
|
+
import { GenerationExecutionOptionsSchema } from '@vibesdotdev/ai/generation/execution/schemas/options';
|
|
5
|
+
import { resolveSecretReference } from '@vibesdotdev/ai/providers-runtime';
|
|
6
|
+
import { fetchAIProvider } from '@vibesdotdev/ai/providers-runtime/client';
|
|
7
|
+
import { geminiConnectionSchema } from "../cloud/frontier/gemini/config/schemas/index.js";
|
|
8
|
+
import { geminiFailure } from "../../failure.js";
|
|
9
|
+
import { GeminiHealthResponseSchema } from "../../../schemas/health.js";
|
|
10
|
+
export class GeminiProviderType {
|
|
11
|
+
descriptor;
|
|
12
|
+
context;
|
|
13
|
+
constructor(descriptor, context) {
|
|
14
|
+
this.descriptor = descriptor;
|
|
15
|
+
this.context = context;
|
|
16
|
+
}
|
|
17
|
+
async generate(provider, model, request, options) {
|
|
18
|
+
const admitted = settleNow(() => ({
|
|
19
|
+
input: AnyGenerationRequestSchema.parse({ ...request, providerId: provider.id, modelId: model.id }),
|
|
20
|
+
execution: GenerationExecutionOptionsSchema.parse(options ?? {})
|
|
21
|
+
}));
|
|
22
|
+
if (!admitted.ok)
|
|
23
|
+
throw geminiFailure('unsupported-option', admitted.cause);
|
|
24
|
+
const client = await getVibesAIClient(this.context.runtime);
|
|
25
|
+
const response = await client.requestGeneration(admitted.value.input, admitted.value.execution);
|
|
26
|
+
return { response, adapterId: 'ai/generation', generationMethod: 'runtime' };
|
|
27
|
+
}
|
|
28
|
+
async detectInstalled() {
|
|
29
|
+
const instances = [];
|
|
30
|
+
for (const key of ['GEMINI_API_KEY', 'GOOGLE_API_KEY', 'GOOGLE_GENERATIVE_AI_API_KEY']) {
|
|
31
|
+
const credential = await this.context.runtime.resolveCredential({ source: 'secret', key });
|
|
32
|
+
if (!credential.ok) {
|
|
33
|
+
if (credential.error.reason === 'credential-not-set')
|
|
34
|
+
continue;
|
|
35
|
+
throw credential.error;
|
|
36
|
+
}
|
|
37
|
+
if (!credential.value.trim())
|
|
38
|
+
continue;
|
|
39
|
+
instances.push({
|
|
40
|
+
name: `Google Gemini (${key})`, source: 'system',
|
|
41
|
+
config: { authMethod: 'api-key', apiKey: { source: 'secret', key },
|
|
42
|
+
baseUrl: 'https://generativelanguage.googleapis.com/v1beta/openai' }
|
|
43
|
+
});
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
return instances;
|
|
47
|
+
}
|
|
48
|
+
async recommendModels(useCase) {
|
|
49
|
+
return [
|
|
50
|
+
{
|
|
51
|
+
modelId: 'gemini:gemini-3.8-flash',
|
|
52
|
+
modelName: 'Gemini 3.8 Flash',
|
|
53
|
+
score: 98,
|
|
54
|
+
reason: 'Next-generation fast multimodal model with frontier agentic coding capabilities',
|
|
55
|
+
capabilities: ['chat', 'vision', 'audio', 'video', 'tools'],
|
|
56
|
+
contextWindow: 1_048_576,
|
|
57
|
+
maxOutputTokens: 65_536,
|
|
58
|
+
useCaseFit: useCase === 'development' ? 99 : 98
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
modelId: 'gemini:gemini-3.8-pro',
|
|
62
|
+
modelName: 'Gemini 3.8 Pro',
|
|
63
|
+
score: 96,
|
|
64
|
+
reason: 'Frontier multimodal reasoning and complex code generation model',
|
|
65
|
+
capabilities: ['chat', 'vision', 'audio', 'video', 'tools'],
|
|
66
|
+
contextWindow: 2_097_152,
|
|
67
|
+
maxOutputTokens: 65_536,
|
|
68
|
+
useCaseFit: useCase === 'development' ? 98 : 96
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
modelId: 'gemini:gemini-3.6-flash',
|
|
72
|
+
modelName: 'Gemini 3.6 Flash',
|
|
73
|
+
score: 94,
|
|
74
|
+
reason: 'Current stable agentic and multimodal model',
|
|
75
|
+
capabilities: ['chat', 'vision', 'audio', 'video', 'tools'],
|
|
76
|
+
contextWindow: 1_000_000,
|
|
77
|
+
maxOutputTokens: 64_000,
|
|
78
|
+
useCaseFit: useCase === 'development' ? 95 : 94
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
modelId: 'gemini:gemini-3.5-flash-lite',
|
|
82
|
+
modelName: 'Gemini 3.5 Flash-Lite',
|
|
83
|
+
score: 84,
|
|
84
|
+
reason: 'Current stable high-throughput model',
|
|
85
|
+
capabilities: ['chat', 'vision', 'audio', 'video', 'tools'],
|
|
86
|
+
contextWindow: 1_000_000,
|
|
87
|
+
maxOutputTokens: 64_000,
|
|
88
|
+
useCaseFit: useCase === 'organization' ? 90 : 84
|
|
89
|
+
}
|
|
90
|
+
].sort((a, b) => b.useCaseFit - a.useCaseFit);
|
|
91
|
+
}
|
|
92
|
+
readConnection(config) {
|
|
93
|
+
const parsed = settleNow(() => geminiConnectionSchema.parse(config));
|
|
94
|
+
if (!parsed.ok)
|
|
95
|
+
throw geminiFailure('unsupported-option', parsed.cause);
|
|
96
|
+
return parsed.value;
|
|
97
|
+
}
|
|
98
|
+
async checkHealth(config, options) {
|
|
99
|
+
return this.checkConnectionHealth(this.readConnection(config), options);
|
|
100
|
+
}
|
|
101
|
+
async checkConnectionHealth(config, options) {
|
|
102
|
+
if (config.authMethod !== 'api-key')
|
|
103
|
+
throw geminiFailure('gemini-execution-unavailable');
|
|
104
|
+
if (!config.apiKey)
|
|
105
|
+
throw geminiFailure('gemini-credential-unavailable');
|
|
106
|
+
const reference = config.apiKey;
|
|
107
|
+
const credential = await settle(() => options?.resolveCredential
|
|
108
|
+
? options.resolveCredential(reference)
|
|
109
|
+
: resolveSecretReference(reference, this.context.runtime));
|
|
110
|
+
if (!credential.ok)
|
|
111
|
+
throw geminiFailure('gemini-credential-unavailable', credential.cause);
|
|
112
|
+
if (!credential.value)
|
|
113
|
+
throw geminiFailure('gemini-credential-unavailable');
|
|
114
|
+
const start = Date.now();
|
|
115
|
+
const probed = await settle(() => this.context.runtime.lifecycle.wait(async (signal) => {
|
|
116
|
+
const response = await fetchAIProvider(this.context, 'https://generativelanguage.googleapis.com/v1beta/models?pageSize=1', { headers: { 'x-goog-api-key': credential.value }, signal });
|
|
117
|
+
if (!response.ok)
|
|
118
|
+
throw geminiFailure('gemini-health-failed');
|
|
119
|
+
const body = GeminiHealthResponseSchema.safeParse(await response.json());
|
|
120
|
+
if (!body.success)
|
|
121
|
+
throw geminiFailure('gemini-response-invalid');
|
|
122
|
+
}, { timeoutMs: options?.timeout ?? 5000, reason: 'gemini health probe', signal: options?.signal }));
|
|
123
|
+
if (!probed.ok)
|
|
124
|
+
throw geminiFailure('gemini-health-failed', probed.cause);
|
|
125
|
+
return { healthy: true, checkedAt: new Date(), latencyMs: Date.now() - start,
|
|
126
|
+
message: 'Gemini API connection successful', availableModalities: ['text', 'image', 'video', 'audio'] };
|
|
127
|
+
}
|
|
128
|
+
async authenticate(config, options) {
|
|
129
|
+
if (options?.signal?.aborted)
|
|
130
|
+
throw geminiFailure('generation-cancelled');
|
|
131
|
+
return this.checkHealth(config, options);
|
|
132
|
+
}
|
|
133
|
+
async validateConnection(config) {
|
|
134
|
+
const parsed = settleNow(() => geminiConnectionSchema.safeParse(config));
|
|
135
|
+
if (!parsed.ok)
|
|
136
|
+
throw geminiFailure('unsupported-option', parsed.cause);
|
|
137
|
+
if (parsed.value.success)
|
|
138
|
+
return { valid: true };
|
|
139
|
+
return { valid: false, errors: parsed.value.error.issues.map(issue => `Invalid ${issue.path.join('.') || 'connection'} (${issue.code})`) };
|
|
140
|
+
}
|
|
141
|
+
async dispose() { }
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=gemini.provider.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.provider.impl.js","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/gemini.provider.impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { GeminiProviderType } from './gemini.provider.impl.ts';
|
|
2
|
+
export { detectGeminiSystem } from './detection/system.ts';
|
|
3
|
+
export { GeminiRecommendation, geminiRecommendation } from './recommendations.ts';
|
|
4
|
+
export { default as geminiDocsDescriptor } from './docs/ai.providers.gemini.docs.descriptor.ts';
|
|
5
|
+
export { ANTIGRAVITY_CLI_BINARY, ANTIGRAVITY_REMEDY, ANTIGRAVITY_URL, GEMINI_API_KEY_FALLBACK, GEMINI_CLI_BINARY, GEMINI_CLI_MIGRATION_SUMMARY, geminiCliFailure, classifyGeminiCliOutput, describeGeminiCliFailure, geminiCliRemedy, parseGeminiCliIneligibleTiers } from './gemini-cli-status.ts';
|
|
6
|
+
export type { GeminiCliFailure, GeminiCliFailureCode, GeminiCliIneligibleTier } from './gemini-cli-status.ts';
|
|
7
|
+
export { CLI_PROBE_TIMEOUT_MS, parseAntigravityModels, probeAntigravityCli, probeGeminiCli, probeTimeout } from './cli-probes.ts';
|
|
8
|
+
export type { AntigravityCliProbe, CliExecution, GeminiCliProbe } from './cli-probes.ts';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAChG,OAAO,EACN,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EACjB,4BAA4B,EAC5B,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,6BAA6B,EAC7B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC9G,OAAO,EACN,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { GeminiProviderType } from "./gemini.provider.impl.js";
|
|
2
|
+
export { detectGeminiSystem } from "./detection/system.js";
|
|
3
|
+
export { GeminiRecommendation, geminiRecommendation } from "./recommendations.js";
|
|
4
|
+
export { default as geminiDocsDescriptor } from "./docs/ai.providers.gemini.docs.descriptor.js";
|
|
5
|
+
export { ANTIGRAVITY_CLI_BINARY, ANTIGRAVITY_REMEDY, ANTIGRAVITY_URL, GEMINI_API_KEY_FALLBACK, GEMINI_CLI_BINARY, GEMINI_CLI_MIGRATION_SUMMARY, geminiCliFailure, classifyGeminiCliOutput, describeGeminiCliFailure, geminiCliRemedy, parseGeminiCliIneligibleTiers } from "./gemini-cli-status.js";
|
|
6
|
+
export { CLI_PROBE_TIMEOUT_MS, parseAntigravityModels, probeAntigravityCli, probeGeminiCli, probeTimeout } from "./cli-probes.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAChG,OAAO,EACN,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EACjB,4BAA4B,EAC5B,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,6BAA6B,EAC7B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ProviderRecommendation, type ModelAdapter } from '@vibesdotdev/ai/recommendations/base';
|
|
2
|
+
import type { ModelRecommendation, RecommendationContext, SetupMethod, SetupStep, UseCase } from '@vibesdotdev/ai/recommendations/schemas';
|
|
3
|
+
export declare class GeminiRecommendation extends ProviderRecommendation {
|
|
4
|
+
readonly providerType = "gemini";
|
|
5
|
+
readonly displayName = "Google Gemini";
|
|
6
|
+
getUseCaseScore(useCase: UseCase): number;
|
|
7
|
+
getStageScore(stage: RecommendationContext['stage']): number;
|
|
8
|
+
getRequiredEnvironmentVariables(): string[];
|
|
9
|
+
getReason(useCase: UseCase): string;
|
|
10
|
+
getStrengths(): string[];
|
|
11
|
+
getWeaknesses(context: RecommendationContext): string[];
|
|
12
|
+
getSupportedSetupMethods(): SetupMethod[];
|
|
13
|
+
getSetupSteps(method: SetupMethod): Promise<SetupStep[]>;
|
|
14
|
+
recommendModels(_adapter: ModelAdapter | null, context: RecommendationContext): Promise<ModelRecommendation[]>;
|
|
15
|
+
getExecutionContext(): {
|
|
16
|
+
recommendModels: "server";
|
|
17
|
+
getSetupSteps: "both";
|
|
18
|
+
};
|
|
19
|
+
supportsOAuth(): boolean;
|
|
20
|
+
supportsLocal(): boolean;
|
|
21
|
+
requiresGPU(): boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare const geminiRecommendation: GeminiRecommendation;
|
|
24
|
+
//# sourceMappingURL=recommendations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommendations.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/recommendations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACjG,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAE3I,qBAAa,oBAAqB,SAAQ,sBAAsB;IAC/D,QAAQ,CAAC,YAAY,YAAY;IACjC,QAAQ,CAAC,WAAW,mBAAmB;IACvC,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IACzC,aAAa,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,MAAM;IAC5D,+BAA+B,IAAI,MAAM,EAAE;IAC3C,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IACnC,YAAY,IAAI,MAAM,EAAE;IACxB,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,EAAE;IACvD,wBAAwB,IAAI,WAAW,EAAE;IACnC,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAQxD,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAQpH,mBAAmB;;;;IACnB,aAAa,IAAI,OAAO;IACxB,aAAa,IAAI,OAAO;IACxB,WAAW,IAAI,OAAO;CACtB;AAED,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ProviderRecommendation } from '@vibesdotdev/ai/recommendations/base';
|
|
2
|
+
export class GeminiRecommendation extends ProviderRecommendation {
|
|
3
|
+
providerType = 'gemini';
|
|
4
|
+
displayName = 'Google Gemini';
|
|
5
|
+
getUseCaseScore(useCase) { return ({ chat: 46, development: 48, research: 46, images: 43, video: 46, audio: 40, organization: 44 })[useCase]; }
|
|
6
|
+
getStageScore(stage) { return stage === 'production' ? 20 : 0; }
|
|
7
|
+
getRequiredEnvironmentVariables() { return ['GEMINI_API_KEY']; }
|
|
8
|
+
getReason(useCase) { return useCase === 'development' ? 'Current Gemini models pair long context with agentic coding and multimodal tools' : 'Strong multimodal capability and long context'; }
|
|
9
|
+
getStrengths() { return ['Multimodal text, image, video, and audio support', 'Long context windows', 'Antigravity CLI, Gemini CLI, and cloud API paths']; }
|
|
10
|
+
getWeaknesses(context) { return context.requiresLocal ? ['No local inference deployment'] : []; }
|
|
11
|
+
getSupportedSetupMethods() { return ['oauth', 'api_key', 'env_var']; }
|
|
12
|
+
async getSetupSteps(method) {
|
|
13
|
+
if (method === 'oauth')
|
|
14
|
+
return [
|
|
15
|
+
{ step: 'Sign in to the Antigravity CLI', description: 'Google moved Gemini Code Assist for individuals to Antigravity. Run `vibes dev external antigravity login` (that runs `agy`) and set authMethod to antigravity. Antigravity keeps the Google account.', action: 'https://antigravity.google' },
|
|
16
|
+
{ step: 'Legacy Gemini CLI sign-in', description: 'The official Gemini CLI browser sign-in reports UNSUPPORTED_CLIENT for accounts Google has moved; use Antigravity or an API key when it does.' }
|
|
17
|
+
];
|
|
18
|
+
if (method === 'api_key')
|
|
19
|
+
return [{ step: 'Store Gemini API key', description: 'Create a key in Google AI Studio and store it through the Vibes credential boundary.', action: 'https://aistudio.google.com/app/apikey' }];
|
|
20
|
+
return [{ step: 'Bind environment credential', description: 'Bind GEMINI_API_KEY through the runtime environment.' }];
|
|
21
|
+
}
|
|
22
|
+
async recommendModels(_adapter, context) {
|
|
23
|
+
return [
|
|
24
|
+
{ modelId: 'gemini-3.8-flash', modelName: 'Gemini 3.8 Flash', score: context.useCase === 'development' ? 99 : 98, reason: 'Next-generation fast multimodal model with frontier agentic coding capabilities', contextWindow: 1_048_576, maxOutputTokens: 65_536, capabilities: ['chat', 'vision', 'audio', 'video', 'tools'], isAvailable: true, requiresUpgrade: false, useCaseFit: context.useCase === 'development' ? 99 : 98 },
|
|
25
|
+
{ modelId: 'gemini-3.8-pro', modelName: 'Gemini 3.8 Pro', score: 96, reason: 'Frontier multimodal reasoning and complex code generation model', contextWindow: 2_097_152, maxOutputTokens: 65_536, capabilities: ['chat', 'vision', 'audio', 'video', 'tools'], isAvailable: true, requiresUpgrade: false, useCaseFit: context.useCase === 'development' ? 98 : 96 },
|
|
26
|
+
{ modelId: 'gemini-3.6-flash', modelName: 'Gemini 3.6 Flash', score: context.useCase === 'development' ? 95 : 94, reason: 'Stable agentic and multimodal model', contextWindow: 1_000_000, maxOutputTokens: 64_000, capabilities: ['chat', 'vision', 'audio', 'video', 'tools'], isAvailable: true, requiresUpgrade: false, useCaseFit: context.useCase === 'development' ? 95 : 94 },
|
|
27
|
+
{ modelId: 'gemini-3.5-flash-lite', modelName: 'Gemini 3.5 Flash-Lite', score: 84, reason: 'Stable high-throughput model', contextWindow: 1_000_000, maxOutputTokens: 64_000, capabilities: ['chat', 'vision', 'audio', 'video', 'tools'], isAvailable: true, requiresUpgrade: false, useCaseFit: 84 }
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
getExecutionContext() { return { recommendModels: 'server', getSetupSteps: 'both' }; }
|
|
31
|
+
supportsOAuth() { return true; }
|
|
32
|
+
supportsLocal() { return false; }
|
|
33
|
+
requiresGPU() { return false; }
|
|
34
|
+
}
|
|
35
|
+
export const geminiRecommendation = new GeminiRecommendation();
|
|
36
|
+
//# sourceMappingURL=recommendations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommendations.js","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/recommendations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `spec-antigravity-cli-exec` — Google Antigravity CLI subscription-backed text generation.
|
|
3
|
+
*
|
|
4
|
+
* Consumer scope only. The paired provider variant uses `transport-process`
|
|
5
|
+
* and the local `agy` binary (Antigravity CLI, the successor Google named
|
|
6
|
+
* when it retired Gemini Code Assist for individuals from the Gemini CLI).
|
|
7
|
+
* Authentication is owned by the Antigravity CLI's own Google sign-in, so
|
|
8
|
+
* this spec does not accept or persist tokens.
|
|
9
|
+
*/
|
|
10
|
+
declare const _default: {
|
|
11
|
+
id: string;
|
|
12
|
+
kind: "ai/spec";
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
modalities: ("image" | "text" | "audio" | "video" | "embedding" | "transcription" | "evaluation" | "speech" | "ocr")[];
|
|
16
|
+
streamFraming: "none" | "sse" | "sse-named" | "ndjson" | "binary-chunked" | "ws-frame";
|
|
17
|
+
toolCallEnvelope: string;
|
|
18
|
+
transports: string[];
|
|
19
|
+
external: boolean;
|
|
20
|
+
priority: number;
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
capabilities?: ("streaming" | "json_mode" | "text_generation" | "chat_completion" | "function_calling" | "embedding_generation" | "image_generation_text_to_image" | "image_generation_image_to_image" | "image_generation_inpainting" | "image_generation_outpainting" | "image_upscaling" | "image_editing_via_instructions" | "audio_generation_text_to_speech" | "audio_generation_voice_cloning" | "audio_generation_music" | "audio_generation_sound_effects" | "audio_transcription" | "audio_transcription_realtime" | "video_generation_text_to_video" | "workflow_execution" | "code_generation" | "image_understanding" | "structured_evaluation")[] | undefined;
|
|
23
|
+
imageControls?: {
|
|
24
|
+
steps: boolean;
|
|
25
|
+
cfg: boolean;
|
|
26
|
+
sampler: boolean;
|
|
27
|
+
scheduler: boolean;
|
|
28
|
+
negativePrompt: boolean;
|
|
29
|
+
seed: boolean;
|
|
30
|
+
} | undefined;
|
|
31
|
+
tags?: string[] | undefined;
|
|
32
|
+
};
|
|
33
|
+
export default _default;
|
|
34
|
+
//# sourceMappingURL=antigravity-cli-exec.spec.descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity-cli-exec.spec.descriptor.d.ts","sourceRoot":"","sources":["../../../../src/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.descriptor.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBAYG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { createAISpecDescriptor } from '@vibesdotdev/ai/specs/schemas/descriptor';
|
|
2
|
+
/**
|
|
3
|
+
* `spec-antigravity-cli-exec` — Google Antigravity CLI subscription-backed text generation.
|
|
4
|
+
*
|
|
5
|
+
* Consumer scope only. The paired provider variant uses `transport-process`
|
|
6
|
+
* and the local `agy` binary (Antigravity CLI, the successor Google named
|
|
7
|
+
* when it retired Gemini Code Assist for individuals from the Gemini CLI).
|
|
8
|
+
* Authentication is owned by the Antigravity CLI's own Google sign-in, so
|
|
9
|
+
* this spec does not accept or persist tokens.
|
|
10
|
+
*/
|
|
11
|
+
export default createAISpecDescriptor({
|
|
12
|
+
id: 'antigravity-cli-exec',
|
|
13
|
+
name: 'Antigravity CLI',
|
|
14
|
+
description: 'Runs `agy --print` headlessly through the Google Antigravity CLI using local Google account subscription state.',
|
|
15
|
+
modalities: ['text'],
|
|
16
|
+
streamFraming: 'none',
|
|
17
|
+
toolCallEnvelope: 'none',
|
|
18
|
+
transports: ['process'],
|
|
19
|
+
capabilities: ['text_generation'],
|
|
20
|
+
priority: 100,
|
|
21
|
+
tags: ['google', 'gemini', 'antigravity', 'google-oauth', 'subscription', 'consumer-only']
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=antigravity-cli-exec.spec.descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity-cli-exec.spec.descriptor.js","sourceRoot":"","sources":["../../../../src/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAElF;;;;;;;;GAQG;AACH,eAAe,sBAAsB,CAAC;IACrC,EAAE,EAAE,sBAAsB;IAC1B,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACV,iHAAiH;IAClH,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM;IACrB,gBAAgB,EAAE,MAAM;IACxB,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,YAAY,EAAE,CAAC,iBAAiB,CAAC;IACjC,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,CAAC;CAC1F,CAAC,CAAC"}
|