coding-tool-x 3.7.0 → 3.7.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.
- package/README.md +5 -6
- package/dist/web/assets/{Analytics-Dma_j2Rq.js → Analytics-Dpje9L84.js} +1 -1
- package/dist/web/assets/{ConfigTemplates-C49Y1PLH.js → ConfigTemplates-Cz6kasek.js} +1 -1
- package/dist/web/assets/Home-BwTaYu3q.js +1 -0
- package/dist/web/assets/Home-Jom_ZcdY.css +1 -0
- package/dist/web/assets/{PluginManager-B1ECTHyY.js → PluginManager-DsN-xNXx.js} +1 -1
- package/dist/web/assets/ProjectList-4BCObimU.js +1 -0
- package/dist/web/assets/{ProjectList-B_L55-l9.css → ProjectList-D3a0oRum.css} +1 -1
- package/dist/web/assets/{SessionList-CH5GwwiJ.js → SessionList-D4c8FRzq.js} +1 -1
- package/dist/web/assets/{SkillManager-CRyVhjYQ.js → SkillManager-C-KYbXB5.js} +1 -1
- package/dist/web/assets/{WorkspaceManager-CO9tclVt.js → WorkspaceManager-B-BlPJHX.js} +1 -1
- package/dist/web/assets/index-Btfvh0GG.js +2 -0
- package/dist/web/assets/{index-CM26UrnJ.css → index-CLNa6DhH.css} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +2 -1
- package/src/commands/channels.js +8 -8
- package/src/commands/daemon.js +4 -4
- package/src/commands/doctor.js +1 -1
- package/src/commands/logs.js +1 -3
- package/src/commands/port-config.js +4 -4
- package/src/commands/proxy-control.js +13 -13
- package/src/commands/stats.js +6 -6
- package/src/commands/toggle-proxy.js +8 -8
- package/src/config/default.js +3 -3
- package/src/config/paths.js +46 -49
- package/src/index.js +4 -5
- package/src/server/api/commands.js +1 -1
- package/src/server/api/config-export.js +2 -2
- package/src/server/api/config-registry.js +1 -1
- package/src/server/api/config.js +1 -1
- package/src/server/api/dashboard.js +16 -16
- package/src/server/api/mcp.js +2 -2
- package/src/server/api/{pi-channels.js → omp-channels.js} +15 -15
- package/src/server/api/{pi-config.js → omp-config.js} +13 -13
- package/src/server/api/{pi-projects.js → omp-projects.js} +5 -5
- package/src/server/api/{pi-proxy.js → omp-proxy.js} +18 -18
- package/src/server/api/{pi-sessions.js → omp-sessions.js} +21 -21
- package/src/server/api/{pi-statistics.js → omp-statistics.js} +1 -1
- package/src/server/api/plugins.js +1 -1
- package/src/server/api/skills.js +1 -1
- package/src/server/api/workspaces.js +1 -1
- package/src/server/index.js +10 -10
- package/src/server/{pi-proxy-server.js → omp-proxy-server.js} +13 -13
- package/src/server/services/channel-balance.js +3 -3
- package/src/server/services/channel-scheduler.js +4 -4
- package/src/server/services/commands-service.js +5 -5
- package/src/server/services/config-export-service.js +53 -53
- package/src/server/services/config-registry-service.js +8 -8
- package/src/server/services/config-sync-manager.js +26 -26
- package/src/server/services/config-templates-service.js +28 -28
- package/src/server/services/mcp-service.js +20 -20
- package/src/server/services/notification-hooks.js +138 -6
- package/src/server/services/{pi-auth-providers.js → omp-auth-providers.js} +2 -2
- package/src/server/services/{pi-channels.js → omp-channels.js} +5 -5
- package/src/server/services/{pi-config.js → omp-config.js} +47 -65
- package/src/server/services/{pi-sessions.js → omp-sessions.js} +20 -20
- package/src/server/services/{pi-settings-manager.js → omp-settings-manager.js} +422 -18
- package/src/server/services/{pi-statistics-service.js → omp-statistics-service.js} +2 -2
- package/src/server/services/plugins-service.js +122 -122
- package/src/server/services/prompts-service.js +20 -20
- package/src/server/services/proxy-log-helper.js +1 -1
- package/src/server/services/proxy-runtime.js +1 -1
- package/src/server/services/skill-service.js +7 -7
- package/src/server/services/speed-test.js +29 -29
- package/src/server/services/ui-config.js +3 -3
- package/src/server/services/workspace-service.js +8 -8
- package/src/server/websocket-server.js +4 -4
- package/src/shared/platforms.js +201 -0
- package/dist/web/assets/Home-DGGC8H4g.js +0 -1
- package/dist/web/assets/Home-ewgeIhF7.css +0 -1
- package/dist/web/assets/ProjectList-DyiGyT-H.js +0 -1
- package/dist/web/assets/index-EQq56pRa.js +0 -2
|
@@ -11,9 +11,9 @@ const {
|
|
|
11
11
|
deleteSession,
|
|
12
12
|
forkSession,
|
|
13
13
|
saveSessionOrder,
|
|
14
|
-
|
|
14
|
+
isOmpInstalled,
|
|
15
15
|
HOME_DIR
|
|
16
|
-
} = require('../services/
|
|
16
|
+
} = require('../services/omp-sessions');
|
|
17
17
|
const { loadAliases } = require('../services/alias');
|
|
18
18
|
const { broadcastLog } = require('../websocket-server');
|
|
19
19
|
|
|
@@ -29,7 +29,7 @@ function quoteForShell(value) {
|
|
|
29
29
|
module.exports = () => {
|
|
30
30
|
router.get('/search/global', (req, res) => {
|
|
31
31
|
try {
|
|
32
|
-
if (!
|
|
32
|
+
if (!isOmpInstalled()) {
|
|
33
33
|
return res.status(404).json({ error: 'OMP CLI not installed' });
|
|
34
34
|
}
|
|
35
35
|
const { keyword } = req.query;
|
|
@@ -40,7 +40,7 @@ module.exports = () => {
|
|
|
40
40
|
}
|
|
41
41
|
const sessions = searchSessions(keyword, contextLength);
|
|
42
42
|
const totalMatches = sessions.reduce((sum, session) => sum + (session.matchCount || 0), 0);
|
|
43
|
-
res.json({ keyword, totalMatches, sessions, source: '
|
|
43
|
+
res.json({ keyword, totalMatches, sessions, source: 'omp' });
|
|
44
44
|
} catch (err) {
|
|
45
45
|
console.error('[OMP API] Failed to search sessions:', err);
|
|
46
46
|
res.status(500).json({ error: err.message });
|
|
@@ -49,11 +49,11 @@ module.exports = () => {
|
|
|
49
49
|
|
|
50
50
|
router.get('/recent/list', (req, res) => {
|
|
51
51
|
try {
|
|
52
|
-
if (!
|
|
52
|
+
if (!isOmpInstalled()) {
|
|
53
53
|
return res.status(404).json({ error: 'OMP CLI not installed' });
|
|
54
54
|
}
|
|
55
55
|
const limit = parseInt(req.query.limit, 10) || 5;
|
|
56
|
-
res.json({ sessions: getRecentSessions(limit), source: '
|
|
56
|
+
res.json({ sessions: getRecentSessions(limit), source: 'omp' });
|
|
57
57
|
} catch (err) {
|
|
58
58
|
console.error('[OMP API] Failed to get recent sessions:', err);
|
|
59
59
|
res.status(500).json({ error: err.message });
|
|
@@ -62,7 +62,7 @@ module.exports = () => {
|
|
|
62
62
|
|
|
63
63
|
router.get('/:projectName/search', (req, res) => {
|
|
64
64
|
try {
|
|
65
|
-
if (!
|
|
65
|
+
if (!isOmpInstalled()) {
|
|
66
66
|
return res.status(404).json({ error: 'OMP CLI not installed' });
|
|
67
67
|
}
|
|
68
68
|
const { projectName } = req.params;
|
|
@@ -83,7 +83,7 @@ module.exports = () => {
|
|
|
83
83
|
|
|
84
84
|
router.get('/:projectName', (req, res) => {
|
|
85
85
|
try {
|
|
86
|
-
if (!
|
|
86
|
+
if (!isOmpInstalled()) {
|
|
87
87
|
return res.status(404).json({ error: 'OMP CLI not installed' });
|
|
88
88
|
}
|
|
89
89
|
const { projectName } = req.params;
|
|
@@ -110,7 +110,7 @@ module.exports = () => {
|
|
|
110
110
|
|
|
111
111
|
router.get('/:projectName/:sessionId/status', (req, res) => {
|
|
112
112
|
try {
|
|
113
|
-
if (!
|
|
113
|
+
if (!isOmpInstalled()) {
|
|
114
114
|
return res.status(404).json({ error: 'OMP CLI not installed' });
|
|
115
115
|
}
|
|
116
116
|
const session = getSessionById(req.params.sessionId);
|
|
@@ -130,7 +130,7 @@ module.exports = () => {
|
|
|
130
130
|
|
|
131
131
|
router.get('/:projectName/:sessionId/outline', (req, res) => {
|
|
132
132
|
try {
|
|
133
|
-
if (!
|
|
133
|
+
if (!isOmpInstalled()) {
|
|
134
134
|
return res.status(404).json({ error: 'OMP CLI not installed' });
|
|
135
135
|
}
|
|
136
136
|
const session = getSessionById(req.params.sessionId);
|
|
@@ -159,7 +159,7 @@ module.exports = () => {
|
|
|
159
159
|
|
|
160
160
|
router.get('/:projectName/:sessionId/messages', (req, res) => {
|
|
161
161
|
try {
|
|
162
|
-
if (!
|
|
162
|
+
if (!isOmpInstalled()) {
|
|
163
163
|
return res.status(404).json({ error: 'OMP CLI not installed' });
|
|
164
164
|
}
|
|
165
165
|
const { sessionId } = req.params;
|
|
@@ -186,7 +186,7 @@ module.exports = () => {
|
|
|
186
186
|
gitRepository: null,
|
|
187
187
|
cwd: session?.directory || null,
|
|
188
188
|
provider: session?.provider || '',
|
|
189
|
-
model: session?.model || '
|
|
189
|
+
model: session?.model || 'omp'
|
|
190
190
|
},
|
|
191
191
|
pagination: {
|
|
192
192
|
page: pageNum,
|
|
@@ -203,7 +203,7 @@ module.exports = () => {
|
|
|
203
203
|
|
|
204
204
|
router.delete('/:projectName/:sessionId', (req, res) => {
|
|
205
205
|
try {
|
|
206
|
-
if (!
|
|
206
|
+
if (!isOmpInstalled()) {
|
|
207
207
|
return res.status(404).json({ error: 'OMP CLI not installed' });
|
|
208
208
|
}
|
|
209
209
|
res.json(deleteSession(req.params.sessionId));
|
|
@@ -218,7 +218,7 @@ module.exports = () => {
|
|
|
218
218
|
|
|
219
219
|
router.post('/:projectName/batch-delete', (req, res) => {
|
|
220
220
|
try {
|
|
221
|
-
if (!
|
|
221
|
+
if (!isOmpInstalled()) {
|
|
222
222
|
return res.status(404).json({ error: 'OMP CLI not installed' });
|
|
223
223
|
}
|
|
224
224
|
const { sessionIds } = req.body || {};
|
|
@@ -259,7 +259,7 @@ module.exports = () => {
|
|
|
259
259
|
|
|
260
260
|
router.post('/:projectName/:sessionId/fork', (req, res) => {
|
|
261
261
|
try {
|
|
262
|
-
if (!
|
|
262
|
+
if (!isOmpInstalled()) {
|
|
263
263
|
return res.status(404).json({ error: 'OMP CLI not installed' });
|
|
264
264
|
}
|
|
265
265
|
res.json(forkSession(req.params.sessionId, req.body || {}));
|
|
@@ -274,7 +274,7 @@ module.exports = () => {
|
|
|
274
274
|
|
|
275
275
|
router.post('/:projectName/order', (req, res) => {
|
|
276
276
|
try {
|
|
277
|
-
if (!
|
|
277
|
+
if (!isOmpInstalled()) {
|
|
278
278
|
return res.status(404).json({ error: 'OMP CLI not installed' });
|
|
279
279
|
}
|
|
280
280
|
const { order } = req.body || {};
|
|
@@ -291,7 +291,7 @@ module.exports = () => {
|
|
|
291
291
|
|
|
292
292
|
router.post('/:projectName/:sessionId/launch', (req, res) => {
|
|
293
293
|
try {
|
|
294
|
-
if (!
|
|
294
|
+
if (!isOmpInstalled()) {
|
|
295
295
|
return res.status(404).json({ error: 'OMP CLI not installed' });
|
|
296
296
|
}
|
|
297
297
|
const { projectName, sessionId } = req.params;
|
|
@@ -309,9 +309,9 @@ module.exports = () => {
|
|
|
309
309
|
action: 'launch_pi_session',
|
|
310
310
|
message: `复制 OMP 会话启动命令 ${sessionId.substring(0, 8)}`,
|
|
311
311
|
sessionId,
|
|
312
|
-
tool: '
|
|
313
|
-
toolType: '
|
|
314
|
-
source: '
|
|
312
|
+
tool: 'omp',
|
|
313
|
+
toolType: 'omp',
|
|
314
|
+
source: 'omp',
|
|
315
315
|
timestamp: Date.now()
|
|
316
316
|
});
|
|
317
317
|
|
|
@@ -320,7 +320,7 @@ module.exports = () => {
|
|
|
320
320
|
cwd,
|
|
321
321
|
sessionFile: session.filePath,
|
|
322
322
|
sessionId,
|
|
323
|
-
tool: '
|
|
323
|
+
tool: 'omp',
|
|
324
324
|
command,
|
|
325
325
|
copyCommand
|
|
326
326
|
});
|
|
@@ -10,7 +10,7 @@ const { maskToken } = require('../services/oauth-utils');
|
|
|
10
10
|
const { sendApiError } = require('./validation-errors');
|
|
11
11
|
|
|
12
12
|
const router = express.Router();
|
|
13
|
-
const SUPPORTED_PLATFORMS = ['claude', 'codex', 'gemini', 'opencode', '
|
|
13
|
+
const SUPPORTED_PLATFORMS = ['claude', 'codex', 'gemini', 'opencode', 'omp'];
|
|
14
14
|
const pluginServices = new Map();
|
|
15
15
|
|
|
16
16
|
function resolvePlatform(rawPlatform) {
|
package/src/server/api/skills.js
CHANGED
|
@@ -8,7 +8,7 @@ const { maskToken } = require('../services/oauth-utils');
|
|
|
8
8
|
const { sendApiError } = require('./validation-errors');
|
|
9
9
|
|
|
10
10
|
const router = express.Router();
|
|
11
|
-
const SUPPORTED_PLATFORMS = ['claude', 'codex', 'gemini', 'opencode', '
|
|
11
|
+
const SUPPORTED_PLATFORMS = ['claude', 'codex', 'gemini', 'opencode', 'omp'];
|
|
12
12
|
const skillServices = new Map();
|
|
13
13
|
|
|
14
14
|
function resolvePlatform(rawPlatform) {
|
|
@@ -411,7 +411,7 @@ router.delete('/:id/projects/:projectName', (req, res) => {
|
|
|
411
411
|
/**
|
|
412
412
|
* POST /api/workspaces/:id/launch
|
|
413
413
|
* 获取在工作区启动 CLI 工具的命令
|
|
414
|
-
* Body: { tool: 'claude' | 'codex' | 'gemini' | 'opencode' | '
|
|
414
|
+
* Body: { tool: 'claude' | 'codex' | 'gemini' | 'opencode' | 'omp' | 'omp', projectName?: string }
|
|
415
415
|
*/
|
|
416
416
|
router.post('/:id/launch', (req, res) => {
|
|
417
417
|
try {
|
package/src/server/index.js
CHANGED
|
@@ -23,7 +23,7 @@ const { startProxyServer } = require('./proxy-server');
|
|
|
23
23
|
const { startCodexProxyServer } = require('./codex-proxy-server');
|
|
24
24
|
const { startGeminiProxyServer } = require('./gemini-proxy-server');
|
|
25
25
|
const { startOpenCodeProxyServer, collectProxyModelList } = require('./opencode-proxy-server');
|
|
26
|
-
const {
|
|
26
|
+
const { startOmpProxyServer } = require('./omp-proxy-server');
|
|
27
27
|
const { createRemoteMutationGuard } = require('./services/network-access');
|
|
28
28
|
const { createApiRequestLogger } = require('./services/request-logger');
|
|
29
29
|
const { inspectWebBuildState, ensureWebDistReady } = require('./services/web-build');
|
|
@@ -203,12 +203,12 @@ async function startServer(port, host = '127.0.0.1', options = {}) {
|
|
|
203
203
|
app.use('/api/opencode/statistics', require('./api/opencode-statistics'));
|
|
204
204
|
|
|
205
205
|
// OMP API Routes
|
|
206
|
-
app.use('/api/
|
|
207
|
-
app.use('/api/
|
|
208
|
-
app.use('/api/
|
|
209
|
-
app.use('/api/
|
|
210
|
-
app.use('/api/
|
|
211
|
-
app.use('/api/
|
|
206
|
+
app.use('/api/omp/projects', require('./api/omp-projects')(config));
|
|
207
|
+
app.use('/api/omp/sessions', require('./api/omp-sessions')(config));
|
|
208
|
+
app.use('/api/omp/channels', require('./api/omp-channels')(config));
|
|
209
|
+
app.use('/api/omp/proxy', require('./api/omp-proxy'));
|
|
210
|
+
app.use('/api/omp/statistics', require('./api/omp-statistics'));
|
|
211
|
+
app.use('/api/omp/config', require('./api/omp-config'));
|
|
212
212
|
|
|
213
213
|
app.use('/api/aliases', require('./api/aliases')());
|
|
214
214
|
app.use('/api/favorites', require('./api/favorites'));
|
|
@@ -451,10 +451,10 @@ function autoRestoreProxies() {
|
|
|
451
451
|
}
|
|
452
452
|
|
|
453
453
|
// 检查 OMP 受管 provider 配置状态文件
|
|
454
|
-
const
|
|
455
|
-
if (fs.existsSync(
|
|
454
|
+
const ompActiveFile = PATHS.activeChannel.omp;
|
|
455
|
+
if (fs.existsSync(ompActiveFile)) {
|
|
456
456
|
console.log(chalk.cyan('\n[SYNC] 检测到 OMP 受管渠道状态文件,正在自动恢复...'));
|
|
457
|
-
|
|
457
|
+
startOmpProxyServer({ preserveStartTime: true })
|
|
458
458
|
.then((result) => {
|
|
459
459
|
if (result.success) {
|
|
460
460
|
console.log(chalk.green(`[OK] OMP models.yml 受管 provider 已自动启用,端口: ${result.port}`));
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
const { loadConfig } = require('../config/loader');
|
|
2
2
|
const { saveProxyStartTime, clearProxyStartTime, getProxyStartTime, getProxyRuntime } = require('./services/proxy-runtime');
|
|
3
|
-
const { syncManagedOmpProviders, disableManagedOmpProviders, getEnabledChannels } = require('./services/
|
|
3
|
+
const { syncManagedOmpProviders, disableManagedOmpProviders, getEnabledChannels } = require('./services/omp-channels');
|
|
4
4
|
|
|
5
5
|
let running = false;
|
|
6
6
|
let currentPort = null;
|
|
7
7
|
let lastSyncResult = null;
|
|
8
8
|
|
|
9
|
-
async function
|
|
9
|
+
async function startOmpProxyServer(options = {}) {
|
|
10
10
|
const preserveStartTime = options.preserveStartTime || false;
|
|
11
11
|
const config = loadConfig();
|
|
12
|
-
currentPort = config.ports?.
|
|
12
|
+
currentPort = config.ports?.ompProxy || 20092;
|
|
13
13
|
lastSyncResult = syncManagedOmpProviders();
|
|
14
14
|
running = true;
|
|
15
|
-
saveProxyStartTime('
|
|
15
|
+
saveProxyStartTime('omp', preserveStartTime);
|
|
16
16
|
return {
|
|
17
17
|
success: true,
|
|
18
18
|
port: currentPort,
|
|
@@ -21,14 +21,14 @@ async function startPiProxyServer(options = {}) {
|
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
async function
|
|
24
|
+
async function stopOmpProxyServer(options = {}) {
|
|
25
25
|
const clearStartTime = options.clearStartTime !== false;
|
|
26
26
|
const stoppedPort = currentPort;
|
|
27
27
|
lastSyncResult = disableManagedOmpProviders();
|
|
28
28
|
running = false;
|
|
29
29
|
currentPort = null;
|
|
30
30
|
if (clearStartTime) {
|
|
31
|
-
clearProxyStartTime('
|
|
31
|
+
clearProxyStartTime('omp');
|
|
32
32
|
}
|
|
33
33
|
return {
|
|
34
34
|
success: true,
|
|
@@ -38,16 +38,16 @@ async function stopPiProxyServer(options = {}) {
|
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
function
|
|
41
|
+
function getOmpProxyStatus() {
|
|
42
42
|
const config = loadConfig();
|
|
43
|
-
const startTime = getProxyStartTime('
|
|
44
|
-
const runtime = getProxyRuntime('
|
|
43
|
+
const startTime = getProxyStartTime('omp', { allowRecovery: running });
|
|
44
|
+
const runtime = getProxyRuntime('omp', { allowRecovery: running });
|
|
45
45
|
const enabledCount = getEnabledChannels().length;
|
|
46
46
|
const validation = lastSyncResult?.validation || null;
|
|
47
47
|
return {
|
|
48
48
|
running,
|
|
49
49
|
port: currentPort,
|
|
50
|
-
defaultPort: config.ports?.
|
|
50
|
+
defaultPort: config.ports?.ompProxy || 20092,
|
|
51
51
|
startTime,
|
|
52
52
|
runtime,
|
|
53
53
|
mode: 'models-yml-provider-config',
|
|
@@ -60,7 +60,7 @@ function getPiProxyStatus() {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
module.exports = {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
startOmpProxyServer,
|
|
64
|
+
stopOmpProxyServer,
|
|
65
|
+
getOmpProxyStatus
|
|
66
66
|
};
|
|
@@ -13,7 +13,7 @@ const MAX_RESPONSE_BYTES = 1024 * 1024;
|
|
|
13
13
|
const QUOTA_UNIT = 500000;
|
|
14
14
|
const VELOERA_QUOTA_UNIT = 1000000;
|
|
15
15
|
const NEWCLI_QUOTA_UNIT = 1000000;
|
|
16
|
-
const VALID_SOURCES = new Set(['claude', 'codex', 'gemini', 'opencode', '
|
|
16
|
+
const VALID_SOURCES = new Set(['claude', 'codex', 'gemini', 'opencode', 'omp']);
|
|
17
17
|
const GATEWAY_PATH_SEGMENTS = new Set(['openai', 'anthropic', 'claude', 'gemini', 'codex']);
|
|
18
18
|
const HUB_PLATFORMS = new Set(['new-api', 'one-api', 'one-hub', 'done-hub', 'veloera', 'anyrouter', 'aihubmix']);
|
|
19
19
|
const UNSUPPORTED_BALANCE_PLATFORMS = new Set(['dashscope', 'modelscope']);
|
|
@@ -1622,8 +1622,8 @@ function getChannelsForSource(source) {
|
|
|
1622
1622
|
if (source === 'opencode') {
|
|
1623
1623
|
return require('./opencode-channels').getChannels().channels || [];
|
|
1624
1624
|
}
|
|
1625
|
-
if (source === '
|
|
1626
|
-
return require('./
|
|
1625
|
+
if (source === 'omp') {
|
|
1626
|
+
return require('./omp-channels').getChannels().channels || [];
|
|
1627
1627
|
}
|
|
1628
1628
|
return [];
|
|
1629
1629
|
}
|
|
@@ -2,7 +2,7 @@ const { getAllChannels } = require('./channels');
|
|
|
2
2
|
const { getChannels: getCodexChannels } = require('./codex-channels');
|
|
3
3
|
const { getChannels: getGeminiChannels } = require('./gemini-channels');
|
|
4
4
|
const { getChannels: getOpenCodeChannels } = require('./opencode-channels');
|
|
5
|
-
const { getChannels:
|
|
5
|
+
const { getChannels: getOmpChannels } = require('./omp-channels');
|
|
6
6
|
const { isChannelAvailable, getChannelHealthStatus, setOnChannelFrozen, setChannelListProvider } = require('./channel-health');
|
|
7
7
|
|
|
8
8
|
const channelProviders = {
|
|
@@ -19,8 +19,8 @@ const channelProviders = {
|
|
|
19
19
|
const data = getOpenCodeChannels();
|
|
20
20
|
return Array.isArray(data?.channels) ? data.channels : [];
|
|
21
21
|
},
|
|
22
|
-
|
|
23
|
-
const data =
|
|
22
|
+
omp: () => {
|
|
23
|
+
const data = getOmpChannels();
|
|
24
24
|
return Array.isArray(data?.channels) ? data.channels : [];
|
|
25
25
|
}
|
|
26
26
|
};
|
|
@@ -39,7 +39,7 @@ const schedulerStates = {
|
|
|
39
39
|
codex: createState(),
|
|
40
40
|
gemini: createState(),
|
|
41
41
|
opencode: createState(),
|
|
42
|
-
|
|
42
|
+
omp: createState()
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
function getState(source = 'claude') {
|
|
@@ -22,7 +22,7 @@ const {
|
|
|
22
22
|
|
|
23
23
|
// 默认仓库源
|
|
24
24
|
const DEFAULT_REPOS = [];
|
|
25
|
-
const SUPPORTED_PLATFORMS = ['claude', 'codex', 'gemini', 'opencode', '
|
|
25
|
+
const SUPPORTED_PLATFORMS = ['claude', 'codex', 'gemini', 'opencode', 'omp'];
|
|
26
26
|
const OPENCODE_CONFIG_DIR = NATIVE_PATHS.opencode.config;
|
|
27
27
|
const CLAUDE_COMMANDS_DIR = NATIVE_PATHS.claude.commands
|
|
28
28
|
|| path.join(NATIVE_PATHS.claude.dir || path.dirname(NATIVE_PATHS.claude.settings), 'commands');
|
|
@@ -59,10 +59,10 @@ const PLATFORM_CONFIG = {
|
|
|
59
59
|
repoType: 'gemini-commands',
|
|
60
60
|
fileExtension: '.toml'
|
|
61
61
|
},
|
|
62
|
-
|
|
63
|
-
userCommandsDir: NATIVE_PATHS.
|
|
62
|
+
omp: {
|
|
63
|
+
userCommandsDir: NATIVE_PATHS.omp.commands || path.join(NATIVE_PATHS.omp.dir, 'commands'),
|
|
64
64
|
projectCommandsDir: (projectPath) => path.join(projectPath, '.omp', 'commands'),
|
|
65
|
-
repoType: '
|
|
65
|
+
repoType: 'omp-commands'
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
68
|
|
|
@@ -379,7 +379,7 @@ class CommandsService {
|
|
|
379
379
|
if (this.platform === 'gemini') {
|
|
380
380
|
return generateGeminiCommandToml({ description, body });
|
|
381
381
|
}
|
|
382
|
-
if (this.platform === '
|
|
382
|
+
if (this.platform === 'omp') {
|
|
383
383
|
return body || '';
|
|
384
384
|
}
|
|
385
385
|
|