@jsonstudio/llms 0.6.1449 → 0.6.1643
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/dist/conversion/codecs/gemini-openai-codec.js +6 -1
- package/dist/conversion/compat/actions/anthropic-claude-code-system-prompt.d.ts +4 -6
- package/dist/conversion/compat/actions/anthropic-claude-code-system-prompt.js +179 -41
- package/dist/conversion/compat/actions/antigravity-thought-signature-cache.js +73 -14
- package/dist/conversion/compat/actions/antigravity-thought-signature-prepare.js +165 -10
- package/dist/conversion/compat/actions/gemini-cli-request.js +72 -13
- package/dist/conversion/compat/antigravity-session-signature.d.ts +68 -1
- package/dist/conversion/compat/antigravity-session-signature.js +833 -21
- package/dist/conversion/compat/profiles/anthropic-claude-code.json +17 -0
- package/dist/conversion/compat/profiles/chat-gemini-cli.json +1 -0
- package/dist/conversion/hub/operation-table/semantic-mappers/gemini-mapper.js +33 -8
- package/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.js +17 -1
- package/dist/conversion/hub/pipeline/compat/compat-profile-store.js +12 -3
- package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +1 -0
- package/dist/conversion/hub/pipeline/hub-pipeline.js +24 -0
- package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/index.js +20 -0
- package/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.js +26 -1
- package/dist/conversion/hub/process/chat-process.js +300 -67
- package/dist/conversion/hub/response/provider-response.js +4 -3
- package/dist/conversion/shared/gemini-tool-utils.js +134 -9
- package/dist/conversion/shared/text-markup-normalizer.js +90 -1
- package/dist/conversion/shared/thought-signature-validator.d.ts +1 -1
- package/dist/conversion/shared/thought-signature-validator.js +2 -1
- package/dist/quota/apikey-reset.d.ts +17 -0
- package/dist/quota/apikey-reset.js +43 -0
- package/dist/quota/index.d.ts +2 -0
- package/dist/quota/index.js +1 -0
- package/dist/quota/quota-manager.d.ts +44 -0
- package/dist/quota/quota-manager.js +491 -0
- package/dist/quota/quota-state.d.ts +6 -0
- package/dist/quota/quota-state.js +167 -0
- package/dist/quota/types.d.ts +61 -0
- package/dist/quota/types.js +1 -0
- package/dist/router/virtual-router/bootstrap.js +103 -6
- package/dist/router/virtual-router/engine-health.js +104 -0
- package/dist/router/virtual-router/engine-selection/selection-deps.d.ts +18 -0
- package/dist/router/virtual-router/engine-selection/tier-priority.d.ts +1 -2
- package/dist/router/virtual-router/engine-selection/tier-priority.js +2 -2
- package/dist/router/virtual-router/engine-selection/tier-selection-select.js +34 -10
- package/dist/router/virtual-router/engine-selection/tier-selection.js +250 -6
- package/dist/router/virtual-router/engine-selection.js +2 -2
- package/dist/router/virtual-router/engine.d.ts +16 -1
- package/dist/router/virtual-router/engine.js +320 -42
- package/dist/router/virtual-router/features.js +20 -2
- package/dist/router/virtual-router/success-center.d.ts +10 -0
- package/dist/router/virtual-router/success-center.js +32 -0
- package/dist/router/virtual-router/types.d.ts +48 -0
- package/dist/servertool/clock/config.d.ts +2 -0
- package/dist/servertool/clock/config.js +10 -2
- package/dist/servertool/clock/daemon.js +3 -0
- package/dist/servertool/clock/ntp.d.ts +18 -0
- package/dist/servertool/clock/ntp.js +318 -0
- package/dist/servertool/clock/paths.d.ts +1 -0
- package/dist/servertool/clock/paths.js +3 -0
- package/dist/servertool/clock/state.d.ts +2 -0
- package/dist/servertool/clock/state.js +15 -2
- package/dist/servertool/clock/tasks.d.ts +1 -0
- package/dist/servertool/clock/tasks.js +24 -1
- package/dist/servertool/clock/types.d.ts +21 -0
- package/dist/servertool/engine.js +105 -1
- package/dist/servertool/handlers/antigravity-thought-signature-bootstrap.d.ts +1 -0
- package/dist/servertool/handlers/antigravity-thought-signature-bootstrap.js +201 -0
- package/dist/servertool/handlers/clock-auto.js +39 -4
- package/dist/servertool/handlers/clock.js +145 -16
- package/dist/servertool/handlers/followup-request-builder.js +84 -0
- package/dist/servertool/handlers/stop-message-auto.js +1 -1
- package/dist/servertool/server-side-tools.d.ts +1 -0
- package/dist/servertool/server-side-tools.js +1 -0
- package/dist/servertool/types.d.ts +2 -0
- package/dist/tools/apply-patch/execution-capturer.js +24 -3
- package/package.json +3 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cacheAntigravityRequestSessionId, extractAntigravityGeminiSessionId,
|
|
1
|
+
import { ANTIGRAVITY_GLOBAL_ALIAS_KEY, cacheAntigravityRequestSessionId, extractAntigravityGeminiSessionId, lookupAntigravitySessionSignatureEntry, shouldTreatAsMissingThoughtSignature } from '../antigravity-session-signature.js';
|
|
2
2
|
const REQUEST_FIELDS = [
|
|
3
3
|
'contents',
|
|
4
4
|
'systemInstruction',
|
|
@@ -29,6 +29,51 @@ const TOOL_PARAM_WHITELIST = {
|
|
|
29
29
|
function isRecord(value) {
|
|
30
30
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
31
31
|
}
|
|
32
|
+
function extractAntigravityAliasKeyFromRequestId(value) {
|
|
33
|
+
if (typeof value !== 'string') {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const raw = value.trim();
|
|
37
|
+
if (!raw) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
const match = raw.match(/antigravity\.([^.\\s]+)/i);
|
|
41
|
+
const alias = match && match[1] ? match[1].trim() : '';
|
|
42
|
+
if (!alias) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
return `antigravity.${alias}`.toLowerCase();
|
|
46
|
+
}
|
|
47
|
+
function resolveAntigravityAliasKey(adapterContext, requestIdHint) {
|
|
48
|
+
const ctxAny = adapterContext;
|
|
49
|
+
const candidates = [
|
|
50
|
+
ctxAny && typeof ctxAny.runtimeKey === 'string' ? String(ctxAny.runtimeKey) : '',
|
|
51
|
+
ctxAny && typeof ctxAny.providerKey === 'string' ? String(ctxAny.providerKey) : '',
|
|
52
|
+
ctxAny && typeof ctxAny.providerId === 'string' ? String(ctxAny.providerId) : '',
|
|
53
|
+
ctxAny && typeof ctxAny.requestId === 'string' ? String(ctxAny.requestId) : '',
|
|
54
|
+
typeof requestIdHint === 'string' ? String(requestIdHint) : ''
|
|
55
|
+
].filter((v) => typeof v === 'string' && v.trim().length);
|
|
56
|
+
for (const value of candidates) {
|
|
57
|
+
const trimmed = value.trim();
|
|
58
|
+
const lower = trimmed.toLowerCase();
|
|
59
|
+
if (lower === 'antigravity') {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (lower.startsWith('antigravity.')) {
|
|
63
|
+
const parts = trimmed.split('.');
|
|
64
|
+
if (parts.length >= 2 && parts[0] && parts[1]) {
|
|
65
|
+
return `${parts[0].trim()}.${parts[1].trim()}`.toLowerCase();
|
|
66
|
+
}
|
|
67
|
+
const extracted = extractAntigravityAliasKeyFromRequestId(trimmed);
|
|
68
|
+
if (extracted)
|
|
69
|
+
return extracted;
|
|
70
|
+
}
|
|
71
|
+
const extracted = extractAntigravityAliasKeyFromRequestId(trimmed);
|
|
72
|
+
if (extracted)
|
|
73
|
+
return extracted;
|
|
74
|
+
}
|
|
75
|
+
return 'antigravity.unknown';
|
|
76
|
+
}
|
|
32
77
|
function normalizeSchemaTypes(value) {
|
|
33
78
|
if (!value || typeof value !== 'object')
|
|
34
79
|
return value;
|
|
@@ -463,19 +508,23 @@ function shouldEnableAntigravitySignature(adapterContext) {
|
|
|
463
508
|
if (protocol !== 'gemini-chat') {
|
|
464
509
|
return false;
|
|
465
510
|
}
|
|
466
|
-
|
|
467
|
-
|
|
511
|
+
const ctxAny = adapterContext;
|
|
512
|
+
const providerIdOrKeyRaw = typeof ctxAny.providerId === 'string'
|
|
513
|
+
? String(ctxAny.providerId)
|
|
514
|
+
: typeof ctxAny.providerKey === 'string'
|
|
515
|
+
? String(ctxAny.providerKey)
|
|
516
|
+
: typeof ctxAny.runtimeKey === 'string'
|
|
517
|
+
? String(ctxAny.runtimeKey)
|
|
518
|
+
: '';
|
|
519
|
+
// NOTE: AdapterContext may carry providerKey (e.g. "antigravity.<alias>.<model>") instead of bare providerId.
|
|
468
520
|
// Treat the first segment as the effective provider id for compatibility checks.
|
|
469
|
-
const providerIdOrKey =
|
|
521
|
+
const providerIdOrKey = providerIdOrKeyRaw.trim().toLowerCase();
|
|
470
522
|
const effectiveProviderId = providerIdOrKey.split('.')[0] ?? '';
|
|
471
523
|
return effectiveProviderId === 'antigravity';
|
|
472
524
|
}
|
|
473
|
-
function injectAntigravityThoughtSignature(requestNode) {
|
|
474
|
-
|
|
475
|
-
const signature = getAntigravitySessionSignature(sessionId);
|
|
476
|
-
if (!signature) {
|
|
525
|
+
function injectAntigravityThoughtSignature(requestNode, signature) {
|
|
526
|
+
if (!signature || !signature.trim())
|
|
477
527
|
return;
|
|
478
|
-
}
|
|
479
528
|
const contents = requestNode.contents;
|
|
480
529
|
if (!Array.isArray(contents)) {
|
|
481
530
|
return;
|
|
@@ -491,7 +540,7 @@ function injectAntigravityThoughtSignature(requestNode) {
|
|
|
491
540
|
continue;
|
|
492
541
|
const existing = part.thoughtSignature;
|
|
493
542
|
if (shouldTreatAsMissingThoughtSignature(existing)) {
|
|
494
|
-
part.thoughtSignature = signature;
|
|
543
|
+
part.thoughtSignature = signature.trim();
|
|
495
544
|
}
|
|
496
545
|
}
|
|
497
546
|
}
|
|
@@ -520,10 +569,18 @@ export function wrapGeminiCliRequest(payload, adapterContext) {
|
|
|
520
569
|
(typeof root.userAgent === 'string' && root.userAgent.trim().toLowerCase() === 'antigravity') ||
|
|
521
570
|
(typeof root.requestId === 'string' && root.requestId.trim().toLowerCase().startsWith('agent-'));
|
|
522
571
|
if (enableSignature) {
|
|
572
|
+
const aliasKey = resolveAntigravityAliasKey(adapterContext, root.requestId);
|
|
573
|
+
// Antigravity-Manager alignment: derive sessionId from request contents (first user text / JSON fallback),
|
|
574
|
+
// not from external session/conversation identifiers injected by other clients/hosts.
|
|
575
|
+
const sessionId = extractAntigravityGeminiSessionId(requestNode);
|
|
576
|
+
const directLookup = lookupAntigravitySessionSignatureEntry(aliasKey, sessionId, { hydrate: true });
|
|
577
|
+
const lookup = typeof directLookup.signature === 'string' && directLookup.signature.trim().length
|
|
578
|
+
? directLookup
|
|
579
|
+
: lookupAntigravitySessionSignatureEntry(ANTIGRAVITY_GLOBAL_ALIAS_KEY, sessionId, { hydrate: true });
|
|
580
|
+
const effectiveSessionId = typeof lookup.sourceSessionId === 'string' && lookup.sourceSessionId.trim().length ? lookup.sourceSessionId.trim() : sessionId;
|
|
523
581
|
// Antigravity-Manager alignment:
|
|
524
582
|
if (adapterContext) {
|
|
525
583
|
try {
|
|
526
|
-
const sessionId = extractAntigravityGeminiSessionId(requestNode);
|
|
527
584
|
const ctxAny = adapterContext;
|
|
528
585
|
const keys = [
|
|
529
586
|
adapterContext.requestId,
|
|
@@ -531,14 +588,16 @@ export function wrapGeminiCliRequest(payload, adapterContext) {
|
|
|
531
588
|
typeof ctxAny.groupRequestId === 'string' ? String(ctxAny.groupRequestId) : ''
|
|
532
589
|
].filter((k) => typeof k === 'string' && k.trim().length);
|
|
533
590
|
for (const key of keys) {
|
|
534
|
-
cacheAntigravityRequestSessionId(key,
|
|
591
|
+
cacheAntigravityRequestSessionId(key, aliasKey, effectiveSessionId);
|
|
535
592
|
}
|
|
536
593
|
}
|
|
537
594
|
catch {
|
|
538
595
|
// best-effort only
|
|
539
596
|
}
|
|
540
597
|
}
|
|
541
|
-
|
|
598
|
+
if (typeof lookup.signature === 'string' && lookup.signature.trim().length) {
|
|
599
|
+
injectAntigravityThoughtSignature(requestNode, lookup.signature);
|
|
600
|
+
}
|
|
542
601
|
}
|
|
543
602
|
// Cloud Code Assist request wrapper should not carry metadata/action/web_search/stream.
|
|
544
603
|
delete requestNode.metadata;
|
|
@@ -1,6 +1,26 @@
|
|
|
1
|
-
export declare
|
|
1
|
+
export declare function configureAntigravitySessionSignaturePersistence(input: {
|
|
2
|
+
stateDir: string;
|
|
3
|
+
fileName?: string;
|
|
4
|
+
} | null): void;
|
|
5
|
+
export declare function flushAntigravitySessionSignaturePersistenceSync(): void;
|
|
6
|
+
export declare const ANTIGRAVITY_GLOBAL_ALIAS_KEY = "antigravity.global";
|
|
7
|
+
export declare function getAntigravityThoughtSignatureSentinel(): string;
|
|
8
|
+
export declare function getAntigravityLatestSignatureSessionIdForAlias(aliasKeyInput: string, options?: {
|
|
9
|
+
hydrate?: boolean;
|
|
10
|
+
}): string | undefined;
|
|
11
|
+
export declare function cacheAntigravityRequestSessionId(requestId: string, aliasKey: string, sessionId: string): void;
|
|
2
12
|
export declare function cacheAntigravityRequestSessionId(requestId: string, sessionId: string): void;
|
|
13
|
+
export declare function cacheAntigravityRequestSessionMeta(requestId: string, meta: {
|
|
14
|
+
aliasKey?: string;
|
|
15
|
+
sessionId: string;
|
|
16
|
+
messageCount?: number;
|
|
17
|
+
}): void;
|
|
3
18
|
export declare function getAntigravityRequestSessionId(requestId: string): string | undefined;
|
|
19
|
+
export declare function getAntigravityRequestSessionMeta(requestId: string): {
|
|
20
|
+
aliasKey: string;
|
|
21
|
+
sessionId: string;
|
|
22
|
+
messageCount: number;
|
|
23
|
+
} | undefined;
|
|
4
24
|
/**
|
|
5
25
|
* Antigravity-Manager alignment: derive a stable session fingerprint for Gemini native requests.
|
|
6
26
|
* - sha256(first user text parts joined), if len>10 and no "<system-reminder>"
|
|
@@ -8,6 +28,53 @@ export declare function getAntigravityRequestSessionId(requestId: string): strin
|
|
|
8
28
|
* - sid = "sid-" + first 16 hex chars
|
|
9
29
|
*/
|
|
10
30
|
export declare function extractAntigravityGeminiSessionId(payload: unknown): string;
|
|
31
|
+
export declare function cacheAntigravitySessionSignature(aliasKey: string, sessionId: string, signature: string, messageCount?: number): void;
|
|
11
32
|
export declare function cacheAntigravitySessionSignature(sessionId: string, signature: string, messageCount?: number): void;
|
|
33
|
+
export declare function lookupAntigravityPinnedAliasForSessionId(sessionIdInput: string, options?: {
|
|
34
|
+
hydrate?: boolean;
|
|
35
|
+
}): string | undefined;
|
|
36
|
+
export declare function unpinAntigravitySessionAliasForSessionId(sessionIdInput: string): void;
|
|
37
|
+
export declare function getAntigravitySessionSignature(aliasKey: string, sessionId: string): string | undefined;
|
|
12
38
|
export declare function getAntigravitySessionSignature(sessionId: string): string | undefined;
|
|
39
|
+
export type AntigravityThoughtSignatureLookupSource = 'session_cache' | 'miss' | 'blocked_unknown_alias' | 'blocked_rewind' | 'expired';
|
|
40
|
+
export type AntigravityThoughtSignatureLookupResult = {
|
|
41
|
+
aliasKey: string;
|
|
42
|
+
sessionId: string;
|
|
43
|
+
cacheKey: string;
|
|
44
|
+
source: AntigravityThoughtSignatureLookupSource;
|
|
45
|
+
signature?: string;
|
|
46
|
+
messageCount?: number;
|
|
47
|
+
sourceSessionId?: string;
|
|
48
|
+
sourceTimestamp?: number;
|
|
49
|
+
};
|
|
50
|
+
export declare function lookupAntigravitySessionSignatureEntry(aliasKeyInput: string, sessionIdInput: string, options?: {
|
|
51
|
+
hydrate?: boolean;
|
|
52
|
+
}): AntigravityThoughtSignatureLookupResult;
|
|
53
|
+
export declare function getAntigravitySessionSignatureEntry(aliasKey: string, sessionId: string): {
|
|
54
|
+
signature: string;
|
|
55
|
+
messageCount: number;
|
|
56
|
+
} | undefined;
|
|
57
|
+
export declare function getAntigravitySessionSignatureEntry(aliasKey: string, sessionId: string, options?: {
|
|
58
|
+
hydrate?: boolean;
|
|
59
|
+
}): {
|
|
60
|
+
signature: string;
|
|
61
|
+
messageCount: number;
|
|
62
|
+
} | undefined;
|
|
63
|
+
export declare function getAntigravitySessionSignatureEntry(sessionId: string, options?: {
|
|
64
|
+
hydrate?: boolean;
|
|
65
|
+
}): {
|
|
66
|
+
signature: string;
|
|
67
|
+
messageCount: number;
|
|
68
|
+
} | undefined;
|
|
69
|
+
export declare function clearAntigravitySessionSignature(aliasKey: string, sessionId: string): void;
|
|
70
|
+
export declare function clearAntigravitySessionSignature(sessionId: string): void;
|
|
71
|
+
export declare function markAntigravitySessionSignatureRewind(aliasKey: string, sessionId: string, messageCount?: number): void;
|
|
72
|
+
/**
|
|
73
|
+
* Clear thoughtSignature caches + pins for a specific (aliasKey, sessionId).
|
|
74
|
+
*
|
|
75
|
+
* Used for "Invalid signature / Corrupted thought signature / thinking.signature" style upstream errors,
|
|
76
|
+
* where keeping a persisted signature would cause repeated 400s after restart.
|
|
77
|
+
*/
|
|
78
|
+
export declare function invalidateAntigravitySessionSignature(aliasKeyInput: string, sessionIdInput: string): void;
|
|
79
|
+
export declare function resetAntigravitySessionSignatureCachesForTests(): void;
|
|
13
80
|
export declare function shouldTreatAsMissingThoughtSignature(value: unknown): boolean;
|