@aituber-onair/chat 0.30.0 → 0.31.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 (59) hide show
  1. package/README.ja.md +190 -2
  2. package/README.md +200 -2
  3. package/dist/cjs/agent.d.ts +3 -0
  4. package/dist/cjs/agent.d.ts.map +1 -0
  5. package/dist/cjs/agent.js +21 -0
  6. package/dist/cjs/agent.js.map +1 -0
  7. package/dist/cjs/services/providers/agent/CodexSDKChatService.d.ts +29 -0
  8. package/dist/cjs/services/providers/agent/CodexSDKChatService.d.ts.map +1 -0
  9. package/dist/cjs/services/providers/agent/CodexSDKChatService.js +65 -0
  10. package/dist/cjs/services/providers/agent/CodexSDKChatService.js.map +1 -0
  11. package/dist/cjs/services/providers/agent/CodexSDKChatServiceProvider.d.ts +14 -0
  12. package/dist/cjs/services/providers/agent/CodexSDKChatServiceProvider.d.ts.map +1 -0
  13. package/dist/cjs/services/providers/agent/CodexSDKChatServiceProvider.js +31 -0
  14. package/dist/cjs/services/providers/agent/CodexSDKChatServiceProvider.js.map +1 -0
  15. package/dist/cjs/services/providers/agent/CopilotSDKChatService.d.ts +48 -0
  16. package/dist/cjs/services/providers/agent/CopilotSDKChatService.d.ts.map +1 -0
  17. package/dist/cjs/services/providers/agent/CopilotSDKChatService.js +79 -0
  18. package/dist/cjs/services/providers/agent/CopilotSDKChatService.js.map +1 -0
  19. package/dist/cjs/services/providers/agent/CopilotSDKChatServiceProvider.d.ts +14 -0
  20. package/dist/cjs/services/providers/agent/CopilotSDKChatServiceProvider.d.ts.map +1 -0
  21. package/dist/cjs/services/providers/agent/CopilotSDKChatServiceProvider.js +31 -0
  22. package/dist/cjs/services/providers/agent/CopilotSDKChatServiceProvider.js.map +1 -0
  23. package/dist/cjs/services/providers/agent/index.d.ts +19 -0
  24. package/dist/cjs/services/providers/agent/index.d.ts.map +1 -0
  25. package/dist/cjs/services/providers/agent/index.js +26 -0
  26. package/dist/cjs/services/providers/agent/index.js.map +1 -0
  27. package/dist/cjs/services/providers/agent/shared.d.ts +36 -0
  28. package/dist/cjs/services/providers/agent/shared.d.ts.map +1 -0
  29. package/dist/cjs/services/providers/agent/shared.js +122 -0
  30. package/dist/cjs/services/providers/agent/shared.js.map +1 -0
  31. package/dist/esm/agent.d.ts +3 -0
  32. package/dist/esm/agent.d.ts.map +1 -0
  33. package/dist/esm/agent.js +5 -0
  34. package/dist/esm/agent.js.map +1 -0
  35. package/dist/esm/services/providers/agent/CodexSDKChatService.d.ts +29 -0
  36. package/dist/esm/services/providers/agent/CodexSDKChatService.d.ts.map +1 -0
  37. package/dist/esm/services/providers/agent/CodexSDKChatService.js +61 -0
  38. package/dist/esm/services/providers/agent/CodexSDKChatService.js.map +1 -0
  39. package/dist/esm/services/providers/agent/CodexSDKChatServiceProvider.d.ts +14 -0
  40. package/dist/esm/services/providers/agent/CodexSDKChatServiceProvider.d.ts.map +1 -0
  41. package/dist/esm/services/providers/agent/CodexSDKChatServiceProvider.js +27 -0
  42. package/dist/esm/services/providers/agent/CodexSDKChatServiceProvider.js.map +1 -0
  43. package/dist/esm/services/providers/agent/CopilotSDKChatService.d.ts +48 -0
  44. package/dist/esm/services/providers/agent/CopilotSDKChatService.d.ts.map +1 -0
  45. package/dist/esm/services/providers/agent/CopilotSDKChatService.js +75 -0
  46. package/dist/esm/services/providers/agent/CopilotSDKChatService.js.map +1 -0
  47. package/dist/esm/services/providers/agent/CopilotSDKChatServiceProvider.d.ts +14 -0
  48. package/dist/esm/services/providers/agent/CopilotSDKChatServiceProvider.d.ts.map +1 -0
  49. package/dist/esm/services/providers/agent/CopilotSDKChatServiceProvider.js +27 -0
  50. package/dist/esm/services/providers/agent/CopilotSDKChatServiceProvider.js.map +1 -0
  51. package/dist/esm/services/providers/agent/index.d.ts +19 -0
  52. package/dist/esm/services/providers/agent/index.d.ts.map +1 -0
  53. package/dist/esm/services/providers/agent/index.js +15 -0
  54. package/dist/esm/services/providers/agent/index.js.map +1 -0
  55. package/dist/esm/services/providers/agent/shared.d.ts +36 -0
  56. package/dist/esm/services/providers/agent/shared.d.ts.map +1 -0
  57. package/dist/esm/services/providers/agent/shared.js +116 -0
  58. package/dist/esm/services/providers/agent/shared.js.map +1 -0
  59. package/package.json +6 -1
@@ -0,0 +1,48 @@
1
+ import { ChatResponseLength } from '../../../constants';
2
+ import { AgentTextChatService } from './shared';
3
+ export declare const DEFAULT_COPILOT_SDK_MODEL = "gpt-4.1";
4
+ type CopilotSDKModule = {
5
+ CopilotClient: new () => CopilotClient;
6
+ };
7
+ type CopilotClient = {
8
+ createSession(options?: Record<string, unknown>): Promise<CopilotSession>;
9
+ stop?(): Promise<void> | void;
10
+ };
11
+ type CopilotSession = {
12
+ sendAndWait(message: {
13
+ prompt: string;
14
+ }): Promise<CopilotResponse>;
15
+ on?(eventName: string, handler: (event: CopilotMessageDeltaEvent) => void): (() => void) | undefined;
16
+ };
17
+ type CopilotResponse = {
18
+ data?: {
19
+ content?: unknown;
20
+ };
21
+ };
22
+ type CopilotMessageDeltaEvent = {
23
+ data?: {
24
+ deltaContent?: unknown;
25
+ };
26
+ };
27
+ export type CopilotSDKLoader = () => Promise<CopilotSDKModule>;
28
+ export type CopilotSDKPermissionRequest = {
29
+ kind: string;
30
+ toolCallId?: string;
31
+ };
32
+ export type CopilotSDKPermissionRequestResult = {
33
+ kind: string;
34
+ };
35
+ export type CopilotSDKPermissionHandler = (request: CopilotSDKPermissionRequest, invocation: {
36
+ sessionId: string;
37
+ }) => CopilotSDKPermissionRequestResult | Promise<CopilotSDKPermissionRequestResult>;
38
+ export type CopilotSDKChatServiceOptions = {
39
+ apiKey?: never;
40
+ model?: string;
41
+ responseLength?: ChatResponseLength;
42
+ onPermissionRequest?: CopilotSDKPermissionHandler;
43
+ };
44
+ export declare class CopilotSDKChatService extends AgentTextChatService {
45
+ constructor(options?: CopilotSDKChatServiceOptions, loadSDK?: CopilotSDKLoader);
46
+ }
47
+ export {};
48
+ //# sourceMappingURL=CopilotSDKChatService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopilotSDKChatService.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/CopilotSDKChatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAA0B,MAAM,UAAU,CAAC;AAExE,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD,KAAK,gBAAgB,GAAG;IACtB,aAAa,EAAE,UAAU,aAAa,CAAC;CACxC,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1E,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,WAAW,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACnE,EAAE,CAAC,CACD,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,GACjD,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE/D,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,CACxC,OAAO,EAAE,2BAA2B,EACpC,UAAU,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,KAE/B,iCAAiC,GACjC,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAE/C,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;CACnD,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,oBAAoB;gBAE3D,OAAO,GAAE,4BAAiC,EAC1C,OAAO,GAAE,gBAAiC;CAyB7C"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CopilotSDKChatService = exports.DEFAULT_COPILOT_SDK_MODEL = void 0;
4
+ const shared_1 = require("./shared");
5
+ exports.DEFAULT_COPILOT_SDK_MODEL = 'gpt-4.1';
6
+ class CopilotSDKChatService extends shared_1.AgentTextChatService {
7
+ constructor(options = {}, loadSDK = loadCopilotSDK) {
8
+ const model = options.model ?? exports.DEFAULT_COPILOT_SDK_MODEL;
9
+ super({
10
+ provider: 'copilot-sdk',
11
+ model,
12
+ defaultModel: exports.DEFAULT_COPILOT_SDK_MODEL,
13
+ responseLength: options.responseLength,
14
+ getResponse: async (prompt, stream, onPartialResponse) => {
15
+ try {
16
+ return await runCopilotPrompt(loadSDK, model, options, prompt, stream, onPartialResponse);
17
+ }
18
+ catch (error) {
19
+ throw (0, shared_1.wrapAgentProviderError)('copilot-sdk', error);
20
+ }
21
+ },
22
+ });
23
+ }
24
+ }
25
+ exports.CopilotSDKChatService = CopilotSDKChatService;
26
+ async function runCopilotPrompt(loadSDK, model, options, prompt, stream, onPartialResponse) {
27
+ const { CopilotClient } = await loadSDK();
28
+ const client = new CopilotClient();
29
+ let unsubscribe = undefined;
30
+ let streamedText = '';
31
+ try {
32
+ const session = await client.createSession({
33
+ model,
34
+ streaming: stream,
35
+ onPermissionRequest: options.onPermissionRequest ?? denyCopilotPermissionRequest,
36
+ });
37
+ if (stream && session.on) {
38
+ unsubscribe = session.on('assistant.message_delta', (event) => {
39
+ const delta = event.data?.deltaContent;
40
+ if (typeof delta === 'string' && delta) {
41
+ streamedText += delta;
42
+ onPartialResponse(delta);
43
+ }
44
+ });
45
+ }
46
+ const response = await session.sendAndWait({ prompt });
47
+ const content = response.data?.content;
48
+ if (typeof content !== 'string') {
49
+ throw new Error('copilot-sdk provider received an empty response.');
50
+ }
51
+ if (stream && streamedText === '') {
52
+ onPartialResponse(content);
53
+ }
54
+ return content;
55
+ }
56
+ finally {
57
+ if (unsubscribe) {
58
+ unsubscribe();
59
+ }
60
+ await client.stop?.();
61
+ }
62
+ }
63
+ const denyCopilotPermissionRequest = () => ({
64
+ kind: 'denied-no-approval-rule-and-could-not-request-from-user',
65
+ });
66
+ async function loadCopilotSDK() {
67
+ try {
68
+ return (await dynamicImport('@github/copilot-sdk'));
69
+ }
70
+ catch (error) {
71
+ const message = 'copilot-sdk provider requires @github/copilot-sdk. ' +
72
+ 'Install it in your Node.js project and authenticate with GitHub Copilot.';
73
+ const wrappedError = new Error(message);
74
+ wrappedError.cause = error;
75
+ throw wrappedError;
76
+ }
77
+ }
78
+ const dynamicImport = new Function('specifier', 'return import(specifier)');
79
+ //# sourceMappingURL=CopilotSDKChatService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopilotSDKChatService.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/CopilotSDKChatService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { ChatService } from '../../ChatService';
2
+ import { ChatServiceProvider, VisionSupportLevel } from '../ChatServiceProvider';
3
+ import { CopilotSDKChatServiceOptions, CopilotSDKLoader } from './CopilotSDKChatService';
4
+ export declare class CopilotSDKChatServiceProvider implements ChatServiceProvider<CopilotSDKChatServiceOptions> {
5
+ private loadSDK?;
6
+ constructor(loadSDK?: CopilotSDKLoader | undefined);
7
+ createChatService(options: CopilotSDKChatServiceOptions): ChatService;
8
+ getProviderName(): string;
9
+ getSupportedModels(): string[];
10
+ getDefaultModel(): string;
11
+ supportsVision(): boolean;
12
+ getVisionSupportLevel(): VisionSupportLevel;
13
+ }
14
+ //# sourceMappingURL=CopilotSDKChatServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopilotSDKChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/CopilotSDKChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,4BAA4B,EAC5B,gBAAgB,EAEjB,MAAM,yBAAyB,CAAC;AAGjC,qBAAa,6BACX,YAAW,mBAAmB,CAAC,4BAA4B,CAAC;IAEhD,OAAO,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,gBAAgB,YAAA;IAE9C,iBAAiB,CAAC,OAAO,EAAE,4BAA4B,GAAG,WAAW;IAKrE,eAAe,IAAI,MAAM;IAIzB,kBAAkB,IAAI,MAAM,EAAE;IAI9B,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,OAAO;IAIzB,qBAAqB,IAAI,kBAAkB;CAG5C"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CopilotSDKChatServiceProvider = void 0;
4
+ const CopilotSDKChatService_1 = require("./CopilotSDKChatService");
5
+ const shared_1 = require("./shared");
6
+ class CopilotSDKChatServiceProvider {
7
+ constructor(loadSDK) {
8
+ this.loadSDK = loadSDK;
9
+ }
10
+ createChatService(options) {
11
+ (0, shared_1.rejectUnsupportedAgentOptions)(this.getProviderName(), options);
12
+ return new CopilotSDKChatService_1.CopilotSDKChatService(options, this.loadSDK);
13
+ }
14
+ getProviderName() {
15
+ return 'copilot-sdk';
16
+ }
17
+ getSupportedModels() {
18
+ return [CopilotSDKChatService_1.DEFAULT_COPILOT_SDK_MODEL];
19
+ }
20
+ getDefaultModel() {
21
+ return CopilotSDKChatService_1.DEFAULT_COPILOT_SDK_MODEL;
22
+ }
23
+ supportsVision() {
24
+ return false;
25
+ }
26
+ getVisionSupportLevel() {
27
+ return 'unsupported';
28
+ }
29
+ }
30
+ exports.CopilotSDKChatServiceProvider = CopilotSDKChatServiceProvider;
31
+ //# sourceMappingURL=CopilotSDKChatServiceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopilotSDKChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/CopilotSDKChatServiceProvider.ts"],"names":[],"mappings":";;;AAKA,mEAKiC;AACjC,qCAAyD;AAEzD,MAAa,6BAA6B;IAGxC,YAAoB,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAElD,iBAAiB,CAAC,OAAqC;QACrD,IAAA,sCAA6B,EAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,IAAI,6CAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,eAAe;QACb,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,kBAAkB;QAChB,OAAO,CAAC,iDAAyB,CAAC,CAAC;IACrC,CAAC;IAED,eAAe;QACb,OAAO,iDAAyB,CAAC;IACnC,CAAC;IAED,cAAc;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB;QACnB,OAAO,aAAa,CAAC;IACvB,CAAC;CACF;AA7BD,sEA6BC"}
@@ -0,0 +1,19 @@
1
+ import { ChatService } from '../../ChatService';
2
+ import { CodexSDKChatServiceOptions, CodexSDKLoader } from './CodexSDKChatService';
3
+ import { CopilotSDKChatServiceOptions, CopilotSDKLoader } from './CopilotSDKChatService';
4
+ export { CodexSDKChatService, DEFAULT_CODEX_SDK_MODEL, type CodexSDKChatServiceOptions, type CodexSDKLoader, } from './CodexSDKChatService';
5
+ export { CodexSDKChatServiceProvider } from './CodexSDKChatServiceProvider';
6
+ export { CopilotSDKChatService, DEFAULT_COPILOT_SDK_MODEL, type CopilotSDKChatServiceOptions, type CopilotSDKLoader, } from './CopilotSDKChatService';
7
+ export { CopilotSDKChatServiceProvider } from './CopilotSDKChatServiceProvider';
8
+ export type AgentChatProviderName = 'copilot-sdk' | 'codex-sdk';
9
+ export type AgentChatServiceOptionsByProvider = {
10
+ 'copilot-sdk': CopilotSDKChatServiceOptions;
11
+ 'codex-sdk': CodexSDKChatServiceOptions;
12
+ };
13
+ export type RegisterAgentChatProvidersOptions = {
14
+ copilotSDKLoader?: CopilotSDKLoader;
15
+ codexSDKLoader?: CodexSDKLoader;
16
+ };
17
+ export declare function registerAgentChatProviders(options?: RegisterAgentChatProvidersOptions): void;
18
+ export declare function createAgentChatService<TProvider extends AgentChatProviderName>(providerName: TProvider, options: AgentChatServiceOptionsByProvider[TProvider]): ChatService;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhF,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,WAAW,CAAC;AAEhE,MAAM,MAAM,iCAAiC,GAAG;IAC9C,aAAa,EAAE,4BAA4B,CAAC;IAC5C,WAAW,EAAE,0BAA0B,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,iCAAsC,GAC9C,IAAI,CAON;AAED,wBAAgB,sBAAsB,CAAC,SAAS,SAAS,qBAAqB,EAC5E,YAAY,EAAE,SAAS,EACvB,OAAO,EAAE,iCAAiC,CAAC,SAAS,CAAC,GACpD,WAAW,CAKb"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CopilotSDKChatServiceProvider = exports.DEFAULT_COPILOT_SDK_MODEL = exports.CopilotSDKChatService = exports.CodexSDKChatServiceProvider = exports.DEFAULT_CODEX_SDK_MODEL = exports.CodexSDKChatService = void 0;
4
+ exports.registerAgentChatProviders = registerAgentChatProviders;
5
+ exports.createAgentChatService = createAgentChatService;
6
+ const ChatServiceFactory_1 = require("../../ChatServiceFactory");
7
+ const CodexSDKChatServiceProvider_1 = require("./CodexSDKChatServiceProvider");
8
+ const CopilotSDKChatServiceProvider_1 = require("./CopilotSDKChatServiceProvider");
9
+ var CodexSDKChatService_1 = require("./CodexSDKChatService");
10
+ Object.defineProperty(exports, "CodexSDKChatService", { enumerable: true, get: function () { return CodexSDKChatService_1.CodexSDKChatService; } });
11
+ Object.defineProperty(exports, "DEFAULT_CODEX_SDK_MODEL", { enumerable: true, get: function () { return CodexSDKChatService_1.DEFAULT_CODEX_SDK_MODEL; } });
12
+ var CodexSDKChatServiceProvider_2 = require("./CodexSDKChatServiceProvider");
13
+ Object.defineProperty(exports, "CodexSDKChatServiceProvider", { enumerable: true, get: function () { return CodexSDKChatServiceProvider_2.CodexSDKChatServiceProvider; } });
14
+ var CopilotSDKChatService_1 = require("./CopilotSDKChatService");
15
+ Object.defineProperty(exports, "CopilotSDKChatService", { enumerable: true, get: function () { return CopilotSDKChatService_1.CopilotSDKChatService; } });
16
+ Object.defineProperty(exports, "DEFAULT_COPILOT_SDK_MODEL", { enumerable: true, get: function () { return CopilotSDKChatService_1.DEFAULT_COPILOT_SDK_MODEL; } });
17
+ var CopilotSDKChatServiceProvider_2 = require("./CopilotSDKChatServiceProvider");
18
+ Object.defineProperty(exports, "CopilotSDKChatServiceProvider", { enumerable: true, get: function () { return CopilotSDKChatServiceProvider_2.CopilotSDKChatServiceProvider; } });
19
+ function registerAgentChatProviders(options = {}) {
20
+ ChatServiceFactory_1.ChatServiceFactory.registerProvider(new CopilotSDKChatServiceProvider_1.CopilotSDKChatServiceProvider(options.copilotSDKLoader));
21
+ ChatServiceFactory_1.ChatServiceFactory.registerProvider(new CodexSDKChatServiceProvider_1.CodexSDKChatServiceProvider(options.codexSDKLoader));
22
+ }
23
+ function createAgentChatService(providerName, options) {
24
+ return ChatServiceFactory_1.ChatServiceFactory.createChatService(providerName, options);
25
+ }
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/index.ts"],"names":[],"mappings":";;;AAwCA,gEASC;AAED,wDAQC;AA1DD,iEAA8D;AAC9D,+EAA4E;AAC5E,mFAAgF;AAUhF,6DAK+B;AAJ7B,0HAAA,mBAAmB,OAAA;AACnB,8HAAA,uBAAuB,OAAA;AAIzB,6EAA4E;AAAnE,0IAAA,2BAA2B,OAAA;AACpC,iEAKiC;AAJ/B,8HAAA,qBAAqB,OAAA;AACrB,kIAAA,yBAAyB,OAAA;AAI3B,iFAAgF;AAAvE,8IAAA,6BAA6B,OAAA;AActC,SAAgB,0BAA0B,CACxC,UAA6C,EAAE;IAE/C,uCAAkB,CAAC,gBAAgB,CACjC,IAAI,6DAA6B,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAC5D,CAAC;IACF,uCAAkB,CAAC,gBAAgB,CACjC,IAAI,yDAA2B,CAAC,OAAO,CAAC,cAAc,CAAC,CACxD,CAAC;AACJ,CAAC;AAED,SAAgB,sBAAsB,CACpC,YAAuB,EACvB,OAAqD;IAErD,OAAO,uCAAkB,CAAC,iBAAiB,CACzC,YAAmB,EACnB,OAAyC,CAC1C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { ChatResponseLength } from '../../../constants';
2
+ import { ChatService } from '../../ChatService';
3
+ import { Message, MessageWithVision, ToolChatCompletion } from '../../../types';
4
+ export type AgentBaseChatServiceOptions = {
5
+ /** Subscription agent providers use local/CLI auth, not API keys. */
6
+ apiKey?: never;
7
+ /** Model name passed to the underlying SDK when supported. */
8
+ model?: string;
9
+ /** Soft response length instruction for SDKs without max-token controls. */
10
+ responseLength?: ChatResponseLength;
11
+ };
12
+ export type AgentTextChatOptions = AgentBaseChatServiceOptions & {
13
+ provider: string;
14
+ defaultModel: string;
15
+ getResponse: (prompt: string, stream: boolean, onPartialResponse: (text: string) => void) => Promise<string>;
16
+ };
17
+ export declare class AgentTextChatService implements ChatService {
18
+ readonly provider: string;
19
+ private model;
20
+ private responseLength?;
21
+ private getResponse;
22
+ constructor(options: AgentTextChatOptions);
23
+ getModel(): string;
24
+ getVisionModel(): string;
25
+ processChat(messages: Message[], onPartialResponse: (text: string) => void, onCompleteResponse: (text: string) => Promise<void>): Promise<void>;
26
+ processVisionChat(_messages: MessageWithVision[], _onPartialResponse: (text: string) => void, _onCompleteResponse: (text: string) => Promise<void>): Promise<void>;
27
+ chatOnce(messages: Message[], stream?: boolean, onPartialResponse?: (text: string) => void, maxTokens?: number): Promise<ToolChatCompletion>;
28
+ visionChatOnce(_messages: MessageWithVision[], _stream?: boolean, _onPartialResponse?: (text: string) => void, _maxTokens?: number): Promise<ToolChatCompletion>;
29
+ }
30
+ export declare function rejectUnsupportedAgentOptions(providerName: string, options: {
31
+ apiKey?: unknown;
32
+ tools?: unknown;
33
+ mcpServers?: unknown;
34
+ }): void;
35
+ export declare function wrapAgentProviderError(providerName: string, error: unknown): Error;
36
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAwB,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEhF,MAAM,MAAM,2BAA2B,GAAG;IACxC,qEAAqE;IACrE,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,2BAA2B,GAAG;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EACf,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KACtC,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB,CAAC;AAEF,qBAAa,oBAAqB,YAAW,WAAW;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAC,CAAqB;IAC5C,OAAO,CAAC,WAAW,CAAsC;gBAE7C,OAAO,EAAE,oBAAoB;IAOzC,QAAQ,IAAI,MAAM;IAIlB,cAAc,IAAI,MAAM;IAIlB,WAAW,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IAQV,iBAAiB,CACrB,SAAS,EAAE,iBAAiB,EAAE,EAC9B,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC1C,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACnD,OAAO,CAAC,IAAI,CAAC;IAIV,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,GAAE,OAAc,EACtB,iBAAiB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EACpD,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC;IAcxB,cAAc,CAClB,SAAS,EAAE,iBAAiB,EAAE,EAC9B,OAAO,GAAE,OAAe,EACxB,kBAAkB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EACrD,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC;CAG/B;AAED,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACnE,IAAI,CAcN;AAED,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,GACb,KAAK,CAcP"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentTextChatService = void 0;
4
+ exports.rejectUnsupportedAgentOptions = rejectUnsupportedAgentOptions;
5
+ exports.wrapAgentProviderError = wrapAgentProviderError;
6
+ const constants_1 = require("../../../constants");
7
+ class AgentTextChatService {
8
+ constructor(options) {
9
+ this.provider = options.provider;
10
+ this.model = options.model ?? options.defaultModel;
11
+ this.responseLength = options.responseLength;
12
+ this.getResponse = options.getResponse;
13
+ }
14
+ getModel() {
15
+ return this.model;
16
+ }
17
+ getVisionModel() {
18
+ return this.model;
19
+ }
20
+ async processChat(messages, onPartialResponse, onCompleteResponse) {
21
+ const result = await this.chatOnce(messages, true, onPartialResponse);
22
+ const text = result.blocks
23
+ .map((block) => (block.type === 'text' ? block.text : ''))
24
+ .join('');
25
+ await onCompleteResponse(text);
26
+ }
27
+ async processVisionChat(_messages, _onPartialResponse, _onCompleteResponse) {
28
+ throw new Error(`${this.provider} does not support vision chat yet.`);
29
+ }
30
+ async chatOnce(messages, stream = true, onPartialResponse = () => { }, maxTokens) {
31
+ const prompt = buildTextPrompt(messages, this.responseLength, maxTokens);
32
+ const text = await this.getResponse(prompt, stream, onPartialResponse);
33
+ if (!stream) {
34
+ onPartialResponse(text);
35
+ }
36
+ return {
37
+ blocks: [{ type: 'text', text }],
38
+ stop_reason: 'end',
39
+ };
40
+ }
41
+ async visionChatOnce(_messages, _stream = false, _onPartialResponse = () => { }, _maxTokens) {
42
+ throw new Error(`${this.provider} does not support vision chat yet.`);
43
+ }
44
+ }
45
+ exports.AgentTextChatService = AgentTextChatService;
46
+ function rejectUnsupportedAgentOptions(providerName, options) {
47
+ if (options.apiKey !== undefined) {
48
+ throw new Error(`${providerName} provider does not accept apiKey.`);
49
+ }
50
+ if (options.tools !== undefined) {
51
+ throw new Error(`${providerName} provider does not support tools yet.`);
52
+ }
53
+ if (options.mcpServers !== undefined) {
54
+ throw new Error(`${providerName} provider does not support mcpServers yet.`);
55
+ }
56
+ }
57
+ function wrapAgentProviderError(providerName, error) {
58
+ if (error instanceof Error && error.message.includes(' provider requires ')) {
59
+ return error;
60
+ }
61
+ const detail = stringifyError(error);
62
+ const authHint = isLikelyAuthError(detail)
63
+ ? ' This looks like an authentication or subscription permission failure.'
64
+ : '';
65
+ const wrappedError = new Error(`${providerName} provider failed.${authHint}\n\nOriginal error:\n${detail}`);
66
+ wrappedError.cause = error;
67
+ return wrappedError;
68
+ }
69
+ function buildTextPrompt(messages, responseLength, maxTokens) {
70
+ const parts = [];
71
+ const lengthInstruction = buildLengthInstruction(responseLength, maxTokens);
72
+ if (lengthInstruction) {
73
+ parts.push(lengthInstruction);
74
+ }
75
+ parts.push(...messages.map((message) => {
76
+ const label = toRoleLabel(message.role);
77
+ return `${label}: ${message.content}`;
78
+ }));
79
+ return parts.join('\n\n');
80
+ }
81
+ function buildLengthInstruction(responseLength, maxTokens) {
82
+ const tokenLimit = maxTokens ??
83
+ (responseLength !== undefined
84
+ ? constants_1.MAX_TOKENS_BY_LENGTH[responseLength]
85
+ : undefined);
86
+ if (!tokenLimit) {
87
+ return undefined;
88
+ }
89
+ return `Please keep your response within approximately ${tokenLimit} tokens.`;
90
+ }
91
+ function toRoleLabel(role) {
92
+ switch (role) {
93
+ case 'system':
94
+ return 'System';
95
+ case 'assistant':
96
+ return 'Assistant';
97
+ case 'tool':
98
+ return 'Tool';
99
+ case 'user':
100
+ return 'User';
101
+ }
102
+ }
103
+ function stringifyError(error) {
104
+ if (error instanceof Error) {
105
+ return [error.name, error.message, error.stack]
106
+ .filter((value) => Boolean(value))
107
+ .join('\n');
108
+ }
109
+ if (typeof error === 'string') {
110
+ return error;
111
+ }
112
+ try {
113
+ return JSON.stringify(error, null, 2);
114
+ }
115
+ catch {
116
+ return String(error);
117
+ }
118
+ }
119
+ function isLikelyAuthError(detail) {
120
+ return /auth|login|log in|logged in|unauthori[sz]ed|forbidden|permission|subscription|credential|token|401|403/i.test(detail);
121
+ }
122
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './index';
2
+ export * from './services/providers/agent';
3
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './index';
2
+ export * from './services/providers/agent';
3
+ import { registerAgentChatProviders } from './services/providers/agent';
4
+ registerAgentChatProviders();
5
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,0BAA0B,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { ChatResponseLength } from '../../../constants';
2
+ import { AgentTextChatService } from './shared';
3
+ export declare const DEFAULT_CODEX_SDK_MODEL = "codex-default";
4
+ type CodexSDKModule = {
5
+ Codex: new (options?: Record<string, unknown>) => CodexClient;
6
+ };
7
+ type CodexClient = {
8
+ startThread(options?: Record<string, unknown>): Promise<CodexThread>;
9
+ };
10
+ type CodexThread = {
11
+ run(prompt: string): Promise<CodexTurn>;
12
+ };
13
+ type CodexTurn = {
14
+ finalResponse?: unknown;
15
+ };
16
+ export type CodexSDKLoader = () => Promise<CodexSDKModule>;
17
+ export type CodexSDKChatServiceOptions = {
18
+ apiKey?: never;
19
+ model?: string;
20
+ responseLength?: ChatResponseLength;
21
+ workingDirectory?: string;
22
+ skipGitRepoCheck?: boolean;
23
+ config?: Record<string, unknown>;
24
+ };
25
+ export declare class CodexSDKChatService extends AgentTextChatService {
26
+ constructor(options?: CodexSDKChatServiceOptions, loadSDK?: CodexSDKLoader);
27
+ }
28
+ export {};
29
+ //# sourceMappingURL=CodexSDKChatService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodexSDKChatService.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/CodexSDKChatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAA0B,MAAM,UAAU,CAAC;AAExE,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AAEvD,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,KAAK,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,WAAW,CAAC;CAC/D,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACtE,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACzC,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;AAE3D,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,qBAAa,mBAAoB,SAAQ,oBAAoB;gBAEzD,OAAO,GAAE,0BAA+B,EACxC,OAAO,GAAE,cAA6B;CAsBzC"}
@@ -0,0 +1,61 @@
1
+ import { AgentTextChatService, wrapAgentProviderError } from './shared';
2
+ export const DEFAULT_CODEX_SDK_MODEL = 'codex-default';
3
+ export class CodexSDKChatService extends AgentTextChatService {
4
+ constructor(options = {}, loadSDK = loadCodexSDK) {
5
+ const model = options.model ?? DEFAULT_CODEX_SDK_MODEL;
6
+ super({
7
+ provider: 'codex-sdk',
8
+ model,
9
+ defaultModel: DEFAULT_CODEX_SDK_MODEL,
10
+ responseLength: options.responseLength,
11
+ getResponse: async (prompt, stream, onPartialResponse) => {
12
+ try {
13
+ const text = await runCodexPrompt(loadSDK, model, options, prompt);
14
+ if (stream) {
15
+ onPartialResponse(text);
16
+ }
17
+ return text;
18
+ }
19
+ catch (error) {
20
+ throw wrapAgentProviderError('codex-sdk', error);
21
+ }
22
+ },
23
+ });
24
+ }
25
+ }
26
+ async function runCodexPrompt(loadSDK, model, options, prompt) {
27
+ const { Codex } = await loadSDK();
28
+ const codex = new Codex({
29
+ config: {
30
+ ...options.config,
31
+ ...(options.model ? { model } : {}),
32
+ },
33
+ });
34
+ const thread = await codex.startThread({
35
+ ...(options.workingDirectory
36
+ ? { workingDirectory: options.workingDirectory }
37
+ : {}),
38
+ ...(options.skipGitRepoCheck !== undefined
39
+ ? { skipGitRepoCheck: options.skipGitRepoCheck }
40
+ : {}),
41
+ });
42
+ const turn = await thread.run(prompt);
43
+ if (typeof turn.finalResponse !== 'string') {
44
+ throw new Error('codex-sdk provider received an empty response.');
45
+ }
46
+ return turn.finalResponse;
47
+ }
48
+ async function loadCodexSDK() {
49
+ try {
50
+ return (await dynamicImport('@openai/codex-sdk'));
51
+ }
52
+ catch (error) {
53
+ const message = 'codex-sdk provider requires @openai/codex-sdk. ' +
54
+ 'Install it in your Node.js project and authenticate with Codex.';
55
+ const wrappedError = new Error(message);
56
+ wrappedError.cause = error;
57
+ throw wrappedError;
58
+ }
59
+ }
60
+ const dynamicImport = new Function('specifier', 'return import(specifier)');
61
+ //# sourceMappingURL=CodexSDKChatService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodexSDKChatService.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/CodexSDKChatService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAExE,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC;AA6BvD,MAAM,OAAO,mBAAoB,SAAQ,oBAAoB;IAC3D,YACE,UAAsC,EAAE,EACxC,UAA0B,YAAY;QAEtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,uBAAuB,CAAC;QAEvD,KAAK,CAAC;YACJ,QAAQ,EAAE,WAAW;YACrB,KAAK;YACL,YAAY,EAAE,uBAAuB;YACrC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE;gBACvD,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACnE,IAAI,MAAM,EAAE,CAAC;wBACX,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAC1B,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,sBAAsB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAED,KAAK,UAAU,cAAc,CAC3B,OAAuB,EACvB,KAAa,EACb,OAAmC,EACnC,MAAc;IAEd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,MAAM,EAAE;YACN,GAAG,OAAO,CAAC,MAAM;YACjB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC;KACF,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC;QACrC,GAAG,CAAC,OAAO,CAAC,gBAAgB;YAC1B,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;YAChD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;YAChD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEtC,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,IAAI,CAAC,aAAa,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,aAAa,CAAC,mBAAmB,CAAC,CAAmB,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GACX,iDAAiD;YACjD,iEAAiE,CAAC;QACpE,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,YAAoC,CAAC,KAAK,GAAG,KAAK,CAAC;QACpD,MAAM,YAAY,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAErD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { ChatService } from '../../ChatService';
2
+ import { ChatServiceProvider, VisionSupportLevel } from '../ChatServiceProvider';
3
+ import { CodexSDKChatServiceOptions, CodexSDKLoader } from './CodexSDKChatService';
4
+ export declare class CodexSDKChatServiceProvider implements ChatServiceProvider<CodexSDKChatServiceOptions> {
5
+ private loadSDK?;
6
+ constructor(loadSDK?: CodexSDKLoader | undefined);
7
+ createChatService(options: CodexSDKChatServiceOptions): ChatService;
8
+ getProviderName(): string;
9
+ getSupportedModels(): string[];
10
+ getDefaultModel(): string;
11
+ supportsVision(): boolean;
12
+ getVisionSupportLevel(): VisionSupportLevel;
13
+ }
14
+ //# sourceMappingURL=CodexSDKChatServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodexSDKChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/CodexSDKChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,0BAA0B,EAC1B,cAAc,EAEf,MAAM,uBAAuB,CAAC;AAG/B,qBAAa,2BACX,YAAW,mBAAmB,CAAC,0BAA0B,CAAC;IAE9C,OAAO,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,cAAc,YAAA;IAE5C,iBAAiB,CAAC,OAAO,EAAE,0BAA0B,GAAG,WAAW;IAKnE,eAAe,IAAI,MAAM;IAIzB,kBAAkB,IAAI,MAAM,EAAE;IAI9B,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,OAAO;IAIzB,qBAAqB,IAAI,kBAAkB;CAG5C"}
@@ -0,0 +1,27 @@
1
+ import { CodexSDKChatService, DEFAULT_CODEX_SDK_MODEL, } from './CodexSDKChatService';
2
+ import { rejectUnsupportedAgentOptions } from './shared';
3
+ export class CodexSDKChatServiceProvider {
4
+ constructor(loadSDK) {
5
+ this.loadSDK = loadSDK;
6
+ }
7
+ createChatService(options) {
8
+ rejectUnsupportedAgentOptions(this.getProviderName(), options);
9
+ return new CodexSDKChatService(options, this.loadSDK);
10
+ }
11
+ getProviderName() {
12
+ return 'codex-sdk';
13
+ }
14
+ getSupportedModels() {
15
+ return [DEFAULT_CODEX_SDK_MODEL];
16
+ }
17
+ getDefaultModel() {
18
+ return DEFAULT_CODEX_SDK_MODEL;
19
+ }
20
+ supportsVision() {
21
+ return false;
22
+ }
23
+ getVisionSupportLevel() {
24
+ return 'unsupported';
25
+ }
26
+ }
27
+ //# sourceMappingURL=CodexSDKChatServiceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodexSDKChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/CodexSDKChatServiceProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,mBAAmB,EAGnB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AAEzD,MAAM,OAAO,2BAA2B;IAGtC,YAAoB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEhD,iBAAiB,CAAC,OAAmC;QACnD,6BAA6B,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,eAAe;QACb,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,kBAAkB;QAChB,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACnC,CAAC;IAED,eAAe;QACb,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,cAAc;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB;QACnB,OAAO,aAAa,CAAC;IACvB,CAAC;CACF"}