ai-sdk-provider-gemini-cli-agentic 0.1.3 → 0.1.6
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/dist/index.cjs +15 -32
- package/dist/index.js +11 -32
- package/package.json +3 -2
package/dist/index.cjs
CHANGED
|
@@ -2,10 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
var provider = require('@ai-sdk/provider');
|
|
4
4
|
var child_process = require('child_process');
|
|
5
|
+
var treeKill = require('tree-kill');
|
|
5
6
|
var crypto = require('crypto');
|
|
6
7
|
var providerUtils = require('@ai-sdk/provider-utils');
|
|
7
8
|
var zod = require('zod');
|
|
8
9
|
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var treeKill__default = /*#__PURE__*/_interopDefault(treeKill);
|
|
13
|
+
|
|
9
14
|
// src/gemini-cli-provider.ts
|
|
10
15
|
|
|
11
16
|
// src/stream-parser.ts
|
|
@@ -363,30 +368,18 @@ var GeminiCliLanguageModel = class {
|
|
|
363
368
|
stdio: ["pipe", "pipe", "pipe"],
|
|
364
369
|
detached: !isWin
|
|
365
370
|
});
|
|
366
|
-
const killProcessTree = (signal = "SIGTERM") => {
|
|
367
|
-
|
|
368
|
-
if (isWin) {
|
|
369
|
-
child_process.spawn("taskkill", ["/pid", String(child.pid), "/T", "/F"], { stdio: "ignore" });
|
|
370
|
-
} else {
|
|
371
|
-
try {
|
|
372
|
-
process.kill(-child.pid, signal);
|
|
373
|
-
} catch {
|
|
374
|
-
child.kill(signal);
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
} else {
|
|
378
|
-
child.kill(signal);
|
|
379
|
-
}
|
|
371
|
+
const killProcessTree = (pid, signal = "SIGTERM") => {
|
|
372
|
+
treeKill__default.default(pid, signal);
|
|
380
373
|
};
|
|
381
374
|
child.stdin.write(promptText);
|
|
382
375
|
child.stdin.end();
|
|
383
376
|
let onAbort;
|
|
384
377
|
if (options.abortSignal) {
|
|
385
378
|
if (options.abortSignal.aborted) {
|
|
386
|
-
killProcessTree();
|
|
379
|
+
child.pid && killProcessTree(child.pid);
|
|
387
380
|
throw options.abortSignal.reason ?? new Error("Request aborted");
|
|
388
381
|
}
|
|
389
|
-
onAbort = () => killProcessTree();
|
|
382
|
+
onAbort = () => child.pid && killProcessTree(child.pid);
|
|
390
383
|
options.abortSignal.addEventListener("abort", onAbort, { once: true });
|
|
391
384
|
}
|
|
392
385
|
const startTime = Date.now();
|
|
@@ -453,6 +446,7 @@ var GeminiCliLanguageModel = class {
|
|
|
453
446
|
reject(this.handleSpawnError(e, promptExcerpt));
|
|
454
447
|
});
|
|
455
448
|
child.on("close", (code) => {
|
|
449
|
+
child.pid && killProcessTree(child.pid);
|
|
456
450
|
const duration = Date.now() - startTime;
|
|
457
451
|
if (code === 0) {
|
|
458
452
|
this.logger.info(`[gemini-cli] Completed in ${duration}ms`);
|
|
@@ -519,20 +513,8 @@ var GeminiCliLanguageModel = class {
|
|
|
519
513
|
stdio: ["pipe", "pipe", "pipe"],
|
|
520
514
|
detached: !isWin
|
|
521
515
|
});
|
|
522
|
-
const killProcessTree = (signal = "SIGTERM") => {
|
|
523
|
-
|
|
524
|
-
if (isWin) {
|
|
525
|
-
child_process.spawn("taskkill", ["/pid", String(child.pid), "/T", "/F"], { stdio: "ignore" });
|
|
526
|
-
} else {
|
|
527
|
-
try {
|
|
528
|
-
process.kill(-child.pid, signal);
|
|
529
|
-
} catch {
|
|
530
|
-
child.kill(signal);
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
} else {
|
|
534
|
-
child.kill(signal);
|
|
535
|
-
}
|
|
516
|
+
const killProcessTree = (pid, signal = "SIGTERM") => {
|
|
517
|
+
treeKill__default.default(pid, signal);
|
|
536
518
|
};
|
|
537
519
|
child.stdin.write(promptText);
|
|
538
520
|
child.stdin.end();
|
|
@@ -542,10 +524,10 @@ var GeminiCliLanguageModel = class {
|
|
|
542
524
|
let textId;
|
|
543
525
|
let lastStatus;
|
|
544
526
|
const toolResults = /* @__PURE__ */ new Map();
|
|
545
|
-
const onAbort = () => killProcessTree();
|
|
527
|
+
const onAbort = () => child.pid && killProcessTree(child.pid);
|
|
546
528
|
if (abortSignal) {
|
|
547
529
|
if (abortSignal.aborted) {
|
|
548
|
-
killProcessTree();
|
|
530
|
+
child.pid && killProcessTree(child.pid);
|
|
549
531
|
controller.error(abortSignal.reason ?? new Error("Request aborted"));
|
|
550
532
|
return;
|
|
551
533
|
}
|
|
@@ -630,6 +612,7 @@ var GeminiCliLanguageModel = class {
|
|
|
630
612
|
controller.error(model.handleSpawnError(e, promptExcerpt));
|
|
631
613
|
});
|
|
632
614
|
child.on("close", (code) => {
|
|
615
|
+
child.pid && killProcessTree(child.pid);
|
|
633
616
|
const duration = Date.now() - startTime;
|
|
634
617
|
if (abortSignal) {
|
|
635
618
|
abortSignal.removeEventListener("abort", onAbort);
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { NoSuchModelError, LoadAPIKeyError, APICallError } from '@ai-sdk/provider';
|
|
2
2
|
import { spawn } from 'child_process';
|
|
3
|
+
import treeKill from 'tree-kill';
|
|
3
4
|
import { randomUUID } from 'crypto';
|
|
4
5
|
import { parseProviderOptions, generateId } from '@ai-sdk/provider-utils';
|
|
5
6
|
import { z } from 'zod';
|
|
@@ -361,30 +362,18 @@ var GeminiCliLanguageModel = class {
|
|
|
361
362
|
stdio: ["pipe", "pipe", "pipe"],
|
|
362
363
|
detached: !isWin
|
|
363
364
|
});
|
|
364
|
-
const killProcessTree = (signal = "SIGTERM") => {
|
|
365
|
-
|
|
366
|
-
if (isWin) {
|
|
367
|
-
spawn("taskkill", ["/pid", String(child.pid), "/T", "/F"], { stdio: "ignore" });
|
|
368
|
-
} else {
|
|
369
|
-
try {
|
|
370
|
-
process.kill(-child.pid, signal);
|
|
371
|
-
} catch {
|
|
372
|
-
child.kill(signal);
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
} else {
|
|
376
|
-
child.kill(signal);
|
|
377
|
-
}
|
|
365
|
+
const killProcessTree = (pid, signal = "SIGTERM") => {
|
|
366
|
+
treeKill(pid, signal);
|
|
378
367
|
};
|
|
379
368
|
child.stdin.write(promptText);
|
|
380
369
|
child.stdin.end();
|
|
381
370
|
let onAbort;
|
|
382
371
|
if (options.abortSignal) {
|
|
383
372
|
if (options.abortSignal.aborted) {
|
|
384
|
-
killProcessTree();
|
|
373
|
+
child.pid && killProcessTree(child.pid);
|
|
385
374
|
throw options.abortSignal.reason ?? new Error("Request aborted");
|
|
386
375
|
}
|
|
387
|
-
onAbort = () => killProcessTree();
|
|
376
|
+
onAbort = () => child.pid && killProcessTree(child.pid);
|
|
388
377
|
options.abortSignal.addEventListener("abort", onAbort, { once: true });
|
|
389
378
|
}
|
|
390
379
|
const startTime = Date.now();
|
|
@@ -451,6 +440,7 @@ var GeminiCliLanguageModel = class {
|
|
|
451
440
|
reject(this.handleSpawnError(e, promptExcerpt));
|
|
452
441
|
});
|
|
453
442
|
child.on("close", (code) => {
|
|
443
|
+
child.pid && killProcessTree(child.pid);
|
|
454
444
|
const duration = Date.now() - startTime;
|
|
455
445
|
if (code === 0) {
|
|
456
446
|
this.logger.info(`[gemini-cli] Completed in ${duration}ms`);
|
|
@@ -517,20 +507,8 @@ var GeminiCliLanguageModel = class {
|
|
|
517
507
|
stdio: ["pipe", "pipe", "pipe"],
|
|
518
508
|
detached: !isWin
|
|
519
509
|
});
|
|
520
|
-
const killProcessTree = (signal = "SIGTERM") => {
|
|
521
|
-
|
|
522
|
-
if (isWin) {
|
|
523
|
-
spawn("taskkill", ["/pid", String(child.pid), "/T", "/F"], { stdio: "ignore" });
|
|
524
|
-
} else {
|
|
525
|
-
try {
|
|
526
|
-
process.kill(-child.pid, signal);
|
|
527
|
-
} catch {
|
|
528
|
-
child.kill(signal);
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
} else {
|
|
532
|
-
child.kill(signal);
|
|
533
|
-
}
|
|
510
|
+
const killProcessTree = (pid, signal = "SIGTERM") => {
|
|
511
|
+
treeKill(pid, signal);
|
|
534
512
|
};
|
|
535
513
|
child.stdin.write(promptText);
|
|
536
514
|
child.stdin.end();
|
|
@@ -540,10 +518,10 @@ var GeminiCliLanguageModel = class {
|
|
|
540
518
|
let textId;
|
|
541
519
|
let lastStatus;
|
|
542
520
|
const toolResults = /* @__PURE__ */ new Map();
|
|
543
|
-
const onAbort = () => killProcessTree();
|
|
521
|
+
const onAbort = () => child.pid && killProcessTree(child.pid);
|
|
544
522
|
if (abortSignal) {
|
|
545
523
|
if (abortSignal.aborted) {
|
|
546
|
-
killProcessTree();
|
|
524
|
+
child.pid && killProcessTree(child.pid);
|
|
547
525
|
controller.error(abortSignal.reason ?? new Error("Request aborted"));
|
|
548
526
|
return;
|
|
549
527
|
}
|
|
@@ -628,6 +606,7 @@ var GeminiCliLanguageModel = class {
|
|
|
628
606
|
controller.error(model.handleSpawnError(e, promptExcerpt));
|
|
629
607
|
});
|
|
630
608
|
child.on("close", (code) => {
|
|
609
|
+
child.pid && killProcessTree(child.pid);
|
|
631
610
|
const duration = Date.now() - startTime;
|
|
632
611
|
if (abortSignal) {
|
|
633
612
|
abortSignal.removeEventListener("abort", onAbort);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-sdk-provider-gemini-cli-agentic",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "AI SDK v6 provider for Google Gemini CLI agentic mode",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-sdk",
|
|
@@ -49,7 +49,8 @@
|
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@ai-sdk/provider": "^3.0.0",
|
|
52
|
-
"@ai-sdk/provider-utils": "^4.0.1"
|
|
52
|
+
"@ai-sdk/provider-utils": "^4.0.1",
|
|
53
|
+
"tree-kill": "^1.2.2"
|
|
53
54
|
},
|
|
54
55
|
"devDependencies": {
|
|
55
56
|
"@eslint/js": "^9.28.0",
|