@agimon-ai/po-log 0.0.0-alpha.86 → 0.0.0-alpha.87

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.
@@ -361,6 +361,25 @@ function usageAttributes(message) {
361
361
  if (typeof cost === "number" && Number.isFinite(cost) && cost >= 0) attributes["gen_ai.usage.cost"] = cost;
362
362
  return attributes;
363
363
  }
364
+ async function shortHash(value) {
365
+ if (value === void 0) return void 0;
366
+ const bytes = new TextEncoder().encode(typeof value === "string" ? value : JSON.stringify(value));
367
+ const digest = new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256", bytes));
368
+ return Array.from(digest.subarray(0, 6), (byte) => byte.toString(16).padStart(2, "0")).join("");
369
+ }
370
+ /** Cache-identity fingerprints of a Responses payload: which of key, instructions, or tools changed. Never content. */
371
+ async function requestShapeAttributes(payload) {
372
+ const attributes = {
373
+ "pi.request.cache_key_version": await shortHash(payload.prompt_cache_key),
374
+ "pi.request.instructions_version": await shortHash(payload.instructions ?? payload.system),
375
+ "pi.request.tools_version": await shortHash(payload.tools),
376
+ "pi.request.wire_model": typeof payload.model === "string" ? payload.model : void 0,
377
+ "pi.request.input_count": Array.isArray(payload.input) ? payload.input.length : void 0,
378
+ "pi.request.tool_count": Array.isArray(payload.tools) ? payload.tools.length : void 0
379
+ };
380
+ for (const key of Object.keys(attributes)) if (attributes[key] === void 0) delete attributes[key];
381
+ return attributes;
382
+ }
364
383
  function createServerTelemetry(options = {}) {
365
384
  const workflow = options.workflowContext;
366
385
  const workflowAttributes = workflow === void 0 ? {} : {
@@ -714,6 +733,23 @@ function createServerTelemetry(options = {}) {
714
733
  });
715
734
  };
716
735
  }
736
+ hooks.push({
737
+ event: "before_provider_request",
738
+ handle(event, execution) {
739
+ if (!active || !(0, _agimon_ai_po_core_runtimeJson.isRecord)(event.payload)) return;
740
+ const payload = { ...event.payload };
741
+ const model = event.model;
742
+ enqueue(async () => {
743
+ await telemetry?.recordDebug("pi.provider.request", {
744
+ ...sessionAttributes(execution),
745
+ "gen_ai.provider.name": model.provider,
746
+ "gen_ai.request.model": model.id,
747
+ ...model.api === void 0 ? {} : { "pi.request.api_type": model.api },
748
+ ...await requestShapeAttributes(payload)
749
+ });
750
+ }).catch(() => void 0);
751
+ }
752
+ });
717
753
  return {
718
754
  activities: [activity],
719
755
  commands: [command],
@@ -1207,6 +1243,9 @@ var agent_settled_server_default = (0, _agimon_ai_po_core_extensionFile.defineHo
1207
1243
  //#region src/extensions/workspaces/sessions/(backend)/hook/agent-start.server.ts
1208
1244
  var agent_start_server_default = (0, _agimon_ai_po_core_extensionFile.defineHook)((context) => context.root.hooks[7]);
1209
1245
  //#endregion
1246
+ //#region src/extensions/workspaces/sessions/(backend)/hook/before-provider-request.server.ts
1247
+ var before_provider_request_server_default = (0, _agimon_ai_po_core_extensionFile.defineHook)((context) => context.root.hooks[10]);
1248
+ //#endregion
1210
1249
  //#region src/extensions/workspaces/sessions/(backend)/hook/model-select.server.ts
1211
1250
  var model_select_server_default = (0, _agimon_ai_po_core_extensionFile.defineHook)((context) => context.root.hooks[8]);
1212
1251
  //#endregion
@@ -1495,6 +1534,7 @@ const serverPlugin = (0, _agimon_ai_po_core_serverPlugin.defineServerPlugin)({
1495
1534
  via({ event: "agent_end" }, at(agent_end_server_default, contextSession)),
1496
1535
  via({ event: "agent_settled" }, at(agent_settled_server_default, contextSession)),
1497
1536
  via({ event: "agent_start" }, at(agent_start_server_default, contextSession)),
1537
+ via({ event: "before_provider_request" }, at(before_provider_request_server_default, contextSession)),
1498
1538
  via({ event: "model_select" }, at(model_select_server_default, contextSession)),
1499
1539
  via({ event: "session_shutdown" }, at(session_shutdown_server_default, contextSession)),
1500
1540
  via({ event: "session_start" }, at(session_start_server_default, contextSession)),