agents-harness 0.1.1 → 0.1.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/dist/cli.js +1 -1
- package/dist/core/context-manager.js +39 -38
- package/dist/core/context-manager.js.map +1 -1
- package/package.json +2 -1
package/dist/cli.js
CHANGED
|
@@ -9,7 +9,7 @@ const program = new Command();
|
|
|
9
9
|
program
|
|
10
10
|
.name("agents-harness")
|
|
11
11
|
.description("Multi-agent orchestrator for autonomous software development")
|
|
12
|
-
.version("0.1.
|
|
12
|
+
.version("0.1.2");
|
|
13
13
|
program
|
|
14
14
|
.command("run")
|
|
15
15
|
.description("Start a new harness run with a specification")
|
|
@@ -44,7 +44,6 @@ export class ContextManager {
|
|
|
44
44
|
return config?.agents?.[role]?.maxTurns ?? DEFAULT_MAX_TURNS[role];
|
|
45
45
|
}
|
|
46
46
|
async runAgent(options) {
|
|
47
|
-
// Dynamic import to avoid hard dependency
|
|
48
47
|
const { query } = await import("@anthropic-ai/claude-agent-sdk");
|
|
49
48
|
const { role, prompt, onActivity } = options;
|
|
50
49
|
const appendPrompt = this.projectContext.config?.agents?.[role]?.systemPromptAppend;
|
|
@@ -52,31 +51,52 @@ export class ContextManager {
|
|
|
52
51
|
const model = this.getModelForRole(role);
|
|
53
52
|
const tools = this.getToolsForRole(role);
|
|
54
53
|
const maxTurns = this.getMaxTurnsForRole(role);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
// SDK query() returns an AsyncGenerator<SDKMessage>
|
|
55
|
+
// We iterate through all messages, collecting activity events and the final result
|
|
56
|
+
const conversation = query({
|
|
58
57
|
prompt,
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
options: {
|
|
59
|
+
systemPrompt,
|
|
60
|
+
model,
|
|
61
|
+
tools,
|
|
62
|
+
maxTurns,
|
|
63
|
+
cwd: this.projectContext.root,
|
|
64
|
+
allowedTools: tools,
|
|
65
|
+
permissionMode: "bypassPermissions",
|
|
66
|
+
allowDangerouslySkipPermissions: true,
|
|
67
|
+
env: {
|
|
68
|
+
...process.env,
|
|
69
|
+
ANTHROPIC_API_KEY: this.apiKey,
|
|
70
|
+
},
|
|
71
|
+
},
|
|
63
72
|
});
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
let response = "";
|
|
74
|
+
let costUsd = 0;
|
|
75
|
+
for await (const message of conversation) {
|
|
76
|
+
// Handle assistant messages — extract tool_use blocks for activity events
|
|
77
|
+
if (message.type === "assistant" && onActivity) {
|
|
78
|
+
const assistantMsg = message;
|
|
79
|
+
if (Array.isArray(assistantMsg.message?.content)) {
|
|
80
|
+
for (const block of assistantMsg.message.content) {
|
|
81
|
+
if (block.type === "tool_use" && block.name) {
|
|
82
|
+
onActivity(block.name, summarizeToolUse({
|
|
83
|
+
name: block.name,
|
|
84
|
+
input: block.input ?? {},
|
|
85
|
+
}));
|
|
71
86
|
}
|
|
72
87
|
}
|
|
73
88
|
}
|
|
74
89
|
}
|
|
90
|
+
// Handle result messages — extract final response and cost
|
|
91
|
+
if (message.type === "result") {
|
|
92
|
+
const resultMsg = message;
|
|
93
|
+
costUsd = resultMsg.total_cost_usd ?? 0;
|
|
94
|
+
if (resultMsg.subtype === "success" && resultMsg.result) {
|
|
95
|
+
response = resultMsg.result;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
75
98
|
}
|
|
76
|
-
return {
|
|
77
|
-
response: extractTextResponse(result),
|
|
78
|
-
costUsd: result.usage?.cost_usd ?? 0,
|
|
79
|
-
};
|
|
99
|
+
return { response, costUsd };
|
|
80
100
|
}
|
|
81
101
|
}
|
|
82
102
|
function summarizeToolUse(block) {
|
|
@@ -96,23 +116,4 @@ function summarizeToolUse(block) {
|
|
|
96
116
|
return `Grep ${input.pattern}`;
|
|
97
117
|
return name;
|
|
98
118
|
}
|
|
99
|
-
function extractTextResponse(result) {
|
|
100
|
-
if (!result.messages)
|
|
101
|
-
return "";
|
|
102
|
-
for (let i = result.messages.length - 1; i >= 0; i--) {
|
|
103
|
-
const msg = result.messages[i];
|
|
104
|
-
if (msg.role === "assistant") {
|
|
105
|
-
if (typeof msg.content === "string")
|
|
106
|
-
return msg.content;
|
|
107
|
-
if (Array.isArray(msg.content)) {
|
|
108
|
-
for (const block of msg.content) {
|
|
109
|
-
if (block.type === "text") {
|
|
110
|
-
return block.text;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return "";
|
|
117
|
-
}
|
|
118
119
|
//# sourceMappingURL=context-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/core/context-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,gBAAgB;AAChB,MAAM,SAAS,GAA2B;IACxC,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE,4BAA4B;IACpC,KAAK,EAAE,2BAA2B;CACnC,CAAC;AAEF,0BAA0B;AAC1B,MAAM,cAAc,GAA8B;IAChD,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,QAAQ;CACpB,CAAC;AAEF,yBAAyB;AACzB,MAAM,aAAa,GAAgC;IACjD,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC5D,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;CAC5C,CAAC;AAEF,6BAA6B;AAC7B,MAAM,iBAAiB,GAA8B;IACnD,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,EAAE;CACd,CAAC;AAaF,MAAM,OAAO,cAAc;IACjB,MAAM,CAAS;IACf,cAAc,CAAiB;IAEvC,YAAY,MAAc,EAAE,cAA8B;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,eAAe,CAAC,IAAe;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC1C,MAAM,WAAW,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QAClD,MAAM,SAAS,GAAG,WAAW,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;IAC3C,CAAC;IAED,eAAe,CAAC,IAAe;QAC7B,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,kBAAkB,CAAC,IAAe;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC1C,OAAO,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,
|
|
1
|
+
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/core/context-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,gBAAgB;AAChB,MAAM,SAAS,GAA2B;IACxC,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE,4BAA4B;IACpC,KAAK,EAAE,2BAA2B;CACnC,CAAC;AAEF,0BAA0B;AAC1B,MAAM,cAAc,GAA8B;IAChD,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,QAAQ;CACpB,CAAC;AAEF,yBAAyB;AACzB,MAAM,aAAa,GAAgC;IACjD,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC5D,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;CAC5C,CAAC;AAEF,6BAA6B;AAC7B,MAAM,iBAAiB,GAA8B;IACnD,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,EAAE;CACd,CAAC;AAaF,MAAM,OAAO,cAAc;IACjB,MAAM,CAAS;IACf,cAAc,CAAiB;IAEvC,YAAY,MAAc,EAAE,cAA8B;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,eAAe,CAAC,IAAe;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC1C,MAAM,WAAW,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QAClD,MAAM,SAAS,GAAG,WAAW,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;IAC3C,CAAC;IAED,eAAe,CAAC,IAAe;QAC7B,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,kBAAkB,CAAC,IAAe;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC1C,OAAO,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAEjE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAE7C,MAAM,YAAY,GAChB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;QACjE,MAAM,YAAY,GAAG,iBAAiB,CACpC,IAAI,EACJ,IAAI,CAAC,cAAc,EACnB,YAAY,CACb,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAE/C,oDAAoD;QACpD,mFAAmF;QACnF,MAAM,YAAY,GAAG,KAAK,CAAC;YACzB,MAAM;YACN,OAAO,EAAE;gBACP,YAAY;gBACZ,KAAK;gBACL,KAAK;gBACL,QAAQ;gBACR,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI;gBAC7B,YAAY,EAAE,KAAK;gBACnB,cAAc,EAAE,mBAA4B;gBAC5C,+BAA+B,EAAE,IAAI;gBACrC,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,iBAAiB,EAAE,IAAI,CAAC,MAAM;iBAC/B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACzC,0EAA0E;YAC1E,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,UAAU,EAAE,CAAC;gBAC/C,MAAM,YAAY,GAAG,OAUpB,CAAC;gBACF,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;oBACjD,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;wBACjD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;4BAC5C,UAAU,CACR,KAAK,CAAC,IAAI,EACV,gBAAgB,CAAC;gCACf,IAAI,EAAE,KAAK,CAAC,IAAI;gCAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;6BACzB,CAAC,CACH,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,2DAA2D;YAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,OAKjB,CAAC;gBACF,OAAO,GAAG,SAAS,CAAC,cAAc,IAAI,CAAC,CAAC;gBACxC,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;oBACxD,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,KAGzB;IACC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;IACzE,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,SAAS,KAAK,CAAC,SAAS,EAAE,CAAC;IAC3E,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;IACzE,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO;QAClC,OAAO,SAAS,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IACvD,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;IACrE,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;IACrE,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agents-harness",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Multi-agent orchestrator for autonomous software development",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"node": ">=18"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.87",
|
|
49
50
|
"commander": "^14.0.3",
|
|
50
51
|
"dotenv": "^17.3.1",
|
|
51
52
|
"ws": "^8.20.0",
|