@argosvix/sdk 0.4.22-alpha.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +4 -9
  2. package/dist/aiSdkMiddleware.d.ts +36 -20
  3. package/dist/aiSdkMiddleware.d.ts.map +1 -1
  4. package/dist/aiSdkMiddleware.js +98 -31
  5. package/dist/aiSdkMiddleware.js.map +1 -1
  6. package/dist/approvals.d.ts +37 -29
  7. package/dist/approvals.d.ts.map +1 -1
  8. package/dist/approvals.js +24 -18
  9. package/dist/approvals.js.map +1 -1
  10. package/dist/budgetGate.d.ts +30 -24
  11. package/dist/budgetGate.d.ts.map +1 -1
  12. package/dist/budgetGate.js +118 -92
  13. package/dist/budgetGate.js.map +1 -1
  14. package/dist/client.d.ts +15 -10
  15. package/dist/client.d.ts.map +1 -1
  16. package/dist/client.js +271 -222
  17. package/dist/client.js.map +1 -1
  18. package/dist/context.d.ts +59 -48
  19. package/dist/context.d.ts.map +1 -1
  20. package/dist/context.js +72 -58
  21. package/dist/context.js.map +1 -1
  22. package/dist/flush.d.ts +6 -4
  23. package/dist/flush.d.ts.map +1 -1
  24. package/dist/flush.js +6 -4
  25. package/dist/flush.js.map +1 -1
  26. package/dist/ids.d.ts +3 -2
  27. package/dist/ids.d.ts.map +1 -1
  28. package/dist/ids.js +6 -5
  29. package/dist/ids.js.map +1 -1
  30. package/dist/langchainCallback.d.ts +14 -13
  31. package/dist/langchainCallback.d.ts.map +1 -1
  32. package/dist/langchainCallback.js +22 -17
  33. package/dist/langchainCallback.js.map +1 -1
  34. package/dist/policyScan.d.ts +29 -22
  35. package/dist/policyScan.d.ts.map +1 -1
  36. package/dist/policyScan.js +47 -38
  37. package/dist/policyScan.js.map +1 -1
  38. package/dist/pricing.d.ts +5 -5
  39. package/dist/pricing.d.ts.map +1 -1
  40. package/dist/pricing.js +24 -22
  41. package/dist/pricing.js.map +1 -1
  42. package/dist/prompts.d.ts +20 -17
  43. package/dist/prompts.d.ts.map +1 -1
  44. package/dist/prompts.js +21 -17
  45. package/dist/prompts.js.map +1 -1
  46. package/dist/query.d.ts +21 -21
  47. package/dist/query.d.ts.map +1 -1
  48. package/dist/query.js +14 -14
  49. package/dist/recorder.d.ts +39 -19
  50. package/dist/recorder.d.ts.map +1 -1
  51. package/dist/recorder.js +120 -69
  52. package/dist/recorder.js.map +1 -1
  53. package/dist/redaction.d.ts +35 -33
  54. package/dist/redaction.d.ts.map +1 -1
  55. package/dist/redaction.js +73 -64
  56. package/dist/redaction.js.map +1 -1
  57. package/dist/types.d.ts +131 -114
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/version.d.ts +9 -9
  60. package/dist/version.d.ts.map +1 -1
  61. package/dist/version.js +9 -9
  62. package/dist/version.js.map +1 -1
  63. package/package.json +8 -2
@@ -1,50 +1,58 @@
1
1
  import { scanPolicyViolation } from "./policyScan.js";
2
2
  /**
3
- * Runtime 予算ゲート (= ランタイム制御プレーン Phase 1 SDK enforce)。
3
+ * Runtime budget gate the SDK-side enforcement half of the runtime control plane.
4
4
  *
5
- * `config.budgetGate: true` opt-in すると、wrap 済み client の LLM 呼び出し
6
- * 前に backend `/v1/gate/budget` の設定 + 当月消費額をローカル評価し、
7
- * 月次上限超過なら `ArgosvixBudgetExceededError` を投げて呼び出しを止める。
5
+ * When opted in via `config.budgetGate: true`, each LLM call made through a
6
+ * wrapped client is evaluated locally against the backend `/v1/gate/budget`
7
+ * configuration plus the current month's spend; if the monthly limit is
8
+ * exceeded, an `ArgosvixBudgetExceededError` is thrown and the call is blocked.
8
9
  *
9
- * 設計 (= R65b fix bundle 反映):
10
- * - 設定 + 消費額は TTL (= backend response の ttlSeconds、 default 60s)
11
- * キャッシュ。呼び出し毎の往復はしない。
12
- * - stale-while-revalidate: snapshot がある間は stale でも即時評価し、
13
- * refresh background で走らせる (= hot path fetch RTT を乗せない)。
14
- * 同期 await するのは「snapshot が一度も無い初回」と「fail_closed gate
15
- * stale」の 2 場面のみ。
16
- * - 失敗 backoff: fetch 失敗後 FAILURE_RETRY_MS は再試行しない (= backend
17
- * 障害中に呼び出し毎 3 秒の blocking fetch を発生させない、R65b SB-1)。
18
- * - TTL 間の消費は recorder 経由のローカル加算で補正する。fetch 成功時は
19
- * 「fetch 開始時点の補正量」だけ差し引く (= fetch 中に積まれた分を
20
- * 握り潰さない、R65b M-1)。
21
- * - 時刻は monotonic clock (performance.now) 基準 (= NTP step / VM resume の
22
- * 時計逆行で cache が無限 fresh になる事故の防止、R65b M-4)。
23
- * - fail_open (default) = backend 不達 / 設定未取得時は通す。
24
- * - fail_closed = backend gate 設定が fail_closed のとき、 cache
25
- * MAX_STALE_MULTIPLIER × TTL を超えて stale なら
26
- * ArgosvixBudgetGateUnavailableError。初回取得前の挙動は
27
- * `config.budgetGateFailClosed` (default false) で選ぶ。
28
- * - ゲートで止めた呼び出しも wrapper 経由で error record として ingest
29
- * される (= 「何件止めたか」 dashboard / chat で見える)。
10
+ * Design:
11
+ * - Configuration and spend are cached with a TTL (the backend response's
12
+ * ttlSeconds, default 60s). There is no round trip per call.
13
+ * - stale-while-revalidate: while a snapshot exists, evaluation happens
14
+ * immediately even when stale, and the refresh runs in the background so
15
+ * the fetch RTT never sits on the hot path. A synchronous await happens in
16
+ * only two situations: the very first call before any snapshot exists, and
17
+ * a stale snapshot with a fail_closed gate.
18
+ * - Failure backoff: after a failed fetch, no retry happens for
19
+ * FAILURE_RETRY_MS. This prevents a 3-second blocking fetch on every call
20
+ * while the backend is down.
21
+ * - Spend accrued between TTL refreshes is compensated by local accumulation
22
+ * via the recorder. On a successful fetch, only the amount accumulated as
23
+ * of fetch start is subtracted, so spend recorded while the fetch was in
24
+ * flight is not silently dropped.
25
+ * - Time is measured on a monotonic clock (performance.now). This prevents
26
+ * the cache from staying fresh forever when the wall clock steps backwards
27
+ * (NTP step / VM resume).
28
+ * - fail_open (default): when the backend is unreachable or configuration has
29
+ * not been fetched, calls pass through.
30
+ * - fail_closed: when the backend gate is configured fail_closed and the
31
+ * cache is stale beyond MAX_STALE_MULTIPLIER x TTL, throw
32
+ * ArgosvixBudgetGateUnavailableError. Behavior before the first successful
33
+ * fetch is chosen via `config.budgetGateFailClosed` (default false).
34
+ * - Calls blocked by the gate are still ingested as error records through the
35
+ * wrapper, so "how many calls were blocked" is visible in the dashboard and
36
+ * chat.
30
37
  *
31
- * 既知の limitation (= Phase 1 時点):
32
- * - SDK wrap していない method (= Anthropic `messages.stream()`、 Python の
33
- * `generate_content_stream`) は観測も enforce も対象外。詳細は
34
- * types.ts budgetGate doc comment 参照。
38
+ * Known limitation:
39
+ * - Methods the SDK does not wrap (e.g. Anthropic `messages.stream()`,
40
+ * Python's `generate_content_stream`) are neither observed nor enforced.
41
+ * See the budgetGate doc comment in types.ts for details.
35
42
  */
36
43
  const DEFAULT_GATE_ENDPOINT = "https://ingest.argosvix.com/v1/gate/config";
37
44
  const INGEST_SUFFIX = "/v1/ingest";
38
45
  const FETCH_TIMEOUT_MS = 3_000;
39
46
  const DEFAULT_TTL_MS = 60_000;
40
- // fetch 失敗後の最小再試行間隔 (= 障害中の hot path 保護)
47
+ // Minimum retry interval after a failed fetch (protects the hot path during outages)
41
48
  const FAILURE_RETRY_MS = 30_000;
42
- // cache がこの倍数 × TTL を超えて refresh できていなければ「状態不明」扱い
49
+ // If the cache has not been refreshed within this multiple of the TTL, treat the gate state as unknown
43
50
  const MAX_STALE_MULTIPLIER = 5;
44
51
  /**
45
- * model 名の canonical form (= R72b MEDIUM 3)。 Gemini SDK が保持する
46
- * "models/gemini-pro" provider prefix を除去し、 allowlist 比較を
47
- * TS / Python SDK で同一にする。 export = test + Python 側と並走 verify 用。
52
+ * Canonical form of a model name. Strips the "models/" provider prefix that
53
+ * Gemini-family SDKs keep (e.g. "models/gemini-pro") so allowlist comparison
54
+ * behaves identically in the TypeScript and Python SDKs. Exported for tests
55
+ * and for cross-verification against the Python implementation.
48
56
  */
49
57
  export function canonicalizeModelName(model) {
50
58
  return model.startsWith("models/") ? model.slice("models/".length) : model;
@@ -75,7 +83,7 @@ export class ArgosvixPolicyViolationError extends Error {
75
83
  this.detail = detail;
76
84
  }
77
85
  }
78
- /** tag gate のローカル消費キー(tagKey tagValue を制御文字で連結) */
86
+ /** Local-spend key for a tag gate (tagKey and tagValue joined via JSON encoding). */
79
87
  function tagSpendKey(tagKey, tagValue) {
80
88
  return JSON.stringify([tagKey, tagValue]);
81
89
  }
@@ -87,26 +95,27 @@ export class RuntimeGate {
87
95
  lastAttemptFailed = false;
88
96
  warnedEndpoint = false;
89
97
  warnedNoPolicy = false;
90
- /** 直近の成功 fetch 以降にこのプロセスが record した消費の補正値。 */
98
+ /** Spend recorded by this process since the last successful fetch (local compensation). */
91
99
  localSpendUsd = 0;
92
- /** 監査 Tier 2 = tag 別のローカル消費補正(key = JSON([tagKey,tagValue])) */
100
+ /** Per-tag local spend compensation (key = JSON([tagKey,tagValue])). */
93
101
  tagLocalSpend = new Map();
94
102
  constructor(config) {
95
103
  this.config = config;
96
104
  }
97
- /** monotonic clockwall clock の逆行 (NTP step / VM resume) に影響されない。 */
105
+ /** Monotonic clock; unaffected by wall-clock regressions (NTP step / VM resume). */
98
106
  now() {
99
107
  return typeof performance !== "undefined" ? performance.now() : Date.now();
100
108
  }
101
109
  /**
102
- * gate が実際に enforce され得るか(= 完全互換 wrap identity fast path 判定用)。
103
- * false なら check() は即 return するため、呼び出し前の await を省略して
104
- * 元の APIPromise をそのまま返せる。
110
+ * Whether the gate can actually enforce anything (used by the fully
111
+ * compatible wrap to decide its identity fast path). When false, check()
112
+ * returns immediately, so the pre-call await can be skipped and the original
113
+ * APIPromise returned as-is.
105
114
  */
106
115
  get isActive() {
107
116
  return this.active;
108
117
  }
109
- /** opt-in + 送信可能な構成のときだけ動く。それ以外は完全 no-op */
118
+ /** Active only when opted in and configured for sending; otherwise a complete no-op. */
110
119
  get active() {
111
120
  return ((this.config.budgetGate === true || this.config.policyGate === true) &&
112
121
  this.config.disabled !== true &&
@@ -114,9 +123,10 @@ export class RuntimeGate {
114
123
  this.config.apiKey.length > 0);
115
124
  }
116
125
  /**
117
- * recorder.record() から呼ばれる。TTL 窓内のローカル消費補正。
118
- * tag gate config.tags を判定基準にする(= この client の全 call config.tags を
119
- * 持つため、 該当 tag gate には project gate と同様に全 call が加算される)。
126
+ * Called from recorder.record(). Local spend compensation within the TTL
127
+ * window. Tag gates are matched against config.tags: every call made by
128
+ * this client carries config.tags, so all calls accrue to the matching tag
129
+ * gates, just like the project gate.
120
130
  */
121
131
  noteSpend(costUsd) {
122
132
  if (this.config.budgetGate !== true || !this.active)
@@ -135,15 +145,16 @@ export class RuntimeGate {
135
145
  }
136
146
  }
137
147
  /**
138
- * LLM 呼び出し直前の enforce。超過なら throw、それ以外は素通し。
139
- * backend 障害は enforce mode に従って fail-open / fail-closed
148
+ * Enforcement right before the LLM call. Throws when the limit is exceeded,
149
+ * passes through otherwise. Backend outages fail open or fail closed
150
+ * according to the enforce mode.
140
151
  */
141
152
  async check(ctx = {}) {
142
153
  if (!this.active)
143
154
  return;
144
155
  const snap = this.snapshot;
145
156
  if (!snap) {
146
- // 初回 (または未取得)backoff 窓内なら fetch せず素通し判定へ。
157
+ // First call (or nothing fetched yet). Inside the backoff window, skip the fetch and evaluate as-is.
147
158
  if (this.attemptAllowed())
148
159
  await this.refresh();
149
160
  }
@@ -159,11 +170,11 @@ export class RuntimeGate {
159
170
  (this.config.policyGate === true &&
160
171
  snap.policy?.enforceMode === "fail_closed");
161
172
  if (anyFailClosed) {
162
- // fail_closed stale block し得るため同期 refresh で正確性優先
173
+ // fail_closed may block on stale data, so refresh synchronously and prioritize accuracy
163
174
  await p;
164
175
  }
165
176
  else {
166
- // fail_open stale-while-revalidate (= hot path RTT を乗せない)
177
+ // fail_open uses stale-while-revalidate (keeps the fetch RTT off the hot path)
167
178
  p.catch(() => { });
168
179
  }
169
180
  }
@@ -173,10 +184,11 @@ export class RuntimeGate {
173
184
  evaluate(ctx) {
174
185
  const snap = this.snapshot;
175
186
  if (!snap) {
176
- // 一度も取得できていない = server enforce mode が不明。
177
- // local opt-in (budgetGateFailClosed / policyGateFailClosed) でのみ
178
- // fail_closed に倒す (= R72b HIGH 1: backend が fail_closed 設定でも
179
- // cold start では SDK がそれを知れないため、 厳格運用は明示 opt-in)。
187
+ // Nothing has ever been fetched, so the server-side enforce mode is
188
+ // unknown. Fail closed only via the local opt-ins
189
+ // (budgetGateFailClosed / policyGateFailClosed): even if the backend is
190
+ // configured fail_closed, the SDK cannot know that on a cold start, so
191
+ // strict operation requires an explicit opt-in.
180
192
  if ((this.config.budgetGateFailClosed === true ||
181
193
  this.config.policyGateFailClosed === true) &&
182
194
  this.lastAttemptFailed) {
@@ -196,8 +208,9 @@ export class RuntimeGate {
196
208
  throw new ArgosvixBudgetExceededError(spent, gate.limitUsd);
197
209
  }
198
210
  }
199
- // 監査 Tier 2 = project gate AND で評価(最も厳しい上限が勝つ)。 この client の
200
- // call config.projectId に属するため、 localSpendUsd project 消費にも加算する。
211
+ // The project gate is also evaluated with AND semantics (the strictest
212
+ // limit wins). Every call from this client belongs to config.projectId,
213
+ // so localSpendUsd counts toward the project spend as well.
201
214
  if (this.config.budgetGate === true && snap.projectGate) {
202
215
  const pg = snap.projectGate;
203
216
  if (isUnknownStale && pg.enforceMode === "fail_closed") {
@@ -208,10 +221,12 @@ export class RuntimeGate {
208
221
  throw new ArgosvixBudgetExceededError(projectSpent, pg.limitUsd);
209
222
  }
210
223
  }
211
- // 監査 Tier 2 = この client config.tags に該当する tag gate AND で評価。
212
- // 判定基準は noteSpend と同じ config.tags に固定する(= ctx.tags を混ぜると
213
- // 「config.tags で課金加算したのに ctx.tags 不一致で素通り」する非対称な抜け穴に
214
- // なる。 project gate と同様に client 単位の固定 tag で見る設計)。
224
+ // Tag gates matching this client's config.tags are evaluated with AND
225
+ // semantics. Matching is fixed to config.tags, the same basis noteSpend
226
+ // uses: mixing in ctx.tags would create an asymmetric loophole where spend
227
+ // accrues under config.tags but a call slips through because ctx.tags does
228
+ // not match. Like the project gate, tag gates are evaluated against the
229
+ // client's fixed tags by design.
215
230
  const tags = this.config.tags;
216
231
  if (this.config.budgetGate === true && snap.tagGates.length > 0 && tags) {
217
232
  for (const tg of snap.tagGates) {
@@ -235,7 +250,7 @@ export class RuntimeGate {
235
250
  this.evaluatePolicy(policy, ctx);
236
251
  }
237
252
  }
238
- /** ポリシーゲートのローカル評価 (= モデル allowlist / PII / secret) */
253
+ /** Local evaluation of the policy gate (model allowlist / PII / secrets). */
239
254
  evaluatePolicy(policy, ctx) {
240
255
  const model = ctx.model ??
241
256
  (ctx.payload && typeof ctx.payload === "object"
@@ -244,18 +259,22 @@ export class RuntimeGate {
244
259
  if (policy.allow) {
245
260
  if (typeof model === "string" && model.length > 0) {
246
261
  if (!policy.allow.has(canonicalizeModelName(model))) {
247
- // model 名は payload 由来の任意文字列になり得るため、 error message には
248
- // 許可 charset のみ + 128 文字 cap sanitize して載せる (= prompt 等の
249
- // 平文が error record に混入しない構造防御、 R66b SB-1 系)。
262
+ // The model name can be an arbitrary string coming from the payload,
263
+ // so it is sanitized before appearing in the error message: allowed
264
+ // charset only, capped at 128 characters. This is a structural
265
+ // defense against plaintext such as prompts leaking into error
266
+ // records.
250
267
  const safeModel = model.replace(/[^A-Za-z0-9._:/-]/g, "?").slice(0, 128);
251
268
  throw new ArgosvixPolicyViolationError("model_not_allowed", `model "${safeModel}" is not in the configured allowlist`);
252
269
  }
253
270
  }
254
271
  else if (policy.enforceMode === "fail_closed") {
255
- // QA M-5: allowlist 設定済 + model 解決不能 (= ctx.model payload.model
256
- // 取れない経路) のとき、 fail_open は従来どおり素通し (= false positive 厳禁の
257
- // 既定) だが、 fail_closed なら「許可リストを照合できない呼び出しは止める」
258
- // 強制意味論で block する (= 旧実装の no-block 穴を opt-in で塞ぐ)。
272
+ // An allowlist is configured but the model cannot be resolved (neither
273
+ // ctx.model nor payload.model is available on this path). fail_open
274
+ // passes the call through as before (the default forbids false
275
+ // positives), but fail_closed blocks under the strict semantics "stop
276
+ // any call that cannot be checked against the allowlist" — closing an
277
+ // earlier no-block gap via opt-in.
259
278
  throw new ArgosvixPolicyViolationError("model_not_allowed", "request model could not be resolved to check against the allowlist (fail_closed)");
260
279
  }
261
280
  }
@@ -273,7 +292,7 @@ export class RuntimeGate {
273
292
  const age = this.now() - snap.fetchedAtMs;
274
293
  return age < 0 || age >= snap.ttlMs;
275
294
  }
276
- /** 直近 fetch が失敗していた場合、FAILURE_RETRY_MS 経過まで再試行しない。 */
295
+ /** If the last fetch failed, do not retry until FAILURE_RETRY_MS has elapsed. */
277
296
  attemptAllowed() {
278
297
  if (this.lastAttemptMs === null || !this.lastAttemptFailed)
279
298
  return true;
@@ -289,9 +308,11 @@ export class RuntimeGate {
289
308
  return this.inflight;
290
309
  }
291
310
  /**
292
- * gate endpoint の決定。 ingest endpoint override している場合は同 prefix
293
- * から導出し、 導出できない形 (= /v1/ingest で終わらない custom URL) なら
294
- * gate を無効化する (= 他環境向け Bearer key production に送らない、R65b M-2)。
311
+ * Resolves the gate endpoint. When the ingest endpoint is overridden, the
312
+ * gate endpoint is derived from the same prefix; if it cannot be derived
313
+ * (a custom URL not ending in /v1/ingest), the gate is disabled instead.
314
+ * This avoids sending a Bearer key meant for another environment to
315
+ * production.
295
316
  */
296
317
  gateEndpoint() {
297
318
  if (this.config.gateEndpoint)
@@ -316,10 +337,11 @@ export class RuntimeGate {
316
337
  this.lastAttemptFailed = true;
317
338
  return;
318
339
  }
319
- // fetch 中に noteSpend された分を reset で握り潰さないため、開始時点の
320
- // 補正量を捕捉して成功時に差分減算する (R65b M-1)。
340
+ // To avoid dropping spend noted via noteSpend while the fetch is in
341
+ // flight, capture the compensation amount at fetch start and subtract only
342
+ // that delta on success.
321
343
  const localAtStart = this.localSpendUsd;
322
- // 監査 Tier 2 = tag 別ローカル消費の rebase 用に開始時点をコピー(= account と同方式)。
344
+ // Copy the per-tag local spend at fetch start for the same rebase, mirroring the account-level approach.
323
345
  const tagLocalAtStart = new Map(this.tagLocalSpend);
324
346
  try {
325
347
  const controller = new AbortController();
@@ -336,15 +358,16 @@ export class RuntimeGate {
336
358
  clearTimeout(timer);
337
359
  }
338
360
  if (!res.ok) {
339
- // body を消費して connection 再利用を阻害しない (R65b L-1)
361
+ // Consume the body so connection reuse is not blocked
340
362
  await res.arrayBuffer().catch(() => { });
341
363
  this.lastAttemptFailed = true;
342
- return; // snapshot keep、mode に応じて evaluate() 側で判断
364
+ return; // keep the old snapshot; evaluate() decides based on the enforce mode
343
365
  }
344
366
  const raw = (await res.json());
345
- // /v1/gate/config { budget: {...}, policy: {...}, ttlSeconds } を
346
- // 第一に、 /v1/gate/budget 形 { gates, spentUsdThisMonth, ttlSeconds }
347
- // (= gateEndpoint override budget endpoint を指す構成) も受理する。
367
+ // Accept the /v1/gate/config shape { budget: {...}, policy: {...},
368
+ // ttlSeconds } first, and also the older /v1/gate/budget shape
369
+ // { gates, spentUsdThisMonth, ttlSeconds } (a configuration where
370
+ // gateEndpoint is overridden to point at the budget endpoint).
348
371
  const isObj = (v) => !!v && typeof v === "object" && !Array.isArray(v);
349
372
  const root = isObj(raw) ? raw : {};
350
373
  const budgetPart = isObj(root["budget"]) ? root["budget"] : root;
@@ -352,8 +375,9 @@ export class RuntimeGate {
352
375
  if (this.config.policyGate === true &&
353
376
  !("policy" in root) &&
354
377
  !this.warnedNoPolicy) {
355
- // /v1/gate/budget shape に gateEndpoint を向けた構成では policy が
356
- // 取得できず silent no-op になるため 1 回だけ告知 (= R66b LOW 3)。
378
+ // With gateEndpoint pointed at the older /v1/gate/budget shape the
379
+ // policy section is never received and the policy gate would be a
380
+ // silent no-op, so warn about it once.
357
381
  this.warnedNoPolicy = true;
358
382
  // eslint-disable-next-line no-console
359
383
  console.warn("[argosvix] policy gate: gate endpoint response has no policy section; point gateEndpoint at /v1/gate/config to enable policy enforcement.");
@@ -366,7 +390,7 @@ export class RuntimeGate {
366
390
  g["enabled"] === true &&
367
391
  typeof g["monthlyLimitUsd"] === "number" &&
368
392
  Number.isFinite(g["monthlyLimitUsd"])) ?? null;
369
- // 監査 Tier 2 = この client project に紐づく gate を解決(config.projectId 設定時のみ)
393
+ // Resolve the gate tied to this client's project (only when config.projectId is set).
370
394
  const projectId = typeof this.config.projectId === "string" && this.config.projectId.length > 0
371
395
  ? this.config.projectId
372
396
  : null;
@@ -381,7 +405,7 @@ export class RuntimeGate {
381
405
  ? budgetPart["spentUsdByProject"]
382
406
  : {};
383
407
  const projectSpentRaw = projectId ? byProject[projectId] : undefined;
384
- // 監査 Tier 2 = tag gate を解決 + spentUsdByTag と突き合わせ。
408
+ // Resolve per-tag gates and join them with spentUsdByTag.
385
409
  const byTag = Array.isArray(budgetPart["spentUsdByTag"])
386
410
  ? budgetPart["spentUsdByTag"]
387
411
  : [];
@@ -407,10 +431,11 @@ export class RuntimeGate {
407
431
  let policy = null;
408
432
  if (policyPart && policyPart["enabled"] === true) {
409
433
  const allowRaw = policyPart["modelAllowlist"];
410
- // R72b MEDIUM 3 fix: allowlist 側も candidate 側も canonical form
411
- // (= 先頭 "models/" を除去) で比較する。 Gemini legacy SDK model 名を
412
- // "models/gemini-pro" 形式で保持する実装があり (= Python model_name)
413
- // TS (= 入力値そのまま) と片側だけ block される drift があった。
434
+ // Compare both the allowlist entries and the candidate in canonical
435
+ // form (leading "models/" stripped). Some legacy Gemini SDKs keep the
436
+ // model name as "models/gemini-pro" (the Python SDK's model_name)
437
+ // while the TypeScript side sees the raw input value, which previously
438
+ // caused a drift where only one side was blocked.
414
439
  const allow = Array.isArray(allowRaw)
415
440
  ? new Set(allowRaw
416
441
  .filter((m) => typeof m === "string")
@@ -456,19 +481,20 @@ export class RuntimeGate {
456
481
  policy,
457
482
  };
458
483
  this.localSpendUsd = Math.max(0, this.localSpendUsd - localAtStart);
459
- // tag 別ローカルも fetch 開始時点分を差し引いて二重計上を防ぐ(= account と同方式)
484
+ // Also subtract the fetch-start amounts from the per-tag locals to avoid double counting (same approach as the account level).
460
485
  for (const [k, v] of this.tagLocalSpend) {
461
486
  this.tagLocalSpend.set(k, Math.max(0, v - (tagLocalAtStart.get(k) ?? 0)));
462
487
  }
463
488
  this.lastAttemptFailed = false;
464
489
  }
465
490
  catch {
466
- // network / timeout / JSON 不正 = snapshot keep。fail_open なら素通し、
467
- // fail_closed evaluate() stale 判定で止まる。
491
+ // Network error / timeout / malformed JSON: keep the old snapshot.
492
+ // fail_open passes calls through; fail_closed is stopped by the
493
+ // staleness check in evaluate().
468
494
  this.lastAttemptFailed = true;
469
495
  }
470
496
  }
471
497
  }
472
- // Phase 1 で公開した名前の互換 alias (= budget 専用だった頃の命名)
498
+ // Backward-compatible alias for the originally published name (from when the gate was budget-only).
473
499
  export { RuntimeGate as BudgetGate };
474
500
  //# sourceMappingURL=budgetGate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"budgetGate.js","sourceRoot":"","sources":["../src/budgetGate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"budgetGate.js","sourceRoot":"","sources":["../src/budgetGate.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -22,21 +22,26 @@ import { Recorder } from "./recorder.js";
22
22
  export declare function wrap<T extends object>(client: T, config?: ArgosvixConfig): T;
23
23
  export declare function getRecorder(client: object): Recorder | null;
24
24
  /**
25
- * 内部用 = wrap() を経由しない統合 (= Vercel AI SDK middleware ) が、 自前の
26
- * Recorder flushClient() / getRecorder() WeakMap に載せるための登録口。
27
- * これで `flushClient(middleware)` が wrap 済みクライアントと同じ経路で動く。
25
+ * Internal: registration hook for integrations that do not go through wrap()
26
+ * (e.g. the Vercel AI SDK middleware) to put their own Recorder into the WeakMap
27
+ * used by flushClient() / getRecorder(). This lets `flushClient(middleware)`
28
+ * work through the same path as wrapped clients.
28
29
  */
29
30
  export declare function _registerRecorderFor(obj: object, recorder: Recorder): void;
30
- /** Test-only: reset the M27 stream-helper warn-once flag. Do not call from production. */
31
+ /** Test-only: reset the stream-helper warn-once flag. Do not call from production. */
31
32
  export declare function __resetStreamHelperWarning(): void;
32
33
  /**
33
34
  * Time-ordered record ID generator.
34
35
  *
35
- * audit round2 M26 fix = 旧実装は `Date.now()` prefix + `Math.random().toString(36).slice(2,10)`
36
- * suffix で、 (1) 非暗号乱数 (2) 値次第で suffix 8 文字未満になり実効エントロピーが
37
- * 41bit を大きく下回る、 という二重の弱さがあった。 backend
38
- * `INSERT ... ON CONFLICT(account_id, id) DO NOTHING` で衝突を無音 skip するため、
39
- * 衝突した本物の call が課金・quota・観測から消える。 暗号乱数 (crypto.getRandomValues /
40
- * randomUUID) 128bit 級の衝突耐性に引き上げる。 先頭に時刻 prefix を残して時系列順も保つ。
36
+ * Fix: the previous implementation used a `Date.now()` prefix + a
37
+ * `Math.random().toString(36).slice(2,10)` suffix, which had two weaknesses:
38
+ * (1) non-cryptographic randomness, and (2) depending on the value the suffix
39
+ * could be shorter than 8 characters, dropping the effective entropy well
40
+ * below 41 bits. The backend silently skips collisions via
41
+ * `INSERT ... ON CONFLICT(account_id, id) DO NOTHING`, so a real call that
42
+ * collides would vanish from billing, quota, and observation. Cryptographic
43
+ * randomness (crypto.getRandomValues / randomUUID) raises collision resistance
44
+ * to the 128-bit class. The leading time prefix is kept so ordering stays
45
+ * chronological.
41
46
  */
42
47
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAE,cAAmB,GAAG,CAAC,CAyChF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE1E;AA4oBD,0FAA0F;AAC1F,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAyzDD;;;;;;;;;GASG"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAE,cAAmB,GAAG,CAAC,CAyChF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE1E;AAgqBD,sFAAsF;AACtF,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAk1DD;;;;;;;;;;;;;GAaG"}