@downcity/plugins 1.0.56 → 1.0.57
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/bin/BuiltinPlugins.d.ts.map +1 -1
- package/bin/BuiltinPlugins.js +0 -4
- package/bin/BuiltinPlugins.js.map +1 -1
- package/bin/asr/Plugin.d.ts +67 -7
- package/bin/asr/Plugin.d.ts.map +1 -1
- package/bin/asr/Plugin.js +229 -461
- package/bin/asr/Plugin.js.map +1 -1
- package/bin/asr/types/AsrPlugin.d.ts +114 -0
- package/bin/asr/types/AsrPlugin.d.ts.map +1 -0
- package/bin/asr/types/AsrPlugin.js +10 -0
- package/bin/asr/types/AsrPlugin.js.map +1 -0
- package/bin/image/ImagePlugin.d.ts +1 -1
- package/bin/image/ImagePlugin.d.ts.map +1 -1
- package/bin/image/ImagePlugin.js +23 -5
- package/bin/image/ImagePlugin.js.map +1 -1
- package/bin/index.d.ts +2 -0
- package/bin/index.d.ts.map +1 -1
- package/bin/tts/Plugin.d.ts +53 -6
- package/bin/tts/Plugin.d.ts.map +1 -1
- package/bin/tts/Plugin.js +197 -474
- package/bin/tts/Plugin.js.map +1 -1
- package/bin/tts/types/TtsPlugin.d.ts +63 -102
- package/bin/tts/types/TtsPlugin.d.ts.map +1 -1
- package/bin/tts/types/TtsPlugin.js +4 -3
- package/bin/tts/types/TtsPlugin.js.map +1 -1
- package/bin/web/PROMPT.d.ts +1 -1
- package/bin/web/PROMPT.d.ts.map +1 -1
- package/bin/web/PROMPT.js +1 -1
- package/bin/web/PROMPT.js.map +1 -1
- package/bin/web/Plugin.d.ts +66 -5
- package/bin/web/Plugin.d.ts.map +1 -1
- package/bin/web/Plugin.js +126 -450
- package/bin/web/Plugin.js.map +1 -1
- package/bin/web/WebPromptAssets.d.ts +1 -9
- package/bin/web/WebPromptAssets.d.ts.map +1 -1
- package/bin/web/WebPromptAssets.js +1 -11
- package/bin/web/WebPromptAssets.js.map +1 -1
- package/bin/web/runtime/Install.d.ts +19 -0
- package/bin/web/runtime/Install.d.ts.map +1 -0
- package/bin/web/runtime/Install.js +178 -0
- package/bin/web/runtime/Install.js.map +1 -0
- package/bin/web/types/WebPlugin.d.ts +37 -109
- package/bin/web/types/WebPlugin.d.ts.map +1 -1
- package/bin/web/types/WebPlugin.js +5 -7
- package/bin/web/types/WebPlugin.js.map +1 -1
- package/package.json +2 -2
- package/src/BuiltinPlugins.ts +0 -4
- package/src/asr/Plugin.ts +264 -483
- package/src/asr/types/AsrPlugin.ts +118 -0
- package/src/image/ImagePlugin.ts +23 -5
- package/src/index.ts +12 -0
- package/src/tts/Plugin.ts +225 -492
- package/src/tts/types/TtsPlugin.ts +67 -102
- package/src/web/PROMPT.ts +1 -1
- package/src/web/PROMPT.ts.txt +32 -6
- package/src/web/Plugin.ts +119 -453
- package/src/web/WebPromptAssets.ts +1 -13
- package/src/web/runtime/Install.ts +241 -0
- package/src/web/types/WebPlugin.ts +37 -113
- package/bin/asr/Config.d.ts +0 -43
- package/bin/asr/Config.d.ts.map +0 -1
- package/bin/asr/Config.js +0 -107
- package/bin/asr/Config.js.map +0 -1
- package/bin/asr/Dependency.d.ts +0 -77
- package/bin/asr/Dependency.d.ts.map +0 -1
- package/bin/asr/Dependency.js +0 -238
- package/bin/asr/Dependency.js.map +0 -1
- package/bin/asr/InboundAugment.d.ts +0 -17
- package/bin/asr/InboundAugment.d.ts.map +0 -1
- package/bin/asr/InboundAugment.js +0 -47
- package/bin/asr/InboundAugment.js.map +0 -1
- package/bin/asr/ModelCatalog.d.ts +0 -29
- package/bin/asr/ModelCatalog.d.ts.map +0 -1
- package/bin/asr/ModelCatalog.js +0 -25
- package/bin/asr/ModelCatalog.js.map +0 -1
- package/bin/tts/Dependency.d.ts +0 -90
- package/bin/tts/Dependency.d.ts.map +0 -1
- package/bin/tts/Dependency.js +0 -344
- package/bin/tts/Dependency.js.map +0 -1
- package/bin/tts/PluginSupport.d.ts +0 -25
- package/bin/tts/PluginSupport.d.ts.map +0 -1
- package/bin/tts/PluginSupport.js +0 -72
- package/bin/tts/PluginSupport.js.map +0 -1
- package/bin/tts/runtime/Catalog.d.ts +0 -21
- package/bin/tts/runtime/Catalog.d.ts.map +0 -1
- package/bin/tts/runtime/Catalog.js +0 -90
- package/bin/tts/runtime/Catalog.js.map +0 -1
- package/bin/tts/runtime/DependencyInstaller.d.ts +0 -143
- package/bin/tts/runtime/DependencyInstaller.d.ts.map +0 -1
- package/bin/tts/runtime/DependencyInstaller.js +0 -261
- package/bin/tts/runtime/DependencyInstaller.js.map +0 -1
- package/bin/tts/runtime/Installer.d.ts +0 -89
- package/bin/tts/runtime/Installer.d.ts.map +0 -1
- package/bin/tts/runtime/Installer.js +0 -188
- package/bin/tts/runtime/Installer.js.map +0 -1
- package/bin/tts/runtime/Paths.d.ts +0 -20
- package/bin/tts/runtime/Paths.d.ts.map +0 -1
- package/bin/tts/runtime/Paths.js +0 -32
- package/bin/tts/runtime/Paths.js.map +0 -1
- package/bin/tts/runtime/Synthesizer.d.ts +0 -44
- package/bin/tts/runtime/Synthesizer.d.ts.map +0 -1
- package/bin/tts/runtime/Synthesizer.js +0 -363
- package/bin/tts/runtime/Synthesizer.js.map +0 -1
- package/bin/tts/types/Tts.d.ts +0 -91
- package/bin/tts/types/Tts.d.ts.map +0 -1
- package/bin/tts/types/Tts.js +0 -9
- package/bin/tts/types/Tts.js.map +0 -1
- package/bin/voice/Config.d.ts +0 -43
- package/bin/voice/Config.d.ts.map +0 -1
- package/bin/voice/Config.js +0 -104
- package/bin/voice/Config.js.map +0 -1
- package/bin/voice/Dependency.d.ts +0 -77
- package/bin/voice/Dependency.d.ts.map +0 -1
- package/bin/voice/Dependency.js +0 -237
- package/bin/voice/Dependency.js.map +0 -1
- package/bin/voice/InboundAugment.d.ts +0 -17
- package/bin/voice/InboundAugment.d.ts.map +0 -1
- package/bin/voice/InboundAugment.js +0 -47
- package/bin/voice/InboundAugment.js.map +0 -1
- package/bin/voice/ModelCatalog.d.ts +0 -29
- package/bin/voice/ModelCatalog.d.ts.map +0 -1
- package/bin/voice/ModelCatalog.js +0 -25
- package/bin/voice/ModelCatalog.js.map +0 -1
- package/bin/voice/runtime/Catalog.d.ts +0 -18
- package/bin/voice/runtime/Catalog.d.ts.map +0 -1
- package/bin/voice/runtime/Catalog.js +0 -61
- package/bin/voice/runtime/Catalog.js.map +0 -1
- package/bin/voice/runtime/DependencyInstaller.d.ts +0 -145
- package/bin/voice/runtime/DependencyInstaller.d.ts.map +0 -1
- package/bin/voice/runtime/DependencyInstaller.js +0 -309
- package/bin/voice/runtime/DependencyInstaller.js.map +0 -1
- package/bin/voice/runtime/Installer.d.ts +0 -94
- package/bin/voice/runtime/Installer.d.ts.map +0 -1
- package/bin/voice/runtime/Installer.js +0 -200
- package/bin/voice/runtime/Installer.js.map +0 -1
- package/bin/voice/runtime/Paths.d.ts +0 -8
- package/bin/voice/runtime/Paths.d.ts.map +0 -1
- package/bin/voice/runtime/Paths.js +0 -26
- package/bin/voice/runtime/Paths.js.map +0 -1
- package/bin/voice/runtime/Transcriber.d.ts +0 -57
- package/bin/voice/runtime/Transcriber.d.ts.map +0 -1
- package/bin/voice/runtime/Transcriber.js +0 -329
- package/bin/voice/runtime/Transcriber.js.map +0 -1
- package/bin/voice/types/Voice.d.ts +0 -58
- package/bin/voice/types/Voice.d.ts.map +0 -1
- package/bin/voice/types/Voice.js +0 -9
- package/bin/voice/types/Voice.js.map +0 -1
- package/bin/voice/types/VoicePlugin.d.ts +0 -190
- package/bin/voice/types/VoicePlugin.d.ts.map +0 -1
- package/bin/voice/types/VoicePlugin.js +0 -9
- package/bin/voice/types/VoicePlugin.js.map +0 -1
- package/bin/web/Dependency.d.ts +0 -10
- package/bin/web/Dependency.d.ts.map +0 -1
- package/bin/web/Dependency.js +0 -10
- package/bin/web/Dependency.js.map +0 -1
- package/bin/web/PROMPT.agent-browser.d.ts +0 -7
- package/bin/web/PROMPT.agent-browser.d.ts.map +0 -1
- package/bin/web/PROMPT.agent-browser.js +0 -8
- package/bin/web/PROMPT.agent-browser.js.map +0 -1
- package/bin/web/PROMPT.web-access.d.ts +0 -7
- package/bin/web/PROMPT.web-access.d.ts.map +0 -1
- package/bin/web/PROMPT.web-access.js +0 -8
- package/bin/web/PROMPT.web-access.js.map +0 -1
- package/bin/web/runtime/Config.d.ts +0 -21
- package/bin/web/runtime/Config.d.ts.map +0 -1
- package/bin/web/runtime/Config.js +0 -79
- package/bin/web/runtime/Config.js.map +0 -1
- package/bin/web/runtime/Source.d.ts +0 -29
- package/bin/web/runtime/Source.d.ts.map +0 -1
- package/bin/web/runtime/Source.js +0 -209
- package/bin/web/runtime/Source.js.map +0 -1
- package/src/asr/Config.ts +0 -138
- package/src/asr/Dependency.ts +0 -336
- package/src/asr/InboundAugment.ts +0 -59
- package/src/asr/ModelCatalog.ts +0 -43
- package/src/tts/Dependency.ts +0 -473
- package/src/tts/PluginSupport.ts +0 -85
- package/src/tts/runtime/Catalog.ts +0 -97
- package/src/tts/runtime/DependencyInstaller.ts +0 -436
- package/src/tts/runtime/Installer.ts +0 -297
- package/src/tts/runtime/Paths.ts +0 -39
- package/src/tts/runtime/Synthesizer.ts +0 -480
- package/src/tts/types/Tts.ts +0 -99
- package/src/voice/Config.ts +0 -135
- package/src/voice/Dependency.ts +0 -329
- package/src/voice/InboundAugment.ts +0 -59
- package/src/voice/ModelCatalog.ts +0 -43
- package/src/voice/runtime/Catalog.ts +0 -68
- package/src/voice/runtime/DependencyInstaller.ts +0 -505
- package/src/voice/runtime/Installer.ts +0 -324
- package/src/voice/runtime/Paths.ts +0 -26
- package/src/voice/runtime/Transcriber.ts +0 -467
- package/src/voice/types/Voice.ts +0 -68
- package/src/voice/types/VoicePlugin.ts +0 -194
- package/src/web/Dependency.ts +0 -17
- package/src/web/PROMPT.agent-browser.ts +0 -9
- package/src/web/PROMPT.agent-browser.ts.txt +0 -17
- package/src/web/PROMPT.web-access.ts +0 -9
- package/src/web/PROMPT.web-access.ts.txt +0 -13
- package/src/web/runtime/Config.ts +0 -105
- package/src/web/runtime/Source.ts +0 -257
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PROMPT.agent-browser.d.ts","sourceRoot":"","sources":["../../src/web/PROMPT.agent-browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,QAAA,MAAM,mBAAmB,kjCAA2X,CAAC;AAErZ,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 自动生成文件,请勿手改。
|
|
3
|
-
* 源文件:由同路径 `*.ts.txt` 生成。
|
|
4
|
-
*/
|
|
5
|
-
// Source: src/web/PROMPT.agent-browser.ts.txt
|
|
6
|
-
const TEXT_MODULE_CONTENT = "# Web Plugin / agent-browser\n\n当前 provider 是 `agent-browser`。\n\n你应直接使用 `agent-browser` 项目的浏览器自动化方法,而不是在本项目里自己实现浏览器交互。\n\n工作原则:\n\n- 浏览器交互、打开页面、点击、填写、截图、滚动等操作优先交给 `agent-browser`\n- 严格遵循 `agent-browser` 的基本工作流:\n 1. `open`\n 2. `snapshot -i`\n 3. 使用元素引用交互\n 4. 页面变化后重新 snapshot\n- 如果 `agent-browser` provider 不可用,应先报告依赖缺失\n\n你在处理需要浏览器操作的任务时,应以外部 `agent-browser` 项目为准。\n";
|
|
7
|
-
export default TEXT_MODULE_CONTENT;
|
|
8
|
-
//# sourceMappingURL=PROMPT.agent-browser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PROMPT.agent-browser.js","sourceRoot":"","sources":["../../src/web/PROMPT.agent-browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8CAA8C;AAC9C,MAAM,mBAAmB,GAAG,wXAAwX,CAAC;AAErZ,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 自动生成文件,请勿手改。
|
|
3
|
-
* 源文件:由同路径 `*.ts.txt` 生成。
|
|
4
|
-
*/
|
|
5
|
-
declare const TEXT_MODULE_CONTENT = "# Web Plugin / web-access\n\n\u5F53\u524D provider \u662F `web-access`\u3002\n\n\u4F60\u5E94\u76F4\u63A5\u9075\u5FAA\u5DF2\u5B89\u88C5\u7684 `web-access` skill/project \u903B\u8F91\uFF0C\u800C\u4E0D\u662F\u5728\u672C\u9879\u76EE\u91CC\u91CD\u65B0\u5B9E\u73B0\u4E00\u5957\u8054\u7F51\u6846\u67B6\u3002\n\n\u5DE5\u4F5C\u539F\u5219\uFF1A\n\n- \u4F18\u5148\u6CBF\u7528 `web-access` \u81EA\u5DF1\u7684\u8054\u7F51\u7B56\u7565\u3001\u5DE5\u5177\u9009\u62E9\u548C\u6D4F\u89C8\u54F2\u5B66\n- \u628A Downcity \u7684 `web` plugin \u89C6\u4E3A provider \u9009\u62E9\u5668\u4E0E\u63A5\u5165\u5C42\n- \u5982\u679C `web-access` \u4E0D\u53EF\u7528\uFF0C\u5148\u6307\u51FA\u4F9D\u8D56\u7F3A\u5931\uFF0C\u800C\u4E0D\u662F\u81EA\u884C\u9000\u56DE\u5230\u672C\u9879\u76EE\u91CC\u7684\u4E34\u65F6\u5B9E\u73B0\n\n\u4F60\u5728\u5904\u7406\u8054\u7F51\u4EFB\u52A1\u65F6\uFF0C\u5E94\u4EE5\u5916\u90E8 `web-access` \u9879\u76EE\u4E3A\u51C6\u3002\n";
|
|
6
|
-
export default TEXT_MODULE_CONTENT;
|
|
7
|
-
//# sourceMappingURL=PROMPT.web-access.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PROMPT.web-access.d.ts","sourceRoot":"","sources":["../../src/web/PROMPT.web-access.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,QAAA,MAAM,mBAAmB,+5BAAwT,CAAC;AAElV,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 自动生成文件,请勿手改。
|
|
3
|
-
* 源文件:由同路径 `*.ts.txt` 生成。
|
|
4
|
-
*/
|
|
5
|
-
// Source: src/web/PROMPT.web-access.ts.txt
|
|
6
|
-
const TEXT_MODULE_CONTENT = "# Web Plugin / web-access\n\n当前 provider 是 `web-access`。\n\n你应直接遵循已安装的 `web-access` skill/project 逻辑,而不是在本项目里重新实现一套联网框架。\n\n工作原则:\n\n- 优先沿用 `web-access` 自己的联网策略、工具选择和浏览哲学\n- 把 Downcity 的 `web` plugin 视为 provider 选择器与接入层\n- 如果 `web-access` 不可用,先指出依赖缺失,而不是自行退回到本项目里的临时实现\n\n你在处理联网任务时,应以外部 `web-access` 项目为准。\n";
|
|
7
|
-
export default TEXT_MODULE_CONTENT;
|
|
8
|
-
//# sourceMappingURL=PROMPT.web-access.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PROMPT.web-access.js","sourceRoot":"","sources":["../../src/web/PROMPT.web-access.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,2CAA2C;AAC3C,MAAM,mBAAmB,GAAG,qTAAqT,CAAC;AAElV,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Web Plugin 配置读写。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - `web` 默认启用,不要求用户先在 `downcity.json` 写配置。
|
|
6
|
-
* - 只有当用户显式改动时,才把 `plugins.web` 持久化到项目配置。
|
|
7
|
-
*/
|
|
8
|
-
import type { PluginCommandContext } from "@downcity/agent/internal/plugin/types/Plugin.js";
|
|
9
|
-
import type { ResolvedWebPluginConfig, WebPluginConfig } from "../../web/types/WebPlugin.js";
|
|
10
|
-
/**
|
|
11
|
-
* 读取并归一化 web plugin 配置。
|
|
12
|
-
*/
|
|
13
|
-
export declare function readWebPluginConfig(context: PluginCommandContext): ResolvedWebPluginConfig;
|
|
14
|
-
/**
|
|
15
|
-
* 写入 web plugin 配置。
|
|
16
|
-
*/
|
|
17
|
-
export declare function writeWebPluginConfig(params: {
|
|
18
|
-
context: PluginCommandContext;
|
|
19
|
-
value: Partial<WebPluginConfig>;
|
|
20
|
-
}): Promise<ResolvedWebPluginConfig>;
|
|
21
|
-
//# sourceMappingURL=Config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/web/runtime/Config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAmCzF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,GAC5B,uBAAuB,CA6BzB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,OAAO,EAAE,oBAAoB,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACjC,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAiBnC"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Web Plugin 配置读写。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - `web` 默认启用,不要求用户先在 `downcity.json` 写配置。
|
|
6
|
-
* - 只有当用户显式改动时,才把 `plugins.web` 持久化到项目配置。
|
|
7
|
-
*/
|
|
8
|
-
import { WEB_PLUGIN_DEFAULT_REPOSITORY_URL } from "../../web/types/WebPlugin.js";
|
|
9
|
-
function toJsonObject(input) {
|
|
10
|
-
const out = {};
|
|
11
|
-
if (!input)
|
|
12
|
-
return out;
|
|
13
|
-
for (const [key, value] of Object.entries(input)) {
|
|
14
|
-
if (value === null ||
|
|
15
|
-
typeof value === "string" ||
|
|
16
|
-
typeof value === "number" ||
|
|
17
|
-
typeof value === "boolean") {
|
|
18
|
-
out[key] = value;
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
if (Array.isArray(value)) {
|
|
22
|
-
out[key] = value.filter((item) => item !== undefined);
|
|
23
|
-
continue;
|
|
24
|
-
}
|
|
25
|
-
if (value && typeof value === "object") {
|
|
26
|
-
out[key] = toJsonObject(value);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return out;
|
|
30
|
-
}
|
|
31
|
-
function readWebPluginRecord(context) {
|
|
32
|
-
const current = context.config.plugins?.web;
|
|
33
|
-
if (!current || typeof current !== "object" || Array.isArray(current)) {
|
|
34
|
-
return {};
|
|
35
|
-
}
|
|
36
|
-
return current;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* 读取并归一化 web plugin 配置。
|
|
40
|
-
*/
|
|
41
|
-
export function readWebPluginConfig(context) {
|
|
42
|
-
const { enabled: _ignoredEnabled, ...current } = readWebPluginRecord(context);
|
|
43
|
-
return {
|
|
44
|
-
provider: current.provider === "agent-browser" || current.provider === "web-access"
|
|
45
|
-
? current.provider
|
|
46
|
-
: "web-access",
|
|
47
|
-
injectPrompt: typeof current.injectPrompt === "boolean" ? current.injectPrompt : true,
|
|
48
|
-
repositoryUrl: typeof current.repositoryUrl === "string" && current.repositoryUrl.trim()
|
|
49
|
-
? current.repositoryUrl.trim()
|
|
50
|
-
: WEB_PLUGIN_DEFAULT_REPOSITORY_URL,
|
|
51
|
-
...(typeof current.sourceVersion === "string" && current.sourceVersion.trim()
|
|
52
|
-
? { sourceVersion: current.sourceVersion.trim() }
|
|
53
|
-
: {}),
|
|
54
|
-
browserCommand: typeof current.browserCommand === "string" && current.browserCommand.trim()
|
|
55
|
-
? current.browserCommand.trim()
|
|
56
|
-
: "agent-browser",
|
|
57
|
-
installScope: current.installScope === "project" || current.installScope === "user"
|
|
58
|
-
? current.installScope
|
|
59
|
-
: "user",
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* 写入 web plugin 配置。
|
|
64
|
-
*/
|
|
65
|
-
export async function writeWebPluginConfig(params) {
|
|
66
|
-
if (!params.context.config.plugins) {
|
|
67
|
-
params.context.config.plugins = {};
|
|
68
|
-
}
|
|
69
|
-
const current = readWebPluginConfig(params.context);
|
|
70
|
-
const next = {
|
|
71
|
-
...current,
|
|
72
|
-
...params.value,
|
|
73
|
-
};
|
|
74
|
-
delete next.enabled;
|
|
75
|
-
params.context.config.plugins.web = toJsonObject(next);
|
|
76
|
-
await params.context.pluginConfig.persistProjectPlugins(params.context.config.plugins);
|
|
77
|
-
return readWebPluginConfig(params.context);
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=Config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../../src/web/runtime/Config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Web Plugin 来源信息与兼容安装动作。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - 这里不自建联网实现,只检查外部 provider 是否就绪,并记录少量配置。
|
|
6
|
-
*/
|
|
7
|
-
import type { JsonObject } from "@downcity/agent/internal/types/common/Json.js";
|
|
8
|
-
import type { PluginCommandContext } from "@downcity/agent/internal/plugin/types/Plugin.js";
|
|
9
|
-
import type { WebPluginDependencyCheckResult, WebPluginInstallInput } from "../../web/types/WebPlugin.js";
|
|
10
|
-
/**
|
|
11
|
-
* 返回当前来源快照。
|
|
12
|
-
*/
|
|
13
|
-
export declare function inspectWebPluginDependency(context: PluginCommandContext): Promise<WebPluginDependencyCheckResult>;
|
|
14
|
-
/**
|
|
15
|
-
* 兼容 install 动作。
|
|
16
|
-
*/
|
|
17
|
-
export declare function installWebPluginDependency(params: {
|
|
18
|
-
context: PluginCommandContext;
|
|
19
|
-
input?: WebPluginInstallInput;
|
|
20
|
-
}): Promise<{
|
|
21
|
-
success: boolean;
|
|
22
|
-
message?: string;
|
|
23
|
-
details?: JsonObject;
|
|
24
|
-
}>;
|
|
25
|
-
/**
|
|
26
|
-
* doctor 结果与 inspect 一致。
|
|
27
|
-
*/
|
|
28
|
-
export declare function doctorWebPluginDependency(context: PluginCommandContext): Promise<WebPluginDependencyCheckResult>;
|
|
29
|
-
//# sourceMappingURL=Source.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Source.d.ts","sourceRoot":"","sources":["../../../src/web/runtime/Source.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AA8GlC;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,8BAA8B,CAAC,CA2CzC;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,MAAM,EAAE;IACvD,OAAO,EAAE,oBAAoB,CAAC;IAC9B,KAAK,CAAC,EAAE,qBAAqB,CAAC;CAC/B,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB,CAAC,CA2DD;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,8BAA8B,CAAC,CAEzC"}
|
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Web Plugin 来源信息与兼容安装动作。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - 这里不自建联网实现,只检查外部 provider 是否就绪,并记录少量配置。
|
|
6
|
-
*/
|
|
7
|
-
import fs from "node:fs";
|
|
8
|
-
import path from "node:path";
|
|
9
|
-
import os from "node:os";
|
|
10
|
-
import fsp from "node:fs/promises";
|
|
11
|
-
import { execa } from "execa";
|
|
12
|
-
import fse from "fs-extra";
|
|
13
|
-
import { readWebPluginConfig, writeWebPluginConfig } from "../../web/runtime/Config.js";
|
|
14
|
-
import { AGENT_BROWSER_PROMPT } from "../../web/WebPromptAssets.js";
|
|
15
|
-
function toJsonObject(input) {
|
|
16
|
-
const out = {};
|
|
17
|
-
if (!input)
|
|
18
|
-
return out;
|
|
19
|
-
for (const [key, value] of Object.entries(input)) {
|
|
20
|
-
if (value === null ||
|
|
21
|
-
typeof value === "string" ||
|
|
22
|
-
typeof value === "number" ||
|
|
23
|
-
typeof value === "boolean") {
|
|
24
|
-
out[key] = value;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return out;
|
|
28
|
-
}
|
|
29
|
-
function resolveWebAccessSkillCandidates(projectRoot) {
|
|
30
|
-
const home = process.env.HOME || "";
|
|
31
|
-
return [
|
|
32
|
-
path.join(projectRoot, ".agents", "skills", "web-access", "SKILL.md"),
|
|
33
|
-
path.join(home, ".agents", "skills", "web-access", "SKILL.md"),
|
|
34
|
-
path.join(projectRoot, ".claude", "skills", "web-access", "SKILL.md"),
|
|
35
|
-
path.join(home, ".claude", "skills", "web-access", "SKILL.md"),
|
|
36
|
-
].filter(Boolean);
|
|
37
|
-
}
|
|
38
|
-
function resolveManagedSkillRoot(projectRoot, scope) {
|
|
39
|
-
if (scope === "project") {
|
|
40
|
-
return path.join(projectRoot, ".agents", "skills");
|
|
41
|
-
}
|
|
42
|
-
return path.join(process.env.HOME || os.homedir(), ".agents", "skills");
|
|
43
|
-
}
|
|
44
|
-
function resolveManagedSkillDir(params) {
|
|
45
|
-
return path.join(resolveManagedSkillRoot(params.projectRoot, params.scope), params.provider);
|
|
46
|
-
}
|
|
47
|
-
function loadBundledAgentBrowserSkillText() {
|
|
48
|
-
return AGENT_BROWSER_PROMPT || "# agent-browser";
|
|
49
|
-
}
|
|
50
|
-
async function ensureAgentBrowserSkillInstalled(params) {
|
|
51
|
-
const targetDir = resolveManagedSkillDir({
|
|
52
|
-
projectRoot: params.projectRoot,
|
|
53
|
-
scope: params.scope,
|
|
54
|
-
provider: "agent-browser",
|
|
55
|
-
});
|
|
56
|
-
const skillPath = path.join(targetDir, "SKILL.md");
|
|
57
|
-
if (fs.existsSync(skillPath)) {
|
|
58
|
-
return skillPath;
|
|
59
|
-
}
|
|
60
|
-
await fsp.mkdir(targetDir, { recursive: true });
|
|
61
|
-
await fsp.writeFile(`${skillPath}`, `${loadBundledAgentBrowserSkillText()}\n`, "utf-8");
|
|
62
|
-
return skillPath;
|
|
63
|
-
}
|
|
64
|
-
async function ensureWebAccessSkillInstalled(params) {
|
|
65
|
-
const targetDir = resolveManagedSkillDir({
|
|
66
|
-
projectRoot: params.projectRoot,
|
|
67
|
-
scope: params.scope,
|
|
68
|
-
provider: "web-access",
|
|
69
|
-
});
|
|
70
|
-
const skillPath = path.join(targetDir, "SKILL.md");
|
|
71
|
-
if (fs.existsSync(skillPath)) {
|
|
72
|
-
return skillPath;
|
|
73
|
-
}
|
|
74
|
-
const source = String(params.source || "").trim();
|
|
75
|
-
if (source && fs.existsSync(source)) {
|
|
76
|
-
await fse.copy(path.resolve(source), targetDir, {
|
|
77
|
-
overwrite: true,
|
|
78
|
-
errorOnExist: false,
|
|
79
|
-
});
|
|
80
|
-
return skillPath;
|
|
81
|
-
}
|
|
82
|
-
await fsp.mkdir(path.dirname(targetDir), { recursive: true });
|
|
83
|
-
await execa("git", ["clone", "--depth=1", "https://github.com/eze-is/web-access", targetDir], {
|
|
84
|
-
reject: true,
|
|
85
|
-
});
|
|
86
|
-
return skillPath;
|
|
87
|
-
}
|
|
88
|
-
async function checkAgentBrowserCommand(command) {
|
|
89
|
-
try {
|
|
90
|
-
await execa(command, ["--help"], {
|
|
91
|
-
reject: false,
|
|
92
|
-
timeout: 15_000,
|
|
93
|
-
});
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* 返回当前来源快照。
|
|
102
|
-
*/
|
|
103
|
-
export async function inspectWebPluginDependency(context) {
|
|
104
|
-
const config = readWebPluginConfig(context);
|
|
105
|
-
if (config.provider === "agent-browser") {
|
|
106
|
-
const available = await checkAgentBrowserCommand(config.browserCommand);
|
|
107
|
-
return {
|
|
108
|
-
available,
|
|
109
|
-
installed: available,
|
|
110
|
-
reasons: available
|
|
111
|
-
? []
|
|
112
|
-
: [
|
|
113
|
-
`agent-browser command is not available: ${config.browserCommand}`,
|
|
114
|
-
"Install or expose the agent-browser CLI before using this provider.",
|
|
115
|
-
],
|
|
116
|
-
details: {
|
|
117
|
-
provider: config.provider,
|
|
118
|
-
browserCommand: config.browserCommand,
|
|
119
|
-
source: "external-project",
|
|
120
|
-
installScope: config.installScope,
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
const candidates = resolveWebAccessSkillCandidates(context.rootPath);
|
|
125
|
-
const skillPath = candidates.find((item) => fs.existsSync(item));
|
|
126
|
-
const available = Boolean(skillPath);
|
|
127
|
-
return {
|
|
128
|
-
available,
|
|
129
|
-
installed: available,
|
|
130
|
-
reasons: available
|
|
131
|
-
? []
|
|
132
|
-
: [
|
|
133
|
-
"web-access skill is not found.",
|
|
134
|
-
"Install https://github.com/eze-is/web-access into ~/.agents/skills/web-access or project .agents/skills/web-access.",
|
|
135
|
-
],
|
|
136
|
-
details: {
|
|
137
|
-
provider: config.provider,
|
|
138
|
-
source: "external-project",
|
|
139
|
-
repositoryUrl: config.repositoryUrl,
|
|
140
|
-
installScope: config.installScope,
|
|
141
|
-
...(config.sourceVersion ? { sourceVersion: config.sourceVersion } : {}),
|
|
142
|
-
...(skillPath ? { skillPath } : { checkedPaths: candidates }),
|
|
143
|
-
},
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* 兼容 install 动作。
|
|
148
|
-
*/
|
|
149
|
-
export async function installWebPluginDependency(params) {
|
|
150
|
-
const currentConfig = readWebPluginConfig(params.context);
|
|
151
|
-
const installScope = params.input?.installScope === "project" || params.input?.installScope === "user"
|
|
152
|
-
? params.input.installScope
|
|
153
|
-
: currentConfig.installScope;
|
|
154
|
-
const provider = params.input?.provider === "agent-browser" || params.input?.provider === "web-access"
|
|
155
|
-
? params.input.provider
|
|
156
|
-
: currentConfig.provider;
|
|
157
|
-
const installedSkillPath = provider === "agent-browser"
|
|
158
|
-
? await ensureAgentBrowserSkillInstalled({
|
|
159
|
-
projectRoot: params.context.rootPath,
|
|
160
|
-
scope: installScope,
|
|
161
|
-
})
|
|
162
|
-
: await ensureWebAccessSkillInstalled({
|
|
163
|
-
projectRoot: params.context.rootPath,
|
|
164
|
-
scope: installScope,
|
|
165
|
-
source: params.input?.repositoryUrl,
|
|
166
|
-
});
|
|
167
|
-
const nextConfig = await writeWebPluginConfig({
|
|
168
|
-
context: params.context,
|
|
169
|
-
value: {
|
|
170
|
-
provider,
|
|
171
|
-
injectPrompt: typeof params.input?.injectPrompt === "boolean"
|
|
172
|
-
? params.input.injectPrompt
|
|
173
|
-
: true,
|
|
174
|
-
...(typeof params.input?.repositoryUrl === "string" &&
|
|
175
|
-
params.input.repositoryUrl.trim()
|
|
176
|
-
? { repositoryUrl: params.input.repositoryUrl.trim() }
|
|
177
|
-
: {}),
|
|
178
|
-
...(typeof params.input?.sourceVersion === "string" &&
|
|
179
|
-
params.input.sourceVersion.trim()
|
|
180
|
-
? { sourceVersion: params.input.sourceVersion.trim() }
|
|
181
|
-
: {}),
|
|
182
|
-
...(typeof params.input?.browserCommand === "string" &&
|
|
183
|
-
params.input.browserCommand.trim()
|
|
184
|
-
? { browserCommand: params.input.browserCommand.trim() }
|
|
185
|
-
: {}),
|
|
186
|
-
installScope,
|
|
187
|
-
},
|
|
188
|
-
});
|
|
189
|
-
return {
|
|
190
|
-
success: true,
|
|
191
|
-
message: "web provider installed and configured",
|
|
192
|
-
details: toJsonObject({
|
|
193
|
-
provider: nextConfig.provider,
|
|
194
|
-
injectPrompt: nextConfig.injectPrompt,
|
|
195
|
-
repositoryUrl: nextConfig.repositoryUrl,
|
|
196
|
-
sourceVersion: nextConfig.sourceVersion || "",
|
|
197
|
-
browserCommand: nextConfig.browserCommand,
|
|
198
|
-
installScope: nextConfig.installScope,
|
|
199
|
-
skillPath: installedSkillPath,
|
|
200
|
-
}),
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* doctor 结果与 inspect 一致。
|
|
205
|
-
*/
|
|
206
|
-
export async function doctorWebPluginDependency(context) {
|
|
207
|
-
return inspectWebPluginDependency(context);
|
|
208
|
-
}
|
|
209
|
-
//# sourceMappingURL=Source.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Source.js","sourceRoot":"","sources":["../../../src/web/runtime/Source.ts"],"names":[],"mappings":"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"}
|
package/src/asr/Config.ts
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ASR plugin 配置读写工具。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - 行为配置与转写依赖配置统一收敛到 `plugins.asr`。
|
|
6
|
-
* - 写入前将输入规范化为 JSON object,避免 undefined 进入项目配置。
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { VoicePluginConfig } from "@/voice/types/VoicePlugin.js";
|
|
10
|
-
import type { AgentPluginConfigRuntime } from "@downcity/agent/internal/types/agent/AgentRuntimeAssembly.js";
|
|
11
|
-
import type { JsonObject, JsonValue } from "@downcity/agent/internal/types/common/Json.js";
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* 将普通对象转为可持久化 JSON object。
|
|
15
|
-
*/
|
|
16
|
-
export function toJsonObject(
|
|
17
|
-
input: Record<string, unknown> | null | undefined,
|
|
18
|
-
): JsonObject | null {
|
|
19
|
-
if (!input) return null;
|
|
20
|
-
const out: JsonObject = {};
|
|
21
|
-
for (const [key, value] of Object.entries(input)) {
|
|
22
|
-
if (value === undefined) continue;
|
|
23
|
-
if (
|
|
24
|
-
value === null ||
|
|
25
|
-
typeof value === "string" ||
|
|
26
|
-
typeof value === "number" ||
|
|
27
|
-
typeof value === "boolean"
|
|
28
|
-
) {
|
|
29
|
-
out[key] = value;
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
if (Array.isArray(value)) {
|
|
33
|
-
out[key] = value
|
|
34
|
-
.filter((item) => item !== undefined)
|
|
35
|
-
.map((item) => item as JsonValue);
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
if (typeof value === "object") {
|
|
39
|
-
out[key] = toJsonObject(value as Record<string, unknown>) || {};
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return out;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* 读取字符串选项。
|
|
47
|
-
*/
|
|
48
|
-
export function getStringOpt(
|
|
49
|
-
opts: Record<string, JsonValue>,
|
|
50
|
-
key: string,
|
|
51
|
-
): string | undefined {
|
|
52
|
-
const value = opts[key];
|
|
53
|
-
if (typeof value !== "string") return undefined;
|
|
54
|
-
const trimmed = value.trim();
|
|
55
|
-
return trimmed || undefined;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* 读取布尔选项。
|
|
60
|
-
*/
|
|
61
|
-
export function getBooleanOpt(
|
|
62
|
-
opts: Record<string, JsonValue>,
|
|
63
|
-
key: string,
|
|
64
|
-
defaultValue: boolean,
|
|
65
|
-
): boolean {
|
|
66
|
-
const value = opts[key];
|
|
67
|
-
if (typeof value === "boolean") return value;
|
|
68
|
-
if (typeof value === "string") {
|
|
69
|
-
const normalized = value.trim().toLowerCase();
|
|
70
|
-
if (["1", "true", "yes", "y", "on"].includes(normalized)) return true;
|
|
71
|
-
if (["0", "false", "no", "n", "off"].includes(normalized)) return false;
|
|
72
|
-
}
|
|
73
|
-
return defaultValue;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* 读取 ASR Plugin 配置。
|
|
78
|
-
*/
|
|
79
|
-
export function readVoicePluginConfig(runtime: {
|
|
80
|
-
config: {
|
|
81
|
-
plugins?: Record<string, unknown>;
|
|
82
|
-
};
|
|
83
|
-
}): VoicePluginConfig {
|
|
84
|
-
const current = runtime.config.plugins?.asr;
|
|
85
|
-
const normalized =
|
|
86
|
-
current && typeof current === "object" && !Array.isArray(current)
|
|
87
|
-
? (current as VoicePluginConfig)
|
|
88
|
-
: {};
|
|
89
|
-
return {
|
|
90
|
-
injectPrompt:
|
|
91
|
-
typeof normalized.injectPrompt === "boolean"
|
|
92
|
-
? normalized.injectPrompt
|
|
93
|
-
: true,
|
|
94
|
-
augmentMessage:
|
|
95
|
-
typeof normalized.augmentMessage === "boolean"
|
|
96
|
-
? normalized.augmentMessage
|
|
97
|
-
: true,
|
|
98
|
-
provider:
|
|
99
|
-
normalized.provider === "command" || normalized.provider === "local"
|
|
100
|
-
? normalized.provider
|
|
101
|
-
: "local",
|
|
102
|
-
...(typeof normalized.modelId === "string" ? { modelId: normalized.modelId } : {}),
|
|
103
|
-
...(typeof normalized.modelsDir === "string" ? { modelsDir: normalized.modelsDir } : {}),
|
|
104
|
-
...(typeof normalized.pythonBin === "string" ? { pythonBin: normalized.pythonBin } : {}),
|
|
105
|
-
...(typeof normalized.command === "string" ? { command: normalized.command } : {}),
|
|
106
|
-
...(typeof normalized.language === "string" ? { language: normalized.language } : {}),
|
|
107
|
-
...(typeof normalized.timeoutMs === "number" ? { timeoutMs: normalized.timeoutMs } : {}),
|
|
108
|
-
...(typeof normalized.strategy === "string" ? { strategy: normalized.strategy } : {}),
|
|
109
|
-
...(Array.isArray(normalized.installedModels)
|
|
110
|
-
? { installedModels: normalized.installedModels }
|
|
111
|
-
: {}),
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* 写入完整 ASR plugin 配置。
|
|
117
|
-
*/
|
|
118
|
-
export async function writeVoicePluginConfig(params: {
|
|
119
|
-
agentState: {
|
|
120
|
-
config: {
|
|
121
|
-
plugins?: Record<string, unknown>;
|
|
122
|
-
};
|
|
123
|
-
pluginConfig: AgentPluginConfigRuntime;
|
|
124
|
-
};
|
|
125
|
-
value: VoicePluginConfig;
|
|
126
|
-
}): Promise<void> {
|
|
127
|
-
if (!params.agentState.config.plugins) {
|
|
128
|
-
params.agentState.config.plugins = {};
|
|
129
|
-
}
|
|
130
|
-
const next: Record<string, unknown> = {
|
|
131
|
-
...(params.value as Record<string, unknown>),
|
|
132
|
-
};
|
|
133
|
-
delete next.enabled;
|
|
134
|
-
params.agentState.config.plugins.asr = (toJsonObject(next) || {}) as JsonObject;
|
|
135
|
-
await params.agentState.pluginConfig.persistProjectPlugins(
|
|
136
|
-
params.agentState.config.plugins as Record<string, JsonObject>,
|
|
137
|
-
);
|
|
138
|
-
}
|