mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-21 09:17:53 +00:00
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import * as fs from 'node:fs';
|
|
import * as path from 'node:path';
|
|
import {
|
|
EXTENSIONS_CONFIG_FILENAME,
|
|
INSTALL_METADATA_FILENAME,
|
|
} from '../config/extension.js';
|
|
import {
|
|
type MCPServerConfig,
|
|
type ExtensionInstallMetadata,
|
|
} from '@qwen-code/qwen-code-core';
|
|
|
|
export function createExtension({
|
|
extensionsDir = 'extensions-dir',
|
|
name = 'my-extension',
|
|
version = '1.0.0',
|
|
addContextFile = false,
|
|
contextFileName = undefined as string | undefined,
|
|
mcpServers = {} as Record<string, MCPServerConfig>,
|
|
installMetadata = undefined as ExtensionInstallMetadata | undefined,
|
|
} = {}): string {
|
|
const extDir = path.join(extensionsDir, name);
|
|
fs.mkdirSync(extDir, { recursive: true });
|
|
fs.writeFileSync(
|
|
path.join(extDir, EXTENSIONS_CONFIG_FILENAME),
|
|
JSON.stringify({ name, version, contextFileName, mcpServers }),
|
|
);
|
|
|
|
if (addContextFile) {
|
|
fs.writeFileSync(path.join(extDir, 'QWEN.md'), 'context');
|
|
}
|
|
|
|
if (contextFileName) {
|
|
fs.writeFileSync(path.join(extDir, contextFileName), 'context');
|
|
}
|
|
|
|
if (installMetadata) {
|
|
fs.writeFileSync(
|
|
path.join(extDir, INSTALL_METADATA_FILENAME),
|
|
JSON.stringify(installMetadata),
|
|
);
|
|
}
|
|
return extDir;
|
|
}
|