@yu_robotics/remote-cli 1.6.173 → 1.6.176

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 (61) hide show
  1. package/README.md +5 -1
  2. package/dist/client/MessageHandler.d.ts +1 -0
  3. package/dist/client/MessageHandler.d.ts.map +1 -1
  4. package/dist/client/MessageHandler.js +19 -3
  5. package/dist/client/MessageHandler.js.map +1 -1
  6. package/dist/client/WebSocketClient.d.ts.map +1 -1
  7. package/dist/client/WebSocketClient.js +1 -0
  8. package/dist/client/WebSocketClient.js.map +1 -1
  9. package/dist/delegation/DelegationManager.js +1 -1
  10. package/dist/delegation/DelegationManager.js.map +1 -1
  11. package/dist/executor/AcpExecutor.d.ts +6 -0
  12. package/dist/executor/AcpExecutor.d.ts.map +1 -1
  13. package/dist/executor/AcpExecutor.js +81 -10
  14. package/dist/executor/AcpExecutor.js.map +1 -1
  15. package/dist/executor/CodexAppServerExecutor.d.ts +12 -1
  16. package/dist/executor/CodexAppServerExecutor.d.ts.map +1 -1
  17. package/dist/executor/CodexAppServerExecutor.js +197 -4
  18. package/dist/executor/CodexAppServerExecutor.js.map +1 -1
  19. package/dist/executor/IExecutor.d.ts +19 -0
  20. package/dist/executor/IExecutor.d.ts.map +1 -1
  21. package/dist/executor/KimiExecutor.d.ts +9 -0
  22. package/dist/executor/KimiExecutor.d.ts.map +1 -1
  23. package/dist/executor/KimiExecutor.js +45 -0
  24. package/dist/executor/KimiExecutor.js.map +1 -1
  25. package/dist/executor/index.d.ts +2 -1
  26. package/dist/executor/index.d.ts.map +1 -1
  27. package/dist/executor/index.js +1 -0
  28. package/dist/executor/index.js.map +1 -1
  29. package/dist/executor/kimi/KimiAccountUsage.d.ts +2 -6
  30. package/dist/executor/kimi/KimiAccountUsage.d.ts.map +1 -1
  31. package/dist/executor/kimi/KimiAccountUsage.js +11 -71
  32. package/dist/executor/kimi/KimiAccountUsage.js.map +1 -1
  33. package/dist/executor/kimi/KimiLocalServer.d.ts +28 -0
  34. package/dist/executor/kimi/KimiLocalServer.d.ts.map +1 -0
  35. package/dist/executor/kimi/KimiLocalServer.js +192 -0
  36. package/dist/executor/kimi/KimiLocalServer.js.map +1 -0
  37. package/dist/executor/kimi/KimiModelCatalog.d.ts +6 -0
  38. package/dist/executor/kimi/KimiModelCatalog.d.ts.map +1 -0
  39. package/dist/executor/kimi/KimiModelCatalog.js +86 -0
  40. package/dist/executor/kimi/KimiModelCatalog.js.map +1 -0
  41. package/dist/maintenance/release-notes.json +1 -1
  42. package/dist/settings/SettingsCatalog.d.ts +1 -1
  43. package/dist/settings/SettingsCatalog.d.ts.map +1 -1
  44. package/dist/settings/SettingsCatalog.js +6 -2
  45. package/dist/settings/SettingsCatalog.js.map +1 -1
  46. package/dist/settings/SettingsService.d.ts +3 -1
  47. package/dist/settings/SettingsService.d.ts.map +1 -1
  48. package/dist/settings/SettingsService.js +17 -5
  49. package/dist/settings/SettingsService.js.map +1 -1
  50. package/dist/thread/ThreadExecutorPool.d.ts +3 -1
  51. package/dist/thread/ThreadExecutorPool.d.ts.map +1 -1
  52. package/dist/thread/ThreadExecutorPool.js +13 -1
  53. package/dist/thread/ThreadExecutorPool.js.map +1 -1
  54. package/dist/thread/ThreadManager.d.ts +1 -1
  55. package/dist/thread/ThreadManager.d.ts.map +1 -1
  56. package/dist/thread/ThreadManager.js.map +1 -1
  57. package/dist/thread/types.d.ts +2 -0
  58. package/dist/thread/types.d.ts.map +1 -1
  59. package/dist/types/Settings.d.ts +8 -0
  60. package/dist/types/Settings.d.ts.map +1 -1
  61. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { spawn } from 'child_process';
1
+ import { type KimiLocalServerDependencies } from './KimiLocalServer';
2
2
  interface KimiQuotaEntry {
3
3
  usedRatio?: number;
4
4
  resetAt?: string;
@@ -18,11 +18,7 @@ interface KimiQuota {
18
18
  currency?: string;
19
19
  } | null;
20
20
  }
21
- export interface KimiAccountUsageDependencies {
22
- spawnProcess?: typeof spawn;
23
- fetchImpl?: typeof fetch;
24
- timeoutMs?: number;
25
- }
21
+ export type KimiAccountUsageDependencies = KimiLocalServerDependencies;
26
22
  export declare function formatKimiAccountUsage(quota: KimiQuota): string | null;
27
23
  /** Query Kimi's own local authenticated server so account quota is not confused with ACP session usage. */
28
24
  export declare function queryKimiAccountUsage(command: string, cwd: string, dependencies?: KimiAccountUsageDependencies): Promise<string | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"KimiAccountUsage.d.ts","sourceRoot":"","sources":["../../../src/executor/kimi/KimiAccountUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,eAAe,CAAC;AAOzD,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,UAAU,CAAC,EAAE,cAAc,CAAC;QAC5B,SAAS,CAAC,EAAE,cAAc,CAAC;KAC5B,CAAC;IACF,UAAU,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,CAAC,EAAE,OAAO,KAAK,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6BD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAgCtE;AAED,2GAA2G;AAC3G,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,4BAAiC,GAC9C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgExB"}
1
+ {"version":3,"file":"KimiAccountUsage.d.ts","sourceRoot":"","sources":["../../../src/executor/kimi/KimiAccountUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAI1F,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,UAAU,CAAC,EAAE,cAAc,CAAC;QAC5B,SAAS,CAAC,EAAE,cAAc,CAAC;KAC5B,CAAC;IACF,UAAU,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;CACV;AAED,MAAM,MAAM,4BAA4B,GAAG,2BAA2B,CAAC;AA6BvE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAgCtE;AAED,2GAA2G;AAC3G,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,4BAAiC,GAC9C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB"}
@@ -2,11 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatKimiAccountUsage = formatKimiAccountUsage;
4
4
  exports.queryKimiAccountUsage = queryKimiAccountUsage;
5
- const child_process_1 = require("child_process");
6
- const stripAnsi_1 = require("../../utils/stripAnsi");
5
+ const KimiLocalServer_1 = require("./KimiLocalServer");
7
6
  const DEFAULT_TIMEOUT_MS = 12_000;
8
- const KILL_GRACE_MS = 2_000;
9
- const MAX_STARTUP_OUTPUT = 64 * 1024;
10
7
  function resetSuffix(value) {
11
8
  if (!value)
12
9
  return '';
@@ -73,72 +70,15 @@ function formatKimiAccountUsage(quota) {
73
70
  return lines.length > 0 ? lines.join('\n') : null;
74
71
  }
75
72
  /** Query Kimi's own local authenticated server so account quota is not confused with ACP session usage. */
76
- function queryKimiAccountUsage(command, cwd, dependencies = {}) {
77
- const spawnProcess = dependencies.spawnProcess ?? child_process_1.spawn;
78
- const fetchImpl = dependencies.fetchImpl ?? fetch;
79
- const timeoutMs = dependencies.timeoutMs ?? DEFAULT_TIMEOUT_MS;
80
- return new Promise((resolve) => {
81
- let child;
82
- try {
83
- child = spawnProcess(command, ['web', '--no-open', '--port', '0', '--log-level', 'silent'], {
84
- cwd,
85
- env: process.env,
86
- stdio: ['ignore', 'pipe', 'pipe'],
87
- });
88
- }
89
- catch {
90
- resolve(null);
91
- return;
92
- }
93
- let settled = false;
94
- let exited = false;
95
- let requestStarted = false;
96
- let startupOutput = '';
97
- let controller = null;
98
- const finish = (value) => {
99
- if (settled)
100
- return;
101
- settled = true;
102
- clearTimeout(timeout);
103
- controller?.abort();
104
- if (!exited) {
105
- child.kill('SIGTERM');
106
- const escalation = setTimeout(() => {
107
- if (!exited)
108
- child.kill('SIGKILL');
109
- }, KILL_GRACE_MS);
110
- escalation.unref?.();
111
- }
112
- resolve(value);
113
- };
114
- const timeout = setTimeout(() => finish(null), timeoutMs);
115
- timeout.unref?.();
116
- child.stdout?.on('data', (chunk) => {
117
- if (requestStarted || settled)
118
- return;
119
- startupOutput = (startupOutput + (0, stripAnsi_1.stripAnsi)(chunk.toString())).slice(-MAX_STARTUP_OUTPUT);
120
- const match = startupOutput.match(/Local:\s+(http:\/\/127\.0\.0\.1:\d+)\/#token=([^\s]+)/);
121
- if (!match)
122
- return;
123
- requestStarted = true;
124
- controller = new AbortController();
125
- void fetchImpl(`${match[1]}/api/v1/oauth/usage?provider=managed%3Akimi-code`, {
126
- headers: { Authorization: `Bearer ${match[2]}`, Accept: 'application/json' },
127
- signal: controller.signal,
128
- }).then(async (response) => {
129
- if (!response.ok)
130
- return null;
131
- const body = await response.json();
132
- return body.data?.kind === 'ok' && body.data.quota
133
- ? formatKimiAccountUsage(body.data.quota)
134
- : null;
135
- }).then(finish, () => finish(null));
136
- });
137
- child.once('error', () => finish(null));
138
- child.once('exit', () => {
139
- exited = true;
140
- finish(null);
141
- });
142
- });
73
+ async function queryKimiAccountUsage(command, cwd, dependencies = {}) {
74
+ try {
75
+ return await (0, KimiLocalServer_1.withKimiLocalServer)(command, cwd, async (request) => {
76
+ const body = await request('usage');
77
+ return body?.data?.kind === 'ok' && body.data.quota ? formatKimiAccountUsage(body.data.quota) : null;
78
+ }, { ...dependencies, timeoutMs: dependencies.timeoutMs ?? DEFAULT_TIMEOUT_MS });
79
+ }
80
+ catch {
81
+ return null;
82
+ }
143
83
  }
144
84
  //# sourceMappingURL=KimiAccountUsage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KimiAccountUsage.js","sourceRoot":"","sources":["../../../src/executor/kimi/KimiAccountUsage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KimiAccountUsage.js","sourceRoot":"","sources":["../../../src/executor/kimi/KimiAccountUsage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { spawn } from 'child_process';
2
+ declare const endpoints: {
3
+ readonly usage: {
4
+ readonly path: "/api/v1/oauth/usage?provider=managed%3Akimi-code";
5
+ readonly method: "GET";
6
+ };
7
+ readonly refreshOAuth: {
8
+ readonly path: "/api/v1/providers:refresh_oauth";
9
+ readonly method: "POST";
10
+ };
11
+ readonly models: {
12
+ readonly path: "/api/v1/models";
13
+ readonly method: "GET";
14
+ };
15
+ };
16
+ export interface KimiLocalServerDependencies {
17
+ spawnProcess?: typeof spawn;
18
+ fetchImpl?: typeof fetch;
19
+ timeoutMs?: number;
20
+ killGraceMs?: number;
21
+ }
22
+ export declare class KimiMetadataError extends Error {
23
+ }
24
+ export declare function kimiHomeKey(command: string): string;
25
+ /** Own one authenticated loopback server, including abort and confirmed exit. */
26
+ export declare function withKimiLocalServer<T>(command: string, cwd: string, query: (request: (endpoint: keyof typeof endpoints) => Promise<unknown>) => Promise<T>, dependencies?: KimiLocalServerDependencies): Promise<T>;
27
+ export {};
28
+ //# sourceMappingURL=KimiLocalServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KimiLocalServer.d.ts","sourceRoot":"","sources":["../../../src/executor/kimi/KimiLocalServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAQtC,QAAA,MAAM,SAAS;;;;;;;;;;;;;CAIL,CAAC;AAEX,MAAM,WAAW,2BAA2B;IAC1C,YAAY,CAAC,EAAE,OAAO,KAAK,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAE/C,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAgCD,iFAAiF;AACjF,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EACvE,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,OAAO,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EACtF,YAAY,GAAE,2BAAgC,GAAG,OAAO,CAAC,CAAC,CAAC,CAmG5D"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.KimiMetadataError = void 0;
7
+ exports.kimiHomeKey = kimiHomeKey;
8
+ exports.withKimiLocalServer = withKimiLocalServer;
9
+ const child_process_1 = require("child_process");
10
+ const os_1 = __importDefault(require("os"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const stripAnsi_1 = require("../../utils/stripAnsi");
13
+ const OUTPUT_LIMIT = 64 * 1024;
14
+ const RESPONSE_LIMIT = 1024 * 1024;
15
+ const unconfirmedExits = new Map();
16
+ const endpoints = {
17
+ usage: { path: '/api/v1/oauth/usage?provider=managed%3Akimi-code', method: 'GET' },
18
+ refreshOAuth: { path: '/api/v1/providers:refresh_oauth', method: 'POST' },
19
+ models: { path: '/api/v1/models', method: 'GET' },
20
+ };
21
+ class KimiMetadataError extends Error {
22
+ }
23
+ exports.KimiMetadataError = KimiMetadataError;
24
+ function kimiHomeKey(command) {
25
+ const home = path_1.default.resolve(process.env.KIMI_CODE_HOME || path_1.default.join(os_1.default.homedir(), '.kimi-code'));
26
+ return JSON.stringify([command, home]);
27
+ }
28
+ function unavailable() {
29
+ return new KimiMetadataError('This Kimi installation does not provide the local metadata API. Upgrade Kimi Code and retry.');
30
+ }
31
+ async function readJson(response) {
32
+ const declared = response.headers.get('content-length');
33
+ if (declared !== null && (!/^\d+$/.test(declared) || Number(declared) > RESPONSE_LIMIT)) {
34
+ void response.body?.cancel().catch(() => { });
35
+ throw new KimiMetadataError('Kimi returned an oversized metadata response.');
36
+ }
37
+ if (!response.body)
38
+ throw new KimiMetadataError('Kimi returned an empty metadata response.');
39
+ const reader = response.body.getReader();
40
+ const chunks = [];
41
+ let size = 0;
42
+ try {
43
+ for (;;) {
44
+ const { done, value } = await reader.read();
45
+ if (done)
46
+ break;
47
+ size += value.byteLength;
48
+ if (size > RESPONSE_LIMIT)
49
+ throw new KimiMetadataError('Kimi returned an oversized metadata response.');
50
+ chunks.push(value);
51
+ }
52
+ try {
53
+ return JSON.parse(Buffer.concat(chunks).toString('utf8'));
54
+ }
55
+ catch {
56
+ throw new KimiMetadataError('Kimi returned invalid metadata JSON.');
57
+ }
58
+ }
59
+ finally {
60
+ void reader.cancel().catch(() => { });
61
+ reader.releaseLock();
62
+ }
63
+ }
64
+ /** Own one authenticated loopback server, including abort and confirmed exit. */
65
+ async function withKimiLocalServer(command, cwd, query, dependencies = {}) {
66
+ const key = kimiHomeKey(command);
67
+ if (unconfirmedExits.has(key)) {
68
+ throw new KimiMetadataError('A previous Kimi metadata server has not exited. Retry after its exit is confirmed.');
69
+ }
70
+ const controller = new AbortController();
71
+ let announce;
72
+ let rejectReady;
73
+ const ready = new Promise((resolve, reject) => { announce = resolve; rejectReady = reject; });
74
+ let markClosed;
75
+ const closed = new Promise(resolve => { markClosed = resolve; });
76
+ let exited = false;
77
+ let spawned = false;
78
+ let announced = false;
79
+ let outputBytes = 0;
80
+ let startup = '';
81
+ let rejectFailure;
82
+ const failure = new Promise((_, reject) => { rejectFailure = reject; });
83
+ let child;
84
+ try {
85
+ child = (dependencies.spawnProcess ?? child_process_1.spawn)(command, ['web', '--no-open', '--host', '127.0.0.1', '--port', '0', '--log-level', 'silent'], {
86
+ cwd, stdio: ['ignore', 'pipe', 'pipe'],
87
+ env: { ...process.env, KIMI_CODE_MODEL_CATALOG_REFRESH_ON_START: 'false', KIMI_CODE_MODEL_CATALOG_REFRESH_INTERVAL_MS: '0' },
88
+ });
89
+ }
90
+ catch {
91
+ throw unavailable();
92
+ }
93
+ const onOutput = (chunk, stdout) => {
94
+ outputBytes += chunk.byteLength;
95
+ if (outputBytes > OUTPUT_LIMIT) {
96
+ rejectFailure(new KimiMetadataError('Kimi metadata startup output exceeded its limit.'));
97
+ return;
98
+ }
99
+ if (announced || !stdout || controller.signal.aborted)
100
+ return;
101
+ startup += (0, stripAnsi_1.stripAnsi)(chunk.toString());
102
+ const match = /(?:^|\n)\s*Local:\s+(http:\/\/127\.0\.0\.1:(\d{1,5}))\/#token=([A-Za-z0-9._~-]{1,512})[ \t]*\r?\n/.exec(startup);
103
+ if (!match || Number(match[2]) < 1 || Number(match[2]) > 65535)
104
+ return;
105
+ announced = true;
106
+ startup = '';
107
+ announce({ origin: match[1], token: match[3] });
108
+ };
109
+ child.stdout?.on('data', chunk => onOutput(chunk, true));
110
+ child.stderr?.on('data', chunk => onOutput(chunk, false));
111
+ child.once('spawn', () => { spawned = true; });
112
+ child.once('error', () => {
113
+ if (!spawned && child.pid === undefined) {
114
+ exited = true;
115
+ markClosed();
116
+ }
117
+ rejectFailure(unavailable());
118
+ });
119
+ child.once('close', () => {
120
+ exited = true;
121
+ markClosed();
122
+ rejectFailure(unavailable());
123
+ });
124
+ let timer;
125
+ const timeout = new Promise((_, reject) => {
126
+ timer = setTimeout(() => reject(new KimiMetadataError('Kimi model metadata request timed out. Check connectivity and retry.')), dependencies.timeoutMs ?? 5_000);
127
+ timer.unref?.();
128
+ });
129
+ const operation = (async () => {
130
+ const { origin, token } = await ready;
131
+ const request = async (endpoint) => {
132
+ if (controller.signal.aborted)
133
+ throw new KimiMetadataError('Kimi metadata request was cancelled.');
134
+ const route = endpoints[endpoint];
135
+ if (!route)
136
+ throw new KimiMetadataError('Unsupported Kimi metadata endpoint.');
137
+ const response = await (dependencies.fetchImpl ?? fetch)(`${origin}${route.path}`, {
138
+ method: route.method, redirect: 'error', signal: controller.signal,
139
+ headers: { Authorization: `Bearer ${token}`, Accept: 'application/json' },
140
+ });
141
+ if (controller.signal.aborted)
142
+ throw new KimiMetadataError('Kimi metadata request was cancelled.');
143
+ if ([404, 405, 501].includes(response.status))
144
+ throw unavailable();
145
+ if (!response.ok || response.redirected)
146
+ throw new KimiMetadataError('Kimi metadata request failed. Check account access and connectivity, then retry.');
147
+ return readJson(response);
148
+ };
149
+ return query(request);
150
+ })();
151
+ try {
152
+ return await Promise.race([operation, failure, timeout]);
153
+ }
154
+ catch (error) {
155
+ throw error instanceof KimiMetadataError ? error
156
+ : new KimiMetadataError('Kimi metadata request failed. Check account access and connectivity, then retry.');
157
+ }
158
+ finally {
159
+ clearTimeout(timer);
160
+ controller.abort();
161
+ rejectReady(new KimiMetadataError('Kimi metadata request was cancelled.'));
162
+ startup = '';
163
+ const wait = async () => {
164
+ let grace;
165
+ try {
166
+ await Promise.race([closed, new Promise(resolve => { grace = setTimeout(resolve, dependencies.killGraceMs ?? 500); })]);
167
+ }
168
+ finally {
169
+ clearTimeout(grace);
170
+ }
171
+ };
172
+ const signal = (value) => { try {
173
+ child.kill(value);
174
+ }
175
+ catch { /* Exit must still be confirmed below. */ } };
176
+ if (!exited) {
177
+ signal('SIGTERM');
178
+ await wait();
179
+ }
180
+ if (!exited) {
181
+ signal('SIGKILL');
182
+ await wait();
183
+ }
184
+ if (!exited) {
185
+ unconfirmedExits.set(key, closed);
186
+ void closed.then(() => { if (unconfirmedExits.get(key) === closed)
187
+ unconfirmedExits.delete(key); });
188
+ throw new KimiMetadataError('Kimi metadata server exit could not be confirmed. Further attempts are blocked until it exits.');
189
+ }
190
+ }
191
+ }
192
+ //# sourceMappingURL=KimiLocalServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KimiLocalServer.js","sourceRoot":"","sources":["../../../src/executor/kimi/KimiLocalServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ExecutorModelInfo } from '../IExecutor';
2
+ import { type KimiLocalServerDependencies } from './KimiLocalServer';
3
+ export declare function latestKimiModelCatalog(command: string): ExecutorModelInfo[] | undefined;
4
+ /** Coalesce only concurrent queries; every later explicit refresh contacts Kimi anew. */
5
+ export declare function refreshKimiModelCatalog(command: string, cwd: string, dependencies?: KimiLocalServerDependencies): Promise<ExecutorModelInfo[]>;
6
+ //# sourceMappingURL=KimiModelCatalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KimiModelCatalog.d.ts","sourceRoot":"","sources":["../../../src/executor/kimi/KimiModelCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAuD,KAAK,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAS1H,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,EAAE,GAAG,SAAS,CAGvF;AA6CD,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAClE,YAAY,GAAE,2BAAgC,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAiB9E"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.latestKimiModelCatalog = latestKimiModelCatalog;
4
+ exports.refreshKimiModelCatalog = refreshKimiModelCatalog;
5
+ const KimiLocalServer_1 = require("./KimiLocalServer");
6
+ const pending = new Map();
7
+ // Validation metadata only: temporary settings executors and live ACP threads
8
+ // share newly discovered aliases. Explicit listings never read this cache.
9
+ const validationCatalogs = new Map();
10
+ const copyModels = (models) => models.map(model => ({ ...model,
11
+ supportedReasoningEfforts: model.supportedReasoningEfforts ? [...model.supportedReasoningEfforts] : undefined }));
12
+ function latestKimiModelCatalog(command) {
13
+ const models = validationCatalogs.get((0, KimiLocalServer_1.kimiHomeKey)(command));
14
+ return models ? copyModels(models) : undefined;
15
+ }
16
+ const record = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
17
+ const label = (value) => typeof value === 'string' && value.length > 0
18
+ && value.length <= 512 && !/[\x00-\x1f\x7f]/.test(value);
19
+ const invalid = () => new KimiLocalServer_1.KimiMetadataError('Kimi returned an invalid model catalog response. Upgrade Kimi Code or retry.');
20
+ function envelope(value) {
21
+ if (!record(value) || value.code !== 0 || !record(value.data))
22
+ throw invalid();
23
+ return value.data;
24
+ }
25
+ function validateRefresh(value) {
26
+ const data = envelope(value);
27
+ for (const field of ['changed', 'unchanged', 'failed']) {
28
+ if (!Array.isArray(data[field]) || data[field].length > 512)
29
+ throw invalid();
30
+ }
31
+ if (data.failed.length) {
32
+ throw new KimiLocalServer_1.KimiMetadataError('Kimi could not refresh the managed model catalog. Check native account access and network connectivity, then retry.');
33
+ }
34
+ for (const entry of data.changed) {
35
+ if (!record(entry) || !label(entry.provider_id) || !label(entry.provider_name)
36
+ || !Number.isSafeInteger(entry.added) || Number(entry.added) < 0
37
+ || !Number.isSafeInteger(entry.removed) || Number(entry.removed) < 0)
38
+ throw invalid();
39
+ }
40
+ if (!data.unchanged.every(label))
41
+ throw invalid();
42
+ // An empty successful report means there are no OAuth-backed providers.
43
+ // Preserve native model listing for API-key and other configured providers.
44
+ }
45
+ function models(value) {
46
+ const data = envelope(value);
47
+ if (!Array.isArray(data.items) || !data.items.length || data.items.length > 512)
48
+ throw invalid();
49
+ const seen = new Set();
50
+ return data.items.map(item => {
51
+ if (!record(item) || !label(item.model) || (item.display_name !== undefined && !label(item.display_name))
52
+ || seen.has(item.model))
53
+ throw invalid();
54
+ seen.add(item.model);
55
+ const efforts = item.support_efforts;
56
+ if (efforts !== undefined && (!Array.isArray(efforts) || efforts.length > 32 || !efforts.every(label)))
57
+ throw invalid();
58
+ if (item.default_effort !== undefined && !label(item.default_effort))
59
+ throw invalid();
60
+ return { id: item.model, displayName: item.display_name ?? item.model,
61
+ supportedReasoningEfforts: efforts, defaultReasoningEffort: item.default_effort };
62
+ });
63
+ }
64
+ /** Coalesce only concurrent queries; every later explicit refresh contacts Kimi anew. */
65
+ function refreshKimiModelCatalog(command, cwd, dependencies = {}) {
66
+ const key = (0, KimiLocalServer_1.kimiHomeKey)(command);
67
+ const existing = pending.get(key);
68
+ if (existing)
69
+ return existing.then(copyModels);
70
+ const operation = (0, KimiLocalServer_1.withKimiLocalServer)(command, cwd, async (request) => {
71
+ validateRefresh(await request('refreshOAuth'));
72
+ return models(await request('models'));
73
+ }, dependencies).then(result => {
74
+ validationCatalogs.delete(key);
75
+ validationCatalogs.set(key, copyModels(result));
76
+ if (validationCatalogs.size > 64)
77
+ validationCatalogs.delete(validationCatalogs.keys().next().value);
78
+ return result;
79
+ });
80
+ pending.set(key, operation);
81
+ const clear = () => { if (pending.get(key) === operation)
82
+ pending.delete(key); };
83
+ void operation.then(clear, clear);
84
+ return operation;
85
+ }
86
+ //# sourceMappingURL=KimiModelCatalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KimiModelCatalog.js","sourceRoot":"","sources":["../../../src/executor/kimi/KimiModelCatalog.ts"],"names":[],"mappings":";;AAUA,wDAGC;AA8CD,0DAkBC;AA5ED,uDAA0H;AAE1H,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwC,CAAC;AAChE,8EAA8E;AAC9E,2EAA2E;AAC3E,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA+B,CAAC;AAClE,MAAM,UAAU,GAAG,CAAC,MAA2B,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK;IACjF,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAEpH,SAAgB,sBAAsB,CAAC,OAAe;IACpD,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAA,6BAAW,EAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AACD,MAAM,MAAM,GAAG,CAAC,KAAc,EAAoC,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1I,MAAM,KAAK,GAAG,CAAC,KAAc,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;OAC3F,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,mCAAiB,CAAC,8EAA8E,CAAC,CAAC;AAE5H,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,MAAM,OAAO,EAAE,CAAC;IAC/E,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM,OAAO,EAAE,CAAC;IAC/E,CAAC;IACD,IAAK,IAAI,CAAC,MAAoB,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,IAAI,mCAAiB,CAAC,qHAAqH,CAAC,CAAC;IACrJ,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAoB,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;eACzE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;eAC7D,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,MAAM,OAAO,EAAE,CAAC;IAC1F,CAAC;IACD,IAAI,CAAE,IAAI,CAAC,SAAuB,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,MAAM,OAAO,EAAE,CAAC;IACjE,wEAAwE;IACxE,4EAA4E;AAC9E,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,OAAO,EAAE,CAAC;IACjG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;eACpG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,MAAM,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;QACrC,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM,OAAO,EAAE,CAAC;QACxH,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;YAAE,MAAM,OAAO,EAAE,CAAC;QACtF,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAG,IAAI,CAAC,YAAmC,IAAI,IAAI,CAAC,KAAK;YAC3F,yBAAyB,EAAE,OAA+B,EAAE,sBAAsB,EAAE,IAAI,CAAC,cAAoC,EAAE,CAAC;IACpI,CAAC,CAAC,CAAC;AACL,CAAC;AAED,yFAAyF;AACzF,SAAgB,uBAAuB,CAAC,OAAe,EAAE,GAAW,EAClE,eAA4C,EAAE;IAC9C,MAAM,GAAG,GAAG,IAAA,6BAAW,EAAC,OAAO,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAA,qCAAmB,EAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;QAClE,eAAe,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QAC7B,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,IAAI,kBAAkB,CAAC,IAAI,GAAG,EAAE;YAAE,kBAAkB,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC,CAAC;QACrG,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClC,OAAO,SAAS,CAAC;AACnB,CAAC"}