@clinebot/core 0.0.34 → 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 +13 -10
- package/dist/ClineCore.d.ts +96 -63
- 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 +6 -5
- package/dist/extensions/config/agent-config-loader.d.ts.map +1 -1
- package/dist/extensions/config/agent-config-parser.d.ts +1 -1
- package/dist/extensions/config/agent-config-parser.d.ts.map +1 -1
- package/dist/extensions/config/hooks-config-loader.d.ts +2 -2
- package/dist/extensions/config/hooks-config-loader.d.ts.map +1 -1
- package/dist/extensions/config/index.d.ts +3 -3
- package/dist/extensions/config/index.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 +3 -2
- 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 +253 -253
- package/dist/extensions/tools/constants.d.ts.map +1 -0
- package/dist/{tools → extensions/tools}/definitions.d.ts +1 -1
- package/dist/extensions/tools/definitions.d.ts.map +1 -0
- package/dist/extensions/tools/executors/apply-patch-parser.d.ts.map +1 -0
- package/dist/{tools → extensions/tools}/executors/apply-patch.d.ts +3 -1
- package/dist/extensions/tools/executors/apply-patch.d.ts.map +1 -0
- package/dist/extensions/tools/executors/bash.d.ts.map +1 -0
- package/dist/extensions/tools/executors/editor.d.ts.map +1 -0
- package/dist/extensions/tools/executors/file-read.d.ts.map +1 -0
- package/dist/extensions/tools/executors/index.d.ts.map +1 -0
- package/dist/{tools → extensions/tools}/executors/search.d.ts +1 -1
- package/dist/extensions/tools/executors/search.d.ts.map +1 -0
- package/dist/extensions/tools/executors/web-fetch.d.ts.map +1 -0
- package/dist/extensions/tools/helpers.d.ts.map +1 -0
- package/dist/{tools → extensions/tools}/index.d.ts +2 -0
- package/dist/extensions/tools/index.d.ts.map +1 -0
- package/dist/{tools → extensions/tools}/model-tool-routing.d.ts +1 -1
- package/dist/extensions/tools/model-tool-routing.d.ts.map +1 -0
- package/dist/{tools → extensions/tools}/presets.d.ts +26 -44
- package/dist/extensions/tools/presets.d.ts.map +1 -0
- 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 -0
- package/dist/extensions/tools/team/delegated-agent.d.ts.map +1 -0
- package/dist/extensions/tools/team/index.d.ts.map +1 -0
- package/dist/{team → extensions/tools/team}/multi-agent.d.ts +1 -3
- package/dist/extensions/tools/team/multi-agent.d.ts.map +1 -0
- package/dist/extensions/tools/team/projections.d.ts.map +1 -0
- package/dist/extensions/tools/team/runtime.d.ts.map +1 -0
- package/dist/{team → extensions/tools/team}/spawn-agent-tool.d.ts +0 -1
- package/dist/extensions/tools/team/spawn-agent-tool.d.ts.map +1 -0
- package/dist/extensions/tools/team/subagent-prompts.d.ts.map +1 -0
- package/dist/{team → extensions/tools/team}/team-tools.d.ts +1 -0
- package/dist/extensions/tools/team/team-tools.d.ts.map +1 -0
- package/dist/{tools → extensions/tools}/types.d.ts +4 -3
- package/dist/extensions/tools/types.d.ts.map +1 -0
- package/dist/{runtime → hooks}/checkpoint-hooks.d.ts +7 -0
- package/dist/hooks/checkpoint-hooks.d.ts.map +1 -0
- package/dist/{runtime → hooks}/hook-file-hooks.d.ts +4 -3
- package/dist/hooks/hook-file-hooks.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/subprocess.d.ts +10 -130
- 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 +52 -39
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +557 -533
- 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/history.d.ts +4 -0
- package/dist/runtime/history.d.ts.map +1 -0
- package/dist/runtime/host.d.ts +8 -0
- package/dist/runtime/host.d.ts.map +1 -0
- 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 +103 -0
- package/dist/runtime/runtime-host.d.ts.map +1 -0
- package/dist/{session → runtime}/runtime-oauth-token-manager.d.ts +1 -1
- package/dist/{session → runtime}/runtime-oauth-token-manager.d.ts.map +1 -1
- package/dist/runtime/session-runtime.d.ts +3 -21
- package/dist/runtime/session-runtime.d.ts.map +1 -1
- package/dist/{session/session-agent-events.d.ts → services/agent-events.d.ts} +4 -4
- package/dist/services/agent-events.d.ts.map +1 -0
- package/dist/services/config.d.ts +3 -0
- package/dist/services/config.d.ts.map +1 -0
- 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 +47 -0
- package/dist/services/local-runtime-bootstrap.d.ts.map +1 -0
- package/dist/services/plugin-tools.d.ts +16 -0
- package/dist/services/plugin-tools.d.ts.map +1 -0
- package/dist/{providers → services/providers}/local-provider-registry.d.ts +4 -4
- package/dist/services/providers/local-provider-registry.d.ts.map +1 -0
- package/dist/{providers → services/providers}/local-provider-service.d.ts +13 -13
- package/dist/services/providers/local-provider-service.d.ts.map +1 -0
- package/dist/{session → services}/session-artifacts.d.ts +0 -4
- package/dist/services/session-artifacts.d.ts.map +1 -0
- package/dist/{session/utils/helpers.d.ts → services/session-data.d.ts} +19 -27
- package/dist/services/session-data.d.ts.map +1 -0
- package/dist/{session → services}/session-telemetry.d.ts +2 -2
- package/dist/services/session-telemetry.d.ts.map +1 -0
- package/dist/{storage → services/storage}/file-team-store.d.ts +2 -2
- package/dist/services/storage/file-team-store.d.ts.map +1 -0
- package/dist/{storage → services/storage}/provider-settings-legacy-migration.d.ts +1 -1
- package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -0
- package/dist/{storage → services/storage}/provider-settings-manager.d.ts +1 -1
- package/dist/services/storage/provider-settings-manager.d.ts.map +1 -0
- package/dist/{storage → services/storage}/sqlite-session-store.d.ts +3 -3
- package/dist/services/storage/sqlite-session-store.d.ts.map +1 -0
- package/dist/{storage → services/storage}/sqlite-team-store.d.ts +2 -2
- package/dist/services/storage/sqlite-team-store.d.ts.map +1 -0
- package/dist/{storage → services/storage}/team-store.d.ts +1 -1
- package/dist/services/storage/team-store.d.ts.map +1 -0
- package/dist/services/telemetry/ITelemetryAdapter.d.ts.map +1 -0
- package/dist/services/telemetry/OpenTelemetryAdapter.d.ts.map +1 -0
- package/dist/services/telemetry/OpenTelemetryProvider.d.ts.map +1 -0
- package/dist/services/telemetry/TelemetryLoggerSink.d.ts.map +1 -0
- package/dist/services/telemetry/TelemetryService.d.ts.map +1 -0
- package/dist/services/telemetry/core-events.d.ts.map +1 -0
- package/dist/services/telemetry/distinct-id.d.ts.map +1 -0
- package/dist/services/telemetry/index.d.ts.map +1 -0
- package/dist/services/telemetry/index.js +28 -0
- package/dist/{session/utils → services}/usage.d.ts +1 -1
- package/dist/services/usage.d.ts.map +1 -0
- package/dist/services/workspace/file-indexer.d.ts.map +1 -0
- package/dist/services/workspace/index.d.ts.map +1 -0
- package/dist/services/workspace/mention-enricher.d.ts.map +1 -0
- package/dist/services/workspace-manifest.d.ts +16 -0
- package/dist/services/workspace-manifest.d.ts.map +1 -0
- package/dist/session/file-session-service.d.ts +4 -1
- package/dist/session/file-session-service.d.ts.map +1 -1
- package/dist/session/persistence-service.d.ts +15 -25
- 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 +8 -109
- package/dist/session/session-service.d.ts.map +1 -1
- package/dist/session/session-team-coordination.d.ts +4 -4
- package/dist/session/session-team-coordination.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/{session/default-session-manager.d.ts → transports/local.d.ts} +30 -16
- package/dist/transports/local.d.ts.map +1 -0
- 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 +22 -0
- package/dist/transports/runtime-host-support.d.ts.map +1 -0
- package/dist/{chat → types}/chat-schema.d.ts +10 -12
- package/dist/types/chat-schema.d.ts.map +1 -0
- package/dist/types/config.d.ts +10 -9
- 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/{session/utils/types.d.ts → types/session.d.ts} +16 -6
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/sessions.d.ts +19 -0
- package/dist/types/sessions.d.ts.map +1 -1
- package/dist/types/storage.d.ts +1 -3
- package/dist/types/storage.d.ts.map +1 -1
- package/dist/types.d.ts +14 -6
- package/dist/types.d.ts.map +1 -1
- package/package.json +22 -13
- package/src/ClineCore.ts +183 -85
- package/src/account/index.ts +3 -3
- package/src/account/rpc.ts +12 -12
- package/src/auth/cline.ts +1 -1
- package/src/auth/codex.ts +1 -1
- package/src/auth/oca.ts +1 -1
- 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 +18 -12
- package/src/extensions/config/agent-config-parser.ts +1 -1
- package/src/extensions/config/hooks-config-loader.ts +1 -2
- package/src/extensions/config/index.ts +0 -4
- package/src/extensions/config/runtime-commands.ts +6 -0
- package/src/extensions/config/user-instruction-config-loader.ts +1 -4
- 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/{tools → extensions/tools}/definitions.ts +31 -50
- package/src/{tools → extensions/tools}/executors/apply-patch.ts +69 -80
- package/src/{tools → extensions/tools}/executors/file-read.ts +29 -4
- package/src/{tools → extensions/tools}/executors/search.ts +196 -4
- package/src/{tools → extensions/tools}/index.ts +10 -0
- package/src/{tools → extensions/tools}/model-tool-routing.ts +1 -1
- package/src/{tools → extensions/tools}/presets.ts +31 -47
- package/src/extensions/tools/runtime.ts +261 -0
- package/src/{tools → extensions/tools}/schemas.ts +4 -2
- package/src/{team → extensions/tools/team}/multi-agent.ts +80 -17
- package/src/{team → extensions/tools/team}/spawn-agent-tool.ts +1 -7
- package/src/{team → extensions/tools/team}/subagent-prompts.ts +2 -2
- package/src/{team → extensions/tools/team}/team-tools.ts +84 -53
- package/src/{tools → extensions/tools}/types.ts +5 -3
- package/src/{runtime → hooks}/checkpoint-hooks.ts +27 -0
- package/src/{runtime → hooks}/hook-file-hooks.ts +14 -13
- package/src/hooks/index.ts +0 -7
- package/src/hooks/subprocess-runner.ts +1 -1
- package/src/hooks/subprocess.ts +57 -257
- 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 +264 -199
- 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/history.ts +237 -0
- package/src/runtime/host.ts +200 -0
- package/src/runtime/index.ts +1 -0
- package/src/runtime/rules.ts +12 -0
- package/src/runtime/runtime-builder.ts +37 -29
- package/src/runtime/runtime-host.ts +206 -0
- package/src/{session → runtime}/runtime-oauth-token-manager.ts +12 -16
- package/src/runtime/session-runtime.ts +2 -26
- package/src/{session/session-agent-events.ts → services/agent-events.ts} +7 -7
- package/src/services/config.ts +5 -0
- package/src/services/global-settings.ts +122 -0
- package/src/services/local-runtime-bootstrap.ts +318 -0
- package/src/services/plugin-tools.ts +85 -0
- package/src/{providers → services/providers}/local-provider-registry.ts +6 -6
- package/src/{providers → services/providers}/local-provider-service.ts +46 -41
- package/src/{session → services}/session-artifacts.ts +7 -19
- package/src/{session/utils/helpers.ts → services/session-data.ts} +90 -80
- package/src/{session → services}/session-telemetry.ts +7 -9
- package/src/services/storage/artifact-store.ts +1 -0
- package/src/{storage → services/storage}/file-team-store.ts +2 -2
- package/src/{storage → services/storage}/provider-settings-legacy-migration.ts +6 -4
- package/src/{storage → services/storage}/provider-settings-manager.ts +3 -3
- package/src/services/storage/session-store.ts +1 -0
- package/src/{storage → services/storage}/sqlite-session-store.ts +7 -12
- package/src/{storage → services/storage}/sqlite-team-store.ts +4 -4
- package/src/{storage → services/storage}/team-store.ts +1 -1
- package/src/{session/utils → services}/usage.ts +1 -1
- package/src/{input → services/workspace}/file-indexer.ts +26 -2
- package/src/{input → services/workspace}/mention-enricher.ts +1 -1
- package/src/{session → services}/workspace-manifest.ts +18 -0
- package/src/session/file-session-service.ts +10 -8
- package/src/session/index.ts +10 -23
- package/src/session/persistence-service.ts +144 -528
- package/src/session/session-manifest-store.ts +158 -0
- package/src/session/session-row.ts +199 -0
- package/src/session/session-service.ts +43 -389
- package/src/session/session-team-coordination.ts +14 -7
- package/src/session/subagent-session-manager.ts +397 -0
- package/src/session/team-persistence-store.ts +176 -0
- package/src/session/workspace-manager.ts +1 -1
- package/src/transports/hub.ts +656 -0
- package/src/{session/default-session-manager.ts → transports/local.ts} +263 -200
- package/src/transports/remote.ts +26 -0
- package/src/transports/runtime-host-support.ts +140 -0
- package/src/{chat → types}/chat-schema.ts +4 -5
- package/src/types/config.ts +10 -9
- package/src/types/provider-settings.ts +11 -7
- package/src/{session/utils/types.ts → types/session.ts} +16 -5
- package/src/types/sessions.ts +21 -0
- package/src/types/storage.ts +1 -6
- package/src/types.ts +52 -19
- package/dist/chat/chat-schema.d.ts.map +0 -1
- package/dist/hooks/persistent.d.ts +0 -64
- package/dist/hooks/persistent.d.ts.map +0 -1
- package/dist/input/file-indexer.d.ts.map +0 -1
- package/dist/input/index.d.ts.map +0 -1
- package/dist/input/mention-enricher.d.ts.map +0 -1
- package/dist/prompt/default-system.d.ts +0 -2
- package/dist/prompt/default-system.d.ts.map +0 -1
- package/dist/providers/local-provider-registry.d.ts.map +0 -1
- package/dist/providers/local-provider-service.d.ts.map +0 -1
- package/dist/runtime/checkpoint-hooks.d.ts.map +0 -1
- package/dist/runtime/hook-file-hooks.d.ts.map +0 -1
- package/dist/session/default-session-manager.d.ts.map +0 -1
- package/dist/session/rpc-runtime-ensure.d.ts +0 -53
- package/dist/session/rpc-runtime-ensure.d.ts.map +0 -1
- package/dist/session/rpc-session-service.d.ts +0 -13
- package/dist/session/rpc-session-service.d.ts.map +0 -1
- package/dist/session/rpc-spawn-lease.d.ts +0 -8
- package/dist/session/rpc-spawn-lease.d.ts.map +0 -1
- package/dist/session/session-agent-events.d.ts.map +0 -1
- package/dist/session/session-artifacts.d.ts.map +0 -1
- package/dist/session/session-config-builder.d.ts +0 -16
- package/dist/session/session-config-builder.d.ts.map +0 -1
- package/dist/session/session-host.d.ts +0 -15
- package/dist/session/session-host.d.ts.map +0 -1
- package/dist/session/session-manager.d.ts +0 -62
- package/dist/session/session-manager.d.ts.map +0 -1
- package/dist/session/session-telemetry.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/session/utils/helpers.d.ts.map +0 -1
- package/dist/session/utils/types.d.ts.map +0 -1
- package/dist/session/utils/usage.d.ts.map +0 -1
- package/dist/session/workspace-manifest.d.ts +0 -5
- package/dist/session/workspace-manifest.d.ts.map +0 -1
- package/dist/storage/file-team-store.d.ts.map +0 -1
- package/dist/storage/provider-settings-legacy-migration.d.ts.map +0 -1
- package/dist/storage/provider-settings-manager.d.ts.map +0 -1
- package/dist/storage/sqlite-session-store.d.ts.map +0 -1
- package/dist/storage/sqlite-team-store.d.ts.map +0 -1
- package/dist/storage/team-store.d.ts.map +0 -1
- package/dist/team/delegated-agent.d.ts.map +0 -1
- package/dist/team/index.d.ts.map +0 -1
- package/dist/team/multi-agent.d.ts.map +0 -1
- package/dist/team/projections.d.ts.map +0 -1
- package/dist/team/runtime.d.ts.map +0 -1
- package/dist/team/spawn-agent-tool.d.ts.map +0 -1
- package/dist/team/subagent-prompts.d.ts.map +0 -1
- package/dist/team/team-tools.d.ts.map +0 -1
- package/dist/telemetry/ITelemetryAdapter.d.ts.map +0 -1
- package/dist/telemetry/OpenTelemetryAdapter.d.ts.map +0 -1
- package/dist/telemetry/OpenTelemetryProvider.d.ts.map +0 -1
- package/dist/telemetry/TelemetryLoggerSink.d.ts.map +0 -1
- package/dist/telemetry/TelemetryService.d.ts.map +0 -1
- package/dist/telemetry/core-events.d.ts.map +0 -1
- package/dist/telemetry/distinct-id.d.ts.map +0 -1
- package/dist/telemetry/index.d.ts.map +0 -1
- package/dist/telemetry/index.js +0 -15
- package/dist/tools/constants.d.ts.map +0 -1
- package/dist/tools/definitions.d.ts.map +0 -1
- package/dist/tools/executors/apply-patch-parser.d.ts.map +0 -1
- package/dist/tools/executors/apply-patch.d.ts.map +0 -1
- package/dist/tools/executors/bash.d.ts.map +0 -1
- package/dist/tools/executors/editor.d.ts.map +0 -1
- package/dist/tools/executors/file-read.d.ts.map +0 -1
- package/dist/tools/executors/index.d.ts.map +0 -1
- package/dist/tools/executors/search.d.ts.map +0 -1
- package/dist/tools/executors/web-fetch.d.ts.map +0 -1
- package/dist/tools/helpers.d.ts.map +0 -1
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/model-tool-routing.d.ts.map +0 -1
- package/dist/tools/presets.d.ts.map +0 -1
- package/dist/tools/schemas.d.ts.map +0 -1
- package/dist/tools/types.d.ts.map +0 -1
- package/src/ClineCore.test.ts +0 -150
- 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 -182
- package/src/extensions/plugin/plugin-loader.test.ts +0 -292
- package/src/extensions/plugin/plugin-sandbox.test.ts +0 -423
- package/src/hooks/persistent.ts +0 -661
- package/src/input/file-indexer.d.ts +0 -11
- package/src/input/file-indexer.test.ts +0 -127
- package/src/input/mention-enricher.test.ts +0 -85
- package/src/prompt/default-system.ts +0 -21
- package/src/providers/local-provider-service.test.ts +0 -1062
- package/src/runtime/checkpoint-hooks.test.ts +0 -168
- package/src/runtime/hook-file-hooks.test.ts +0 -311
- package/src/runtime/runtime-builder.team-persistence.test.ts +0 -242
- package/src/runtime/runtime-builder.test.ts +0 -616
- package/src/runtime/runtime-parity.test.ts +0 -143
- package/src/session/default-session-manager.e2e.test.ts +0 -384
- package/src/session/default-session-manager.test.ts +0 -2473
- package/src/session/persistence-service.test.ts +0 -241
- package/src/session/rpc-runtime-ensure.ts +0 -521
- package/src/session/rpc-session-service.ts +0 -107
- package/src/session/rpc-spawn-lease.test.ts +0 -49
- package/src/session/rpc-spawn-lease.ts +0 -122
- package/src/session/runtime-oauth-token-manager.test.ts +0 -137
- package/src/session/session-config-builder.ts +0 -172
- package/src/session/session-host.test.ts +0 -89
- package/src/session/session-host.ts +0 -213
- package/src/session/session-manager.ts +0 -74
- package/src/session/session-service.team-persistence.test.ts +0 -48
- package/src/session/sqlite-rpc-session-backend.ts +0 -303
- package/src/session/utils/helpers.test.ts +0 -160
- package/src/storage/artifact-store.ts +0 -1
- package/src/storage/provider-settings-legacy-migration.test.ts +0 -424
- package/src/storage/provider-settings-manager.test.ts +0 -191
- package/src/storage/session-store.ts +0 -1
- package/src/team/multi-agent.lifecycle.test.ts +0 -201
- package/src/team/spawn-agent-tool.test.ts +0 -387
- package/src/team/team-tools.test.ts +0 -906
- package/src/telemetry/OpenTelemetryAdapter.test.ts +0 -157
- package/src/telemetry/OpenTelemetryProvider.test.ts +0 -326
- package/src/telemetry/TelemetryLoggerSink.test.ts +0 -42
- package/src/telemetry/TelemetryService.test.ts +0 -134
- package/src/telemetry/distinct-id.test.ts +0 -57
- package/src/tools/definitions.test.ts +0 -780
- package/src/tools/executors/bash.test.ts +0 -87
- package/src/tools/executors/editor.test.ts +0 -35
- package/src/tools/executors/file-read.test.ts +0 -49
- package/src/tools/model-tool-routing.test.ts +0 -86
- package/src/tools/presets.test.ts +0 -70
- /package/dist/{tools → extensions/tools}/constants.d.ts +0 -0
- /package/dist/{tools → extensions/tools}/executors/apply-patch-parser.d.ts +0 -0
- /package/dist/{tools → extensions/tools}/executors/bash.d.ts +0 -0
- /package/dist/{tools → extensions/tools}/executors/editor.d.ts +0 -0
- /package/dist/{tools → extensions/tools}/executors/file-read.d.ts +0 -0
- /package/dist/{tools → extensions/tools}/executors/index.d.ts +0 -0
- /package/dist/{tools → extensions/tools}/executors/web-fetch.d.ts +0 -0
- /package/dist/{tools → extensions/tools}/helpers.d.ts +0 -0
- /package/dist/{tools → extensions/tools}/schemas.d.ts +0 -0
- /package/dist/{team → extensions/tools/team}/delegated-agent.d.ts +0 -0
- /package/dist/{team → extensions/tools/team}/index.d.ts +0 -0
- /package/dist/{team → extensions/tools/team}/projections.d.ts +0 -0
- /package/dist/{team → extensions/tools/team}/runtime.d.ts +0 -0
- /package/dist/{team → extensions/tools/team}/subagent-prompts.d.ts +0 -0
- /package/dist/{telemetry → services/telemetry}/ITelemetryAdapter.d.ts +0 -0
- /package/dist/{telemetry → services/telemetry}/OpenTelemetryAdapter.d.ts +0 -0
- /package/dist/{telemetry → services/telemetry}/OpenTelemetryProvider.d.ts +0 -0
- /package/dist/{telemetry → services/telemetry}/TelemetryLoggerSink.d.ts +0 -0
- /package/dist/{telemetry → services/telemetry}/TelemetryService.d.ts +0 -0
- /package/dist/{telemetry → services/telemetry}/core-events.d.ts +0 -0
- /package/dist/{telemetry → services/telemetry}/distinct-id.d.ts +0 -0
- /package/dist/{telemetry → services/telemetry}/index.d.ts +0 -0
- /package/dist/{input → services/workspace}/file-indexer.d.ts +0 -0
- /package/dist/{input → services/workspace}/index.d.ts +0 -0
- /package/dist/{input → services/workspace}/mention-enricher.d.ts +0 -0
- /package/src/{tools → extensions/tools}/constants.ts +0 -0
- /package/src/{tools → extensions/tools}/executors/apply-patch-parser.ts +0 -0
- /package/src/{tools → extensions/tools}/executors/bash.ts +0 -0
- /package/src/{tools → extensions/tools}/executors/editor.ts +0 -0
- /package/src/{tools → extensions/tools}/executors/index.ts +0 -0
- /package/src/{tools → extensions/tools}/executors/web-fetch.ts +0 -0
- /package/src/{tools → extensions/tools}/helpers.ts +0 -0
- /package/src/{team → extensions/tools/team}/delegated-agent.ts +0 -0
- /package/src/{team → extensions/tools/team}/index.ts +0 -0
- /package/src/{team → extensions/tools/team}/projections.ts +0 -0
- /package/src/{team → extensions/tools/team}/runtime.ts +0 -0
- /package/src/{storage → services/storage}/index.ts +0 -0
- /package/src/{telemetry → services/telemetry}/ITelemetryAdapter.ts +0 -0
- /package/src/{telemetry → services/telemetry}/OpenTelemetryAdapter.ts +0 -0
- /package/src/{telemetry → services/telemetry}/OpenTelemetryProvider.ts +0 -0
- /package/src/{telemetry → services/telemetry}/TelemetryLoggerSink.ts +0 -0
- /package/src/{telemetry → services/telemetry}/TelemetryService.ts +0 -0
- /package/src/{telemetry → services/telemetry}/core-events.ts +0 -0
- /package/src/{telemetry → services/telemetry}/distinct-id.ts +0 -0
- /package/src/{telemetry → services/telemetry}/index.ts +0 -0
- /package/src/{input → services/workspace}/index.ts +0 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
2
1
|
import { readFile, stat } from "node:fs/promises";
|
|
3
2
|
import { homedir } from "node:os";
|
|
4
3
|
import { isAbsolute, join, resolve } from "node:path";
|
|
@@ -19,68 +18,72 @@ import {
|
|
|
19
18
|
import { setHomeDirIfUnset } from "@clinebot/shared/storage";
|
|
20
19
|
import { nanoid } from "nanoid";
|
|
21
20
|
import { createContextCompactionPrepareTurn } from "../extensions/context/compaction";
|
|
22
|
-
import { enrichPromptWithMentions } from "../input";
|
|
23
|
-
import { createCheckpointHooks } from "../runtime/checkpoint-hooks";
|
|
24
|
-
import { mergeAgentHooks } from "../runtime/hook-file-hooks";
|
|
25
|
-
import { DefaultRuntimeBuilder } from "../runtime/runtime-builder";
|
|
26
|
-
import type { RuntimeBuilder } from "../runtime/session-runtime";
|
|
27
|
-
import { ProviderSettingsManager } from "../storage/provider-settings-manager";
|
|
28
|
-
import { createSpawnAgentTool, type TeamEvent } from "../team";
|
|
29
|
-
import {
|
|
30
|
-
captureAgentCreated,
|
|
31
|
-
captureAgentTeamCreated,
|
|
32
|
-
captureConversationTurnEvent,
|
|
33
|
-
captureModeSwitch,
|
|
34
|
-
captureSubagentExecution,
|
|
35
|
-
captureTaskCompleted,
|
|
36
|
-
} from "../telemetry/core-events";
|
|
37
|
-
import { resolveCoreDistinctId } from "../telemetry/distinct-id";
|
|
38
21
|
import {
|
|
39
22
|
createBuiltinTools,
|
|
40
23
|
resolveToolPresetName,
|
|
41
24
|
type ToolExecutors,
|
|
42
25
|
ToolPresets,
|
|
43
|
-
} from "../tools";
|
|
44
|
-
import {
|
|
45
|
-
import type {
|
|
46
|
-
import
|
|
47
|
-
import type {
|
|
48
|
-
|
|
49
|
-
|
|
26
|
+
} from "../extensions/tools";
|
|
27
|
+
import { createSpawnAgentTool, type TeamEvent } from "../extensions/tools/team";
|
|
28
|
+
import type { HookEventPayload } from "../hooks";
|
|
29
|
+
import { DefaultRuntimeBuilder } from "../runtime/runtime-builder";
|
|
30
|
+
import type {
|
|
31
|
+
RuntimeHost,
|
|
32
|
+
RuntimeHostSubscribeOptions,
|
|
33
|
+
SendSessionInput,
|
|
34
|
+
SessionAccumulatedUsage,
|
|
35
|
+
StartSessionInput,
|
|
36
|
+
StartSessionResult,
|
|
37
|
+
} from "../runtime/runtime-host";
|
|
50
38
|
import {
|
|
51
39
|
OAuthReauthRequiredError,
|
|
52
40
|
type RuntimeOAuthResolution,
|
|
53
41
|
RuntimeOAuthTokenManager,
|
|
54
|
-
} from "
|
|
42
|
+
} from "../runtime/runtime-oauth-token-manager";
|
|
43
|
+
import type { RuntimeBuilder } from "../runtime/session-runtime";
|
|
55
44
|
import {
|
|
56
45
|
type AgentEventContext,
|
|
57
46
|
buildTelemetryAgentIdentity,
|
|
58
47
|
extractAgentEventMetadata,
|
|
59
48
|
handleAgentEvent,
|
|
60
|
-
} from "
|
|
61
|
-
import {
|
|
49
|
+
} from "../services/agent-events";
|
|
50
|
+
import { resolveWorkspacePath } from "../services/config";
|
|
51
|
+
import { filterDisabledTools } from "../services/global-settings";
|
|
52
|
+
import { prepareLocalRuntimeBootstrap } from "../services/local-runtime-bootstrap";
|
|
53
|
+
import { nowIso } from "../services/session-artifacts";
|
|
62
54
|
import {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
55
|
+
toSessionRecord,
|
|
56
|
+
withLatestAssistantTurnMetadata,
|
|
57
|
+
} from "../services/session-data";
|
|
58
|
+
import {
|
|
59
|
+
emitMentionTelemetry,
|
|
60
|
+
emitSessionCreationTelemetry,
|
|
61
|
+
} from "../services/session-telemetry";
|
|
62
|
+
import { ProviderSettingsManager } from "../services/storage/provider-settings-manager";
|
|
63
|
+
import {
|
|
64
|
+
captureAgentCreated,
|
|
65
|
+
captureAgentTeamCreated,
|
|
66
|
+
captureConversationTurnEvent,
|
|
67
|
+
captureModeSwitch,
|
|
68
|
+
captureSubagentExecution,
|
|
69
|
+
captureTaskCompleted,
|
|
70
|
+
} from "../services/telemetry/core-events";
|
|
71
|
+
import { resolveCoreDistinctId } from "../services/telemetry/distinct-id";
|
|
72
|
+
import {
|
|
73
|
+
accumulateUsageTotals,
|
|
74
|
+
createInitialAccumulatedUsage,
|
|
75
|
+
} from "../services/usage";
|
|
76
|
+
import { enrichPromptWithMentions } from "../services/workspace";
|
|
77
|
+
import type { FileSessionService } from "../session/file-session-service";
|
|
75
78
|
import {
|
|
76
79
|
type SessionManifest,
|
|
77
80
|
SessionManifestSchema,
|
|
78
|
-
} from "
|
|
81
|
+
} from "../session/session-manifest";
|
|
82
|
+
import type { SessionRow } from "../session/session-row";
|
|
79
83
|
import type {
|
|
80
84
|
CoreSessionService,
|
|
81
85
|
RootSessionArtifacts,
|
|
82
|
-
|
|
83
|
-
} from "./session-service";
|
|
86
|
+
} from "../session/session-service";
|
|
84
87
|
import {
|
|
85
88
|
buildTeamRunContinuationPrompt,
|
|
86
89
|
dispatchTeamEventToBackend,
|
|
@@ -91,26 +94,20 @@ import {
|
|
|
91
94
|
shouldAutoContinueTeamRuns,
|
|
92
95
|
trackTeamRunState,
|
|
93
96
|
waitForTeamRunUpdates,
|
|
94
|
-
} from "
|
|
95
|
-
import {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
} from "
|
|
99
|
-
import {
|
|
100
|
-
toSessionRecord,
|
|
101
|
-
withLatestAssistantTurnMetadata,
|
|
102
|
-
} from "./utils/helpers";
|
|
103
|
-
import type { ActiveSession, PreparedTurnInput } from "./utils/types";
|
|
97
|
+
} from "../session/session-team-coordination";
|
|
98
|
+
import { SessionSource, type SessionStatus } from "../types/common";
|
|
99
|
+
import type { CoreSessionConfig } from "../types/config";
|
|
100
|
+
import type { CoreSessionEvent } from "../types/events";
|
|
101
|
+
import type { ActiveSession, PreparedTurnInput } from "../types/session";
|
|
102
|
+
import type { SessionRecord } from "../types/sessions";
|
|
104
103
|
import {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
104
|
+
cloneAccumulatedUsage,
|
|
105
|
+
RuntimeHostEventBus,
|
|
106
|
+
readPersistedMessagesFile,
|
|
107
|
+
replaySubagentHookEvent,
|
|
108
|
+
} from "./runtime-host-support";
|
|
109
109
|
|
|
110
|
-
type SessionBackend =
|
|
111
|
-
| CoreSessionService
|
|
112
|
-
| RpcCoreSessionService
|
|
113
|
-
| FileSessionService;
|
|
110
|
+
type SessionBackend = CoreSessionService | FileSessionService;
|
|
114
111
|
|
|
115
112
|
const MAX_SCAN_LIMIT = 5000;
|
|
116
113
|
const MAX_USER_FILE_BYTES = 20 * 1_000 * 1_024;
|
|
@@ -130,7 +127,52 @@ async function loadUserFileContent(path: string): Promise<string> {
|
|
|
130
127
|
return content;
|
|
131
128
|
}
|
|
132
129
|
|
|
133
|
-
|
|
130
|
+
function toActiveSessionRecord(session: ActiveSession): SessionRecord {
|
|
131
|
+
return {
|
|
132
|
+
sessionId: session.sessionId,
|
|
133
|
+
source: session.source,
|
|
134
|
+
pid: process.pid,
|
|
135
|
+
startedAt: session.startedAt,
|
|
136
|
+
endedAt: null,
|
|
137
|
+
exitCode: null,
|
|
138
|
+
status: "running",
|
|
139
|
+
interactive: session.interactive,
|
|
140
|
+
provider: session.config.providerId,
|
|
141
|
+
model: session.config.modelId,
|
|
142
|
+
cwd: session.config.cwd,
|
|
143
|
+
workspaceRoot: resolveWorkspacePath(session.config),
|
|
144
|
+
teamName: session.config.teamName?.trim() || undefined,
|
|
145
|
+
enableTools: session.config.enableTools,
|
|
146
|
+
enableSpawn: session.config.enableSpawnAgent,
|
|
147
|
+
enableTeams: session.config.enableAgentTeams,
|
|
148
|
+
parentSessionId:
|
|
149
|
+
typeof session.sessionMetadata?.parentSessionId === "string"
|
|
150
|
+
? session.sessionMetadata.parentSessionId
|
|
151
|
+
: undefined,
|
|
152
|
+
parentAgentId:
|
|
153
|
+
typeof session.sessionMetadata?.parentAgentId === "string"
|
|
154
|
+
? session.sessionMetadata.parentAgentId
|
|
155
|
+
: undefined,
|
|
156
|
+
agentId:
|
|
157
|
+
typeof session.sessionMetadata?.agentId === "string"
|
|
158
|
+
? session.sessionMetadata.agentId
|
|
159
|
+
: undefined,
|
|
160
|
+
conversationId:
|
|
161
|
+
typeof session.sessionMetadata?.conversationId === "string"
|
|
162
|
+
? session.sessionMetadata.conversationId
|
|
163
|
+
: undefined,
|
|
164
|
+
isSubagent:
|
|
165
|
+
typeof session.sessionMetadata?.isSubagent === "boolean"
|
|
166
|
+
? session.sessionMetadata.isSubagent
|
|
167
|
+
: false,
|
|
168
|
+
prompt: session.pendingPrompt,
|
|
169
|
+
metadata: session.sessionMetadata,
|
|
170
|
+
messagesPath: session.artifacts?.messagesPath,
|
|
171
|
+
updatedAt: session.startedAt,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export interface LocalRuntimeHostOptions {
|
|
134
176
|
distinctId?: string;
|
|
135
177
|
sessionService: SessionBackend;
|
|
136
178
|
runtimeBuilder?: RuntimeBuilder;
|
|
@@ -143,9 +185,16 @@ export interface DefaultSessionManagerOptions {
|
|
|
143
185
|
requestToolApproval?: (
|
|
144
186
|
request: ToolApprovalRequest,
|
|
145
187
|
) => Promise<ToolApprovalResult>;
|
|
188
|
+
/**
|
|
189
|
+
* Default custom `fetch` implementation threaded into every
|
|
190
|
+
* `ProviderConfig.fetch` built during local session bootstrap. Used by
|
|
191
|
+
* the AI gateway providers when issuing HTTP requests.
|
|
192
|
+
*/
|
|
193
|
+
fetch?: typeof fetch;
|
|
146
194
|
}
|
|
147
195
|
|
|
148
|
-
export class
|
|
196
|
+
export class LocalRuntimeHost implements RuntimeHost {
|
|
197
|
+
public readonly runtimeAddress = undefined;
|
|
149
198
|
private readonly sessionService: SessionBackend;
|
|
150
199
|
private readonly runtimeBuilder: RuntimeBuilder;
|
|
151
200
|
private readonly createAgentInstance: (config: AgentConfig) => Agent;
|
|
@@ -154,10 +203,11 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
154
203
|
private readonly providerSettingsManager: ProviderSettingsManager;
|
|
155
204
|
private readonly oauthTokenManager: RuntimeOAuthTokenManager;
|
|
156
205
|
private readonly defaultTelemetry?: ITelemetryService;
|
|
206
|
+
private readonly defaultFetch?: typeof fetch;
|
|
157
207
|
private readonly defaultRequestToolApproval?: (
|
|
158
208
|
request: ToolApprovalRequest,
|
|
159
209
|
) => Promise<ToolApprovalResult>;
|
|
160
|
-
private readonly
|
|
210
|
+
private readonly events = new RuntimeHostEventBus();
|
|
161
211
|
private readonly sessions = new Map<string, ActiveSession>();
|
|
162
212
|
private readonly usageBySession = new Map<string, SessionAccumulatedUsage>();
|
|
163
213
|
private readonly subAgentStarts = new Map<
|
|
@@ -165,7 +215,7 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
165
215
|
{ startedAt: number; rootSessionId: string }
|
|
166
216
|
>();
|
|
167
217
|
|
|
168
|
-
constructor(options:
|
|
218
|
+
constructor(options: LocalRuntimeHostOptions) {
|
|
169
219
|
const homeDir = homedir();
|
|
170
220
|
if (homeDir) setHomeDirIfUnset(homeDir);
|
|
171
221
|
const distinctId = resolveCoreDistinctId(options.distinctId);
|
|
@@ -185,6 +235,7 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
185
235
|
});
|
|
186
236
|
this.defaultTelemetry = options.telemetry;
|
|
187
237
|
this.defaultTelemetry?.setDistinctId(distinctId);
|
|
238
|
+
this.defaultFetch = options.fetch;
|
|
188
239
|
this.defaultRequestToolApproval = options.requestToolApproval;
|
|
189
240
|
}
|
|
190
241
|
|
|
@@ -195,21 +246,7 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
195
246
|
const startedAt = nowIso();
|
|
196
247
|
const requestedSessionId = input.config.sessionId?.trim() ?? "";
|
|
197
248
|
const sessionId = requestedSessionId || createSessionId();
|
|
198
|
-
const
|
|
199
|
-
? await this.getRow(sessionId)
|
|
200
|
-
: undefined;
|
|
201
|
-
const startInput: StartSessionInput =
|
|
202
|
-
resumedRow &&
|
|
203
|
-
!input.config.teamName?.trim() &&
|
|
204
|
-
resumedRow.teamName?.trim()
|
|
205
|
-
? {
|
|
206
|
-
...input,
|
|
207
|
-
config: {
|
|
208
|
-
...input.config,
|
|
209
|
-
teamName: resumedRow.teamName,
|
|
210
|
-
},
|
|
211
|
-
}
|
|
212
|
-
: input;
|
|
249
|
+
const startInput: StartSessionInput = input;
|
|
213
250
|
this.usageBySession.set(sessionId, createInitialAccumulatedUsage());
|
|
214
251
|
|
|
215
252
|
const sessionsDir =
|
|
@@ -223,8 +260,6 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
223
260
|
}
|
|
224
261
|
|
|
225
262
|
const sessionDir = join(sessionsDir, sessionId);
|
|
226
|
-
const transcriptPath = join(sessionDir, `${sessionId}.log`);
|
|
227
|
-
const hookPath = join(sessionDir, `${sessionId}.hooks.jsonl`);
|
|
228
263
|
const messagesPath = join(sessionDir, `${sessionId}.messages.json`);
|
|
229
264
|
const manifestPath = join(sessionDir, `${sessionId}.json`);
|
|
230
265
|
const workspacePath = resolveWorkspacePath(input.config);
|
|
@@ -249,64 +284,39 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
249
284
|
messages_path: messagesPath,
|
|
250
285
|
});
|
|
251
286
|
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
this.
|
|
266
|
-
resolveReasoningSettings,
|
|
267
|
-
);
|
|
268
|
-
const configWithProvider: CoreSessionConfig = {
|
|
269
|
-
...effectiveConfig,
|
|
270
|
-
providerConfig,
|
|
271
|
-
workspaceMetadata,
|
|
272
|
-
};
|
|
273
|
-
configWithProvider.hooks = mergeAgentHooks([
|
|
274
|
-
effectiveConfig.hooks,
|
|
275
|
-
effectiveConfig.checkpoint?.enabled === true
|
|
276
|
-
? createCheckpointHooks({
|
|
277
|
-
cwd: configWithProvider.cwd,
|
|
278
|
-
sessionId,
|
|
279
|
-
logger: configWithProvider.logger,
|
|
280
|
-
createCheckpoint: effectiveConfig.checkpoint?.createCheckpoint,
|
|
281
|
-
readSessionMetadata: async () =>
|
|
282
|
-
(await this.get(sessionId))?.metadata as
|
|
283
|
-
| Record<string, unknown>
|
|
284
|
-
| undefined,
|
|
285
|
-
writeSessionMetadata: async (metadata) => {
|
|
286
|
-
await this.persistSessionMetadata(sessionId, () => metadata);
|
|
287
|
-
},
|
|
288
|
-
})
|
|
289
|
-
: undefined,
|
|
290
|
-
]);
|
|
291
|
-
|
|
292
|
-
const runtime = await this.runtimeBuilder.build({
|
|
293
|
-
config: configWithProvider,
|
|
294
|
-
hooks: configWithProvider.hooks,
|
|
295
|
-
extensions: effectiveConfig.extensions,
|
|
296
|
-
logger: configWithProvider.logger,
|
|
297
|
-
telemetry: configWithProvider.telemetry,
|
|
287
|
+
const sessionToolExecutors =
|
|
288
|
+
input.localRuntime?.defaultToolExecutors ?? this.defaultToolExecutors;
|
|
289
|
+
let bootstrap!: Awaited<ReturnType<typeof prepareLocalRuntimeBootstrap>>;
|
|
290
|
+
bootstrap = await prepareLocalRuntimeBootstrap({
|
|
291
|
+
input: startInput,
|
|
292
|
+
localRuntime: input.localRuntime,
|
|
293
|
+
sessionId,
|
|
294
|
+
providerSettingsManager: this.providerSettingsManager,
|
|
295
|
+
defaultTelemetry: this.defaultTelemetry,
|
|
296
|
+
defaultToolExecutors: sessionToolExecutors,
|
|
297
|
+
defaultToolPolicies: this.defaultToolPolicies,
|
|
298
|
+
defaultRequestToolApproval: this.defaultRequestToolApproval,
|
|
299
|
+
defaultFetch: this.defaultFetch,
|
|
300
|
+
onPluginEvent: (event) => void this.handlePluginEvent(sessionId, event),
|
|
298
301
|
onTeamEvent: (event: TeamEvent) => {
|
|
299
302
|
void this.handleTeamEvent(sessionId, event);
|
|
300
|
-
|
|
303
|
+
bootstrap.config.onTeamEvent?.(event);
|
|
301
304
|
},
|
|
302
305
|
createSpawnTool: () =>
|
|
303
|
-
this.createSpawnTool(
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
306
|
+
this.createSpawnTool(bootstrap.config, sessionId, sessionToolExecutors),
|
|
307
|
+
readSessionMetadata: async () =>
|
|
308
|
+
(await this.get(sessionId))?.metadata as
|
|
309
|
+
| Record<string, unknown>
|
|
310
|
+
| undefined,
|
|
311
|
+
writeSessionMetadata: async (metadata) => {
|
|
312
|
+
await this.persistSessionMetadata(sessionId, () => metadata);
|
|
313
|
+
},
|
|
309
314
|
});
|
|
315
|
+
const runtime = await this.runtimeBuilder.build(
|
|
316
|
+
bootstrap.runtimeBuilderInput,
|
|
317
|
+
);
|
|
318
|
+
const configWithProvider = bootstrap.config;
|
|
319
|
+
const providerConfig = bootstrap.providerConfig;
|
|
310
320
|
if (runtime.teamRuntime && !configWithProvider.teamName?.trim()) {
|
|
311
321
|
configWithProvider.teamName = runtime.teamRuntime.getTeamName();
|
|
312
322
|
}
|
|
@@ -329,14 +339,13 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
329
339
|
execution: configWithProvider.execution,
|
|
330
340
|
prepareTurn: createContextCompactionPrepareTurn(configWithProvider),
|
|
331
341
|
tools,
|
|
332
|
-
hooks:
|
|
333
|
-
extensions:
|
|
342
|
+
hooks: bootstrap.hooks,
|
|
343
|
+
extensions: bootstrap.extensions,
|
|
334
344
|
hookErrorMode: configWithProvider.hookErrorMode,
|
|
335
|
-
initialMessages:
|
|
345
|
+
initialMessages: bootstrap.effectiveInput.initialMessages,
|
|
336
346
|
userFileContentLoader: loadUserFileContent,
|
|
337
|
-
toolPolicies:
|
|
338
|
-
requestToolApproval:
|
|
339
|
-
input.requestToolApproval ?? this.defaultRequestToolApproval,
|
|
347
|
+
toolPolicies: bootstrap.toolPolicies,
|
|
348
|
+
requestToolApproval: bootstrap.requestToolApproval,
|
|
340
349
|
onConsecutiveMistakeLimitReached:
|
|
341
350
|
configWithProvider.onConsecutiveMistakeLimitReached,
|
|
342
351
|
completionGuard: runtime.completionGuard,
|
|
@@ -384,6 +393,7 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
384
393
|
const active: ActiveSession = {
|
|
385
394
|
sessionId,
|
|
386
395
|
config: configWithProvider,
|
|
396
|
+
sessionMetadata: startInput.sessionMetadata,
|
|
387
397
|
source,
|
|
388
398
|
startedAt,
|
|
389
399
|
pendingPrompt: manifest.prompt,
|
|
@@ -398,7 +408,7 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
398
408
|
teamRunWaiters: [],
|
|
399
409
|
pendingPrompts: [],
|
|
400
410
|
drainingPendingPrompts: false,
|
|
401
|
-
pluginSandboxShutdown,
|
|
411
|
+
pluginSandboxShutdown: bootstrap.pluginSandboxShutdown,
|
|
402
412
|
};
|
|
403
413
|
this.sessions.set(sessionId, active);
|
|
404
414
|
this.emitStatus(sessionId, "running");
|
|
@@ -424,8 +434,6 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
424
434
|
sessionId,
|
|
425
435
|
manifest,
|
|
426
436
|
manifestPath,
|
|
427
|
-
transcriptPath,
|
|
428
|
-
hookPath,
|
|
429
437
|
messagesPath,
|
|
430
438
|
result,
|
|
431
439
|
};
|
|
@@ -433,6 +441,18 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
433
441
|
|
|
434
442
|
async send(input: SendSessionInput): Promise<AgentResult | undefined> {
|
|
435
443
|
const session = this.getSessionOrThrow(input.sessionId);
|
|
444
|
+
const canStartRun =
|
|
445
|
+
typeof (session.agent as Agent & { canStartRun?: () => boolean })
|
|
446
|
+
.canStartRun === "function"
|
|
447
|
+
? (
|
|
448
|
+
session.agent as Agent & {
|
|
449
|
+
canStartRun: () => boolean;
|
|
450
|
+
}
|
|
451
|
+
).canStartRun()
|
|
452
|
+
: true;
|
|
453
|
+
const delivery =
|
|
454
|
+
input.delivery ??
|
|
455
|
+
(session.interactive && !canStartRun ? ("queue" as const) : undefined);
|
|
436
456
|
session.config.telemetry?.capture({
|
|
437
457
|
event: "session.input_sent",
|
|
438
458
|
properties: {
|
|
@@ -440,13 +460,13 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
440
460
|
promptLength: input.prompt.length,
|
|
441
461
|
userImageCount: input.userImages?.length ?? 0,
|
|
442
462
|
userFileCount: input.userFiles?.length ?? 0,
|
|
443
|
-
delivery:
|
|
463
|
+
delivery: delivery ?? "immediate",
|
|
444
464
|
},
|
|
445
465
|
});
|
|
446
|
-
if (
|
|
466
|
+
if (delivery === "queue" || delivery === "steer") {
|
|
447
467
|
this.enqueuePendingPrompt(input.sessionId, {
|
|
448
468
|
prompt: input.prompt,
|
|
449
|
-
delivery
|
|
469
|
+
delivery,
|
|
450
470
|
userImages: input.userImages,
|
|
451
471
|
userFiles: input.userFiles,
|
|
452
472
|
});
|
|
@@ -474,8 +494,7 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
474
494
|
async getAccumulatedUsage(
|
|
475
495
|
sessionId: string,
|
|
476
496
|
): Promise<SessionAccumulatedUsage | undefined> {
|
|
477
|
-
|
|
478
|
-
return usage ? { ...usage } : undefined;
|
|
497
|
+
return cloneAccumulatedUsage(this.usageBySession.get(sessionId));
|
|
479
498
|
}
|
|
480
499
|
|
|
481
500
|
async abort(sessionId: string, reason?: unknown): Promise<void> {
|
|
@@ -486,6 +505,10 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
486
505
|
properties: { sessionId },
|
|
487
506
|
});
|
|
488
507
|
session.aborting = true;
|
|
508
|
+
if (session.pendingPrompts.length > 0) {
|
|
509
|
+
session.pendingPrompts.length = 0;
|
|
510
|
+
this.emitPendingPrompts(session);
|
|
511
|
+
}
|
|
489
512
|
(
|
|
490
513
|
session.agent as Agent & {
|
|
491
514
|
abort: (abortReason?: unknown) => void;
|
|
@@ -532,13 +555,25 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
532
555
|
}
|
|
533
556
|
|
|
534
557
|
async get(sessionId: string): Promise<SessionRecord | undefined> {
|
|
558
|
+
const active = this.sessions.get(sessionId);
|
|
559
|
+
if (active) {
|
|
560
|
+
return toActiveSessionRecord(active);
|
|
561
|
+
}
|
|
535
562
|
const row = await this.getRow(sessionId);
|
|
536
563
|
return row ? toSessionRecord(row) : undefined;
|
|
537
564
|
}
|
|
538
565
|
|
|
539
566
|
async list(limit = 200): Promise<SessionRecord[]> {
|
|
540
567
|
const rows = await this.listRows(limit);
|
|
541
|
-
|
|
568
|
+
const persisted = rows.map(toSessionRecord);
|
|
569
|
+
const seen = new Set(persisted.map((row) => row.sessionId));
|
|
570
|
+
for (const active of this.sessions.values()) {
|
|
571
|
+
if (seen.has(active.sessionId)) {
|
|
572
|
+
continue;
|
|
573
|
+
}
|
|
574
|
+
persisted.unshift(toActiveSessionRecord(active));
|
|
575
|
+
}
|
|
576
|
+
return persisted.slice(0, limit);
|
|
542
577
|
}
|
|
543
578
|
|
|
544
579
|
async delete(sessionId: string): Promise<boolean> {
|
|
@@ -555,55 +590,52 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
555
590
|
return result.deleted;
|
|
556
591
|
}
|
|
557
592
|
|
|
558
|
-
async
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
}
|
|
565
|
-
|
|
593
|
+
async update(
|
|
594
|
+
sessionId: string,
|
|
595
|
+
updates: {
|
|
596
|
+
prompt?: string | null;
|
|
597
|
+
metadata?: Record<string, unknown> | null;
|
|
598
|
+
title?: string | null;
|
|
599
|
+
},
|
|
600
|
+
): Promise<{ updated: boolean }> {
|
|
601
|
+
const result = await this.invokeOptionalValue<{ updated?: boolean }>(
|
|
602
|
+
"updateSession",
|
|
603
|
+
{
|
|
604
|
+
sessionId,
|
|
605
|
+
prompt: updates.prompt,
|
|
606
|
+
metadata: updates.metadata,
|
|
607
|
+
title: updates.title,
|
|
608
|
+
},
|
|
609
|
+
);
|
|
610
|
+
return { updated: result?.updated === true };
|
|
566
611
|
}
|
|
567
612
|
|
|
568
613
|
async readMessages(sessionId: string): Promise<LlmsProviders.Message[]> {
|
|
569
614
|
const row = await this.getRow(sessionId);
|
|
570
|
-
|
|
571
|
-
if (!messagesPath || !existsSync(messagesPath)) return [];
|
|
572
|
-
try {
|
|
573
|
-
const raw = readFileSync(messagesPath, "utf8").trim();
|
|
574
|
-
if (!raw) return [];
|
|
575
|
-
const parsed = JSON.parse(raw) as unknown;
|
|
576
|
-
if (Array.isArray(parsed)) return parsed as LlmsProviders.Message[];
|
|
577
|
-
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
578
|
-
const messages = (parsed as { messages?: unknown }).messages;
|
|
579
|
-
if (Array.isArray(messages)) return messages as LlmsProviders.Message[];
|
|
580
|
-
}
|
|
581
|
-
return [];
|
|
582
|
-
} catch {
|
|
583
|
-
return [];
|
|
584
|
-
}
|
|
615
|
+
return readPersistedMessagesFile(row?.messagesPath);
|
|
585
616
|
}
|
|
586
617
|
|
|
587
|
-
async
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
618
|
+
async handleHookEvent(payload: HookEventPayload): Promise<void> {
|
|
619
|
+
await replaySubagentHookEvent(payload, {
|
|
620
|
+
queueSpawnRequest: (event: HookEventPayload) =>
|
|
621
|
+
this.invokeOptional("queueSpawnRequest", event),
|
|
622
|
+
upsertSubagentSessionFromHook: (event: HookEventPayload) =>
|
|
623
|
+
this.invokeOptionalValue<string | undefined>(
|
|
624
|
+
"upsertSubagentSessionFromHook",
|
|
625
|
+
event,
|
|
626
|
+
),
|
|
627
|
+
appendSubagentHookAudit: (sessionId: string, event: HookEventPayload) =>
|
|
628
|
+
this.invokeOptional("appendSubagentHookAudit", sessionId, event),
|
|
629
|
+
applySubagentStatus: (sessionId: string, event: HookEventPayload) =>
|
|
630
|
+
this.invokeOptional("applySubagentStatus", sessionId, event),
|
|
599
631
|
});
|
|
600
632
|
}
|
|
601
633
|
|
|
602
|
-
subscribe(
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
634
|
+
subscribe(
|
|
635
|
+
listener: (event: CoreSessionEvent) => void,
|
|
636
|
+
options?: RuntimeHostSubscribeOptions,
|
|
637
|
+
): () => void {
|
|
638
|
+
return this.events.subscribe(listener, options);
|
|
607
639
|
}
|
|
608
640
|
|
|
609
641
|
async updateSessionModel(sessionId: string, modelId: string): Promise<void> {
|
|
@@ -796,6 +828,7 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
796
828
|
enableSpawn: session.config.enableSpawnAgent,
|
|
797
829
|
enableTeams: session.config.enableAgentTeams,
|
|
798
830
|
prompt: session.pendingPrompt,
|
|
831
|
+
metadata: session.sessionMetadata,
|
|
799
832
|
startedAt: session.startedAt,
|
|
800
833
|
})) as RootSessionArtifacts;
|
|
801
834
|
}
|
|
@@ -875,12 +908,39 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
875
908
|
}
|
|
876
909
|
notifyTeamRunWaiters(session);
|
|
877
910
|
|
|
911
|
+
const cleanupErrors: unknown[] = [];
|
|
912
|
+
const recordCleanupError = (stage: string, error: unknown) => {
|
|
913
|
+
cleanupErrors.push(error);
|
|
914
|
+
session.config.logger?.log("Session shutdown cleanup failed", {
|
|
915
|
+
sessionId: session.sessionId,
|
|
916
|
+
stage,
|
|
917
|
+
error,
|
|
918
|
+
severity: "warn",
|
|
919
|
+
});
|
|
920
|
+
};
|
|
921
|
+
|
|
878
922
|
if (session.artifacts) {
|
|
879
|
-
|
|
880
|
-
|
|
923
|
+
try {
|
|
924
|
+
await this.updateStatus(session, input.status, input.exitCode);
|
|
925
|
+
} catch (error) {
|
|
926
|
+
recordCleanupError("update_status", error);
|
|
927
|
+
}
|
|
928
|
+
try {
|
|
929
|
+
await session.agent.shutdown(input.shutdownReason);
|
|
930
|
+
} catch (error) {
|
|
931
|
+
recordCleanupError("agent_shutdown", error);
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
try {
|
|
935
|
+
await Promise.resolve(session.runtime.shutdown(input.shutdownReason));
|
|
936
|
+
} catch (error) {
|
|
937
|
+
recordCleanupError("runtime_shutdown", error);
|
|
938
|
+
}
|
|
939
|
+
try {
|
|
940
|
+
await session.pluginSandboxShutdown?.();
|
|
941
|
+
} catch (error) {
|
|
942
|
+
recordCleanupError("plugin_sandbox_shutdown", error);
|
|
881
943
|
}
|
|
882
|
-
await Promise.resolve(session.runtime.shutdown(input.shutdownReason));
|
|
883
|
-
await session.pluginSandboxShutdown?.();
|
|
884
944
|
this.sessions.delete(session.sessionId);
|
|
885
945
|
this.emit({
|
|
886
946
|
type: "ended",
|
|
@@ -890,6 +950,9 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
890
950
|
ts: Date.now(),
|
|
891
951
|
},
|
|
892
952
|
});
|
|
953
|
+
if (cleanupErrors.length > 0 && input.status === "failed") {
|
|
954
|
+
throw cleanupErrors[0];
|
|
955
|
+
}
|
|
893
956
|
}
|
|
894
957
|
|
|
895
958
|
private async updateStatus(
|
|
@@ -992,7 +1055,7 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
992
1055
|
},
|
|
993
1056
|
): void {
|
|
994
1057
|
const session = this.sessions.get(sessionId);
|
|
995
|
-
if (!session) {
|
|
1058
|
+
if (!session || session.aborting) {
|
|
996
1059
|
return;
|
|
997
1060
|
}
|
|
998
1061
|
const { prompt, delivery, userImages, userFiles } = entry;
|
|
@@ -1041,7 +1104,7 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
1041
1104
|
|
|
1042
1105
|
private async drainPendingPrompts(sessionId: string): Promise<void> {
|
|
1043
1106
|
const session = this.sessions.get(sessionId);
|
|
1044
|
-
if (!session || session.drainingPendingPrompts) {
|
|
1107
|
+
if (!session || session.aborting || session.drainingPendingPrompts) {
|
|
1045
1108
|
return;
|
|
1046
1109
|
}
|
|
1047
1110
|
const canStartRun =
|
|
@@ -1173,6 +1236,7 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
1173
1236
|
private createSpawnTool(
|
|
1174
1237
|
config: CoreSessionConfig,
|
|
1175
1238
|
rootSessionId: string,
|
|
1239
|
+
toolExecutors?: Partial<ToolExecutors>,
|
|
1176
1240
|
): Tool {
|
|
1177
1241
|
const createSubAgentTools = () => {
|
|
1178
1242
|
const tools: Tool[] = config.enableTools
|
|
@@ -1181,16 +1245,15 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
1181
1245
|
...ToolPresets[
|
|
1182
1246
|
resolveToolPresetName({
|
|
1183
1247
|
mode: config.mode,
|
|
1184
|
-
yolo: config.yolo,
|
|
1185
1248
|
})
|
|
1186
1249
|
],
|
|
1187
|
-
executors:
|
|
1250
|
+
executors: toolExecutors,
|
|
1188
1251
|
})
|
|
1189
1252
|
: [];
|
|
1190
1253
|
if (config.enableSpawnAgent) {
|
|
1191
|
-
tools.push(this.createSpawnTool(config, rootSessionId));
|
|
1254
|
+
tools.push(this.createSpawnTool(config, rootSessionId, toolExecutors));
|
|
1192
1255
|
}
|
|
1193
|
-
return tools;
|
|
1256
|
+
return filterDisabledTools(tools);
|
|
1194
1257
|
};
|
|
1195
1258
|
|
|
1196
1259
|
return createSpawnAgentTool({
|
|
@@ -1464,7 +1527,7 @@ export class DefaultSessionManager implements SessionManager {
|
|
|
1464
1527
|
}
|
|
1465
1528
|
|
|
1466
1529
|
private emit(event: CoreSessionEvent): void {
|
|
1467
|
-
|
|
1530
|
+
this.events.emit(event);
|
|
1468
1531
|
}
|
|
1469
1532
|
|
|
1470
1533
|
private async listRows(limit: number): Promise<SessionRow[]> {
|