@autohq/cli 0.1.564 → 0.1.565

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.
@@ -30870,7 +30870,7 @@ Object.assign(lookup, {
30870
30870
  // package.json
30871
30871
  var package_default = {
30872
30872
  name: "@autohq/cli",
30873
- version: "0.1.564",
30873
+ version: "0.1.565",
30874
30874
  license: "SEE LICENSE IN README.md",
30875
30875
  publishConfig: {
30876
30876
  access: "public"
@@ -38656,6 +38656,210 @@ var RuntimeRestartDiagnosticRecordSchema = external_exports.object({
38656
38656
  createdAt: external_exports.string().datetime()
38657
38657
  });
38658
38658
 
38659
+ // ../../packages/schemas/src/session-attribution-epochs.ts
38660
+ var ATTRIBUTION_GRADES = ["derived", "asserted"];
38661
+ var AttributionGradeSchema = external_exports.enum(ATTRIBUTION_GRADES);
38662
+ var AttributionRequesterSnapshotSchema = external_exports.object({
38663
+ origin: RequesterRootOriginSchema,
38664
+ userId: UserIdSchema.nullable()
38665
+ }).strict();
38666
+ var SessionAttributionEpochCreateSchema = external_exports.object({
38667
+ organizationId: OrganizationIdSchema,
38668
+ projectId: ProjectIdSchema.nullable(),
38669
+ sessionId: SessionIdSchema2,
38670
+ sourceCommandId: SessionCommandIdSchema2,
38671
+ requesterKey: external_exports.string().trim().min(1),
38672
+ requesterSnapshot: AttributionRequesterSnapshotSchema.nullable(),
38673
+ attributionGrade: AttributionGradeSchema,
38674
+ assertedByCommandId: SessionCommandIdSchema2.nullable(),
38675
+ assertedBySessionId: SessionIdSchema2.nullable(),
38676
+ assertedByAgentResourceId: external_exports.string().trim().min(1).nullable(),
38677
+ fundingSource: ModelCredentialFundingSourceSchema.nullable(),
38678
+ providerGrantId: ProviderGrantIdSchema.nullable(),
38679
+ userModelSubscriptionId: UserSubscriptionCredentialIdSchema.nullable()
38680
+ }).strict();
38681
+ var SessionAttributionEpochRecordSchema = SessionAttributionEpochCreateSchema.extend({
38682
+ id: SessionAttributionEpochIdSchema,
38683
+ createdAt: external_exports.string().datetime()
38684
+ }).strict();
38685
+
38686
+ // ../../packages/schemas/src/usage.ts
38687
+ var UsageHarnessSchema = external_exports.enum(AGENT_HARNESSES);
38688
+ var NonNegativeTokenCountSchema = external_exports.number().int().nonnegative();
38689
+ var NonNegativeUsdSchema2 = external_exports.number().nonnegative();
38690
+ var UsageEventSchema = external_exports.object({
38691
+ // Tenant + lineage attribution. projectId is nullable because a resource can
38692
+ // belong directly to an organization with no project.
38693
+ organizationId: OrganizationIdSchema,
38694
+ projectId: ProjectIdSchema.nullable(),
38695
+ sessionId: SessionIdSchema2,
38696
+ agentResourceId: external_exports.string().trim().min(1),
38697
+ harness: UsageHarnessSchema,
38698
+ // The concrete model id the call billed against (e.g. "claude-opus-4-8"),
38699
+ // taken from the response rather than any selection layer — a single run can
38700
+ // touch multiple models, so this is per-call, never per-run.
38701
+ model: external_exports.string().trim().min(1),
38702
+ inputTokens: NonNegativeTokenCountSchema,
38703
+ outputTokens: NonNegativeTokenCountSchema,
38704
+ cacheCreationTokens: NonNegativeTokenCountSchema,
38705
+ cacheReadTokens: NonNegativeTokenCountSchema,
38706
+ // The provider's own cost when it reports one, kept only for reconciliation.
38707
+ // Nullable/absent because it can be 0 or missing — never the billing source.
38708
+ providerCostUsd: NonNegativeUsdSchema2.nullable(),
38709
+ // Platform-derived cost and the rate-card version it was derived under, so a
38710
+ // later rate-card change never silently rewrites historical cost.
38711
+ derivedCostUsd: NonNegativeUsdSchema2,
38712
+ pricingVersion: external_exports.string().trim().min(1),
38713
+ // What this call debits from the organization's credit balance, and the fee
38714
+ // card it was derived under (see `./billing`). Required — a writer that
38715
+ // forgets it would silently record unbilled usage, so there is no default.
38716
+ billedCostUsd: NonNegativeUsdSchema2,
38717
+ billingFeeVersion: external_exports.string().trim().min(1),
38718
+ // Historical funding attribution for the model call. The provider grant id is
38719
+ // denormalized and nullable for platform-funded usage, matching the ledger's
38720
+ // no-FK audit-trail contract.
38721
+ fundingSource: ModelCredentialFundingSourceSchema.default("platform"),
38722
+ modelCredentialProviderGrantId: ProviderGrantIdSchema.nullable().default(null),
38723
+ // Optional during the cross-chunk rollout: B1 defines the attribution field
38724
+ // before B3 deploys its persistence column and D3 begins populating it.
38725
+ modelCredentialUserSubscriptionId: UserSubscriptionCredentialIdSchema.nullable().optional(),
38726
+ attributionEpochId: SessionAttributionEpochIdSchema.nullable().optional(),
38727
+ requesterKey: external_exports.string().trim().min(1).nullable().optional(),
38728
+ attributionGrade: AttributionGradeSchema.nullable().optional(),
38729
+ occurredAt: external_exports.string().datetime()
38730
+ });
38731
+ var UsageEventRecordSchema = UsageEventSchema.extend({
38732
+ id: external_exports.string().trim().min(1),
38733
+ attributionEpochId: SessionAttributionEpochIdSchema.nullable().default(null),
38734
+ requesterKey: external_exports.string().trim().min(1).nullable().default(null),
38735
+ attributionGrade: AttributionGradeSchema.nullable().default(null),
38736
+ // Set on append-only correction rows: this row replaces the pointed-at row's
38737
+ // amounts, and ledger readers exclude any row another row supersedes.
38738
+ supersedesUsageEventId: external_exports.string().trim().min(1).nullable().default(null),
38739
+ createdAt: external_exports.string().datetime()
38740
+ });
38741
+ var UsageTotalsSchema = external_exports.object({
38742
+ eventCount: NonNegativeTokenCountSchema,
38743
+ inputTokens: NonNegativeTokenCountSchema,
38744
+ outputTokens: NonNegativeTokenCountSchema,
38745
+ cacheCreationTokens: NonNegativeTokenCountSchema,
38746
+ cacheReadTokens: NonNegativeTokenCountSchema,
38747
+ totalTokens: NonNegativeTokenCountSchema,
38748
+ billedCostUsd: NonNegativeUsdSchema2
38749
+ });
38750
+ var SessionUsageModelSummarySchema = UsageTotalsSchema.extend({
38751
+ model: external_exports.string().trim().min(1)
38752
+ });
38753
+ var UsageFundingSummarySchema = UsageTotalsSchema.extend({
38754
+ fundingSource: ModelCredentialFundingSourceSchema,
38755
+ coveredInferenceCostUsd: NonNegativeUsdSchema2
38756
+ });
38757
+ var SessionModelFundingStateSchema = external_exports.object({
38758
+ fundingSource: ModelCredentialFundingSourceSchema,
38759
+ provider: external_exports.string().trim().min(1),
38760
+ // The subscription owner's display name for user_subscription funding, so
38761
+ // the session header can say whose key is being used. Optional for old
38762
+ // writers; null when the name cannot resolve.
38763
+ ownerDisplayName: external_exports.string().trim().min(1).nullable().optional()
38764
+ });
38765
+ var SessionUsageCurrentAttributionSchema = external_exports.object({
38766
+ requesterKey: external_exports.string().trim().min(1),
38767
+ requesterDisplayName: external_exports.string().trim().min(1).nullable(),
38768
+ attributionGrade: AttributionGradeSchema
38769
+ }).strip();
38770
+ var SessionUsageRequesterSummarySchema = external_exports.object({
38771
+ requesterKey: external_exports.string().trim().min(1).nullable(),
38772
+ requesterDisplayName: external_exports.string().trim().min(1).nullable(),
38773
+ billedCostUsd: NonNegativeUsdSchema2,
38774
+ attributionGrades: external_exports.array(AttributionGradeSchema)
38775
+ }).strip();
38776
+ var SessionUsageResponseSchema = external_exports.object({
38777
+ sessionId: SessionIdSchema2,
38778
+ totals: UsageTotalsSchema,
38779
+ models: external_exports.array(SessionUsageModelSummarySchema),
38780
+ byFundingSource: external_exports.array(UsageFundingSummarySchema),
38781
+ byRequester: external_exports.array(SessionUsageRequesterSummarySchema).optional().default([]),
38782
+ currentAttribution: SessionUsageCurrentAttributionSchema.nullable().optional().default(null),
38783
+ funding: SessionModelFundingStateSchema.nullable(),
38784
+ firstUsageAt: external_exports.string().datetime().nullable(),
38785
+ lastUsageAt: external_exports.string().datetime().nullable()
38786
+ }).strip();
38787
+ var PROJECT_USAGE_RANGE_KEYS = ["7d", "30d"];
38788
+ var ProjectUsageRangeKeySchema = external_exports.enum(PROJECT_USAGE_RANGE_KEYS);
38789
+ var UtcDateSchema = external_exports.string().regex(/^\d{4}-\d{2}-\d{2}$/);
38790
+ var ProjectUsageTotalsSchema = UsageTotalsSchema.extend({
38791
+ sessionCount: NonNegativeTokenCountSchema,
38792
+ // Share of all tokens served from prompt-cache reads (0..1); 0 when the
38793
+ // window has no tokens at all.
38794
+ cacheReadShare: external_exports.number().min(0).max(1)
38795
+ });
38796
+ var ProjectUsageAgentSummarySchema = UsageTotalsSchema.extend({
38797
+ agentResourceId: external_exports.string().trim().min(1),
38798
+ // Resolved from the agent resource (archived agents included); null only
38799
+ // when the agent row no longer exists at all — the ledger deliberately
38800
+ // outlives its attribution targets.
38801
+ agentName: external_exports.string().trim().min(1).nullable(),
38802
+ sessionCount: NonNegativeTokenCountSchema
38803
+ });
38804
+ var ProjectUsageModelSummarySchema = UsageTotalsSchema.extend({
38805
+ model: external_exports.string().trim().min(1)
38806
+ });
38807
+ var ProjectUsageSubscriptionSummarySchema = UsageTotalsSchema.extend({
38808
+ userSubscriptionId: UserSubscriptionCredentialIdSchema.nullable(),
38809
+ coveredInferenceCostUsd: NonNegativeUsdSchema2
38810
+ });
38811
+ var ProjectUsageSubscriptionSliceSchema = external_exports.object({
38812
+ totals: UsageTotalsSchema.extend({
38813
+ coveredInferenceCostUsd: NonNegativeUsdSchema2
38814
+ }),
38815
+ subscriptions: external_exports.array(ProjectUsageSubscriptionSummarySchema)
38816
+ });
38817
+ var ProjectUsageRequesterAttributionSchema = external_exports.object({
38818
+ requesterKey: external_exports.string().trim().min(1).nullable(),
38819
+ requesterDisplayName: external_exports.string().trim().min(1).nullable(),
38820
+ attributionEpochIds: external_exports.array(SessionAttributionEpochIdSchema),
38821
+ attributionGrades: external_exports.array(AttributionGradeSchema)
38822
+ });
38823
+ var ProjectUsageRequesterSummarySchema = UsageTotalsSchema.extend({
38824
+ ...ProjectUsageRequesterAttributionSchema.shape,
38825
+ sessionCount: NonNegativeTokenCountSchema
38826
+ });
38827
+ var ProjectUsageDayAgentSliceSchema = external_exports.object({
38828
+ agentResourceId: external_exports.string().trim().min(1),
38829
+ billedCostUsd: NonNegativeUsdSchema2
38830
+ });
38831
+ var ProjectUsageDayModelSliceSchema = external_exports.object({
38832
+ model: external_exports.string().trim().min(1),
38833
+ billedCostUsd: NonNegativeUsdSchema2
38834
+ });
38835
+ var ProjectUsageDayPointSchema = UsageTotalsSchema.extend({
38836
+ date: UtcDateSchema,
38837
+ byAgent: external_exports.array(ProjectUsageDayAgentSliceSchema),
38838
+ byModel: external_exports.array(ProjectUsageDayModelSliceSchema)
38839
+ });
38840
+ var ProjectUsageResponseSchema = external_exports.object({
38841
+ organizationId: OrganizationIdSchema,
38842
+ projectId: ProjectIdSchema,
38843
+ range: external_exports.object({
38844
+ key: ProjectUsageRangeKeySchema,
38845
+ since: external_exports.string().datetime(),
38846
+ until: external_exports.string().datetime()
38847
+ }),
38848
+ totals: ProjectUsageTotalsSchema,
38849
+ taskThroughput: external_exports.object({
38850
+ created: external_exports.number().int().nonnegative(),
38851
+ completed: external_exports.number().int().nonnegative(),
38852
+ dropped: external_exports.number().int().nonnegative(),
38853
+ costPerCompletedTaskUsd: NonNegativeUsdSchema2.nullable()
38854
+ }).optional(),
38855
+ byAgent: external_exports.array(ProjectUsageAgentSummarySchema),
38856
+ byModel: external_exports.array(ProjectUsageModelSummarySchema),
38857
+ byFundingSource: external_exports.array(UsageFundingSummarySchema),
38858
+ subscriptionUsage: ProjectUsageSubscriptionSliceSchema,
38859
+ byRequester: external_exports.array(ProjectUsageRequesterSummarySchema),
38860
+ daily: external_exports.array(ProjectUsageDayPointSchema)
38861
+ });
38862
+
38659
38863
  // ../../packages/schemas/src/session-introspection.ts
38660
38864
  var TruncatedValueSchema = external_exports.object({
38661
38865
  truncated: external_exports.literal(true),
@@ -38808,6 +39012,44 @@ var RunModelFallbackSchema = external_exports.object({
38808
39012
  activatedAt: external_exports.string().datetime().nullable(),
38809
39013
  fallbackModelId: external_exports.string().nullable()
38810
39014
  });
39015
+ var RUN_USAGE_BREAKDOWN_LIMIT = 8;
39016
+ var RunUsageTotalsSchema = external_exports.object({
39017
+ eventCount: external_exports.number().int().nonnegative(),
39018
+ inputTokens: external_exports.number().int().nonnegative(),
39019
+ outputTokens: external_exports.number().int().nonnegative(),
39020
+ cacheCreationTokens: external_exports.number().int().nonnegative(),
39021
+ cacheReadTokens: external_exports.number().int().nonnegative(),
39022
+ /**
39023
+ * Stored rate-card-derived model cost; never recomputed by this read.
39024
+ * Omitted when the caller lacks `billing:read`.
39025
+ */
39026
+ derivedCostUsd: external_exports.number().nonnegative().optional(),
39027
+ /**
39028
+ * Sum of provider-reported costs only when every included event reported
39029
+ * one; null for empty, legacy, or partially reported groups, and omitted
39030
+ * when the caller lacks `billing:read`.
39031
+ */
39032
+ providerCostUsd: external_exports.number().nonnegative().nullable().optional()
39033
+ });
39034
+ var RunUsageHarnessModelSchema = RunUsageTotalsSchema.extend({
39035
+ harness: UsageHarnessSchema,
39036
+ model: external_exports.string().trim().min(1)
39037
+ });
39038
+ var RunUsageSummarySchema = external_exports.object({
39039
+ totals: RunUsageTotalsSchema,
39040
+ /**
39041
+ * Cache reads divided by prompt-side tokens: input + cache creation/write +
39042
+ * cache read. Output tokens are excluded; value is null when the exposed
39043
+ * denominator is zero.
39044
+ */
39045
+ cacheReadRatio: external_exports.object({
39046
+ denominatorTokens: external_exports.number().int().nonnegative(),
39047
+ value: external_exports.number().min(0).max(1).nullable()
39048
+ }),
39049
+ /** Highest derived-cost harness/model groups, in descending spend order. */
39050
+ byHarnessModel: external_exports.array(RunUsageHarnessModelSchema).max(RUN_USAGE_BREAKDOWN_LIMIT),
39051
+ breakdownTruncated: external_exports.boolean()
39052
+ });
38811
39053
  var RunSummarySchema = external_exports.object({
38812
39054
  session: external_exports.object({
38813
39055
  id: SessionIdSchema2,
@@ -38923,7 +39165,9 @@ var RunSummarySchema = external_exports.object({
38923
39165
  recent: external_exports.array(RunRuntimeRestartSchema)
38924
39166
  }),
38925
39167
  /** Latest same-provider model-fallback activation for the session, if any. */
38926
- modelFallback: RunModelFallbackSchema
39168
+ modelFallback: RunModelFallbackSchema,
39169
+ /** Current unsuperseded model usage for the session. */
39170
+ usage: RunUsageSummarySchema
38927
39171
  });
38928
39172
 
38929
39173
  // ../../packages/schemas/src/session-turns.ts
@@ -39220,33 +39464,6 @@ var SessionCommandDebounceRevertInputSchema = external_exports.object({
39220
39464
  }).strip();
39221
39465
  var RealtimeRunCursorSchema = external_exports.string().regex(/^rt:(0|[1-9]\d*)$/);
39222
39466
 
39223
- // ../../packages/schemas/src/session-attribution-epochs.ts
39224
- var ATTRIBUTION_GRADES = ["derived", "asserted"];
39225
- var AttributionGradeSchema = external_exports.enum(ATTRIBUTION_GRADES);
39226
- var AttributionRequesterSnapshotSchema = external_exports.object({
39227
- origin: RequesterRootOriginSchema,
39228
- userId: UserIdSchema.nullable()
39229
- }).strict();
39230
- var SessionAttributionEpochCreateSchema = external_exports.object({
39231
- organizationId: OrganizationIdSchema,
39232
- projectId: ProjectIdSchema.nullable(),
39233
- sessionId: SessionIdSchema2,
39234
- sourceCommandId: SessionCommandIdSchema2,
39235
- requesterKey: external_exports.string().trim().min(1),
39236
- requesterSnapshot: AttributionRequesterSnapshotSchema.nullable(),
39237
- attributionGrade: AttributionGradeSchema,
39238
- assertedByCommandId: SessionCommandIdSchema2.nullable(),
39239
- assertedBySessionId: SessionIdSchema2.nullable(),
39240
- assertedByAgentResourceId: external_exports.string().trim().min(1).nullable(),
39241
- fundingSource: ModelCredentialFundingSourceSchema.nullable(),
39242
- providerGrantId: ProviderGrantIdSchema.nullable(),
39243
- userModelSubscriptionId: UserSubscriptionCredentialIdSchema.nullable()
39244
- }).strict();
39245
- var SessionAttributionEpochRecordSchema = SessionAttributionEpochCreateSchema.extend({
39246
- id: SessionAttributionEpochIdSchema,
39247
- createdAt: external_exports.string().datetime()
39248
- }).strict();
39249
-
39250
39467
  // ../../packages/schemas/src/spend-cap-runtime.ts
39251
39468
  var SpendCapOverrideStateSchema = external_exports.object({
39252
39469
  active: external_exports.boolean(),
@@ -39398,183 +39615,6 @@ var ResourceReconciliationScopeSchema = external_exports.object({
39398
39615
  projectId: external_exports.string().trim().min(1).nullable()
39399
39616
  }).strict();
39400
39617
 
39401
- // ../../packages/schemas/src/usage.ts
39402
- var UsageHarnessSchema = external_exports.enum(AGENT_HARNESSES);
39403
- var NonNegativeTokenCountSchema = external_exports.number().int().nonnegative();
39404
- var NonNegativeUsdSchema2 = external_exports.number().nonnegative();
39405
- var UsageEventSchema = external_exports.object({
39406
- // Tenant + lineage attribution. projectId is nullable because a resource can
39407
- // belong directly to an organization with no project.
39408
- organizationId: OrganizationIdSchema,
39409
- projectId: ProjectIdSchema.nullable(),
39410
- sessionId: SessionIdSchema2,
39411
- agentResourceId: external_exports.string().trim().min(1),
39412
- harness: UsageHarnessSchema,
39413
- // The concrete model id the call billed against (e.g. "claude-opus-4-8"),
39414
- // taken from the response rather than any selection layer — a single run can
39415
- // touch multiple models, so this is per-call, never per-run.
39416
- model: external_exports.string().trim().min(1),
39417
- inputTokens: NonNegativeTokenCountSchema,
39418
- outputTokens: NonNegativeTokenCountSchema,
39419
- cacheCreationTokens: NonNegativeTokenCountSchema,
39420
- cacheReadTokens: NonNegativeTokenCountSchema,
39421
- // The provider's own cost when it reports one, kept only for reconciliation.
39422
- // Nullable/absent because it can be 0 or missing — never the billing source.
39423
- providerCostUsd: NonNegativeUsdSchema2.nullable(),
39424
- // Platform-derived cost and the rate-card version it was derived under, so a
39425
- // later rate-card change never silently rewrites historical cost.
39426
- derivedCostUsd: NonNegativeUsdSchema2,
39427
- pricingVersion: external_exports.string().trim().min(1),
39428
- // What this call debits from the organization's credit balance, and the fee
39429
- // card it was derived under (see `./billing`). Required — a writer that
39430
- // forgets it would silently record unbilled usage, so there is no default.
39431
- billedCostUsd: NonNegativeUsdSchema2,
39432
- billingFeeVersion: external_exports.string().trim().min(1),
39433
- // Historical funding attribution for the model call. The provider grant id is
39434
- // denormalized and nullable for platform-funded usage, matching the ledger's
39435
- // no-FK audit-trail contract.
39436
- fundingSource: ModelCredentialFundingSourceSchema.default("platform"),
39437
- modelCredentialProviderGrantId: ProviderGrantIdSchema.nullable().default(null),
39438
- // Optional during the cross-chunk rollout: B1 defines the attribution field
39439
- // before B3 deploys its persistence column and D3 begins populating it.
39440
- modelCredentialUserSubscriptionId: UserSubscriptionCredentialIdSchema.nullable().optional(),
39441
- attributionEpochId: SessionAttributionEpochIdSchema.nullable().optional(),
39442
- requesterKey: external_exports.string().trim().min(1).nullable().optional(),
39443
- attributionGrade: AttributionGradeSchema.nullable().optional(),
39444
- occurredAt: external_exports.string().datetime()
39445
- });
39446
- var UsageEventRecordSchema = UsageEventSchema.extend({
39447
- id: external_exports.string().trim().min(1),
39448
- attributionEpochId: SessionAttributionEpochIdSchema.nullable().default(null),
39449
- requesterKey: external_exports.string().trim().min(1).nullable().default(null),
39450
- attributionGrade: AttributionGradeSchema.nullable().default(null),
39451
- // Set on append-only correction rows: this row replaces the pointed-at row's
39452
- // amounts, and ledger readers exclude any row another row supersedes.
39453
- supersedesUsageEventId: external_exports.string().trim().min(1).nullable().default(null),
39454
- createdAt: external_exports.string().datetime()
39455
- });
39456
- var UsageTotalsSchema = external_exports.object({
39457
- eventCount: NonNegativeTokenCountSchema,
39458
- inputTokens: NonNegativeTokenCountSchema,
39459
- outputTokens: NonNegativeTokenCountSchema,
39460
- cacheCreationTokens: NonNegativeTokenCountSchema,
39461
- cacheReadTokens: NonNegativeTokenCountSchema,
39462
- totalTokens: NonNegativeTokenCountSchema,
39463
- billedCostUsd: NonNegativeUsdSchema2
39464
- });
39465
- var SessionUsageModelSummarySchema = UsageTotalsSchema.extend({
39466
- model: external_exports.string().trim().min(1)
39467
- });
39468
- var UsageFundingSummarySchema = UsageTotalsSchema.extend({
39469
- fundingSource: ModelCredentialFundingSourceSchema,
39470
- coveredInferenceCostUsd: NonNegativeUsdSchema2
39471
- });
39472
- var SessionModelFundingStateSchema = external_exports.object({
39473
- fundingSource: ModelCredentialFundingSourceSchema,
39474
- provider: external_exports.string().trim().min(1),
39475
- // The subscription owner's display name for user_subscription funding, so
39476
- // the session header can say whose key is being used. Optional for old
39477
- // writers; null when the name cannot resolve.
39478
- ownerDisplayName: external_exports.string().trim().min(1).nullable().optional()
39479
- });
39480
- var SessionUsageCurrentAttributionSchema = external_exports.object({
39481
- requesterKey: external_exports.string().trim().min(1),
39482
- requesterDisplayName: external_exports.string().trim().min(1).nullable(),
39483
- attributionGrade: AttributionGradeSchema
39484
- }).strip();
39485
- var SessionUsageRequesterSummarySchema = external_exports.object({
39486
- requesterKey: external_exports.string().trim().min(1).nullable(),
39487
- requesterDisplayName: external_exports.string().trim().min(1).nullable(),
39488
- billedCostUsd: NonNegativeUsdSchema2,
39489
- attributionGrades: external_exports.array(AttributionGradeSchema)
39490
- }).strip();
39491
- var SessionUsageResponseSchema = external_exports.object({
39492
- sessionId: SessionIdSchema2,
39493
- totals: UsageTotalsSchema,
39494
- models: external_exports.array(SessionUsageModelSummarySchema),
39495
- byFundingSource: external_exports.array(UsageFundingSummarySchema),
39496
- byRequester: external_exports.array(SessionUsageRequesterSummarySchema).optional().default([]),
39497
- currentAttribution: SessionUsageCurrentAttributionSchema.nullable().optional().default(null),
39498
- funding: SessionModelFundingStateSchema.nullable(),
39499
- firstUsageAt: external_exports.string().datetime().nullable(),
39500
- lastUsageAt: external_exports.string().datetime().nullable()
39501
- }).strip();
39502
- var PROJECT_USAGE_RANGE_KEYS = ["7d", "30d"];
39503
- var ProjectUsageRangeKeySchema = external_exports.enum(PROJECT_USAGE_RANGE_KEYS);
39504
- var UtcDateSchema = external_exports.string().regex(/^\d{4}-\d{2}-\d{2}$/);
39505
- var ProjectUsageTotalsSchema = UsageTotalsSchema.extend({
39506
- sessionCount: NonNegativeTokenCountSchema,
39507
- // Share of all tokens served from prompt-cache reads (0..1); 0 when the
39508
- // window has no tokens at all.
39509
- cacheReadShare: external_exports.number().min(0).max(1)
39510
- });
39511
- var ProjectUsageAgentSummarySchema = UsageTotalsSchema.extend({
39512
- agentResourceId: external_exports.string().trim().min(1),
39513
- // Resolved from the agent resource (archived agents included); null only
39514
- // when the agent row no longer exists at all — the ledger deliberately
39515
- // outlives its attribution targets.
39516
- agentName: external_exports.string().trim().min(1).nullable(),
39517
- sessionCount: NonNegativeTokenCountSchema
39518
- });
39519
- var ProjectUsageModelSummarySchema = UsageTotalsSchema.extend({
39520
- model: external_exports.string().trim().min(1)
39521
- });
39522
- var ProjectUsageSubscriptionSummarySchema = UsageTotalsSchema.extend({
39523
- userSubscriptionId: UserSubscriptionCredentialIdSchema.nullable(),
39524
- coveredInferenceCostUsd: NonNegativeUsdSchema2
39525
- });
39526
- var ProjectUsageSubscriptionSliceSchema = external_exports.object({
39527
- totals: UsageTotalsSchema.extend({
39528
- coveredInferenceCostUsd: NonNegativeUsdSchema2
39529
- }),
39530
- subscriptions: external_exports.array(ProjectUsageSubscriptionSummarySchema)
39531
- });
39532
- var ProjectUsageRequesterAttributionSchema = external_exports.object({
39533
- requesterKey: external_exports.string().trim().min(1).nullable(),
39534
- requesterDisplayName: external_exports.string().trim().min(1).nullable(),
39535
- attributionEpochIds: external_exports.array(SessionAttributionEpochIdSchema),
39536
- attributionGrades: external_exports.array(AttributionGradeSchema)
39537
- });
39538
- var ProjectUsageRequesterSummarySchema = UsageTotalsSchema.extend({
39539
- ...ProjectUsageRequesterAttributionSchema.shape,
39540
- sessionCount: NonNegativeTokenCountSchema
39541
- });
39542
- var ProjectUsageDayAgentSliceSchema = external_exports.object({
39543
- agentResourceId: external_exports.string().trim().min(1),
39544
- billedCostUsd: NonNegativeUsdSchema2
39545
- });
39546
- var ProjectUsageDayModelSliceSchema = external_exports.object({
39547
- model: external_exports.string().trim().min(1),
39548
- billedCostUsd: NonNegativeUsdSchema2
39549
- });
39550
- var ProjectUsageDayPointSchema = UsageTotalsSchema.extend({
39551
- date: UtcDateSchema,
39552
- byAgent: external_exports.array(ProjectUsageDayAgentSliceSchema),
39553
- byModel: external_exports.array(ProjectUsageDayModelSliceSchema)
39554
- });
39555
- var ProjectUsageResponseSchema = external_exports.object({
39556
- organizationId: OrganizationIdSchema,
39557
- projectId: ProjectIdSchema,
39558
- range: external_exports.object({
39559
- key: ProjectUsageRangeKeySchema,
39560
- since: external_exports.string().datetime(),
39561
- until: external_exports.string().datetime()
39562
- }),
39563
- totals: ProjectUsageTotalsSchema,
39564
- taskThroughput: external_exports.object({
39565
- created: external_exports.number().int().nonnegative(),
39566
- completed: external_exports.number().int().nonnegative(),
39567
- dropped: external_exports.number().int().nonnegative(),
39568
- costPerCompletedTaskUsd: NonNegativeUsdSchema2.nullable()
39569
- }).optional(),
39570
- byAgent: external_exports.array(ProjectUsageAgentSummarySchema),
39571
- byModel: external_exports.array(ProjectUsageModelSummarySchema),
39572
- byFundingSource: external_exports.array(UsageFundingSummarySchema),
39573
- subscriptionUsage: ProjectUsageSubscriptionSliceSchema,
39574
- byRequester: external_exports.array(ProjectUsageRequesterSummarySchema),
39575
- daily: external_exports.array(ProjectUsageDayPointSchema)
39576
- });
39577
-
39578
39618
  // ../../packages/schemas/src/user-subscriptions.ts
39579
39619
  var ATTRIBUTION_COLD_BOUNDARY_IDLE_MS = 5 * 6e4;
39580
39620
  var USER_SUBSCRIPTION_PROVIDERS = ["openai"];
package/dist/index.js CHANGED
@@ -23003,8 +23003,234 @@ var init_runtime_restart_diagnostics = __esm({
23003
23003
  }
23004
23004
  });
23005
23005
 
23006
+ // ../../packages/schemas/src/session-attribution-epochs.ts
23007
+ var ATTRIBUTION_GRADES, AttributionGradeSchema, AttributionRequesterSnapshotSchema, SessionAttributionEpochCreateSchema, SessionAttributionEpochRecordSchema;
23008
+ var init_session_attribution_epochs = __esm({
23009
+ "../../packages/schemas/src/session-attribution-epochs.ts"() {
23010
+ "use strict";
23011
+ init_zod();
23012
+ init_ids();
23013
+ init_model_credential_funding();
23014
+ init_requester();
23015
+ ATTRIBUTION_GRADES = ["derived", "asserted"];
23016
+ AttributionGradeSchema = external_exports.enum(ATTRIBUTION_GRADES);
23017
+ AttributionRequesterSnapshotSchema = external_exports.object({
23018
+ origin: RequesterRootOriginSchema,
23019
+ userId: UserIdSchema.nullable()
23020
+ }).strict();
23021
+ SessionAttributionEpochCreateSchema = external_exports.object({
23022
+ organizationId: OrganizationIdSchema,
23023
+ projectId: ProjectIdSchema.nullable(),
23024
+ sessionId: SessionIdSchema,
23025
+ sourceCommandId: SessionCommandIdSchema,
23026
+ requesterKey: external_exports.string().trim().min(1),
23027
+ requesterSnapshot: AttributionRequesterSnapshotSchema.nullable(),
23028
+ attributionGrade: AttributionGradeSchema,
23029
+ assertedByCommandId: SessionCommandIdSchema.nullable(),
23030
+ assertedBySessionId: SessionIdSchema.nullable(),
23031
+ assertedByAgentResourceId: external_exports.string().trim().min(1).nullable(),
23032
+ fundingSource: ModelCredentialFundingSourceSchema.nullable(),
23033
+ providerGrantId: ProviderGrantIdSchema.nullable(),
23034
+ userModelSubscriptionId: UserSubscriptionCredentialIdSchema.nullable()
23035
+ }).strict();
23036
+ SessionAttributionEpochRecordSchema = SessionAttributionEpochCreateSchema.extend({
23037
+ id: SessionAttributionEpochIdSchema,
23038
+ createdAt: external_exports.string().datetime()
23039
+ }).strict();
23040
+ }
23041
+ });
23042
+
23043
+ // ../../packages/schemas/src/usage.ts
23044
+ var UsageHarnessSchema, NonNegativeTokenCountSchema, NonNegativeUsdSchema2, UsageEventSchema, UsageEventRecordSchema, UsageTotalsSchema, SessionUsageModelSummarySchema, UsageFundingSummarySchema, SessionModelFundingStateSchema, SessionUsageCurrentAttributionSchema, SessionUsageRequesterSummarySchema, SessionUsageResponseSchema, PROJECT_USAGE_RANGE_KEYS, ProjectUsageRangeKeySchema, UtcDateSchema, ProjectUsageTotalsSchema, ProjectUsageAgentSummarySchema, ProjectUsageModelSummarySchema, ProjectUsageSubscriptionSummarySchema, ProjectUsageSubscriptionSliceSchema, ProjectUsageRequesterAttributionSchema, ProjectUsageRequesterSummarySchema, ProjectUsageDayAgentSliceSchema, ProjectUsageDayModelSliceSchema, ProjectUsageDayPointSchema, ProjectUsageResponseSchema;
23045
+ var init_usage = __esm({
23046
+ "../../packages/schemas/src/usage.ts"() {
23047
+ "use strict";
23048
+ init_zod();
23049
+ init_agents();
23050
+ init_ids();
23051
+ init_model_credential_funding();
23052
+ init_session_attribution_epochs();
23053
+ init_model_credential_funding();
23054
+ UsageHarnessSchema = external_exports.enum(AGENT_HARNESSES);
23055
+ NonNegativeTokenCountSchema = external_exports.number().int().nonnegative();
23056
+ NonNegativeUsdSchema2 = external_exports.number().nonnegative();
23057
+ UsageEventSchema = external_exports.object({
23058
+ // Tenant + lineage attribution. projectId is nullable because a resource can
23059
+ // belong directly to an organization with no project.
23060
+ organizationId: OrganizationIdSchema,
23061
+ projectId: ProjectIdSchema.nullable(),
23062
+ sessionId: SessionIdSchema,
23063
+ agentResourceId: external_exports.string().trim().min(1),
23064
+ harness: UsageHarnessSchema,
23065
+ // The concrete model id the call billed against (e.g. "claude-opus-4-8"),
23066
+ // taken from the response rather than any selection layer — a single run can
23067
+ // touch multiple models, so this is per-call, never per-run.
23068
+ model: external_exports.string().trim().min(1),
23069
+ inputTokens: NonNegativeTokenCountSchema,
23070
+ outputTokens: NonNegativeTokenCountSchema,
23071
+ cacheCreationTokens: NonNegativeTokenCountSchema,
23072
+ cacheReadTokens: NonNegativeTokenCountSchema,
23073
+ // The provider's own cost when it reports one, kept only for reconciliation.
23074
+ // Nullable/absent because it can be 0 or missing — never the billing source.
23075
+ providerCostUsd: NonNegativeUsdSchema2.nullable(),
23076
+ // Platform-derived cost and the rate-card version it was derived under, so a
23077
+ // later rate-card change never silently rewrites historical cost.
23078
+ derivedCostUsd: NonNegativeUsdSchema2,
23079
+ pricingVersion: external_exports.string().trim().min(1),
23080
+ // What this call debits from the organization's credit balance, and the fee
23081
+ // card it was derived under (see `./billing`). Required — a writer that
23082
+ // forgets it would silently record unbilled usage, so there is no default.
23083
+ billedCostUsd: NonNegativeUsdSchema2,
23084
+ billingFeeVersion: external_exports.string().trim().min(1),
23085
+ // Historical funding attribution for the model call. The provider grant id is
23086
+ // denormalized and nullable for platform-funded usage, matching the ledger's
23087
+ // no-FK audit-trail contract.
23088
+ fundingSource: ModelCredentialFundingSourceSchema.default("platform"),
23089
+ modelCredentialProviderGrantId: ProviderGrantIdSchema.nullable().default(null),
23090
+ // Optional during the cross-chunk rollout: B1 defines the attribution field
23091
+ // before B3 deploys its persistence column and D3 begins populating it.
23092
+ modelCredentialUserSubscriptionId: UserSubscriptionCredentialIdSchema.nullable().optional(),
23093
+ attributionEpochId: SessionAttributionEpochIdSchema.nullable().optional(),
23094
+ requesterKey: external_exports.string().trim().min(1).nullable().optional(),
23095
+ attributionGrade: AttributionGradeSchema.nullable().optional(),
23096
+ occurredAt: external_exports.string().datetime()
23097
+ });
23098
+ UsageEventRecordSchema = UsageEventSchema.extend({
23099
+ id: external_exports.string().trim().min(1),
23100
+ attributionEpochId: SessionAttributionEpochIdSchema.nullable().default(null),
23101
+ requesterKey: external_exports.string().trim().min(1).nullable().default(null),
23102
+ attributionGrade: AttributionGradeSchema.nullable().default(null),
23103
+ // Set on append-only correction rows: this row replaces the pointed-at row's
23104
+ // amounts, and ledger readers exclude any row another row supersedes.
23105
+ supersedesUsageEventId: external_exports.string().trim().min(1).nullable().default(null),
23106
+ createdAt: external_exports.string().datetime()
23107
+ });
23108
+ UsageTotalsSchema = external_exports.object({
23109
+ eventCount: NonNegativeTokenCountSchema,
23110
+ inputTokens: NonNegativeTokenCountSchema,
23111
+ outputTokens: NonNegativeTokenCountSchema,
23112
+ cacheCreationTokens: NonNegativeTokenCountSchema,
23113
+ cacheReadTokens: NonNegativeTokenCountSchema,
23114
+ totalTokens: NonNegativeTokenCountSchema,
23115
+ billedCostUsd: NonNegativeUsdSchema2
23116
+ });
23117
+ SessionUsageModelSummarySchema = UsageTotalsSchema.extend({
23118
+ model: external_exports.string().trim().min(1)
23119
+ });
23120
+ UsageFundingSummarySchema = UsageTotalsSchema.extend({
23121
+ fundingSource: ModelCredentialFundingSourceSchema,
23122
+ coveredInferenceCostUsd: NonNegativeUsdSchema2
23123
+ });
23124
+ SessionModelFundingStateSchema = external_exports.object({
23125
+ fundingSource: ModelCredentialFundingSourceSchema,
23126
+ provider: external_exports.string().trim().min(1),
23127
+ // The subscription owner's display name for user_subscription funding, so
23128
+ // the session header can say whose key is being used. Optional for old
23129
+ // writers; null when the name cannot resolve.
23130
+ ownerDisplayName: external_exports.string().trim().min(1).nullable().optional()
23131
+ });
23132
+ SessionUsageCurrentAttributionSchema = external_exports.object({
23133
+ requesterKey: external_exports.string().trim().min(1),
23134
+ requesterDisplayName: external_exports.string().trim().min(1).nullable(),
23135
+ attributionGrade: AttributionGradeSchema
23136
+ }).strip();
23137
+ SessionUsageRequesterSummarySchema = external_exports.object({
23138
+ requesterKey: external_exports.string().trim().min(1).nullable(),
23139
+ requesterDisplayName: external_exports.string().trim().min(1).nullable(),
23140
+ billedCostUsd: NonNegativeUsdSchema2,
23141
+ attributionGrades: external_exports.array(AttributionGradeSchema)
23142
+ }).strip();
23143
+ SessionUsageResponseSchema = external_exports.object({
23144
+ sessionId: SessionIdSchema,
23145
+ totals: UsageTotalsSchema,
23146
+ models: external_exports.array(SessionUsageModelSummarySchema),
23147
+ byFundingSource: external_exports.array(UsageFundingSummarySchema),
23148
+ byRequester: external_exports.array(SessionUsageRequesterSummarySchema).optional().default([]),
23149
+ currentAttribution: SessionUsageCurrentAttributionSchema.nullable().optional().default(null),
23150
+ funding: SessionModelFundingStateSchema.nullable(),
23151
+ firstUsageAt: external_exports.string().datetime().nullable(),
23152
+ lastUsageAt: external_exports.string().datetime().nullable()
23153
+ }).strip();
23154
+ PROJECT_USAGE_RANGE_KEYS = ["7d", "30d"];
23155
+ ProjectUsageRangeKeySchema = external_exports.enum(PROJECT_USAGE_RANGE_KEYS);
23156
+ UtcDateSchema = external_exports.string().regex(/^\d{4}-\d{2}-\d{2}$/);
23157
+ ProjectUsageTotalsSchema = UsageTotalsSchema.extend({
23158
+ sessionCount: NonNegativeTokenCountSchema,
23159
+ // Share of all tokens served from prompt-cache reads (0..1); 0 when the
23160
+ // window has no tokens at all.
23161
+ cacheReadShare: external_exports.number().min(0).max(1)
23162
+ });
23163
+ ProjectUsageAgentSummarySchema = UsageTotalsSchema.extend({
23164
+ agentResourceId: external_exports.string().trim().min(1),
23165
+ // Resolved from the agent resource (archived agents included); null only
23166
+ // when the agent row no longer exists at all — the ledger deliberately
23167
+ // outlives its attribution targets.
23168
+ agentName: external_exports.string().trim().min(1).nullable(),
23169
+ sessionCount: NonNegativeTokenCountSchema
23170
+ });
23171
+ ProjectUsageModelSummarySchema = UsageTotalsSchema.extend({
23172
+ model: external_exports.string().trim().min(1)
23173
+ });
23174
+ ProjectUsageSubscriptionSummarySchema = UsageTotalsSchema.extend({
23175
+ userSubscriptionId: UserSubscriptionCredentialIdSchema.nullable(),
23176
+ coveredInferenceCostUsd: NonNegativeUsdSchema2
23177
+ });
23178
+ ProjectUsageSubscriptionSliceSchema = external_exports.object({
23179
+ totals: UsageTotalsSchema.extend({
23180
+ coveredInferenceCostUsd: NonNegativeUsdSchema2
23181
+ }),
23182
+ subscriptions: external_exports.array(ProjectUsageSubscriptionSummarySchema)
23183
+ });
23184
+ ProjectUsageRequesterAttributionSchema = external_exports.object({
23185
+ requesterKey: external_exports.string().trim().min(1).nullable(),
23186
+ requesterDisplayName: external_exports.string().trim().min(1).nullable(),
23187
+ attributionEpochIds: external_exports.array(SessionAttributionEpochIdSchema),
23188
+ attributionGrades: external_exports.array(AttributionGradeSchema)
23189
+ });
23190
+ ProjectUsageRequesterSummarySchema = UsageTotalsSchema.extend({
23191
+ ...ProjectUsageRequesterAttributionSchema.shape,
23192
+ sessionCount: NonNegativeTokenCountSchema
23193
+ });
23194
+ ProjectUsageDayAgentSliceSchema = external_exports.object({
23195
+ agentResourceId: external_exports.string().trim().min(1),
23196
+ billedCostUsd: NonNegativeUsdSchema2
23197
+ });
23198
+ ProjectUsageDayModelSliceSchema = external_exports.object({
23199
+ model: external_exports.string().trim().min(1),
23200
+ billedCostUsd: NonNegativeUsdSchema2
23201
+ });
23202
+ ProjectUsageDayPointSchema = UsageTotalsSchema.extend({
23203
+ date: UtcDateSchema,
23204
+ byAgent: external_exports.array(ProjectUsageDayAgentSliceSchema),
23205
+ byModel: external_exports.array(ProjectUsageDayModelSliceSchema)
23206
+ });
23207
+ ProjectUsageResponseSchema = external_exports.object({
23208
+ organizationId: OrganizationIdSchema,
23209
+ projectId: ProjectIdSchema,
23210
+ range: external_exports.object({
23211
+ key: ProjectUsageRangeKeySchema,
23212
+ since: external_exports.string().datetime(),
23213
+ until: external_exports.string().datetime()
23214
+ }),
23215
+ totals: ProjectUsageTotalsSchema,
23216
+ taskThroughput: external_exports.object({
23217
+ created: external_exports.number().int().nonnegative(),
23218
+ completed: external_exports.number().int().nonnegative(),
23219
+ dropped: external_exports.number().int().nonnegative(),
23220
+ costPerCompletedTaskUsd: NonNegativeUsdSchema2.nullable()
23221
+ }).optional(),
23222
+ byAgent: external_exports.array(ProjectUsageAgentSummarySchema),
23223
+ byModel: external_exports.array(ProjectUsageModelSummarySchema),
23224
+ byFundingSource: external_exports.array(UsageFundingSummarySchema),
23225
+ subscriptionUsage: ProjectUsageSubscriptionSliceSchema,
23226
+ byRequester: external_exports.array(ProjectUsageRequesterSummarySchema),
23227
+ daily: external_exports.array(ProjectUsageDayPointSchema)
23228
+ });
23229
+ }
23230
+ });
23231
+
23006
23232
  // ../../packages/schemas/src/session-introspection.ts
23007
- var TruncatedValueSchema, RunConversationSearchSnippetSchema, RunConversationSearchMatchSchema, RunConversationSearchResponseSchema, SessionToolExchangeSchema, SessionToolExchangesResponseSchema, SESSION_TRIGGER_DELIVERY_ACTIONS, SessionTriggerDeliveryActionSchema, SESSION_EVENT_ORIGIN_KINDS, SessionEventOriginKindSchema, SessionTriggerDeliveryRecordSchema, SessionTriggersResponseSchema, RunBindingRecordSchema, RunBindingsResponseSchema, RunTurnSchema, SessionToolStatSchema, RunRuntimeRestartSchema, RunModelFallbackSchema, RunSummarySchema;
23233
+ var TruncatedValueSchema, RunConversationSearchSnippetSchema, RunConversationSearchMatchSchema, RunConversationSearchResponseSchema, SessionToolExchangeSchema, SessionToolExchangesResponseSchema, SESSION_TRIGGER_DELIVERY_ACTIONS, SessionTriggerDeliveryActionSchema, SESSION_EVENT_ORIGIN_KINDS, SessionEventOriginKindSchema, SessionTriggerDeliveryRecordSchema, SessionTriggersResponseSchema, RunBindingRecordSchema, RunBindingsResponseSchema, RunTurnSchema, SessionToolStatSchema, RunRuntimeRestartSchema, RunModelFallbackSchema, RUN_USAGE_BREAKDOWN_LIMIT, RunUsageTotalsSchema, RunUsageHarnessModelSchema, RunUsageSummarySchema, RunSummarySchema;
23008
23234
  var init_session_introspection = __esm({
23009
23235
  "../../packages/schemas/src/session-introspection.ts"() {
23010
23236
  "use strict";
@@ -23017,6 +23243,7 @@ var init_session_introspection = __esm({
23017
23243
  init_runtime_restart_diagnostics();
23018
23244
  init_session_bindings();
23019
23245
  init_sessions();
23246
+ init_usage();
23020
23247
  init_work_provenance();
23021
23248
  TruncatedValueSchema = external_exports.object({
23022
23249
  truncated: external_exports.literal(true),
@@ -23169,6 +23396,44 @@ var init_session_introspection = __esm({
23169
23396
  activatedAt: external_exports.string().datetime().nullable(),
23170
23397
  fallbackModelId: external_exports.string().nullable()
23171
23398
  });
23399
+ RUN_USAGE_BREAKDOWN_LIMIT = 8;
23400
+ RunUsageTotalsSchema = external_exports.object({
23401
+ eventCount: external_exports.number().int().nonnegative(),
23402
+ inputTokens: external_exports.number().int().nonnegative(),
23403
+ outputTokens: external_exports.number().int().nonnegative(),
23404
+ cacheCreationTokens: external_exports.number().int().nonnegative(),
23405
+ cacheReadTokens: external_exports.number().int().nonnegative(),
23406
+ /**
23407
+ * Stored rate-card-derived model cost; never recomputed by this read.
23408
+ * Omitted when the caller lacks `billing:read`.
23409
+ */
23410
+ derivedCostUsd: external_exports.number().nonnegative().optional(),
23411
+ /**
23412
+ * Sum of provider-reported costs only when every included event reported
23413
+ * one; null for empty, legacy, or partially reported groups, and omitted
23414
+ * when the caller lacks `billing:read`.
23415
+ */
23416
+ providerCostUsd: external_exports.number().nonnegative().nullable().optional()
23417
+ });
23418
+ RunUsageHarnessModelSchema = RunUsageTotalsSchema.extend({
23419
+ harness: UsageHarnessSchema,
23420
+ model: external_exports.string().trim().min(1)
23421
+ });
23422
+ RunUsageSummarySchema = external_exports.object({
23423
+ totals: RunUsageTotalsSchema,
23424
+ /**
23425
+ * Cache reads divided by prompt-side tokens: input + cache creation/write +
23426
+ * cache read. Output tokens are excluded; value is null when the exposed
23427
+ * denominator is zero.
23428
+ */
23429
+ cacheReadRatio: external_exports.object({
23430
+ denominatorTokens: external_exports.number().int().nonnegative(),
23431
+ value: external_exports.number().min(0).max(1).nullable()
23432
+ }),
23433
+ /** Highest derived-cost harness/model groups, in descending spend order. */
23434
+ byHarnessModel: external_exports.array(RunUsageHarnessModelSchema).max(RUN_USAGE_BREAKDOWN_LIMIT),
23435
+ breakdownTruncated: external_exports.boolean()
23436
+ });
23172
23437
  RunSummarySchema = external_exports.object({
23173
23438
  session: external_exports.object({
23174
23439
  id: SessionIdSchema,
@@ -23284,7 +23549,9 @@ var init_session_introspection = __esm({
23284
23549
  recent: external_exports.array(RunRuntimeRestartSchema)
23285
23550
  }),
23286
23551
  /** Latest same-provider model-fallback activation for the session, if any. */
23287
- modelFallback: RunModelFallbackSchema
23552
+ modelFallback: RunModelFallbackSchema,
23553
+ /** Current unsuperseded model usage for the session. */
23554
+ usage: RunUsageSummarySchema
23288
23555
  });
23289
23556
  }
23290
23557
  });
@@ -23630,43 +23897,6 @@ var init_runtimes = __esm({
23630
23897
  }
23631
23898
  });
23632
23899
 
23633
- // ../../packages/schemas/src/session-attribution-epochs.ts
23634
- var ATTRIBUTION_GRADES, AttributionGradeSchema, AttributionRequesterSnapshotSchema, SessionAttributionEpochCreateSchema, SessionAttributionEpochRecordSchema;
23635
- var init_session_attribution_epochs = __esm({
23636
- "../../packages/schemas/src/session-attribution-epochs.ts"() {
23637
- "use strict";
23638
- init_zod();
23639
- init_ids();
23640
- init_model_credential_funding();
23641
- init_requester();
23642
- ATTRIBUTION_GRADES = ["derived", "asserted"];
23643
- AttributionGradeSchema = external_exports.enum(ATTRIBUTION_GRADES);
23644
- AttributionRequesterSnapshotSchema = external_exports.object({
23645
- origin: RequesterRootOriginSchema,
23646
- userId: UserIdSchema.nullable()
23647
- }).strict();
23648
- SessionAttributionEpochCreateSchema = external_exports.object({
23649
- organizationId: OrganizationIdSchema,
23650
- projectId: ProjectIdSchema.nullable(),
23651
- sessionId: SessionIdSchema,
23652
- sourceCommandId: SessionCommandIdSchema,
23653
- requesterKey: external_exports.string().trim().min(1),
23654
- requesterSnapshot: AttributionRequesterSnapshotSchema.nullable(),
23655
- attributionGrade: AttributionGradeSchema,
23656
- assertedByCommandId: SessionCommandIdSchema.nullable(),
23657
- assertedBySessionId: SessionIdSchema.nullable(),
23658
- assertedByAgentResourceId: external_exports.string().trim().min(1).nullable(),
23659
- fundingSource: ModelCredentialFundingSourceSchema.nullable(),
23660
- providerGrantId: ProviderGrantIdSchema.nullable(),
23661
- userModelSubscriptionId: UserSubscriptionCredentialIdSchema.nullable()
23662
- }).strict();
23663
- SessionAttributionEpochRecordSchema = SessionAttributionEpochCreateSchema.extend({
23664
- id: SessionAttributionEpochIdSchema,
23665
- createdAt: external_exports.string().datetime()
23666
- }).strict();
23667
- }
23668
- });
23669
-
23670
23900
  // ../../packages/schemas/src/spend-cap-runtime.ts
23671
23901
  var SpendCapOverrideStateSchema, SpendCapOverrideUpdateRequestSchema, SPEND_CAP_LIMIT_KINDS, SpendCapLimitKindSchema, EffectiveSpendCapHitSchema, SessionSpendCapRuntimeStatusSchema, AgentSpendCapRuntimeStatusSchema, SessionCreationSpendCapDecisionSchema, SPEND_CAP_RUNTIME_ERROR_CODES, SpendCapRuntimeErrorResponseSchema;
23672
23902
  var init_spend_cap_runtime = __esm({
@@ -81718,195 +81948,6 @@ var init_temporal = __esm({
81718
81948
  }
81719
81949
  });
81720
81950
 
81721
- // ../../packages/schemas/src/usage.ts
81722
- var UsageHarnessSchema, NonNegativeTokenCountSchema, NonNegativeUsdSchema2, UsageEventSchema, UsageEventRecordSchema, UsageTotalsSchema, SessionUsageModelSummarySchema, UsageFundingSummarySchema, SessionModelFundingStateSchema, SessionUsageCurrentAttributionSchema, SessionUsageRequesterSummarySchema, SessionUsageResponseSchema, PROJECT_USAGE_RANGE_KEYS, ProjectUsageRangeKeySchema, UtcDateSchema, ProjectUsageTotalsSchema, ProjectUsageAgentSummarySchema, ProjectUsageModelSummarySchema, ProjectUsageSubscriptionSummarySchema, ProjectUsageSubscriptionSliceSchema, ProjectUsageRequesterAttributionSchema, ProjectUsageRequesterSummarySchema, ProjectUsageDayAgentSliceSchema, ProjectUsageDayModelSliceSchema, ProjectUsageDayPointSchema, ProjectUsageResponseSchema;
81723
- var init_usage = __esm({
81724
- "../../packages/schemas/src/usage.ts"() {
81725
- "use strict";
81726
- init_zod();
81727
- init_agents();
81728
- init_ids();
81729
- init_model_credential_funding();
81730
- init_session_attribution_epochs();
81731
- init_model_credential_funding();
81732
- UsageHarnessSchema = external_exports.enum(AGENT_HARNESSES);
81733
- NonNegativeTokenCountSchema = external_exports.number().int().nonnegative();
81734
- NonNegativeUsdSchema2 = external_exports.number().nonnegative();
81735
- UsageEventSchema = external_exports.object({
81736
- // Tenant + lineage attribution. projectId is nullable because a resource can
81737
- // belong directly to an organization with no project.
81738
- organizationId: OrganizationIdSchema,
81739
- projectId: ProjectIdSchema.nullable(),
81740
- sessionId: SessionIdSchema,
81741
- agentResourceId: external_exports.string().trim().min(1),
81742
- harness: UsageHarnessSchema,
81743
- // The concrete model id the call billed against (e.g. "claude-opus-4-8"),
81744
- // taken from the response rather than any selection layer — a single run can
81745
- // touch multiple models, so this is per-call, never per-run.
81746
- model: external_exports.string().trim().min(1),
81747
- inputTokens: NonNegativeTokenCountSchema,
81748
- outputTokens: NonNegativeTokenCountSchema,
81749
- cacheCreationTokens: NonNegativeTokenCountSchema,
81750
- cacheReadTokens: NonNegativeTokenCountSchema,
81751
- // The provider's own cost when it reports one, kept only for reconciliation.
81752
- // Nullable/absent because it can be 0 or missing — never the billing source.
81753
- providerCostUsd: NonNegativeUsdSchema2.nullable(),
81754
- // Platform-derived cost and the rate-card version it was derived under, so a
81755
- // later rate-card change never silently rewrites historical cost.
81756
- derivedCostUsd: NonNegativeUsdSchema2,
81757
- pricingVersion: external_exports.string().trim().min(1),
81758
- // What this call debits from the organization's credit balance, and the fee
81759
- // card it was derived under (see `./billing`). Required — a writer that
81760
- // forgets it would silently record unbilled usage, so there is no default.
81761
- billedCostUsd: NonNegativeUsdSchema2,
81762
- billingFeeVersion: external_exports.string().trim().min(1),
81763
- // Historical funding attribution for the model call. The provider grant id is
81764
- // denormalized and nullable for platform-funded usage, matching the ledger's
81765
- // no-FK audit-trail contract.
81766
- fundingSource: ModelCredentialFundingSourceSchema.default("platform"),
81767
- modelCredentialProviderGrantId: ProviderGrantIdSchema.nullable().default(null),
81768
- // Optional during the cross-chunk rollout: B1 defines the attribution field
81769
- // before B3 deploys its persistence column and D3 begins populating it.
81770
- modelCredentialUserSubscriptionId: UserSubscriptionCredentialIdSchema.nullable().optional(),
81771
- attributionEpochId: SessionAttributionEpochIdSchema.nullable().optional(),
81772
- requesterKey: external_exports.string().trim().min(1).nullable().optional(),
81773
- attributionGrade: AttributionGradeSchema.nullable().optional(),
81774
- occurredAt: external_exports.string().datetime()
81775
- });
81776
- UsageEventRecordSchema = UsageEventSchema.extend({
81777
- id: external_exports.string().trim().min(1),
81778
- attributionEpochId: SessionAttributionEpochIdSchema.nullable().default(null),
81779
- requesterKey: external_exports.string().trim().min(1).nullable().default(null),
81780
- attributionGrade: AttributionGradeSchema.nullable().default(null),
81781
- // Set on append-only correction rows: this row replaces the pointed-at row's
81782
- // amounts, and ledger readers exclude any row another row supersedes.
81783
- supersedesUsageEventId: external_exports.string().trim().min(1).nullable().default(null),
81784
- createdAt: external_exports.string().datetime()
81785
- });
81786
- UsageTotalsSchema = external_exports.object({
81787
- eventCount: NonNegativeTokenCountSchema,
81788
- inputTokens: NonNegativeTokenCountSchema,
81789
- outputTokens: NonNegativeTokenCountSchema,
81790
- cacheCreationTokens: NonNegativeTokenCountSchema,
81791
- cacheReadTokens: NonNegativeTokenCountSchema,
81792
- totalTokens: NonNegativeTokenCountSchema,
81793
- billedCostUsd: NonNegativeUsdSchema2
81794
- });
81795
- SessionUsageModelSummarySchema = UsageTotalsSchema.extend({
81796
- model: external_exports.string().trim().min(1)
81797
- });
81798
- UsageFundingSummarySchema = UsageTotalsSchema.extend({
81799
- fundingSource: ModelCredentialFundingSourceSchema,
81800
- coveredInferenceCostUsd: NonNegativeUsdSchema2
81801
- });
81802
- SessionModelFundingStateSchema = external_exports.object({
81803
- fundingSource: ModelCredentialFundingSourceSchema,
81804
- provider: external_exports.string().trim().min(1),
81805
- // The subscription owner's display name for user_subscription funding, so
81806
- // the session header can say whose key is being used. Optional for old
81807
- // writers; null when the name cannot resolve.
81808
- ownerDisplayName: external_exports.string().trim().min(1).nullable().optional()
81809
- });
81810
- SessionUsageCurrentAttributionSchema = external_exports.object({
81811
- requesterKey: external_exports.string().trim().min(1),
81812
- requesterDisplayName: external_exports.string().trim().min(1).nullable(),
81813
- attributionGrade: AttributionGradeSchema
81814
- }).strip();
81815
- SessionUsageRequesterSummarySchema = external_exports.object({
81816
- requesterKey: external_exports.string().trim().min(1).nullable(),
81817
- requesterDisplayName: external_exports.string().trim().min(1).nullable(),
81818
- billedCostUsd: NonNegativeUsdSchema2,
81819
- attributionGrades: external_exports.array(AttributionGradeSchema)
81820
- }).strip();
81821
- SessionUsageResponseSchema = external_exports.object({
81822
- sessionId: SessionIdSchema,
81823
- totals: UsageTotalsSchema,
81824
- models: external_exports.array(SessionUsageModelSummarySchema),
81825
- byFundingSource: external_exports.array(UsageFundingSummarySchema),
81826
- byRequester: external_exports.array(SessionUsageRequesterSummarySchema).optional().default([]),
81827
- currentAttribution: SessionUsageCurrentAttributionSchema.nullable().optional().default(null),
81828
- funding: SessionModelFundingStateSchema.nullable(),
81829
- firstUsageAt: external_exports.string().datetime().nullable(),
81830
- lastUsageAt: external_exports.string().datetime().nullable()
81831
- }).strip();
81832
- PROJECT_USAGE_RANGE_KEYS = ["7d", "30d"];
81833
- ProjectUsageRangeKeySchema = external_exports.enum(PROJECT_USAGE_RANGE_KEYS);
81834
- UtcDateSchema = external_exports.string().regex(/^\d{4}-\d{2}-\d{2}$/);
81835
- ProjectUsageTotalsSchema = UsageTotalsSchema.extend({
81836
- sessionCount: NonNegativeTokenCountSchema,
81837
- // Share of all tokens served from prompt-cache reads (0..1); 0 when the
81838
- // window has no tokens at all.
81839
- cacheReadShare: external_exports.number().min(0).max(1)
81840
- });
81841
- ProjectUsageAgentSummarySchema = UsageTotalsSchema.extend({
81842
- agentResourceId: external_exports.string().trim().min(1),
81843
- // Resolved from the agent resource (archived agents included); null only
81844
- // when the agent row no longer exists at all — the ledger deliberately
81845
- // outlives its attribution targets.
81846
- agentName: external_exports.string().trim().min(1).nullable(),
81847
- sessionCount: NonNegativeTokenCountSchema
81848
- });
81849
- ProjectUsageModelSummarySchema = UsageTotalsSchema.extend({
81850
- model: external_exports.string().trim().min(1)
81851
- });
81852
- ProjectUsageSubscriptionSummarySchema = UsageTotalsSchema.extend({
81853
- userSubscriptionId: UserSubscriptionCredentialIdSchema.nullable(),
81854
- coveredInferenceCostUsd: NonNegativeUsdSchema2
81855
- });
81856
- ProjectUsageSubscriptionSliceSchema = external_exports.object({
81857
- totals: UsageTotalsSchema.extend({
81858
- coveredInferenceCostUsd: NonNegativeUsdSchema2
81859
- }),
81860
- subscriptions: external_exports.array(ProjectUsageSubscriptionSummarySchema)
81861
- });
81862
- ProjectUsageRequesterAttributionSchema = external_exports.object({
81863
- requesterKey: external_exports.string().trim().min(1).nullable(),
81864
- requesterDisplayName: external_exports.string().trim().min(1).nullable(),
81865
- attributionEpochIds: external_exports.array(SessionAttributionEpochIdSchema),
81866
- attributionGrades: external_exports.array(AttributionGradeSchema)
81867
- });
81868
- ProjectUsageRequesterSummarySchema = UsageTotalsSchema.extend({
81869
- ...ProjectUsageRequesterAttributionSchema.shape,
81870
- sessionCount: NonNegativeTokenCountSchema
81871
- });
81872
- ProjectUsageDayAgentSliceSchema = external_exports.object({
81873
- agentResourceId: external_exports.string().trim().min(1),
81874
- billedCostUsd: NonNegativeUsdSchema2
81875
- });
81876
- ProjectUsageDayModelSliceSchema = external_exports.object({
81877
- model: external_exports.string().trim().min(1),
81878
- billedCostUsd: NonNegativeUsdSchema2
81879
- });
81880
- ProjectUsageDayPointSchema = UsageTotalsSchema.extend({
81881
- date: UtcDateSchema,
81882
- byAgent: external_exports.array(ProjectUsageDayAgentSliceSchema),
81883
- byModel: external_exports.array(ProjectUsageDayModelSliceSchema)
81884
- });
81885
- ProjectUsageResponseSchema = external_exports.object({
81886
- organizationId: OrganizationIdSchema,
81887
- projectId: ProjectIdSchema,
81888
- range: external_exports.object({
81889
- key: ProjectUsageRangeKeySchema,
81890
- since: external_exports.string().datetime(),
81891
- until: external_exports.string().datetime()
81892
- }),
81893
- totals: ProjectUsageTotalsSchema,
81894
- taskThroughput: external_exports.object({
81895
- created: external_exports.number().int().nonnegative(),
81896
- completed: external_exports.number().int().nonnegative(),
81897
- dropped: external_exports.number().int().nonnegative(),
81898
- costPerCompletedTaskUsd: NonNegativeUsdSchema2.nullable()
81899
- }).optional(),
81900
- byAgent: external_exports.array(ProjectUsageAgentSummarySchema),
81901
- byModel: external_exports.array(ProjectUsageModelSummarySchema),
81902
- byFundingSource: external_exports.array(UsageFundingSummarySchema),
81903
- subscriptionUsage: ProjectUsageSubscriptionSliceSchema,
81904
- byRequester: external_exports.array(ProjectUsageRequesterSummarySchema),
81905
- daily: external_exports.array(ProjectUsageDayPointSchema)
81906
- });
81907
- }
81908
- });
81909
-
81910
81951
  // ../../packages/schemas/src/user-subscriptions.ts
81911
81952
  var ATTRIBUTION_COLD_BOUNDARY_IDLE_MS, USER_SUBSCRIPTION_PROVIDERS, UserSubscriptionProviderSchema, USER_SUBSCRIPTION_CREDENTIAL_STATUSES, UserSubscriptionCredentialStatusSchema, OpenAiUserSubscriptionCredentialSecretSchema, UserSubscriptionCredentialSchema, USER_SUBSCRIPTION_POLICY_MODES, UserSubscriptionPolicyModeSchema, USER_SUBSCRIPTION_POLICY_ORIGINS, UserSubscriptionPolicyOriginSchema, UserSubscriptionPolicySchema, UserSubscriptionFundingCandidateSchema, UserSubscriptionFundingDecisionInputSchema, USER_SUBSCRIPTION_REJECTION_REASONS, UserSubscriptionRejectionReasonSchema, USER_SUBSCRIPTION_SELECTION_REASONS, UserSubscriptionSelectionReasonSchema, UserSubscriptionFundingDecisionSchema;
81912
81953
  var init_user_subscriptions = __esm({
@@ -84895,7 +84936,7 @@ var init_package = __esm({
84895
84936
  "package.json"() {
84896
84937
  package_default = {
84897
84938
  name: "@autohq/cli",
84898
- version: "0.1.564",
84939
+ version: "0.1.565",
84899
84940
  license: "SEE LICENSE IN README.md",
84900
84941
  publishConfig: {
84901
84942
  access: "public"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autohq/cli",
3
- "version": "0.1.564",
3
+ "version": "0.1.565",
4
4
  "license": "SEE LICENSE IN README.md",
5
5
  "publishConfig": {
6
6
  "access": "public"