@armadra/agent 0.6.8 → 0.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.
- package/CHANGELOG.md +69 -0
- package/CHANGELOG.zh-CN.md +50 -0
- package/README.md +4 -3
- package/README.zh-CN.md +1 -1
- package/dist/acp.d.ts +2 -2
- package/dist/acp.js +2 -2
- package/dist/ai/apis/shared.d.ts +7 -1
- package/dist/ai/apis/shared.js +10 -0
- package/dist/ai/fake/fake-provider.js +5 -1
- package/dist/ai/fake/fake-script.d.ts +5 -2
- package/dist/ai/fake/fake-script.js +6 -2
- package/dist/ai/types.d.ts +2 -1
- package/dist/auth/oauth/token-store.d.ts +2 -0
- package/dist/auth/oauth/token-store.js +7 -2
- package/dist/bundle/ama.cjs +48975 -47637
- package/dist/checkpoints/shadow-git.js +2 -1
- package/dist/cli/args.d.ts +6 -0
- package/dist/cli/args.js +46 -0
- package/dist/cli/bootstrap.js +13 -2
- package/dist/cli/compose-events.d.ts +10 -0
- package/dist/cli/compose-events.js +97 -0
- package/dist/cli/compose-session.d.ts +25 -4
- package/dist/cli/compose-session.js +130 -103
- package/dist/cli/compose.js +6 -1
- package/dist/cli/runtime.d.ts +3 -1
- package/dist/cli/subcommands/auth.d.ts +13 -1
- package/dist/cli/subcommands/auth.js +28 -1
- package/dist/config/auth-file.js +10 -2
- package/dist/config/fs-retry.d.ts +18 -0
- package/dist/config/fs-retry.js +33 -0
- package/dist/drivers/acp/client.d.ts +7 -2
- package/dist/drivers/acp/client.js +10 -1
- package/dist/drivers/acp/driver.d.ts +15 -4
- package/dist/drivers/acp/driver.js +110 -33
- package/dist/drivers/acp/testing/fake-agent-main.d.ts +1 -1
- package/dist/drivers/acp/testing/fake-agent-main.js +9 -2
- package/dist/drivers/acp/testing/fake-agent.d.ts +17 -2
- package/dist/drivers/acp/testing/fake-agent.js +108 -25
- package/dist/drivers/acp/types.d.ts +76 -12
- package/dist/drivers/acp/types.js +11 -3
- package/dist/drivers/jsonrpc.d.ts +13 -3
- package/dist/drivers/jsonrpc.js +40 -7
- package/dist/drivers/turn.d.ts +15 -2
- package/dist/drivers/turn.js +33 -4
- package/dist/i18n/catalog.d.ts +59 -16
- package/dist/i18n/catalog.js +4 -1
- package/dist/i18n/messages/acp.d.ts +125 -0
- package/dist/i18n/messages/acp.js +126 -0
- package/dist/i18n/messages/auth.d.ts +2 -0
- package/dist/i18n/messages/auth.js +4 -2
- package/dist/i18n/messages/cli-args.d.ts +2 -0
- package/dist/i18n/messages/cli-args.js +2 -0
- package/dist/i18n/messages/cli.d.ts +4 -0
- package/dist/i18n/messages/cli.js +2 -0
- package/dist/i18n/messages/print.d.ts +3 -33
- package/dist/i18n/messages/print.js +3 -33
- package/dist/modes/acp/acp-auth-gate.d.ts +40 -0
- package/dist/modes/acp/acp-auth-gate.js +201 -0
- package/dist/modes/acp/acp-config.d.ts +43 -0
- package/dist/modes/acp/acp-config.js +151 -0
- package/dist/modes/acp/acp-connection.d.ts +29 -0
- package/dist/modes/acp/acp-connection.js +37 -0
- package/dist/modes/acp/acp-events.d.ts +59 -23
- package/dist/modes/acp/acp-events.js +154 -88
- package/dist/modes/acp/acp-mode.d.ts +13 -2
- package/dist/modes/acp/acp-mode.js +23 -8
- package/dist/modes/acp/acp-server.d.ts +59 -32
- package/dist/modes/acp/acp-server.js +322 -128
- package/dist/modes/acp/acp-sessions.d.ts +80 -0
- package/dist/modes/acp/acp-sessions.js +157 -0
- package/dist/modes/acp/acp-tool-text.d.ts +23 -0
- package/dist/modes/acp/acp-tool-text.js +83 -0
- package/dist/modes/print/json-event.d.ts +2 -1
- package/dist/modes/print/json-event.js +6 -1
- package/dist/tools/edit.d.ts +6 -2
- package/dist/tools/edit.js +19 -2
- package/dist/tools/types.d.ts +11 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/write.d.ts +1 -0
- package/dist/tools/write.js +21 -3
- package/docs/acp.md +143 -29
- package/docs/agents.md +2 -0
- package/docs/codemode.md +1 -1
- package/docs/en/acp.md +192 -0
- package/docs/en/sessions.md +1 -1
- package/docs/sessions.md +1 -1
- package/package.json +1 -1
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `ama --mode acp`:把 ama 的会话暴露为 ACP Agent(docs/wave5-plan.md §5.6,D14
|
|
2
|
+
* `ama --mode acp`:把 ama 的会话暴露为 ACP Agent(docs/wave5-plan.md §5.6,D14;多会话见
|
|
3
|
+
* docs/acp-plan.md D1、D2、D11、D12、§2.1)。[W5-E,ACP-B]
|
|
3
4
|
*
|
|
4
|
-
* 与 `--mode rpc` 同一引擎(Runtime +
|
|
5
|
-
* -
|
|
6
|
-
* `session/
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* -
|
|
12
|
-
*
|
|
13
|
-
* -
|
|
14
|
-
*
|
|
5
|
+
* 与 `--mode rpc` 同一引擎(Runtime + 组装根)。多会话:
|
|
6
|
+
* - 每个 ACP sessionId 一个常驻会话(会话池,acp-sessions.ts),各有自己的事件映射器与权限模式;
|
|
7
|
+
* 启动时那个空会话由第一个 `session/new` 认领,之后的 new / load / resume 建兄弟会话(不 dispose 旧的)。
|
|
8
|
+
* - 同一时刻只跑一个回合:其它会话的 `session/prompt` 进 FIFO 队列;出队时把该会话切为前台
|
|
9
|
+
* (宿主 / Hook / 工具工厂跟随,清「本会话允许」记忆),并把它自己的权限模式重放到共享管线。
|
|
10
|
+
* - `session/cancel`:在跑 → abort;排队中 → 直接回 cancelled。`session/close`:中断、释放并出池,
|
|
11
|
+
* 之后对该 id 发 prompt 回 -32002。`$/cancel_request` 撤回 prompt 等价 cancel,答复 -32800。
|
|
12
|
+
* - `session/set_mode`:记在会话上;是前台就立即生效,否则出队时生效(仍发 `current_mode_update`)。
|
|
13
|
+
* - `session/list`:按 cwd 过滤(别的目录 → 空列表),每页 50 条,cursor 翻页;标题去掉嵌入资源块。
|
|
14
|
+
* - 回合结束:stopReason(中断 → cancelled、截断 → max_tokens、拒答 → refusal、出错 → JSON-RPC 错误),
|
|
15
|
+
* 并发 `session_info_update`。
|
|
16
|
+
* - 审批经 `session/request_permission` 交给客户端;不声明 / 不使用客户端的 `fs`、`terminal` 能力。
|
|
17
|
+
* - cwd 固定为启动目录;客户端给的 `mcpServers` / `additionalDirectories` 忽略(stderr 一行)。
|
|
15
18
|
*/
|
|
16
19
|
import type { ImageBlock } from "../../ai/types.js";
|
|
17
20
|
import type { AgentSession } from "../../agent/types.js";
|
|
18
21
|
import type { Runtime } from "../../cli/runtime.js";
|
|
19
|
-
import { JsonRpcPeer } from "../../drivers/jsonrpc.js";
|
|
22
|
+
import { type IncomingRequestContext, type JsonRpcPeer } from "../../drivers/jsonrpc.js";
|
|
20
23
|
import type { ApprovalBroker } from "../../permissions/types.js";
|
|
24
|
+
import { type AcpConnection } from "./acp-connection.js";
|
|
21
25
|
export declare const ACP_AGENT_CAPABILITIES: {
|
|
22
26
|
loadSession: boolean;
|
|
23
27
|
promptCapabilities: {
|
|
@@ -35,6 +39,7 @@ export declare const ACP_AGENT_CAPABILITIES: {
|
|
|
35
39
|
close: {};
|
|
36
40
|
};
|
|
37
41
|
};
|
|
42
|
+
export type Params = Record<string, unknown>;
|
|
38
43
|
/** ACP 提示 → ama 的文本与图片。 */
|
|
39
44
|
export declare function promptOf(blocks: unknown): {
|
|
40
45
|
text: string;
|
|
@@ -42,38 +47,60 @@ export declare function promptOf(blocks: unknown): {
|
|
|
42
47
|
};
|
|
43
48
|
export declare class AcpServer {
|
|
44
49
|
private readonly runtime;
|
|
50
|
+
readonly connection: AcpConnection;
|
|
45
51
|
private readonly log;
|
|
46
52
|
readonly peer: JsonRpcPeer;
|
|
47
|
-
private activeId;
|
|
48
|
-
/** 启动时的空会话还没被 session/new 认领。 */
|
|
49
|
-
private freshUnclaimed;
|
|
50
|
-
private mapper;
|
|
51
|
-
private unsubscribe;
|
|
52
|
-
private cancelRequested;
|
|
53
53
|
private readonly cwd;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
/** ACP sessionId → 常驻会话。 */
|
|
55
|
+
private readonly pool;
|
|
56
|
+
/** 还没交给客户端的会话(启动时那个;关掉最后一个前台会话后补的):`session/new` 认领。 */
|
|
57
|
+
private standby;
|
|
58
|
+
/** 新会话的初始权限模式(启动参数 / 配置给的)。 */
|
|
59
|
+
private readonly initialMode;
|
|
60
|
+
private readonly queue;
|
|
61
|
+
/**
|
|
62
|
+
* 连接由调用方建(`createAcpConnection`),其 handlers 转到 {@link handle} 与
|
|
63
|
+
* {@link handleNotification};认证门在 bootstrap 成功后以同一条连接构造服务端。
|
|
64
|
+
*/
|
|
65
|
+
constructor(runtime: Runtime, connection: AcpConnection, log?: (message: string) => void);
|
|
66
|
+
/** 前台会话(宿主 / Hook / 工具工厂当前操作的那个)。 */
|
|
58
67
|
session(): AgentSession;
|
|
68
|
+
/** 会话池里的全部会话(含未认领的待命会话);stdin 关闭时逐个收尾。 */
|
|
69
|
+
sessions(): AgentSession[];
|
|
59
70
|
/** 审批交给客户端:ama 的 UI broker。 */
|
|
60
71
|
readonly broker: ApprovalBroker;
|
|
61
|
-
private
|
|
62
|
-
private
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
72
|
+
private extras;
|
|
73
|
+
private configOptions;
|
|
74
|
+
/** 把会话放进池:自己的映射器(`session/update` 带它自己的 id)与订阅。 */
|
|
75
|
+
private adopt;
|
|
76
|
+
/**
|
|
77
|
+
* 释放全部会话(stdin 关闭后由模式调用):排队的回 cancelled,等在跑的结束,兄弟会话依次
|
|
78
|
+
* dispose(跑 SessionEnd Hook);前台会话留给 `Runtime.dispose`。
|
|
79
|
+
*/
|
|
80
|
+
dispose(abort?: boolean): Promise<void>;
|
|
81
|
+
/** 客户端通知(`session/cancel`)。 */
|
|
82
|
+
handleNotification(method: string, params: unknown): void;
|
|
83
|
+
/** 客户端请求;认证门交接时也由它处理当次请求。 */
|
|
84
|
+
handle(method: string, params: Params, ctx?: IncomingRequestContext): Promise<unknown>;
|
|
66
85
|
private initialize;
|
|
67
|
-
|
|
68
|
-
private
|
|
69
|
-
|
|
86
|
+
/** 开会话请求的公共检查:cwd 固定;`mcpServers` / `additionalDirectories` 忽略并在 stderr 说一行。 */
|
|
87
|
+
private checkOpen;
|
|
88
|
+
/** new / load / resume 的答复:模式与配置项;答复发出后再公布命令表与配置项。 */
|
|
89
|
+
private opened;
|
|
70
90
|
private newSession;
|
|
71
91
|
private openSession;
|
|
72
92
|
private list;
|
|
93
|
+
private entryOf;
|
|
73
94
|
private close;
|
|
74
|
-
private ensureIdle;
|
|
75
95
|
private prompt;
|
|
96
|
+
/** 出队:切前台、重放权限模式、跑回合、算 stopReason,再发 `session_info_update`。 */
|
|
97
|
+
private runPrompt;
|
|
98
|
+
/** 中断一个提示:在跑 → abort;排队中 → 出队后立即回 cancelled(`runPrompt` 见标记直接返回)。 */
|
|
99
|
+
private cancelJob;
|
|
76
100
|
private cancel;
|
|
77
101
|
private setMode;
|
|
102
|
+
/** `session/set_mode` 与 `mode` 配置项共用:按会话记,前台立即生效,否则出队时生效。 */
|
|
103
|
+
private applyMode;
|
|
104
|
+
private setConfigOption;
|
|
78
105
|
private askClient;
|
|
79
106
|
}
|