@openharness/core 0.4.0 → 0.4.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/README.md +116 -0
- package/dist/__tests__/agent-registry.test.d.ts +2 -0
- package/dist/__tests__/agent-registry.test.d.ts.map +1 -0
- package/dist/__tests__/agent-registry.test.js +429 -0
- package/dist/__tests__/agent-registry.test.js.map +1 -0
- package/dist/__tests__/conversation.test.d.ts +2 -0
- package/dist/__tests__/conversation.test.d.ts.map +1 -0
- package/dist/__tests__/conversation.test.js +127 -0
- package/dist/__tests__/conversation.test.js.map +1 -0
- package/dist/__tests__/messages.test.js +15 -2
- package/dist/__tests__/messages.test.js.map +1 -1
- package/dist/__tests__/middleware/compaction.test.d.ts +2 -0
- package/dist/__tests__/middleware/compaction.test.d.ts.map +1 -0
- package/dist/__tests__/middleware/compaction.test.js +163 -0
- package/dist/__tests__/middleware/compaction.test.js.map +1 -0
- package/dist/__tests__/middleware/hooks.test.d.ts +2 -0
- package/dist/__tests__/middleware/hooks.test.d.ts.map +1 -0
- package/dist/__tests__/middleware/hooks.test.js +97 -0
- package/dist/__tests__/middleware/hooks.test.js.map +1 -0
- package/dist/__tests__/middleware/persistence.test.d.ts +2 -0
- package/dist/__tests__/middleware/persistence.test.d.ts.map +1 -0
- package/dist/__tests__/middleware/persistence.test.js +70 -0
- package/dist/__tests__/middleware/persistence.test.js.map +1 -0
- package/dist/__tests__/middleware/retry.test.d.ts +2 -0
- package/dist/__tests__/middleware/retry.test.d.ts.map +1 -0
- package/dist/__tests__/middleware/retry.test.js +151 -0
- package/dist/__tests__/middleware/retry.test.js.map +1 -0
- package/dist/__tests__/middleware/turn-tracking.test.d.ts +2 -0
- package/dist/__tests__/middleware/turn-tracking.test.d.ts.map +1 -0
- package/dist/__tests__/middleware/turn-tracking.test.js +70 -0
- package/dist/__tests__/middleware/turn-tracking.test.js.map +1 -0
- package/dist/__tests__/runner.test.d.ts +2 -0
- package/dist/__tests__/runner.test.d.ts.map +1 -0
- package/dist/__tests__/runner.test.js +111 -0
- package/dist/__tests__/runner.test.js.map +1 -0
- package/dist/__tests__/stream.test.d.ts +2 -0
- package/dist/__tests__/stream.test.d.ts.map +1 -0
- package/dist/__tests__/stream.test.js +100 -0
- package/dist/__tests__/stream.test.js.map +1 -0
- package/dist/__tests__/ui-stream.test.js +105 -0
- package/dist/__tests__/ui-stream.test.js.map +1 -1
- package/dist/agent-registry.d.ts +90 -0
- package/dist/agent-registry.d.ts.map +1 -0
- package/dist/agent-registry.js +217 -0
- package/dist/agent-registry.js.map +1 -0
- package/dist/agent.d.ts +13 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +186 -41
- package/dist/agent.js.map +1 -1
- package/dist/conversation.d.ts +46 -0
- package/dist/conversation.d.ts.map +1 -0
- package/dist/conversation.js +66 -0
- package/dist/conversation.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/middleware/compaction.d.ts +20 -0
- package/dist/middleware/compaction.d.ts.map +1 -0
- package/dist/middleware/compaction.js +73 -0
- package/dist/middleware/compaction.js.map +1 -0
- package/dist/middleware/hooks.d.ts +10 -0
- package/dist/middleware/hooks.d.ts.map +1 -0
- package/dist/middleware/hooks.js +36 -0
- package/dist/middleware/hooks.js.map +1 -0
- package/dist/middleware/index.d.ts +6 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +6 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/persistence.d.ts +12 -0
- package/dist/middleware/persistence.d.ts.map +1 -0
- package/dist/middleware/persistence.js +15 -0
- package/dist/middleware/persistence.js.map +1 -0
- package/dist/middleware/retry.d.ts +8 -0
- package/dist/middleware/retry.d.ts.map +1 -0
- package/dist/middleware/retry.js +70 -0
- package/dist/middleware/retry.js.map +1 -0
- package/dist/middleware/turn-tracking.d.ts +7 -0
- package/dist/middleware/turn-tracking.d.ts.map +1 -0
- package/dist/middleware/turn-tracking.js +25 -0
- package/dist/middleware/turn-tracking.js.map +1 -0
- package/dist/runner.d.ts +23 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +18 -0
- package/dist/runner.js.map +1 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +7 -40
- package/dist/session.js.map +1 -1
- package/dist/stream.d.ts +12 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +38 -0
- package/dist/stream.js.map +1 -0
- package/dist/ui-stream.d.ts.map +1 -1
- package/dist/ui-stream.js +13 -1
- package/dist/ui-stream.js.map +1 -1
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +40 -0
- package/dist/utils.js.map +1 -0
- package/package.json +13 -2
package/dist/utils.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export function isRetryableError(error) {
|
|
2
|
+
const msg = error.message.toLowerCase();
|
|
3
|
+
return (/429|500|502|503|504|529/.test(msg) ||
|
|
4
|
+
msg.includes("rate limit") ||
|
|
5
|
+
msg.includes("timeout") ||
|
|
6
|
+
msg.includes("econnreset") ||
|
|
7
|
+
msg.includes("overloaded"));
|
|
8
|
+
}
|
|
9
|
+
export function getRetryDelay(attempt, config, error) {
|
|
10
|
+
const retryAfter = error.headers?.["retry-after"];
|
|
11
|
+
if (retryAfter)
|
|
12
|
+
return Math.min(parseInt(retryAfter) * 1000, config.maxDelayMs);
|
|
13
|
+
const base = config.initialDelayMs * config.backoffMultiplier ** attempt;
|
|
14
|
+
const jitter = Math.random() * 0.3 * base;
|
|
15
|
+
return Math.min(base + jitter, config.maxDelayMs);
|
|
16
|
+
}
|
|
17
|
+
export function sleep(ms, signal) {
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
if (signal?.aborted) {
|
|
20
|
+
reject(signal.reason);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const timer = setTimeout(resolve, ms);
|
|
24
|
+
signal?.addEventListener("abort", () => {
|
|
25
|
+
clearTimeout(timer);
|
|
26
|
+
reject(signal.reason);
|
|
27
|
+
}, { once: true });
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
export function addUsage(a, b) {
|
|
31
|
+
return {
|
|
32
|
+
inputTokens: (a.inputTokens ?? 0) + (b.inputTokens ?? 0),
|
|
33
|
+
outputTokens: (a.outputTokens ?? 0) + (b.outputTokens ?? 0),
|
|
34
|
+
totalTokens: (a.totalTokens ?? 0) + (b.totalTokens ?? 0),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function defaultEstimateTokens(messages) {
|
|
38
|
+
return Math.ceil(JSON.stringify(messages).length / 4);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,gBAAgB,CAAC,KAAY;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACxC,OAAO,CACL,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC;QACnC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC1B,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QACvB,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC1B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,MAAmB,EAAE,KAAY;IAC9E,MAAM,UAAU,GAAI,KAAa,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC;IAC3D,IAAI,UAAU;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAEhF,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,MAAoB;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,EAAE,gBAAgB,CACtB,OAAO,EACP,GAAG,EAAE;YACH,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAa,EAAE,CAAa;IACnD,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC;QACxD,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC;QAC3D,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAmB;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openharness/core",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Building blocks for capable, general-purpose agents",
|
|
6
6
|
"exports": {
|
|
@@ -26,8 +26,19 @@
|
|
|
26
26
|
"ai",
|
|
27
27
|
"llm",
|
|
28
28
|
"tools",
|
|
29
|
-
"mcp"
|
|
29
|
+
"mcp",
|
|
30
|
+
"middleware",
|
|
31
|
+
"runner"
|
|
30
32
|
],
|
|
33
|
+
"homepage": "https://github.com/MaxGfeller/open-harness/tree/main/packages/core#readme",
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "https://github.com/MaxGfeller/open-harness.git",
|
|
37
|
+
"directory": "packages/core"
|
|
38
|
+
},
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/MaxGfeller/open-harness/issues"
|
|
41
|
+
},
|
|
31
42
|
"license": "ISC",
|
|
32
43
|
"dependencies": {
|
|
33
44
|
"@ai-sdk/mcp": "^1.0.21",
|