@argosvix/sdk 0.1.0 → 0.1.1

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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,72 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@argosvix/sdk` are documented in this file.
4
+ The format is loosely based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
+ and the project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [0.1.1] - 2026-05-21
8
+
9
+ Patch release that hardens short-lived runtime delivery and matches the SDK's
10
+ default endpoint to the live backend.
11
+
12
+ ### Fixed
13
+ - **Workers / Lambda fire-and-forget loss (HIGH).** When `bufferMaxSize` was
14
+ reached, `record()` started a background `flush()` whose `fetch` could be
15
+ killed by the runtime before completing. `flushClient()` now waits behind
16
+ any in-flight flush via an internal `inFlightFlush` promise, so records
17
+ buffered before the handler returned are guaranteed to reach the backend
18
+ in order.
19
+ - **Edge runtime crash on `process.env` (HIGH).** `record()` no longer assumes
20
+ a Node `process` global exists; environments without it (Cloudflare Workers
21
+ in some modes, Vercel Edge) used to throw and break the wrapped LLM call.
22
+ - **Default endpoint corrected to `https://ingest.argosvix.com/v1/ingest`.**
23
+ The previous default pointed to a non-existent subdomain
24
+ (`api.argosvix.com`), which would have failed for any user who omitted an
25
+ explicit `endpoint` in their `ArgosvixConfig`.
26
+
27
+ ### Added
28
+ - Regression tests for the two `Recorder` fixes above (concurrent flush
29
+ serialization, missing `process` global).
30
+
31
+ ### Documentation
32
+ - Source comments rewritten to English ahead of wider distribution.
33
+
34
+ ## [0.1.0] - 2026-05-21
35
+
36
+ Initial public release on npm under the `alpha` dist-tag.
37
+
38
+ ### Added
39
+ - `wrap(client, config?)`: transparent observability wrapper for AI provider
40
+ SDK clients. Supported targets:
41
+ - OpenAI `chat.completions.create` (sync + streaming) and `responses.create`
42
+ (sync; streaming is deferred to a later release).
43
+ - Anthropic `messages.create` (sync + streaming, with `message_start` /
44
+ `message_delta` accumulation).
45
+ - Mistral `chat.complete` and `chat.stream`.
46
+ - Gemini legacy SDK (`@google/generative-ai`) `getGenerativeModel(...)`
47
+ plus `generateContent` and `generateContentStream`.
48
+ - Gemini current SDK (`@google/genai`) `models.generateContent` and
49
+ `models.generateContentStream`.
50
+ - `getRecorder(client)`: retrieve the per-client `Recorder` instance.
51
+ - `flushClient(client)`: short-lived runtime helper that resolves only after
52
+ the buffer is delivered to the backend.
53
+ - `Recorder` class with `record()`, `flush()`, retry on 5xx/network with
54
+ exponential-ish backoff, and per-instance buffer isolation.
55
+ - `calculateCost(provider, model, prompt, completion)` and the public
56
+ `PRICING` table covering 2026-05 OpenAI / Anthropic / Gemini / Mistral
57
+ prices, with prefix matching for version-suffixed model IDs.
58
+ - TypeScript types: `Provider`, `ArgosvixConfig`, `LlmCallRecord`,
59
+ `PricingEntry`.
60
+ - Idempotency: wrapping the same client twice is a no-op (`WeakMap` for
61
+ clients, `WeakSet` for Gemini model instances).
62
+
63
+ ### Notes
64
+ - The SDK does **not** record prompt or completion bodies. Only token counts,
65
+ cost, latency, tags, error metadata, and a small request-meta overview are
66
+ sent to the backend.
67
+ - `peerDependencies` for every provider SDK are marked optional — install
68
+ only the ones you actually use.
69
+ - License: MIT.
70
+
71
+ [0.1.1]: https://www.npmjs.com/package/@argosvix/sdk/v/0.1.1
72
+ [0.1.0]: https://www.npmjs.com/package/@argosvix/sdk/v/0.1.0
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Transparent observability wrapper for AI provider SDKs. Wrap a single line of code and get cost / latency / token / error records for every LLM call across OpenAI, Anthropic, Gemini, and Mistral.
4
4
 
5
- > 🚧 **Pre-MVP** — backend ingest + dashboard は近日公開。 npm publish は `--tag alpha` で予定。 早期アクセスは [argosvix.com](https://argosvix.com) で waitlist 受付中。
5
+ > 🟢 **Alpha released** — backend ingest (`ingest.argosvix.com`) dashboard (`dashboard.argosvix.com`) は稼働中。 npm `@argosvix/sdk@alpha` で公開済。 dogfood / ベータ提供期間として無料プランのみで運用しており、 サインアップから API キー発行までブラウザだけで完了します。 詳細な変更履歴は [`CHANGELOG.md`](./CHANGELOG.md) を参照。
6
6
  >
7
7
  > 設計方針:
8
8
  > - **顧客のエンドユーザー PII は送信しない**(prompt / completion 本文は記録対象外、 token 数 + cost + latency + error code のみ)
@@ -23,11 +23,15 @@ Transparent observability wrapper for AI provider SDKs. Wrap a single line of co
23
23
  ## Install
24
24
 
25
25
  ```bash
26
- # alpha 段階 (= 公開後)
27
26
  npm install @argosvix/sdk@alpha openai
27
+ # Anthropic / Gemini / Mistral を使う場合は対応する SDK も併せて install
28
28
  ```
29
29
 
30
- API key は [argosvix.com](https://argosvix.com) waitlist 登録後、 launch 時に発行されます。 設定:
30
+ API キー取得手順(2026-05 時点、 dogfood / ベータ運用):
31
+
32
+ 1. <https://dashboard.argosvix.com/ja/signup> でメールアドレスとパスワードを登録
33
+ 2. 受信した認証メール内のリンクを開く
34
+ 3. 認証完了画面で `argosvix_live_…` 形式の API キーが**一度だけ**表示されます。 安全な場所に保管してください
31
35
 
32
36
  ```bash
33
37
  export ARGOSVIX_API_KEY=argosvix_live_...
@@ -10,6 +10,13 @@ import type { ArgosvixConfig, LlmCallRecord } from "./types.js";
10
10
  export declare class Recorder {
11
11
  private buffer;
12
12
  private readonly config;
13
+ /**
14
+ * Tracks the most recently started flush so that callers can serialize behind it.
15
+ * A fire-and-forget `void this.flush()` from `record()` (triggered when the buffer
16
+ * fills) starts an in-flight POST that `flushClient()` must wait on; otherwise
17
+ * Workers / Lambda may return while that POST is still in flight, killing it.
18
+ */
19
+ private inFlightFlush;
13
20
  constructor(config?: ArgosvixConfig);
14
21
  record(record: LlmCallRecord): void;
15
22
  /**
@@ -19,8 +26,13 @@ export declare class Recorder {
19
26
  * If all attempts fail the records are dropped and logged via console.error
20
27
  * (durable persistence is intentionally out of scope for the MVP).
21
28
  * Errors are never thrown — backend outages must not break the host application.
29
+ *
30
+ * Concurrent flush calls are serialized via `inFlightFlush`. An auto-flush
31
+ * triggered by `bufferMaxSize` and a subsequent explicit `flushClient()`
32
+ * both await the same promise instead of racing.
22
33
  */
23
34
  flush(): Promise<LlmCallRecord[]>;
35
+ private doFlush;
24
36
  getBufferSize(): number;
25
37
  /**
26
38
  * Test-only helper. Do not call from production code.
@@ -1 +1 @@
1
- {"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../src/recorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;;;;GAOG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,MAAM,GAAE,cAAmB;IAIvC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAenC;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAiEvC,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,iBAAiB,IAAI,IAAI;CAG1B"}
1
+ {"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../src/recorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;;;;GAOG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC;;;;;OAKG;IACH,OAAO,CAAC,aAAa,CAAyC;gBAElD,MAAM,GAAE,cAAmB;IAIvC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAuBnC;;;;;;;;;;;OAWG;IACG,KAAK,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAwBzB,OAAO;IA8DrB,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,iBAAiB,IAAI,IAAI;CAI1B"}
package/dist/recorder.js CHANGED
@@ -9,6 +9,13 @@
9
9
  export class Recorder {
10
10
  buffer = [];
11
11
  config;
12
+ /**
13
+ * Tracks the most recently started flush so that callers can serialize behind it.
14
+ * A fire-and-forget `void this.flush()` from `record()` (triggered when the buffer
15
+ * fills) starts an in-flight POST that `flushClient()` must wait on; otherwise
16
+ * Workers / Lambda may return while that POST is still in flight, killing it.
17
+ */
18
+ inFlightFlush = null;
12
19
  constructor(config = {}) {
13
20
  this.config = config;
14
21
  }
@@ -16,7 +23,13 @@ export class Recorder {
16
23
  if (this.config.disabled)
17
24
  return;
18
25
  this.buffer.push(record);
19
- if (process.env["ARGOSVIX_DEBUG"] === "1") {
26
+ // Guard `process` access some edge runtimes (Cloudflare Workers in
27
+ // certain modes, Vercel Edge) do not expose a Node `process` global, and
28
+ // an unguarded `process.env[...]` reference would throw and break the
29
+ // host LLM call we are wrapping.
30
+ if (typeof process !== "undefined" &&
31
+ process.env != null &&
32
+ process.env["ARGOSVIX_DEBUG"] === "1") {
20
33
  // eslint-disable-next-line no-console
21
34
  console.log("[argosvix]", JSON.stringify(record));
22
35
  }
@@ -32,11 +45,37 @@ export class Recorder {
32
45
  * If all attempts fail the records are dropped and logged via console.error
33
46
  * (durable persistence is intentionally out of scope for the MVP).
34
47
  * Errors are never thrown — backend outages must not break the host application.
48
+ *
49
+ * Concurrent flush calls are serialized via `inFlightFlush`. An auto-flush
50
+ * triggered by `bufferMaxSize` and a subsequent explicit `flushClient()`
51
+ * both await the same promise instead of racing.
35
52
  */
36
53
  async flush() {
54
+ // Wait behind any in-flight flush so callers (e.g. flushClient in a Worker
55
+ // handler's `finally`) cannot return before earlier records reach the backend.
56
+ if (this.inFlightFlush) {
57
+ try {
58
+ await this.inFlightFlush;
59
+ }
60
+ catch {
61
+ // Errors from the prior flush are already logged inside doFlush; swallow here.
62
+ }
63
+ }
37
64
  if (this.buffer.length === 0)
38
65
  return [];
39
66
  const records = this.buffer.splice(0);
67
+ const promise = this.doFlush(records);
68
+ this.inFlightFlush = promise;
69
+ try {
70
+ return await promise;
71
+ }
72
+ finally {
73
+ if (this.inFlightFlush === promise) {
74
+ this.inFlightFlush = null;
75
+ }
76
+ }
77
+ }
78
+ async doFlush(records) {
40
79
  if (this.config.disabled || !this.config.apiKey) {
41
80
  return records;
42
81
  }
@@ -95,6 +134,7 @@ export class Recorder {
95
134
  */
96
135
  __resetForTesting() {
97
136
  this.buffer.splice(0);
137
+ this.inFlightFlush = null;
98
138
  }
99
139
  }
100
140
  //# sourceMappingURL=recorder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recorder.js","sourceRoot":"","sources":["../src/recorder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recorder.js","sourceRoot":"","sources":["../src/recorder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@argosvix/sdk",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Drop-in observability wrapper for OpenAI, Anthropic, Gemini, Mistral SDK clients. One-line wrap() = cost / latency / quality records.",
5
5
  "keywords": [
6
6
  "argosvix",
@@ -18,12 +18,7 @@
18
18
  "author": "jissocyu",
19
19
  "homepage": "https://argosvix.com",
20
20
  "bugs": {
21
- "url": "https://github.com/typing-game/Argosvix/issues"
22
- },
23
- "repository": {
24
- "type": "git",
25
- "url": "git+https://github.com/typing-game/Argosvix.git",
26
- "directory": "packages/sdk"
21
+ "email": "hello@argosvix.com"
27
22
  },
28
23
  "type": "module",
29
24
  "main": "./dist/index.js",
@@ -37,6 +32,7 @@
37
32
  "files": [
38
33
  "dist",
39
34
  "README.md",
35
+ "CHANGELOG.md",
40
36
  "LICENSE"
41
37
  ],
42
38
  "engines": {