@opengeni/runtime 0.6.0 → 0.7.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 (44) hide show
  1. package/dist/{chunk-BHA2SU3H.js → chunk-RYDCVTMW.js} +1959 -208
  2. package/dist/chunk-RYDCVTMW.js.map +1 -0
  3. package/dist/{index-otZkoLYq.d.ts → index-DIiiwQY2.d.ts} +693 -55
  4. package/dist/index.d.ts +293 -121
  5. package/dist/index.js +1819 -786
  6. package/dist/index.js.map +1 -1
  7. package/dist/sandbox/index.d.ts +1 -1
  8. package/dist/sandbox/index.js +79 -3
  9. package/package.json +21 -20
  10. package/src/codex-tool-search.ts +185 -31
  11. package/src/context-compaction.ts +78 -243
  12. package/src/history-sanitizer.ts +172 -20
  13. package/src/index.ts +2573 -897
  14. package/src/metrics.ts +28 -2
  15. package/src/sandbox/capabilities.ts +12 -3
  16. package/src/sandbox/channel-a.ts +420 -72
  17. package/src/sandbox/display-stack.ts +18 -4
  18. package/src/sandbox/errors.ts +13 -0
  19. package/src/sandbox/index.ts +398 -112
  20. package/src/sandbox/op-correlation.ts +70 -0
  21. package/src/sandbox/providers/index.ts +9 -3
  22. package/src/sandbox/providers/modal.ts +99 -24
  23. package/src/sandbox/providers/selfhosted.ts +1 -4
  24. package/src/sandbox/recording.ts +146 -90
  25. package/src/sandbox/routing/backend-resolver.ts +144 -10
  26. package/src/sandbox/routing/routing-session.ts +129 -25
  27. package/src/sandbox/select.ts +60 -8
  28. package/src/sandbox/selfhosted/capabilities.ts +59 -25
  29. package/src/sandbox/selfhosted/control-rpc.ts +160 -28
  30. package/src/sandbox/selfhosted/fault-rendering.ts +226 -0
  31. package/src/sandbox/selfhosted/op-observer.ts +54 -0
  32. package/src/sandbox/selfhosted/op-stream.ts +801 -0
  33. package/src/sandbox/selfhosted/op-testing.ts +468 -0
  34. package/src/sandbox/selfhosted/op-transport.ts +151 -0
  35. package/src/sandbox/selfhosted/retry-policy.ts +177 -0
  36. package/src/sandbox/selfhosted/session.ts +498 -55
  37. package/src/sandbox/selfhosted/testing.ts +60 -19
  38. package/src/sandbox/stream-port.ts +17 -5
  39. package/src/sandbox/stream-token.ts +8 -2
  40. package/src/sandbox/terminal-server.ts +18 -4
  41. package/src/sandbox-computer.ts +332 -70
  42. package/src/usage-telemetry.ts +73 -0
  43. package/dist/chunk-BHA2SU3H.js.map +0 -1
  44. package/src/image-history.ts +0 -149
@@ -0,0 +1,73 @@
1
+ type UsageDetails = Record<string, unknown> | Array<Record<string, unknown>>;
2
+
3
+ export type ModelCallUsageTelemetry = {
4
+ inputTokens: number | null;
5
+ outputTokens: number | null;
6
+ cachedTokens: number | null;
7
+ reasoningTokens: number | null;
8
+ };
9
+
10
+ export function modelCallUsageTelemetry(
11
+ usage:
12
+ | {
13
+ inputTokens?: unknown;
14
+ outputTokens?: unknown;
15
+ inputTokensDetails?: UsageDetails | undefined;
16
+ outputTokensDetails?: UsageDetails | undefined;
17
+ }
18
+ | null
19
+ | undefined,
20
+ ): ModelCallUsageTelemetry {
21
+ return {
22
+ inputTokens: finiteNumberOrNull(usage?.inputTokens),
23
+ outputTokens: finiteNumberOrNull(usage?.outputTokens),
24
+ cachedTokens: usage
25
+ ? firstPositiveDetailNumber(usage.inputTokensDetails, [
26
+ "cached_tokens",
27
+ "cachedInputTokens",
28
+ "cached_input_tokens",
29
+ ])
30
+ : null,
31
+ reasoningTokens: usage
32
+ ? firstPositiveDetailNumber(usage.outputTokensDetails, [
33
+ "reasoning_tokens",
34
+ "reasoningTokens",
35
+ "reasoning_output_tokens",
36
+ ])
37
+ : null,
38
+ };
39
+ }
40
+
41
+ function firstPositiveDetailNumber(
42
+ details: UsageDetails | undefined,
43
+ keys: string[],
44
+ ): number | null {
45
+ if (!details) {
46
+ return null;
47
+ }
48
+ // A reported 0 is REAL DATA ("the provider cached/reasoned nothing"), not
49
+ // absence — the old >0-only filter recorded wire `cached_tokens: 0` as null,
50
+ // making "0% cached" indistinguishable from "no telemetry" (which is exactly
51
+ // how 10k+ genuinely-uncached Azure calls masqueraded as a telemetry gap).
52
+ // Prefer the first positive value across entries (multi-entry detail arrays
53
+ // may carry zero placeholders next to the real number), but if every entry
54
+ // says 0, report 0.
55
+ const entries = Array.isArray(details) ? details : [details];
56
+ let sawZero = false;
57
+ for (const entry of entries) {
58
+ for (const key of keys) {
59
+ const value = finiteNumberOrNull(entry[key]);
60
+ if (value !== null && value > 0) {
61
+ return value;
62
+ }
63
+ if (value === 0) {
64
+ sawZero = true;
65
+ }
66
+ }
67
+ }
68
+ return sawZero ? 0 : null;
69
+ }
70
+
71
+ function finiteNumberOrNull(value: unknown): number | null {
72
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
73
+ }