cloison-runtime 0.1.0
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/LICENSE +21 -0
- package/README.md +313 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +47 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/index.d.ts +57 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +27 -0
- package/dist/config/index.js.map +1 -0
- package/dist/credentials/index.d.ts +4 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +3 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/credentials/proxy.d.ts +3 -0
- package/dist/credentials/proxy.d.ts.map +1 -0
- package/dist/credentials/proxy.js +11 -0
- package/dist/credentials/proxy.js.map +1 -0
- package/dist/credentials/store.d.ts +7 -0
- package/dist/credentials/store.d.ts.map +1 -0
- package/dist/credentials/store.js +115 -0
- package/dist/credentials/store.js.map +1 -0
- package/dist/credentials/types.d.ts +14 -0
- package/dist/credentials/types.d.ts.map +1 -0
- package/dist/credentials/types.js +2 -0
- package/dist/credentials/types.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/runner.d.ts +7 -0
- package/dist/hooks/runner.d.ts.map +1 -0
- package/dist/hooks/runner.js +20 -0
- package/dist/hooks/runner.js.map +1 -0
- package/dist/hooks/types.d.ts +39 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +2 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/infra/env.d.ts +2 -0
- package/dist/infra/env.d.ts.map +1 -0
- package/dist/infra/env.js +6 -0
- package/dist/infra/env.js.map +1 -0
- package/dist/infra/warning-filter.d.ts +8 -0
- package/dist/infra/warning-filter.d.ts.map +1 -0
- package/dist/infra/warning-filter.js +66 -0
- package/dist/infra/warning-filter.js.map +1 -0
- package/dist/logging/subsystem.d.ts +29 -0
- package/dist/logging/subsystem.d.ts.map +1 -0
- package/dist/logging/subsystem.js +322 -0
- package/dist/logging/subsystem.js.map +1 -0
- package/dist/memory/embedding-batch.d.ts +38 -0
- package/dist/memory/embedding-batch.d.ts.map +1 -0
- package/dist/memory/embedding-batch.js +253 -0
- package/dist/memory/embedding-batch.js.map +1 -0
- package/dist/memory/embedding-cache.d.ts +16 -0
- package/dist/memory/embedding-cache.d.ts.map +1 -0
- package/dist/memory/embedding-cache.js +113 -0
- package/dist/memory/embedding-cache.js.map +1 -0
- package/dist/memory/embeddings-debug.d.ts +2 -0
- package/dist/memory/embeddings-debug.d.ts.map +1 -0
- package/dist/memory/embeddings-debug.js +12 -0
- package/dist/memory/embeddings-debug.js.map +1 -0
- package/dist/memory/embeddings.d.ts +17 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +203 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/file-indexer.d.ts +26 -0
- package/dist/memory/file-indexer.d.ts.map +1 -0
- package/dist/memory/file-indexer.js +260 -0
- package/dist/memory/file-indexer.js.map +1 -0
- package/dist/memory/fs-utils.d.ts +12 -0
- package/dist/memory/fs-utils.d.ts.map +1 -0
- package/dist/memory/fs-utils.js +24 -0
- package/dist/memory/fs-utils.js.map +1 -0
- package/dist/memory/hybrid.d.ts +46 -0
- package/dist/memory/hybrid.d.ts.map +1 -0
- package/dist/memory/hybrid.js +85 -0
- package/dist/memory/hybrid.js.map +1 -0
- package/dist/memory/index.d.ts +17 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +15 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/internal.d.ts +39 -0
- package/dist/memory/internal.d.ts.map +1 -0
- package/dist/memory/internal.js +292 -0
- package/dist/memory/internal.js.map +1 -0
- package/dist/memory/manager-search.d.ts +61 -0
- package/dist/memory/manager-search.d.ts.map +1 -0
- package/dist/memory/manager-search.js +102 -0
- package/dist/memory/manager-search.js.map +1 -0
- package/dist/memory/mmr.d.ts +63 -0
- package/dist/memory/mmr.d.ts.map +1 -0
- package/dist/memory/mmr.js +165 -0
- package/dist/memory/mmr.js.map +1 -0
- package/dist/memory/query-expansion.d.ts +42 -0
- package/dist/memory/query-expansion.d.ts.map +1 -0
- package/dist/memory/query-expansion.js +776 -0
- package/dist/memory/query-expansion.js.map +1 -0
- package/dist/memory/session-indexer.d.ts +41 -0
- package/dist/memory/session-indexer.d.ts.map +1 -0
- package/dist/memory/session-indexer.js +367 -0
- package/dist/memory/session-indexer.js.map +1 -0
- package/dist/memory/simple-manager.d.ts +29 -0
- package/dist/memory/simple-manager.d.ts.map +1 -0
- package/dist/memory/simple-manager.js +216 -0
- package/dist/memory/simple-manager.js.map +1 -0
- package/dist/memory/sqlite.d.ts +2 -0
- package/dist/memory/sqlite.d.ts.map +1 -0
- package/dist/memory/sqlite.js +16 -0
- package/dist/memory/sqlite.js.map +1 -0
- package/dist/memory/ssrf.d.ts +18 -0
- package/dist/memory/ssrf.d.ts.map +1 -0
- package/dist/memory/ssrf.js +396 -0
- package/dist/memory/ssrf.js.map +1 -0
- package/dist/memory/temporal-decay.d.ts +26 -0
- package/dist/memory/temporal-decay.d.ts.map +1 -0
- package/dist/memory/temporal-decay.js +120 -0
- package/dist/memory/temporal-decay.js.map +1 -0
- package/dist/memory/types.d.ts +95 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +2 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/package.json +68 -0
- package/dist/platform/index.d.ts +3 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +2 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/platform.d.ts +3 -0
- package/dist/platform/platform.d.ts.map +1 -0
- package/dist/platform/platform.js +91 -0
- package/dist/platform/platform.js.map +1 -0
- package/dist/platform/types.d.ts +18 -0
- package/dist/platform/types.d.ts.map +1 -0
- package/dist/platform/types.js +2 -0
- package/dist/platform/types.js.map +1 -0
- package/dist/runtime/agent.d.ts +36 -0
- package/dist/runtime/agent.d.ts.map +1 -0
- package/dist/runtime/agent.js +250 -0
- package/dist/runtime/agent.js.map +1 -0
- package/dist/runtime/api-key-rotation.d.ts +26 -0
- package/dist/runtime/api-key-rotation.d.ts.map +1 -0
- package/dist/runtime/api-key-rotation.js +174 -0
- package/dist/runtime/api-key-rotation.js.map +1 -0
- package/dist/runtime/context-guard.d.ts +32 -0
- package/dist/runtime/context-guard.d.ts.map +1 -0
- package/dist/runtime/context-guard.js +61 -0
- package/dist/runtime/context-guard.js.map +1 -0
- package/dist/runtime/failover-error.d.ts +62 -0
- package/dist/runtime/failover-error.d.ts.map +1 -0
- package/dist/runtime/failover-error.js +733 -0
- package/dist/runtime/failover-error.js.map +1 -0
- package/dist/runtime/failover-policy.d.ts +5 -0
- package/dist/runtime/failover-policy.d.ts.map +1 -0
- package/dist/runtime/failover-policy.js +18 -0
- package/dist/runtime/failover-policy.js.map +1 -0
- package/dist/runtime/index.d.ts +13 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +13 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/memory-flush.d.ts +24 -0
- package/dist/runtime/memory-flush.d.ts.map +1 -0
- package/dist/runtime/memory-flush.js +64 -0
- package/dist/runtime/memory-flush.js.map +1 -0
- package/dist/runtime/memory-tools.d.ts +14 -0
- package/dist/runtime/memory-tools.d.ts.map +1 -0
- package/dist/runtime/memory-tools.js +58 -0
- package/dist/runtime/memory-tools.js.map +1 -0
- package/dist/runtime/model-fallback.d.ts +56 -0
- package/dist/runtime/model-fallback.d.ts.map +1 -0
- package/dist/runtime/model-fallback.js +301 -0
- package/dist/runtime/model-fallback.js.map +1 -0
- package/dist/runtime/model-fallback.types.d.ts +14 -0
- package/dist/runtime/model-fallback.types.d.ts.map +1 -0
- package/dist/runtime/model-fallback.types.js +3 -0
- package/dist/runtime/model-fallback.types.js.map +1 -0
- package/dist/runtime/retry.d.ts +24 -0
- package/dist/runtime/retry.d.ts.map +1 -0
- package/dist/runtime/retry.js +100 -0
- package/dist/runtime/retry.js.map +1 -0
- package/dist/runtime/session-pruning.d.ts +22 -0
- package/dist/runtime/session-pruning.d.ts.map +1 -0
- package/dist/runtime/session-pruning.js +118 -0
- package/dist/runtime/session-pruning.js.map +1 -0
- package/dist/runtime/stream-adapters.d.ts +11 -0
- package/dist/runtime/stream-adapters.d.ts.map +1 -0
- package/dist/runtime/stream-adapters.js +46 -0
- package/dist/runtime/stream-adapters.js.map +1 -0
- package/dist/runtime/subagent.d.ts +83 -0
- package/dist/runtime/subagent.d.ts.map +1 -0
- package/dist/runtime/subagent.js +190 -0
- package/dist/runtime/subagent.js.map +1 -0
- package/dist/runtime/tool-result-truncation.d.ts +25 -0
- package/dist/runtime/tool-result-truncation.d.ts.map +1 -0
- package/dist/runtime/tool-result-truncation.js +115 -0
- package/dist/runtime/tool-result-truncation.js.map +1 -0
- package/dist/sandbox/cgroup.d.ts +20 -0
- package/dist/sandbox/cgroup.d.ts.map +1 -0
- package/dist/sandbox/cgroup.js +82 -0
- package/dist/sandbox/cgroup.js.map +1 -0
- package/dist/sandbox/index.d.ts +12 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +10 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/ipc.d.ts +26 -0
- package/dist/sandbox/ipc.d.ts.map +1 -0
- package/dist/sandbox/ipc.js +154 -0
- package/dist/sandbox/ipc.js.map +1 -0
- package/dist/sandbox/manager.d.ts +4 -0
- package/dist/sandbox/manager.d.ts.map +1 -0
- package/dist/sandbox/manager.js +251 -0
- package/dist/sandbox/manager.js.map +1 -0
- package/dist/sandbox/namespace.d.ts +12 -0
- package/dist/sandbox/namespace.d.ts.map +1 -0
- package/dist/sandbox/namespace.js +119 -0
- package/dist/sandbox/namespace.js.map +1 -0
- package/dist/sandbox/proxy-tools.d.ts +14 -0
- package/dist/sandbox/proxy-tools.d.ts.map +1 -0
- package/dist/sandbox/proxy-tools.js +63 -0
- package/dist/sandbox/proxy-tools.js.map +1 -0
- package/dist/sandbox/rootfs.d.ts +20 -0
- package/dist/sandbox/rootfs.d.ts.map +1 -0
- package/dist/sandbox/rootfs.js +247 -0
- package/dist/sandbox/rootfs.js.map +1 -0
- package/dist/sandbox/seccomp-apply.d.ts +9 -0
- package/dist/sandbox/seccomp-apply.d.ts.map +1 -0
- package/dist/sandbox/seccomp-apply.js +227 -0
- package/dist/sandbox/seccomp-apply.js.map +1 -0
- package/dist/sandbox/seccomp.d.ts +13 -0
- package/dist/sandbox/seccomp.d.ts.map +1 -0
- package/dist/sandbox/seccomp.js +120 -0
- package/dist/sandbox/seccomp.js.map +1 -0
- package/dist/sandbox/types.d.ts +66 -0
- package/dist/sandbox/types.d.ts.map +1 -0
- package/dist/sandbox/types.js +8 -0
- package/dist/sandbox/types.js.map +1 -0
- package/dist/sandbox/worker.d.ts +15 -0
- package/dist/sandbox/worker.d.ts.map +1 -0
- package/dist/sandbox/worker.js +151 -0
- package/dist/sandbox/worker.js.map +1 -0
- package/dist/sessions/index.d.ts +3 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +3 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/store.d.ts +17 -0
- package/dist/sessions/store.d.ts.map +1 -0
- package/dist/sessions/store.js +70 -0
- package/dist/sessions/store.js.map +1 -0
- package/dist/sessions/transcript-events.d.ts +11 -0
- package/dist/sessions/transcript-events.d.ts.map +1 -0
- package/dist/sessions/transcript-events.js +40 -0
- package/dist/sessions/transcript-events.js.map +1 -0
- package/dist/shared/agent-session.d.ts +10 -0
- package/dist/shared/agent-session.d.ts.map +1 -0
- package/dist/shared/agent-session.js +33 -0
- package/dist/shared/agent-session.js.map +1 -0
- package/dist/shared/constants.d.ts +6 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +17 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/fs.d.ts +7 -0
- package/dist/shared/fs.d.ts.map +1 -0
- package/dist/shared/fs.js +14 -0
- package/dist/shared/fs.js.map +1 -0
- package/dist/shared/index.d.ts +4 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +4 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/skills/enablement.d.ts +10 -0
- package/dist/skills/enablement.d.ts.map +1 -0
- package/dist/skills/enablement.js +52 -0
- package/dist/skills/enablement.js.map +1 -0
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +4 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/loader.d.ts +8 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +8 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/registry.d.ts +19 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +106 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/utils/boolean.d.ts +6 -0
- package/dist/utils/boolean.d.ts.map +1 -0
- package/dist/utils/boolean.js +28 -0
- package/dist/utils/boolean.js.map +1 -0
- package/dist/utils/run-with-concurrency.d.ts +12 -0
- package/dist/utils/run-with-concurrency.d.ts.map +1 -0
- package/dist/utils/run-with-concurrency.js +40 -0
- package/dist/utils/run-with-concurrency.js.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +38 -0
- package/dist/utils.js.map +1 -0
- package/dist/workspace/index.d.ts +3 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +2 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/runner.d.ts +19 -0
- package/dist/workspace/runner.d.ts.map +1 -0
- package/dist/workspace/runner.js +491 -0
- package/dist/workspace/runner.js.map +1 -0
- package/dist/workspace/types.d.ts +37 -0
- package/dist/workspace/types.d.ts.map +1 -0
- package/dist/workspace/types.js +2 -0
- package/dist/workspace/types.js.map +1 -0
- package/dist/workspace/workspace.d.ts +12 -0
- package/dist/workspace/workspace.d.ts.map +1 -0
- package/dist/workspace/workspace.js +85 -0
- package/dist/workspace/workspace.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface StreamAdapterConfig {
|
|
2
|
+
headers?: Record<string, string>;
|
|
3
|
+
baseUrl?: string;
|
|
4
|
+
transformPayload?: (payload: Record<string, unknown>) => Record<string, unknown>;
|
|
5
|
+
}
|
|
6
|
+
export type ProviderStreamConfig = Record<string, StreamAdapterConfig>;
|
|
7
|
+
export declare function resolveStreamAdapter(provider: string, config?: ProviderStreamConfig): StreamAdapterConfig | undefined;
|
|
8
|
+
export declare function applyStreamHeaders(provider: string, headers: Record<string, string>, config?: ProviderStreamConfig): Record<string, string>;
|
|
9
|
+
export declare function applyStreamPayloadTransform(provider: string, payload: Record<string, unknown>, config?: ProviderStreamConfig): Record<string, unknown>;
|
|
10
|
+
export declare function resolveStreamBaseUrl(provider: string, defaultBaseUrl: string, config?: ProviderStreamConfig): string;
|
|
11
|
+
//# sourceMappingURL=stream-adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-adapters.d.ts","sourceRoot":"","sources":["../../src/runtime/stream-adapters.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClF;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAYvE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,oBAAoB,GAC5B,mBAAmB,GAAG,SAAS,CAUjC;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,MAAM,CAAC,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKxB;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,CAAC,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,oBAAoB,GAC5B,MAAM,CAGR"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { createSubsystemLogger } from "../logging/subsystem.js";
|
|
2
|
+
const log = createSubsystemLogger("stream-adapters");
|
|
3
|
+
const KNOWN_PROVIDER_DEFAULTS = {
|
|
4
|
+
anthropic: {},
|
|
5
|
+
openai: {},
|
|
6
|
+
google: {},
|
|
7
|
+
groq: {},
|
|
8
|
+
cerebras: {},
|
|
9
|
+
mistral: {},
|
|
10
|
+
xai: {},
|
|
11
|
+
};
|
|
12
|
+
export function resolveStreamAdapter(provider, config) {
|
|
13
|
+
const providerConfig = config?.[provider];
|
|
14
|
+
const defaults = KNOWN_PROVIDER_DEFAULTS[provider];
|
|
15
|
+
if (!providerConfig && !defaults)
|
|
16
|
+
return undefined;
|
|
17
|
+
return {
|
|
18
|
+
...defaults,
|
|
19
|
+
...providerConfig,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function applyStreamHeaders(provider, headers, config) {
|
|
23
|
+
const adapter = resolveStreamAdapter(provider, config);
|
|
24
|
+
if (!adapter?.headers)
|
|
25
|
+
return headers;
|
|
26
|
+
return { ...headers, ...adapter.headers };
|
|
27
|
+
}
|
|
28
|
+
export function applyStreamPayloadTransform(provider, payload, config) {
|
|
29
|
+
const adapter = resolveStreamAdapter(provider, config);
|
|
30
|
+
if (!adapter?.transformPayload)
|
|
31
|
+
return payload;
|
|
32
|
+
try {
|
|
33
|
+
return adapter.transformPayload(payload);
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
log.warn(`stream payload transform failed for ${provider}`, {
|
|
37
|
+
error: String(err),
|
|
38
|
+
});
|
|
39
|
+
return payload;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function resolveStreamBaseUrl(provider, defaultBaseUrl, config) {
|
|
43
|
+
const adapter = resolveStreamAdapter(provider, config);
|
|
44
|
+
return adapter?.baseUrl ?? defaultBaseUrl;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=stream-adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-adapters.js","sourceRoot":"","sources":["../../src/runtime/stream-adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,GAAG,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;AAUrD,MAAM,uBAAuB,GAAiD;IAC5E,SAAS,EAAE,EAAE;IACb,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,EAAE;IACR,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;IACX,GAAG,EAAE,EAAE;CACR,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,MAA6B;IAE7B,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAEnD,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEnD,OAAO;QACL,GAAG,QAAQ;QACX,GAAG,cAAc;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,OAA+B,EAC/B,MAA6B;IAE7B,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE,OAAO;QAAE,OAAO,OAAO,CAAC;IAEtC,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,QAAgB,EAChB,OAAgC,EAChC,MAA6B;IAE7B,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE,gBAAgB;QAAE,OAAO,OAAO,CAAC;IAE/C,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,uCAAuC,QAAQ,EAAE,EAAE;YAC1D,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;SACnB,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,cAAsB,EACtB,MAA6B;IAE7B,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvD,OAAO,OAAO,EAAE,OAAO,IAAI,cAAc,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export declare const SUBAGENT_ENDED_REASON_COMPLETE: "subagent-complete";
|
|
2
|
+
export declare const SUBAGENT_ENDED_REASON_ERROR: "subagent-error";
|
|
3
|
+
export declare const SUBAGENT_ENDED_REASON_KILLED: "subagent-killed";
|
|
4
|
+
export type SubagentLifecycleEndedReason = typeof SUBAGENT_ENDED_REASON_COMPLETE | typeof SUBAGENT_ENDED_REASON_ERROR | typeof SUBAGENT_ENDED_REASON_KILLED;
|
|
5
|
+
export declare const SUBAGENT_ENDED_OUTCOME_OK: "ok";
|
|
6
|
+
export declare const SUBAGENT_ENDED_OUTCOME_ERROR: "error";
|
|
7
|
+
export declare const SUBAGENT_ENDED_OUTCOME_TIMEOUT: "timeout";
|
|
8
|
+
export declare const SUBAGENT_ENDED_OUTCOME_KILLED: "killed";
|
|
9
|
+
export type SubagentLifecycleEndedOutcome = typeof SUBAGENT_ENDED_OUTCOME_OK | typeof SUBAGENT_ENDED_OUTCOME_ERROR | typeof SUBAGENT_ENDED_OUTCOME_TIMEOUT | typeof SUBAGENT_ENDED_OUTCOME_KILLED;
|
|
10
|
+
export interface SubagentTask {
|
|
11
|
+
id: string;
|
|
12
|
+
task: string;
|
|
13
|
+
label?: string;
|
|
14
|
+
systemPrompt?: string;
|
|
15
|
+
model?: string;
|
|
16
|
+
provider?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SubagentResult {
|
|
19
|
+
id: string;
|
|
20
|
+
status: "completed" | "error" | "timeout";
|
|
21
|
+
response?: string;
|
|
22
|
+
error?: string;
|
|
23
|
+
durationMs: number;
|
|
24
|
+
}
|
|
25
|
+
export type SubagentRunOutcome = {
|
|
26
|
+
status: "ok";
|
|
27
|
+
} | {
|
|
28
|
+
status: "error";
|
|
29
|
+
error?: string;
|
|
30
|
+
} | {
|
|
31
|
+
status: "timeout";
|
|
32
|
+
};
|
|
33
|
+
export interface SubagentRunRecord {
|
|
34
|
+
id: string;
|
|
35
|
+
task: string;
|
|
36
|
+
label?: string;
|
|
37
|
+
model?: string;
|
|
38
|
+
status: "pending" | "running" | "completed" | "error";
|
|
39
|
+
startedAt: number;
|
|
40
|
+
endedAt?: number;
|
|
41
|
+
sessionStartedAt?: number;
|
|
42
|
+
response?: string;
|
|
43
|
+
error?: string;
|
|
44
|
+
endedReason?: SubagentLifecycleEndedReason;
|
|
45
|
+
outcome?: SubagentRunOutcome;
|
|
46
|
+
cleanup?: "delete" | "keep";
|
|
47
|
+
runTimeoutMs?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface SubagentRegistry {
|
|
50
|
+
register(record: SubagentRunRecord): void;
|
|
51
|
+
update(id: string, updates: Partial<SubagentRunRecord>): void;
|
|
52
|
+
get(id: string): SubagentRunRecord | undefined;
|
|
53
|
+
listActive(): SubagentRunRecord[];
|
|
54
|
+
listAll(): SubagentRunRecord[];
|
|
55
|
+
countActive(): number;
|
|
56
|
+
clear(): void;
|
|
57
|
+
}
|
|
58
|
+
export declare function createSubagentRegistry(): SubagentRegistry;
|
|
59
|
+
export interface SubagentSpawnOptions {
|
|
60
|
+
tasks: SubagentTask[];
|
|
61
|
+
run: (task: SubagentTask) => Promise<string>;
|
|
62
|
+
maxConcurrent?: number;
|
|
63
|
+
currentDepth?: number;
|
|
64
|
+
onResult?: (result: SubagentResult) => void;
|
|
65
|
+
runTimeoutMs?: number;
|
|
66
|
+
}
|
|
67
|
+
export declare function spawnSubagentsParallel(options: SubagentSpawnOptions): Promise<SubagentResult[]>;
|
|
68
|
+
export declare function createSubagentTool(params: {
|
|
69
|
+
runtime: {
|
|
70
|
+
run: (opts: Record<string, unknown>) => Promise<{
|
|
71
|
+
response: string;
|
|
72
|
+
}>;
|
|
73
|
+
};
|
|
74
|
+
currentDepth?: number;
|
|
75
|
+
}): {
|
|
76
|
+
name: string;
|
|
77
|
+
description: string;
|
|
78
|
+
parameters: Record<string, unknown>;
|
|
79
|
+
execute: (toolCallId: string, toolParams: Record<string, unknown>) => Promise<{
|
|
80
|
+
resultForAssistant: string;
|
|
81
|
+
}>;
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=subagent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/runtime/subagent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
// Ported from OpenClaw src/agents/subagent-*.ts
|
|
2
|
+
// Kept: registry, parallel execution, lifecycle events, depth limiting
|
|
3
|
+
// Removed: gateway RPC, announce flow, thread binding, orphan recovery
|
|
4
|
+
import { createSubsystemLogger } from "../logging/subsystem.js";
|
|
5
|
+
const log = createSubsystemLogger("subagent");
|
|
6
|
+
// --- Lifecycle events (from subagent-lifecycle-events.ts) ---
|
|
7
|
+
export const SUBAGENT_ENDED_REASON_COMPLETE = "subagent-complete";
|
|
8
|
+
export const SUBAGENT_ENDED_REASON_ERROR = "subagent-error";
|
|
9
|
+
export const SUBAGENT_ENDED_REASON_KILLED = "subagent-killed";
|
|
10
|
+
export const SUBAGENT_ENDED_OUTCOME_OK = "ok";
|
|
11
|
+
export const SUBAGENT_ENDED_OUTCOME_ERROR = "error";
|
|
12
|
+
export const SUBAGENT_ENDED_OUTCOME_TIMEOUT = "timeout";
|
|
13
|
+
export const SUBAGENT_ENDED_OUTCOME_KILLED = "killed";
|
|
14
|
+
// --- Constants ---
|
|
15
|
+
const MAX_SUBAGENT_DEPTH = 5;
|
|
16
|
+
const DEFAULT_MAX_CONCURRENT = 10;
|
|
17
|
+
export function createSubagentRegistry() {
|
|
18
|
+
const runs = new Map();
|
|
19
|
+
return {
|
|
20
|
+
register(record) {
|
|
21
|
+
runs.set(record.id, { ...record });
|
|
22
|
+
log.debug(`registered subagent ${record.id}`, { task: record.task.slice(0, 100) });
|
|
23
|
+
},
|
|
24
|
+
update(id, updates) {
|
|
25
|
+
const existing = runs.get(id);
|
|
26
|
+
if (existing)
|
|
27
|
+
Object.assign(existing, updates);
|
|
28
|
+
},
|
|
29
|
+
get(id) { return runs.get(id); },
|
|
30
|
+
listActive() {
|
|
31
|
+
return Array.from(runs.values()).filter((r) => r.status === "pending" || r.status === "running");
|
|
32
|
+
},
|
|
33
|
+
listAll() { return Array.from(runs.values()); },
|
|
34
|
+
countActive() {
|
|
35
|
+
let count = 0;
|
|
36
|
+
for (const r of runs.values()) {
|
|
37
|
+
if (r.status === "pending" || r.status === "running")
|
|
38
|
+
count++;
|
|
39
|
+
}
|
|
40
|
+
return count;
|
|
41
|
+
},
|
|
42
|
+
clear() { runs.clear(); },
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export async function spawnSubagentsParallel(options) {
|
|
46
|
+
const { tasks, run, maxConcurrent = DEFAULT_MAX_CONCURRENT, currentDepth = 0, onResult, runTimeoutMs, } = options;
|
|
47
|
+
if (currentDepth >= MAX_SUBAGENT_DEPTH) {
|
|
48
|
+
throw new Error(`Subagent depth limit exceeded (max: ${MAX_SUBAGENT_DEPTH}). Prevent infinite recursion by reducing nesting.`);
|
|
49
|
+
}
|
|
50
|
+
if (tasks.length === 0)
|
|
51
|
+
return [];
|
|
52
|
+
log.info(`spawning ${tasks.length} subagents (depth: ${currentDepth})`, {
|
|
53
|
+
labels: tasks.map((t) => t.label ?? t.id),
|
|
54
|
+
});
|
|
55
|
+
const registry = createSubagentRegistry();
|
|
56
|
+
for (const task of tasks) {
|
|
57
|
+
registry.register({
|
|
58
|
+
id: task.id,
|
|
59
|
+
task: task.task,
|
|
60
|
+
label: task.label,
|
|
61
|
+
model: task.model,
|
|
62
|
+
status: "pending",
|
|
63
|
+
startedAt: Date.now(),
|
|
64
|
+
cleanup: "delete",
|
|
65
|
+
runTimeoutMs,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
async function runTask(task) {
|
|
69
|
+
registry.update(task.id, { status: "running", sessionStartedAt: Date.now() });
|
|
70
|
+
const startMs = Date.now();
|
|
71
|
+
try {
|
|
72
|
+
let resultPromise = run(task);
|
|
73
|
+
if (runTimeoutMs && runTimeoutMs > 0) {
|
|
74
|
+
const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Subagent ${task.id} timed out after ${runTimeoutMs}ms`)), runTimeoutMs));
|
|
75
|
+
resultPromise = Promise.race([resultPromise, timeoutPromise]);
|
|
76
|
+
}
|
|
77
|
+
const response = await resultPromise;
|
|
78
|
+
const result = {
|
|
79
|
+
id: task.id, status: "completed", response, durationMs: Date.now() - startMs,
|
|
80
|
+
};
|
|
81
|
+
registry.update(task.id, {
|
|
82
|
+
status: "completed", endedAt: Date.now(), response,
|
|
83
|
+
endedReason: SUBAGENT_ENDED_REASON_COMPLETE,
|
|
84
|
+
outcome: { status: "ok" },
|
|
85
|
+
});
|
|
86
|
+
log.info(`subagent ${task.id} completed in ${result.durationMs}ms`);
|
|
87
|
+
onResult?.(result);
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
const isTimeout = err instanceof Error && err.message.includes("timed out");
|
|
92
|
+
const result = {
|
|
93
|
+
id: task.id,
|
|
94
|
+
status: isTimeout ? "timeout" : "error",
|
|
95
|
+
error: err instanceof Error ? err.message : String(err),
|
|
96
|
+
durationMs: Date.now() - startMs,
|
|
97
|
+
};
|
|
98
|
+
registry.update(task.id, {
|
|
99
|
+
status: "error", endedAt: Date.now(), error: result.error,
|
|
100
|
+
endedReason: isTimeout ? SUBAGENT_ENDED_REASON_KILLED : SUBAGENT_ENDED_REASON_ERROR,
|
|
101
|
+
outcome: isTimeout ? { status: "timeout" } : { status: "error", error: result.error },
|
|
102
|
+
});
|
|
103
|
+
log.error(`subagent ${task.id} failed: ${result.error}`);
|
|
104
|
+
onResult?.(result);
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const concurrency = Math.min(maxConcurrent, tasks.length);
|
|
109
|
+
if (concurrency >= tasks.length) {
|
|
110
|
+
return await Promise.all(tasks.map(runTask));
|
|
111
|
+
}
|
|
112
|
+
let taskIndex = 0;
|
|
113
|
+
const allResults = [];
|
|
114
|
+
async function worker() {
|
|
115
|
+
while (taskIndex < tasks.length) {
|
|
116
|
+
const idx = taskIndex++;
|
|
117
|
+
const result = await runTask(tasks[idx]);
|
|
118
|
+
allResults.push(result);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const workers = [];
|
|
122
|
+
for (let i = 0; i < concurrency; i++)
|
|
123
|
+
workers.push(worker());
|
|
124
|
+
await Promise.all(workers);
|
|
125
|
+
return allResults;
|
|
126
|
+
}
|
|
127
|
+
// --- Agent-facing tool ---
|
|
128
|
+
export function createSubagentTool(params) {
|
|
129
|
+
const depth = params.currentDepth ?? 0;
|
|
130
|
+
return {
|
|
131
|
+
name: "subagent_spawn",
|
|
132
|
+
description: "Spawn one or more sub-agents to handle tasks in parallel. " +
|
|
133
|
+
"Each sub-agent runs independently and returns its result. " +
|
|
134
|
+
"Use for parallel or complex work that can be decomposed into subtasks.",
|
|
135
|
+
parameters: {
|
|
136
|
+
type: "object",
|
|
137
|
+
properties: {
|
|
138
|
+
tasks: {
|
|
139
|
+
type: "array",
|
|
140
|
+
description: "Array of tasks to execute in parallel",
|
|
141
|
+
items: {
|
|
142
|
+
type: "object",
|
|
143
|
+
properties: {
|
|
144
|
+
task: { type: "string", description: "The task message for the sub-agent" },
|
|
145
|
+
label: { type: "string", description: "Optional label for tracking" },
|
|
146
|
+
role: { type: "string", description: "Optional role/expertise for the sub-agent system prompt" },
|
|
147
|
+
},
|
|
148
|
+
required: ["task"],
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
required: ["tasks"],
|
|
153
|
+
},
|
|
154
|
+
async execute(_toolCallId, toolParams) {
|
|
155
|
+
const rawTasks = toolParams.tasks;
|
|
156
|
+
if (!rawTasks || !Array.isArray(rawTasks) || rawTasks.length === 0) {
|
|
157
|
+
return { resultForAssistant: "Error: 'tasks' must be a non-empty array" };
|
|
158
|
+
}
|
|
159
|
+
const subTasks = rawTasks.map((t, i) => ({
|
|
160
|
+
id: `sub_${Date.now()}_${i}`,
|
|
161
|
+
task: t.task,
|
|
162
|
+
label: t.label,
|
|
163
|
+
systemPrompt: t.role ? `You are a ${t.role} expert.` : undefined,
|
|
164
|
+
}));
|
|
165
|
+
try {
|
|
166
|
+
const results = await spawnSubagentsParallel({
|
|
167
|
+
tasks: subTasks,
|
|
168
|
+
currentDepth: depth + 1,
|
|
169
|
+
run: async (task) => {
|
|
170
|
+
const r = await params.runtime.run({ message: task.task, systemPrompt: task.systemPrompt });
|
|
171
|
+
return r.response;
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
const summary = results.map((r) => ({
|
|
175
|
+
id: r.id,
|
|
176
|
+
label: subTasks.find((t) => t.id === r.id)?.label,
|
|
177
|
+
status: r.status,
|
|
178
|
+
response: r.response?.slice(0, 2000),
|
|
179
|
+
error: r.error,
|
|
180
|
+
durationMs: r.durationMs,
|
|
181
|
+
}));
|
|
182
|
+
return { resultForAssistant: JSON.stringify(summary, null, 2) };
|
|
183
|
+
}
|
|
184
|
+
catch (err) {
|
|
185
|
+
return { resultForAssistant: `Error spawning subagents: ${err instanceof Error ? err.message : String(err)}` };
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=subagent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/runtime/subagent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare function calculateMaxToolResultChars(contextWindowTokens: number): number;
|
|
2
|
+
export declare function truncateToolResultText(text: string, maxChars: number): string;
|
|
3
|
+
interface AgentMessage {
|
|
4
|
+
role: string;
|
|
5
|
+
content?: unknown;
|
|
6
|
+
}
|
|
7
|
+
export declare function sessionLikelyHasOversizedToolResults(params: {
|
|
8
|
+
messages: AgentMessage[];
|
|
9
|
+
contextWindowTokens: number;
|
|
10
|
+
}): boolean;
|
|
11
|
+
export declare function truncateOversizedToolResultsInMessages(messages: AgentMessage[], contextWindowTokens: number): {
|
|
12
|
+
messages: AgentMessage[];
|
|
13
|
+
truncatedCount: number;
|
|
14
|
+
};
|
|
15
|
+
export declare function truncateOversizedToolResultsInSession(params: {
|
|
16
|
+
sessionFile: string;
|
|
17
|
+
contextWindowTokens: number;
|
|
18
|
+
sessionId?: string;
|
|
19
|
+
sessionKey?: string;
|
|
20
|
+
}): Promise<{
|
|
21
|
+
truncated: boolean;
|
|
22
|
+
truncatedCount: number;
|
|
23
|
+
}>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=tool-result-truncation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-result-truncation.d.ts","sourceRoot":"","sources":["../../src/runtime/tool-result-truncation.ts"],"names":[],"mappings":"AAgBA,wBAAgB,2BAA2B,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAG/E;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS7E;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,oCAAoC,CAAC,MAAM,EAAE;IAC3D,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAWV;AAED,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,YAAY,EAAE,EACxB,mBAAmB,EAAE,MAAM,GAC1B;IAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAmBtD;AAED,wBAAsB,qCAAqC,CAAC,MAAM,EAAE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CAiD1D"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// Ported from OpenClaw src/agents/pi-embedded-runner/tool-result-truncation.ts
|
|
2
|
+
// Truncates oversized tool results in session files and in-memory messages
|
|
3
|
+
// as a fallback when compaction cannot reduce context enough.
|
|
4
|
+
import * as fs from "node:fs";
|
|
5
|
+
import { createSubsystemLogger } from "../logging/subsystem.js";
|
|
6
|
+
const log = createSubsystemLogger("tool-result-truncation");
|
|
7
|
+
const CHARS_PER_TOKEN = 4;
|
|
8
|
+
const MAX_TOOL_RESULT_CHARS_CAP = 400_000;
|
|
9
|
+
const CONTEXT_WINDOW_TOOL_RESULT_RATIO = 0.3;
|
|
10
|
+
const HEAD_RATIO = 0.15;
|
|
11
|
+
const TAIL_RATIO = 0.05;
|
|
12
|
+
const TRUNCATION_MARKER = "\n\n[… tool output truncated to fit context window …]\n\n";
|
|
13
|
+
export function calculateMaxToolResultChars(contextWindowTokens) {
|
|
14
|
+
const maxChars = Math.floor(contextWindowTokens * CHARS_PER_TOKEN * CONTEXT_WINDOW_TOOL_RESULT_RATIO);
|
|
15
|
+
return Math.min(maxChars, MAX_TOOL_RESULT_CHARS_CAP);
|
|
16
|
+
}
|
|
17
|
+
export function truncateToolResultText(text, maxChars) {
|
|
18
|
+
if (text.length <= maxChars)
|
|
19
|
+
return text;
|
|
20
|
+
const headChars = Math.max(200, Math.floor(maxChars * HEAD_RATIO));
|
|
21
|
+
const tailChars = Math.max(100, Math.floor(maxChars * TAIL_RATIO));
|
|
22
|
+
const available = maxChars - TRUNCATION_MARKER.length;
|
|
23
|
+
if (available <= 0)
|
|
24
|
+
return text.slice(0, maxChars);
|
|
25
|
+
const head = Math.min(headChars, Math.floor(available * 0.75));
|
|
26
|
+
const tail = Math.min(tailChars, available - head);
|
|
27
|
+
return text.slice(0, head) + TRUNCATION_MARKER + text.slice(-tail);
|
|
28
|
+
}
|
|
29
|
+
export function sessionLikelyHasOversizedToolResults(params) {
|
|
30
|
+
const maxChars = calculateMaxToolResultChars(params.contextWindowTokens);
|
|
31
|
+
for (const msg of params.messages) {
|
|
32
|
+
if (!Array.isArray(msg.content))
|
|
33
|
+
continue;
|
|
34
|
+
for (const block of msg.content) {
|
|
35
|
+
if (block.type !== "tool_result" && block.type !== "tool_use_result")
|
|
36
|
+
continue;
|
|
37
|
+
const text = typeof block.content === "string" ? block.content : null;
|
|
38
|
+
if (text && text.length > maxChars)
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
export function truncateOversizedToolResultsInMessages(messages, contextWindowTokens) {
|
|
45
|
+
const maxChars = calculateMaxToolResultChars(contextWindowTokens);
|
|
46
|
+
let truncatedCount = 0;
|
|
47
|
+
const result = messages.map((msg) => {
|
|
48
|
+
if (!Array.isArray(msg.content))
|
|
49
|
+
return msg;
|
|
50
|
+
let modified = false;
|
|
51
|
+
const newContent = msg.content.map((block) => {
|
|
52
|
+
if (block.type !== "tool_result" && block.type !== "tool_use_result")
|
|
53
|
+
return block;
|
|
54
|
+
const text = typeof block.content === "string" ? block.content : null;
|
|
55
|
+
if (!text || text.length <= maxChars)
|
|
56
|
+
return block;
|
|
57
|
+
modified = true;
|
|
58
|
+
truncatedCount++;
|
|
59
|
+
return { ...block, content: truncateToolResultText(text, maxChars) };
|
|
60
|
+
});
|
|
61
|
+
return modified ? { ...msg, content: newContent } : msg;
|
|
62
|
+
});
|
|
63
|
+
return { messages: result, truncatedCount };
|
|
64
|
+
}
|
|
65
|
+
export async function truncateOversizedToolResultsInSession(params) {
|
|
66
|
+
const maxChars = calculateMaxToolResultChars(params.contextWindowTokens);
|
|
67
|
+
try {
|
|
68
|
+
const raw = fs.readFileSync(params.sessionFile, "utf-8");
|
|
69
|
+
const lines = raw.split("\n");
|
|
70
|
+
let totalTruncated = 0;
|
|
71
|
+
let modified = false;
|
|
72
|
+
const newLines = lines.map((line) => {
|
|
73
|
+
if (!line.trim())
|
|
74
|
+
return line;
|
|
75
|
+
try {
|
|
76
|
+
const msg = JSON.parse(line);
|
|
77
|
+
if (!Array.isArray(msg.content))
|
|
78
|
+
return line;
|
|
79
|
+
let lineModified = false;
|
|
80
|
+
const newContent = msg.content.map((block) => {
|
|
81
|
+
if (block.type !== "tool_result" && block.type !== "tool_use_result")
|
|
82
|
+
return block;
|
|
83
|
+
const text = typeof block.content === "string" ? block.content : null;
|
|
84
|
+
if (!text || text.length <= maxChars)
|
|
85
|
+
return block;
|
|
86
|
+
lineModified = true;
|
|
87
|
+
totalTruncated++;
|
|
88
|
+
return { ...block, content: truncateToolResultText(text, maxChars) };
|
|
89
|
+
});
|
|
90
|
+
if (lineModified) {
|
|
91
|
+
modified = true;
|
|
92
|
+
return JSON.stringify({ ...msg, content: newContent });
|
|
93
|
+
}
|
|
94
|
+
return line;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return line;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
if (modified) {
|
|
101
|
+
fs.writeFileSync(params.sessionFile, newLines.join("\n"));
|
|
102
|
+
log.info("truncated oversized tool results in session", {
|
|
103
|
+
sessionFile: params.sessionFile,
|
|
104
|
+
truncatedCount: totalTruncated,
|
|
105
|
+
maxChars,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return { truncated: modified, truncatedCount: totalTruncated };
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
log.warn("failed to truncate tool results in session", { error: String(err) });
|
|
112
|
+
return { truncated: false, truncatedCount: 0 };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=tool-result-truncation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-result-truncation.js","sourceRoot":"","sources":["../../src/runtime/tool-result-truncation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface CgroupLimits {
|
|
2
|
+
memoryLimitBytes?: number;
|
|
3
|
+
cpuWeight?: number;
|
|
4
|
+
pidsMax?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface CgroupController {
|
|
7
|
+
cgroupPath: string;
|
|
8
|
+
/** Create cgroup dir and write resource limits. Call before spawning the process. */
|
|
9
|
+
setup(): boolean;
|
|
10
|
+
/** Write PID to cgroup.procs. Only needed when there's no wrapper script to do it. */
|
|
11
|
+
assignPid(pid: number): void;
|
|
12
|
+
cleanup(): void;
|
|
13
|
+
}
|
|
14
|
+
export declare function createCgroupController(sandboxId: string, limits: CgroupLimits): CgroupController;
|
|
15
|
+
export declare function cgroupLimitsFromConfig(config: {
|
|
16
|
+
memoryLimitMb?: number;
|
|
17
|
+
cpuWeight?: number;
|
|
18
|
+
pidsLimit?: number;
|
|
19
|
+
}): CgroupLimits;
|
|
20
|
+
//# sourceMappingURL=cgroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cgroup.d.ts","sourceRoot":"","sources":["../../src/sandbox/cgroup.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,KAAK,IAAI,OAAO,CAAC;IACjB,sFAAsF;IACtF,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,IAAI,IAAI,CAAC;CACjB;AASD,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,GACnB,gBAAgB,CAkElB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,YAAY,CAQf"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
const CGROUP_BASE = "/sys/fs/cgroup";
|
|
4
|
+
function findAvailableCgroupPath(name) {
|
|
5
|
+
const base = path.join(CGROUP_BASE, "cloison-runtime");
|
|
6
|
+
return path.join(base, name);
|
|
7
|
+
}
|
|
8
|
+
export function createCgroupController(sandboxId, limits) {
|
|
9
|
+
const cgroupPath = findAvailableCgroupPath(sandboxId);
|
|
10
|
+
function ensureCgroupDir() {
|
|
11
|
+
try {
|
|
12
|
+
fs.mkdirSync(cgroupPath, { recursive: true });
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function writeController(filename, value, required = true) {
|
|
20
|
+
try {
|
|
21
|
+
fs.writeFileSync(path.join(cgroupPath, filename), value);
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
if (required) {
|
|
25
|
+
throw new Error(`Failed to write cgroup controller ${filename}: ${err}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
cgroupPath,
|
|
31
|
+
setup() {
|
|
32
|
+
if (!ensureCgroupDir())
|
|
33
|
+
return false;
|
|
34
|
+
if (limits.memoryLimitBytes !== undefined) {
|
|
35
|
+
writeController("memory.max", limits.memoryLimitBytes.toString());
|
|
36
|
+
writeController("memory.swap.max", "0", false);
|
|
37
|
+
}
|
|
38
|
+
if (limits.cpuWeight !== undefined) {
|
|
39
|
+
const weight = Math.max(1, Math.min(10000, limits.cpuWeight));
|
|
40
|
+
writeController("cpu.weight", weight.toString());
|
|
41
|
+
}
|
|
42
|
+
if (limits.pidsMax !== undefined) {
|
|
43
|
+
writeController("pids.max", limits.pidsMax.toString());
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
46
|
+
},
|
|
47
|
+
assignPid(pid) {
|
|
48
|
+
fs.writeFileSync(path.join(cgroupPath, "cgroup.procs"), pid.toString());
|
|
49
|
+
},
|
|
50
|
+
cleanup() {
|
|
51
|
+
try {
|
|
52
|
+
const parentProcs = path.join(path.dirname(cgroupPath), "cgroup.procs");
|
|
53
|
+
const pids = fs.readFileSync(path.join(cgroupPath, "cgroup.procs"), "utf-8").trim();
|
|
54
|
+
if (pids) {
|
|
55
|
+
for (const pid of pids.split("\n")) {
|
|
56
|
+
try {
|
|
57
|
+
fs.writeFileSync(parentProcs, pid.trim());
|
|
58
|
+
}
|
|
59
|
+
catch { /* process may have exited */ }
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch { /* cgroup may not exist or have no procs file */ }
|
|
64
|
+
try {
|
|
65
|
+
fs.rmdirSync(cgroupPath);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// best effort: dir may still have active processes or not exist
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export function cgroupLimitsFromConfig(config) {
|
|
74
|
+
return {
|
|
75
|
+
memoryLimitBytes: config.memoryLimitMb
|
|
76
|
+
? config.memoryLimitMb * 1024 * 1024
|
|
77
|
+
: undefined,
|
|
78
|
+
cpuWeight: config.cpuWeight,
|
|
79
|
+
pidsMax: config.pidsLimit,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=cgroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cgroup.js","sourceRoot":"","sources":["../../src/sandbox/cgroup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { createSandboxManager, sanitizeEnv } from "./manager.js";
|
|
2
|
+
export { createIpcServer, createIpcClient, createIpcPeer, type IpcServer, type IpcClient, type IpcPeer, type IpcHandler } from "./ipc.js";
|
|
3
|
+
export { detectCapabilities, buildUnshareArgs, buildNamespaceFlags } from "./namespace.js";
|
|
4
|
+
export { createCgroupController, cgroupLimitsFromConfig, type CgroupController, type CgroupLimits } from "./cgroup.js";
|
|
5
|
+
export { buildDefaultProfile, buildRestrictedProfile, writeSeccompProfile, cleanupSeccompProfile } from "./seccomp.js";
|
|
6
|
+
export { prepareRootfs, buildMountScript, type PreparedRootfs, type RootfsOptions } from "./rootfs.js";
|
|
7
|
+
export { createProxyTools } from "./proxy-tools.js";
|
|
8
|
+
export { ensureSeccompLoader, buildSeccompWrapperArgs, isSeccompAvailable, } from "./seccomp-apply.js";
|
|
9
|
+
export type { WorkerConfig } from "./worker.js";
|
|
10
|
+
export type { SandboxConfig, SandboxCapabilities, SandboxManager, SandboxProcess, SandboxSpawnOptions, MountBind, IpcMessage, IpcError, } from "./types.js";
|
|
11
|
+
export { IPC_ERROR_CODES } from "./types.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|