@antseed/cli 0.1.132 → 0.1.133

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 (157) hide show
  1. package/README.md +12 -1
  2. package/dist/cli/commands/buyer/channel-withdraw.d.ts +7 -0
  3. package/dist/cli/commands/buyer/channel-withdraw.d.ts.map +1 -0
  4. package/dist/cli/commands/buyer/channel-withdraw.js +178 -0
  5. package/dist/cli/commands/buyer/channel-withdraw.js.map +1 -0
  6. package/dist/cli/commands/buyer/channel-withdraw.test.d.ts +2 -0
  7. package/dist/cli/commands/buyer/channel-withdraw.test.d.ts.map +1 -0
  8. package/dist/cli/commands/buyer/channel-withdraw.test.js +45 -0
  9. package/dist/cli/commands/buyer/channel-withdraw.test.js.map +1 -0
  10. package/dist/cli/commands/buyer/channels.d.ts.map +1 -1
  11. package/dist/cli/commands/buyer/channels.js +60 -52
  12. package/dist/cli/commands/buyer/channels.js.map +1 -1
  13. package/dist/cli/commands/buyer/emissions.d.ts +3 -0
  14. package/dist/cli/commands/buyer/emissions.d.ts.map +1 -0
  15. package/dist/cli/commands/buyer/emissions.js +5 -0
  16. package/dist/cli/commands/buyer/emissions.js.map +1 -0
  17. package/dist/cli/commands/buyer/index.d.ts.map +1 -1
  18. package/dist/cli/commands/buyer/index.js +4 -0
  19. package/dist/cli/commands/buyer/index.js.map +1 -1
  20. package/dist/cli/commands/buyer/start.d.ts +1 -0
  21. package/dist/cli/commands/buyer/start.d.ts.map +1 -1
  22. package/dist/cli/commands/buyer/start.js +16 -0
  23. package/dist/cli/commands/buyer/start.js.map +1 -1
  24. package/dist/cli/commands/buyer/start.test.js +2 -0
  25. package/dist/cli/commands/buyer/start.test.js.map +1 -1
  26. package/dist/cli/commands/buyer/sweep.d.ts +3 -0
  27. package/dist/cli/commands/buyer/sweep.d.ts.map +1 -0
  28. package/dist/cli/commands/buyer/sweep.js +332 -0
  29. package/dist/cli/commands/buyer/sweep.js.map +1 -0
  30. package/dist/cli/commands/buyer/sweep.test.d.ts +2 -0
  31. package/dist/cli/commands/buyer/sweep.test.d.ts.map +1 -0
  32. package/dist/cli/commands/buyer/sweep.test.js +46 -0
  33. package/dist/cli/commands/buyer/sweep.test.js.map +1 -0
  34. package/dist/cli/commands/emissions.d.ts +10 -0
  35. package/dist/cli/commands/emissions.d.ts.map +1 -0
  36. package/dist/cli/commands/emissions.js +91 -0
  37. package/dist/cli/commands/emissions.js.map +1 -0
  38. package/dist/cli/commands/emissions.test.d.ts +2 -0
  39. package/dist/cli/commands/emissions.test.d.ts.map +1 -0
  40. package/dist/cli/commands/emissions.test.js +16 -0
  41. package/dist/cli/commands/emissions.test.js.map +1 -0
  42. package/dist/cli/commands/seller/emissions.d.ts.map +1 -1
  43. package/dist/cli/commands/seller/emissions.js +2 -77
  44. package/dist/cli/commands/seller/emissions.js.map +1 -1
  45. package/dist/cli/commands/seller/start.d.ts.map +1 -1
  46. package/dist/cli/commands/seller/start.js +5 -0
  47. package/dist/cli/commands/seller/start.js.map +1 -1
  48. package/dist/cli/commands/system-proxy/index.d.ts +3 -0
  49. package/dist/cli/commands/system-proxy/index.d.ts.map +1 -0
  50. package/dist/cli/commands/system-proxy/index.js +14 -0
  51. package/dist/cli/commands/system-proxy/index.js.map +1 -0
  52. package/dist/cli/commands/system-proxy/install-ca.d.ts +3 -0
  53. package/dist/cli/commands/system-proxy/install-ca.d.ts.map +1 -0
  54. package/dist/cli/commands/system-proxy/install-ca.js +43 -0
  55. package/dist/cli/commands/system-proxy/install-ca.js.map +1 -0
  56. package/dist/cli/commands/system-proxy/start.d.ts +3 -0
  57. package/dist/cli/commands/system-proxy/start.d.ts.map +1 -0
  58. package/dist/cli/commands/system-proxy/start.js +151 -0
  59. package/dist/cli/commands/system-proxy/start.js.map +1 -0
  60. package/dist/cli/commands/system-proxy/status.d.ts +3 -0
  61. package/dist/cli/commands/system-proxy/status.d.ts.map +1 -0
  62. package/dist/cli/commands/system-proxy/status.js +60 -0
  63. package/dist/cli/commands/system-proxy/status.js.map +1 -0
  64. package/dist/cli/commands/system-proxy/stop.d.ts +3 -0
  65. package/dist/cli/commands/system-proxy/stop.d.ts.map +1 -0
  66. package/dist/cli/commands/system-proxy/stop.js +71 -0
  67. package/dist/cli/commands/system-proxy/stop.js.map +1 -0
  68. package/dist/cli/index.js +2 -0
  69. package/dist/cli/index.js.map +1 -1
  70. package/dist/cli/payment-utils.d.ts +7 -1
  71. package/dist/cli/payment-utils.d.ts.map +1 -1
  72. package/dist/cli/payment-utils.js +20 -1
  73. package/dist/cli/payment-utils.js.map +1 -1
  74. package/dist/config/defaults.d.ts.map +1 -1
  75. package/dist/config/defaults.js +5 -1
  76. package/dist/config/defaults.js.map +1 -1
  77. package/dist/config/effective.d.ts +1 -0
  78. package/dist/config/effective.d.ts.map +1 -1
  79. package/dist/config/effective.js +18 -0
  80. package/dist/config/effective.js.map +1 -1
  81. package/dist/config/effective.test.js +10 -0
  82. package/dist/config/effective.test.js.map +1 -1
  83. package/dist/config/loader.d.ts.map +1 -1
  84. package/dist/config/loader.js +9 -0
  85. package/dist/config/loader.js.map +1 -1
  86. package/dist/config/loader.test.js +31 -0
  87. package/dist/config/loader.test.js.map +1 -1
  88. package/dist/config/types.d.ts +20 -0
  89. package/dist/config/types.d.ts.map +1 -1
  90. package/dist/config/validation.d.ts.map +1 -1
  91. package/dist/config/validation.js +17 -0
  92. package/dist/config/validation.js.map +1 -1
  93. package/dist/proxy/buyer-proxy.d.ts +2 -0
  94. package/dist/proxy/buyer-proxy.d.ts.map +1 -1
  95. package/dist/proxy/buyer-proxy.js +89 -16
  96. package/dist/proxy/buyer-proxy.js.map +1 -1
  97. package/dist/proxy/buyer-proxy.test.js +190 -1
  98. package/dist/proxy/buyer-proxy.test.js.map +1 -1
  99. package/dist/proxy/request-utils.d.ts +1 -1
  100. package/dist/proxy/request-utils.d.ts.map +1 -1
  101. package/dist/proxy/request-utils.js +9 -3
  102. package/dist/proxy/request-utils.js.map +1 -1
  103. package/dist/proxy/service-api-adapter.d.ts +2 -2
  104. package/dist/proxy/service-api-adapter.d.ts.map +1 -1
  105. package/dist/proxy/service-api-adapter.js +1 -1
  106. package/dist/proxy/service-api-adapter.js.map +1 -1
  107. package/dist/proxy/service-api-adapter.test.js +21 -12
  108. package/dist/proxy/service-api-adapter.test.js.map +1 -1
  109. package/dist/system-proxy/ca-manager.d.ts +21 -0
  110. package/dist/system-proxy/ca-manager.d.ts.map +1 -0
  111. package/dist/system-proxy/ca-manager.js +112 -0
  112. package/dist/system-proxy/ca-manager.js.map +1 -0
  113. package/dist/system-proxy/ca-manager.test.d.ts +2 -0
  114. package/dist/system-proxy/ca-manager.test.d.ts.map +1 -0
  115. package/dist/system-proxy/ca-manager.test.js +64 -0
  116. package/dist/system-proxy/ca-manager.test.js.map +1 -0
  117. package/dist/system-proxy/cert-cache.d.ts +16 -0
  118. package/dist/system-proxy/cert-cache.d.ts.map +1 -0
  119. package/dist/system-proxy/cert-cache.js +69 -0
  120. package/dist/system-proxy/cert-cache.js.map +1 -0
  121. package/dist/system-proxy/cert-cache.test.d.ts +2 -0
  122. package/dist/system-proxy/cert-cache.test.d.ts.map +1 -0
  123. package/dist/system-proxy/cert-cache.test.js +52 -0
  124. package/dist/system-proxy/cert-cache.test.js.map +1 -0
  125. package/dist/system-proxy/index.d.ts +11 -0
  126. package/dist/system-proxy/index.d.ts.map +1 -0
  127. package/dist/system-proxy/index.js +7 -0
  128. package/dist/system-proxy/index.js.map +1 -0
  129. package/dist/system-proxy/node-hook.d.ts +3 -0
  130. package/dist/system-proxy/node-hook.d.ts.map +1 -0
  131. package/dist/system-proxy/node-hook.js +27 -0
  132. package/dist/system-proxy/node-hook.js.map +1 -0
  133. package/dist/system-proxy/profiles.d.ts +13 -0
  134. package/dist/system-proxy/profiles.d.ts.map +1 -0
  135. package/dist/system-proxy/profiles.js +150 -0
  136. package/dist/system-proxy/profiles.js.map +1 -0
  137. package/dist/system-proxy/profiles.test.d.ts +2 -0
  138. package/dist/system-proxy/profiles.test.d.ts.map +1 -0
  139. package/dist/system-proxy/profiles.test.js +66 -0
  140. package/dist/system-proxy/profiles.test.js.map +1 -0
  141. package/dist/system-proxy/proxy-server.d.ts +98 -0
  142. package/dist/system-proxy/proxy-server.d.ts.map +1 -0
  143. package/dist/system-proxy/proxy-server.js +977 -0
  144. package/dist/system-proxy/proxy-server.js.map +1 -0
  145. package/dist/system-proxy/proxy-server.test.d.ts +2 -0
  146. package/dist/system-proxy/proxy-server.test.d.ts.map +1 -0
  147. package/dist/system-proxy/proxy-server.test.js +778 -0
  148. package/dist/system-proxy/proxy-server.test.js.map +1 -0
  149. package/dist/system-proxy/system-proxy.d.ts +25 -0
  150. package/dist/system-proxy/system-proxy.d.ts.map +1 -0
  151. package/dist/system-proxy/system-proxy.js +152 -0
  152. package/dist/system-proxy/system-proxy.js.map +1 -0
  153. package/dist/system-proxy/types.d.ts +69 -0
  154. package/dist/system-proxy/types.d.ts.map +1 -0
  155. package/dist/system-proxy/types.js +2 -0
  156. package/dist/system-proxy/types.js.map +1 -0
  157. package/package.json +7 -5
@@ -0,0 +1,150 @@
1
+ import { readFileSync } from 'node:fs';
2
+ const PROFILES_JSON_ENV = 'ANTSEED_SYSTEM_PROXY_PROFILES_JSON';
3
+ const PROFILES_FILE_ENV = 'ANTSEED_SYSTEM_PROXY_PROFILES_FILE';
4
+ export function loadSystemProxyProfiles(env = process.env) {
5
+ const raw = env[PROFILES_JSON_ENV]?.trim()
6
+ || (env[PROFILES_FILE_ENV]?.trim()
7
+ ? readFileSync(env[PROFILES_FILE_ENV].trim(), 'utf8')
8
+ : '');
9
+ if (!raw)
10
+ return [];
11
+ const parsed = JSON.parse(raw);
12
+ if (!Array.isArray(parsed)) {
13
+ throw new Error(`${PROFILES_JSON_ENV} / ${PROFILES_FILE_ENV} must define a JSON array of profiles`);
14
+ }
15
+ return parsed.map((profile, index) => normalizeProfile(profile, index));
16
+ }
17
+ export const CONFIGURED_PROFILES = loadSystemProxyProfiles();
18
+ function normalizeProfile(value, index) {
19
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
20
+ throw new Error(`System Proxy profile at index ${index} must be an object`);
21
+ }
22
+ const raw = value;
23
+ const name = requiredString(raw, 'name', index);
24
+ const displayName = optionalString(raw, 'displayName') ?? `Tool ${index + 1}`;
25
+ const kind = raw['kind'] === 'config-patch' ? 'config-patch' : 'proxy';
26
+ const domains = stringArray(raw['domains']);
27
+ const pathPrefixes = stringArray(raw['pathPrefixes']);
28
+ const forward = normalizeForward(raw['forward'], name);
29
+ const configPatch = normalizeConfigPatch(raw['configPatch'], name);
30
+ return {
31
+ name,
32
+ displayName,
33
+ kind,
34
+ domains,
35
+ pathPrefixes,
36
+ ...(forward ? { forward } : {}),
37
+ ...(configPatch ? { configPatch } : {}),
38
+ };
39
+ }
40
+ function normalizeForward(value, profileName) {
41
+ if (value === undefined)
42
+ return undefined;
43
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
44
+ throw new Error(`forward for ${profileName} must be an object`);
45
+ }
46
+ const raw = value;
47
+ const source = optionalString(raw, 'source') ?? profileName;
48
+ return {
49
+ source,
50
+ ...(optionalString(raw, 'targetPath') ? { targetPath: optionalString(raw, 'targetPath') } : {}),
51
+ ...(raw['headers'] === 'browser-sse' || raw['headers'] === 'preserve' ? { headers: raw['headers'] } : {}),
52
+ ...(Array.isArray(raw['stripHeaders']) ? { stripHeaders: stringArray(raw['stripHeaders']) } : {}),
53
+ ...(raw['request'] && typeof raw['request'] === 'object' && !Array.isArray(raw['request']) ? { request: raw['request'] } : {}),
54
+ ...(raw['response'] && typeof raw['response'] === 'object' && !Array.isArray(raw['response']) ? { response: raw['response'] } : {}),
55
+ ...(raw['cors'] && typeof raw['cors'] === 'object' && !Array.isArray(raw['cors']) ? { cors: raw['cors'] } : {}),
56
+ };
57
+ }
58
+ function normalizeConfigPatch(value, profileName) {
59
+ if (value === undefined)
60
+ return undefined;
61
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
62
+ throw new Error(`configPatch for ${profileName} must be an object`);
63
+ }
64
+ const raw = value;
65
+ return {
66
+ configPath: requiredString(raw, 'configPath', profileName),
67
+ providerKey: requiredString(raw, 'providerKey', profileName),
68
+ npm: requiredString(raw, 'npm', profileName),
69
+ providerName: requiredString(raw, 'providerName', profileName),
70
+ baseURL: requiredString(raw, 'baseURL', profileName),
71
+ modelFormat: 'peer-routed',
72
+ };
73
+ }
74
+ function requiredString(raw, key, context) {
75
+ const value = raw[key];
76
+ if (typeof value !== 'string' || value.trim().length === 0) {
77
+ throw new Error(`System Proxy profile ${context} requires a non-empty ${key}`);
78
+ }
79
+ return value.trim();
80
+ }
81
+ function optionalString(raw, key) {
82
+ const value = raw[key];
83
+ return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;
84
+ }
85
+ function stringArray(value) {
86
+ if (!Array.isArray(value))
87
+ return [];
88
+ return value
89
+ .filter((item) => typeof item === 'string')
90
+ .map((item) => item.trim())
91
+ .filter((item) => item.length > 0);
92
+ }
93
+ export function findProfile(name) {
94
+ return CONFIGURED_PROFILES.find((p) => p.name === name);
95
+ }
96
+ export function isConfigPatchProfile(name) {
97
+ return findProfile(name)?.kind === 'config-patch';
98
+ }
99
+ export function partitionProfiles(profileNames) {
100
+ const proxy = [];
101
+ const configPatch = [];
102
+ for (const name of profileNames) {
103
+ if (isConfigPatchProfile(name))
104
+ configPatch.push(name);
105
+ else
106
+ proxy.push(name);
107
+ }
108
+ return { proxy, configPatch };
109
+ }
110
+ export function resolveProxiedDomains(profileNames) {
111
+ const domains = new Set();
112
+ for (const name of profileNames) {
113
+ const profile = findProfile(name);
114
+ if (!profile || profile.kind === 'config-patch')
115
+ continue;
116
+ for (const domain of profile.domains) {
117
+ domains.add(domain);
118
+ }
119
+ }
120
+ return domains;
121
+ }
122
+ export function resolveProxiedPathPrefixes(profileNames) {
123
+ const prefixesByDomain = new Map();
124
+ for (const name of profileNames) {
125
+ const profile = findProfile(name);
126
+ if (!profile || profile.kind === 'config-patch')
127
+ continue;
128
+ for (const domain of profile.domains) {
129
+ const prefixes = prefixesByDomain.get(domain) ?? new Set();
130
+ for (const prefix of profile.pathPrefixes) {
131
+ prefixes.add(prefix);
132
+ }
133
+ prefixesByDomain.set(domain, prefixes);
134
+ }
135
+ }
136
+ return prefixesByDomain;
137
+ }
138
+ export function resolveSystemProxyForwardRules(profileNames) {
139
+ const rulesByDomain = new Map();
140
+ for (const name of profileNames) {
141
+ const profile = findProfile(name);
142
+ if (!profile?.forward || profile.kind === 'config-patch')
143
+ continue;
144
+ for (const domain of profile.domains) {
145
+ rulesByDomain.set(domain, profile.forward);
146
+ }
147
+ }
148
+ return rulesByDomain;
149
+ }
150
+ //# sourceMappingURL=profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/system-proxy/profiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=profiles.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.test.d.ts","sourceRoot":"","sources":["../../src/system-proxy/profiles.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import assert from 'node:assert/strict';
2
+ import { mkdtemp, rm, writeFile } from 'node:fs/promises';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import test from 'node:test';
6
+ import { loadSystemProxyProfiles } from './profiles.js';
7
+ const PROFILE_FIXTURE = [
8
+ {
9
+ name: 'api-client',
10
+ displayName: 'API client',
11
+ domains: ['api-client.example.test'],
12
+ pathPrefixes: ['/v1/messages'],
13
+ },
14
+ {
15
+ name: 'browser-client',
16
+ displayName: 'Browser client',
17
+ domains: ['browser-client.example.test'],
18
+ pathPrefixes: ['/profile-api/conversation'],
19
+ forward: {
20
+ source: 'browser-client',
21
+ targetPath: '/v1/chat/completions',
22
+ headers: 'browser-sse',
23
+ request: {
24
+ kind: 'chat-completions-from-messages',
25
+ messagesPath: ['messages'],
26
+ modelPath: ['model'],
27
+ missingModel: 'auto',
28
+ stream: true,
29
+ },
30
+ response: {
31
+ kind: 'conversation-sse',
32
+ assistantParent: 'user-message',
33
+ },
34
+ },
35
+ },
36
+ ];
37
+ test('loadSystemProxyProfiles returns empty when no local profile config is set', () => {
38
+ const profiles = loadSystemProxyProfiles({});
39
+ assert.deepEqual(profiles, []);
40
+ });
41
+ test('loadSystemProxyProfiles parses profiles from JSON env', () => {
42
+ const profiles = loadSystemProxyProfiles({
43
+ ANTSEED_SYSTEM_PROXY_PROFILES_JSON: JSON.stringify(PROFILE_FIXTURE),
44
+ });
45
+ assert.equal(profiles.length, 2);
46
+ assert.equal(profiles[0]?.name, 'api-client');
47
+ assert.equal(profiles[0]?.displayName, 'API client');
48
+ assert.deepEqual(profiles[0]?.domains, ['api-client.example.test']);
49
+ assert.equal(profiles[1]?.forward?.response?.kind, 'conversation-sse');
50
+ });
51
+ test('loadSystemProxyProfiles parses profiles from JSON file', async () => {
52
+ const dir = await mkdtemp(join(tmpdir(), 'antseed-profiles-test-'));
53
+ try {
54
+ const file = join(dir, 'profiles.json');
55
+ await writeFile(file, JSON.stringify(PROFILE_FIXTURE), 'utf8');
56
+ const profiles = loadSystemProxyProfiles({
57
+ ANTSEED_SYSTEM_PROXY_PROFILES_FILE: file,
58
+ });
59
+ assert.equal(profiles.length, 2);
60
+ assert.equal(profiles[1]?.name, 'browser-client');
61
+ }
62
+ finally {
63
+ await rm(dir, { recursive: true, force: true });
64
+ }
65
+ });
66
+ //# sourceMappingURL=profiles.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.test.js","sourceRoot":"","sources":["../../src/system-proxy/profiles.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import type { CertCache } from './cert-cache.js';
2
+ import type { SystemProxyForwardRule, SystemProxyRequestTransform, SystemProxyResponseTransform, SystemProxySource } from './types.js';
3
+ export interface BuyerForwardRequest {
4
+ path: string;
5
+ body: Buffer;
6
+ source: SystemProxySource;
7
+ response?: SystemProxyResponseTransform;
8
+ conversation?: ConversationForwardContext;
9
+ }
10
+ export interface ConversationForwardContext {
11
+ conversationId: string;
12
+ parentMessageId: string;
13
+ userMessageId: string;
14
+ assistantMessageId: string;
15
+ assistantParent?: 'request-parent' | 'user-message';
16
+ assistantCreateTime?: number;
17
+ modelSlug?: string;
18
+ }
19
+ export interface SystemProxyConfig {
20
+ port: number;
21
+ buyerProxyPort: number;
22
+ certCache: CertCache;
23
+ proxiedDomains: Set<string>;
24
+ proxiedPathPrefixes: Map<string, Set<string>>;
25
+ systemProxyForwardRules?: Map<string, SystemProxyForwardRule>;
26
+ defaultPeerId: string;
27
+ defaultModel?: string;
28
+ servedModels?: Set<string>;
29
+ upstreamOverrides?: Map<string, {
30
+ host: string;
31
+ port: number;
32
+ }>;
33
+ }
34
+ export declare class SystemProxyServer {
35
+ private readonly config;
36
+ private outerServer;
37
+ private innerNetServer;
38
+ private innerTlsServer;
39
+ private readonly sockets;
40
+ private innerPort;
41
+ constructor(config: SystemProxyConfig);
42
+ start(): Promise<void>;
43
+ get port(): number;
44
+ get innerTlsPort(): number;
45
+ stop(): Promise<void>;
46
+ private trackSocket;
47
+ private handleConnect;
48
+ private handleDecrypted;
49
+ private forwardConversationResponse;
50
+ private forwardResponsesSse;
51
+ private forwardToUpstream;
52
+ }
53
+ export declare function buildBuyerForwardRequest(opts: {
54
+ host: string;
55
+ path: string;
56
+ rawBody: Buffer;
57
+ isJson: boolean;
58
+ peerId: string;
59
+ defaultModel?: string;
60
+ servedModels?: Set<string>;
61
+ prefixesByHost: Map<string, Set<string>>;
62
+ forwardRulesByHost?: Map<string, SystemProxyForwardRule>;
63
+ }): BuyerForwardRequest | null;
64
+ export declare function rewriteRequestBody(raw: Buffer, peerId: string, modelDefaults?: ModelDefaultOptions): Buffer;
65
+ export declare function transformRequestBody(raw: Buffer, peerId: string, transform: SystemProxyRequestTransform, modelDefaults?: ModelDefaultOptions): Buffer | null;
66
+ export declare class ConversationSseAdapter {
67
+ private readonly context;
68
+ private buffer;
69
+ private text;
70
+ private done;
71
+ private readonly createdAt;
72
+ constructor(context: ConversationForwardContext);
73
+ feed(chunk: Buffer, done: boolean): Buffer[];
74
+ fromJsonResponse(body: Buffer): Buffer[];
75
+ error(message: string): Buffer[];
76
+ private finish;
77
+ private event;
78
+ private encodeEvent;
79
+ }
80
+ export declare class ResponsesSseNormalizer {
81
+ private readonly options;
82
+ private buffer;
83
+ private responseId;
84
+ private messageItemId;
85
+ constructor(options: Extract<SystemProxyResponseTransform, {
86
+ kind: 'responses-sse';
87
+ }>);
88
+ feed(chunk: Buffer, done: boolean): Buffer[];
89
+ private normalizeBlock;
90
+ private normalizeMessageItem;
91
+ }
92
+ type ModelDefaultOptions = {
93
+ defaultModel?: string;
94
+ servedModels?: Set<string>;
95
+ };
96
+ export declare function shouldSystemProxyRequest(host: string, path: string, prefixesByHost: Map<string, Set<string>>): boolean;
97
+ export {};
98
+ //# sourceMappingURL=proxy-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-server.d.ts","sourceRoot":"","sources":["../../src/system-proxy/proxy-server.ts"],"names":[],"mappings":"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"}