@ai-workbench/remote-agent 0.8.12 → 0.8.13
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/README.md +6 -4
- package/dist/acp.js +1 -1
- package/dist/employee-mcp.js +1 -1
- package/dist/local-user-turn.js +2 -1
- package/dist/presentation.js +1 -1
- package/dist/session-header.d.ts +4 -0
- package/dist/session-header.js +12 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
**`@ai-workbench/remote-agent@0.8.
|
|
1
|
+
**`@ai-workbench/remote-agent@0.8.13` 发布形态包;由编排发布后通过官方插件 → 添加插件安装。修复 Claude 模型目录及旧默认模型,供 leo 真机复验。Codex 线因主机适配器 aw.2 实装失败(UNSAFE_MODE_MISMATCH),待 S 修复后另验,当前未验证可用。由编排统一发布,X 未执行 publish。**
|
|
2
2
|
|
|
3
3
|
# 远程ACP插件
|
|
4
4
|
|
|
5
5
|
一个插件提供 **Claude(远程主机)** 和 **Codex(远程主机)**,通过员工主机上的官方CLI运行。Codex保留单次模式;Claude固定会话模式。只用官方模型列表、插件管理和配置入口,不提供自制面板、问答或登录按钮。登录和原生工作区绑定唯一归连接插件L。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
当前版本号为0.8.13;包名采用`@ai-workbench/remote-agent`以涵盖两个品牌;本轮按编排放行准备发布形态包,供 leo 真机自验;X 不执行实际发布,由编排统一发布。开发fixture逐字节保留L0.7.19固定包,公开类型与SSH导出从该包消费。运行时仍要求L的`getContractInfo()`同时返回API0.7.0、implemented、native-local-v1;旧L包、draft.3或只有版本号的不完整实现会明确报缺项。依赖范围为`~0.7.19`,L由官方插件管理单独安装,不打进X。组件验证不代表真实开通、模型或leo E通过;HanaMesh另验。
|
|
8
8
|
|
|
9
|
-
L0.7.18
|
|
9
|
+
已包含L0.7.18消费增量:来源确认、输入接纳、登录、本机接纳、输入准备、模型目录及运行时解析的早期失败,用正式`preflightDiagnostics:1` / `preflight-check`进入L「连接前技术详情(含登录与工作区确认)」。阶段、真实来源/状态和错误代码可展开;未知来源为null,旧login-check的完整安全原因保留。记录不选择来源、不接纳输入、不自动重发;无原生会话的菜单查询仍在模型设置报告。当前工程和设置组件验证不等于leo GUI验收。
|
|
10
|
+
|
|
11
|
+
0.8.13包含L0.7.19消费增量:官方JSONL将省略的`delegationDepth`保存为`0`;X与L只在live/persisted header核对中承认这两种表示等价,实时身份、轮次和其他字段仍严格核验。`REMOTE_DETAIL_SCOPE_INVALID`说明本次输入与当前会话的关联无法核对,不再一律提示组件过旧。已确认的本地来源不重复询问;本轮leo只读取证,修复后的真机路径另验。
|
|
10
12
|
|
|
11
13
|
## 员工路径
|
|
12
14
|
|
|
@@ -74,7 +76,7 @@ D21(0.8.5):两个品牌的官方模型菜单从 L 的 `modelCatalogTarget:
|
|
|
74
76
|
|
|
75
77
|
每轮先核对目录代次和所选模型,再经 ACP 逐项配置模型及推理等级,收到完整配置确认后才发送输入。Claude 别名必须有当前会话的具体型号证据;没有就明确拒绝。真实回复追加所选值和远端确认值,并在恢复标识与技术详情保留,确认配置不等于验证推理效果。连接/身份/目录变化清除旧确认;远端清理待定或结果未知时阻止派发,不自动清理重试或另开替代会话。Codex 单次模式当前不能确认此选择,会在发送前明确拒绝。新增设置 0;本轮工程证据、真实只读链路与产品未验项见 `docs/evidence/2026-10-22-X2-D21/`。
|
|
76
78
|
|
|
77
|
-
0.8.5统一包原依赖L `~0.7.13`;当前0.8.
|
|
79
|
+
0.8.5统一包原依赖L `~0.7.13`;当前0.8.13对齐L `~0.7.19`。D8模型目录双事件长期监听保留;同epoch的recovery提示/失败消息变化不触发执行状态失效,真实实例/epoch/phase/可信目标/登录变化仍失效。完整D9两品牌正文/状态/就绪门呈现按编排00:50允许的范围记下一版,本版不宣称已消费完成;L的connectionMessages.administratorAfterMs仍只由L管理,X新增设置0。
|
|
78
80
|
|
|
79
81
|
D18(0.8.6):Codex 需要主机自有 adapter `2.2.2-aw.1` 的明确新建会话上下文政策,官方 CLI 仍为未改的0.160.1。系统/开发者要求仅在新建时生效;恢复时与初建摘要相同则正常恢复且省略新建专用字段,不声称恢复接口会更新指令。要求不同或清空时,在同一真实回复说明“会话要求已变化,已新建 Codex 会话继续处理,原会话仍保留。”,并新建远端承接公开对话,保留旧标识和查询记录;旧/非法初建摘要明确拒绝,不能猜测。
|
|
80
82
|
|
package/dist/acp.js
CHANGED
|
@@ -369,7 +369,7 @@ export class AcpSession {
|
|
|
369
369
|
signal?.addEventListener('abort', abort, { once: true });
|
|
370
370
|
try {
|
|
371
371
|
const hello = await this.stage('acp-initialize', () => this.connection.agent.request(acp.methods.agent.initialize, {
|
|
372
|
-
protocolVersion: acp.PROTOCOL_VERSION, clientInfo: { name: '@ai-workbench/remote-agent', version: '0.8.
|
|
372
|
+
protocolVersion: acp.PROTOCOL_VERSION, clientInfo: { name: '@ai-workbench/remote-agent', version: '0.8.13' },
|
|
373
373
|
clientCapabilities: { fs: { readTextFile: false, writeTextFile: false }, terminal: false, session: { notices: {} }, ...(this.employeeMeta ? { _meta: { awEmployeeExecution: { version: 1 } } } : {}) },
|
|
374
374
|
}, { cancellationSignal: signal }));
|
|
375
375
|
this.hooks.broker?.acknowledge(acp.methods.agent.initialize);
|
package/dist/employee-mcp.js
CHANGED
|
@@ -121,7 +121,7 @@ export async function openEmployeeMcp(options) {
|
|
|
121
121
|
socket.destroy();
|
|
122
122
|
return;
|
|
123
123
|
}
|
|
124
|
-
const mcp = new Server({ name: 'ai-workbench-employee', version: '0.8.
|
|
124
|
+
const mcp = new Server({ name: 'ai-workbench-employee', version: '0.8.13' }, { capabilities: { tools: {} } }), transport = new EmployeeSocketTransport(socket, options.maxBytes);
|
|
125
125
|
clients.add(mcp);
|
|
126
126
|
transports.add(transport);
|
|
127
127
|
mcp.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: EMPLOYEE_MCP_TOOLS }));
|
package/dist/local-user-turn.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SessionId } from '@deepseek-ai/dsh-session';
|
|
2
|
+
import { sameStoredSessionHeader } from "./session-header.js";
|
|
2
3
|
import { isDeepStrictEqual } from 'node:util';
|
|
3
4
|
import { NeedError } from "./remote.js";
|
|
4
5
|
const failure = (code = 'REMOTE_DETAIL_SCOPE_INVALID') => new NeedError(code, '本轮输入无法核对,已停止本次处理。', '官方当前员工输入与所选远程品牌');
|
|
@@ -20,7 +21,7 @@ export async function readLocalUserTurn(ctx, request) {
|
|
|
20
21
|
let proof, firstFailure;
|
|
21
22
|
try {
|
|
22
23
|
assertCurrent();
|
|
23
|
-
if (handle.id !== id || handle.access !== 'read' || !
|
|
24
|
+
if (handle.id !== id || handle.access !== 'read' || !sameStoredSessionHeader(handle.header, header) || handle.inheritedEventCount !== session.inheritedEventCount)
|
|
24
25
|
throw failure();
|
|
25
26
|
const { events } = await handle.read();
|
|
26
27
|
assertCurrent();
|
package/dist/presentation.js
CHANGED
|
@@ -17,7 +17,7 @@ export function employeeFailure(code, brand = 'codex') {
|
|
|
17
17
|
TECHNICAL_DETAILS_UNAVAILABLE: '技术详情暂不可用,请更新远程主机连接组件。',
|
|
18
18
|
REMOTE_DETAIL_STORAGE_FAILED: '技术详情保存失败,本轮已停止,请联系管理员检查。',
|
|
19
19
|
REMOTE_DETAIL_DELIVERY_UNKNOWN: '技术详情的持久结果无法核对,本轮已停止。',
|
|
20
|
-
REMOTE_DETAIL_SCOPE_INVALID: '
|
|
20
|
+
REMOTE_DETAIL_SCOPE_INVALID: '无法核对本次输入与当前会话的关联,本轮已停止;请联系管理员核对技术详情。',
|
|
21
21
|
EMPLOYEE_CONTEXT_UNAVAILABLE: '我需要远程主机连接组件提供当前本机工作区,本轮未执行。',
|
|
22
22
|
EMPLOYEE_ENDPOINT_UNAVAILABLE: '我需要员工电脑的执行连接就绪,本轮未执行;请联系管理员检查连接组件。',
|
|
23
23
|
EMPLOYEE_CONTEXT_CHANGED: '本机文件夹或连接已改变,原工具已停止;请在当前工作区重新开始。',
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SessionHeader } from '@deepseek-ai/dsh-session';
|
|
2
|
+
/** Only a persisted/live representation comparison. Live lifecycle fences still
|
|
3
|
+
* compare their original header exactly. Official JSONL stores omitted depth as 0. */
|
|
4
|
+
export declare function sameStoredSessionHeader(a: SessionHeader, b: SessionHeader): boolean;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
2
|
+
/** Only a persisted/live representation comparison. Live lifecycle fences still
|
|
3
|
+
* compare their original header exactly. Official JSONL stores omitted depth as 0. */
|
|
4
|
+
export function sameStoredSessionHeader(a, b) {
|
|
5
|
+
const depth = (header) => !Object.hasOwn(header, 'delegationDepth') ? 0 :
|
|
6
|
+
typeof header.delegationDepth === 'number' && Number.isSafeInteger(header.delegationDepth) && header.delegationDepth >= 0 && !Object.is(header.delegationDepth, -0) ? header.delegationDepth : undefined;
|
|
7
|
+
const left = depth(a), right = depth(b);
|
|
8
|
+
if (left === undefined || right === undefined)
|
|
9
|
+
return false;
|
|
10
|
+
const normalized = (header, value) => Object.setPrototypeOf({ ...header, delegationDepth: value }, Object.getPrototypeOf(header));
|
|
11
|
+
return isDeepStrictEqual(normalized(a, left), normalized(b, right));
|
|
12
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-workbench/remote-agent",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.13",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"zod": "4.6.7"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@ai-workbench/connect": "file:test/fixtures/ai-workbench-connect-0.7.
|
|
42
|
+
"@ai-workbench/connect": "file:test/fixtures/ai-workbench-connect-0.7.19.tgz",
|
|
43
43
|
"@ai-workbench/network": "file:test/fixtures/ai-workbench-network-0.4.4.tgz",
|
|
44
44
|
"@deepseek-ai/cordis": "4.0.4",
|
|
45
45
|
"@deepseek-ai/cordis-plugin-group": "1.0.4",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"zustand": "4.4.7"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|
|
71
|
-
"@ai-workbench/connect": "~0.7.
|
|
71
|
+
"@ai-workbench/connect": "~0.7.19",
|
|
72
72
|
"@ai-workbench/network": "~0.4.4",
|
|
73
73
|
"@deepseek-ai/cordis": "4.0.4",
|
|
74
74
|
"@deepseek-ai/dsh-agent": "0.2.0-rc.2",
|