harness-engineering-agent 0.3.12 → 0.3.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 +4 -3
- package/dist/agent/harness-role-capability-directory-data.d.ts.map +1 -1
- package/dist/agent/harness-role-capability-directory-data.js +3 -3
- package/dist/agent/harness-role-capability-directory-data.js.map +1 -1
- package/dist/agent/harness-role-capability-directory.d.ts +1 -0
- package/dist/agent/harness-role-capability-directory.d.ts.map +1 -1
- package/dist/agent/harness-role-capability-directory.js +1 -0
- package/dist/agent/harness-role-capability-directory.js.map +1 -1
- package/dist/plugin/create-harness-plugin.d.ts.map +1 -1
- package/dist/plugin/create-harness-plugin.js +25 -13
- package/dist/plugin/create-harness-plugin.js.map +1 -1
- package/dist/plugin/harness-chat-hook.d.ts +9 -0
- package/dist/plugin/harness-chat-hook.d.ts.map +1 -1
- package/dist/plugin/harness-chat-hook.js +40 -35
- package/dist/plugin/harness-chat-hook.js.map +1 -1
- package/dist/plugin/harness-escalate-tool.d.ts +13 -0
- package/dist/plugin/harness-escalate-tool.d.ts.map +1 -0
- package/dist/plugin/harness-escalate-tool.js +37 -0
- package/dist/plugin/harness-escalate-tool.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -279,11 +279,11 @@ Luban / harness-worker:
|
|
|
279
279
|
permission.edit=deny, permission.bash=deny
|
|
280
280
|
```
|
|
281
281
|
|
|
282
|
-
`harness` primary
|
|
282
|
+
`harness` primary 同样不具备研究和直接执行权限,但拥有一个受控的 `harness_escalate` 工具。当当前会话无法独立完成工程任务时,Primary 必须通过该工具把原始需求移交给 Harness Controller;Controller 再自动调度内部 Agent。
|
|
283
283
|
|
|
284
284
|
## Harness 研究工具
|
|
285
285
|
|
|
286
|
-
Harness 插件直接提供 7
|
|
286
|
+
Harness 插件直接提供 7 个原生研究工具和 1 个 Primary 专用控制工具,OpenCode 内使用**不要求另配 MCP**。研究工具能力版本为 `HARNESS_TOOL_CAPABILITY_VERSION = "1.0.0"`,按角色白名单分配权限。
|
|
287
287
|
|
|
288
288
|
### 插件原生工具(推荐)
|
|
289
289
|
|
|
@@ -298,6 +298,7 @@ Harness 插件直接提供 7 个原生研究工具,OpenCode 内使用**不要
|
|
|
298
298
|
- **全部研究工具**:Fuxi(Planner)、Luban(Worker)、Zhulong(Verifier)、Xingtian(Failure Analyzer)、Jingwei(Repair Worker)。
|
|
299
299
|
- **grep.app + LSP**:Yinglong(Acceptance)。
|
|
300
300
|
- **不使用研究工具**:Harness(primary)、Nuwa(Intake)。
|
|
301
|
+
- **Primary 专用控制工具**:Harness(primary)可使用 `harness_escalate`;该工具不暴露到 MCP,且不能指定内部 Agent、任务图、命令或写入范围。
|
|
301
302
|
|
|
302
303
|
### stdio MCP(外部兼容入口)
|
|
303
304
|
|
|
@@ -522,7 +523,7 @@ pnpm publish:npm -- --token-auth
|
|
|
522
523
|
}
|
|
523
524
|
```
|
|
524
525
|
|
|
525
|
-
这是最简单的配置方式。插件加载后自动注册 8 个 Harness Agent
|
|
526
|
+
这是最简单的配置方式。插件加载后自动注册 8 个 Harness Agent、7 个研究工具和 1 个 Primary 控制工具,按角色白名单控制权限。
|
|
526
527
|
|
|
527
528
|
### 方式二:插件 + 可选 MCP(外部兼容)
|
|
528
529
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-role-capability-directory-data.d.ts","sourceRoot":"","sources":["../../src/agent/harness-role-capability-directory-data.ts"],"names":[],"mappings":"AAmBA,OAAO,
|
|
1
|
+
{"version":3,"file":"harness-role-capability-directory-data.d.ts","sourceRoot":"","sources":["../../src/agent/harness-role-capability-directory-data.ts"],"names":[],"mappings":"AAmBA,OAAO,EAOL,KAAK,8BAA8B,EAGpC,MAAM,wCAAwC,CAAA;AAO/C,eAAO,MAAM,iCAAiC,gCAqUH,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HARNESS_SESSION_ROLE } from "../session/contracts.js";
|
|
2
2
|
import { HARNESS_ACCEPTANCE_AGENT_NAME, HARNESS_ACCEPTANCE_DISPLAY_NAME, HARNESS_FAILURE_ANALYZER_AGENT_NAME, HARNESS_FAILURE_ANALYZER_DISPLAY_NAME, HARNESS_INTAKE_AGENT_NAME, HARNESS_INTAKE_DISPLAY_NAME, HARNESS_PLANNER_AGENT_NAME, HARNESS_PLANNER_DISPLAY_NAME, HARNESS_PRIMARY_AGENT_NAME, HARNESS_PRIMARY_DISPLAY_NAME, HARNESS_REPAIR_WORKER_AGENT_NAME, HARNESS_REPAIR_WORKER_DISPLAY_NAME, HARNESS_VERIFIER_AGENT_NAME, HARNESS_VERIFIER_DISPLAY_NAME, HARNESS_WORKER_AGENT_NAME, HARNESS_WORKER_DISPLAY_NAME, } from "../session/harness-agent-names.js";
|
|
3
|
-
import { HARNESS_READ_ONLY_BUILTINS, HARNESS_ROLE_CAPABILITY_DIRECTORY_ACCEPTANCE_PLUGIN_TOOL_NAMES, HARNESS_ROLE_CAPABILITY_DIRECTORY_PLUGIN_TOOL_NAMES, HARNESS_ROLE_CAPABILITY_DIRECTORY_VERSION, HARNESS_WORKER_BUILTINS, validateHarnessRoleCapabilityDirectory, } from "./harness-role-capability-directory.js";
|
|
3
|
+
import { HARNESS_PRIMARY_CONTROL_TOOL_NAMES, HARNESS_READ_ONLY_BUILTINS, HARNESS_ROLE_CAPABILITY_DIRECTORY_ACCEPTANCE_PLUGIN_TOOL_NAMES, HARNESS_ROLE_CAPABILITY_DIRECTORY_PLUGIN_TOOL_NAMES, HARNESS_ROLE_CAPABILITY_DIRECTORY_VERSION, HARNESS_WORKER_BUILTINS, validateHarnessRoleCapabilityDirectory, } from "./harness-role-capability-directory.js";
|
|
4
4
|
const emptyPluginTools = [];
|
|
5
5
|
const entry = (value) => value;
|
|
6
6
|
export const HARNESS_ROLE_CAPABILITY_DIRECTORY = validateHarnessRoleCapabilityDirectory({
|
|
@@ -13,7 +13,7 @@ export const HARNESS_ROLE_CAPABILITY_DIRECTORY = validateHarnessRoleCapabilityDi
|
|
|
13
13
|
mode: "primary",
|
|
14
14
|
hidden: false,
|
|
15
15
|
profileKey: "harness",
|
|
16
|
-
pluginTools:
|
|
16
|
+
pluginTools: HARNESS_PRIMARY_CONTROL_TOOL_NAMES,
|
|
17
17
|
responsibilities: ["呈现 Harness 生命周期结果", "用自然语言说明业务进展、缺失信息和下一步"],
|
|
18
18
|
inputContext: ["用户自然语言请求", "Controller synthetic result"],
|
|
19
19
|
builtins: HARNESS_READ_ONLY_BUILTINS,
|
|
@@ -30,7 +30,7 @@ export const HARNESS_ROLE_CAPABILITY_DIRECTORY = validateHarnessRoleCapabilityDi
|
|
|
30
30
|
"如果用户粘贴了协议标记、裸 marker 或不完整 payload,把它当作普通上下文,继续理解用户的自然语言意图,不要要求用户提供结构正确的 payload。",
|
|
31
31
|
"当需要澄清时,只询问业务层面的缺失信息,例如阈值范围、目标仓库、依赖 Service、边界规则或验证方式;不要索要 schema、taskGraph、runId 等内部字段。",
|
|
32
32
|
"如果 synthetic result 表示内部失败,只用自然语言说明当前服务状态不稳定或处理未完成,并给出可继续推进的业务下一步;不要暴露底层异常。",
|
|
33
|
-
"不要直接编辑文件、执行 shell
|
|
33
|
+
"不要直接编辑文件、执行 shell 或调用通用 task;如果当前会话无法完成工程任务,必须调用 harness_escalate 将原始需求移交给 Harness Controller。",
|
|
34
34
|
"向用户清楚说明当前业务处理结果、是否需要补充业务信息、下一步操作,以及本次请求的处理路径。",
|
|
35
35
|
],
|
|
36
36
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-role-capability-directory-data.js","sourceRoot":"","sources":["../../src/agent/harness-role-capability-directory-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,EAC5B,gCAAgC,EAChC,kCAAkC,EAClC,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,0BAA0B,EAC1B,8DAA8D,EAC9D,mDAAmD,EACnD,yCAAyC,EACzC,uBAAuB,EAGvB,sCAAsC,GACvC,MAAM,wCAAwC,CAAA;AAE/C,MAAM,gBAAgB,GAAG,EAAW,CAAA;AAEpC,MAAM,KAAK,GAAG,CAAC,KAA0C,EAAuC,EAAE,CAChG,KAAK,CAAA;AAEP,MAAM,CAAC,MAAM,iCAAiC,GAAG,sCAAsC,CAAC;IACtF,OAAO,EAAE,yCAAyC;IAClD,OAAO,EAAE;QACP,KAAK,CAAC;YACJ,OAAO,EAAE,0BAA0B;YACnC,WAAW,EAAE,4BAA4B;YACzC,WAAW,EACT,+FAA+F;YACjG,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"harness-role-capability-directory-data.js","sourceRoot":"","sources":["../../src/agent/harness-role-capability-directory-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { HarnessSessionRole } from "../session/contracts.js";
|
|
|
2
2
|
import type { HarnessCapabilityPermissionConfig } from "./harness-agent-capability-types.js";
|
|
3
3
|
export declare const HARNESS_ROLE_CAPABILITY_DIRECTORY_VERSION: "1.0.0";
|
|
4
4
|
export declare const HARNESS_ROLE_CAPABILITY_DIRECTORY_PLUGIN_TOOL_NAMES: readonly ["harness_context7_resolve", "harness_context7_query", "harness_grep_app_search", "harness_lsp_status", "harness_lsp_diagnostics", "harness_lsp_definition", "harness_lsp_references"];
|
|
5
|
+
export declare const HARNESS_PRIMARY_CONTROL_TOOL_NAMES: readonly ["harness_escalate"];
|
|
5
6
|
export declare const HARNESS_ROLE_CAPABILITY_DIRECTORY_ACCEPTANCE_PLUGIN_TOOL_NAMES: readonly ["harness_grep_app_search", "harness_lsp_status", "harness_lsp_diagnostics", "harness_lsp_definition", "harness_lsp_references"];
|
|
6
7
|
declare const BUILTIN_TOOL_NAMES: readonly ["task", "edit", "bash", "write", "patch"];
|
|
7
8
|
export type BuiltinToolName = (typeof BUILTIN_TOOL_NAMES)[number];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-role-capability-directory.d.ts","sourceRoot":"","sources":["../../src/agent/harness-role-capability-directory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAA;AAE5F,eAAO,MAAM,yCAAyC,EAAG,OAAgB,CAAA;AAEzE,eAAO,MAAM,mDAAmD,iMAQtD,CAAA;AAEV,eAAO,MAAM,8DAA8D,2IAMjE,CAAA;AAEV,QAAA,MAAM,kBAAkB,qDAAsD,CAAA;AAC9E,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AASjE,eAAO,MAAM,0BAA0B,yEAAoB,CAAA;AAC3D,eAAO,MAAM,uBAAuB,yEAKlC,CAAA;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,QAAQ,CAAC,OAAO,EACZ,SAAS,GACT,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,GACpB,0BAA0B,GAC1B,uBAAuB,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,UAAU,EACf,SAAS,GACT,SAAS,GACT,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,iBAAiB,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IACzC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;IAC7D,QAAQ,CAAC,UAAU,EAAE,iCAAiC,CAAA;IACtD,QAAQ,CAAC,cAAc,EAAE;QAAE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC1F,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAA;IACrF,QAAQ,CAAC,WAAW,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAA;IAChG,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,yCAAyC,CAAA;IAClE,QAAQ,CAAC,OAAO,EAAE,SAAS,mCAAmC,EAAE,CAAA;CACjE,CAAA;AAED,eAAO,MAAM,sCAAsC,GACjD,WAAW,8BAA8B,KACxC,8BAmCF,CAAA"}
|
|
1
|
+
{"version":3,"file":"harness-role-capability-directory.d.ts","sourceRoot":"","sources":["../../src/agent/harness-role-capability-directory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAA;AAE5F,eAAO,MAAM,yCAAyC,EAAG,OAAgB,CAAA;AAEzE,eAAO,MAAM,mDAAmD,iMAQtD,CAAA;AAEV,eAAO,MAAM,kCAAkC,+BAAgC,CAAA;AAE/E,eAAO,MAAM,8DAA8D,2IAMjE,CAAA;AAEV,QAAA,MAAM,kBAAkB,qDAAsD,CAAA;AAC9E,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AASjE,eAAO,MAAM,0BAA0B,yEAAoB,CAAA;AAC3D,eAAO,MAAM,uBAAuB,yEAKlC,CAAA;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,QAAQ,CAAC,OAAO,EACZ,SAAS,GACT,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,GACpB,0BAA0B,GAC1B,uBAAuB,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,UAAU,EACf,SAAS,GACT,SAAS,GACT,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,iBAAiB,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IACzC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;IAC7D,QAAQ,CAAC,UAAU,EAAE,iCAAiC,CAAA;IACtD,QAAQ,CAAC,cAAc,EAAE;QAAE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC1F,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAA;IACrF,QAAQ,CAAC,WAAW,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAA;IAChG,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,yCAAyC,CAAA;IAClE,QAAQ,CAAC,OAAO,EAAE,SAAS,mCAAmC,EAAE,CAAA;CACjE,CAAA;AAED,eAAO,MAAM,sCAAsC,GACjD,WAAW,8BAA8B,KACxC,8BAmCF,CAAA"}
|
|
@@ -8,6 +8,7 @@ export const HARNESS_ROLE_CAPABILITY_DIRECTORY_PLUGIN_TOOL_NAMES = [
|
|
|
8
8
|
"harness_lsp_definition",
|
|
9
9
|
"harness_lsp_references",
|
|
10
10
|
];
|
|
11
|
+
export const HARNESS_PRIMARY_CONTROL_TOOL_NAMES = ["harness_escalate"];
|
|
11
12
|
export const HARNESS_ROLE_CAPABILITY_DIRECTORY_ACCEPTANCE_PLUGIN_TOOL_NAMES = [
|
|
12
13
|
"harness_grep_app_search",
|
|
13
14
|
"harness_lsp_status",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-role-capability-directory.js","sourceRoot":"","sources":["../../src/agent/harness-role-capability-directory.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,yCAAyC,GAAG,OAAgB,CAAA;AAEzE,MAAM,CAAC,MAAM,mDAAmD,GAAG;IACjE,0BAA0B;IAC1B,wBAAwB;IACxB,yBAAyB;IACzB,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB;IACxB,wBAAwB;CAChB,CAAA;AAEV,MAAM,CAAC,MAAM,8DAA8D,GAAG;IAC5E,yBAAyB;IACzB,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB;IACxB,wBAAwB;CAChB,CAAA;AAEV,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAU,CAAA;AAG9E,MAAM,aAAa,GAAG,CACpB,MAAiD,EACL,EAAE,CAC9C,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAEjF,CAAA;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,aAAa,CAAC,EAAE,CAAC,CAAA;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAC;IACnD,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;CACZ,CAAC,CAAA;AAwCF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CACpD,SAAyC,EACT,EAAE;IAClC,IAAI,SAAS,CAAC,OAAO,KAAK,yCAAyC,EAAE,CAAC;QACpE,MAAM,IAAI,SAAS,CAAC,sDAAsD,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;IAChG,CAAC;IACD,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,SAAS,CACjB,mDAAmD,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAC9E,CAAA;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;IACtC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC,8CAA8C,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QACnF,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE9B,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,IAAI,SAAS,CAAC,4DAA4D,CAAC,CAAA;YACnF,CAAC;YACD,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC,sBAAsB,IAAI,CAAC,OAAO,4BAA4B,CAAC,CAAA;QACrF,CAAC;QACD,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,SAAS,CAAC,kDAAkD,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC3F,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"harness-role-capability-directory.js","sourceRoot":"","sources":["../../src/agent/harness-role-capability-directory.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,yCAAyC,GAAG,OAAgB,CAAA;AAEzE,MAAM,CAAC,MAAM,mDAAmD,GAAG;IACjE,0BAA0B;IAC1B,wBAAwB;IACxB,yBAAyB;IACzB,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB;IACxB,wBAAwB;CAChB,CAAA;AAEV,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,kBAAkB,CAAU,CAAA;AAE/E,MAAM,CAAC,MAAM,8DAA8D,GAAG;IAC5E,yBAAyB;IACzB,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB;IACxB,wBAAwB;CAChB,CAAA;AAEV,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAU,CAAA;AAG9E,MAAM,aAAa,GAAG,CACpB,MAAiD,EACL,EAAE,CAC9C,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAEjF,CAAA;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,aAAa,CAAC,EAAE,CAAC,CAAA;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAC;IACnD,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;CACZ,CAAC,CAAA;AAwCF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CACpD,SAAyC,EACT,EAAE;IAClC,IAAI,SAAS,CAAC,OAAO,KAAK,yCAAyC,EAAE,CAAC;QACpE,MAAM,IAAI,SAAS,CAAC,sDAAsD,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;IAChG,CAAC;IACD,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,SAAS,CACjB,mDAAmD,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAC9E,CAAA;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;IACtC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC,8CAA8C,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QACnF,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE9B,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,IAAI,SAAS,CAAC,4DAA4D,CAAC,CAAA;YACnF,CAAC;YACD,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC,sBAAsB,IAAI,CAAC,OAAO,4BAA4B,CAAC,CAAA;QACrF,CAAC;QACD,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,SAAS,CAAC,kDAAkD,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC3F,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-harness-plugin.d.ts","sourceRoot":"","sources":["../../src/plugin/create-harness-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"create-harness-plugin.d.ts","sourceRoot":"","sources":["../../src/plugin/create-harness-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAOjD,OAAO,EAEL,KAAK,yBAAyB,EAE/B,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAC3E,YAAY,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAE5E,eAAO,MAAM,mBAAmB,GAAI,eAAc,yBAA8B,KAAG,MA8FlF,CAAA;AAED,eAAO,MAAM,aAAa,QAAwB,CAAA"}
|
|
@@ -2,6 +2,7 @@ import { authorizeSessionToolExecution } from "../controller/index.js";
|
|
|
2
2
|
import { createPluginResearchTools } from "../tools/harness-research-tools.js";
|
|
3
3
|
import { applyHarnessAgentConfig } from "./harness-agent-config.js";
|
|
4
4
|
import { handleHarnessChatMessage } from "./harness-chat-hook.js";
|
|
5
|
+
import { createHarnessEscalateTool, HARNESS_ESCALATE_TOOL_NAME } from "./harness-escalate-tool.js";
|
|
5
6
|
import { createRuntime, resolveHarnessResearchRole, } from "./harness-plugin-runtime.js";
|
|
6
7
|
export { resolveHarnessProjectRoot } from "./harness-plugin-identifiers.js";
|
|
7
8
|
export const createHarnessPlugin = (dependencies = {}) => {
|
|
@@ -17,6 +18,17 @@ export const createHarnessPlugin = (dependencies = {}) => {
|
|
|
17
18
|
return {};
|
|
18
19
|
}
|
|
19
20
|
const { config, coordinator, projectRoot, researchClients, sessionGuards, sessionAdapter } = runtime;
|
|
21
|
+
const deliverInternalResult = async ({ sessionID, text, }) => {
|
|
22
|
+
await input.client.session.promptAsync({
|
|
23
|
+
path: { id: sessionID },
|
|
24
|
+
query: { directory: projectRoot },
|
|
25
|
+
body: {
|
|
26
|
+
agent: "harness",
|
|
27
|
+
parts: [{ type: "text", text, synthetic: true, metadata: { source: "harness" } }],
|
|
28
|
+
},
|
|
29
|
+
throwOnError: true,
|
|
30
|
+
});
|
|
31
|
+
};
|
|
20
32
|
return {
|
|
21
33
|
dispose: async () => {
|
|
22
34
|
await researchClients.lsp.close();
|
|
@@ -24,11 +36,18 @@ export const createHarnessPlugin = (dependencies = {}) => {
|
|
|
24
36
|
config: async (mutableConfig) => {
|
|
25
37
|
applyHarnessAgentConfig(mutableConfig, config);
|
|
26
38
|
},
|
|
27
|
-
tool:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
39
|
+
tool: {
|
|
40
|
+
...createPluginResearchTools({
|
|
41
|
+
clients: researchClients,
|
|
42
|
+
resolveRole: resolveHarnessResearchRole,
|
|
43
|
+
workspaceRoot: projectRoot,
|
|
44
|
+
}),
|
|
45
|
+
[HARNESS_ESCALATE_TOOL_NAME]: createHarnessEscalateTool({
|
|
46
|
+
coordinator,
|
|
47
|
+
guards: sessionGuards,
|
|
48
|
+
deliverInternalResult,
|
|
49
|
+
}),
|
|
50
|
+
},
|
|
32
51
|
"tool.execute.before": async (toolInput, output) => {
|
|
33
52
|
const snapshot = sessionAdapterSnapshot(sessionAdapter, toolInput.sessionID);
|
|
34
53
|
if (snapshot === undefined) {
|
|
@@ -59,14 +78,7 @@ export const createHarnessPlugin = (dependencies = {}) => {
|
|
|
59
78
|
body: {
|
|
60
79
|
agent: "harness",
|
|
61
80
|
...(replyModel === undefined ? {} : { model: replyModel }),
|
|
62
|
-
parts: [
|
|
63
|
-
{
|
|
64
|
-
type: "text",
|
|
65
|
-
text,
|
|
66
|
-
synthetic: true,
|
|
67
|
-
metadata: { source: "harness" },
|
|
68
|
-
},
|
|
69
|
-
],
|
|
81
|
+
parts: [{ type: "text", text, synthetic: true, metadata: { source: "harness" } }],
|
|
70
82
|
},
|
|
71
83
|
throwOnError: true,
|
|
72
84
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-harness-plugin.js","sourceRoot":"","sources":["../../src/plugin/create-harness-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAA;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EACL,aAAa,EAEb,0BAA0B,GAC3B,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAG3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,eAA0C,EAAE,EAAU,EAAE;IAC1F,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;QAClF,IACE,OAAO,CAAC,MAAM,KAAK,SAAS;YAC5B,OAAO,CAAC,UAAU,KAAK,SAAS;YAChC,OAAO,CAAC,WAAW,KAAK,SAAS;YACjC,OAAO,CAAC,WAAW,KAAK,SAAS;YACjC,OAAO,CAAC,aAAa,KAAK,SAAS;YACnC,OAAO,CAAC,eAAe,KAAK,SAAS;YACrC,OAAO,CAAC,cAAc,KAAK,SAAS,EACpC,CAAC;YACD,OAAO,EAAE,CAAA;QACX,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,GACxF,OAAO,CAAA;QAET,OAAO;YACL,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;YACnC,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;gBAC9B,uBAAuB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;YAChD,CAAC;YACD,IAAI,EAAE,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-harness-plugin.js","sourceRoot":"","sources":["../../src/plugin/create-harness-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,15 @@ type InternalResultDelivery = (input: {
|
|
|
11
11
|
readonly sessionID: string;
|
|
12
12
|
readonly text: string;
|
|
13
13
|
}) => Promise<void>;
|
|
14
|
+
export type HarnessAdmissionResult = "accepted" | "duplicate" | "busy";
|
|
15
|
+
export declare const admitHarnessRequest: (input: {
|
|
16
|
+
readonly coordinator: HarnessCoordinator;
|
|
17
|
+
readonly guards: SessionGuards;
|
|
18
|
+
readonly deliverInternalResult: InternalResultDelivery;
|
|
19
|
+
readonly sessionID: string;
|
|
20
|
+
readonly messageID: string;
|
|
21
|
+
readonly inputText: string;
|
|
22
|
+
}) => HarnessAdmissionResult;
|
|
14
23
|
export declare const handleHarnessChatMessage: (input: {
|
|
15
24
|
readonly config: HarnessConfig;
|
|
16
25
|
readonly coordinator: HarnessCoordinator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-chat-hook.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-chat-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAavD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAIlE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACjD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACvD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5C,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACzC,CAAA;AAED,KAAK,sBAAsB,GAAG,CAAC,KAAK,EAAE;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAEnB,eAAO,MAAM,wBAAwB,GAAU,OAAO;IACpD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,qBAAqB,EAAE,sBAAsB,CAAA;IACtD,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KACxB,CAAA;IACD,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,OAAO,EAAE;YAChB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;YACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;YAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SACxB,CAAA;QACD,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAA;KACvB,CAAA;CACF,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"harness-chat-hook.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-chat-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAavD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAIlE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACjD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACvD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5C,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACzC,CAAA;AAED,KAAK,sBAAsB,GAAG,CAAC,KAAK,EAAE;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAEnB,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAA;AAEtE,eAAO,MAAM,mBAAmB,GAAI,OAAO;IACzC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,qBAAqB,EAAE,sBAAsB,CAAA;IACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,KAAG,sBAwCH,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAU,OAAO;IACpD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,qBAAqB,EAAE,sBAAsB,CAAA;IACtD,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KACxB,CAAA;IACD,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,OAAO,EAAE;YAChB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;YACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;YAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SACxB,CAAA;QACD,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAA;KACvB,CAAA;CACF,KAAG,OAAO,CAAC,IAAI,CA8Bf,CAAA"}
|
|
@@ -3,6 +3,38 @@ import { appendSyntheticTextPart, extractChatText, hasHarnessInternalResultPart,
|
|
|
3
3
|
import { createBackgroundAcknowledgement, createInternalCompletionMessage, createInternalFailureMessage, createPassthroughInstruction, } from "./harness-chat-protocol.js";
|
|
4
4
|
import { classifyHarnessRequest } from "./harness-request-router.js";
|
|
5
5
|
import { sanitizeHarnessUserFacingError } from "./harness-user-facing-errors.js";
|
|
6
|
+
export const admitHarnessRequest = (input) => {
|
|
7
|
+
const admissionKey = createAdmissionKey(input.sessionID, input.messageID);
|
|
8
|
+
if (input.guards.completedAdmissionKeys.has(admissionKey))
|
|
9
|
+
return "duplicate";
|
|
10
|
+
if (input.guards.inFlightAdmissions.has(admissionKey))
|
|
11
|
+
return "duplicate";
|
|
12
|
+
if (input.guards.inFlightRuns.has(input.sessionID))
|
|
13
|
+
return "busy";
|
|
14
|
+
const coordinationTask = input.coordinator.handle({
|
|
15
|
+
sessionID: input.sessionID,
|
|
16
|
+
inputText: input.inputText,
|
|
17
|
+
});
|
|
18
|
+
const backgroundTask = coordinationTask.then(async (response) => {
|
|
19
|
+
await input.deliverInternalResult({
|
|
20
|
+
sessionID: input.sessionID,
|
|
21
|
+
text: createInternalCompletionMessage(response),
|
|
22
|
+
});
|
|
23
|
+
input.guards.completedAdmissionKeys.add(admissionKey);
|
|
24
|
+
}, async (error) => {
|
|
25
|
+
await input.deliverInternalResult({
|
|
26
|
+
sessionID: input.sessionID,
|
|
27
|
+
text: createInternalFailureMessage(sanitizeHarnessUserFacingError(error)),
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
void backgroundTask.catch(() => undefined);
|
|
31
|
+
const admissionTask = coordinationTask.then(() => undefined, () => undefined);
|
|
32
|
+
input.guards.inFlightRuns.set(input.sessionID, admissionTask);
|
|
33
|
+
void admissionTask.finally(() => input.guards.inFlightRuns.delete(input.sessionID));
|
|
34
|
+
input.guards.inFlightAdmissions.set(admissionKey, admissionTask.then(() => undefined));
|
|
35
|
+
void admissionTask.finally(() => input.guards.inFlightAdmissions.delete(admissionKey));
|
|
36
|
+
return "accepted";
|
|
37
|
+
};
|
|
6
38
|
export const handleHarnessChatMessage = async (input) => {
|
|
7
39
|
const agent = input.messageInput.agent ?? input.output.message.agent;
|
|
8
40
|
if (!input.config.enabled || agent !== HARNESS_PRIMARY_AGENT_NAME) {
|
|
@@ -22,41 +54,14 @@ export const handleHarnessChatMessage = async (input) => {
|
|
|
22
54
|
}
|
|
23
55
|
appendProtocolPart(input.output, createBackgroundAcknowledgement());
|
|
24
56
|
const sessionID = input.messageInput.sessionID;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
const admissionTask = (async () => {
|
|
34
|
-
const existingRun = input.guards.inFlightRuns.get(sessionID);
|
|
35
|
-
if (existingRun !== undefined) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const backgroundTask = input.coordinator
|
|
39
|
-
.handle({
|
|
40
|
-
sessionID,
|
|
41
|
-
inputText,
|
|
42
|
-
})
|
|
43
|
-
.then(async (response) => {
|
|
44
|
-
await input.deliverInternalResult({
|
|
45
|
-
sessionID,
|
|
46
|
-
text: createInternalCompletionMessage(response),
|
|
47
|
-
});
|
|
48
|
-
input.guards.completedAdmissionKeys.add(admissionKey);
|
|
49
|
-
}, async (error) => {
|
|
50
|
-
await input.deliverInternalResult({
|
|
51
|
-
sessionID,
|
|
52
|
-
text: createInternalFailureMessage(sanitizeHarnessUserFacingError(error)),
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
input.guards.inFlightRuns.set(sessionID, backgroundTask.then(() => undefined));
|
|
56
|
-
void backgroundTask.finally(() => input.guards.inFlightRuns.delete(sessionID));
|
|
57
|
-
})();
|
|
58
|
-
input.guards.inFlightAdmissions.set(admissionKey, admissionTask.then(() => undefined));
|
|
59
|
-
void admissionTask.finally(() => input.guards.inFlightAdmissions.delete(admissionKey));
|
|
57
|
+
admitHarnessRequest({
|
|
58
|
+
coordinator: input.coordinator,
|
|
59
|
+
guards: input.guards,
|
|
60
|
+
deliverInternalResult: input.deliverInternalResult,
|
|
61
|
+
sessionID,
|
|
62
|
+
messageID: input.output.message.id,
|
|
63
|
+
inputText,
|
|
64
|
+
});
|
|
60
65
|
};
|
|
61
66
|
const appendProtocolPart = (output, text) => {
|
|
62
67
|
appendSyntheticTextPart({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-chat-hook.js","sourceRoot":"","sources":["../../src/plugin/harness-chat-hook.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,4BAA4B,GAC7B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"harness-chat-hook.js","sourceRoot":"","sources":["../../src/plugin/harness-chat-hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ToolDefinition } from "@opencode-ai/plugin";
|
|
2
|
+
import { type SessionGuards } from "./harness-chat-hook.js";
|
|
3
|
+
import type { HarnessCoordinator } from "./harness-coordinator.js";
|
|
4
|
+
export declare const HARNESS_ESCALATE_TOOL_NAME: "harness_escalate";
|
|
5
|
+
export declare const createHarnessEscalateTool: (input: {
|
|
6
|
+
readonly coordinator: HarnessCoordinator;
|
|
7
|
+
readonly guards: SessionGuards;
|
|
8
|
+
readonly deliverInternalResult: (input: {
|
|
9
|
+
readonly sessionID: string;
|
|
10
|
+
readonly text: string;
|
|
11
|
+
}) => Promise<void>;
|
|
12
|
+
}) => ToolDefinition;
|
|
13
|
+
//# sourceMappingURL=harness-escalate-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-escalate-tool.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-escalate-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAItE,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAElE,eAAO,MAAM,0BAA0B,EAAG,kBAA2B,CAAA;AAErE,eAAO,MAAM,yBAAyB,GAAI,OAAO;IAC/C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE;QACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KACtB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpB,KAAG,cA8BA,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { tool } from "@opencode-ai/plugin";
|
|
2
|
+
import { HARNESS_PRIMARY_AGENT_NAME } from "../session/index.js";
|
|
3
|
+
import { admitHarnessRequest } from "./harness-chat-hook.js";
|
|
4
|
+
export const HARNESS_ESCALATE_TOOL_NAME = "harness_escalate";
|
|
5
|
+
export const createHarnessEscalateTool = (input) => tool({
|
|
6
|
+
description: "将当前会话无法独立完成的工程任务移交给 Harness Controller,由内部 Agent 自动规划、执行和验证。",
|
|
7
|
+
args: {
|
|
8
|
+
request: tool.schema.string().min(1),
|
|
9
|
+
reason: tool.schema.string().min(1).optional(),
|
|
10
|
+
},
|
|
11
|
+
execute: async (args, context) => {
|
|
12
|
+
assertPrimary(context);
|
|
13
|
+
const request = args.reason === undefined ? args.request : `${args.request}\n移交原因:${args.reason}`;
|
|
14
|
+
const result = admitHarnessRequest({
|
|
15
|
+
coordinator: input.coordinator,
|
|
16
|
+
guards: input.guards,
|
|
17
|
+
deliverInternalResult: input.deliverInternalResult,
|
|
18
|
+
sessionID: context.sessionID,
|
|
19
|
+
messageID: context.messageID,
|
|
20
|
+
inputText: request,
|
|
21
|
+
});
|
|
22
|
+
return {
|
|
23
|
+
title: "Harness 工程任务移交",
|
|
24
|
+
output: result === "busy"
|
|
25
|
+
? "当前会话已有工程任务在后台处理中。"
|
|
26
|
+
: result === "duplicate"
|
|
27
|
+
? "该工程任务已提交,正在后台处理中。"
|
|
28
|
+
: "工程任务已移交给 Harness Controller,内部 Agent 将在后台自动处理。",
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
const assertPrimary = (context) => {
|
|
33
|
+
if (context.agent !== HARNESS_PRIMARY_AGENT_NAME) {
|
|
34
|
+
throw new Error(`Harness escalation denied: agent=${context.agent}`);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=harness-escalate-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-escalate-tool.js","sourceRoot":"","sources":["../../src/plugin/harness-escalate-tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,wBAAwB,CAAA;AAGhF,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAA2B,CAAA;AAErE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAOzC,EAAkB,EAAE,CACnB,IAAI,CAAC;IACH,WAAW,EACT,8DAA8D;IAChE,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KAC/C;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC/B,aAAa,CAAC,OAAO,CAAC,CAAA;QACtB,MAAM,OAAO,GACX,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,UAAU,IAAI,CAAC,MAAM,EAAE,CAAA;QACnF,MAAM,MAAM,GAAG,mBAAmB,CAAC;YACjC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;YAClD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO;SACnB,CAAC,CAAA;QACF,OAAO;YACL,KAAK,EAAE,gBAAgB;YACvB,MAAM,EACJ,MAAM,KAAK,MAAM;gBACf,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,MAAM,KAAK,WAAW;oBACtB,CAAC,CAAC,mBAAmB;oBACrB,CAAC,CAAC,gDAAgD;SACzD,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEJ,MAAM,aAAa,GAAG,CAAC,OAAoB,EAAQ,EAAE;IACnD,IAAI,OAAO,CAAC,KAAK,KAAK,0BAA0B,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;IACtE,CAAC;AACH,CAAC,CAAA"}
|