@frogbotai/plugin-api-keys 0.16.0 → 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.
@@ -1,10 +1,9 @@
1
- import type { CollectionConfig, FieldAccess, FrogbotRequest } from 'frogbot';
1
+ import type { CollectionConfig, FrogbotRequest } from 'frogbot';
2
2
  type CollectionOptions = {
3
3
  authCollection: string;
4
4
  collectionSlug: string;
5
5
  tokenPrefix: string;
6
6
  usageCollection?: string;
7
- policyAccess?: FieldAccess;
8
7
  canRevokeAnyKey?: (req: FrogbotRequest) => boolean | Promise<boolean>;
9
8
  collection?: Partial<CollectionConfig>;
10
9
  existing?: CollectionConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAGhB,WAAW,EACX,cAAc,EACf,MAAM,SAAS,CAAC;AAKjB,KAAK,iBAAiB,GAAG;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAkGF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAoIpF"}
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,gBAAgB,EAAmB,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzF,KAAK,iBAAiB,GAAG;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAkGF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAkIpF"}
@@ -1,4 +1,3 @@
1
- import { createPolicyFields } from './fields.js';
2
1
  import { ApiKeyServiceError, mintApiKey, revokeApiKey, rotateApiKey } from './server/services.js';
3
2
  const ownKeys = ({ req }) => (req.user ? { owner: { equals: req.user.id } } : false);
4
3
  function mergeFields(...groups) {
@@ -90,7 +89,7 @@ function createEndpoints({ collectionSlug, tokenPrefix, canRevokeAnyKey, }) {
90
89
  ];
91
90
  }
92
91
  export function createApiKeysCollection(options) {
93
- const { authCollection, collectionSlug, collection, existing, policyAccess, usageCollection } = options;
92
+ const { authCollection, collectionSlug, collection, existing, usageCollection } = options;
94
93
  const fields = [
95
94
  { name: 'name', type: 'text', required: true },
96
95
  {
@@ -124,7 +123,6 @@ export function createApiKeysCollection(options) {
124
123
  access: { update: () => false },
125
124
  admin: { readOnly: true },
126
125
  },
127
- ...createPolicyFields(true, policyAccess),
128
126
  {
129
127
  name: 'revokedAt',
130
128
  type: 'date',
@@ -1 +1 @@
1
- {"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
package/dist/fields.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import type { Field, FieldAccess } from 'frogbot';
2
- export declare function createPolicyFields(includeState: boolean, policyAccess?: FieldAccess): Field[];
1
+ import type { Field } from 'frogbot';
2
+ export declare function createPolicyFields(modelIDs: string[]): Field[];
3
3
  //# sourceMappingURL=fields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA0BlD,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,OAAO,EACrB,YAAY,GAAE,WAAkB,GAC/B,KAAK,EAAE,CAqCT"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAa9D"}
package/dist/fields.js CHANGED
@@ -1,61 +1,15 @@
1
- const deny = () => false;
2
- function policyField(name, value, manage) {
3
- return {
4
- name,
5
- type: 'group',
6
- access: { update: manage },
7
- fields: [
8
- {
9
- name: 'mode',
10
- type: 'select',
11
- defaultValue: 'inherit',
12
- required: true,
13
- options: ['inherit', 'custom', 'unlimited'],
14
- },
15
- {
16
- ...value,
17
- name: 'value',
18
- admin: { ...value.admin, condition: (_, siblingData) => siblingData.mode === 'custom' },
19
- },
20
- ],
21
- };
22
- }
23
- export function createPolicyFields(includeState, policyAccess = deny) {
1
+ export function createPolicyFields(modelIDs) {
24
2
  return [
25
- policyField('monthlyBudget', { name: 'value', type: 'number', min: 0 }, policyAccess),
26
- policyField('rpm', { name: 'value', type: 'number', min: 1 }, policyAccess),
27
- policyField('tpm', { name: 'value', type: 'number', min: 1 }, policyAccess),
28
- policyField('models', { name: 'value', type: 'json' }, policyAccess),
3
+ { name: 'monthlyBudget', label: 'Monthly Budget (USD)', type: 'number', min: 0 },
4
+ { name: 'models', type: 'select', hasMany: true, options: modelIDs },
29
5
  {
30
- name: 'budgetBehavior',
31
- type: 'select',
32
- defaultValue: 'block',
33
- options: ['block', 'alert-only'],
34
- access: { update: policyAccess },
6
+ name: 'spendThisPeriodUSD',
7
+ label: 'Monthly Spend (USD)',
8
+ type: 'number',
9
+ defaultValue: 0,
10
+ access: { update: () => false },
11
+ admin: { readOnly: true },
35
12
  },
36
- ...(includeState
37
- ? [
38
- {
39
- name: 'spendThisPeriodUSD',
40
- type: 'number',
41
- defaultValue: 0,
42
- access: { update: () => false },
43
- admin: { readOnly: true },
44
- },
45
- {
46
- name: 'budgetPeriodStartedAt',
47
- type: 'date',
48
- access: { update: () => false },
49
- admin: { readOnly: true },
50
- },
51
- {
52
- name: 'budgetAlertsSent',
53
- type: 'json',
54
- access: { update: () => false },
55
- admin: { hidden: true },
56
- },
57
- ]
58
- : []),
59
13
  ];
60
14
  }
61
15
  //# sourceMappingURL=fields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAgB,GAAG,EAAE,CAAC,KAAK,CAAC;AAEtC,SAAS,WAAW,CAAC,IAAY,EAAE,KAAY,EAAE,MAAmB;IAClE,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAC1B,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,YAAY,EAAE,SAAS;gBACvB,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC;aAC5C;YACD;gBACE,GAAG,KAAK;gBACR,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE;aACxF;SACF;KACO,CAAC;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,YAAqB,EACrB,eAA4B,IAAI;IAEhC,OAAO;QACL,WAAW,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC;QACrF,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC;QAC3E,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC;QAC3E,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC;QACpE;YACE,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,OAAO;YACrB,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;YAChC,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;SACjC;QACD,GAAG,CAAC,YAAY;YACd,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,IAAI,EAAE,QAAiB;oBACvB,YAAY,EAAE,CAAC;oBACf,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;oBAC/B,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;iBAC1B;gBACD;oBACE,IAAI,EAAE,uBAAuB;oBAC7B,IAAI,EAAE,MAAe;oBACrB,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;oBAC/B,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;iBAC1B;gBACD;oBACE,IAAI,EAAE,kBAAkB;oBACxB,IAAI,EAAE,MAAe;oBACrB,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;oBAC/B,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;iBACxB;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACnD,OAAO;QACL,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;QAChF,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;QACpE;YACE,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,qBAAqB;YAC5B,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;YAC/B,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC1B;KACF,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { CollectionConfig, FieldAccess, FrogbotRequest, Plugin } from 'frogbot';
2
- export type { EffectivePolicy, PolicyDefaults, PolicyDocument, PolicyMode, PolicyValue, } from './policy.js';
1
+ import { type CollectionConfig, type FrogbotRequest, type Plugin } from 'frogbot';
2
+ export type { PolicyDocument } from './policy.js';
3
3
  export type { MintApiKeyOptions, RevokeApiKeyOptions, RotateApiKeyOptions, } from './server/services.js';
4
4
  export { ApiKeyServiceError, mintApiKey, revokeApiKey, rotateApiKey } from './server/services.js';
5
5
  export type { ApiKeyHeaderOptions, ApiKeyTokenOptions } from './server/token.js';
@@ -12,14 +12,7 @@ export type ApiKeysPluginOptions = {
12
12
  tokenPrefix?: string;
13
13
  headerNames?: string[];
14
14
  collection?: Partial<CollectionConfig>;
15
- policyAccess?: FieldAccess;
16
15
  canRevokeAnyKey?: (req: FrogbotRequest) => boolean | Promise<boolean>;
17
- defaults?: import('./policy.js').PolicyDefaults;
18
- alerts?: {
19
- webhookURL: string;
20
- thresholds?: number[];
21
- headers?: Record<string, string>;
22
- };
23
16
  };
24
17
  export declare function apiKeysPlugin(options?: ApiKeysPluginOptions): Plugin;
25
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAQrF,YAAY,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClG,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,QAAQ,CAAC,EAAE,OAAO,aAAa,EAAE,cAAc,CAAC;IAChD,MAAM,CAAC,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC;CACH,CAAC;AAQF,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,MAAM,CAgUxE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEnB,KAAK,MAAM,EACZ,MAAM,SAAS,CAAC;AAQjB,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClG,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvC,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvE,CAAC;AAsBF,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,MAAM,CAyKxE"}
package/dist/index.js CHANGED
@@ -1,56 +1,45 @@
1
- import { calculateModelCostUSD } from '@frogbotai/gateway';
2
- import { BudgetExceededError, ModelNotAllowedError, RateLimitExceededError, } from '@frogbotai/gateway/errors';
1
+ import { calculateCostUSD, calculateModelCostUSD } from '@frogbotai/gateway';
2
+ import { BudgetExceededError, ModelNotAllowedError } from '@frogbotai/gateway/errors';
3
+ import { getConfiguredModelIds, } from 'frogbot';
3
4
  import { createApiKeysCollection } from './collection.js';
4
5
  import { createPolicyFields } from './fields.js';
5
- import { resolvePolicy, SerialQueue, SlidingWindowRateLimiter } from './policy.js';
6
+ import { SerialQueue } from './policy.js';
6
7
  import { createApiKeyStrategy } from './strategy.js';
7
8
  export { ApiKeyServiceError, mintApiKey, revokeApiKey, rotateApiKey } from './server/services.js';
8
9
  export { createApiKeyToken, extractApiKeyToken, getApiKeyPrefix, hashApiKeyToken, } from './server/token.js';
9
10
  export { isApiKeyStrategy } from './strategy.js';
11
+ function isPricedCustomProvider(entry) {
12
+ return (typeof entry === 'object' &&
13
+ entry !== null &&
14
+ 'type' in entry &&
15
+ entry.type === 'openai-compatible' &&
16
+ 'models' in entry &&
17
+ Array.isArray(entry.models));
18
+ }
10
19
  export function apiKeysPlugin(options = {}) {
11
- for (const [name, value] of Object.entries(options.defaults ?? {})) {
12
- if (name !== 'models' &&
13
- name !== 'budgetBehavior' &&
14
- (typeof value !== 'number' || !Number.isFinite(value) || value < 0)) {
15
- throw new Error(`[plugin-api-keys] Default '${name}' must be a non-negative finite number.`);
16
- }
17
- }
18
- if ((options.defaults?.rpm !== undefined && options.defaults.rpm < 1) ||
19
- (options.defaults?.tpm !== undefined && options.defaults.tpm < 1)) {
20
- throw new Error('[plugin-api-keys] RPM and TPM defaults must be at least 1.');
21
- }
22
- if (options.defaults?.budgetBehavior !== undefined &&
23
- !['block', 'alert-only'].includes(options.defaults.budgetBehavior)) {
24
- throw new Error('[plugin-api-keys] Budget behavior must be block or alert-only.');
25
- }
26
- if (options.defaults?.models?.some((model) => !model.includes('/'))) {
27
- throw new Error('[plugin-api-keys] Default models must use provider/model IDs.');
28
- }
29
- if (options.alerts && !options.alerts.webhookURL) {
30
- throw new Error('[plugin-api-keys] Alert webhookURL is required.');
31
- }
32
- if (options.alerts?.thresholds?.some((threshold) => !Number.isFinite(threshold) || threshold <= 0 || threshold > 1)) {
33
- throw new Error('[plugin-api-keys] Alert thresholds must be greater than 0 and at most 1.');
34
- }
35
- const limiter = new SlidingWindowRateLimiter();
36
20
  const queue = new SerialQueue();
37
21
  return (config) => {
38
22
  const authCollection = options.authCollection ?? 'users';
39
23
  const collectionSlug = options.collectionSlug ?? 'api-keys';
24
+ const configuredCosts = new Map();
25
+ for (const [provider, entry] of Object.entries(config.ai?.providers ?? {})) {
26
+ if (!isPricedCustomProvider(entry))
27
+ continue;
28
+ for (const model of entry.models) {
29
+ if (!model.cost)
30
+ continue;
31
+ configuredCosts.set(`${provider}/${model.id}`, {
32
+ input: model.cost.input ?? 0,
33
+ output: model.cost.output ?? 0,
34
+ ...(model.cost.cache_read !== undefined && { cache_read: model.cost.cache_read }),
35
+ });
36
+ }
37
+ }
40
38
  const auth = config.collections.find((collection) => collection.slug === authCollection);
41
39
  if (!auth || auth.auth === undefined || auth.auth === false) {
42
40
  throw new Error(`[plugin-api-keys] Auth collection '${authCollection}' must exist and have auth enabled.`);
43
41
  }
44
- const reservedPolicyFields = new Set([
45
- 'monthlyBudget',
46
- 'rpm',
47
- 'tpm',
48
- 'models',
49
- 'budgetBehavior',
50
- 'spendThisPeriodUSD',
51
- 'budgetPeriodStartedAt',
52
- 'budgetAlertsSent',
53
- ]);
42
+ const reservedPolicyFields = new Set(['monthlyBudget', 'models', 'spendThisPeriodUSD']);
54
43
  const collision = auth.fields.find((field) => 'name' in field && reservedPolicyFields.has(field.name));
55
44
  if (collision && 'name' in collision) {
56
45
  throw new Error(`[plugin-api-keys] Auth field '${collision.name}' is reserved.`);
@@ -68,7 +57,6 @@ export function apiKeysPlugin(options = {}) {
68
57
  collectionSlug,
69
58
  tokenPrefix: options.tokenPrefix ?? 'fb',
70
59
  usageCollection: usageLog?.slug,
71
- policyAccess: options.policyAccess,
72
60
  canRevokeAnyKey: options.canRevokeAnyKey,
73
61
  collection: options.collection,
74
62
  existing,
@@ -93,11 +81,8 @@ export function apiKeysPlugin(options = {}) {
93
81
  const authConfig = typeof next.auth === 'object' ? next.auth : {};
94
82
  next = {
95
83
  ...next,
96
- fields: [...next.fields, ...createPolicyFields(true, options.policyAccess)],
97
- auth: {
98
- ...authConfig,
99
- strategies: [...(authConfig.strategies ?? []), strategy],
100
- },
84
+ fields: [...next.fields, ...createPolicyFields(getConfiguredModelIds(config.ai))],
85
+ auth: { ...authConfig, strategies: [...(authConfig.strategies ?? []), strategy] },
101
86
  };
102
87
  }
103
88
  if (item === usageLog)
@@ -108,33 +93,17 @@ export function apiKeysPlugin(options = {}) {
108
93
  slug: 'frogbot-reset-ai-budgets',
109
94
  schedule: [{ cron: '0 0 1 * *', queue: 'frogbot-reset-ai-budgets' }],
110
95
  handler: async ({ req }) => {
111
- for (const collection of [collectionSlug, authCollection]) {
112
- await req.payload.update({
113
- collection,
114
- where: { id: { exists: true } },
115
- data: {
116
- spendThisPeriodUSD: 0,
117
- budgetPeriodStartedAt: new Date().toISOString(),
118
- budgetAlertsSent: [],
119
- },
120
- overrideAccess: true,
121
- req,
122
- });
123
- }
96
+ await req.payload.update({
97
+ collection: authCollection,
98
+ where: { id: { exists: true } },
99
+ data: { spendThisPeriodUSD: 0 },
100
+ overrideAccess: true,
101
+ req,
102
+ });
124
103
  return { output: {} };
125
104
  },
126
105
  };
127
- const autoRun = config.jobs?.autoRun;
128
- const jobs = {
129
- ...config.jobs,
130
- tasks: [...(config.jobs?.tasks ?? []), resetTask],
131
- autoRun: typeof autoRun === 'function'
132
- ? async (payload) => [
133
- ...(await autoRun(payload)),
134
- { allQueues: true, cron: '* * * * *' },
135
- ]
136
- : [...(autoRun ?? []), { allQueues: true, cron: '* * * * *' }],
137
- };
106
+ const jobs = { ...config.jobs, tasks: [...(config.jobs?.tasks ?? []), resetTask] };
138
107
  return {
139
108
  ...config,
140
109
  jobs: config.ai ? jobs : config.jobs,
@@ -154,51 +123,18 @@ export function apiKeysPlugin(options = {}) {
154
123
  beforeOperation: [
155
124
  ...(config.ai.hooks?.beforeOperation ?? []),
156
125
  async (args) => {
157
- const apiKeyId = args.req?.user?.apiKeyId;
158
126
  if (!args.req?.user)
159
127
  return;
160
- if (apiKeyId !== undefined) {
161
- args.context.usageFields = {
162
- ...args.context.usageFields,
163
- apiKey: apiKeyId,
164
- };
165
- }
166
- if (!args.req.frogbot?.findByID)
167
- return;
168
- const key = apiKeyId === undefined
169
- ? undefined
170
- : (await args.req.frogbot.findByID({
171
- collection: collectionSlug,
172
- id: apiKeyId,
173
- depth: 0,
174
- overrideAccess: true,
175
- req: args.req,
176
- }));
177
- const user = args.req.user;
178
- const policy = resolvePolicy({
179
- key: key,
180
- user,
181
- defaults: options.defaults,
182
- });
183
- const userPolicy = resolvePolicy({ user, defaults: options.defaults });
184
- const subjects = [
185
- apiKeyId === undefined ? undefined : { subject: `key:${apiKeyId}`, policy },
186
- { subject: `user:${args.req.user.id}`, policy: userPolicy },
187
- ].filter((value) => Boolean(value));
188
- if (subjects.some(({ policy: current }) => current.budgetBehavior === 'block' &&
189
- current.monthlyBudgetUSD !== undefined &&
190
- current.spendThisPeriodUSD >= current.monthlyBudgetUSD)) {
128
+ const policy = args.req.user;
129
+ if (policy.monthlyBudget !== undefined &&
130
+ (policy.spendThisPeriodUSD ?? 0) >= policy.monthlyBudget) {
191
131
  throw new BudgetExceededError();
192
132
  }
193
- for (const { subject, policy: current } of subjects) {
194
- const violation = limiter.admit(subject, current);
195
- if (violation)
196
- throw new RateLimitExceededError(violation);
197
- }
198
133
  Object.assign(args.context, {
199
134
  policy,
200
- policySubjects: subjects,
201
- policyKey: key,
135
+ ...('apiKeyId' in policy && typeof policy.apiKeyId === 'string'
136
+ ? { usageFields: { apiKey: policy.apiKeyId } }
137
+ : {}),
202
138
  });
203
139
  },
204
140
  ],
@@ -206,7 +142,7 @@ export function apiKeysPlugin(options = {}) {
206
142
  ...(config.ai.hooks?.beforeUpstream ?? []),
207
143
  (args) => {
208
144
  const models = args.context.policy?.models;
209
- if (models && !models.includes(args.model)) {
145
+ if (models?.length && !models.includes(args.model)) {
210
146
  throw new ModelNotAllowedError(args.model);
211
147
  }
212
148
  },
@@ -214,78 +150,34 @@ export function apiKeysPlugin(options = {}) {
214
150
  afterOperation: [
215
151
  ...(config.ai.hooks?.afterOperation ?? []),
216
152
  async (args) => {
217
- const context = args.context;
218
153
  const req = args.req;
219
154
  if (!req?.user || args.error)
220
155
  return;
221
- const tokens = args.usage?.totalTokens ?? 0;
222
- for (const { subject } of context.policySubjects ?? []) {
223
- limiter.settle(subject, tokens);
224
- }
225
- const cost = args.usage ? calculateModelCostUSD(args.model, args.usage) : 0;
156
+ const userId = req.user.id;
157
+ const configuredCost = configuredCosts.get(args.model);
158
+ const cost = args.usage
159
+ ? configuredCost
160
+ ? calculateCostUSD(args.usage, configuredCost)
161
+ : calculateModelCostUSD(args.model, args.usage)
162
+ : 0;
226
163
  if (cost <= 0)
227
164
  return;
228
- const targets = [
229
- req.user.apiKeyId === undefined
230
- ? undefined
231
- : { collection: collectionSlug, id: req.user.apiKeyId },
232
- { collection: authCollection, id: req.user.id },
233
- ].filter((target) => Boolean(target));
234
- await Promise.all(targets.map((target) => queue.run(`${target.collection}:${target.id}`, async () => {
235
- const doc = (await req.frogbot.findByID({
236
- collection: target.collection,
237
- id: target.id,
165
+ await queue.run(String(userId), async () => {
166
+ const user = (await req.frogbot.findByID({
167
+ collection: authCollection,
168
+ id: userId,
238
169
  depth: 0,
239
170
  overrideAccess: true,
240
171
  req,
241
172
  }));
242
- const spend = (typeof doc.spendThisPeriodUSD === 'number'
243
- ? doc.spendThisPeriodUSD
244
- : 0) + cost;
245
- const sent = Array.isArray(doc.budgetAlertsSent)
246
- ? doc.budgetAlertsSent.filter((value) => typeof value === 'number')
247
- : [];
248
- const policy = resolvePolicy({
249
- key: (target.collection === collectionSlug
250
- ? doc
251
- : context.policyKey),
252
- user: (target.collection === authCollection
253
- ? doc
254
- : req.user),
255
- defaults: options.defaults,
256
- });
257
- const thresholds = options.alerts?.thresholds ?? [0.8, 1];
258
- const crossed = policy.monthlyBudgetUSD === undefined
259
- ? []
260
- : thresholds.filter((threshold) => spend / policy.monthlyBudgetUSD >= threshold &&
261
- !sent.includes(threshold));
262
173
  await req.frogbot.update({
263
- collection: target.collection,
264
- id: target.id,
265
- data: {
266
- spendThisPeriodUSD: spend,
267
- budgetPeriodStartedAt: doc.budgetPeriodStartedAt ?? new Date().toISOString(),
268
- budgetAlertsSent: [...sent, ...crossed],
269
- },
174
+ collection: authCollection,
175
+ id: userId,
176
+ data: { spendThisPeriodUSD: (user.spendThisPeriodUSD ?? 0) + cost },
270
177
  overrideAccess: true,
271
178
  req,
272
179
  });
273
- if (options.alerts && crossed.length) {
274
- await fetch(options.alerts.webhookURL, {
275
- method: 'POST',
276
- headers: {
277
- 'content-type': 'application/json',
278
- ...options.alerts.headers,
279
- },
280
- body: JSON.stringify({
281
- subject: target,
282
- spendThisPeriodUSD: spend,
283
- monthlyBudgetUSD: policy.monthlyBudgetUSD,
284
- thresholds: crossed,
285
- }),
286
- });
287
- }
288
- })));
180
+ });
289
181
  },
290
182
  ],
291
183
  },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/policy.d.ts CHANGED
@@ -1,45 +1,11 @@
1
- export type PolicyMode = 'inherit' | 'custom' | 'unlimited';
2
- export type PolicyValue<T> = {
3
- mode?: PolicyMode;
4
- value?: T;
5
- };
6
1
  export type PolicyDocument = {
7
- monthlyBudget?: PolicyValue<number>;
8
- rpm?: PolicyValue<number>;
9
- tpm?: PolicyValue<number>;
10
- models?: PolicyValue<string[]>;
11
- spendThisPeriodUSD?: number;
12
- budgetBehavior?: 'block' | 'alert-only';
13
- };
14
- export type PolicyDefaults = {
15
- monthlyBudgetUSD?: number;
16
- rpm?: number;
17
- tpm?: number;
2
+ apiKeyId?: string;
3
+ monthlyBudget?: number;
18
4
  models?: string[];
19
- budgetBehavior?: 'block' | 'alert-only';
20
- };
21
- export type EffectivePolicy = PolicyDefaults & {
22
- spendThisPeriodUSD: number;
5
+ spendThisPeriodUSD?: number;
23
6
  };
24
7
  export declare class SerialQueue {
25
8
  private readonly updates;
26
- get pending(): number;
27
9
  run(subject: string, update: () => Promise<void>): Promise<void>;
28
10
  }
29
- export declare function resolvePolicy(args: {
30
- key?: PolicyDocument;
31
- user?: PolicyDocument;
32
- defaults?: PolicyDefaults;
33
- }): EffectivePolicy;
34
- export declare class SlidingWindowRateLimiter {
35
- private readonly now;
36
- private readonly windows;
37
- constructor(now?: () => number);
38
- admit(subject: string, policy: Pick<EffectivePolicy, 'rpm' | 'tpm'>): {
39
- kind: 'rpm' | 'tpm';
40
- retryAfterSeconds: number;
41
- } | undefined;
42
- settle(subject: string, tokens: number): void;
43
- private get;
44
- }
45
11
  //# sourceMappingURL=policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE5D,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,GAAG,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG;IAC7C,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAE5D,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAUjE;AAcD,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,GAAG,eAAe,CAuBlB;AAID,qBAAa,wBAAwB;IAGvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;gBAE7B,GAAG,GAAE,MAAM,MAAiB;IAEzD,KAAK,CACH,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,KAAK,CAAC,GAC3C;QAAE,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAejE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAK7C,OAAO,CAAC,GAAG;CAOZ"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAE5D,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAUjE"}
package/dist/policy.js CHANGED
@@ -1,8 +1,5 @@
1
1
  export class SerialQueue {
2
2
  updates = new Map();
3
- get pending() {
4
- return this.updates.size;
5
- }
6
3
  run(subject, update) {
7
4
  const next = (this.updates.get(subject) ?? Promise.resolve()).then(update, update);
8
5
  let owner;
@@ -15,64 +12,4 @@ export class SerialQueue {
15
12
  return next;
16
13
  }
17
14
  }
18
- function resolveValue(key, user, fallback) {
19
- for (const policy of [key, user]) {
20
- if (policy?.mode === 'unlimited')
21
- return undefined;
22
- if (policy?.mode === 'custom')
23
- return policy.value;
24
- }
25
- return fallback;
26
- }
27
- export function resolvePolicy(args) {
28
- const { key, user, defaults = {} } = args;
29
- const budgetSpend = key?.monthlyBudget?.mode === 'custom'
30
- ? key.spendThisPeriodUSD
31
- : key?.monthlyBudget?.mode === 'unlimited'
32
- ? 0
33
- : user?.monthlyBudget?.mode === 'custom'
34
- ? user.spendThisPeriodUSD
35
- : (key?.spendThisPeriodUSD ?? user?.spendThisPeriodUSD);
36
- return {
37
- monthlyBudgetUSD: resolveValue(key?.monthlyBudget, user?.monthlyBudget, defaults.monthlyBudgetUSD),
38
- rpm: resolveValue(key?.rpm, user?.rpm, defaults.rpm),
39
- tpm: resolveValue(key?.tpm, user?.tpm, defaults.tpm),
40
- models: resolveValue(key?.models, user?.models, defaults.models),
41
- budgetBehavior: key?.budgetBehavior ?? user?.budgetBehavior ?? defaults.budgetBehavior ?? 'block',
42
- spendThisPeriodUSD: budgetSpend ?? 0,
43
- };
44
- }
45
- export class SlidingWindowRateLimiter {
46
- now;
47
- windows = new Map();
48
- constructor(now = Date.now) {
49
- this.now = now;
50
- }
51
- admit(subject, policy) {
52
- const now = this.now();
53
- const entry = this.get(subject, now);
54
- const retry = (at) => Math.max(1, Math.ceil((at + 60_000 - now) / 1000));
55
- if (policy.rpm !== undefined && entry.requests.length >= policy.rpm) {
56
- return { kind: 'rpm', retryAfterSeconds: retry(entry.requests[0]) };
57
- }
58
- const tokens = entry.tokens.reduce((sum, item) => sum + item.value, 0);
59
- if (policy.tpm !== undefined && tokens >= policy.tpm) {
60
- return { kind: 'tpm', retryAfterSeconds: retry(entry.tokens[0]?.at ?? now) };
61
- }
62
- entry.requests.push(now);
63
- return undefined;
64
- }
65
- settle(subject, tokens) {
66
- if (tokens <= 0)
67
- return;
68
- this.get(subject, this.now()).tokens.push({ at: this.now(), value: tokens });
69
- }
70
- get(subject, now) {
71
- const entry = this.windows.get(subject) ?? { requests: [], tokens: [] };
72
- entry.requests = entry.requests.filter((at) => at > now - 60_000);
73
- entry.tokens = entry.tokens.filter(({ at }) => at > now - 60_000);
74
- this.windows.set(subject, entry);
75
- return entry;
76
- }
77
- }
78
15
  //# sourceMappingURL=policy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,WAAW;IACL,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE5D,GAAG,CAAC,OAAe,EAAE,MAA2B;QAC9C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnF,IAAI,KAAoB,CAAC;QACzB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC,CAAC;QACF,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frogbotai/plugin-api-keys",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "description": "Multiple named API keys for FrogBot.",
5
5
  "license": "MIT",
6
6
  "author": "Colby Gilbert",
@@ -38,8 +38,8 @@
38
38
  "@payloadcms/ui": "3.85.1",
39
39
  "react": "^19.0.1 || ^19.1.2 || ^19.2.1",
40
40
  "react-dom": "^19.0.1 || ^19.1.2 || ^19.2.1",
41
- "@frogbotai/gateway": "0.16.0",
42
- "frogbot": "0.16.0"
41
+ "@frogbotai/gateway": "0.17.0",
42
+ "frogbot": "0.17.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@payloadcms/ui": "3.85.1",
@@ -48,9 +48,9 @@
48
48
  "react": "19.2.6",
49
49
  "react-dom": "19.2.6",
50
50
  "typescript": "5.6.2",
51
- "@frogbotai/gateway": "0.16.0",
52
- "frogbot": "0.16.0",
53
- "@frogbotai/plugin-roles": "0.16.0"
51
+ "@frogbotai/gateway": "0.17.0",
52
+ "frogbot": "0.17.0",
53
+ "@frogbotai/plugin-roles": "0.17.0"
54
54
  },
55
55
  "publishConfig": {
56
56
  "access": "public"