@auvira.ai/sdk 0.6.1 → 0.6.2

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 (37) hide show
  1. package/README.md +33 -2
  2. package/dist/agent/events.d.ts +16 -1
  3. package/dist/agent/events.d.ts.map +1 -1
  4. package/dist/agent/events.js.map +1 -1
  5. package/dist/agent/hostTools.d.ts +4 -0
  6. package/dist/agent/hostTools.d.ts.map +1 -1
  7. package/dist/agent/hostTools.js +8 -0
  8. package/dist/agent/hostTools.js.map +1 -1
  9. package/dist/agent/tools/toolConcurrency.d.ts +55 -0
  10. package/dist/agent/tools/toolConcurrency.d.ts.map +1 -0
  11. package/dist/agent/tools/toolConcurrency.js +136 -0
  12. package/dist/agent/tools/toolConcurrency.js.map +1 -0
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/providers/agentic/agentLoop.d.ts.map +1 -1
  18. package/dist/providers/agentic/agentLoop.js +165 -49
  19. package/dist/providers/agentic/agentLoop.js.map +1 -1
  20. package/dist/runner/jobTypes.d.ts +1 -1
  21. package/dist/runner/jobTypes.d.ts.map +1 -1
  22. package/dist/runner/mapStreamEvents.d.ts.map +1 -1
  23. package/dist/runner/mapStreamEvents.js +22 -0
  24. package/dist/runner/mapStreamEvents.js.map +1 -1
  25. package/dist/util/apiThrottle.d.ts +5 -1
  26. package/dist/util/apiThrottle.d.ts.map +1 -1
  27. package/dist/util/apiThrottle.js +12 -44
  28. package/dist/util/apiThrottle.js.map +1 -1
  29. package/dist/util/minimaxImageClient.d.ts.map +1 -1
  30. package/dist/util/minimaxImageClient.js +3 -2
  31. package/dist/util/minimaxImageClient.js.map +1 -1
  32. package/dist/util/modelCallQueue.d.ts +38 -0
  33. package/dist/util/modelCallQueue.d.ts.map +1 -0
  34. package/dist/util/modelCallQueue.js +88 -0
  35. package/dist/util/modelCallQueue.js.map +1 -0
  36. package/docs/sandbox-runner.md +3 -0
  37. package/package.json +2 -1
@@ -1,6 +1,7 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import { sniffImageMime } from "../agent/tools/assetPathValidation.js";
3
3
  import { postJsonWithRetry } from "./modelApiClient.js";
4
+ import { getGlobalModelCallQueue } from "./modelCallQueue.js";
4
5
  const GLOBAL_IMAGE_BASE = "https://api.minimax.io/v1";
5
6
  const CN_IMAGE_BASE = "https://api.minimaxi.com/v1";
6
7
  /** Returns true when image generation is enabled (`AUVIRA_IMAGE_GEN_ENABLED=true`). */
@@ -73,7 +74,7 @@ async function callImageGeneration(input) {
73
74
  if (input.subjectReference?.length) {
74
75
  body.subject_reference = input.subjectReference;
75
76
  }
76
- const result = await postJsonWithRetry({
77
+ const result = await getGlobalModelCallQueue().run("image_generation", () => postJsonWithRetry({
77
78
  url: `${baseUrl}/image_generation`,
78
79
  headers: {
79
80
  Authorization: `Bearer ${input.apiKey}`,
@@ -82,7 +83,7 @@ async function callImageGeneration(input) {
82
83
  body,
83
84
  timeoutMs: input.timeoutMs ?? 120_000,
84
85
  signal: input.signal,
85
- }, 0);
86
+ }, 0));
86
87
  if (!result.ok || !result.data) {
87
88
  const rateLimit = result.rateLimit;
88
89
  throw new Error(rateLimit?.message ?? result.errorMessage ?? "Image generation request failed");
@@ -1 +1 @@
1
- {"version":3,"file":"minimaxImageClient.js","sourceRoot":"","sources":["../../src/util/minimaxImageClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"minimaxImageClient.js","sourceRoot":"","sources":["../../src/util/minimaxImageClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export interface ModelCallQueueOptions {
2
+ maxConcurrent?: number;
3
+ cooldownMs?: number;
4
+ }
5
+ /** Reads max concurrent API slots from env (primary + legacy aliases). Default 3. */
6
+ export declare function getApiMaxConcurrent(): number;
7
+ /** Reads API cooldown ms from env (primary + legacy aliases). Default 0. */
8
+ export declare function getApiCooldownMs(): number;
9
+ /** Global queue for all external model-like API calls (chat, evaluator, image, judges). */
10
+ export declare class ModelCallQueue {
11
+ private activeCalls;
12
+ private readonly waitQueue;
13
+ private readonly maxConcurrent;
14
+ private readonly cooldownMs;
15
+ constructor(options?: ModelCallQueueOptions);
16
+ /** Acquires a queue slot and returns fn result. Use when queue wait time is not needed. */
17
+ run<T>(label: string, fn: () => Promise<T>): Promise<T>;
18
+ /**
19
+ * Acquires a slot, measures wait time, invokes fn(queueWaitMs), returns result + wait.
20
+ * queueWaitMs is measured after slot acquire and before fn runs.
21
+ */
22
+ runWithMetrics<T>(label: string, fn: (queueWaitMs: number) => Promise<T>): Promise<{
23
+ value: T;
24
+ queueWaitMs: number;
25
+ }>;
26
+ /** Returns current queue settings for diagnostics. */
27
+ getConfig(): {
28
+ maxConcurrent: number;
29
+ cooldownMs: number;
30
+ activeCalls: number;
31
+ queuedCalls: number;
32
+ };
33
+ }
34
+ /** Shared queue for all external model-like API calls in this process. */
35
+ export declare function getGlobalModelCallQueue(): ModelCallQueue;
36
+ /** Resets the global queue (tests only). */
37
+ export declare function resetGlobalModelCallQueue(): void;
38
+ //# sourceMappingURL=modelCallQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelCallQueue.d.ts","sourceRoot":"","sources":["../../src/util/modelCallQueue.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,qFAAqF;AACrF,wBAAgB,mBAAmB,IAAI,MAAM,CAQ5C;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,IAAI,MAAM,CAQzC;AAED,2FAA2F;AAC3F,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,GAAE,qBAA0B;IAK/C,2FAA2F;IACrF,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAK7D;;;OAGG;IACG,cAAc,CAAC,CAAC,EACpB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GACtC,OAAO,CAAC;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IA+B7C,sDAAsD;IACtD,SAAS,IAAI;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB;CAQF;AAID,0EAA0E;AAC1E,wBAAgB,uBAAuB,IAAI,cAAc,CAKxD;AAED,4CAA4C;AAC5C,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD"}
@@ -0,0 +1,88 @@
1
+ function sleep(ms) {
2
+ return new Promise((resolve) => setTimeout(resolve, ms));
3
+ }
4
+ /** Reads max concurrent API slots from env (primary + legacy aliases). Default 3. */
5
+ export function getApiMaxConcurrent() {
6
+ const raw = process.env.AUVIRA_API_MAX_CONCURRENT?.trim() ??
7
+ process.env.AUVIRA_MODEL_MAX_CONCURRENT?.trim() ??
8
+ process.env.CUSTOM_MODEL_MAX_CONCURRENT?.trim() ??
9
+ "3";
10
+ const parsed = Number(raw);
11
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : 3;
12
+ }
13
+ /** Reads API cooldown ms from env (primary + legacy aliases). Default 0. */
14
+ export function getApiCooldownMs() {
15
+ const raw = process.env.AUVIRA_API_COOLDOWN_MS?.trim() ??
16
+ process.env.AUVIRA_MODEL_API_COOLDOWN_MS?.trim() ??
17
+ process.env.CUSTOM_MODEL_API_COOLDOWN_MS?.trim() ??
18
+ "0";
19
+ const parsed = Number(raw);
20
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : 0;
21
+ }
22
+ /** Global queue for all external model-like API calls (chat, evaluator, image, judges). */
23
+ export class ModelCallQueue {
24
+ activeCalls = 0;
25
+ waitQueue = [];
26
+ maxConcurrent;
27
+ cooldownMs;
28
+ constructor(options = {}) {
29
+ this.maxConcurrent = options.maxConcurrent ?? getApiMaxConcurrent();
30
+ this.cooldownMs = options.cooldownMs ?? getApiCooldownMs();
31
+ }
32
+ /** Acquires a queue slot and returns fn result. Use when queue wait time is not needed. */
33
+ async run(label, fn) {
34
+ const { value } = await this.runWithMetrics(label, async () => fn());
35
+ return value;
36
+ }
37
+ /**
38
+ * Acquires a slot, measures wait time, invokes fn(queueWaitMs), returns result + wait.
39
+ * queueWaitMs is measured after slot acquire and before fn runs.
40
+ */
41
+ async runWithMetrics(label, fn) {
42
+ const queueStartedAt = Date.now();
43
+ while (this.activeCalls >= this.maxConcurrent) {
44
+ await new Promise((resolve) => this.waitQueue.push(resolve));
45
+ }
46
+ const queueWaitMs = Date.now() - queueStartedAt;
47
+ if (queueWaitMs > 1000) {
48
+ console.warn(`[auvira-agent] Waiting for API slot (${label}, ${queueWaitMs}ms, active=${this.activeCalls}/${this.maxConcurrent}).`);
49
+ }
50
+ this.activeCalls += 1;
51
+ try {
52
+ const value = await fn(queueWaitMs);
53
+ return { value, queueWaitMs };
54
+ }
55
+ finally {
56
+ this.activeCalls -= 1;
57
+ const next = this.waitQueue.shift();
58
+ if (next) {
59
+ next();
60
+ }
61
+ if (this.cooldownMs > 0) {
62
+ await sleep(this.cooldownMs);
63
+ }
64
+ }
65
+ }
66
+ /** Returns current queue settings for diagnostics. */
67
+ getConfig() {
68
+ return {
69
+ maxConcurrent: this.maxConcurrent,
70
+ cooldownMs: this.cooldownMs,
71
+ activeCalls: this.activeCalls,
72
+ queuedCalls: this.waitQueue.length,
73
+ };
74
+ }
75
+ }
76
+ let globalQueue;
77
+ /** Shared queue for all external model-like API calls in this process. */
78
+ export function getGlobalModelCallQueue() {
79
+ if (!globalQueue) {
80
+ globalQueue = new ModelCallQueue();
81
+ }
82
+ return globalQueue;
83
+ }
84
+ /** Resets the global queue (tests only). */
85
+ export function resetGlobalModelCallQueue() {
86
+ globalQueue = undefined;
87
+ }
88
+ //# sourceMappingURL=modelCallQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelCallQueue.js","sourceRoot":"","sources":["../../src/util/modelCallQueue.ts"],"names":[],"mappings":"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"}
@@ -75,6 +75,9 @@ auvira-sdk-run --job <editJobId>
75
75
  | `AUVIRA_IMAGE_GEN_MAX_PER_RUN` | No | Max image generations per run (default `2`) |
76
76
  | `AUVIRA_IMAGE_BASE_URL` | No | Override image API base (default global `api.minimax.io/v1` or CN from chat host) |
77
77
  | `AUVIRA_IMAGE_MODEL` | No | Image model id (default `image-01`) |
78
+ | `AUVIRA_PARALLEL_READ_TOOLS` | No | Parallelize read-only tool batches (default `true`) |
79
+ | `AUVIRA_MAX_PARALLEL_READ_TOOLS` | No | Max concurrent read tools per batch (default `8`) |
80
+ | `AUVIRA_API_MAX_CONCURRENT` | No | Global in-flight limit for external API calls — chat, evaluator, image gen (default `3`; aliases: `AUVIRA_MODEL_MAX_CONCURRENT`, `CUSTOM_MODEL_MAX_CONCURRENT`) |
78
81
 
79
82
  `CUSTOM_MODEL_API_KEY` is read from the environment only — never from `job.json`.
80
83
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auvira.ai/sdk",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "description": "Cursor-SDK-compatible visual coding agent with custom model support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -42,6 +42,7 @@
42
42
  "test:flex": "node --env-file=.env ./node_modules/vitest/vitest.mjs run src/__tests__/flex",
43
43
  "test:flex:unit": "node --env-file=.env ./node_modules/vitest/vitest.mjs run src/__tests__/flex --exclude 'src/__tests__/flex/real-*.e2e.test.ts'",
44
44
  "test:real": "node --env-file=.env ./node_modules/vitest/vitest.mjs run src/__tests__/real src/__tests__/flex/real-*.e2e.test.ts src/__tests__/runner/run-cli.real.e2e.test.ts",
45
+ "test:real:smoke": "node --env-file=.env ./node_modules/vitest/vitest.mjs run src/__tests__/real/minimax-api.test.ts src/__tests__/real/agent-run-stream.e2e.test.ts src/__tests__/real/agent-parallel-read-tools.e2e.test.ts",
45
46
  "test:runner": "node --env-file=.env ./node_modules/vitest/vitest.mjs run src/__tests__/runner --exclude 'src/__tests__/runner/**/*.real.e2e.test.ts'",
46
47
  "test:runner:real": "node --env-file=.env ./node_modules/vitest/vitest.mjs run src/__tests__/runner/run-cli.real.e2e.test.ts src/__tests__/runner/run-cli-vibe-consumer.real.e2e.test.ts",
47
48
  "test:runner:asset": "AUVIRA_REAL_ASSET_E2E=true node --env-file=.env ./node_modules/vitest/vitest.mjs run src/__tests__/runner/run-cli-asset.real.e2e.test.ts",