@kenkaiiii/gg-ai 0.0.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.
Files changed (41) hide show
  1. package/dist/errors.d.ts +12 -0
  2. package/dist/errors.d.ts.map +1 -0
  3. package/dist/errors.js +17 -0
  4. package/dist/errors.js.map +1 -0
  5. package/dist/index.d.ts +5 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +6 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/providers/anthropic.d.ts +4 -0
  10. package/dist/providers/anthropic.d.ts.map +1 -0
  11. package/dist/providers/anthropic.js +128 -0
  12. package/dist/providers/anthropic.js.map +1 -0
  13. package/dist/providers/openai-codex.d.ts +4 -0
  14. package/dist/providers/openai-codex.d.ts.map +1 -0
  15. package/dist/providers/openai-codex.js +325 -0
  16. package/dist/providers/openai-codex.js.map +1 -0
  17. package/dist/providers/openai.d.ts +4 -0
  18. package/dist/providers/openai.d.ts.map +1 -0
  19. package/dist/providers/openai.js +138 -0
  20. package/dist/providers/openai.js.map +1 -0
  21. package/dist/providers/transform.d.ts +20 -0
  22. package/dist/providers/transform.d.ts.map +1 -0
  23. package/dist/providers/transform.js +206 -0
  24. package/dist/providers/transform.js.map +1 -0
  25. package/dist/stream.d.ts +19 -0
  26. package/dist/stream.d.ts.map +1 -0
  27. package/dist/stream.js +34 -0
  28. package/dist/stream.js.map +1 -0
  29. package/dist/types.d.ts +111 -0
  30. package/dist/types.d.ts.map +1 -0
  31. package/dist/types.js +2 -0
  32. package/dist/types.js.map +1 -0
  33. package/dist/utils/event-stream.d.ts +37 -0
  34. package/dist/utils/event-stream.d.ts.map +1 -0
  35. package/dist/utils/event-stream.js +86 -0
  36. package/dist/utils/event-stream.js.map +1 -0
  37. package/dist/utils/zod-to-json-schema.d.ts +7 -0
  38. package/dist/utils/zod-to-json-schema.d.ts.map +1 -0
  39. package/dist/utils/zod-to-json-schema.js +12 -0
  40. package/dist/utils/zod-to-json-schema.js.map +1 -0
  41. package/package.json +37 -0
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Push-based async iterable. Producers push events, consumers
3
+ * iterate with `for await`. Also supports thenable so you can
4
+ * `await stream(...)` directly to get the final response.
5
+ */
6
+ export class EventStream {
7
+ queue = [];
8
+ resolve = null;
9
+ done = false;
10
+ error = null;
11
+ push(event) {
12
+ this.queue.push(event);
13
+ this.resolve?.();
14
+ this.resolve = null;
15
+ }
16
+ close() {
17
+ this.done = true;
18
+ this.resolve?.();
19
+ this.resolve = null;
20
+ }
21
+ abort(error) {
22
+ this.error = error;
23
+ this.done = true;
24
+ this.resolve?.();
25
+ this.resolve = null;
26
+ }
27
+ async *[Symbol.asyncIterator]() {
28
+ while (true) {
29
+ while (this.queue.length > 0) {
30
+ yield this.queue.shift();
31
+ }
32
+ if (this.error)
33
+ throw this.error;
34
+ if (this.done)
35
+ return;
36
+ await new Promise((r) => {
37
+ this.resolve = r;
38
+ });
39
+ }
40
+ }
41
+ }
42
+ /**
43
+ * Wraps EventStream and adds a `.response` promise that resolves
44
+ * to the final StreamResponse. Also implements thenable so:
45
+ *
46
+ * const msg = await stream({...}) // awaits response
47
+ * for await (const e of stream({...})) {} // iterates events
48
+ */
49
+ export class StreamResult {
50
+ events;
51
+ response;
52
+ resolveResponse;
53
+ rejectResponse;
54
+ constructor() {
55
+ this.events = new EventStream();
56
+ this.response = new Promise((resolve, reject) => {
57
+ this.resolveResponse = resolve;
58
+ this.rejectResponse = reject;
59
+ });
60
+ }
61
+ push(event) {
62
+ this.events.push(event);
63
+ }
64
+ complete(response) {
65
+ this.events.close();
66
+ this.resolveResponse(response);
67
+ }
68
+ abort(error) {
69
+ this.events.abort(error);
70
+ this.rejectResponse(error);
71
+ }
72
+ [Symbol.asyncIterator]() {
73
+ return this.events[Symbol.asyncIterator]();
74
+ }
75
+ then(onfulfilled, onrejected) {
76
+ // Drain events so the stream completes
77
+ this.drainEvents();
78
+ return this.response.then(onfulfilled, onrejected);
79
+ }
80
+ async drainEvents() {
81
+ for await (const _ of this.events) {
82
+ // consume silently
83
+ }
84
+ }
85
+ }
86
+ //# sourceMappingURL=event-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-stream.js","sourceRoot":"","sources":["../../src/utils/event-stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Converts a Zod schema to a JSON Schema object suitable for
4
+ * provider tool parameter definitions.
5
+ */
6
+ export declare function zodToJsonSchema(schema: z.ZodType): Record<string, unknown>;
7
+ //# sourceMappingURL=zod-to-json-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-to-json-schema.d.ts","sourceRoot":"","sources":["../../src/utils/zod-to-json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAK1E"}
@@ -0,0 +1,12 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Converts a Zod schema to a JSON Schema object suitable for
4
+ * provider tool parameter definitions.
5
+ */
6
+ export function zodToJsonSchema(schema) {
7
+ const jsonSchema = z.toJSONSchema(schema);
8
+ // Remove $schema and other meta keys providers don't want
9
+ const { $schema: _schema, ...rest } = jsonSchema;
10
+ return rest;
11
+ }
12
+ //# sourceMappingURL=zod-to-json-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-to-json-schema.js","sourceRoot":"","sources":["../../src/utils/zod-to-json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,0DAA0D;IAC1D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,UAAqC,CAAC;IAC5E,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@kenkaiiii/gg-ai",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "description": "Unified LLM streaming API for Anthropic and OpenAI",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/kenkaiiii/gg-coder",
10
+ "directory": "packages/gg-ai"
11
+ },
12
+ "exports": {
13
+ ".": {
14
+ "import": "./dist/index.js",
15
+ "types": "./dist/index.d.ts"
16
+ }
17
+ },
18
+ "files": [
19
+ "dist"
20
+ ],
21
+ "dependencies": {
22
+ "@anthropic-ai/sdk": "^0.78.0",
23
+ "openai": "^6.25.0",
24
+ "zod": "^4.3.6"
25
+ },
26
+ "devDependencies": {
27
+ "typescript": "^5.9.3",
28
+ "vitest": "^4.0.18"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "scripts": {
34
+ "build": "tsc",
35
+ "check": "tsc --noEmit"
36
+ }
37
+ }