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

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 ? {} : {
@@ -386,7 +405,9 @@ function createServerTelemetry(options = {}) {
386
405
  const diagnose = () => {
387
406
  try {
388
407
  options.onDiagnostic?.("Telemetry operation failed");
389
- } catch {}
408
+ } catch (error) {
409
+ console.warn(`po-log telemetry diagnostic failed (${error instanceof Error ? error.name : typeof error})`);
410
+ }
390
411
  };
391
412
  const enqueue = (operation) => {
392
413
  const pending = queue.then(operation);
@@ -714,6 +735,23 @@ function createServerTelemetry(options = {}) {
714
735
  });
715
736
  };
716
737
  }
738
+ hooks.push({
739
+ event: "before_provider_request",
740
+ handle(event, execution) {
741
+ if (!active || !(0, _agimon_ai_po_core_runtimeJson.isRecord)(event.payload)) return;
742
+ const payload = { ...event.payload };
743
+ const model = event.model;
744
+ enqueue(async () => {
745
+ await telemetry?.recordDebug("pi.provider.request", {
746
+ ...sessionAttributes(execution),
747
+ "gen_ai.provider.name": model.provider,
748
+ "gen_ai.request.model": model.id,
749
+ ...model.api === void 0 ? {} : { "pi.request.api_type": model.api },
750
+ ...await requestShapeAttributes(payload)
751
+ });
752
+ }).catch(() => void 0);
753
+ }
754
+ });
717
755
  return {
718
756
  activities: [activity],
719
757
  commands: [command],
@@ -1207,6 +1245,9 @@ var agent_settled_server_default = (0, _agimon_ai_po_core_extensionFile.defineHo
1207
1245
  //#region src/extensions/workspaces/sessions/(backend)/hook/agent-start.server.ts
1208
1246
  var agent_start_server_default = (0, _agimon_ai_po_core_extensionFile.defineHook)((context) => context.root.hooks[7]);
1209
1247
  //#endregion
1248
+ //#region src/extensions/workspaces/sessions/(backend)/hook/before-provider-request.server.ts
1249
+ var before_provider_request_server_default = (0, _agimon_ai_po_core_extensionFile.defineHook)((context) => context.root.hooks[10]);
1250
+ //#endregion
1210
1251
  //#region src/extensions/workspaces/sessions/(backend)/hook/model-select.server.ts
1211
1252
  var model_select_server_default = (0, _agimon_ai_po_core_extensionFile.defineHook)((context) => context.root.hooks[8]);
1212
1253
  //#endregion
@@ -1495,6 +1536,7 @@ const serverPlugin = (0, _agimon_ai_po_core_serverPlugin.defineServerPlugin)({
1495
1536
  via({ event: "agent_end" }, at(agent_end_server_default, contextSession)),
1496
1537
  via({ event: "agent_settled" }, at(agent_settled_server_default, contextSession)),
1497
1538
  via({ event: "agent_start" }, at(agent_start_server_default, contextSession)),
1539
+ via({ event: "before_provider_request" }, at(before_provider_request_server_default, contextSession)),
1498
1540
  via({ event: "model_select" }, at(model_select_server_default, contextSession)),
1499
1541
  via({ event: "session_shutdown" }, at(session_shutdown_server_default, contextSession)),
1500
1542
  via({ event: "session_start" }, at(session_start_server_default, contextSession)),