veryfront 0.1.1241 → 0.1.1242

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 (65) hide show
  1. package/esm/cli/commands/build/handler.d.ts +31 -0
  2. package/esm/cli/commands/build/handler.d.ts.map +1 -1
  3. package/esm/cli/commands/build/handler.js +24 -18
  4. package/esm/deno.js +2 -2
  5. package/esm/extensions/ext-llm-google/src/google-provider.d.ts.map +1 -1
  6. package/esm/extensions/ext-llm-google/src/google-provider.js +4 -1
  7. package/esm/extensions/ext-llm-google/src/google-request-builder.d.ts.map +1 -1
  8. package/esm/extensions/ext-llm-google/src/google-request-builder.js +9 -9
  9. package/esm/extensions/ext-llm-google/src/google-thought-signatures.d.ts +14 -1
  10. package/esm/extensions/ext-llm-google/src/google-thought-signatures.d.ts.map +1 -1
  11. package/esm/extensions/ext-llm-google/src/google-thought-signatures.js +128 -9
  12. package/esm/extensions/ext-llm-openai/src/openai-chat-stream.d.ts.map +1 -1
  13. package/esm/extensions/ext-llm-openai/src/openai-chat-stream.js +6 -3
  14. package/esm/extensions/ext-llm-openai/src/openai-provider.d.ts.map +1 -1
  15. package/esm/extensions/ext-llm-openai/src/openai-provider.js +35 -2
  16. package/esm/src/agent/hosted/durable-chat-run-start.d.ts +2 -1
  17. package/esm/src/agent/hosted/durable-chat-run-start.d.ts.map +1 -1
  18. package/esm/src/agent/hosted/durable-chat-run-start.js +29 -4
  19. package/esm/src/agent/runtime/chat-stream-handler.d.ts +1 -0
  20. package/esm/src/agent/runtime/chat-stream-handler.d.ts.map +1 -1
  21. package/esm/src/agent/runtime/chat-stream-handler.js +1 -0
  22. package/esm/src/agent/runtime/index.d.ts.map +1 -1
  23. package/esm/src/agent/runtime/index.js +29 -2
  24. package/esm/src/agent/runtime/provider-metadata.d.ts +6 -0
  25. package/esm/src/agent/runtime/provider-metadata.d.ts.map +1 -0
  26. package/esm/src/agent/runtime/provider-metadata.js +12 -0
  27. package/esm/src/agent/runtime/runtime-tool-types.d.ts +2 -0
  28. package/esm/src/agent/runtime/runtime-tool-types.d.ts.map +1 -1
  29. package/esm/src/agent/runtime/text-generation-runtime-message-converter.d.ts.map +1 -1
  30. package/esm/src/agent/runtime/text-generation-runtime-message-converter.js +19 -0
  31. package/esm/src/agent/runtime/text-generation-runtime-message-types.d.ts +1 -0
  32. package/esm/src/agent/runtime/text-generation-runtime-message-types.d.ts.map +1 -1
  33. package/esm/src/agent/service/routes.d.ts +1 -0
  34. package/esm/src/agent/service/routes.d.ts.map +1 -1
  35. package/esm/src/agent/streaming/lifecycle/live-adapter.d.ts.map +1 -1
  36. package/esm/src/agent/streaming/lifecycle/live-adapter.js +1 -0
  37. package/esm/src/agent/streaming/lifecycle/reducer.d.ts.map +1 -1
  38. package/esm/src/agent/streaming/lifecycle/reducer.js +3 -0
  39. package/esm/src/agent/streaming/lifecycle/runtime-provider-adapter.d.ts.map +1 -1
  40. package/esm/src/agent/streaming/lifecycle/runtime-provider-adapter.js +3 -0
  41. package/esm/src/agent/streaming/lifecycle/types.d.ts +2 -0
  42. package/esm/src/agent/streaming/lifecycle/types.d.ts.map +1 -1
  43. package/esm/src/build/embedded/preset.d.ts +4 -0
  44. package/esm/src/build/embedded/preset.d.ts.map +1 -1
  45. package/esm/src/build/embedded/preset.js +84 -15
  46. package/esm/src/html/hydration-script-builder/hydration-runtime.generated.js +1 -1
  47. package/esm/src/platform/compat/http/pinned-fetch.d.ts +1 -1
  48. package/esm/src/provider/veryfront-cloud/model-catalog.d.ts +2 -0
  49. package/esm/src/provider/veryfront-cloud/model-catalog.d.ts.map +1 -1
  50. package/esm/src/provider/veryfront-cloud/model-catalog.js +6 -0
  51. package/esm/src/provider/veryfront-cloud/openai.d.ts +1 -0
  52. package/esm/src/provider/veryfront-cloud/openai.d.ts.map +1 -1
  53. package/esm/src/provider/veryfront-cloud/openai.js +1 -0
  54. package/esm/src/provider/veryfront-cloud/provider.d.ts.map +1 -1
  55. package/esm/src/provider/veryfront-cloud/provider.js +7 -1
  56. package/esm/src/proxy/handler.d.ts.map +1 -1
  57. package/esm/src/proxy/handler.js +2 -0
  58. package/esm/src/proxy/project-metadata-client.d.ts +6 -1
  59. package/esm/src/proxy/project-metadata-client.d.ts.map +1 -1
  60. package/esm/src/proxy/project-metadata-client.js +8 -3
  61. package/esm/src/runtime/runtime-bridge.d.ts.map +1 -1
  62. package/esm/src/runtime/runtime-bridge.js +13 -0
  63. package/esm/src/utils/version-constant.d.ts +1 -1
  64. package/esm/src/utils/version-constant.js +1 -1
  65. package/package.json +8 -8
@@ -70,4 +70,35 @@ export declare const parseBuildArgs: (args: ParsedArgs) => import("../../shared/
70
70
  */
71
71
  export declare function assertEmbeddedPresetFlags(args: ParsedArgs, preset: string | undefined): void;
72
72
  export declare function handleBuildCommand(args: ParsedArgs): Promise<void>;
73
+ /**
74
+ * Total bytes of the artifacts the embedded manifest declares.
75
+ *
76
+ * The production build reports the size of what it emitted, so the embedded
77
+ * preset reports the same thing rather than leaving the field at zero. The
78
+ * manifest is the artifact list, so it cannot drift from what was written.
79
+ * A missing file is skipped because `buildEmbeddedPreset` only warns when an
80
+ * RSC bundle or route fails. Other filesystem errors still fail the build so
81
+ * JSON output cannot report a partial size as a successful result.
82
+ *
83
+ * @internal
84
+ */
85
+ export declare function sumEmbeddedOutputSize(outDir: string, manifest: {
86
+ routes: ReadonlyArray<{
87
+ file: string;
88
+ }>;
89
+ assets: ReadonlyArray<{
90
+ file: string;
91
+ }>;
92
+ }, fileSystem?: {
93
+ stat(path: string): Promise<{
94
+ size: number;
95
+ }>;
96
+ }): Promise<number>;
97
+ /** @internal */
98
+ export declare function countEmbeddedPages(manifest: {
99
+ routes: ReadonlyArray<{
100
+ type: string;
101
+ file: string;
102
+ }>;
103
+ }, pagesIndexIsShell: boolean): number;
73
104
  //# sourceMappingURL=handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/build/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAO3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIxD;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;GAe9B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;GAAiC,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;GAaA,CAAC;AA6B5B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,IAAI,CAYN;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCxE"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/build/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAO3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIxD;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;GAe9B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;GAAiC,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;GAaA,CAAC;AA6B5B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,IAAI,CAYN;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE;IAAE,MAAM,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,EAC9F,UAAU,CAAC,EAAE;IAAE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAC7D,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED,gBAAgB;AAChB,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE;IAAE,MAAM,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,EACnE,iBAAiB,EAAE,OAAO,GACzB,MAAM,CAKR"}
@@ -125,22 +125,22 @@ export async function handleBuildCommand(args) {
125
125
  dryRun: opts.dryRun,
126
126
  });
127
127
  }
128
- /** The synthetic shell route `buildEmbeddedPreset` prepends to every manifest. */
129
- const EMBEDDED_APP_SHELL_FILE = "embedded/app.js";
130
128
  /**
131
129
  * Total bytes of the artifacts the embedded manifest declares.
132
130
  *
133
131
  * The production build reports the size of what it emitted, so the embedded
134
132
  * preset reports the same thing rather than leaving the field at zero. The
135
133
  * manifest is the artifact list, so it cannot drift from what was written.
136
- * A file the preset failed to emit is skipped: `buildEmbeddedPreset` only warns
137
- * when an RSC bundle or a route fails, and a size roll-up must not turn that
138
- * warning into a hard error.
134
+ * A missing file is skipped because `buildEmbeddedPreset` only warns when an
135
+ * RSC bundle or route fails. Other filesystem errors still fail the build so
136
+ * JSON output cannot report a partial size as a successful result.
137
+ *
138
+ * @internal
139
139
  */
140
- async function sumEmbeddedOutputSize(outDir, manifest) {
140
+ export async function sumEmbeddedOutputSize(outDir, manifest, fileSystem) {
141
141
  const { join } = await import("../../../src/platform/compat/path/index.js");
142
- const { createFileSystem } = await import("../../../src/platform/index.js");
143
- const fs = createFileSystem();
142
+ const { createFileSystem, isNotFoundError } = await import("../../../src/platform/index.js");
143
+ const fs = fileSystem ?? createFileSystem();
144
144
  const files = new Set(["embedded/manifest.json"]);
145
145
  for (const route of manifest.routes)
146
146
  files.add(route.file);
@@ -151,12 +151,19 @@ async function sumEmbeddedOutputSize(outDir, manifest) {
151
151
  try {
152
152
  total += (await fs.stat(join(outDir, file))).size;
153
153
  }
154
- catch {
155
- // Not emitted — already reported by the preset as a warning.
154
+ catch (error) {
155
+ if (!isNotFoundError(error))
156
+ throw error;
157
+ // Not emitted, already reported by the preset as a warning.
156
158
  }
157
159
  }
158
160
  return total;
159
161
  }
162
+ /** @internal */
163
+ export function countEmbeddedPages(manifest, pagesIndexIsShell) {
164
+ return manifest.routes.filter((route) => route.type === "page" &&
165
+ (!pagesIndexIsShell || route.file !== "embedded/pages/index.js")).length;
166
+ }
160
167
  /**
161
168
  * Run the embedded build, terminating the NDJSON stream ourselves in JSON mode.
162
169
  *
@@ -220,13 +227,14 @@ async function runEmbeddedBuild(projectDir, outputDir) {
220
227
  cliLogger.info(` ${dim("Output:")} ${finalOutput}`);
221
228
  }
222
229
  }
223
- const { manifest } = await buildEmbeddedPreset({
230
+ const { manifest, pagesIndexIsShell } = await buildEmbeddedPreset({
224
231
  projectDir,
225
232
  outDir: finalOutput,
226
233
  runtime: "deno",
227
234
  config,
228
235
  });
229
236
  if (json) {
237
+ const totalSize = await sumEmbeddedOutputSize(finalOutput, manifest);
230
238
  const elapsed = Date.now() - startTime;
231
239
  streamJsonLine({
232
240
  type: "step",
@@ -240,19 +248,17 @@ async function runEmbeddedBuild(projectDir, outputDir) {
240
248
  type: "result",
241
249
  success: true,
242
250
  data: {
243
- // `buildEmbeddedPreset` unshifts a synthetic `/` -> `embedded/app.js`
244
- // shell route on top of the discovered ones, so counting every
245
- // `type: "page"` reports one more page than the project has. Measured
246
- // on a two-page fixture: routes are the shell, `/about`, and `/`, so
247
- // the naive count says 3.
248
- pages: manifest.routes.filter((route) => route.type === "page" && route.file !== EMBEDDED_APP_SHELL_FILE).length,
251
+ // The shell serves `/` and is itself a page. Exclude a discovered Pages
252
+ // index only when that same source supplied the shell. If the App Router
253
+ // supplied the shell, `/index` is a distinct emitted page and still counts.
254
+ pages: countEmbeddedPages(manifest, pagesIndexIsShell),
249
255
  // The default path reports 0 for a build with no splitting stage, and
250
256
  // the embedded preset has none — which is why `--split` is rejected for
251
257
  // it above. Reporting 1 here would answer the same field differently
252
258
  // from the command this is supposed to match.
253
259
  chunks: 0,
254
260
  assets: manifest.assets.length,
255
- totalSize: await sumEmbeddedOutputSize(finalOutput, manifest),
261
+ totalSize,
256
262
  duration_ms: elapsed,
257
263
  outputDir: finalOutput,
258
264
  // `--dry-run` is rejected for this preset, so a build that got here ran.
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.1241",
3
+ "version": "0.1.1242",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "minimumDependencyAge": {
@@ -553,7 +553,7 @@ export default {
553
553
  "lint:cwd-relative-test-reads": "deno run --allow-read scripts/lint/audit-cwd-relative-test-reads.ts",
554
554
  "lint:anti-slop": "deno run --allow-read scripts/lint/audit-anti-slop.ts",
555
555
  "lint:dnt-meta-properties": "deno run --config=scripts/test.deno.json --frozen --allow-read scripts/build/dnt-meta-property-safety.ts",
556
- "test:scripts": "deno test --config=scripts/test.deno.json --no-check --allow-read --allow-write --allow-run scripts/ci/prepare-rc-build.test.ts scripts/ci/publish-npm-packages.test.ts scripts/ci/setup-deno-workflow.test.ts scripts/build/compile-binary.test.ts scripts/build/dnt-meta-property-safety.test.ts scripts/build/dnt-polyfill.test.ts scripts/build/generate-sbom.test.ts scripts/build/generated-artifact-checks.test.ts scripts/build/npm-dependency-sources.test.ts scripts/build/npm-extension-package-metadata.test.ts scripts/build/npm-package-metadata.test.ts scripts/build/npm-react-shims.test.ts scripts/build/npm-runtime-helper-contract.test.ts scripts/build/prepare-framework-sources.test.ts scripts/build/report-artifact-sizes.test.ts scripts/build/run-generate.test.ts scripts/docs/docs-coverage.test.ts scripts/docs/generate-api-reference.test.ts scripts/docs/guide-validation.test.ts scripts/lint/audit-chat-composability.test.ts scripts/lint/audit-rfc-status.test.ts scripts/lint/audit-core-deps.test.ts scripts/lint/audit-cwd-relative-test-reads.test.ts scripts/lint/audit-cross-runtime-jsr.test.ts scripts/lint/audit-dependency-boundaries.test.ts scripts/lint/audit-extension-capabilities.test.ts scripts/lint/audit-extension-contracts.test.ts scripts/lint/audit-deps.test.ts scripts/lint/check-module-boundaries.test.ts scripts/lint/lint-config.test.ts scripts/lint/ban-test-only.test.ts scripts/lint/check-sanitizer-baseline.test.ts scripts/lint/check-skipped-tests-baseline.test.ts scripts/lint/audit-anti-slop.test.ts scripts/lint/check-test-typecheck-baseline.test.ts scripts/lint/check-coverage.test.ts scripts/security/audit-npm.test.ts scripts/security/secret-scanning-config.test.ts scripts/security/submit-dependency-snapshot.test.ts scripts/test/template-runtime-e2e.test.ts && deno task test:tool-search-live",
556
+ "test:scripts": "deno test --config=scripts/test.deno.json --no-check --allow-read --allow-write --allow-run scripts/build/feature-files-detection.test.ts scripts/ci/prepare-rc-build.test.ts scripts/ci/publish-npm-packages.test.ts scripts/ci/setup-deno-workflow.test.ts scripts/build/compile-binary.test.ts scripts/build/dnt-meta-property-safety.test.ts scripts/build/dnt-polyfill.test.ts scripts/build/generate-sbom.test.ts scripts/build/generated-artifact-checks.test.ts scripts/build/npm-dependency-sources.test.ts scripts/build/npm-extension-package-metadata.test.ts scripts/build/npm-package-metadata.test.ts scripts/build/npm-react-shims.test.ts scripts/build/npm-runtime-helper-contract.test.ts scripts/build/prepare-framework-sources.test.ts scripts/build/report-artifact-sizes.test.ts scripts/build/run-generate.test.ts scripts/docs/docs-coverage.test.ts scripts/docs/generate-api-reference.test.ts scripts/docs/guide-validation.test.ts scripts/lint/audit-chat-composability.test.ts scripts/lint/audit-rfc-status.test.ts scripts/lint/audit-core-deps.test.ts scripts/lint/audit-cwd-relative-test-reads.test.ts scripts/lint/audit-cross-runtime-jsr.test.ts scripts/lint/audit-dependency-boundaries.test.ts scripts/lint/audit-extension-capabilities.test.ts scripts/lint/audit-extension-contracts.test.ts scripts/lint/audit-deps.test.ts scripts/lint/check-module-boundaries.test.ts scripts/lint/lint-config.test.ts scripts/lint/ban-test-only.test.ts scripts/lint/check-sanitizer-baseline.test.ts scripts/lint/check-skipped-tests-baseline.test.ts scripts/lint/audit-anti-slop.test.ts scripts/lint/check-test-typecheck-baseline.test.ts scripts/lint/check-coverage.test.ts scripts/security/audit-npm.test.ts scripts/security/secret-scanning-config.test.ts scripts/security/submit-dependency-snapshot.test.ts scripts/test/template-runtime-e2e.test.ts && deno task test:tool-search-live",
557
557
  "test:sentry-runtime-packages": "deno test --config=scripts/test.deno.json --no-check --no-lock --allow-read --allow-write --allow-run --allow-env=DENO_DIR,HOME,XDG_CACHE_HOME,LOCALAPPDATA,USERPROFILE scripts/build/sentry-runtime-packages.test.ts",
558
558
  "test:tool-search-live": "VF_DISABLE_LRU_INTERVAL=1 deno test --no-check -A tests/agent/verify-tool-search-live.test.ts",
559
559
  "test:cross-runtime": "deno run --allow-all src/platform/compat/cross-runtime.test.ts",
@@ -1 +1 @@
1
- {"version":3,"file":"google-provider.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-google/src/google-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,2BAA2B,EAC5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAMlB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EAKpB,+BAA+B,EAC/B,qBAAqB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,6BAA6B,CAAC;AAwBrC,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,+BAA+B,EAC/B,qBAAqB,GACtB,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAmdD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAAC,+BAA+B,EAAE,2BAA2B,CAAC,CA2E5E;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CAiFlB;AAED,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,EAAE,YAAY;IAEvB,WAAW,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,iBAAiB,GACxB,YAAY,CAAC,+BAA+B,EAAE,2BAA2B,CAAC;IAY7E,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,gBAAgB;CAW9E"}
1
+ {"version":3,"file":"google-provider.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-google/src/google-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,2BAA2B,EAC5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAMlB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EAKpB,+BAA+B,EAC/B,qBAAqB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,6BAA6B,CAAC;AAyBrC,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,+BAA+B,EAC/B,qBAAqB,GACtB,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAmdD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAAC,+BAA+B,EAAE,2BAA2B,CAAC,CAsF5E;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CAiFlB;AAED,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,EAAE,YAAY;IAEvB,WAAW,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,iBAAiB,GACxB,YAAY,CAAC,+BAA+B,EAAE,2BAA2B,CAAC;IAY7E,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,gBAAgB;CAW9E"}
@@ -10,7 +10,7 @@ import { buildProviderError, createGoogleRequestInit, createWarningCollector, ge
10
10
  import { buildGoogleGenerateContentRequest, } from "./google-request-builder.js";
11
11
  import { createGoogleToolCallCorrelationRegistry, GOOGLE_CODE_EXECUTION_TOOL_NAME, googleCodeExecutionInput, googleCodeExecutionOutput, readGoogleCodeExecutionResult, readGoogleExecutableCode, readGooglePartDataField, } from "./google-content-parts.js";
12
12
  import { readGoogleGroundingMetadata } from "./google-grounding-metadata.js";
13
- import { createGoogleProviderMetadata, readGoogleThoughtSignature, } from "./google-thought-signatures.js";
13
+ import { createGoogleProviderMetadata, readGoogleThoughtSignature, reconcileGoogleProviderMetadata, } from "./google-thought-signatures.js";
14
14
  import { extractGoogleCandidateParts, extractGoogleUsage, normalizeGoogleFinishReason, streamGoogleCompatibleParts, } from "./google-stream.js";
15
15
  // Re-export error classes so extension tests can import them from this module
16
16
  // and from `veryfront/provider/shared` interchangeably.
@@ -371,6 +371,9 @@ export function createGoogleModelRuntime(config, modelId) {
371
371
  modelId,
372
372
  specificationVersion: "v3",
373
373
  supportedUrls: {},
374
+ _reconcileProviderMetadata(input) {
375
+ return reconcileGoogleProviderMetadata(input.providerMetadata, input.suppressedToolCalls);
376
+ },
374
377
  doGenerate(options) {
375
378
  const url = getGoogleGenerateContentUrl(config.baseURL, modelId);
376
379
  const warnings = createWarningCollector();
@@ -1 +1 @@
1
- {"version":3,"file":"google-request-builder.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-google/src/google-request-builder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,uBAAuB,EAEvB,0BAA0B,EAE3B,MAAM,uCAAuC,CAAC;AAY/C,MAAM,WAAW,+BAAgC,SAAQ,uBAAuB;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,aAAa,CAAC;QACnC,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAED,gGAAgG;AAChG,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAE/D,KAAK,gBAAgB,GAAG;IACtB,IAAI,CAAC,OAAO,EAAE;QACZ,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;IACT,KAAK,IAAI,KAAK,CAAC;QACb,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,iBAAiB,CAAC,EAAE;QAClB,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChC,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE;QACX,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChD,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AA0yBF,wBAAgB,iCAAiC,CAC/C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,+BAA+B,EACxC,QAAQ,EAAE,gBAAgB,GACzB,uBAAuB,CAqDzB"}
1
+ {"version":3,"file":"google-request-builder.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-google/src/google-request-builder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,uBAAuB,EAEvB,0BAA0B,EAE3B,MAAM,uCAAuC,CAAC;AAY/C,MAAM,WAAW,+BAAgC,SAAQ,uBAAuB;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,aAAa,CAAC;QACnC,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAED,gGAAgG;AAChG,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAE/D,KAAK,gBAAgB,GAAG;IACtB,IAAI,CAAC,OAAO,EAAE;QACZ,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;IACT,KAAK,IAAI,KAAK,CAAC;QACb,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,iBAAiB,CAAC,EAAE;QAClB,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChC,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE;QACX,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChD,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAmzBF,wBAAgB,iCAAiC,CAC/C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,+BAA+B,EACxC,QAAQ,EAAE,gBAAgB,GACzB,uBAAuB,CAqDzB"}
@@ -1,10 +1,10 @@
1
1
  import { jsonValuesEqual, readProviderOptions, readRecord, unwrapToolInputSchema, } from "../../../src/provider/shared/index.js";
2
2
  import { createGoogleToolCallCorrelationRegistry, GOOGLE_CODE_EXECUTION_TOOL_NAME, googleCodeExecutionInput, googleCodeExecutionOutput, readGoogleCodeExecutionResult, readGoogleExecutableCode, readGooglePartDataField, } from "./google-content-parts.js";
3
- import { readGoogleRawAssistantParts } from "./google-thought-signatures.js";
3
+ import { readGoogleRawAssistantReplay } from "./google-thought-signatures.js";
4
4
  function invalidGoogleProviderHistory() {
5
5
  return new TypeError("Google raw assistant metadata did not match canonical provider tool history");
6
6
  }
7
- function readGoogleRawToolHistory(rawAssistantParts) {
7
+ function readGoogleRawToolHistory(rawAssistantParts, rawAssistantPartIndexes) {
8
8
  const registry = createGoogleToolCallCorrelationRegistry();
9
9
  const ordinaryCalls = [];
10
10
  const legacyOrdinaryCalls = [];
@@ -30,7 +30,7 @@ function readGoogleRawToolHistory(rawAssistantParts) {
30
30
  throw invalidGoogleProviderHistory();
31
31
  }
32
32
  const providerId = typeof functionCall.id === "string" ? functionCall.id : undefined;
33
- const id = registry.registerFunctionCall(partIndex, providerId);
33
+ const id = registry.registerFunctionCall(rawAssistantPartIndexes[partIndex] ?? partIndex, providerId);
34
34
  // Histories persisted before raw-position ids used the anonymous-call
35
35
  // occurrence instead. Build both complete projections so validation
36
36
  // cannot accept a mixture that no implementation ever emitted.
@@ -125,7 +125,7 @@ function survivingToolEvents(events, activeKinds) {
125
125
  }
126
126
  return surviving;
127
127
  }
128
- function validateGoogleToolReplay(message, rawAssistantParts) {
128
+ function validateGoogleToolReplay(message, rawAssistantParts, rawAssistantPartIndexes) {
129
129
  const providerToolCalls = (message.providerToolCalls ?? []).map((call) => ({
130
130
  id: call.toolCallId,
131
131
  name: call.toolName,
@@ -189,7 +189,7 @@ function validateGoogleToolReplay(message, rawAssistantParts) {
189
189
  rejectDuplicateIds([...ordinaryCalls, ...canonicalProviderCalls]);
190
190
  let rawHistory;
191
191
  try {
192
- rawHistory = readGoogleRawToolHistory(rawAssistantParts);
192
+ rawHistory = readGoogleRawToolHistory(rawAssistantParts, rawAssistantPartIndexes);
193
193
  }
194
194
  catch {
195
195
  throw invalidGoogleProviderHistory();
@@ -246,10 +246,10 @@ function toGoogleContents(prompt) {
246
246
  });
247
247
  break;
248
248
  case "assistant": {
249
- const rawAssistantParts = readGoogleRawAssistantParts(message.providerMetadata);
250
- if (rawAssistantParts) {
251
- validateGoogleToolReplay(message, rawAssistantParts);
252
- contents.push({ role: "model", parts: rawAssistantParts });
249
+ const rawAssistantReplay = readGoogleRawAssistantReplay(message.providerMetadata);
250
+ if (rawAssistantReplay) {
251
+ validateGoogleToolReplay(message, rawAssistantReplay.parts, rawAssistantReplay.partIndexes);
252
+ contents.push({ role: "model", parts: rawAssistantReplay.parts });
253
253
  break;
254
254
  }
255
255
  const parts = [];
@@ -1,5 +1,18 @@
1
1
  export declare const MAX_GOOGLE_PROVIDER_METADATA_BYTES: number;
2
2
  export declare function readGoogleThoughtSignature(part: Record<string, unknown>): string | undefined;
3
- export declare function createGoogleProviderMetadata(parts: Array<Record<string, unknown>>, groundingMetadata?: Record<string, unknown>): Record<string, unknown> | undefined;
3
+ export declare function createGoogleProviderMetadata(parts: Array<Record<string, unknown>>, groundingMetadata?: Record<string, unknown>, rawAssistantPartIndexes?: readonly number[]): Record<string, unknown> | undefined;
4
+ export type GoogleRawAssistantReplay = {
5
+ parts: readonly Record<string, unknown>[];
6
+ partIndexes: readonly number[];
7
+ };
8
+ export declare function readGoogleRawAssistantReplay(providerMetadata: Record<string, unknown> | undefined): GoogleRawAssistantReplay | undefined;
4
9
  export declare function readGoogleRawAssistantParts(providerMetadata: Record<string, unknown> | undefined): readonly Record<string, unknown>[] | undefined;
10
+ /**
11
+ * Remove provider tool parts that the runtime deliberately suppressed while
12
+ * preserving the exact signed parts for every surviving Google tool call.
13
+ */
14
+ export declare function reconcileGoogleProviderMetadata(providerMetadata: Record<string, unknown>, suppressedToolCalls: readonly {
15
+ id: string;
16
+ name: string;
17
+ }[]): Record<string, unknown> | undefined;
5
18
  //# sourceMappingURL=google-thought-signatures.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google-thought-signatures.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-google/src/google-thought-signatures.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,kCAAkC,QAAkB,CAAC;AA4MlE,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,GAAG,SAAS,CASpB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAgCrC;AA4ED,wBAAgB,2BAA2B,CACzC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACpD,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAsBhD"}
1
+ {"version":3,"file":"google-thought-signatures.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-google/src/google-thought-signatures.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,kCAAkC,QAAkB,CAAC;AA6OlE,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,GAAG,SAAS,CASpB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CA2CrC;AAuGD,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACpD,wBAAwB,GAAG,SAAS,CAiCtC;AAED,wBAAgB,2BAA2B,CACzC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACpD,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAEhD;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,mBAAmB,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GAC3D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAqErC"}
@@ -2,6 +2,7 @@ import { readRecord, snapshotProviderJsonValue, } from "../../../src/provider/sh
2
2
  import { createGoogleToolCallCorrelationRegistry, readGoogleCodeExecutionResult, readGoogleExecutableCode, readGooglePartDataField, } from "./google-content-parts.js";
3
3
  const GOOGLE_METADATA_KEY = "google";
4
4
  const RAW_ASSISTANT_PARTS_KEY = "rawAssistantParts";
5
+ const RAW_ASSISTANT_PART_INDEXES_KEY = "rawAssistantPartIndexes";
5
6
  const GROUNDING_METADATA_KEY = "groundingMetadata";
6
7
  const MAX_GOOGLE_RAW_ASSISTANT_PARTS = 4_096;
7
8
  export const MAX_GOOGLE_PROVIDER_METADATA_BYTES = 8 * 1024 * 1024;
@@ -57,6 +58,28 @@ function readGoogleRawPartsValue(googleMetadata) {
57
58
  }
58
59
  return descriptor.value;
59
60
  }
61
+ function readGoogleRawPartIndexesValue(googleMetadata) {
62
+ if (googleMetadata === null ||
63
+ typeof googleMetadata !== "object" ||
64
+ Array.isArray(googleMetadata)) {
65
+ throw new TypeError("Google provider metadata must be an object");
66
+ }
67
+ let descriptor;
68
+ try {
69
+ descriptor = Object.getOwnPropertyDescriptor(googleMetadata, RAW_ASSISTANT_PART_INDEXES_KEY);
70
+ }
71
+ catch {
72
+ throw new TypeError("Google provider metadata could not be inspected");
73
+ }
74
+ if (descriptor === undefined) {
75
+ return undefined;
76
+ }
77
+ if (descriptor.enumerable !== true ||
78
+ !Object.hasOwn(descriptor, "value")) {
79
+ throw new TypeError("Google raw assistant part indexes must be an enumerable data property");
80
+ }
81
+ return descriptor.value;
82
+ }
60
83
  function hasGoogleReplayTriggerProperty(part, key) {
61
84
  let descriptor;
62
85
  try {
@@ -176,7 +199,7 @@ export function readGoogleThoughtSignature(part) {
176
199
  }
177
200
  return signature;
178
201
  }
179
- export function createGoogleProviderMetadata(parts, groundingMetadata) {
202
+ export function createGoogleProviderMetadata(parts, groundingMetadata, rawAssistantPartIndexes) {
180
203
  const needsExactReplay = needsGoogleExactReplay(parts);
181
204
  if (!needsExactReplay && groundingMetadata === undefined) {
182
205
  return undefined;
@@ -190,11 +213,18 @@ export function createGoogleProviderMetadata(parts, groundingMetadata) {
190
213
  if (partsSnapshot.length > MAX_GOOGLE_RAW_ASSISTANT_PARTS) {
191
214
  throw new TypeError(`Google raw assistant parts exceeded ${MAX_GOOGLE_RAW_ASSISTANT_PARTS} entries`);
192
215
  }
193
- ownedParts = validateGoogleRawAssistantParts(partsSnapshot);
216
+ const ownedPartIndexes = rawAssistantPartIndexes === undefined
217
+ ? undefined
218
+ : validateGoogleRawAssistantPartIndexes(snapshotGoogleProviderMetadata(rawAssistantPartIndexes), partsSnapshot.length);
219
+ ownedParts = validateGoogleRawAssistantParts(partsSnapshot, ownedPartIndexes);
220
+ rawAssistantPartIndexes = ownedPartIndexes;
194
221
  }
195
222
  const metadata = snapshotGoogleProviderMetadata({
196
223
  [GOOGLE_METADATA_KEY]: {
197
224
  ...(needsExactReplay ? { [RAW_ASSISTANT_PARTS_KEY]: ownedParts } : {}),
225
+ ...(needsExactReplay && rawAssistantPartIndexes !== undefined
226
+ ? { [RAW_ASSISTANT_PART_INDEXES_KEY]: rawAssistantPartIndexes }
227
+ : {}),
198
228
  ...(groundingMetadata !== undefined ? { [GROUNDING_METADATA_KEY]: groundingMetadata } : {}),
199
229
  },
200
230
  });
@@ -204,7 +234,7 @@ export function createGoogleProviderMetadata(parts, groundingMetadata) {
204
234
  }
205
235
  return metadataRecord;
206
236
  }
207
- function validateGoogleRawAssistantParts(rawParts) {
237
+ function validateGoogleRawAssistantParts(rawParts, rawPartIndexes) {
208
238
  if (rawParts.length === 0) {
209
239
  throw new TypeError("Google raw assistant parts must be a non-empty array");
210
240
  }
@@ -231,7 +261,7 @@ function validateGoogleRawAssistantParts(rawParts) {
231
261
  const functionCall = readRecord(part.functionCall);
232
262
  const functionCallId = typeof functionCall?.id === "string" ? functionCall.id : undefined;
233
263
  try {
234
- toolCallRegistry.registerFunctionCall(partIndex, functionCallId);
264
+ toolCallRegistry.registerFunctionCall(rawPartIndexes?.[partIndex] ?? partIndex, functionCallId);
235
265
  }
236
266
  catch {
237
267
  throw new TypeError("Google raw assistant tool call id was duplicated");
@@ -273,7 +303,24 @@ function validateGoogleRawAssistantParts(rawParts) {
273
303
  // a shallow collection whose contents could diverge before serialization.
274
304
  return rawParts;
275
305
  }
276
- export function readGoogleRawAssistantParts(providerMetadata) {
306
+ function validateGoogleRawAssistantPartIndexes(value, partCount) {
307
+ if (!Array.isArray(value) || value.length !== partCount) {
308
+ throw new TypeError("Google raw assistant part indexes must match the raw parts");
309
+ }
310
+ let previous = -1;
311
+ for (const index of value) {
312
+ if (typeof index !== "number" ||
313
+ !Number.isSafeInteger(index) ||
314
+ index <= previous ||
315
+ index < 0 ||
316
+ index >= MAX_GOOGLE_RAW_ASSISTANT_PARTS) {
317
+ throw new TypeError("Google raw assistant part indexes must be increasing safe integers");
318
+ }
319
+ previous = index;
320
+ }
321
+ return value;
322
+ }
323
+ export function readGoogleRawAssistantReplay(providerMetadata) {
277
324
  if (providerMetadata === undefined) {
278
325
  return undefined;
279
326
  }
@@ -282,15 +329,87 @@ export function readGoogleRawAssistantParts(providerMetadata) {
282
329
  return undefined;
283
330
  }
284
331
  const rawParts = readGoogleRawPartsValue(rawGoogleMetadata);
332
+ const rawPartIndexes = readGoogleRawPartIndexesValue(rawGoogleMetadata);
285
333
  if (rawParts === undefined) {
334
+ if (rawPartIndexes !== undefined) {
335
+ throw new TypeError("Google raw assistant part indexes require raw parts");
336
+ }
286
337
  return undefined;
287
338
  }
288
- // Grounding and future Google metadata fields are not replayed. Snapshot
289
- // only the exact wire value that will be validated and transmitted so those
290
- // independent fields cannot consume replay budgets or invoke accessors.
291
339
  const rawPartsSnapshot = snapshotGoogleProviderMetadata(rawParts);
292
340
  if (!Array.isArray(rawPartsSnapshot)) {
293
341
  throw new TypeError("Google raw assistant parts must be a non-empty array");
294
342
  }
295
- return validateGoogleRawAssistantParts(rawPartsSnapshot);
343
+ const partIndexes = rawPartIndexes === undefined
344
+ ? rawPartsSnapshot.map((_part, index) => index)
345
+ : validateGoogleRawAssistantPartIndexes(snapshotGoogleProviderMetadata(rawPartIndexes), rawPartsSnapshot.length);
346
+ return {
347
+ parts: validateGoogleRawAssistantParts(rawPartsSnapshot, partIndexes),
348
+ partIndexes,
349
+ };
350
+ }
351
+ export function readGoogleRawAssistantParts(providerMetadata) {
352
+ return readGoogleRawAssistantReplay(providerMetadata)?.parts;
353
+ }
354
+ /**
355
+ * Remove provider tool parts that the runtime deliberately suppressed while
356
+ * preserving the exact signed parts for every surviving Google tool call.
357
+ */
358
+ export function reconcileGoogleProviderMetadata(providerMetadata, suppressedToolCalls) {
359
+ if (suppressedToolCalls.length === 0) {
360
+ return providerMetadata;
361
+ }
362
+ const replay = readGoogleRawAssistantReplay(providerMetadata);
363
+ if (replay === undefined) {
364
+ return providerMetadata;
365
+ }
366
+ const { partIndexes, parts: rawAssistantParts } = replay;
367
+ const suppressedIds = new Set(suppressedToolCalls.map((toolCall) => toolCall.id));
368
+ const matchedSuppressedIds = new Set();
369
+ const retainedParts = [];
370
+ const retainedPartIndexes = [];
371
+ const registry = createGoogleToolCallCorrelationRegistry();
372
+ let retainedToolPart = false;
373
+ for (let partIndex = 0; partIndex < rawAssistantParts.length; partIndex += 1) {
374
+ const part = rawAssistantParts[partIndex];
375
+ if (part === undefined) {
376
+ throw new TypeError("Google raw assistant parts must be dense");
377
+ }
378
+ const dataField = readGooglePartDataField(part);
379
+ let toolCallId;
380
+ if (dataField === "functionCall") {
381
+ const functionCall = readRecord(part.functionCall);
382
+ const providerId = typeof functionCall?.id === "string" ? functionCall.id : undefined;
383
+ toolCallId = registry.registerFunctionCall(partIndexes[partIndex] ?? partIndex, providerId);
384
+ }
385
+ else if (dataField === "executableCode") {
386
+ const executableCode = readGoogleExecutableCode(part.executableCode);
387
+ toolCallId = registry.registerCodeExecution(executableCode.providerId);
388
+ }
389
+ else if (dataField === "codeExecutionResult") {
390
+ const result = readGoogleCodeExecutionResult(part.codeExecutionResult);
391
+ toolCallId = registry.resolveCodeExecutionResult(result.providerId);
392
+ }
393
+ if (toolCallId !== undefined && suppressedIds.has(toolCallId)) {
394
+ matchedSuppressedIds.add(toolCallId);
395
+ continue;
396
+ }
397
+ retainedParts.push(part);
398
+ retainedPartIndexes.push(partIndexes[partIndex] ?? partIndex);
399
+ retainedToolPart ||= dataField === "functionCall" ||
400
+ dataField === "executableCode" ||
401
+ dataField === "codeExecutionResult";
402
+ }
403
+ registry.assertSettled();
404
+ if (matchedSuppressedIds.size === 0) {
405
+ return providerMetadata;
406
+ }
407
+ if (retainedParts.length === 0) {
408
+ return undefined;
409
+ }
410
+ const reconciled = createGoogleProviderMetadata(retainedParts, undefined, retainedPartIndexes);
411
+ if (reconciled === undefined && retainedToolPart) {
412
+ throw new TypeError("Google provider metadata could not preserve a surviving signed tool call");
413
+ }
414
+ return reconciled;
296
415
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openai-chat-stream.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-openai/src/openai-chat-stream.ts"],"names":[],"mappings":"AA2BA,KAAK,4BAA4B,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAExE,KAAK,uBAAuB,GAAG;IAC7B,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AASF,eAAO,MAAM,4BAA4B,OAAQ,CAAC;AA4KlD,wBAAuB,2BAA2B,CAChD,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,OAAO,GAAE,uBAA4B,GACpC,aAAa,CAAC,OAAO,CAAC,CAsVxB"}
1
+ {"version":3,"file":"openai-chat-stream.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-openai/src/openai-chat-stream.ts"],"names":[],"mappings":"AA2BA,KAAK,4BAA4B,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAExE,KAAK,uBAAuB,GAAG;IAC7B,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AASF,eAAO,MAAM,4BAA4B,OAAQ,CAAC;AA4KlD,wBAAuB,2BAA2B,CAChD,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,OAAO,GAAE,uBAA4B,GACpC,aAAa,CAAC,OAAO,CAAC,CAyVxB"}
@@ -186,10 +186,13 @@ export async function* streamOpenAICompatibleParts(stream, context = {}) {
186
186
  if (!Array.isArray(record.choices)) {
187
187
  throw invalidOpenAIStream(context, "choices was not an array");
188
188
  }
189
+ // An empty `choices` array carries no content. Usage-only frames use this
190
+ // shape, and so does Azure OpenAI's `prompt_filter_results` preamble, which
191
+ // arrives before the first content chunk with neither choices nor usage.
192
+ // Both are informational, so skip the frame instead of failing the stream.
193
+ // The `choices` key being absent entirely is still rejected above — that is
194
+ // a malformed event rather than a content-free one.
189
195
  if (record.choices.length === 0) {
190
- if (!usageRecord) {
191
- throw invalidOpenAIStream(context, "empty choices event had no usage");
192
- }
193
196
  return;
194
197
  }
195
198
  if (sawFinishReason) {
@@ -1 +1 @@
1
- {"version":3,"file":"openai-provider.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-openai/src/openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,2BAA2B,EAC5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAMlB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EAOpB,+BAA+B,EAChC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,kCAAkC,CAAC;AA2B1C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,+BAA+B,GAChC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AA26BD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAAC,+BAA+B,EAAE,2BAA2B,CAAC,CAgF5E;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAAC,+BAA+B,EAAE,2BAA2B,CAAC,CA0F5E;AAgCD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CA2ClB;AAED,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,EAAE,YAAY;IAEvB,WAAW,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,iBAAiB,GACxB,YAAY,CAAC,+BAA+B,EAAE,2BAA2B,CAAC;IAwB7E,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,gBAAgB;IAa7E,eAAe,CACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,iBAAiB,GACxB,YAAY,CAAC,+BAA+B,EAAE,2BAA2B,CAAC;CAY9E"}
1
+ {"version":3,"file":"openai-provider.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-openai/src/openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,2BAA2B,EAC5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAMlB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EAOpB,+BAA+B,EAChC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,kCAAkC,CAAC;AA2B1C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,+BAA+B,GAChC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAs7BD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAAC,+BAA+B,EAAE,2BAA2B,CAAC,CAgF5E;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAAC,+BAA+B,EAAE,2BAA2B,CAAC,CA0F5E;AAwDD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CA2ClB;AAED,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,EAAE,YAAY;IAEvB,WAAW,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,iBAAiB,GACxB,YAAY,CAAC,+BAA+B,EAAE,2BAA2B,CAAC;IAgC7E,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,gBAAgB;IAa7E,eAAe,CACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,iBAAiB,GACxB,YAAY,CAAC,+BAA+B,EAAE,2BAA2B,CAAC;CAY9E"}
@@ -38,6 +38,15 @@ function getRuntimeOpenAIProviderName(config) {
38
38
  function getLLMOpenAIProviderName(config) {
39
39
  return normalizeOpenAIProviderName(config.providerName) ?? "openai";
40
40
  }
41
+ function getOpenAIModelTransport(config) {
42
+ const transport = config.openAITransport;
43
+ if (transport === undefined)
44
+ return "auto";
45
+ if (transport === "chat-completions" || transport === "responses") {
46
+ return transport;
47
+ }
48
+ throw new TypeError('OpenAI transport must be "chat-completions" or "responses"');
49
+ }
41
50
  function getOpenAICompatibleProviderKind(config) {
42
51
  const providerName = getRuntimeOpenAIProviderName(config).trim().toLowerCase();
43
52
  return providerName === "mistral" || providerName === "moonshotai" ? providerName : "openai";
@@ -829,6 +838,24 @@ function requestUsesOpenAIHostedTool(optionsForRuntime) {
829
838
  }
830
839
  return resolveOpenAIWebSearchDescriptor(options.tools) !== undefined;
831
840
  }
841
+ function createOpenAIChatCompletionsOnlyRuntime(chatRuntime) {
842
+ function assertHostedToolsSupported(options) {
843
+ if (requestUsesOpenAIHostedTool(options)) {
844
+ throw new TypeError("OpenAI hosted tools require the Responses API and are unavailable with Chat Completions");
845
+ }
846
+ }
847
+ return {
848
+ ...chatRuntime,
849
+ async doGenerate(optionsForRuntime) {
850
+ assertHostedToolsSupported(optionsForRuntime);
851
+ return await chatRuntime.doGenerate(optionsForRuntime);
852
+ },
853
+ async doStream(optionsForRuntime) {
854
+ assertHostedToolsSupported(optionsForRuntime);
855
+ return await chatRuntime.doStream(optionsForRuntime);
856
+ },
857
+ };
858
+ }
832
859
  function createOpenAIAdaptiveModelRuntime(chatRuntime, responsesRuntime) {
833
860
  return {
834
861
  ...chatRuntime,
@@ -900,10 +927,16 @@ export class OpenAIProvider {
900
927
  fetch: config.fetch,
901
928
  };
902
929
  const responsesRuntime = createOpenAIResponsesRuntime(runtimeConfig, modelId);
903
- if (isOpenAIReasoningModel(modelId, providerName)) {
930
+ const chatRuntime = createOpenAIModelRuntime(runtimeConfig, modelId);
931
+ const transport = getOpenAIModelTransport(config);
932
+ if (transport === "responses" ||
933
+ (transport === "auto" && isOpenAIReasoningModel(modelId, providerName))) {
904
934
  return responsesRuntime;
905
935
  }
906
- return createOpenAIAdaptiveModelRuntime(createOpenAIModelRuntime(runtimeConfig, modelId), responsesRuntime);
936
+ if (transport === "chat-completions") {
937
+ return createOpenAIChatCompletionsOnlyRuntime(chatRuntime);
938
+ }
939
+ return createOpenAIAdaptiveModelRuntime(chatRuntime, responsesRuntime);
907
940
  }
908
941
  createEmbedding(modelId, config) {
909
942
  return createOpenAIEmbeddingRuntime({
@@ -4,7 +4,7 @@ import type { AgUiResumeValue } from "../ag-ui/tool-shared.js";
4
4
  import type { DetachedRunTracker } from "../service/detached-run-tracker.js";
5
5
  import type { ParsedHostedChatRequest } from "./chat-request-parser.js";
6
6
  /** Public API contract for hosted durable run setup error status code. */
7
- export type HostedDurableRunSetupErrorStatusCode = 400 | 402 | 413 | 429 | 500 | 503;
7
+ export type HostedDurableRunSetupErrorStatusCode = 400 | 402 | 403 | 404 | 408 | 413 | 429 | 500 | 501 | 502 | 503;
8
8
  /** Public API contract for hosted durable run accepted. */
9
9
  export type HostedDurableRunAccepted = {
10
10
  accepted: boolean;
@@ -19,6 +19,7 @@ export type HostedDurableRunAuthErrorResponse = {
19
19
  /** Public API contract for hosted durable run logger. */
20
20
  export type HostedDurableRunLogger = {
21
21
  debug?: (message: string, metadata?: Record<string, unknown>) => void;
22
+ warn?: (message: string, metadata?: Record<string, unknown>) => void;
22
23
  error(message: string, metadata?: Record<string, unknown>): void;
23
24
  };
24
25
  /** Input delivered to a hosted durable-run starter after request isolation. */
@@ -1 +1 @@
1
- {"version":3,"file":"durable-chat-run-start.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/durable-chat-run-start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"durable-chat-run-start.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/durable-chat-run-start.ts"],"names":[],"mappings":"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"}