@forsion/tangu-computer-use 0.6.0 → 0.6.2
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/CHANGELOG.md +35 -0
- package/UPSTREAM.md +3 -1
- package/icon.png +0 -0
- package/main.js +15 -0
- package/manifest.json +3 -3
- package/native/macos/bridge.swift +171 -7
- package/native/windows/bridge-rs/Cargo.lock +1 -0
- package/native/windows/bridge-rs/Cargo.toml +11 -0
- package/native/windows/bridge-rs/src/agent_marker.rs +97 -0
- package/native/windows/bridge-rs/src/lib.rs +4 -0
- package/native/windows/bridge-rs/src/main.rs +32 -0
- package/native/windows/bridge-rs/src/recorder.rs +1865 -0
- package/native/windows/bridge-rs/src/recorder_logic.rs +851 -0
- package/native/windows/bridge-rs/tests/recorder_logic_tests.rs +314 -0
- package/package.json +3 -2
- package/prebuilt/linux/x64/linux-bridge +0 -0
- package/prebuilt/macos/arm64/bridge +0 -0
- package/prebuilt/macos/arm64/tangu-computer-use.app.json +4 -4
- package/prebuilt/macos/arm64/tangu-computer-use.app.zip +0 -0
- package/prebuilt/macos/x64/bridge +0 -0
- package/prebuilt/macos/x64/tangu-computer-use.app.json +4 -4
- package/prebuilt/macos/x64/tangu-computer-use.app.zip +0 -0
- package/prebuilt/windows/windows-bridge.exe +0 -0
- package/scripts/exit-listeners.check.mjs +61 -0
- package/scripts/no-foreground.check.mjs +14 -1
- package/scripts/probe-recorder-windows.mjs +356 -0
- package/skills/computer-use/SKILL.md +4 -0
- package/src/foregroundNote.ts +16 -0
- package/src/index.ts +17 -5
- package/src/tools.ts +4 -3
- package/src/vendor/platform/macos/helper.ts +1 -1
- package/tangu-plugins/computer-use/dist/foregroundNote.js +10 -1
- package/tangu-plugins/computer-use/dist/index.js +25 -11
- package/tangu-plugins/computer-use/tangu-plugin.json +1 -1
- package/types/tangu-agent.d.ts +60 -1
package/types/tangu-agent.d.ts
CHANGED
|
@@ -35,6 +35,44 @@ export interface ToolContext {
|
|
|
35
35
|
* 缺省(未装配此闸)时工具应优雅降级,不要假定一定可用。 */
|
|
36
36
|
collectImage?: (img: { url: string; name?: string }) => void;
|
|
37
37
|
displayFile?: (item: { name: string; mime?: string; path?: string; dataUrl?: string }) => void;
|
|
38
|
+
/** 发起端(手机)自报的客户端能力,如 'phone.intents'(run 内冻结)。契约 tangu-agent/docs/phone-control.md §2。 */
|
|
39
|
+
clientCapabilities?: readonly string[];
|
|
40
|
+
/** 让发起端原生层执行一个动作:发 `client_cmd` → 原生 claim → 执行 → 回执。闭包已绑定本 run,只在
|
|
41
|
+
* clientCapabilities 非空时存在(缺省时工具应优雅降级),且**只给声明了 `clientCapability` 的工具**:
|
|
42
|
+
* 没声明的工具(以及任何工具的 isEnabledFor)拿到 undefined;声明了的只能发自己能力的 ns
|
|
43
|
+
* ('phone.intents' → 'phone'),别的 ns 立即 {ok:false, code:'undeclared'}、什么都不发。
|
|
44
|
+
* `opts.signal` 传 ctx.signal;run 级中止总会一并监听。
|
|
45
|
+
* ⚠️ 若工具声明了 capabilities.defaultTimeoutMs,它必须 ≥ claimMs + execMs —— 否则工具先被判超时,
|
|
46
|
+
* 手机那边却可能在稍后照样执行。 */
|
|
47
|
+
requestClientAction?: (req: ClientActionRequest, opts?: ClientActionOptions) => Promise<ClientActionResult>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** 客户端动作。ns 必须命中本 run 已声明的 `<ns>.*` 能力(否则立即 {ok:false, code:'undeclared'});op 由原生 verb 表解释。 */
|
|
51
|
+
export interface ClientActionRequest {
|
|
52
|
+
ns: string;
|
|
53
|
+
op: string;
|
|
54
|
+
args?: Record<string, unknown>;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** claimMs:等原生 claim(缺省 15s,钳 3–30s);execMs:claim 之后等结果(缺省 20s,钳 5–120s)。 */
|
|
58
|
+
export interface ClientActionOptions {
|
|
59
|
+
claimMs?: number;
|
|
60
|
+
execMs?: number;
|
|
61
|
+
signal?: AbortSignal;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** 原生回执(已消毒)或引擎自产的失败。code 恒匹配 /^[a-z_]{1,32}$/:原生码见契约 §3.4,
|
|
65
|
+
* 引擎自产 undeclared / not_picked_up(没接,什么都没发生)/ no_report(接了没回,可能发生了)/
|
|
66
|
+
* aborted(没接就被中止,什么都没发生)/ aborted_claimed(接了之后被中止,可能发生了)。 */
|
|
67
|
+
export interface ClientActionResult {
|
|
68
|
+
ok: boolean;
|
|
69
|
+
code?: string;
|
|
70
|
+
error?: string;
|
|
71
|
+
text?: string;
|
|
72
|
+
image?: string;
|
|
73
|
+
app?: string;
|
|
74
|
+
handoff?: boolean;
|
|
75
|
+
verified?: boolean;
|
|
38
76
|
}
|
|
39
77
|
|
|
40
78
|
export interface ToolCapabilities {
|
|
@@ -58,6 +96,16 @@ export interface ToolDef {
|
|
|
58
96
|
mode?: 'sandbox' | 'host' | 'both';
|
|
59
97
|
capabilities?: ToolCapabilities;
|
|
60
98
|
isEnabledFor?(profile: AppProfile, ctx: ToolContext): boolean;
|
|
99
|
+
/** 按需装载:true = 定义默认不进工具面,系统提示「Additional Tools」目录里只留一行,模型经 load_tools 解锁。 */
|
|
100
|
+
deferred?: boolean;
|
|
101
|
+
/** 同组连坐解锁:解锁组内任一即整组解锁。 */
|
|
102
|
+
deferGroup?: string;
|
|
103
|
+
/** 目录行文案(英文一句话,带典型触发意图;缺省取 description 首行截断)。 */
|
|
104
|
+
deferHint?: string;
|
|
105
|
+
/** 客户端能力(如 'phone.intents'):本工具经 ctx.requestClientAction 让发起端原生层执行。声明后由核心中央闸
|
|
106
|
+
* default-deny(手机端发起 + 本 run 声明了该能力 + 非子代理 / 计划 / 通道 / 讨论),且工具名必须以 `<ns>_` 开头
|
|
107
|
+
* ('phone.intents' → phone_*),否则永不可见。chat 预设按能力放行,内置与插件等价。 */
|
|
108
|
+
clientCapability?: string;
|
|
61
109
|
}
|
|
62
110
|
|
|
63
111
|
export interface ToolProvider {
|
|
@@ -135,8 +183,19 @@ export interface TanguPluginContext {
|
|
|
135
183
|
activity: { append(event: string, detail?: Record<string, unknown>): void };
|
|
136
184
|
}
|
|
137
185
|
|
|
186
|
+
/**
|
|
187
|
+
* 生命周期:启动时每个插件都 activate 一次,未启用 / 前置没齐的随即 deactivate 休眠(仍列在设置页)。
|
|
188
|
+
* 停用、卸载、原地升级、前置消失时宿主调 `deactivate()`(限时 5s),再撤掉本次激活注册的一切(工具、命令、路由;meta 留着休眠)。
|
|
189
|
+
* 再启用会在**同一个模块对象**上再调一次 `activate(ctx)`:别依赖模块级「只做一次」的状态,activate 里起的定时器 /
|
|
190
|
+
* 子进程 / 监听都要在 deactivate 里收掉。activate 抛错则本次激活作废(回滚 + 调一次 deactivate 收尾),插件休眠不自动重试。
|
|
191
|
+
*/
|
|
138
192
|
export interface TanguPlugin {
|
|
139
|
-
manifest?: {
|
|
193
|
+
manifest?: {
|
|
194
|
+
id: string; name: string; version: string; apiVersion: number; entry: string; commands?: string[]; description?: string;
|
|
195
|
+
/** 前置插件:`"id"` 或 `{ id, minVersion? }`。前置已启用且在跑(版本 ≥ minVersion)时本插件才激活;否则休眠,就位后自动激活。 */
|
|
196
|
+
requiresPlugins?: Array<string | { id: string; minVersion?: string }>;
|
|
197
|
+
};
|
|
140
198
|
activate(ctx: TanguPluginContext): void | Promise<void>;
|
|
199
|
+
/** 停用 / 卸载 / 原地升级时调用(限时 5s):停掉 activate 里起的后台工作。启动期那次早于引擎装配完成,只做自身收尾。 */
|
|
141
200
|
deactivate?(): void | Promise<void>;
|
|
142
201
|
}
|