@danypops/jittor 0.16.2 → 0.17.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 (94) hide show
  1. package/README.md +38 -13
  2. package/docs/COMPACTION_EFFECTIVENESS.md +34 -0
  3. package/docs/CONTEXT_SNAPSHOTS.md +53 -0
  4. package/docs/MODEL_CATALOG.md +43 -0
  5. package/docs/OTLP_EXPORT.md +63 -0
  6. package/docs/PROVIDER_RESEARCH.md +1 -1
  7. package/docs/TOKEN_MEASUREMENT.md +53 -0
  8. package/docs/USAGE_BACKFILL.md +35 -0
  9. package/package.json +4 -3
  10. package/src/{providers/anthropic-contracts.ts → anthropic/rate-limits.ts} +1 -1
  11. package/src/{adapters/artificial-analysis-direct-source.ts → artificial-analysis/benchmark-source.ts} +3 -3
  12. package/src/cli-commands/backfill.ts +51 -0
  13. package/src/cli-commands/benchmarks.ts +4 -4
  14. package/src/cli-commands/catalog.ts +123 -0
  15. package/src/cli-commands/compaction.ts +1 -1
  16. package/src/cli-commands/context.ts +77 -4
  17. package/src/cli-commands/export.ts +30 -0
  18. package/src/cli-commands/metrics.ts +8 -2
  19. package/src/cli-commands/op.ts +1 -1
  20. package/src/cli-commands/route-args.ts +2 -2
  21. package/src/cli-commands/router.ts +2 -2
  22. package/src/cli-commands/support.ts +2 -2
  23. package/src/cli.ts +54 -21
  24. package/src/{providers/codex-contracts.ts → codex/contracts.ts} +1 -1
  25. package/src/codex/source.ts +53 -0
  26. package/src/{providers/codex.ts → codex/telemetry.ts} +2 -2
  27. package/src/constants.ts +18 -0
  28. package/src/daemon.ts +53 -23
  29. package/src/{providers/google-vertex-budget-contracts.ts → google-vertex/budget-contracts.ts} +3 -3
  30. package/src/{providers/google-vertex-budget.ts → google-vertex/budget-telemetry.ts} +6 -6
  31. package/src/{providers/google-vertex-contracts.ts → google-vertex/failures.ts} +1 -1
  32. package/src/google-vertex/source.ts +35 -0
  33. package/src/index.ts +135 -55
  34. package/src/{adapters/lmarena-hf-source.ts → lmarena/benchmark-source.ts} +3 -3
  35. package/src/observability/budget.ts +14 -0
  36. package/src/observability/context-delta.ts +309 -0
  37. package/src/{domain → observability}/context-hub.ts +19 -2
  38. package/src/observability/context-snapshot-history.ts +281 -0
  39. package/src/{domain → observability}/context-telemetry.ts +232 -4
  40. package/src/observability/model-identity.ts +42 -0
  41. package/src/{domain → observability}/model-observation.ts +26 -11
  42. package/src/{ports/metric-store.ts → observability/store.ts} +2 -2
  43. package/src/{ports → observability}/telemetry-source.ts +2 -2
  44. package/src/observability/token-measurement.ts +194 -0
  45. package/src/observability/usage-import.ts +122 -0
  46. package/src/openai/token-counter.ts +63 -0
  47. package/src/{adapters/openrouter-benchmark-source.ts → openrouter/benchmark-source.ts} +3 -3
  48. package/src/{providers/openrouter-contracts.ts → openrouter/contracts.ts} +1 -1
  49. package/src/{adapters/openrouter-design-arena-source.ts → openrouter/design-arena-source.ts} +4 -4
  50. package/src/openrouter/source.ts +20 -0
  51. package/src/{providers/openrouter.ts → openrouter/telemetry.ts} +2 -2
  52. package/src/{domain → optimization/model-selection}/benchmark.ts +9 -27
  53. package/src/optimization/model-selection/catalog-store.ts +97 -0
  54. package/src/optimization/model-selection/catalog.ts +478 -0
  55. package/src/{ports/benchmark-controller.ts → optimization/model-selection/controller.ts} +1 -1
  56. package/src/{adapters/metric-benchmark-store.ts → optimization/model-selection/observation-store.ts} +5 -5
  57. package/src/{domain/model-ranking-service.ts → optimization/model-selection/ranker.ts} +6 -12
  58. package/src/{domain/model-ranking.ts → optimization/model-selection/ranking.ts} +8 -2
  59. package/src/{ports/benchmark-source.ts → optimization/model-selection/source.ts} +1 -1
  60. package/src/{ports/benchmark-store.ts → optimization/model-selection/store.ts} +1 -1
  61. package/src/{domain/codex-recovery.ts → optimization/recovery/codex.ts} +1 -1
  62. package/src/{ports/router-controller.ts → optimization/routing/controller.ts} +1 -1
  63. package/src/{policy.ts → optimization/routing/policy.ts} +4 -14
  64. package/src/{router.ts → optimization/routing/router.ts} +4 -10
  65. package/src/otlp/exporter.ts +354 -0
  66. package/src/pi/session-usage-source.ts +203 -0
  67. package/src/{session-identity-service.ts → sessions/identity.ts} +2 -2
  68. package/src/{operations/session-scope.ts → sessions/router-authorization.ts} +1 -1
  69. package/src/{db.ts → sqlite/database.ts} +14 -1
  70. package/src/{adapters/sqlite-metric-store.ts → sqlite/metric-store.ts} +4 -4
  71. package/src/{adapters/sqlite-session-identity-store.ts → sqlite/session-store.ts} +1 -1
  72. package/src/sqlite/usage-import-store.ts +133 -0
  73. package/src/telemetry-export/exporter.ts +84 -0
  74. package/src/{operations → vehicle}/benchmark-operations.ts +3 -3
  75. package/src/vehicle/catalog-operations.ts +10 -0
  76. package/src/{client.ts → vehicle/client.ts} +1 -1
  77. package/src/{operations → vehicle}/context-operations.ts +13 -5
  78. package/src/vehicle/export-operations.ts +12 -0
  79. package/src/{operations/metrics-operations.ts → vehicle/metric-operations.ts} +4 -4
  80. package/src/{operations → vehicle}/model-ranking-operations.ts +3 -3
  81. package/src/{vehicle-registration.ts → vehicle/registration.ts} +14 -4
  82. package/src/{operations/router-operations.ts → vehicle/routing-operations.ts} +4 -4
  83. package/src/{service.ts → vehicle/service.ts} +108 -26
  84. package/src/{operations/session-identity-operations.ts → vehicle/session-operations.ts} +3 -3
  85. package/src/vehicle/usage-import-operations.ts +10 -0
  86. package/src/providers/telemetry-sources.ts +0 -108
  87. /package/src/{providers/google-adc-auth.ts → google-vertex/auth.ts} +0 -0
  88. /package/src/{domain → observability}/metric.ts +0 -0
  89. /package/src/{domain → observability}/task-cost.ts +0 -0
  90. /package/src/{domain → observability}/task-focus.ts +0 -0
  91. /package/src/{domain → observability}/usage.ts +0 -0
  92. /package/src/{config.ts → optimization/routing/config.ts} +0 -0
  93. /package/src/{ports/session-identity-store.ts → sessions/store.ts} +0 -0
  94. /package/src/{operations/types.ts → vehicle/operation-types.ts} +0 -0
@@ -1,108 +0,0 @@
1
- import type { BudgetWindow } from "../policy.ts";
2
- import type { TelemetryBatch, TelemetrySource } from "../ports/telemetry-source.ts";
3
- import {
4
- type CodexRateLimitSnapshot,
5
- CodexSubscriptionTelemetryAdapter,
6
- type CodexTransport,
7
- type CodexWindow,
8
- loadCodexFileCredentials,
9
- } from "./codex.ts";
10
- import type { GoogleAdcTokenProvider } from "./google-adc-auth.ts";
11
- import { GoogleVertexBudgetTelemetryAdapter, type GoogleVertexBudgetTransport } from "./google-vertex-budget.ts";
12
- import type { GoogleVertexMetricSource } from "./google-vertex-contracts.ts";
13
- import { OpenRouterTelemetryAdapter, type OpenRouterTransport } from "./openrouter.ts";
14
-
15
- function budgetWindow(limit: CodexRateLimitSnapshot, name: "primary" | "secondary", window: CodexWindow | null): BudgetWindow | null {
16
- if (!window || window.windowSeconds === null || window.resetsAt === null) return null;
17
- return {
18
- id: `${limit.limitId}:${name}@${limit.observedAt}`,
19
- source: "codex-subscription",
20
- scope: limit.limitId === "codex" ? `codex:${name}` : `${limit.limitId}:${name}`,
21
- usedFraction: window.usedPercent / 100,
22
- windowSeconds: window.windowSeconds,
23
- resetsAt: window.resetsAt * 1_000,
24
- observedAt: limit.observedAt,
25
- freshness: "fresh",
26
- confidence: 0.8,
27
- };
28
- }
29
-
30
- function windowsFromLimit(limit: CodexRateLimitSnapshot): BudgetWindow[] {
31
- return [budgetWindow(limit, "primary", limit.primary), budgetWindow(limit, "secondary", limit.secondary)].filter(
32
- (window): window is BudgetWindow => window !== null,
33
- );
34
- }
35
-
36
- export class CodexTelemetrySource implements TelemetrySource {
37
- readonly id = "codex-subscription";
38
- readonly provider = "openai-codex";
39
- readonly required = true;
40
-
41
- constructor(
42
- private readonly authFile: string,
43
- private readonly transport: CodexTransport = fetch,
44
- private readonly clock: () => number = Date.now,
45
- ) {}
46
-
47
- async poll(): Promise<TelemetryBatch> {
48
- const observedAt = this.clock();
49
- const adapter = new CodexSubscriptionTelemetryAdapter(loadCodexFileCredentials(this.authFile), this.transport);
50
- const snapshot = await adapter.readUsage(observedAt);
51
- return {
52
- observedAt,
53
- metrics: snapshot.metrics,
54
- windows: [snapshot.defaultLimit, ...snapshot.additionalLimits].flatMap(windowsFromLimit),
55
- };
56
- }
57
- }
58
-
59
- export class OpenRouterTelemetrySource implements TelemetrySource {
60
- readonly id = "openrouter";
61
- readonly provider = "openrouter";
62
- readonly required = false;
63
-
64
- constructor(
65
- private readonly apiKey: string,
66
- private readonly transport: OpenRouterTransport = fetch,
67
- private readonly clock: () => number = Date.now,
68
- ) {}
69
-
70
- async poll(): Promise<TelemetryBatch> {
71
- const observedAt = this.clock();
72
- const snapshot = await new OpenRouterTelemetryAdapter(this.apiKey, this.transport).readKey(observedAt);
73
- return { observedAt, metrics: snapshot.metrics, windows: [] };
74
- }
75
- }
76
-
77
- /**
78
- * Optional (never `required`): the one-time GCP setup (Pub/Sub topic + pull subscription
79
- * connected to the individual project's budget) lives entirely outside Jittor, so a subscription
80
- * that doesn't exist yet, or a project not yet migrated onto the individual-project model, must
81
- * not block every other route the way a missing required source would.
82
- */
83
- export class GoogleVertexBudgetTelemetrySource implements TelemetrySource {
84
- readonly id: string;
85
- readonly provider: GoogleVertexMetricSource;
86
- readonly required = false;
87
-
88
- private readonly adapter: GoogleVertexBudgetTelemetryAdapter;
89
-
90
- constructor(
91
- subscription: string,
92
- tokenProvider: GoogleAdcTokenProvider,
93
- private readonly clock: () => number = Date.now,
94
- transport: GoogleVertexBudgetTransport = fetch,
95
- source: GoogleVertexMetricSource = "google-vertex",
96
- ) {
97
- this.id = `google-vertex-budget:${source}`;
98
- this.provider = source;
99
- this.adapter = new GoogleVertexBudgetTelemetryAdapter(subscription, tokenProvider, transport, source);
100
- }
101
-
102
- async poll(): Promise<TelemetryBatch> {
103
- const observedAt = this.clock();
104
- const snapshot = await this.adapter.pull(observedAt);
105
- if (!snapshot) return { observedAt, metrics: [], windows: [] };
106
- return { observedAt, metrics: snapshot.metrics, windows: snapshot.window ? [snapshot.window] : [] };
107
- }
108
- }
File without changes
File without changes
File without changes
File without changes