aitoearn-dsh-plugin-test 0.0.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/AGENT.md +39 -0
- package/README.md +46 -0
- package/cordis.patch.yml +3 -0
- package/lib/client.js +453 -0
- package/lib/client.js.map +7 -0
- package/package.json +138 -0
- package/presets/aitoearn/agent.cordis.yml +22 -0
- package/presets/aitoearn/lib/mcp.js +150 -0
- package/presets/aitoearn/lib/mcp.js.map +7 -0
- package/presets/aitoearn/lib/persona.js +21 -0
- package/presets/aitoearn/lib/persona.js.map +7 -0
- package/presets/aitoearn/package.json +22 -0
- package/presets/aitoearn/preset.yml +3 -0
- package/skills/browser-operations/SKILL.md +85 -0
- package/skills/channel-publish/SKILL.md +99 -0
- package/skills/image-creation/SKILL.md +136 -0
- package/skills/image-creation/references/prompting.md +103 -0
- package/skills/image-creation/references/sample-prompts.md +310 -0
- package/skills/image-edit/SKILL.md +95 -0
- package/skills/video-generation/SKILL.md +61 -0
- package/skills/video-generation/references/model-comparison.md +76 -0
- package/skills/video-generation/references/seedance-2-0-guide.md +1050 -0
- package/skills/video-generation/references/seedance-2-5-guide.md +997 -0
- package/src/dsh/auth.d.ts +25 -0
- package/src/dsh/auth.js +60 -0
- package/src/dsh/auth.js.map +1 -0
- package/src/dsh/client/AitoearnCard.d.ts +15 -0
- package/src/dsh/client/AitoearnCard.js +50 -0
- package/src/dsh/client/AitoearnCard.js.map +1 -0
- package/src/dsh/client/card-store.d.ts +34 -0
- package/src/dsh/client/card-store.js +130 -0
- package/src/dsh/client/card-store.js.map +1 -0
- package/src/dsh/client/card.css.d.ts +31 -0
- package/src/dsh/client/card.css.js +80 -0
- package/src/dsh/client/card.css.js.map +1 -0
- package/src/dsh/client/i18n.d.ts +55 -0
- package/src/dsh/client/i18n.js +49 -0
- package/src/dsh/client/i18n.js.map +1 -0
- package/src/dsh/client/index.d.ts +4 -0
- package/src/dsh/client/index.js +21 -0
- package/src/dsh/client/index.js.map +1 -0
- package/src/dsh/index.d.ts +8 -0
- package/src/dsh/index.js +20 -0
- package/src/dsh/index.js.map +1 -0
- package/src/dsh/mcp.d.ts +5 -0
- package/src/dsh/mcp.js +54 -0
- package/src/dsh/mcp.js.map +1 -0
- package/src/dsh/paths.d.ts +6 -0
- package/src/dsh/paths.js +22 -0
- package/src/dsh/paths.js.map +1 -0
- package/src/dsh/persona.d.ts +4 -0
- package/src/dsh/persona.js +19 -0
- package/src/dsh/persona.js.map +1 -0
- package/src/dsh/preset-sync.d.ts +1 -0
- package/src/dsh/preset-sync.js +55 -0
- package/src/dsh/preset-sync.js.map +1 -0
- package/src/dsh/settings-schema.d.ts +13 -0
- package/src/dsh/settings-schema.js +15 -0
- package/src/dsh/settings-schema.js.map +1 -0
- package/src/dsh/tool-name.d.ts +9 -0
- package/src/dsh/tool-name.js +32 -0
- package/src/dsh/tool-name.js.map +1 -0
package/src/dsh/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SETTINGS_NAMESPACE } from './auth.js';
|
|
2
|
+
import { syncAitoearnPreset } from './preset-sync.js';
|
|
3
|
+
import { aitoearnSettingsSchema, settingsEntry } from './settings-schema.js';
|
|
4
|
+
export const name = 'aitoearn';
|
|
5
|
+
export { SETTINGS_NAMESPACE };
|
|
6
|
+
export function apply(ctx, config = {}, paths) {
|
|
7
|
+
ctx.inject(['settings'], (scoped) => {
|
|
8
|
+
scoped.settings.installSection(ctx, SETTINGS_NAMESPACE, aitoearnSettingsSchema, settingsEntry(config), {
|
|
9
|
+
setSource() { },
|
|
10
|
+
onChange() { },
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
try {
|
|
14
|
+
syncAitoearnPreset(paths?.sourceDir, paths?.targetDir);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
ctx.logger.error(error, 'Aitoearn preset sync failed');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../tools/agent-plugin/src/dsh/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE5E,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAA;AAC9B,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAE7B,MAAM,UAAU,KAAK,CACnB,GAAY,EACZ,SAA+B,EAAE,EACjC,KAAkD;IAElD,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE;QAClC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE;YACrG,SAAS,KAAI,CAAC;YACd,QAAQ,KAAI,CAAC;SACd,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,IAAI,CAAC;QACH,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAA;IACxD,CAAC;AACH,CAAC"}
|
package/src/dsh/mcp.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import { AitoearnPluginConfig } from './auth.js';
|
|
3
|
+
export declare const name = "aitoearn-mcp";
|
|
4
|
+
export declare const inject: string[];
|
|
5
|
+
export declare function apply(ctx: Context, config?: AitoearnPluginConfig): Promise<void>;
|
package/src/dsh/mcp.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { authorizationHeader, pluginConfigFromSettings, resolveAuth, SETTINGS_NAMESPACE } from './auth.js';
|
|
3
|
+
import { MCP_SERVER_NAME, patchRawToolNames } from './tool-name.js';
|
|
4
|
+
const runtimeRequire = createRequire(import.meta.url);
|
|
5
|
+
export const name = 'aitoearn-mcp';
|
|
6
|
+
export const inject = ['tools'];
|
|
7
|
+
export async function apply(ctx, config = {}) {
|
|
8
|
+
let current = () => config;
|
|
9
|
+
let restoreNames;
|
|
10
|
+
let fiber;
|
|
11
|
+
const unmount = () => {
|
|
12
|
+
restoreNames?.();
|
|
13
|
+
restoreNames = undefined;
|
|
14
|
+
void fiber?.dispose();
|
|
15
|
+
fiber = undefined;
|
|
16
|
+
};
|
|
17
|
+
const mount = async () => {
|
|
18
|
+
unmount();
|
|
19
|
+
const auth = resolveAuth(current());
|
|
20
|
+
if (auth.apiKey.length === 0 || auth.mcpUrl.length === 0) {
|
|
21
|
+
ctx.logger.warn('aitoearn-mcp: skip mounting; API key or MCP URL is not configured yet');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
restoreNames = patchRawToolNames(ctx.tools, MCP_SERVER_NAME, (publicName) => {
|
|
25
|
+
ctx.logger.info(`kept qualified MCP tool name ${publicName}`);
|
|
26
|
+
});
|
|
27
|
+
const mcpClient = runtimeRequire('@deepseek-ai/dsh-mcp-client');
|
|
28
|
+
const mcpConfig = {
|
|
29
|
+
serverName: MCP_SERVER_NAME,
|
|
30
|
+
transport: 'streamable-http',
|
|
31
|
+
url: auth.mcpUrl,
|
|
32
|
+
headers: authorizationHeader(auth.apiKey),
|
|
33
|
+
failOnStartupError: false,
|
|
34
|
+
toolCallTimeoutMs: 120000,
|
|
35
|
+
};
|
|
36
|
+
fiber = ctx.plugin(mcpClient, mcpConfig);
|
|
37
|
+
await fiber;
|
|
38
|
+
ctx.logger.info(`aitoearn-mcp: mounted MCP tools from ${auth.mcpUrl}`);
|
|
39
|
+
};
|
|
40
|
+
ctx.inject(['settings'], (scoped) => {
|
|
41
|
+
current = () => pluginConfigFromSettings(scoped.settings.get(SETTINGS_NAMESPACE), config);
|
|
42
|
+
ctx.on('settings/document-updated', (namespace) => {
|
|
43
|
+
if (String(namespace) === SETTINGS_NAMESPACE)
|
|
44
|
+
void mount();
|
|
45
|
+
});
|
|
46
|
+
// The initial apply-time mount may run before the settings section is
|
|
47
|
+
// readable; mount again once it is, so a stored key takes effect without
|
|
48
|
+
// requiring a manual settings save.
|
|
49
|
+
void mount();
|
|
50
|
+
});
|
|
51
|
+
ctx.effect(() => unmount, 'aitoearn-mcp.client');
|
|
52
|
+
await mount();
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../../../../tools/agent-plugin/src/dsh/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function packageRoot(): string;
|
|
2
|
+
export declare function bundledPresetDir(root?: string): string;
|
|
3
|
+
export declare function bundledSkillsDir(root?: string): string;
|
|
4
|
+
export declare function bundledAgentPath(root?: string): string;
|
|
5
|
+
export declare function dshHomeDir(dshHome?: string): string;
|
|
6
|
+
export declare function userPresetDir(dshHome?: string): string;
|
package/src/dsh/paths.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { homedir } from 'node:os';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
export function packageRoot() {
|
|
5
|
+
return dirname(dirname(fileURLToPath(import.meta.url)));
|
|
6
|
+
}
|
|
7
|
+
export function bundledPresetDir(root = packageRoot()) {
|
|
8
|
+
return join(root, 'presets', 'aitoearn');
|
|
9
|
+
}
|
|
10
|
+
export function bundledSkillsDir(root = packageRoot()) {
|
|
11
|
+
return join(root, 'skills');
|
|
12
|
+
}
|
|
13
|
+
export function bundledAgentPath(root = packageRoot()) {
|
|
14
|
+
return join(root, 'AGENT.md');
|
|
15
|
+
}
|
|
16
|
+
export function dshHomeDir(dshHome = process.env['DSH_HOME'] || join(homedir(), '.dsh')) {
|
|
17
|
+
return dshHome;
|
|
18
|
+
}
|
|
19
|
+
export function userPresetDir(dshHome = dshHomeDir()) {
|
|
20
|
+
return join(dshHome, '.agent-presets', 'aitoearn');
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../../../../tools/agent-plugin/src/dsh/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe,WAAW,EAAE;IAC3D,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAI,GAAG,WAAW,EAAE;IACnD,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAI,GAAG,WAAW,EAAE;IACnD,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC;IACrF,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAkB,UAAU,EAAE;IAC1D,OAAO,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAA;AACpD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
export const name = 'aitoearn-persona';
|
|
3
|
+
export const inject = ['systemPrompt'];
|
|
4
|
+
/**
|
|
5
|
+
* Bundled as `<preset dir>/lib/persona.js`; the persona text lives one level
|
|
6
|
+
* up beside `preset.yml`, so the preset directory stays self-contained.
|
|
7
|
+
*/
|
|
8
|
+
function agentPath() {
|
|
9
|
+
return new URL('../AGENT.md', import.meta.url);
|
|
10
|
+
}
|
|
11
|
+
export function apply(ctx) {
|
|
12
|
+
const text = readFileSync(agentPath(), 'utf8');
|
|
13
|
+
ctx.systemPrompt.section({
|
|
14
|
+
name: 'aitoearn:persona',
|
|
15
|
+
order: 0,
|
|
16
|
+
text,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=persona.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.js","sourceRoot":"","sources":["../../../../../../tools/agent-plugin/src/dsh/persona.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAItC,MAAM,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAA;AACtC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,cAAc,CAAC,CAAA;AAEtC;;;GAGG;AACH,SAAS,SAAS;IAChB,OAAO,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAA;IAC9C,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC;QACvB,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,CAAC;QACR,IAAI;KACL,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function syncAitoearnPreset(sourceDir?: string, targetDir?: string, dshHome?: string): string;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { cpSync, existsSync, mkdirSync, readlinkSync, rmSync, symlinkSync } from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { bundledAgentPath, bundledPresetDir, bundledSkillsDir, dshHomeDir, packageRoot, userPresetDir } from './paths.js';
|
|
5
|
+
/** The module the bundled MCP entry resolves at runtime from the preset directory. */
|
|
6
|
+
const MCP_CLIENT_PACKAGE = '@deepseek-ai/dsh-mcp-client';
|
|
7
|
+
/**
|
|
8
|
+
* Make one bare package resolvable by plain Node resolution from the preset
|
|
9
|
+
* directory. Module resolution from `<dshHome>/.agent-presets/aitoearn` walks
|
|
10
|
+
* `<dshHome>/node_modules` — which nothing populates — so every bare runtime
|
|
11
|
+
* import a bundled preset module makes needs its package linked there. An
|
|
12
|
+
* existing real directory at the link path is left untouched.
|
|
13
|
+
*/
|
|
14
|
+
function linkRuntimeDependency(packageName, dshHome) {
|
|
15
|
+
const link = join(dshHome, 'node_modules', packageName);
|
|
16
|
+
let existing;
|
|
17
|
+
try {
|
|
18
|
+
existing = readlinkSync(link);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
existing = undefined;
|
|
22
|
+
}
|
|
23
|
+
if (existing !== undefined)
|
|
24
|
+
return;
|
|
25
|
+
if (existsSync(link))
|
|
26
|
+
return;
|
|
27
|
+
const hostRequire = createRequire(join(packageRoot(), 'package.json'));
|
|
28
|
+
const target = nearestPackageDir(hostRequire, packageName);
|
|
29
|
+
mkdirSync(dirname(link), { recursive: true });
|
|
30
|
+
symlinkSync(target, link, process.platform === 'win32' ? 'junction' : 'dir');
|
|
31
|
+
}
|
|
32
|
+
/** Locate the installed package directory for one bare specifier. */
|
|
33
|
+
function nearestPackageDir(hostRequire, packageName) {
|
|
34
|
+
for (const searchPath of hostRequire.resolve.paths(packageName) ?? []) {
|
|
35
|
+
const manifest = join(searchPath, packageName, 'package.json');
|
|
36
|
+
if (existsSync(manifest))
|
|
37
|
+
return dirname(manifest);
|
|
38
|
+
}
|
|
39
|
+
throw new Error(`Aitoearn preset: cannot resolve installed package ${JSON.stringify(packageName)} for preset linking`);
|
|
40
|
+
}
|
|
41
|
+
export function syncAitoearnPreset(sourceDir = bundledPresetDir(), targetDir = userPresetDir(), dshHome = dshHomeDir()) {
|
|
42
|
+
if (!existsSync(sourceDir)) {
|
|
43
|
+
throw new Error(`Aitoearn preset is missing at ${sourceDir}`);
|
|
44
|
+
}
|
|
45
|
+
mkdirSync(dirname(targetDir), { recursive: true });
|
|
46
|
+
rmSync(targetDir, { recursive: true, force: true });
|
|
47
|
+
cpSync(sourceDir, targetDir, { recursive: true });
|
|
48
|
+
if (existsSync(bundledAgentPath()))
|
|
49
|
+
cpSync(bundledAgentPath(), join(targetDir, 'AGENT.md'));
|
|
50
|
+
if (existsSync(bundledSkillsDir()))
|
|
51
|
+
cpSync(bundledSkillsDir(), join(targetDir, 'skills'), { recursive: true });
|
|
52
|
+
linkRuntimeDependency(MCP_CLIENT_PACKAGE, dshHome);
|
|
53
|
+
return targetDir;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=preset-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-sync.js","sourceRoot":"","sources":["../../../../../../tools/agent-plugin/src/dsh/preset-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import z from '@deepseek-ai/schemastery';
|
|
2
|
+
import { AitoearnPluginConfig } from './auth.js';
|
|
3
|
+
export declare const aitoearnSettingsSchema: z<Schemastery.ObjectS<{
|
|
4
|
+
environment: z<"global" | "cn" | "custom", "global" | "cn" | "custom">;
|
|
5
|
+
baseUrl: z<string, string>;
|
|
6
|
+
apiKey: z<string, string>;
|
|
7
|
+
}>, Schemastery.ObjectT<{
|
|
8
|
+
environment: z<"global" | "cn" | "custom", "global" | "cn" | "custom">;
|
|
9
|
+
baseUrl: z<string, string>;
|
|
10
|
+
apiKey: z<string, string>;
|
|
11
|
+
}>>;
|
|
12
|
+
export type AitoearnSettings = ReturnType<typeof aitoearnSettingsSchema>;
|
|
13
|
+
export declare function settingsEntry(config: AitoearnPluginConfig): AitoearnSettings;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import z from '@deepseek-ai/schemastery';
|
|
2
|
+
import { resolveEnvironment } from './auth.js';
|
|
3
|
+
export const aitoearnSettingsSchema = z.object({
|
|
4
|
+
environment: z.union(['global', 'cn', 'custom']).default('global'),
|
|
5
|
+
baseUrl: z.string().default(''),
|
|
6
|
+
apiKey: z.string().role('secret').default(''),
|
|
7
|
+
});
|
|
8
|
+
export function settingsEntry(config) {
|
|
9
|
+
return aitoearnSettingsSchema({
|
|
10
|
+
environment: resolveEnvironment(config.environment),
|
|
11
|
+
baseUrl: config.baseUrl ?? '',
|
|
12
|
+
apiKey: config.apiKey ?? '',
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=settings-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-schema.js","sourceRoot":"","sources":["../../../../../../tools/agent-plugin/src/dsh/settings-schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,0BAA0B,CAAA;AACxC,OAAO,EAAwB,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAEpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAClE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC9C,CAAC,CAAA;AAIF,MAAM,UAAU,aAAa,CAAC,MAA4B;IACxD,OAAO,sBAAsB,CAAC;QAC5B,WAAW,EAAE,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC;QACnD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;KAC5B,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ToolRuntime } from '@deepseek-ai/dsh-tools';
|
|
2
|
+
export declare const MCP_SERVER_NAME = "aitoearn";
|
|
3
|
+
export interface RawPublicName {
|
|
4
|
+
modelName: string;
|
|
5
|
+
stripped: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function qualifiedPrefix(serverName?: string): string;
|
|
8
|
+
export declare function toRawPublicName(publicName: string, serverName?: string): RawPublicName;
|
|
9
|
+
export declare function patchRawToolNames(tools: Pick<ToolRuntime, 'register'>, serverName?: string, onKeepQualified?: (publicName: string) => void): () => void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const MCP_SERVER_NAME = 'aitoearn';
|
|
2
|
+
const HASHED_PUBLIC_NAME = /_[0-9a-f]{12}$/;
|
|
3
|
+
export function qualifiedPrefix(serverName = MCP_SERVER_NAME) {
|
|
4
|
+
return `mcp__${serverName}__`;
|
|
5
|
+
}
|
|
6
|
+
export function toRawPublicName(publicName, serverName = MCP_SERVER_NAME) {
|
|
7
|
+
const prefix = qualifiedPrefix(serverName);
|
|
8
|
+
if (!publicName.startsWith(prefix))
|
|
9
|
+
return { modelName: publicName, stripped: false };
|
|
10
|
+
if (publicName.length === 64 && HASHED_PUBLIC_NAME.test(publicName))
|
|
11
|
+
return { modelName: publicName, stripped: false };
|
|
12
|
+
const raw = publicName.slice(prefix.length);
|
|
13
|
+
if (raw.length === 0)
|
|
14
|
+
return { modelName: publicName, stripped: false };
|
|
15
|
+
return { modelName: raw, stripped: true };
|
|
16
|
+
}
|
|
17
|
+
export function patchRawToolNames(tools, serverName = MCP_SERVER_NAME, onKeepQualified) {
|
|
18
|
+
const original = tools.register.bind(tools);
|
|
19
|
+
tools.register = (definition) => {
|
|
20
|
+
const next = toRawPublicName(definition.name, serverName);
|
|
21
|
+
if (!next.stripped) {
|
|
22
|
+
if (definition.name.startsWith(qualifiedPrefix(serverName)))
|
|
23
|
+
onKeepQualified?.(definition.name);
|
|
24
|
+
return original(definition);
|
|
25
|
+
}
|
|
26
|
+
return original({ ...definition, name: next.modelName });
|
|
27
|
+
};
|
|
28
|
+
return () => {
|
|
29
|
+
tools.register = original;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=tool-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-name.js","sourceRoot":"","sources":["../../../../../../tools/agent-plugin/src/dsh/tool-name.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAA;AAEzC,MAAM,kBAAkB,GAAG,gBAAgB,CAAA;AAO3C,MAAM,UAAU,eAAe,CAAC,UAAU,GAAG,eAAe;IAC1D,OAAO,QAAQ,UAAU,IAAI,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,UAAU,GAAG,eAAe;IAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;IAC1C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;QAChC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;IACnD,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;QACjE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;IACnD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAClB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;IACnD,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAoC,EACpC,UAAU,GAAG,eAAe,EAC5B,eAA8C;IAE9C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3C,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QACzD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBACzD,eAAe,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YACpC,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAA;QAC7B,CAAC;QACD,OAAO,QAAQ,CAAC,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;IAC1D,CAAC,CAAA;IACD,OAAO,GAAG,EAAE;QACV,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC3B,CAAC,CAAA;AACH,CAAC"}
|