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.
Files changed (72) hide show
  1. package/README.md +5 -6
  2. package/dist/web/assets/{Analytics-Dma_j2Rq.js → Analytics-Dpje9L84.js} +1 -1
  3. package/dist/web/assets/{ConfigTemplates-C49Y1PLH.js → ConfigTemplates-Cz6kasek.js} +1 -1
  4. package/dist/web/assets/Home-BwTaYu3q.js +1 -0
  5. package/dist/web/assets/Home-Jom_ZcdY.css +1 -0
  6. package/dist/web/assets/{PluginManager-B1ECTHyY.js → PluginManager-DsN-xNXx.js} +1 -1
  7. package/dist/web/assets/ProjectList-4BCObimU.js +1 -0
  8. package/dist/web/assets/{ProjectList-B_L55-l9.css → ProjectList-D3a0oRum.css} +1 -1
  9. package/dist/web/assets/{SessionList-CH5GwwiJ.js → SessionList-D4c8FRzq.js} +1 -1
  10. package/dist/web/assets/{SkillManager-CRyVhjYQ.js → SkillManager-C-KYbXB5.js} +1 -1
  11. package/dist/web/assets/{WorkspaceManager-CO9tclVt.js → WorkspaceManager-B-BlPJHX.js} +1 -1
  12. package/dist/web/assets/index-Btfvh0GG.js +2 -0
  13. package/dist/web/assets/{index-CM26UrnJ.css → index-CLNa6DhH.css} +1 -1
  14. package/dist/web/index.html +2 -2
  15. package/package.json +2 -1
  16. package/src/commands/channels.js +8 -8
  17. package/src/commands/daemon.js +4 -4
  18. package/src/commands/doctor.js +1 -1
  19. package/src/commands/logs.js +1 -3
  20. package/src/commands/port-config.js +4 -4
  21. package/src/commands/proxy-control.js +13 -13
  22. package/src/commands/stats.js +6 -6
  23. package/src/commands/toggle-proxy.js +8 -8
  24. package/src/config/default.js +3 -3
  25. package/src/config/paths.js +46 -49
  26. package/src/index.js +4 -5
  27. package/src/server/api/commands.js +1 -1
  28. package/src/server/api/config-export.js +2 -2
  29. package/src/server/api/config-registry.js +1 -1
  30. package/src/server/api/config.js +1 -1
  31. package/src/server/api/dashboard.js +16 -16
  32. package/src/server/api/mcp.js +2 -2
  33. package/src/server/api/{pi-channels.js → omp-channels.js} +15 -15
  34. package/src/server/api/{pi-config.js → omp-config.js} +13 -13
  35. package/src/server/api/{pi-projects.js → omp-projects.js} +5 -5
  36. package/src/server/api/{pi-proxy.js → omp-proxy.js} +18 -18
  37. package/src/server/api/{pi-sessions.js → omp-sessions.js} +21 -21
  38. package/src/server/api/{pi-statistics.js → omp-statistics.js} +1 -1
  39. package/src/server/api/plugins.js +1 -1
  40. package/src/server/api/skills.js +1 -1
  41. package/src/server/api/workspaces.js +1 -1
  42. package/src/server/index.js +10 -10
  43. package/src/server/{pi-proxy-server.js → omp-proxy-server.js} +13 -13
  44. package/src/server/services/channel-balance.js +3 -3
  45. package/src/server/services/channel-scheduler.js +4 -4
  46. package/src/server/services/commands-service.js +5 -5
  47. package/src/server/services/config-export-service.js +53 -53
  48. package/src/server/services/config-registry-service.js +8 -8
  49. package/src/server/services/config-sync-manager.js +26 -26
  50. package/src/server/services/config-templates-service.js +28 -28
  51. package/src/server/services/mcp-service.js +20 -20
  52. package/src/server/services/notification-hooks.js +138 -6
  53. package/src/server/services/{pi-auth-providers.js → omp-auth-providers.js} +2 -2
  54. package/src/server/services/{pi-channels.js → omp-channels.js} +5 -5
  55. package/src/server/services/{pi-config.js → omp-config.js} +47 -65
  56. package/src/server/services/{pi-sessions.js → omp-sessions.js} +20 -20
  57. package/src/server/services/{pi-settings-manager.js → omp-settings-manager.js} +422 -18
  58. package/src/server/services/{pi-statistics-service.js → omp-statistics-service.js} +2 -2
  59. package/src/server/services/plugins-service.js +122 -122
  60. package/src/server/services/prompts-service.js +20 -20
  61. package/src/server/services/proxy-log-helper.js +1 -1
  62. package/src/server/services/proxy-runtime.js +1 -1
  63. package/src/server/services/skill-service.js +7 -7
  64. package/src/server/services/speed-test.js +29 -29
  65. package/src/server/services/ui-config.js +3 -3
  66. package/src/server/services/workspace-service.js +8 -8
  67. package/src/server/websocket-server.js +4 -4
  68. package/src/shared/platforms.js +201 -0
  69. package/dist/web/assets/Home-DGGC8H4g.js +0 -1
  70. package/dist/web/assets/Home-ewgeIhF7.css +0 -1
  71. package/dist/web/assets/ProjectList-DyiGyT-H.js +0 -1
  72. package/dist/web/assets/index-EQq56pRa.js +0 -2
@@ -11,9 +11,9 @@ const {
11
11
  deleteSession,
12
12
  forkSession,
13
13
  saveSessionOrder,
14
- isPiInstalled,
14
+ isOmpInstalled,
15
15
  HOME_DIR
16
- } = require('../services/pi-sessions');
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 (!isPiInstalled()) {
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: 'pi' });
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 (!isPiInstalled()) {
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: 'pi' });
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 (!isPiInstalled()) {
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 (!isPiInstalled()) {
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 (!isPiInstalled()) {
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 (!isPiInstalled()) {
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 (!isPiInstalled()) {
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 || 'pi'
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 (!isPiInstalled()) {
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 (!isPiInstalled()) {
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 (!isPiInstalled()) {
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 (!isPiInstalled()) {
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 (!isPiInstalled()) {
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: 'pi',
313
- toolType: 'pi',
314
- source: 'pi',
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: 'pi',
323
+ tool: 'omp',
324
324
  command,
325
325
  copyCommand
326
326
  });
@@ -4,7 +4,7 @@ const {
4
4
  getStatistics,
5
5
  getDailyStatistics,
6
6
  getTodayStatistics
7
- } = require('../services/pi-statistics-service');
7
+ } = require('../services/omp-statistics-service');
8
8
 
9
9
  router.get('/summary', (req, res) => {
10
10
  try {
@@ -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', 'pi'];
13
+ const SUPPORTED_PLATFORMS = ['claude', 'codex', 'gemini', 'opencode', 'omp'];
14
14
  const pluginServices = new Map();
15
15
 
16
16
  function resolvePlatform(rawPlatform) {
@@ -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', 'pi'];
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' | 'pi' | 'omp', projectName?: string }
414
+ * Body: { tool: 'claude' | 'codex' | 'gemini' | 'opencode' | 'omp' | 'omp', projectName?: string }
415
415
  */
416
416
  router.post('/:id/launch', (req, res) => {
417
417
  try {
@@ -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 { startPiProxyServer } = require('./pi-proxy-server');
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/pi/projects', require('./api/pi-projects')(config));
207
- app.use('/api/pi/sessions', require('./api/pi-sessions')(config));
208
- app.use('/api/pi/channels', require('./api/pi-channels')(config));
209
- app.use('/api/pi/proxy', require('./api/pi-proxy'));
210
- app.use('/api/pi/statistics', require('./api/pi-statistics'));
211
- app.use('/api/pi/config', require('./api/pi-config'));
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 piActiveFile = PATHS.activeChannel.pi;
455
- if (fs.existsSync(piActiveFile)) {
454
+ const ompActiveFile = PATHS.activeChannel.omp;
455
+ if (fs.existsSync(ompActiveFile)) {
456
456
  console.log(chalk.cyan('\n[SYNC] 检测到 OMP 受管渠道状态文件,正在自动恢复...'));
457
- startPiProxyServer({ preserveStartTime: true })
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/pi-channels');
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 startPiProxyServer(options = {}) {
9
+ async function startOmpProxyServer(options = {}) {
10
10
  const preserveStartTime = options.preserveStartTime || false;
11
11
  const config = loadConfig();
12
- currentPort = config.ports?.piProxy || 20092;
12
+ currentPort = config.ports?.ompProxy || 20092;
13
13
  lastSyncResult = syncManagedOmpProviders();
14
14
  running = true;
15
- saveProxyStartTime('pi', preserveStartTime);
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 stopPiProxyServer(options = {}) {
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('pi');
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 getPiProxyStatus() {
41
+ function getOmpProxyStatus() {
42
42
  const config = loadConfig();
43
- const startTime = getProxyStartTime('pi', { allowRecovery: running });
44
- const runtime = getProxyRuntime('pi', { allowRecovery: running });
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?.piProxy || 20092,
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
- startPiProxyServer,
64
- stopPiProxyServer,
65
- getPiProxyStatus
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', 'pi']);
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 === 'pi') {
1626
- return require('./pi-channels').getChannels().channels || [];
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: getPiChannels } = require('./pi-channels');
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
- pi: () => {
23
- const data = getPiChannels();
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
- pi: createState()
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', 'pi'];
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
- pi: {
63
- userCommandsDir: NATIVE_PATHS.pi.commands || path.join(NATIVE_PATHS.pi.dir, 'commands'),
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: 'pi-commands'
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 === 'pi') {
382
+ if (this.platform === 'omp') {
383
383
  return body || '';
384
384
  }
385
385