@clinebot/core 0.0.35 → 0.0.36
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 +1 -2
- package/dist/ClineCore.d.ts +53 -39
- package/dist/ClineCore.d.ts.map +1 -1
- package/dist/account/index.d.ts +1 -1
- package/dist/account/index.d.ts.map +1 -1
- package/dist/account/rpc.d.ts +6 -6
- package/dist/account/rpc.d.ts.map +1 -1
- package/dist/cron/index.d.ts +6 -0
- package/dist/cron/index.d.ts.map +1 -0
- package/dist/cron/resource-limiter.d.ts +9 -0
- package/dist/cron/resource-limiter.d.ts.map +1 -0
- package/dist/cron/schedule-command-service.d.ts +10 -0
- package/dist/cron/schedule-command-service.d.ts.map +1 -0
- package/dist/cron/schedule-service.d.ts +100 -0
- package/dist/cron/schedule-service.d.ts.map +1 -0
- package/dist/cron/scheduler.d.ts +66 -0
- package/dist/cron/scheduler.d.ts.map +1 -0
- package/dist/cron/sqlite-schedule-store.d.ts +52 -0
- package/dist/cron/sqlite-schedule-store.d.ts.map +1 -0
- package/dist/extensions/config/agent-config-loader.d.ts +4 -3
- package/dist/extensions/config/agent-config-loader.d.ts.map +1 -1
- package/dist/extensions/config/runtime-commands.d.ts +1 -0
- package/dist/extensions/config/runtime-commands.d.ts.map +1 -1
- package/dist/extensions/config/user-instruction-config-loader.d.ts +1 -0
- package/dist/extensions/config/user-instruction-config-loader.d.ts.map +1 -1
- package/dist/extensions/context/agentic-compaction.d.ts +2 -2
- package/dist/extensions/context/agentic-compaction.d.ts.map +1 -1
- package/dist/extensions/context/compaction-shared.d.ts +5 -4
- package/dist/extensions/context/compaction-shared.d.ts.map +1 -1
- package/dist/extensions/context/compaction.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-config-loader.d.ts +9 -2
- package/dist/extensions/plugin/plugin-config-loader.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-loader.d.ts +5 -3
- package/dist/extensions/plugin/plugin-loader.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-module-import.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-sandbox.d.ts +15 -2
- package/dist/extensions/plugin/plugin-sandbox.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-targeting.d.ts +7 -0
- package/dist/extensions/plugin/plugin-targeting.d.ts.map +1 -0
- package/dist/extensions/plugin-sandbox-bootstrap.js +211 -211
- package/dist/extensions/tools/definitions.d.ts +1 -1
- package/dist/extensions/tools/definitions.d.ts.map +1 -1
- package/dist/extensions/tools/executors/apply-patch.d.ts +3 -1
- package/dist/extensions/tools/executors/apply-patch.d.ts.map +1 -1
- package/dist/extensions/tools/executors/search.d.ts +1 -1
- package/dist/extensions/tools/executors/search.d.ts.map +1 -1
- package/dist/extensions/tools/index.d.ts +2 -0
- package/dist/extensions/tools/index.d.ts.map +1 -1
- package/dist/extensions/tools/presets.d.ts +26 -43
- package/dist/extensions/tools/presets.d.ts.map +1 -1
- package/dist/extensions/tools/runtime.d.ts +25 -0
- package/dist/extensions/tools/runtime.d.ts.map +1 -0
- package/dist/extensions/tools/schemas.d.ts.map +1 -1
- package/dist/extensions/tools/team/team-tools.d.ts +1 -0
- package/dist/extensions/tools/team/team-tools.d.ts.map +1 -1
- package/dist/hooks/hook-file-hooks.d.ts +4 -1
- package/dist/hooks/hook-file-hooks.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/subprocess.d.ts +8 -1
- package/dist/hooks/subprocess.d.ts.map +1 -1
- package/dist/hub/browser-websocket.d.ts +18 -0
- package/dist/hub/browser-websocket.d.ts.map +1 -0
- package/dist/hub/client.d.ts +45 -0
- package/dist/hub/client.d.ts.map +1 -0
- package/dist/hub/connect.d.ts +15 -0
- package/dist/hub/connect.d.ts.map +1 -0
- package/dist/hub/daemon-entry.d.ts +2 -0
- package/dist/hub/daemon-entry.d.ts.map +1 -0
- package/dist/hub/daemon-entry.js +1045 -0
- package/dist/hub/daemon.d.ts +5 -0
- package/dist/hub/daemon.d.ts.map +1 -0
- package/dist/hub/defaults.d.ts +13 -0
- package/dist/hub/defaults.d.ts.map +1 -0
- package/dist/hub/discovery.d.ts +29 -0
- package/dist/hub/discovery.d.ts.map +1 -0
- package/dist/hub/index.d.ts +15 -0
- package/dist/hub/index.d.ts.map +1 -0
- package/dist/hub/index.js +1044 -0
- package/dist/hub/native-transport.d.ts +17 -0
- package/dist/hub/native-transport.d.ts.map +1 -0
- package/dist/hub/runtime-handlers.d.ts +11 -0
- package/dist/hub/runtime-handlers.d.ts.map +1 -0
- package/dist/hub/server.d.ts +86 -0
- package/dist/hub/server.d.ts.map +1 -0
- package/dist/hub/session-client.d.ts +87 -0
- package/dist/hub/session-client.d.ts.map +1 -0
- package/dist/hub/start-shared-server.d.ts +19 -0
- package/dist/hub/start-shared-server.d.ts.map +1 -0
- package/dist/hub/transport.d.ts +8 -0
- package/dist/hub/transport.d.ts.map +1 -0
- package/dist/hub/ui-client.d.ts +44 -0
- package/dist/hub/ui-client.d.ts.map +1 -0
- package/dist/hub/workspace.d.ts +4 -0
- package/dist/hub/workspace.d.ts.map +1 -0
- package/dist/index.d.ts +26 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +498 -476
- package/dist/llms/configured-provider-registry.d.ts +28 -0
- package/dist/llms/configured-provider-registry.d.ts.map +1 -0
- package/dist/llms/provider-defaults.d.ts +27 -0
- package/dist/llms/provider-defaults.d.ts.map +1 -0
- package/dist/llms/provider-settings.d.ts +202 -0
- package/dist/llms/provider-settings.d.ts.map +1 -0
- package/dist/llms/runtime-config.d.ts +4 -0
- package/dist/llms/runtime-config.d.ts.map +1 -0
- package/dist/llms/runtime-registry.d.ts +20 -0
- package/dist/llms/runtime-registry.d.ts.map +1 -0
- package/dist/llms/runtime-types.d.ts +85 -0
- package/dist/llms/runtime-types.d.ts.map +1 -0
- package/dist/runtime/host.d.ts +1 -2
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/rules.d.ts +1 -0
- package/dist/runtime/rules.d.ts.map +1 -1
- package/dist/runtime/runtime-builder.d.ts.map +1 -1
- package/dist/runtime/runtime-host.d.ts +22 -24
- package/dist/runtime/runtime-host.d.ts.map +1 -1
- package/dist/runtime/runtime-oauth-token-manager.d.ts.map +1 -1
- package/dist/runtime/session-runtime.d.ts +1 -19
- package/dist/runtime/session-runtime.d.ts.map +1 -1
- package/dist/services/global-settings.d.ts +12 -0
- package/dist/services/global-settings.d.ts.map +1 -0
- package/dist/services/local-runtime-bootstrap.d.ts +9 -3
- package/dist/services/local-runtime-bootstrap.d.ts.map +1 -1
- package/dist/services/plugin-tools.d.ts +16 -0
- package/dist/services/plugin-tools.d.ts.map +1 -0
- package/dist/services/providers/local-provider-registry.d.ts +4 -4
- package/dist/services/providers/local-provider-registry.d.ts.map +1 -1
- package/dist/services/providers/local-provider-service.d.ts +13 -13
- package/dist/services/providers/local-provider-service.d.ts.map +1 -1
- package/dist/services/session-data.d.ts +1 -1
- package/dist/services/session-data.d.ts.map +1 -1
- package/dist/services/storage/provider-settings-legacy-migration.d.ts +1 -1
- package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -1
- package/dist/services/telemetry/index.js +28 -15
- package/dist/services/workspace-manifest.d.ts +11 -0
- package/dist/services/workspace-manifest.d.ts.map +1 -1
- package/dist/session/persistence-service.d.ts +11 -23
- package/dist/session/persistence-service.d.ts.map +1 -1
- package/dist/session/session-manifest-store.d.ts +22 -0
- package/dist/session/session-manifest-store.d.ts.map +1 -0
- package/dist/session/session-row.d.ts +93 -0
- package/dist/session/session-row.d.ts.map +1 -0
- package/dist/session/session-service.d.ts +2 -102
- package/dist/session/session-service.d.ts.map +1 -1
- package/dist/session/subagent-session-manager.d.ts +36 -0
- package/dist/session/subagent-session-manager.d.ts.map +1 -0
- package/dist/session/team-persistence-store.d.ts +24 -0
- package/dist/session/team-persistence-store.d.ts.map +1 -0
- package/dist/transports/hub.d.ts +47 -0
- package/dist/transports/hub.d.ts.map +1 -0
- package/dist/transports/local.d.ts +10 -6
- package/dist/transports/local.d.ts.map +1 -1
- package/dist/transports/remote.d.ts +10 -0
- package/dist/transports/remote.d.ts.map +1 -0
- package/dist/transports/runtime-host-support.d.ts +3 -2
- package/dist/transports/runtime-host-support.d.ts.map +1 -1
- package/dist/types/chat-schema.d.ts +10 -12
- package/dist/types/chat-schema.d.ts.map +1 -1
- package/dist/types/config.d.ts +8 -7
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/provider-settings.d.ts +4 -5
- package/dist/types/provider-settings.d.ts.map +1 -1
- package/dist/types/session.d.ts +2 -1
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +20 -6
- package/src/ClineCore.ts +68 -40
- package/src/account/index.ts +3 -3
- package/src/account/rpc.ts +12 -12
- package/src/cron/index.ts +5 -0
- package/src/cron/resource-limiter.ts +46 -0
- package/src/cron/schedule-command-service.ts +193 -0
- package/src/cron/schedule-service.ts +703 -0
- package/src/cron/scheduler.ts +637 -0
- package/src/cron/sqlite-schedule-store.ts +708 -0
- package/src/extensions/config/agent-config-loader.ts +17 -7
- package/src/extensions/config/runtime-commands.ts +6 -0
- package/src/extensions/config/user-instruction-config-loader.ts +1 -0
- package/src/extensions/context/agentic-compaction.ts +3 -3
- package/src/extensions/context/basic-compaction.ts +2 -2
- package/src/extensions/context/compaction-shared.ts +5 -4
- package/src/extensions/context/compaction.ts +3 -3
- package/src/extensions/plugin/plugin-config-loader.ts +17 -2
- package/src/extensions/plugin/plugin-loader.ts +48 -4
- package/src/extensions/plugin/plugin-module-import.ts +0 -2
- package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +93 -39
- package/src/extensions/plugin/plugin-sandbox.ts +47 -27
- package/src/extensions/plugin/plugin-targeting.ts +32 -0
- package/src/extensions/tools/definitions.ts +30 -49
- package/src/extensions/tools/executors/apply-patch.ts +69 -80
- package/src/extensions/tools/executors/search.ts +195 -3
- package/src/extensions/tools/index.ts +10 -0
- package/src/extensions/tools/presets.ts +31 -46
- package/src/extensions/tools/runtime.ts +261 -0
- package/src/extensions/tools/schemas.ts +4 -2
- package/src/extensions/tools/team/team-tools.ts +21 -0
- package/src/hooks/hook-file-hooks.ts +8 -2
- package/src/hooks/index.ts +0 -7
- package/src/hooks/subprocess-runner.ts +1 -1
- package/src/hooks/subprocess.ts +9 -0
- package/src/hub/browser-websocket.ts +137 -0
- package/src/hub/client.ts +574 -0
- package/src/hub/connect.ts +156 -0
- package/src/hub/daemon-entry.ts +87 -0
- package/src/hub/daemon.ts +181 -0
- package/src/hub/defaults.ts +43 -0
- package/src/hub/discovery.ts +247 -0
- package/src/hub/index.ts +14 -0
- package/src/hub/native-transport.ts +31 -0
- package/src/hub/runtime-handlers.ts +140 -0
- package/src/hub/server.ts +1888 -0
- package/src/hub/session-client.ts +460 -0
- package/src/hub/start-shared-server.ts +58 -0
- package/src/hub/transport.ts +14 -0
- package/src/hub/ui-client.ts +122 -0
- package/src/hub/workspace.ts +19 -0
- package/src/index.ts +124 -68
- package/src/llms/configured-provider-registry.ts +193 -0
- package/src/llms/provider-defaults.ts +637 -0
- package/src/llms/provider-settings.ts +263 -0
- package/src/llms/runtime-config.ts +43 -0
- package/src/llms/runtime-registry.ts +171 -0
- package/src/llms/runtime-types.ts +121 -0
- package/src/runtime/host.ts +107 -269
- package/src/runtime/index.ts +1 -0
- package/src/runtime/rules.ts +12 -0
- package/src/runtime/runtime-builder.ts +24 -8
- package/src/runtime/runtime-host.ts +89 -61
- package/src/runtime/runtime-oauth-token-manager.ts +11 -15
- package/src/runtime/session-runtime.ts +0 -24
- package/src/services/global-settings.ts +122 -0
- package/src/services/local-runtime-bootstrap.ts +51 -13
- package/src/services/plugin-tools.ts +85 -0
- package/src/services/providers/local-provider-registry.ts +6 -6
- package/src/services/providers/local-provider-service.ts +42 -37
- package/src/services/session-data.ts +15 -9
- package/src/services/storage/provider-settings-legacy-migration.ts +6 -4
- package/src/services/storage/provider-settings-manager.ts +1 -1
- package/src/services/workspace-manifest.ts +18 -0
- package/src/session/file-session-service.ts +1 -1
- package/src/session/index.ts +6 -27
- package/src/session/persistence-service.ts +119 -504
- package/src/session/session-manifest-store.ts +158 -0
- package/src/session/session-row.ts +199 -0
- package/src/session/session-service.ts +17 -376
- package/src/session/session-team-coordination.ts +1 -1
- package/src/session/subagent-session-manager.ts +397 -0
- package/src/session/team-persistence-store.ts +176 -0
- package/src/transports/hub.ts +656 -0
- package/src/transports/local.ts +135 -40
- package/src/transports/remote.ts +26 -0
- package/src/transports/runtime-host-support.ts +63 -9
- package/src/types/chat-schema.ts +4 -5
- package/src/types/config.ts +8 -7
- package/src/types/provider-settings.ts +11 -7
- package/src/types/session.ts +2 -4
- package/src/types.ts +27 -1
- package/dist/hooks/persistent.d.ts +0 -64
- package/dist/hooks/persistent.d.ts.map +0 -1
- package/dist/runtime/rpc-runtime-ensure.d.ts +0 -65
- package/dist/runtime/rpc-runtime-ensure.d.ts.map +0 -1
- package/dist/runtime/rpc-spawn-lease.d.ts +0 -8
- package/dist/runtime/rpc-spawn-lease.d.ts.map +0 -1
- package/dist/session/rpc-session-service.d.ts +0 -16
- package/dist/session/rpc-session-service.d.ts.map +0 -1
- package/dist/session/sqlite-rpc-session-backend.d.ts +0 -31
- package/dist/session/sqlite-rpc-session-backend.d.ts.map +0 -1
- package/dist/transports/rpc.d.ts +0 -51
- package/dist/transports/rpc.d.ts.map +0 -1
- package/src/ClineCore.test.ts +0 -226
- package/src/account/cline-account-service.test.ts +0 -185
- package/src/account/featurebase-token.test.ts +0 -175
- package/src/account/rpc.test.ts +0 -63
- package/src/auth/bounded-ttl-cache.test.ts +0 -38
- package/src/auth/client.test.ts +0 -69
- package/src/auth/cline.test.ts +0 -267
- package/src/auth/codex.test.ts +0 -170
- package/src/auth/oca.test.ts +0 -340
- package/src/auth/server.test.ts +0 -287
- package/src/auth/utils.test.ts +0 -128
- package/src/extensions/config/agent-config-loader.test.ts +0 -236
- package/src/extensions/config/hooks-config-loader.test.ts +0 -20
- package/src/extensions/config/runtime-commands.test.ts +0 -115
- package/src/extensions/config/unified-config-file-watcher.test.ts +0 -196
- package/src/extensions/config/user-instruction-config-loader.test.ts +0 -246
- package/src/extensions/context/compaction.test.ts +0 -483
- package/src/extensions/mcp/config-loader.test.ts +0 -238
- package/src/extensions/mcp/manager.test.ts +0 -105
- package/src/extensions/plugin/plugin-config-loader.test.ts +0 -184
- package/src/extensions/plugin/plugin-loader.test.ts +0 -292
- package/src/extensions/plugin/plugin-sandbox.test.ts +0 -423
- package/src/extensions/tools/definitions.test.ts +0 -780
- package/src/extensions/tools/executors/bash.test.ts +0 -87
- package/src/extensions/tools/executors/editor.test.ts +0 -35
- package/src/extensions/tools/executors/file-read.test.ts +0 -125
- package/src/extensions/tools/model-tool-routing.test.ts +0 -86
- package/src/extensions/tools/presets.test.ts +0 -70
- package/src/extensions/tools/team/multi-agent.lifecycle.test.ts +0 -455
- package/src/extensions/tools/team/spawn-agent-tool.test.ts +0 -381
- package/src/extensions/tools/team/team-tools.test.ts +0 -918
- package/src/hooks/checkpoint-hooks.test.ts +0 -168
- package/src/hooks/hook-file-hooks.test.ts +0 -311
- package/src/hooks/persistent.ts +0 -661
- package/src/runtime/history.test.ts +0 -114
- package/src/runtime/host.test.ts +0 -230
- package/src/runtime/rpc-runtime-ensure.test.ts +0 -123
- package/src/runtime/rpc-runtime-ensure.ts +0 -659
- package/src/runtime/rpc-spawn-lease.test.ts +0 -81
- package/src/runtime/rpc-spawn-lease.ts +0 -156
- package/src/runtime/runtime-builder.team-persistence.test.ts +0 -245
- package/src/runtime/runtime-builder.test.ts +0 -615
- package/src/runtime/runtime-oauth-token-manager.test.ts +0 -137
- package/src/runtime/runtime-parity.test.ts +0 -143
- package/src/services/providers/local-provider-service.test.ts +0 -1062
- package/src/services/session-data.test.ts +0 -160
- package/src/services/storage/provider-settings-legacy-migration.test.ts +0 -424
- package/src/services/storage/provider-settings-manager.test.ts +0 -191
- package/src/services/telemetry/OpenTelemetryAdapter.test.ts +0 -157
- package/src/services/telemetry/OpenTelemetryProvider.test.ts +0 -326
- package/src/services/telemetry/TelemetryLoggerSink.test.ts +0 -42
- package/src/services/telemetry/TelemetryService.test.ts +0 -134
- package/src/services/telemetry/distinct-id.test.ts +0 -57
- package/src/services/workspace/file-indexer.d.ts +0 -11
- package/src/services/workspace/file-indexer.test.ts +0 -156
- package/src/services/workspace/mention-enricher.test.ts +0 -106
- package/src/session/persistence-service.test.ts +0 -300
- package/src/session/rpc-session-service.ts +0 -114
- package/src/session/session-service.team-persistence.test.ts +0 -48
- package/src/session/sqlite-rpc-session-backend.ts +0 -301
- package/src/transports/local.e2e.test.ts +0 -380
- package/src/transports/local.test.ts +0 -2559
- package/src/transports/rpc.test.ts +0 -82
- package/src/transports/rpc.ts +0 -665
package/src/runtime/host.ts
CHANGED
|
@@ -1,42 +1,17 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
import { closeSync, existsSync, mkdirSync, openSync } from "node:fs";
|
|
3
|
-
import { dirname, join, resolve } from "node:path";
|
|
4
|
-
import { getRpcServerDefaultAddress, getRpcServerHealth } from "@clinebot/rpc";
|
|
5
|
-
import {
|
|
6
|
-
augmentNodeCommandForDebug,
|
|
7
|
-
withResolvedClineBuildEnv,
|
|
8
|
-
} from "@clinebot/shared";
|
|
9
|
-
import {
|
|
10
|
-
resolveClineDataDir,
|
|
11
|
-
resolveSessionDataDir,
|
|
12
|
-
} from "@clinebot/shared/storage";
|
|
13
1
|
import type { ClineCoreOptions } from "../ClineCore";
|
|
2
|
+
import {
|
|
3
|
+
ensureCompatibleLocalHubUrl,
|
|
4
|
+
resolveCompatibleLocalHubUrl,
|
|
5
|
+
} from "../hub/client";
|
|
14
6
|
import { SqliteSessionStore } from "../services/storage/sqlite-session-store";
|
|
15
7
|
import { resolveCoreDistinctId } from "../services/telemetry/distinct-id";
|
|
16
8
|
import { FileSessionService } from "../session/file-session-service";
|
|
17
|
-
import { RpcCoreSessionService } from "../session/rpc-session-service";
|
|
18
9
|
import { CoreSessionService } from "../session/session-service";
|
|
10
|
+
import { HubRuntimeHost } from "../transports/hub";
|
|
19
11
|
import { LocalRuntimeHost } from "../transports/local";
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
ensureRpcRuntimeAddress,
|
|
23
|
-
RPC_BUILD_ID_ENV,
|
|
24
|
-
RPC_DISCOVERY_PATH_ENV,
|
|
25
|
-
RPC_OWNER_ID_ENV,
|
|
26
|
-
RPC_STARTUP_LOCK_BYPASS_ENV,
|
|
27
|
-
type RpcOwnerContext,
|
|
28
|
-
resolveRpcOwnerContext,
|
|
29
|
-
} from "./rpc-runtime-ensure";
|
|
30
|
-
import { tryAcquireRpcSpawnLease } from "./rpc-spawn-lease";
|
|
12
|
+
import { RemoteRuntimeHost } from "../transports/remote";
|
|
31
13
|
import type { RuntimeHost, RuntimeHostMode } from "./runtime-host";
|
|
32
14
|
|
|
33
|
-
const DEFAULT_RPC_ADDRESS =
|
|
34
|
-
process.env.CLINE_RPC_ADDRESS?.trim() || getRpcServerDefaultAddress();
|
|
35
|
-
|
|
36
|
-
function requiresLocalRuntimeHost(options: ClineCoreOptions): boolean {
|
|
37
|
-
return !!options.defaultToolExecutors || !!options.teamToolsFactory;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
15
|
function resolveConfiguredBackendMode(
|
|
41
16
|
options: ClineCoreOptions,
|
|
42
17
|
): RuntimeHostMode {
|
|
@@ -47,16 +22,13 @@ function resolveConfiguredBackendMode(
|
|
|
47
22
|
return "local";
|
|
48
23
|
}
|
|
49
24
|
const raw = process.env.CLINE_SESSION_BACKEND_MODE?.trim().toLowerCase();
|
|
50
|
-
if (raw === "
|
|
25
|
+
if (raw === "local" || raw === "hub" || raw === "remote") {
|
|
51
26
|
return raw;
|
|
52
27
|
}
|
|
53
28
|
return "auto";
|
|
54
29
|
}
|
|
55
30
|
|
|
56
|
-
export type SessionBackend =
|
|
57
|
-
| RpcCoreSessionService
|
|
58
|
-
| CoreSessionService
|
|
59
|
-
| FileSessionService;
|
|
31
|
+
export type SessionBackend = CoreSessionService | FileSessionService;
|
|
60
32
|
|
|
61
33
|
let cachedBackend: SessionBackend | undefined;
|
|
62
34
|
let backendInitPromise: Promise<SessionBackend> | undefined;
|
|
@@ -70,130 +42,6 @@ async function reconcileDeadSessionsIfSupported(
|
|
|
70
42
|
await service.reconcileDeadSessions?.().catch(() => {});
|
|
71
43
|
}
|
|
72
44
|
|
|
73
|
-
function openRpcSidecarLogFile(): { fd: number; logPath: string } | undefined {
|
|
74
|
-
try {
|
|
75
|
-
const logPath = join(resolveClineDataDir(), "logs", "rpc-sidecar.log");
|
|
76
|
-
mkdirSync(dirname(logPath), { recursive: true });
|
|
77
|
-
return { fd: openSync(logPath, "a"), logPath };
|
|
78
|
-
} catch {
|
|
79
|
-
return undefined;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
function startRpcServerInBackground(
|
|
84
|
-
address: string,
|
|
85
|
-
owner: RpcOwnerContext,
|
|
86
|
-
logger?: ClineCoreOptions["logger"],
|
|
87
|
-
): void {
|
|
88
|
-
const lease = tryAcquireRpcSpawnLease(address);
|
|
89
|
-
if (!lease) {
|
|
90
|
-
logger?.log("RPC sidecar spawn skipped", {
|
|
91
|
-
address,
|
|
92
|
-
reason: "spawn_lease_unavailable",
|
|
93
|
-
severity: "warn",
|
|
94
|
-
});
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const launcher = process.execPath;
|
|
98
|
-
const entryArg = process.argv[1]?.trim();
|
|
99
|
-
if (!entryArg) {
|
|
100
|
-
lease.release();
|
|
101
|
-
logger?.error?.("RPC sidecar spawn aborted", {
|
|
102
|
-
address,
|
|
103
|
-
reason: "missing_process_entry_arg",
|
|
104
|
-
});
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
const entry = resolve(process.cwd(), entryArg);
|
|
108
|
-
if (!existsSync(entry)) {
|
|
109
|
-
lease.release();
|
|
110
|
-
logger?.error?.("RPC sidecar spawn aborted", {
|
|
111
|
-
address,
|
|
112
|
-
reason: "entrypoint_missing",
|
|
113
|
-
entryPath: entry,
|
|
114
|
-
});
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
const conditionsArg = process.execArgv.find((arg) =>
|
|
118
|
-
arg.startsWith("--conditions="),
|
|
119
|
-
);
|
|
120
|
-
const command = augmentNodeCommandForDebug(
|
|
121
|
-
[
|
|
122
|
-
launcher,
|
|
123
|
-
...(conditionsArg ? [conditionsArg] : []),
|
|
124
|
-
entry,
|
|
125
|
-
"rpc",
|
|
126
|
-
"start",
|
|
127
|
-
"--address",
|
|
128
|
-
address,
|
|
129
|
-
],
|
|
130
|
-
{ debugRole: "rpc" },
|
|
131
|
-
);
|
|
132
|
-
const sidecarLog = openRpcSidecarLogFile();
|
|
133
|
-
logger?.log("Launching detached RPC sidecar", {
|
|
134
|
-
address,
|
|
135
|
-
command: command.join(" "),
|
|
136
|
-
commandArgs: command.slice(1),
|
|
137
|
-
executable: command[0] ?? launcher,
|
|
138
|
-
entryPath: entry,
|
|
139
|
-
cwd: process.cwd(),
|
|
140
|
-
logPath: sidecarLog?.logPath,
|
|
141
|
-
});
|
|
142
|
-
try {
|
|
143
|
-
const child = spawn(command[0] ?? launcher, command.slice(1), {
|
|
144
|
-
detached: true,
|
|
145
|
-
stdio: sidecarLog ? ["ignore", sidecarLog.fd, sidecarLog.fd] : "ignore",
|
|
146
|
-
env: {
|
|
147
|
-
...withResolvedClineBuildEnv(process.env),
|
|
148
|
-
[RPC_STARTUP_LOCK_BYPASS_ENV]: "1",
|
|
149
|
-
[RPC_OWNER_ID_ENV]: owner.ownerId,
|
|
150
|
-
[RPC_BUILD_ID_ENV]: owner.buildId,
|
|
151
|
-
[RPC_DISCOVERY_PATH_ENV]: owner.discoveryPath,
|
|
152
|
-
CLINE_NO_INTERACTIVE: "1",
|
|
153
|
-
},
|
|
154
|
-
cwd: process.cwd(),
|
|
155
|
-
});
|
|
156
|
-
logger?.log("Detached RPC sidecar spawned", {
|
|
157
|
-
address,
|
|
158
|
-
childPid: child.pid,
|
|
159
|
-
logPath: sidecarLog?.logPath,
|
|
160
|
-
});
|
|
161
|
-
child.unref();
|
|
162
|
-
setTimeout(() => lease.release(), 10_000).unref();
|
|
163
|
-
} catch (error) {
|
|
164
|
-
lease.release();
|
|
165
|
-
logger?.error?.("RPC sidecar spawn failed", {
|
|
166
|
-
address,
|
|
167
|
-
logPath: sidecarLog?.logPath,
|
|
168
|
-
error,
|
|
169
|
-
});
|
|
170
|
-
throw error;
|
|
171
|
-
} finally {
|
|
172
|
-
if (sidecarLog) {
|
|
173
|
-
closeSync(sidecarLog.fd);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
async function tryConnectRpcBackend(
|
|
179
|
-
address: string,
|
|
180
|
-
options: ClineCoreOptions,
|
|
181
|
-
): Promise<RpcCoreSessionService | undefined> {
|
|
182
|
-
try {
|
|
183
|
-
const health = await getRpcServerHealth(address);
|
|
184
|
-
if (!health) {
|
|
185
|
-
return undefined;
|
|
186
|
-
}
|
|
187
|
-
return new RpcCoreSessionService({
|
|
188
|
-
address,
|
|
189
|
-
sessionsDir: resolveSessionDataDir(),
|
|
190
|
-
messagesArtifactUploader: options.messagesArtifactUploader,
|
|
191
|
-
});
|
|
192
|
-
} catch {
|
|
193
|
-
return undefined;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
45
|
function createLocalBackend(options: ClineCoreOptions): SessionBackend {
|
|
198
46
|
try {
|
|
199
47
|
const store = new SqliteSessionStore();
|
|
@@ -202,7 +50,7 @@ function createLocalBackend(options: ClineCoreOptions): SessionBackend {
|
|
|
202
50
|
messagesArtifactUploader: options.messagesArtifactUploader,
|
|
203
51
|
});
|
|
204
52
|
} catch {
|
|
205
|
-
// Fallback to file-based session service if SQLite is unavailable
|
|
53
|
+
// Fallback to file-based session service if SQLite is unavailable.
|
|
206
54
|
options.telemetry?.capture({
|
|
207
55
|
event: "session_backend_fallback",
|
|
208
56
|
properties: {
|
|
@@ -216,6 +64,23 @@ function createLocalBackend(options: ClineCoreOptions): SessionBackend {
|
|
|
216
64
|
}
|
|
217
65
|
}
|
|
218
66
|
|
|
67
|
+
function createLocalRuntimeHost(
|
|
68
|
+
options: ClineCoreOptions,
|
|
69
|
+
distinctId: string,
|
|
70
|
+
backend?: SessionBackend,
|
|
71
|
+
): LocalRuntimeHost {
|
|
72
|
+
return new LocalRuntimeHost({
|
|
73
|
+
sessionService:
|
|
74
|
+
backend ?? options.sessionService ?? createLocalBackend(options),
|
|
75
|
+
defaultToolExecutors: options.defaultToolExecutors,
|
|
76
|
+
telemetry: options.telemetry,
|
|
77
|
+
toolPolicies: options.toolPolicies,
|
|
78
|
+
requestToolApproval: options.requestToolApproval,
|
|
79
|
+
distinctId,
|
|
80
|
+
fetch: options.fetch,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
219
84
|
export async function resolveSessionBackend(
|
|
220
85
|
options: ClineCoreOptions,
|
|
221
86
|
): Promise<SessionBackend> {
|
|
@@ -226,83 +91,7 @@ export async function resolveSessionBackend(
|
|
|
226
91
|
return await backendInitPromise;
|
|
227
92
|
}
|
|
228
93
|
|
|
229
|
-
const mode = resolveConfiguredBackendMode(options);
|
|
230
|
-
const requestedAddress = options.rpc?.address?.trim() || DEFAULT_RPC_ADDRESS;
|
|
231
|
-
const attempts = Math.max(1, options.rpc?.connectAttempts ?? 5);
|
|
232
|
-
const delayMs = Math.max(0, options.rpc?.connectDelayMs ?? 100);
|
|
233
|
-
const autoStartRpc = options.rpc?.autoStart !== false;
|
|
234
|
-
const logger = options.logger;
|
|
235
|
-
|
|
236
94
|
backendInitPromise = (async () => {
|
|
237
|
-
if (mode === "local") {
|
|
238
|
-
cachedBackend = createLocalBackend(options);
|
|
239
|
-
await reconcileDeadSessionsIfSupported(cachedBackend);
|
|
240
|
-
return cachedBackend;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
let address = requestedAddress;
|
|
244
|
-
const existingRpcBackend = await tryConnectRpcBackend(address, options);
|
|
245
|
-
if (existingRpcBackend) {
|
|
246
|
-
logger?.log("Connected to existing RPC session backend", { address });
|
|
247
|
-
cachedBackend = existingRpcBackend;
|
|
248
|
-
await reconcileDeadSessionsIfSupported(cachedBackend);
|
|
249
|
-
return cachedBackend;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
if (mode === "rpc") {
|
|
253
|
-
throw new Error(`RPC backend unavailable at ${address}`);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
if (autoStartRpc) {
|
|
257
|
-
try {
|
|
258
|
-
logger?.log("Ensuring RPC runtime for auto session backend", {
|
|
259
|
-
address,
|
|
260
|
-
});
|
|
261
|
-
const ensured = await ensureRpcRuntimeAddress(address, {
|
|
262
|
-
resolveOwner: () => resolveRpcOwnerContext({ ownerPrefix: "core" }),
|
|
263
|
-
spawnIfNeeded: (rpcAddress, owner) => {
|
|
264
|
-
startRpcServerInBackground(rpcAddress, owner, logger);
|
|
265
|
-
},
|
|
266
|
-
});
|
|
267
|
-
address = ensured.address;
|
|
268
|
-
logger?.log("RPC runtime ensure completed", {
|
|
269
|
-
requestedAddress,
|
|
270
|
-
address,
|
|
271
|
-
action: ensured.action,
|
|
272
|
-
});
|
|
273
|
-
} catch (error) {
|
|
274
|
-
logger?.error?.("RPC backend auto-start failed", {
|
|
275
|
-
address,
|
|
276
|
-
requestedAddress,
|
|
277
|
-
error,
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
for (let attempt = 0; attempt < attempts; attempt += 1) {
|
|
282
|
-
const rpcBackend = await tryConnectRpcBackend(address, options);
|
|
283
|
-
if (rpcBackend) {
|
|
284
|
-
logger?.log("Connected to ensured RPC session backend", {
|
|
285
|
-
address,
|
|
286
|
-
attempt: attempt + 1,
|
|
287
|
-
attempts,
|
|
288
|
-
});
|
|
289
|
-
cachedBackend = rpcBackend;
|
|
290
|
-
await reconcileDeadSessionsIfSupported(cachedBackend);
|
|
291
|
-
return cachedBackend;
|
|
292
|
-
}
|
|
293
|
-
if (delayMs > 0) {
|
|
294
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
logger?.log("Falling back to local session backend", {
|
|
300
|
-
requestedAddress,
|
|
301
|
-
address,
|
|
302
|
-
attempts,
|
|
303
|
-
delayMs,
|
|
304
|
-
severity: "warn",
|
|
305
|
-
});
|
|
306
95
|
cachedBackend = createLocalBackend(options);
|
|
307
96
|
await reconcileDeadSessionsIfSupported(cachedBackend);
|
|
308
97
|
return cachedBackend;
|
|
@@ -319,44 +108,93 @@ export async function createRuntimeHost(
|
|
|
319
108
|
const distinctId = resolveCoreDistinctId(options.distinctId);
|
|
320
109
|
options.telemetry?.setDistinctId(distinctId);
|
|
321
110
|
const configuredMode = resolveConfiguredBackendMode(options);
|
|
322
|
-
if (
|
|
323
|
-
|
|
111
|
+
if (configuredMode === "remote") {
|
|
112
|
+
const remoteEndpoint = options.remote?.endpoint?.trim();
|
|
113
|
+
if (!remoteEndpoint) {
|
|
324
114
|
throw new Error(
|
|
325
|
-
"
|
|
115
|
+
"Remote runtime mode requires `remote.endpoint` to be configured.",
|
|
326
116
|
);
|
|
327
117
|
}
|
|
328
|
-
options.logger?.log("Using
|
|
329
|
-
|
|
330
|
-
hasDefaultToolExecutors: !!options.defaultToolExecutors,
|
|
331
|
-
hasTeamToolsFactory: !!options.teamToolsFactory,
|
|
118
|
+
options.logger?.log("Using remote runtime host", {
|
|
119
|
+
endpoint: remoteEndpoint,
|
|
332
120
|
});
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
requestToolApproval: options.requestToolApproval,
|
|
341
|
-
distinctId,
|
|
121
|
+
return new RemoteRuntimeHost({
|
|
122
|
+
endpoint: remoteEndpoint,
|
|
123
|
+
authToken: options.remote?.authToken,
|
|
124
|
+
clientType: options.remote?.clientType,
|
|
125
|
+
displayName: options.remote?.displayName,
|
|
126
|
+
workspaceRoot: options.remote?.workspaceRoot,
|
|
127
|
+
cwd: options.remote?.cwd,
|
|
342
128
|
});
|
|
343
129
|
}
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
130
|
+
if (configuredMode === "hub") {
|
|
131
|
+
const explicitEndpoint = options.hub?.endpoint?.trim();
|
|
132
|
+
const hubUrl =
|
|
133
|
+
explicitEndpoint ||
|
|
134
|
+
(await ensureCompatibleLocalHubUrl({
|
|
135
|
+
strategy: options.hub?.strategy ?? "require-hub",
|
|
136
|
+
workspaceRoot: options.hub?.workspaceRoot,
|
|
137
|
+
cwd: options.hub?.cwd,
|
|
138
|
+
}));
|
|
139
|
+
if (!hubUrl) {
|
|
140
|
+
throw new Error("No compatible hub runtime is available.");
|
|
141
|
+
}
|
|
142
|
+
options.logger?.log("Using hub runtime host", {
|
|
143
|
+
url: hubUrl,
|
|
144
|
+
explicitEndpoint: explicitEndpoint || undefined,
|
|
145
|
+
});
|
|
146
|
+
return new HubRuntimeHost(
|
|
147
|
+
{
|
|
148
|
+
url: hubUrl,
|
|
149
|
+
authToken: options.hub?.authToken,
|
|
150
|
+
clientType: options.hub?.clientType,
|
|
151
|
+
displayName: options.hub?.displayName,
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
workspaceRoot: options.hub?.workspaceRoot,
|
|
155
|
+
cwd: options.hub?.cwd,
|
|
156
|
+
},
|
|
351
157
|
);
|
|
352
158
|
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
159
|
+
if (configuredMode === "auto") {
|
|
160
|
+
const hubUrl = await resolveCompatibleLocalHubUrl({
|
|
161
|
+
endpoint: options.hub?.endpoint,
|
|
162
|
+
strategy: options.hub?.strategy ?? "prefer-hub",
|
|
163
|
+
workspaceRoot: options.hub?.workspaceRoot,
|
|
164
|
+
cwd: options.hub?.cwd,
|
|
165
|
+
});
|
|
166
|
+
if (hubUrl) {
|
|
167
|
+
options.logger?.log("Using discovered local hub runtime host", {
|
|
168
|
+
url: hubUrl,
|
|
169
|
+
});
|
|
170
|
+
const host = new HubRuntimeHost(
|
|
171
|
+
{
|
|
172
|
+
url: hubUrl,
|
|
173
|
+
authToken: options.hub?.authToken,
|
|
174
|
+
clientType: options.hub?.clientType,
|
|
175
|
+
displayName: options.hub?.displayName,
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
workspaceRoot: options.hub?.workspaceRoot,
|
|
179
|
+
cwd: options.hub?.cwd,
|
|
180
|
+
},
|
|
181
|
+
);
|
|
182
|
+
try {
|
|
183
|
+
await host.connect();
|
|
184
|
+
return host;
|
|
185
|
+
} catch (error) {
|
|
186
|
+
options.logger?.log("Falling back to local runtime host", {
|
|
187
|
+
reason: "hub_connect_failed",
|
|
188
|
+
severity: "warn",
|
|
189
|
+
error,
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
options.logger?.log("Falling back to local runtime host", {
|
|
194
|
+
reason: "compatible_hub_unavailable",
|
|
195
|
+
severity: "warn",
|
|
196
|
+
});
|
|
197
|
+
return createLocalRuntimeHost(options, distinctId);
|
|
198
|
+
}
|
|
199
|
+
return createLocalRuntimeHost(options, distinctId);
|
|
362
200
|
}
|
package/src/runtime/index.ts
CHANGED
package/src/runtime/rules.ts
CHANGED
|
@@ -20,6 +20,18 @@ export function formatRulesForSystemPrompt(
|
|
|
20
20
|
return `\n\n# Rules\n${renderedRules}`;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
export function mergeRulesForSystemPrompt(
|
|
24
|
+
primaryRules?: string,
|
|
25
|
+
additionalRules?: string,
|
|
26
|
+
): string | undefined {
|
|
27
|
+
const primary = primaryRules?.trim();
|
|
28
|
+
const additional = additionalRules?.trim();
|
|
29
|
+
if (primary && additional) {
|
|
30
|
+
return `${primary}\n\n${additional}`;
|
|
31
|
+
}
|
|
32
|
+
return primary || additional || undefined;
|
|
33
|
+
}
|
|
34
|
+
|
|
23
35
|
export function listEnabledRulesFromWatcher(
|
|
24
36
|
watcher: UserInstructionConfigWatcher,
|
|
25
37
|
): RuleConfig[] {
|
|
@@ -32,6 +32,10 @@ import {
|
|
|
32
32
|
createDelegatedAgentConfigProvider,
|
|
33
33
|
type TeamEvent,
|
|
34
34
|
} from "../extensions/tools/team";
|
|
35
|
+
import {
|
|
36
|
+
filterDisabledTools,
|
|
37
|
+
resolveDisabledToolNames,
|
|
38
|
+
} from "../services/global-settings";
|
|
35
39
|
import { createLocalTeamStore } from "../services/storage/team-store";
|
|
36
40
|
import type { CoreAgentMode, CoreSessionConfig } from "../types/config";
|
|
37
41
|
import type {
|
|
@@ -74,6 +78,13 @@ function filterToolsByPolicies(
|
|
|
74
78
|
);
|
|
75
79
|
}
|
|
76
80
|
|
|
81
|
+
function filterAvailableTools(
|
|
82
|
+
tools: Tool[],
|
|
83
|
+
toolPolicies: CoreSessionConfig["toolPolicies"],
|
|
84
|
+
): Tool[] {
|
|
85
|
+
return filterDisabledTools(filterToolsByPolicies(tools, toolPolicies));
|
|
86
|
+
}
|
|
87
|
+
|
|
77
88
|
export function createTeamName(): string {
|
|
78
89
|
return `team-${nanoid(5)}`;
|
|
79
90
|
}
|
|
@@ -96,7 +107,7 @@ function createBuiltinToolsList(
|
|
|
96
107
|
toolRoutingRules ?? DEFAULT_MODEL_TOOL_ROUTING_RULES,
|
|
97
108
|
);
|
|
98
109
|
|
|
99
|
-
return
|
|
110
|
+
return filterAvailableTools(
|
|
100
111
|
createBuiltinTools({
|
|
101
112
|
cwd,
|
|
102
113
|
...preset,
|
|
@@ -478,8 +489,10 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
478
489
|
} = input;
|
|
479
490
|
const onTeamEvent = input.onTeamEvent ?? (() => {});
|
|
480
491
|
const normalized = normalizeConfig(config);
|
|
492
|
+
const globallyDisabledToolNames = resolveDisabledToolNames();
|
|
481
493
|
const tools: Tool[] = [];
|
|
482
494
|
const effectiveTeamName = config.teamName?.trim() || createTeamName();
|
|
495
|
+
const teamStoreKey = config.sessionId?.trim() || effectiveTeamName;
|
|
483
496
|
const hasLocalSkills = hasSkillsFiles(config.cwd);
|
|
484
497
|
let teamToolsRegistered = false;
|
|
485
498
|
const watcherProvided = Boolean(sharedUserInstructionWatcher);
|
|
@@ -535,7 +548,7 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
535
548
|
const teamStore = normalized.enableAgentTeams
|
|
536
549
|
? createLocalTeamStore()
|
|
537
550
|
: undefined;
|
|
538
|
-
const restoredTeam = teamStore?.loadRuntime(
|
|
551
|
+
const restoredTeam = teamStore?.loadRuntime(teamStoreKey);
|
|
539
552
|
const restoredTeamState = restoredTeam?.state;
|
|
540
553
|
const restoredTeammateSpecs = restoredTeam?.teammates ?? [];
|
|
541
554
|
const teammateSpecs = new Map(
|
|
@@ -606,9 +619,9 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
606
619
|
if (event.type === "teammate_shutdown") {
|
|
607
620
|
teammateSpecs.delete(event.agentId);
|
|
608
621
|
}
|
|
609
|
-
teamStore.handleTeamEvent(
|
|
622
|
+
teamStore.handleTeamEvent(teamStoreKey, event);
|
|
610
623
|
teamStore.persistRuntime(
|
|
611
|
-
|
|
624
|
+
teamStoreKey,
|
|
612
625
|
teamRuntime.exportState(),
|
|
613
626
|
Array.from(teammateSpecs.values()),
|
|
614
627
|
);
|
|
@@ -628,8 +641,7 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
628
641
|
}
|
|
629
642
|
teamToolsRegistered = true;
|
|
630
643
|
|
|
631
|
-
const
|
|
632
|
-
const teamBootstrap = factory({
|
|
644
|
+
const teamBootstrap = bootstrapAgentTeams({
|
|
633
645
|
runtime: teamRuntime,
|
|
634
646
|
leadAgentId: config.sessionId || "lead",
|
|
635
647
|
restoredFromPersistence: Boolean(restoredTeamState),
|
|
@@ -714,7 +726,7 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
714
726
|
: undefined;
|
|
715
727
|
|
|
716
728
|
return {
|
|
717
|
-
tools:
|
|
729
|
+
tools: filterAvailableTools(tools, config.toolPolicies),
|
|
718
730
|
logger: logger ?? config.logger,
|
|
719
731
|
telemetry: telemetry ?? config.telemetry,
|
|
720
732
|
teamRuntime,
|
|
@@ -726,7 +738,11 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
726
738
|
registerLeadAgent: (agent) => {
|
|
727
739
|
leadAgentInstance = agent;
|
|
728
740
|
if (pendingLeadTeamTools.length > 0) {
|
|
729
|
-
agent.addTools(
|
|
741
|
+
agent.addTools(
|
|
742
|
+
filterDisabledTools(pendingLeadTeamTools, [
|
|
743
|
+
...globallyDisabledToolNames,
|
|
744
|
+
]),
|
|
745
|
+
);
|
|
730
746
|
}
|
|
731
747
|
},
|
|
732
748
|
shutdown: async (reason: string) => {
|