agentfootprint 9.28.0 → 9.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +3 -2
  2. package/dist/adapters/google/aiPlatform.js +23 -1
  3. package/dist/adapters/google/aiPlatform.js.map +1 -1
  4. package/dist/adapters/hosting/googleAgentEngine.js +180 -61
  5. package/dist/adapters/hosting/googleAgentEngine.js.map +1 -1
  6. package/dist/adapters/identity/google.js +18 -4
  7. package/dist/adapters/identity/google.js.map +1 -1
  8. package/dist/adapters/llm/GeminiProvider.js +198 -36
  9. package/dist/adapters/llm/GeminiProvider.js.map +1 -1
  10. package/dist/adapters/llm/OpenAIProvider.js +66 -2
  11. package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
  12. package/dist/adapters/llm/googleGenAI.js +155 -8
  13. package/dist/adapters/llm/googleGenAI.js.map +1 -1
  14. package/dist/adapters/memory/memoryBank.js +250 -6
  15. package/dist/adapters/memory/memoryBank.js.map +1 -1
  16. package/dist/adapters/types.js.map +1 -1
  17. package/dist/artifacts/gcsArtifacts.js +21 -5
  18. package/dist/artifacts/gcsArtifacts.js.map +1 -1
  19. package/dist/embedders/index.js +8 -6
  20. package/dist/embedders/index.js.map +1 -1
  21. package/dist/esm/adapters/google/aiPlatform.d.ts +44 -0
  22. package/dist/esm/adapters/google/aiPlatform.js +23 -1
  23. package/dist/esm/adapters/google/aiPlatform.js.map +1 -1
  24. package/dist/esm/adapters/hosting/googleAgentEngine.d.ts +104 -18
  25. package/dist/esm/adapters/hosting/googleAgentEngine.js +179 -60
  26. package/dist/esm/adapters/hosting/googleAgentEngine.js.map +1 -1
  27. package/dist/esm/adapters/identity/google.d.ts +18 -4
  28. package/dist/esm/adapters/identity/google.js +18 -4
  29. package/dist/esm/adapters/identity/google.js.map +1 -1
  30. package/dist/esm/adapters/llm/GeminiProvider.d.ts +96 -15
  31. package/dist/esm/adapters/llm/GeminiProvider.js +199 -37
  32. package/dist/esm/adapters/llm/GeminiProvider.js.map +1 -1
  33. package/dist/esm/adapters/llm/OpenAIProvider.d.ts +34 -2
  34. package/dist/esm/adapters/llm/OpenAIProvider.js +66 -2
  35. package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
  36. package/dist/esm/adapters/llm/googleGenAI.d.ts +105 -4
  37. package/dist/esm/adapters/llm/googleGenAI.js +152 -7
  38. package/dist/esm/adapters/llm/googleGenAI.js.map +1 -1
  39. package/dist/esm/adapters/memory/memoryBank.d.ts +42 -3
  40. package/dist/esm/adapters/memory/memoryBank.js +249 -5
  41. package/dist/esm/adapters/memory/memoryBank.js.map +1 -1
  42. package/dist/esm/adapters/types.d.ts +27 -0
  43. package/dist/esm/adapters/types.js.map +1 -1
  44. package/dist/esm/artifacts/gcsArtifacts.d.ts +21 -5
  45. package/dist/esm/artifacts/gcsArtifacts.js +21 -5
  46. package/dist/esm/artifacts/gcsArtifacts.js.map +1 -1
  47. package/dist/esm/core/agent/types.d.ts +1 -0
  48. package/dist/esm/embedders/index.js +9 -7
  49. package/dist/esm/embedders/index.js.map +1 -1
  50. package/dist/esm/events/payloads.d.ts +22 -0
  51. package/dist/esm/hosting-providers.d.ts +4 -2
  52. package/dist/esm/hosting-providers.js +4 -2
  53. package/dist/esm/hosting-providers.js.map +1 -1
  54. package/dist/esm/memory-providers.d.ts +1 -1
  55. package/dist/esm/memory-providers.js +4 -2
  56. package/dist/esm/memory-providers.js.map +1 -1
  57. package/dist/esm/providers.js.map +1 -1
  58. package/dist/esm/recorders/observability/AgentThinkingTraceRecorder.js +5 -1
  59. package/dist/esm/recorders/observability/AgentThinkingTraceRecorder.js.map +1 -1
  60. package/dist/esm/recorders/observability/commentary/commentaryTemplates.js +44 -3
  61. package/dist/esm/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
  62. package/dist/hosting-providers.js +5 -2
  63. package/dist/hosting-providers.js.map +1 -1
  64. package/dist/memory-providers.js +5 -2
  65. package/dist/memory-providers.js.map +1 -1
  66. package/dist/providers.js.map +1 -1
  67. package/dist/recorders/observability/AgentThinkingTraceRecorder.js +5 -1
  68. package/dist/recorders/observability/AgentThinkingTraceRecorder.js.map +1 -1
  69. package/dist/recorders/observability/commentary/commentaryTemplates.js +44 -3
  70. package/dist/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
  71. package/dist/types/adapters/google/aiPlatform.d.ts +44 -0
  72. package/dist/types/adapters/google/aiPlatform.d.ts.map +1 -1
  73. package/dist/types/adapters/hosting/googleAgentEngine.d.ts +104 -18
  74. package/dist/types/adapters/hosting/googleAgentEngine.d.ts.map +1 -1
  75. package/dist/types/adapters/identity/google.d.ts +18 -4
  76. package/dist/types/adapters/identity/google.d.ts.map +1 -1
  77. package/dist/types/adapters/llm/GeminiProvider.d.ts +96 -15
  78. package/dist/types/adapters/llm/GeminiProvider.d.ts.map +1 -1
  79. package/dist/types/adapters/llm/OpenAIProvider.d.ts +34 -2
  80. package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
  81. package/dist/types/adapters/llm/googleGenAI.d.ts +105 -4
  82. package/dist/types/adapters/llm/googleGenAI.d.ts.map +1 -1
  83. package/dist/types/adapters/memory/memoryBank.d.ts +42 -3
  84. package/dist/types/adapters/memory/memoryBank.d.ts.map +1 -1
  85. package/dist/types/adapters/types.d.ts +27 -0
  86. package/dist/types/adapters/types.d.ts.map +1 -1
  87. package/dist/types/artifacts/gcsArtifacts.d.ts +21 -5
  88. package/dist/types/artifacts/gcsArtifacts.d.ts.map +1 -1
  89. package/dist/types/core/agent/types.d.ts +1 -0
  90. package/dist/types/core/agent/types.d.ts.map +1 -1
  91. package/dist/types/embedders/index.d.ts.map +1 -1
  92. package/dist/types/events/payloads.d.ts +22 -0
  93. package/dist/types/events/payloads.d.ts.map +1 -1
  94. package/dist/types/hosting-providers.d.ts +4 -2
  95. package/dist/types/hosting-providers.d.ts.map +1 -1
  96. package/dist/types/memory-providers.d.ts +1 -1
  97. package/dist/types/memory-providers.d.ts.map +1 -1
  98. package/dist/types/providers.d.ts.map +1 -1
  99. package/dist/types/recorders/observability/AgentThinkingTraceRecorder.d.ts.map +1 -1
  100. package/dist/types/recorders/observability/commentary/commentaryTemplates.d.ts.map +1 -1
  101. package/package.json +1 -1
@@ -14,32 +14,83 @@
14
14
  * was designed under; where the product name and the API disagree, the API is
15
15
  * the one that has not moved.
16
16
  *
17
- * ── The fit, and it is a good one ───────────────────────────────────────────
17
+ * ── The fit, and the one thing it cost ──────────────────────────────────────
18
18
  * `Session.sessionState` is an arbitrary JSON `Struct`. A `CheckpointEnvelope`
19
19
  * is arbitrary JSON. So the envelope goes in whole, under one key, and comes
20
- * back whole — no event log to fold, no blob encoding to get wrong, no
21
- * per-turn append. That is a materially better fit than the other column's
22
- * session store, which had to learn the hard way that an object handed to an
23
- * event blob comes back as somebody else's `toString()`.
20
+ * back whole — no event log to fold, no blob encoding to get wrong. What it
21
+ * cost is the WRITE VERB, and that took a field trial to learn: state goes in
22
+ * through an appended EVENT, never through a patch. See fact 2b below.
24
23
  *
25
- * ── The four facts that shaped the code, all read off the installed SDK ─────
24
+ * ── The five facts that shaped the code ─────────────────────────────────────
26
25
  * 1. **`sessions.create` takes a caller-supplied `sessionId`.** So our session
27
26
  * id IS the resource id and `hydrate` is one `get` by name. No mapping
28
27
  * table, no listing to find a conversation.
29
28
  * 2. **`create` and `delete` answer a long-running Operation; `get` and
30
- * `patch` answer the Session.** Every write here therefore waits for the
31
- * operation to report `done` before it returns — a `persist` that returned
32
- * early would make the very next `hydrate` a race whose failure mode is
33
- * "no conversation", which nobody can tell from a new user.
29
+ * `appendEvent` answer directly.** Every operation-shaped write here waits
30
+ * for `done` before it returns — a `persist` that returned early would make
31
+ * the very next `hydrate` a race whose failure mode is "no conversation",
32
+ * which nobody can tell from a new user.
33
+ *
34
+ * 2b. **`sessionState` CANNOT be patched. This one is field truth, and it cost
35
+ * a release.** 9.29.0 wrote the steady state as
36
+ * `sessions.patch({ updateMask: 'sessionState,ttl' })`, which every
37
+ * injected-client test accepted because a double will patch anything. An
38
+ * independent field trial ran it against the live service (2026-08-14) and
39
+ * found that turn one stored and **every later turn failed**:
40
+ *
41
+ * HTTP 400 — "Can't update the session state for session …, you can only
42
+ * update it by appending an event."
43
+ *
44
+ * A store that keeps the first turn of a conversation and refuses the
45
+ * second is not a session store, so the verb changed rather than the
46
+ * documentation: `persist` now appends a `SessionEvent` whose
47
+ * `actions.stateDelta` carries the envelope, which the same trial verified
48
+ * end to end (append accepted, `GET` returned the new state).
49
+ *
50
+ * Two consequences worth saying out loud, because they are the difference
51
+ * between this fix and a plausible-looking one:
52
+ *
53
+ * • **A state delta MERGES by top-level key.** This store writes exactly
54
+ * one key — {@link SESSION_STATE_KEY} — so "merge the delta" and
55
+ * "replace our key" are the same outcome for us, and another guest's
56
+ * keys under the same session are left alone either way.
57
+ * • **A conversation now has an event log behind it**, one event per
58
+ * persisted turn, because that is the only writing surface the service
59
+ * offers. Nothing here READS that log — `hydrate` still reads the one
60
+ * envelope out of `sessionState` — so the log is the service's audit
61
+ * trail of our writes and never a second copy of the truth. Sessions
62
+ * are per-conversation and events are small; if that growth matters to
63
+ * you, `forget()` deletes the session and its events together.
34
64
  * 3. **`Session.userId` is required and immutable.** Our port's
35
65
  * `persist(sessionId, envelope)` carries no user, so one has to be
36
66
  * resolved — see {@link AgentEngineSessionsOptions.userId}. Immutable
37
- * means the first write decides forever, which is exactly the ownership
38
- * rule this library already enforces in its own stores; here the service
39
- * enforces it for us.
67
+ * means the first write decides forever, which is the same ownership rule
68
+ * this library enforces in its own stores.
69
+ *
70
+ * **It is metadata, not authorization, and a field trial proved it.** Two
71
+ * sessions were created under `alice` and `bob`; the project's ordinary ADC
72
+ * principal then read BOTH by name, presenting neither end-user identity
73
+ * (FINDINGS "Native Agent Runtime Sessions"). `userId` is what a listing
74
+ * filters on and what a first write pins — it is not a check the service
75
+ * performs on a read. So the sentence "here the service enforces it for us"
76
+ * would be false: anyone who can call the API with your project's
77
+ * credentials and can guess a session id can read that conversation.
78
+ *
79
+ * Where the check belongs is above this port, and this library already has
80
+ * it: `envelopeOwner` records who a conversation belongs to, and the
81
+ * host/gateway is what must compare that to the authenticated caller
82
+ * before handing a session id down here. This adapter is a STORE. Nothing
83
+ * that only stores can tell an impostor from an owner.
40
84
  * 4. **`ttl` is input-only with a 24-hour floor**, and `expireTime` always
41
- * comes back. Sliding expiry is free; an hour-long TTL is not available at
42
- * any price.
85
+ * comes back. An hour-long TTL is not available at any price.
86
+ *
87
+ * **Sliding expiry is NOT claimed here**, and that changed with fact 2b. A
88
+ * `ttl` is sent on `create`, where the service takes it; later turns append
89
+ * an event, and whether an appended event renews the expiry is a service
90
+ * behaviour nothing in this repository has measured. Rather than send an
91
+ * unverified second call per turn to "refresh" it — a write whose only
92
+ * evidence would be that it did not error — the adapter sends the ttl once
93
+ * and says so. See {@link AgentEngineSessionsOptions.ttl}.
43
94
  *
44
95
  * ── The laws it inherits rather than re-implements ──────────────────────────
45
96
  * `checkEnvelope` runs on the way OUT and on the way IN, so an envelope whose
@@ -65,13 +116,33 @@ const ADAPTER = 'agentEngineSessions';
65
116
  export const SESSION_STATE_KEY = 'agentfootprint.envelope';
66
117
  /** What a conversation that named nobody is stored under. */
67
118
  export const DEFAULT_USER_ID = 'agentfootprint-anonymous';
119
+ /**
120
+ * The `author` on every event this store appends, unless
121
+ * {@link AgentEngineSessionsOptions.eventAuthor} names another.
122
+ *
123
+ * The service requires the field and treats it as free text. This name says
124
+ * which library wrote the turn, which is the useful thing to see in the console
125
+ * beside somebody else's agent writing to the same engine.
126
+ */
127
+ export const SESSION_EVENT_AUTHOR = 'agentfootprint';
68
128
  /**
69
129
  * Conversations in Vertex AI's session service — the store that survives a
70
130
  * fleet, not just a restart.
71
131
  *
72
- * **Status: contract-shaped and tested; awaiting field use.** Every call is
73
- * exercised through an injected client and pinned against the really-installed
74
- * SDK. None of it has yet answered a request from Google in a real project.
132
+ * **Status: field-validated except the write verb, which is field-CORRECTED.**
133
+ * An independent trial ran this adapter against a live Agent Runtime engine
134
+ * (2026-08-14) and everything below answered a real request from Google:
135
+ * creating first-turn sessions from real envelopes, hydrating them through a
136
+ * fresh instance, owners preserved, paged `listByUser` filtering, `ownerOf`,
137
+ * an unknown envelope format refused before storage, and idempotent `forget`.
138
+ *
139
+ * The one thing that FAILED was the second write to an existing session — the
140
+ * core job — because 9.29.0 patched `sessionState` and the service refuses
141
+ * that. The trial recovered the service's own words and verified the repair
142
+ * path (`appendEvent` with `actions.stateDelta`, then a `GET` showing the new
143
+ * state) with a raw diagnostic. This adapter now uses that verb; the repair is
144
+ * built on measured service behaviour and tested here, but the corrected write
145
+ * has not itself been re-run through this adapter in a live project.
75
146
  *
76
147
  * @example A standing agent whose conversations are shared across instances
77
148
  * import { standingAgent, nodeHost } from 'agentfootprint/hosting';
@@ -102,6 +173,60 @@ export function agentEngineSessions(options) {
102
173
  `bug rather than surface it. Build a new store if you need one after closing this.`);
103
174
  };
104
175
  const nameOf = (sessionId) => `${scope.parent}/sessions/${safeResourceId(sessionId)}`;
176
+ /**
177
+ * Does a session by this name exist? Asked ONLY to tell "there is nothing to
178
+ * append to" apart from "the append itself was refused".
179
+ *
180
+ * The live trial proved the two ends of the write path — `create` stores a
181
+ * new conversation, `appendEvent` updates an existing one — and left the
182
+ * middle unmeasured: what the service answers when you append to a session
183
+ * that is not there. Branching on an assumed 404 would put the FIRST turn of
184
+ * every conversation on a guess. So a failed append asks the resource itself,
185
+ * which is a fact rather than a convention, and costs one call on the one
186
+ * turn where the append was never going to work anyway.
187
+ */
188
+ const missing = async (name) => {
189
+ try {
190
+ await sessions.get({ name });
191
+ return false;
192
+ }
193
+ catch (err) {
194
+ // Anything that is not a clean "no such session" leaves the append's own
195
+ // failure standing — it is the one that says what went wrong.
196
+ return isNotFound(err);
197
+ }
198
+ };
199
+ /**
200
+ * Write the envelope onto an EXISTING session, as one appended event.
201
+ *
202
+ * Answers `false` — rather than raising — for the one case the caller has a
203
+ * repair for: there is no session here yet, so it has to be created.
204
+ */
205
+ const append = async (name, stateDelta) => {
206
+ try {
207
+ await sessions.appendEvent({
208
+ name,
209
+ requestBody: {
210
+ author: options.eventAuthor ?? SESSION_EVENT_AUTHOR,
211
+ // Required, and one per persisted turn. It groups the events of one
212
+ // invocation on the service's side; this store writes exactly one
213
+ // event per turn, so a fresh id per call is the honest grouping.
214
+ invocationId: newInvocationId(),
215
+ timestamp: new Date().toISOString(),
216
+ // ONE top-level key — see the module header. A state delta merges by
217
+ // top-level key, so this replaces our envelope and touches nothing
218
+ // else in the struct.
219
+ actions: { stateDelta },
220
+ },
221
+ });
222
+ return true;
223
+ }
224
+ catch (err) {
225
+ if (isNotFound(err) || (await missing(name)))
226
+ return false;
227
+ throw googleSdkFailure(ADAPTER, 'sessions.appendEvent', err);
228
+ }
229
+ };
105
230
  return {
106
231
  parent: scope.parent,
107
232
  async hydrate(sessionId) {
@@ -144,54 +269,42 @@ export function agentEngineSessions(options) {
144
269
  // read back is one it has no business writing.
145
270
  const checked = checkEnvelope(envelope, sessionId);
146
271
  const name = nameOf(sessionId);
147
- const body = {
148
- sessionState: { [SESSION_STATE_KEY]: checked },
149
- ...(options.ttl !== undefined && { ttl: options.ttl }),
150
- };
151
- // PATCH first, CREATE on 404 — rather than the other way round.
272
+ const state = { [SESSION_STATE_KEY]: checked };
273
+ // APPEND first, CREATE when there is no session to append to.
152
274
  //
153
- // The steady state of a conversation is "it already exists": a session
154
- // is created once and written on every turn after that. Trying create
155
- // first would mean one guaranteed-to-fail call per turn for the life of
156
- // every conversation, and would burn a long-running operation to learn
157
- // something a patch answers directly.
158
- try {
159
- await sessions.patch({
160
- name,
161
- // Only the fields we own. Without a mask a patch is a REPLACE, and a
162
- // replace would drop `userId` — which is immutable, so the service
163
- // would refuse the write and a conversation would stop persisting.
164
- updateMask: maskFor(body),
165
- requestBody: body,
166
- });
275
+ // The steady state of a conversation is "it already exists": created
276
+ // once, written on every turn after that. So the ordinary turn costs one
277
+ // call, and the extra call is paid on turn one only.
278
+ //
279
+ // Appending — not patching. `sessions.patch` with a `sessionState` mask is
280
+ // refused by the live service (module header, fact 2b); it is the verb
281
+ // 9.29.0 used and the reason a second turn could not be stored.
282
+ if (await append(name, state))
167
283
  return;
168
- }
169
- catch (err) {
170
- if (!isNotFound(err))
171
- throw googleSdkFailure(ADAPTER, 'sessions.patch', err);
172
- }
173
284
  const userId = resolveUserId(sessionId, checked);
174
285
  let created;
175
286
  try {
176
287
  created = await sessions.create({
177
288
  parent: scope.parent,
178
289
  sessionId: safeResourceId(sessionId),
179
- requestBody: { ...body, userId },
290
+ requestBody: {
291
+ sessionState: state,
292
+ ...(options.ttl !== undefined && { ttl: options.ttl }),
293
+ userId,
294
+ },
180
295
  });
181
296
  }
182
297
  catch (err) {
183
298
  // Two writers opened the same conversation at once and the other one
184
299
  // won. That is not a failure: the session exists now, which is all
185
- // this call wanted, so the patch below writes our state onto it.
300
+ // this call wanted, so our state goes on with the same appended event.
186
301
  if (!isAlreadyExists(err))
187
302
  throw googleSdkFailure(ADAPTER, 'sessions.create', err);
188
- try {
189
- await sessions.patch({ name, updateMask: maskFor(body), requestBody: body });
190
- }
191
- catch (patchErr) {
192
- throw googleSdkFailure(ADAPTER, 'sessions.patch', patchErr);
193
- }
194
- return;
303
+ if (await append(name, state))
304
+ return;
305
+ // Created by somebody and gone again before we could write to it.
306
+ // Nothing here can say this turn landed, so it does not say it.
307
+ throw googleSdkFailure(ADAPTER, 'sessions.create', err);
195
308
  }
196
309
  // OUTSIDE the try on purpose: this refusal is already sanitized and
197
310
  // already says what to do, and re-wrapping it would replace a precise
@@ -334,17 +447,23 @@ function userIdResolver(option) {
334
447
  return (_sessionId, envelope) => envelopeOwner(envelope) ?? DEFAULT_USER_ID;
335
448
  }
336
449
  /**
337
- * The update mask for a patch.
450
+ * A fresh `invocationId` for one appended event.
451
+ *
452
+ * The field is required and groups the events of one invocation on the
453
+ * service's side. This store writes exactly one event per persisted turn, so a
454
+ * new id per call is what that grouping honestly is — reusing one across turns
455
+ * would tell the console that a whole conversation was a single invocation.
338
456
  *
339
- * A patch with no mask REPLACES the resource, which would clear `userId` — and
340
- * `userId` is immutable, so the service refuses the write and the conversation
341
- * silently stops persisting. Naming the fields we own is the whole fix.
457
+ * `randomUUID` where the runtime has it, and a time-plus-random id where it
458
+ * does not: this is a correlation label, not a security value, and an adapter
459
+ * that threw on an old runtime because a label could not be minted would be
460
+ * failing a conversation over nothing.
342
461
  */
343
- function maskFor(body) {
344
- const fields = ['sessionState'];
345
- if (body.ttl !== undefined)
346
- fields.push('ttl');
347
- return fields.join(',');
462
+ function newInvocationId() {
463
+ const uuid = globalThis.crypto?.randomUUID;
464
+ if (typeof uuid === 'function')
465
+ return `af-${uuid.call(globalThis.crypto)}`;
466
+ return `af-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
348
467
  }
349
468
  /** The id out of a resource name, which is everything after the last `/`. */
350
469
  function lastSegment(name) {
@@ -1 +1 @@
1
- {"version":3,"file":"googleAgentEngine.js","sourceRoot":"","sources":["../../../../src/adapters/hosting/googleAgentEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"googleAgentEngine.js","sourceRoot":"","sources":["../../../../src/adapters/hosting/googleAgentEngine.ts"],"names":[],"mappings":"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"}
@@ -151,10 +151,24 @@ export interface GoogleIdentityOptions {
151
151
  /**
152
152
  * Vend Google access tokens from whatever credential this environment has.
153
153
  *
154
- * **Status: contract-shaped and tested; awaiting field use.** Every path is
155
- * exercised through an injected client and the loaded surface is pinned
156
- * against the really-installed package. None of it has yet answered a real
157
- * Google token request in a live project.
154
+ * **Status: field-validated for machine identity; refresh bounded.** An
155
+ * independent trial ran this adapter on live Google Cloud (2026-08-14):
156
+ * `googleIdentity({ services: ['aiplatform'] })` vended a real bearer
157
+ * credential from Application Default Credentials, and that credential
158
+ * authorized a Vertex AI request with HTTP 200. The same run proved the
159
+ * `bearer` kind, an expiry about 3,599 seconds out, a second vend without
160
+ * reconstruction, `mode: 'user'` failing CLOSED rather than quietly handing
161
+ * back machine access, a disallowed service failing closed, and
162
+ * `JSON.stringify(credential)` yielding `{"kind":"bearer"}` — no token, no
163
+ * Authorization header.
164
+ *
165
+ * **What is NOT proven:** an expiry-triggered refresh. The trial called the
166
+ * provider twice minutes apart and checked a future expiry; it did not wait an
167
+ * hour. Google's own auth client is what refreshes (this adapter caches the
168
+ * CLIENT, never a token — see {@link CachedGoogleClient}), and that refresh was
169
+ * field-proved on a different door (`gemini({ googleAuthOptions })`). A soak or
170
+ * a controlled expiring-credential double is still owed before anyone claims
171
+ * long-duration production proof for THIS provider.
158
172
  *
159
173
  * @throws when `mode: 'user'` is requested — Google's per-user token vault has
160
174
  * no Node surface, and a machine token returned in its place would be a
@@ -62,10 +62,24 @@ export const CLOUD_PLATFORM_SCOPE = 'https://www.googleapis.com/auth/cloud-platf
62
62
  /**
63
63
  * Vend Google access tokens from whatever credential this environment has.
64
64
  *
65
- * **Status: contract-shaped and tested; awaiting field use.** Every path is
66
- * exercised through an injected client and the loaded surface is pinned
67
- * against the really-installed package. None of it has yet answered a real
68
- * Google token request in a live project.
65
+ * **Status: field-validated for machine identity; refresh bounded.** An
66
+ * independent trial ran this adapter on live Google Cloud (2026-08-14):
67
+ * `googleIdentity({ services: ['aiplatform'] })` vended a real bearer
68
+ * credential from Application Default Credentials, and that credential
69
+ * authorized a Vertex AI request with HTTP 200. The same run proved the
70
+ * `bearer` kind, an expiry about 3,599 seconds out, a second vend without
71
+ * reconstruction, `mode: 'user'` failing CLOSED rather than quietly handing
72
+ * back machine access, a disallowed service failing closed, and
73
+ * `JSON.stringify(credential)` yielding `{"kind":"bearer"}` — no token, no
74
+ * Authorization header.
75
+ *
76
+ * **What is NOT proven:** an expiry-triggered refresh. The trial called the
77
+ * provider twice minutes apart and checked a future expiry; it did not wait an
78
+ * hour. Google's own auth client is what refreshes (this adapter caches the
79
+ * CLIENT, never a token — see {@link CachedGoogleClient}), and that refresh was
80
+ * field-proved on a different door (`gemini({ googleAuthOptions })`). A soak or
81
+ * a controlled expiring-credential double is still owed before anyone claims
82
+ * long-duration production proof for THIS provider.
69
83
  *
70
84
  * @throws when `mode: 'user'` is requested — Google's per-user token vault has
71
85
  * no Node surface, and a machine token returned in its place would be a
@@ -1 +1 @@
1
- {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../../src/adapters/identity/google.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../../src/adapters/identity/google.ts"],"names":[],"mappings":"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"}
@@ -26,18 +26,77 @@
26
26
  * the first call, which reads like a network problem rather than a missing
27
27
  * setting.
28
28
  *
29
+ * ─── Status, per door, because the doors differ ─────────────────────
30
+ *
31
+ * • **Vertex: field-validated.** An independent trial ran this adapter,
32
+ * unchanged since 9.13.0, against a live project through Application Default
33
+ * Credentials: a two-call tool loop on `gemini-2.5-flash` returning the
34
+ * expected answer with real token counts, and a stream delivering 10 content
35
+ * chunks that reconstructed exactly (FINDINGS "Part 1 — native Gemini on
36
+ * Vertex through ADC", "Part 2C"). `geminiEmbedder` passed on the same door.
37
+ * • **Gemini API (AI Studio): NOT field-validated, and not for want of
38
+ * trying.** The trial's key-door calls never reached a model: the old
39
+ * default model answered 404 for a new account, and a current model answered
40
+ * 429 for AI Studio prepayment, which is billing SEPARATE from the Google
41
+ * Cloud account's credit. What that door does with a funded key is
42
+ * untested here, which is why it has no default model.
43
+ * • **Tool calling on a 3.x model: field-validated.** The signature round trip
44
+ * below was built from the trial's captured 400, and the same independent
45
+ * trial then re-ran it on live Vertex against the published fix
46
+ * (2026-08-14): `gemini-3.1-flash-lite` called a tool, the tool answered,
47
+ * the signature went back byte for byte, and the second model call
48
+ * completed with the right answer — two LLM calls, one tool execution, real
49
+ * token counts. What it does NOT cover is a signature attached to a TEXT
50
+ * part with no function call beside it; see below.
51
+ *
29
52
  * ─── Why native, and not `openai({ baseURL })` ──────────────────────
30
53
  *
31
54
  * Google publishes an OpenAI-compatible endpoint, and it does work — for about
32
- * an hour. It authenticates with an OAuth access token that expires and has no
33
- * refresh home in `OpenAIProviderOptions`; its `tools.function.parameters` is
34
- * **OpenAPI**, not JSON Schema, so `$ref` / `oneOf` / `additionalProperties`
35
- * diverge silently; unsupported parameters are ignored rather than refused; and
36
- * its documented response carries no cached- or reasoning-token counts. This
37
- * adapter exists because every one of those is answerable on the native SDK:
38
- * ADC refreshes itself, tools go over as JSON Schema untranslated
39
- * (`parametersJsonSchema`), a forced single tool is expressible, and
40
- * `usageMetadata` reports cached and thinking tokens as separate numbers.
55
+ * an hour. It authenticates with an OAuth access token that expires (9.29.0
56
+ * gives `openai({ apiKey })` a callback form so a long-running process can
57
+ * refresh one, which is a mitigation and not a fix); its
58
+ * `tools.function.parameters` is **OpenAPI**, not JSON Schema, so `$ref` /
59
+ * `oneOf` / `additionalProperties` diverge silently; unsupported parameters are
60
+ * ignored rather than refused; and its documented response carries no cached-
61
+ * or reasoning-token counts. This adapter exists because every one of those is
62
+ * answerable on the native SDK: ADC refreshes itself, tools go over as JSON
63
+ * Schema untranslated (`parametersJsonSchema`), a forced single tool is
64
+ * expressible, and `usageMetadata` reports cached and thinking tokens as
65
+ * separate numbers.
66
+ *
67
+ * A field trial measured both halves of that: the native path completed a call
68
+ * after a forced credential expiry, while the compatible path returned HTTP 401
69
+ * on an expired token (FINDINGS "Part 2B").
70
+ *
71
+ * ─── Thought signatures: the round trip a tool loop cannot skip ─────
72
+ *
73
+ * A current Gemini model does not merely PREFER its thought signature back —
74
+ * it refuses the turn without it. An independent field trial on live GCP ran
75
+ * `gemini-3.1-flash-lite` on Vertex through one ordinary tool loop: the first
76
+ * call asked for the function, the tool ran, and the second call came back
77
+ *
78
+ * 400 INVALID_ARGUMENT — "Function call is missing a thought_signature in
79
+ * functionCall parts. This is required for tools to work correctly …"
80
+ *
81
+ * (FINDINGS "Failure 4"). The cost of that shape is what makes it worth this
82
+ * paragraph: the failure lands AFTER the tool has already executed, so a
83
+ * side-effecting tool has run and the answer is unreachable.
84
+ *
85
+ * So the signature is CARRIED, not dropped. `Part.thoughtSignature` (a base64
86
+ * string on the installed @google/genai 2.16.0 `Part`) is read off the same
87
+ * part as the `functionCall` it belongs to, parked on the port's neutral
88
+ * `toolCalls[].providerMeta`, and written back onto the reconstructed
89
+ * `functionCall` part on the next request — byte for byte, because a signature
90
+ * is checked and not read. This is the same round trip the Anthropic adapter
91
+ * does with signed thinking blocks, one field along: there the carrier is
92
+ * `LLMMessage.thinkingBlocks[].signature`, here it is the tool call itself,
93
+ * because that is where Google puts it.
94
+ *
95
+ * What that does NOT cover, said plainly: a signature attached to a TEXT part
96
+ * of an answer with no function call. The port's assistant turn is a string,
97
+ * and a string has nowhere to keep one. The trial's failure was the functionCall
98
+ * shape; that shape is fixed here, and the other one is named rather than
99
+ * quietly half-handled.
41
100
  *
42
101
  * ─── Limitations (stated, not discovered) ───────────────────────────
43
102
  *
@@ -47,12 +106,12 @@
47
106
  * • **Thought summaries are not requested.** `usage.thinking` is reported
48
107
  * honestly from `thoughtsTokenCount`, and `req.thinking.budget` is threaded
49
108
  * to `thinkingConfig.thinkingBudget` — but `includeThoughts` is deliberately
50
- * left unset, so no `rawThinking` is produced. Gemini's thought parts carry a
51
- * `thoughtSignature` that has to be echoed byte-exact on the next turn, and
52
- * there is no Gemini `ThinkingHandler` in this release to normalize and
53
- * round-trip them. Asking for content nothing can carry would be a leak, not
54
- * a feature. `thinkingConfig.thinkingLevel` has no field on `LLMRequest` and
55
- * is likewise not sent.
109
+ * left unset, so no `rawThinking` is produced and there is no Gemini
110
+ * `ThinkingHandler` in this release to normalize thought TEXT. Asking for
111
+ * content nothing can carry would be a leak, not a feature. Signature
112
+ * round-tripping (above) is a separate thing and does not need one.
113
+ * `thinkingConfig.thinkingLevel` has no field on `LLMRequest` and is
114
+ * likewise not sent.
56
115
  * • `responseJsonSchema` (native structured output) is NOT exposed; use
57
116
  * `.outputSchema(...)`, which goes over as a forced tool — a shape this
58
117
  * adapter DOES carry.
@@ -66,6 +125,15 @@ export interface GeminiPart {
66
125
  readonly text?: string;
67
126
  /** `true` on a thought-summary part. Never joined into visible content. */
68
127
  readonly thought?: boolean;
128
+ /**
129
+ * The model's opaque signature for the thinking behind THIS part — base64,
130
+ * per `Part.thoughtSignature` on the installed @google/genai 2.16.0 surface.
131
+ *
132
+ * Read off a `functionCall` part and written back onto the same part on the
133
+ * next request. Never parsed, never trimmed, never regenerated: the service
134
+ * verifies it, so the only correct handling is byte-for-byte.
135
+ */
136
+ readonly thoughtSignature?: string;
69
137
  readonly functionCall?: {
70
138
  readonly id?: string;
71
139
  readonly name?: string;
@@ -157,6 +225,19 @@ export interface GeminiProviderOptions extends GoogleGenAIConnectionOptions {
157
225
  /**
158
226
  * Default model used when `LLMRequest.model` is `'gemini'` (the shorthand).
159
227
  * A request naming a full model id wins.
228
+ *
229
+ * **Unset behaves differently per door, because the doors behave
230
+ * differently.** On **Vertex** the shorthand resolves to
231
+ * `'gemini-2.5-flash'`, which a live field trial ran end to end through ADC.
232
+ * On the **Gemini API (AI Studio)** door the shorthand is REFUSED by name:
233
+ * the same trial's key-door call to that exact model returned HTTP 404 —
234
+ * *"no longer available to new users"* (FINDINGS "Failure 1") — and no model
235
+ * could be proven working on that door at all, because the account's separate
236
+ * AI Studio prepayment was empty (FINDINGS "Failure 2", a 429 on
237
+ * `gemini-3.1-flash-lite`, which at least proves that id resolves there).
238
+ *
239
+ * Shipping a second silent default nobody has run would be this library
240
+ * guessing on a service's behalf; the refusal names the door and the fix.
160
241
  */
161
242
  readonly defaultModel?: string;
162
243
  /** Default `maxOutputTokens` when the request doesn't set it. Optional. */