@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.
Files changed (71) hide show
  1. package/dist/conversion/codecs/gemini-openai-codec.js +6 -1
  2. package/dist/conversion/compat/actions/anthropic-claude-code-system-prompt.d.ts +4 -6
  3. package/dist/conversion/compat/actions/anthropic-claude-code-system-prompt.js +179 -41
  4. package/dist/conversion/compat/actions/antigravity-thought-signature-cache.js +73 -14
  5. package/dist/conversion/compat/actions/antigravity-thought-signature-prepare.js +165 -10
  6. package/dist/conversion/compat/actions/gemini-cli-request.js +72 -13
  7. package/dist/conversion/compat/antigravity-session-signature.d.ts +68 -1
  8. package/dist/conversion/compat/antigravity-session-signature.js +833 -21
  9. package/dist/conversion/compat/profiles/anthropic-claude-code.json +17 -0
  10. package/dist/conversion/compat/profiles/chat-gemini-cli.json +1 -0
  11. package/dist/conversion/hub/operation-table/semantic-mappers/gemini-mapper.js +33 -8
  12. package/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.js +17 -1
  13. package/dist/conversion/hub/pipeline/compat/compat-profile-store.js +12 -3
  14. package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +1 -0
  15. package/dist/conversion/hub/pipeline/hub-pipeline.js +24 -0
  16. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/index.js +20 -0
  17. package/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.js +26 -1
  18. package/dist/conversion/hub/process/chat-process.js +300 -67
  19. package/dist/conversion/hub/response/provider-response.js +4 -3
  20. package/dist/conversion/shared/gemini-tool-utils.js +134 -9
  21. package/dist/conversion/shared/text-markup-normalizer.js +90 -1
  22. package/dist/conversion/shared/thought-signature-validator.d.ts +1 -1
  23. package/dist/conversion/shared/thought-signature-validator.js +2 -1
  24. package/dist/quota/apikey-reset.d.ts +17 -0
  25. package/dist/quota/apikey-reset.js +43 -0
  26. package/dist/quota/index.d.ts +2 -0
  27. package/dist/quota/index.js +1 -0
  28. package/dist/quota/quota-manager.d.ts +44 -0
  29. package/dist/quota/quota-manager.js +491 -0
  30. package/dist/quota/quota-state.d.ts +6 -0
  31. package/dist/quota/quota-state.js +167 -0
  32. package/dist/quota/types.d.ts +61 -0
  33. package/dist/quota/types.js +1 -0
  34. package/dist/router/virtual-router/bootstrap.js +103 -6
  35. package/dist/router/virtual-router/engine-health.js +104 -0
  36. package/dist/router/virtual-router/engine-selection/selection-deps.d.ts +18 -0
  37. package/dist/router/virtual-router/engine-selection/tier-priority.d.ts +1 -2
  38. package/dist/router/virtual-router/engine-selection/tier-priority.js +2 -2
  39. package/dist/router/virtual-router/engine-selection/tier-selection-select.js +34 -10
  40. package/dist/router/virtual-router/engine-selection/tier-selection.js +250 -6
  41. package/dist/router/virtual-router/engine-selection.js +2 -2
  42. package/dist/router/virtual-router/engine.d.ts +16 -1
  43. package/dist/router/virtual-router/engine.js +320 -42
  44. package/dist/router/virtual-router/features.js +20 -2
  45. package/dist/router/virtual-router/success-center.d.ts +10 -0
  46. package/dist/router/virtual-router/success-center.js +32 -0
  47. package/dist/router/virtual-router/types.d.ts +48 -0
  48. package/dist/servertool/clock/config.d.ts +2 -0
  49. package/dist/servertool/clock/config.js +10 -2
  50. package/dist/servertool/clock/daemon.js +3 -0
  51. package/dist/servertool/clock/ntp.d.ts +18 -0
  52. package/dist/servertool/clock/ntp.js +318 -0
  53. package/dist/servertool/clock/paths.d.ts +1 -0
  54. package/dist/servertool/clock/paths.js +3 -0
  55. package/dist/servertool/clock/state.d.ts +2 -0
  56. package/dist/servertool/clock/state.js +15 -2
  57. package/dist/servertool/clock/tasks.d.ts +1 -0
  58. package/dist/servertool/clock/tasks.js +24 -1
  59. package/dist/servertool/clock/types.d.ts +21 -0
  60. package/dist/servertool/engine.js +105 -1
  61. package/dist/servertool/handlers/antigravity-thought-signature-bootstrap.d.ts +1 -0
  62. package/dist/servertool/handlers/antigravity-thought-signature-bootstrap.js +201 -0
  63. package/dist/servertool/handlers/clock-auto.js +39 -4
  64. package/dist/servertool/handlers/clock.js +145 -16
  65. package/dist/servertool/handlers/followup-request-builder.js +84 -0
  66. package/dist/servertool/handlers/stop-message-auto.js +1 -1
  67. package/dist/servertool/server-side-tools.d.ts +1 -0
  68. package/dist/servertool/server-side-tools.js +1 -0
  69. package/dist/servertool/types.d.ts +2 -0
  70. package/dist/tools/apply-patch/execution-capturer.js +24 -3
  71. package/package.json +3 -2
@@ -1,4 +1,4 @@
1
- import { cacheAntigravityRequestSessionId, extractAntigravityGeminiSessionId, getAntigravitySessionSignature, shouldTreatAsMissingThoughtSignature } from '../antigravity-session-signature.js';
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
- // NOTE: In Hub adapterContext, `providerId` is historically populated with providerKey
467
- // (e.g. "antigravity.<alias>.<model>") rather than the bare provider id.
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 = typeof adapterContext.providerId === 'string' ? adapterContext.providerId.trim().toLowerCase() : '';
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
- const sessionId = extractAntigravityGeminiSessionId(requestNode);
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, sessionId);
591
+ cacheAntigravityRequestSessionId(key, aliasKey, effectiveSessionId);
535
592
  }
536
593
  }
537
594
  catch {
538
595
  // best-effort only
539
596
  }
540
597
  }
541
- injectAntigravityThoughtSignature(requestNode);
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 const DUMMY_THOUGHT_SIGNATURE = "skip_thought_signature_validator";
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;