@clinebot/core 0.0.33 → 0.0.35
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 +12 -8
- package/dist/ClineCore.d.ts +48 -29
- package/dist/ClineCore.d.ts.map +1 -1
- package/dist/auth/client.d.ts +19 -0
- package/dist/auth/client.d.ts.map +1 -1
- package/dist/auth/cline.d.ts.map +1 -1
- package/dist/auth/oca.d.ts.map +1 -1
- package/dist/auth/server.d.ts +32 -0
- package/dist/auth/server.d.ts.map +1 -1
- package/dist/auth/types.d.ts +29 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/extensions/config/agent-config-loader.d.ts +2 -2
- 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/user-instruction-config-loader.d.ts +2 -2
- package/dist/extensions/config/user-instruction-config-loader.d.ts.map +1 -1
- package/dist/extensions/index.d.ts +2 -1
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-config-loader.d.ts +2 -1
- package/dist/extensions/plugin/plugin-config-loader.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-load-report.d.ts +19 -0
- package/dist/extensions/plugin/plugin-load-report.d.ts.map +1 -0
- package/dist/extensions/plugin/plugin-loader.d.ts +6 -0
- package/dist/extensions/plugin/plugin-loader.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-sandbox.d.ts +2 -1
- package/dist/extensions/plugin/plugin-sandbox.d.ts.map +1 -1
- package/dist/extensions/plugin-sandbox-bootstrap.js +242 -242
- package/dist/extensions/tools/constants.d.ts.map +1 -0
- 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/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/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/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 +1 -2
- package/dist/extensions/tools/presets.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/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 +0 -2
- package/dist/hooks/hook-file-hooks.d.ts.map +1 -0
- package/dist/hooks/subprocess.d.ts +3 -130
- package/dist/hooks/subprocess.d.ts.map +1 -1
- package/dist/index.d.ts +38 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +386 -384
- package/dist/runtime/history.d.ts +4 -0
- package/dist/runtime/history.d.ts.map +1 -0
- package/dist/runtime/host.d.ts +9 -0
- package/dist/runtime/host.d.ts.map +1 -0
- package/dist/{session → runtime}/rpc-runtime-ensure.d.ts +13 -1
- package/dist/{session → runtime}/rpc-runtime-ensure.d.ts.map +1 -1
- package/dist/{session → runtime}/rpc-spawn-lease.d.ts.map +1 -1
- package/dist/runtime/runtime-builder.d.ts +1 -1
- package/dist/runtime/runtime-builder.d.ts.map +1 -1
- package/dist/{session/session-manager.d.ts → runtime/runtime-host.d.ts} +55 -12
- 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 +2 -2
- package/dist/runtime/session-runtime.d.ts.map +1 -1
- package/dist/runtime/subprocess-sandbox.d.ts +2 -0
- package/dist/runtime/subprocess-sandbox.d.ts.map +1 -1
- package/dist/runtime/tool-approval.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/local-runtime-bootstrap.d.ts +41 -0
- package/dist/services/local-runtime-bootstrap.d.ts.map +1 -0
- package/dist/services/providers/local-provider-registry.d.ts.map +1 -0
- package/dist/services/providers/local-provider-service.d.ts.map +1 -0
- package/dist/{session → services}/session-artifacts.d.ts +2 -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/{telemetry → services/telemetry}/index.js +6 -6
- 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.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 +8 -6
- package/dist/session/persistence-service.d.ts.map +1 -1
- package/dist/session/rpc-session-service.d.ts +3 -0
- package/dist/session/rpc-session-service.d.ts.map +1 -1
- package/dist/session/session-service.d.ts +8 -9
- 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/sqlite-rpc-session-backend.d.ts.map +1 -1
- package/dist/{session/default-session-manager.d.ts → transports/local.d.ts} +24 -14
- package/dist/transports/local.d.ts.map +1 -0
- package/dist/transports/rpc.d.ts +51 -0
- package/dist/transports/rpc.d.ts.map +1 -0
- package/dist/transports/runtime-host-support.d.ts +21 -0
- package/dist/transports/runtime-host-support.d.ts.map +1 -0
- package/dist/types/chat-schema.d.ts.map +1 -0
- package/dist/types/config.d.ts +3 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/{session/utils/types.d.ts → types/session.d.ts} +15 -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 +7 -6
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -12
- package/src/ClineCore.test.ts +95 -19
- package/src/ClineCore.ts +120 -50
- package/src/auth/client.test.ts +29 -0
- package/src/auth/client.ts +21 -0
- package/src/auth/cline.ts +3 -1
- package/src/auth/codex.ts +1 -1
- package/src/auth/oca.ts +3 -1
- package/src/auth/server.test.ts +287 -0
- package/src/auth/server.ts +50 -1
- package/src/auth/types.ts +29 -0
- package/src/extensions/config/agent-config-loader.test.ts +3 -3
- package/src/extensions/config/agent-config-loader.ts +1 -5
- 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/user-instruction-config-loader.ts +0 -4
- package/src/extensions/index.ts +6 -0
- package/src/extensions/plugin/plugin-config-loader.test.ts +39 -0
- package/src/extensions/plugin/plugin-config-loader.ts +18 -10
- package/src/extensions/plugin/plugin-load-report.ts +20 -0
- package/src/extensions/plugin/plugin-loader.test.ts +45 -0
- package/src/extensions/plugin/plugin-loader.ts +57 -3
- package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +158 -86
- package/src/extensions/plugin/plugin-sandbox.test.ts +70 -0
- package/src/extensions/plugin/plugin-sandbox.ts +17 -6
- package/src/{tools → extensions/tools}/definitions.ts +1 -1
- package/src/extensions/tools/executors/file-read.test.ts +125 -0
- package/src/{tools → extensions/tools}/executors/file-read.ts +29 -4
- package/src/{tools → extensions/tools}/executors/search.ts +1 -1
- package/src/{tools → extensions/tools}/model-tool-routing.ts +1 -1
- package/src/{tools → extensions/tools}/presets.ts +2 -3
- package/src/extensions/tools/team/multi-agent.lifecycle.test.ts +455 -0
- package/src/{team → extensions/tools/team}/multi-agent.ts +80 -17
- package/src/{team → extensions/tools/team}/spawn-agent-tool.test.ts +0 -6
- 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.test.ts +146 -30
- package/src/{team → extensions/tools/team}/team-tools.ts +98 -69
- 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.test.ts +42 -7
- package/src/{runtime → hooks}/hook-file-hooks.ts +6 -11
- package/src/hooks/subprocess.ts +48 -257
- package/src/index.ts +178 -158
- package/src/runtime/history.test.ts +114 -0
- package/src/runtime/history.ts +237 -0
- package/src/runtime/host.test.ts +230 -0
- package/src/runtime/host.ts +362 -0
- package/src/runtime/rpc-runtime-ensure.test.ts +123 -0
- package/src/{session → runtime}/rpc-runtime-ensure.ts +165 -27
- package/src/{session → runtime}/rpc-spawn-lease.test.ts +33 -1
- package/src/{session → runtime}/rpc-spawn-lease.ts +54 -20
- package/src/runtime/runtime-builder.team-persistence.test.ts +6 -3
- package/src/runtime/runtime-builder.test.ts +101 -4
- package/src/runtime/runtime-builder.ts +125 -86
- package/src/runtime/runtime-host.ts +178 -0
- package/src/{session → runtime}/runtime-oauth-token-manager.ts +1 -1
- package/src/runtime/runtime-parity.test.ts +1 -1
- package/src/runtime/session-runtime.ts +2 -2
- package/src/runtime/subprocess-sandbox.ts +26 -23
- package/src/runtime/tool-approval.ts +13 -15
- package/src/{session/session-agent-events.ts → services/agent-events.ts} +7 -7
- package/src/services/config.ts +5 -0
- package/src/services/local-runtime-bootstrap.ts +280 -0
- package/src/{providers → services/providers}/local-provider-service.ts +4 -4
- package/src/{session → services}/session-artifacts.ts +23 -19
- package/src/{session/utils/helpers.test.ts → services/session-data.test.ts} +1 -1
- package/src/{session/utils/helpers.ts → services/session-data.ts} +76 -72
- 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.test.ts +1 -1
- package/src/{storage → services/storage}/provider-settings-legacy-migration.ts +2 -2
- package/src/{storage → services/storage}/provider-settings-manager.ts +2 -2
- 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.test.ts +30 -1
- package/src/{input → services/workspace}/file-indexer.ts +26 -2
- package/src/{input → services/workspace}/mention-enricher.test.ts +21 -0
- package/src/{input → services/workspace}/mention-enricher.ts +1 -1
- package/src/session/file-session-service.ts +9 -7
- package/src/session/index.ts +25 -17
- package/src/session/persistence-service.test.ts +121 -24
- package/src/session/persistence-service.ts +118 -102
- package/src/session/rpc-session-service.ts +9 -2
- package/src/session/session-service.team-persistence.test.ts +1 -1
- package/src/session/session-service.ts +32 -19
- package/src/session/session-team-coordination.ts +13 -6
- package/src/session/sqlite-rpc-session-backend.ts +4 -6
- package/src/session/workspace-manager.ts +1 -1
- package/src/{session/default-session-manager.e2e.test.ts → transports/local.e2e.test.ts} +13 -17
- package/src/{session/default-session-manager.test.ts → transports/local.test.ts} +316 -230
- package/src/{session/default-session-manager.ts → transports/local.ts} +138 -172
- package/src/transports/rpc.test.ts +82 -0
- package/src/transports/rpc.ts +665 -0
- package/src/transports/runtime-host-support.ts +86 -0
- package/src/types/config.ts +3 -2
- package/src/{session/utils/types.ts → types/session.ts} +18 -5
- package/src/types/sessions.ts +21 -0
- package/src/types/storage.ts +1 -6
- package/src/types.ts +25 -18
- package/dist/chat/chat-schema.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/runtime/team-runtime-registry.d.ts +0 -13
- package/dist/runtime/team-runtime-registry.d.ts.map +0 -1
- package/dist/session/default-session-manager.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.map +0 -1
- package/dist/session/session-telemetry.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.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/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/prompt/default-system.ts +0 -21
- package/src/runtime/team-runtime-registry.ts +0 -43
- package/src/session/session-config-builder.ts +0 -126
- 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/storage/artifact-store.ts +0 -1
- package/src/storage/session-store.ts +0 -1
- package/src/team/multi-agent.lifecycle.test.ts +0 -201
- package/src/tools/executors/file-read.test.ts +0 -49
- /package/dist/{tools → extensions/tools}/constants.d.ts +0 -0
- /package/dist/{tools → extensions/tools}/definitions.d.ts +0 -0
- /package/dist/{tools → extensions/tools}/executors/apply-patch-parser.d.ts +0 -0
- /package/dist/{tools → extensions/tools}/executors/apply-patch.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/search.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}/index.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/{team → extensions/tools/team}/team-tools.d.ts +0 -0
- /package/dist/{session → runtime}/rpc-spawn-lease.d.ts +0 -0
- /package/dist/{providers → services/providers}/local-provider-registry.d.ts +0 -0
- /package/dist/{providers → services/providers}/local-provider-service.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/dist/{session → services}/workspace-manifest.d.ts +0 -0
- /package/dist/{chat → types}/chat-schema.d.ts +0 -0
- /package/src/{tools → extensions/tools}/constants.ts +0 -0
- /package/src/{tools → extensions/tools}/definitions.test.ts +0 -0
- /package/src/{tools → extensions/tools}/executors/apply-patch-parser.ts +0 -0
- /package/src/{tools → extensions/tools}/executors/apply-patch.ts +0 -0
- /package/src/{tools → extensions/tools}/executors/bash.test.ts +0 -0
- /package/src/{tools → extensions/tools}/executors/bash.ts +0 -0
- /package/src/{tools → extensions/tools}/executors/editor.test.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/{tools → extensions/tools}/index.ts +0 -0
- /package/src/{tools → extensions/tools}/model-tool-routing.test.ts +0 -0
- /package/src/{tools → extensions/tools}/presets.test.ts +0 -0
- /package/src/{tools → extensions/tools}/schemas.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/{runtime → hooks}/checkpoint-hooks.test.ts +0 -0
- /package/src/{session → runtime}/runtime-oauth-token-manager.test.ts +0 -0
- /package/src/{providers → services/providers}/local-provider-registry.ts +0 -0
- /package/src/{providers → services/providers}/local-provider-service.test.ts +0 -0
- /package/src/{storage → services/storage}/index.ts +0 -0
- /package/src/{storage → services/storage}/provider-settings-manager.test.ts +0 -0
- /package/src/{telemetry → services/telemetry}/ITelemetryAdapter.ts +0 -0
- /package/src/{telemetry → services/telemetry}/OpenTelemetryAdapter.test.ts +0 -0
- /package/src/{telemetry → services/telemetry}/OpenTelemetryAdapter.ts +0 -0
- /package/src/{telemetry → services/telemetry}/OpenTelemetryProvider.test.ts +0 -0
- /package/src/{telemetry → services/telemetry}/OpenTelemetryProvider.ts +0 -0
- /package/src/{telemetry → services/telemetry}/TelemetryLoggerSink.test.ts +0 -0
- /package/src/{telemetry → services/telemetry}/TelemetryLoggerSink.ts +0 -0
- /package/src/{telemetry → services/telemetry}/TelemetryService.test.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.test.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}/file-indexer.d.ts +0 -0
- /package/src/{input → services/workspace}/index.ts +0 -0
- /package/src/{session → services}/workspace-manifest.ts +0 -0
- /package/src/{chat → types}/chat-schema.ts +0 -0
|
@@ -16,13 +16,6 @@ import {
|
|
|
16
16
|
registerMcpServersFromSettingsFile,
|
|
17
17
|
resolveDefaultMcpSettingsPath,
|
|
18
18
|
} from "../extensions/mcp";
|
|
19
|
-
import { createLocalTeamStore } from "../storage/team-store";
|
|
20
|
-
import {
|
|
21
|
-
AgentTeamsRuntime,
|
|
22
|
-
bootstrapAgentTeams,
|
|
23
|
-
createDelegatedAgentConfigProvider,
|
|
24
|
-
type TeamEvent,
|
|
25
|
-
} from "../team";
|
|
26
19
|
import {
|
|
27
20
|
createBuiltinTools,
|
|
28
21
|
DEFAULT_MODEL_TOOL_ROUTING_RULES,
|
|
@@ -32,14 +25,20 @@ import {
|
|
|
32
25
|
type ToolExecutors,
|
|
33
26
|
ToolPresets,
|
|
34
27
|
type ToolRoutingRule,
|
|
35
|
-
} from "../tools";
|
|
28
|
+
} from "../extensions/tools";
|
|
29
|
+
import {
|
|
30
|
+
AgentTeamsRuntime,
|
|
31
|
+
bootstrapAgentTeams,
|
|
32
|
+
createDelegatedAgentConfigProvider,
|
|
33
|
+
type TeamEvent,
|
|
34
|
+
} from "../extensions/tools/team";
|
|
35
|
+
import { createLocalTeamStore } from "../services/storage/team-store";
|
|
36
36
|
import type { CoreAgentMode, CoreSessionConfig } from "../types/config";
|
|
37
37
|
import type {
|
|
38
38
|
RuntimeBuilder,
|
|
39
39
|
RuntimeBuilderInput,
|
|
40
40
|
BuiltRuntime as RuntimeEnvironment,
|
|
41
41
|
} from "./session-runtime";
|
|
42
|
-
import { TeamRuntimeRegistry } from "./team-runtime-registry";
|
|
43
42
|
|
|
44
43
|
type SkillsExecutorMetadataItem = {
|
|
45
44
|
id: string;
|
|
@@ -52,6 +51,29 @@ type SkillsExecutorWithMetadata = SkillsExecutor & {
|
|
|
52
51
|
configuredSkills?: SkillsExecutorMetadataItem[];
|
|
53
52
|
};
|
|
54
53
|
|
|
54
|
+
function isToolEnabledByPolicies(
|
|
55
|
+
toolName: string,
|
|
56
|
+
toolPolicies: CoreSessionConfig["toolPolicies"],
|
|
57
|
+
): boolean {
|
|
58
|
+
const globalPolicy = toolPolicies?.["*"] ?? {};
|
|
59
|
+
const toolPolicy = toolPolicies?.[toolName] ?? {};
|
|
60
|
+
return (
|
|
61
|
+
{
|
|
62
|
+
...globalPolicy,
|
|
63
|
+
...toolPolicy,
|
|
64
|
+
}.enabled !== false
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function filterToolsByPolicies(
|
|
69
|
+
tools: Tool[],
|
|
70
|
+
toolPolicies: CoreSessionConfig["toolPolicies"],
|
|
71
|
+
): Tool[] {
|
|
72
|
+
return tools.filter((tool) =>
|
|
73
|
+
isToolEnabledByPolicies(tool.name, toolPolicies),
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
55
77
|
export function createTeamName(): string {
|
|
56
78
|
return `team-${nanoid(5)}`;
|
|
57
79
|
}
|
|
@@ -60,13 +82,13 @@ function createBuiltinToolsList(
|
|
|
60
82
|
cwd: string,
|
|
61
83
|
providerId: string,
|
|
62
84
|
mode: CoreAgentMode,
|
|
63
|
-
yolo: boolean | undefined,
|
|
64
85
|
modelId: string,
|
|
65
86
|
toolRoutingRules: ToolRoutingRule[] | undefined,
|
|
87
|
+
toolPolicies: CoreSessionConfig["toolPolicies"],
|
|
66
88
|
skillsExecutor?: SkillsExecutorWithMetadata,
|
|
67
89
|
executorOverrides?: Partial<ToolExecutors>,
|
|
68
90
|
): Tool[] {
|
|
69
|
-
const preset = ToolPresets[resolveToolPresetName({ mode
|
|
91
|
+
const preset = ToolPresets[resolveToolPresetName({ mode })];
|
|
70
92
|
const toolRoutingConfig = resolveToolRoutingConfig(
|
|
71
93
|
providerId,
|
|
72
94
|
modelId,
|
|
@@ -74,20 +96,23 @@ function createBuiltinToolsList(
|
|
|
74
96
|
toolRoutingRules ?? DEFAULT_MODEL_TOOL_ROUTING_RULES,
|
|
75
97
|
);
|
|
76
98
|
|
|
77
|
-
return
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
99
|
+
return filterToolsByPolicies(
|
|
100
|
+
createBuiltinTools({
|
|
101
|
+
cwd,
|
|
102
|
+
...preset,
|
|
103
|
+
enableSkills: !!skillsExecutor,
|
|
104
|
+
...toolRoutingConfig,
|
|
105
|
+
executors: {
|
|
106
|
+
...(skillsExecutor
|
|
107
|
+
? {
|
|
108
|
+
skills: skillsExecutor,
|
|
109
|
+
}
|
|
110
|
+
: {}),
|
|
111
|
+
...(executorOverrides ?? {}),
|
|
112
|
+
},
|
|
113
|
+
}),
|
|
114
|
+
toolPolicies,
|
|
115
|
+
);
|
|
91
116
|
}
|
|
92
117
|
|
|
93
118
|
const SKILL_FILE_NAME = "SKILL.md";
|
|
@@ -96,7 +121,7 @@ function listAvailableSkillNames(
|
|
|
96
121
|
watcher: UserInstructionConfigWatcher,
|
|
97
122
|
allowedSkillNames?: ReadonlyArray<string>,
|
|
98
123
|
): string[] {
|
|
99
|
-
return
|
|
124
|
+
return getConfiguredSkills(watcher, allowedSkillNames)
|
|
100
125
|
.filter((skill) => !skill.disabled)
|
|
101
126
|
.map((skill) => skill.name.trim())
|
|
102
127
|
.filter((name) => name.length > 0)
|
|
@@ -143,10 +168,14 @@ function isSkillAllowed(
|
|
|
143
168
|
);
|
|
144
169
|
}
|
|
145
170
|
|
|
146
|
-
|
|
171
|
+
type ConfiguredSkill = SkillsExecutorMetadataItem & {
|
|
172
|
+
skill: SkillConfig;
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
function getConfiguredSkills(
|
|
147
176
|
watcher: UserInstructionConfigWatcher,
|
|
148
177
|
allowedSkillNames?: ReadonlyArray<string>,
|
|
149
|
-
):
|
|
178
|
+
): ConfiguredSkill[] {
|
|
150
179
|
const allowedSkills = toAllowedSkillSet(allowedSkillNames);
|
|
151
180
|
const snapshot = watcher.getSnapshot("skill");
|
|
152
181
|
return [...snapshot.entries()]
|
|
@@ -157,6 +186,7 @@ function listConfiguredSkills(
|
|
|
157
186
|
name: skill.name.trim(),
|
|
158
187
|
description: skill.description?.trim(),
|
|
159
188
|
disabled: skill.disabled === true,
|
|
189
|
+
skill,
|
|
160
190
|
};
|
|
161
191
|
})
|
|
162
192
|
.filter((skill) => isSkillAllowed(skill.id, skill.name, allowedSkills));
|
|
@@ -254,28 +284,22 @@ function resolveSkillRecord(
|
|
|
254
284
|
requestedSkill: string,
|
|
255
285
|
allowedSkillNames?: ReadonlyArray<string>,
|
|
256
286
|
): { id: string; skill: SkillConfig } | { error: string } {
|
|
257
|
-
const allowedSkills = toAllowedSkillSet(allowedSkillNames);
|
|
258
287
|
const normalized = requestedSkill.trim().replace(/^\/+/, "").toLowerCase();
|
|
259
288
|
if (!normalized) {
|
|
260
289
|
return { error: "Missing skill name." };
|
|
261
290
|
}
|
|
262
291
|
|
|
263
|
-
const
|
|
264
|
-
const
|
|
265
|
-
const skill = record.item as SkillConfig;
|
|
266
|
-
return isSkillAllowed(id, skill.name, allowedSkills);
|
|
267
|
-
});
|
|
268
|
-
const scopedSnapshot = new Map(scopedEntries);
|
|
269
|
-
const exact = scopedSnapshot.get(normalized);
|
|
292
|
+
const configuredSkills = getConfiguredSkills(watcher, allowedSkillNames);
|
|
293
|
+
const exact = configuredSkills.find((entry) => entry.id === normalized);
|
|
270
294
|
if (exact) {
|
|
271
|
-
const skill = exact
|
|
295
|
+
const { skill } = exact;
|
|
272
296
|
if (skill.disabled === true) {
|
|
273
297
|
return {
|
|
274
298
|
error: `Skill "${skill.name}" is configured but disabled.`,
|
|
275
299
|
};
|
|
276
300
|
}
|
|
277
301
|
return {
|
|
278
|
-
id:
|
|
302
|
+
id: exact.id,
|
|
279
303
|
skill,
|
|
280
304
|
};
|
|
281
305
|
}
|
|
@@ -284,30 +308,38 @@ function resolveSkillRecord(
|
|
|
284
308
|
? (normalized.split(":").at(-1) ?? normalized)
|
|
285
309
|
: normalized;
|
|
286
310
|
|
|
287
|
-
const suffixMatches =
|
|
311
|
+
const suffixMatches = configuredSkills.filter(({ id }) => {
|
|
288
312
|
if (id === bareName) {
|
|
289
313
|
return true;
|
|
290
314
|
}
|
|
291
315
|
return id.endsWith(`:${bareName}`);
|
|
292
316
|
});
|
|
293
317
|
|
|
318
|
+
const enabledSuffixMatches = suffixMatches.filter(
|
|
319
|
+
({ skill }) => skill.disabled !== true,
|
|
320
|
+
);
|
|
321
|
+
|
|
322
|
+
if (enabledSuffixMatches.length === 1) {
|
|
323
|
+
const { id, skill } = enabledSuffixMatches[0];
|
|
324
|
+
return { id, skill };
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
if (enabledSuffixMatches.length > 1) {
|
|
328
|
+
return {
|
|
329
|
+
error: `Skill "${requestedSkill}" is ambiguous. Use one of: ${enabledSuffixMatches.map(({ id }) => id).join(", ")}`,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
|
|
294
333
|
if (suffixMatches.length === 1) {
|
|
295
|
-
const
|
|
296
|
-
const skill = record.item as SkillConfig;
|
|
297
|
-
if (skill.disabled === true) {
|
|
298
|
-
return {
|
|
299
|
-
error: `Skill "${skill.name}" is configured but disabled.`,
|
|
300
|
-
};
|
|
301
|
-
}
|
|
334
|
+
const { skill } = suffixMatches[0];
|
|
302
335
|
return {
|
|
303
|
-
|
|
304
|
-
skill,
|
|
336
|
+
error: `Skill "${skill.name}" is configured but disabled.`,
|
|
305
337
|
};
|
|
306
338
|
}
|
|
307
339
|
|
|
308
340
|
if (suffixMatches.length > 1) {
|
|
309
341
|
return {
|
|
310
|
-
error: `Skill "${requestedSkill}" is ambiguous
|
|
342
|
+
error: `Skill "${requestedSkill}" is ambiguous, and all matches are disabled: ${suffixMatches.map(({ id }) => id).join(", ")}`,
|
|
311
343
|
};
|
|
312
344
|
}
|
|
313
345
|
|
|
@@ -354,7 +386,10 @@ function createSkillsExecutor(
|
|
|
354
386
|
}
|
|
355
387
|
};
|
|
356
388
|
Object.defineProperty(executor, "configuredSkills", {
|
|
357
|
-
get: () =>
|
|
389
|
+
get: () =>
|
|
390
|
+
getConfiguredSkills(watcher, allowedSkillNames).map(
|
|
391
|
+
({ skill: _skill, ...metadata }) => metadata,
|
|
392
|
+
),
|
|
358
393
|
enumerable: true,
|
|
359
394
|
configurable: false,
|
|
360
395
|
});
|
|
@@ -386,27 +421,24 @@ function normalizeConfig(
|
|
|
386
421
|
| "enableTools"
|
|
387
422
|
| "enableSpawnAgent"
|
|
388
423
|
| "enableAgentTeams"
|
|
424
|
+
| "disableMcpSettingsTools"
|
|
389
425
|
| "yolo"
|
|
390
426
|
| "missionLogIntervalSteps"
|
|
391
427
|
| "missionLogIntervalMs"
|
|
392
428
|
| "sessionId"
|
|
393
429
|
>
|
|
394
430
|
> {
|
|
395
|
-
const preset =
|
|
396
|
-
ToolPresets[
|
|
397
|
-
resolveToolPresetName({
|
|
398
|
-
mode: config.mode,
|
|
399
|
-
yolo: config.yolo,
|
|
400
|
-
})
|
|
401
|
-
];
|
|
431
|
+
const preset = ToolPresets[resolveToolPresetName({ mode: config.mode })];
|
|
402
432
|
return {
|
|
403
433
|
sessionId: config.sessionId || "",
|
|
404
|
-
mode:
|
|
434
|
+
mode:
|
|
435
|
+
config.mode === "plan" ? "plan" : config.mode === "yolo" ? "yolo" : "act",
|
|
405
436
|
enableTools: config.enableTools !== false,
|
|
406
437
|
enableSpawnAgent:
|
|
407
438
|
config.enableSpawnAgent ?? preset.enableSpawnAgent ?? true,
|
|
408
439
|
enableAgentTeams:
|
|
409
440
|
config.enableAgentTeams ?? preset.enableAgentTeams ?? true,
|
|
441
|
+
disableMcpSettingsTools: config.disableMcpSettingsTools === true,
|
|
410
442
|
yolo: config.yolo === true,
|
|
411
443
|
missionLogIntervalSteps:
|
|
412
444
|
typeof config.missionLogIntervalSteps === "number" &&
|
|
@@ -422,7 +454,15 @@ function normalizeConfig(
|
|
|
422
454
|
}
|
|
423
455
|
|
|
424
456
|
export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
425
|
-
private readonly
|
|
457
|
+
private readonly teamRuntimeEntries = new Map<
|
|
458
|
+
string,
|
|
459
|
+
{
|
|
460
|
+
runtime?: AgentTeamsRuntime;
|
|
461
|
+
delegatedAgentConfigProvider: ReturnType<
|
|
462
|
+
typeof createDelegatedAgentConfigProvider
|
|
463
|
+
>;
|
|
464
|
+
}
|
|
465
|
+
>();
|
|
426
466
|
|
|
427
467
|
async build(input: RuntimeBuilderInput): Promise<RuntimeEnvironment> {
|
|
428
468
|
const {
|
|
@@ -440,6 +480,7 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
440
480
|
const normalized = normalizeConfig(config);
|
|
441
481
|
const tools: Tool[] = [];
|
|
442
482
|
const effectiveTeamName = config.teamName?.trim() || createTeamName();
|
|
483
|
+
const hasLocalSkills = hasSkillsFiles(config.cwd);
|
|
443
484
|
let teamToolsRegistered = false;
|
|
444
485
|
const watcherProvided = Boolean(sharedUserInstructionWatcher);
|
|
445
486
|
let userInstructionWatcher = sharedUserInstructionWatcher;
|
|
@@ -447,11 +488,7 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
447
488
|
let skillsExecutor: SkillsExecutorWithMetadata | undefined;
|
|
448
489
|
let mcpShutdown: (() => Promise<void>) | undefined;
|
|
449
490
|
|
|
450
|
-
if (
|
|
451
|
-
!userInstructionWatcher &&
|
|
452
|
-
normalized.enableTools &&
|
|
453
|
-
hasSkillsFiles(config.cwd)
|
|
454
|
-
) {
|
|
491
|
+
if (!userInstructionWatcher && normalized.enableTools && hasLocalSkills) {
|
|
455
492
|
userInstructionWatcher = createUserInstructionConfigWatcher({
|
|
456
493
|
skills: { workspacePath: config.cwd },
|
|
457
494
|
rules: { workspacePath: config.cwd },
|
|
@@ -464,8 +501,8 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
464
501
|
normalized.enableTools &&
|
|
465
502
|
userInstructionWatcher &&
|
|
466
503
|
(watcherProvided ||
|
|
467
|
-
|
|
468
|
-
|
|
504
|
+
hasLocalSkills ||
|
|
505
|
+
getConfiguredSkills(userInstructionWatcher, config.skills).length > 0)
|
|
469
506
|
) {
|
|
470
507
|
skillsExecutor = createSkillsExecutor(
|
|
471
508
|
userInstructionWatcher,
|
|
@@ -480,16 +517,18 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
480
517
|
config.cwd,
|
|
481
518
|
config.providerId,
|
|
482
519
|
normalized.mode,
|
|
483
|
-
normalized.yolo,
|
|
484
520
|
config.modelId,
|
|
485
521
|
config.toolRoutingRules,
|
|
522
|
+
config.toolPolicies,
|
|
486
523
|
skillsExecutor,
|
|
487
524
|
defaultToolExecutors,
|
|
488
525
|
),
|
|
489
526
|
);
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
527
|
+
if (!normalized.disableMcpSettingsTools) {
|
|
528
|
+
const mcpRuntime = await loadConfiguredMcpTools(config.logger);
|
|
529
|
+
tools.push(...mcpRuntime.tools);
|
|
530
|
+
mcpShutdown = mcpRuntime.shutdown;
|
|
531
|
+
}
|
|
493
532
|
}
|
|
494
533
|
|
|
495
534
|
let teamRuntime: AgentTeamsRuntime | undefined;
|
|
@@ -526,21 +565,21 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
526
565
|
telemetry: input.telemetry ?? config.telemetry,
|
|
527
566
|
workspaceMetadata: config.workspaceMetadata,
|
|
528
567
|
});
|
|
529
|
-
this.
|
|
530
|
-
|
|
531
|
-
|
|
568
|
+
if (!this.teamRuntimeEntries.has(registryKey)) {
|
|
569
|
+
this.teamRuntimeEntries.set(registryKey, {
|
|
570
|
+
delegatedAgentConfigProvider,
|
|
571
|
+
});
|
|
572
|
+
}
|
|
532
573
|
|
|
533
574
|
const ensureTeamRuntime = (): AgentTeamsRuntime | undefined => {
|
|
534
575
|
if (!normalized.enableAgentTeams) {
|
|
535
576
|
return undefined;
|
|
536
577
|
}
|
|
537
578
|
|
|
538
|
-
const registryEntry = this.
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
}),
|
|
543
|
-
);
|
|
579
|
+
const registryEntry = this.teamRuntimeEntries.get(registryKey) ?? {
|
|
580
|
+
delegatedAgentConfigProvider,
|
|
581
|
+
};
|
|
582
|
+
this.teamRuntimeEntries.set(registryKey, registryEntry);
|
|
544
583
|
teamRuntime = registryEntry.runtime;
|
|
545
584
|
|
|
546
585
|
if (!teamRuntime) {
|
|
@@ -592,7 +631,7 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
592
631
|
const factory = input.teamToolsFactory ?? bootstrapAgentTeams;
|
|
593
632
|
const teamBootstrap = factory({
|
|
594
633
|
runtime: teamRuntime,
|
|
595
|
-
leadAgentId: "lead",
|
|
634
|
+
leadAgentId: config.sessionId || "lead",
|
|
596
635
|
restoredFromPersistence: Boolean(restoredTeamState),
|
|
597
636
|
restoredTeammates: restoredTeammateSpecs,
|
|
598
637
|
includeLeadSpawnTool: true,
|
|
@@ -607,9 +646,9 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
607
646
|
config.cwd,
|
|
608
647
|
config.providerId,
|
|
609
648
|
normalized.mode,
|
|
610
|
-
normalized.yolo,
|
|
611
649
|
config.modelId,
|
|
612
650
|
config.toolRoutingRules,
|
|
651
|
+
config.toolPolicies,
|
|
613
652
|
skillsExecutor,
|
|
614
653
|
defaultToolExecutors,
|
|
615
654
|
)
|
|
@@ -643,7 +682,7 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
643
682
|
|
|
644
683
|
const completionGuard = normalized.enableAgentTeams
|
|
645
684
|
? () => {
|
|
646
|
-
const rt = this.
|
|
685
|
+
const rt = this.teamRuntimeEntries.get(registryKey)?.runtime;
|
|
647
686
|
if (!rt) return undefined;
|
|
648
687
|
const tasks = rt.listTasks();
|
|
649
688
|
const hasInProgress = tasks.some(
|
|
@@ -668,20 +707,20 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
668
707
|
if (pending) parts.push(`Unfinished tasks: ${pending}`);
|
|
669
708
|
if (activeRunSummary)
|
|
670
709
|
parts.push(`Active runs: ${activeRunSummary}`);
|
|
671
|
-
return `[SYSTEM] You still have team obligations. ${parts.join(". ")}. Use team_run_task to delegate work, or team_task with action=complete to mark tasks done, or
|
|
710
|
+
return `[SYSTEM] You still have team obligations. ${parts.join(". ")}. Use team_run_task to delegate work, or team_task with action=complete to mark tasks done, or team_await_runs to wait for active runs. Do NOT stop until all tasks are completed.`;
|
|
672
711
|
}
|
|
673
712
|
return undefined;
|
|
674
713
|
}
|
|
675
714
|
: undefined;
|
|
676
715
|
|
|
677
716
|
return {
|
|
678
|
-
tools,
|
|
717
|
+
tools: filterToolsByPolicies(tools, config.toolPolicies),
|
|
679
718
|
logger: logger ?? config.logger,
|
|
680
719
|
telemetry: telemetry ?? config.telemetry,
|
|
681
720
|
teamRuntime,
|
|
682
721
|
teamRestoredFromPersistence: Boolean(restoredTeamState),
|
|
683
722
|
delegatedAgentConfigProvider:
|
|
684
|
-
this.
|
|
723
|
+
this.teamRuntimeEntries.get(registryKey)
|
|
685
724
|
?.delegatedAgentConfigProvider ?? delegatedAgentConfigProvider,
|
|
686
725
|
completionGuard,
|
|
687
726
|
registerLeadAgent: (agent) => {
|
|
@@ -692,7 +731,7 @@ export class DefaultRuntimeBuilder implements RuntimeBuilder {
|
|
|
692
731
|
},
|
|
693
732
|
shutdown: async (reason: string) => {
|
|
694
733
|
shutdownTeamRuntime(teamRuntime, reason);
|
|
695
|
-
this.
|
|
734
|
+
this.teamRuntimeEntries.delete(registryKey);
|
|
696
735
|
await mcpShutdown?.();
|
|
697
736
|
if (!watcherProvided) {
|
|
698
737
|
userInstructionWatcher?.stop();
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import type * as LlmsProviders from "@clinebot/llms";
|
|
2
|
+
import type {
|
|
3
|
+
AgentResult,
|
|
4
|
+
ToolApprovalRequest,
|
|
5
|
+
ToolApprovalResult,
|
|
6
|
+
} from "@clinebot/shared";
|
|
7
|
+
import type { HookEventPayload } from "../hooks";
|
|
8
|
+
import type { SessionManifest } from "../session/session-manifest";
|
|
9
|
+
import type { SessionSource } from "../types/common";
|
|
10
|
+
import type { CoreSessionConfig } from "../types/config";
|
|
11
|
+
import type { CoreSessionEvent } from "../types/events";
|
|
12
|
+
import type { SessionRecord } from "../types/sessions";
|
|
13
|
+
|
|
14
|
+
export interface RuntimeSessionConfig {
|
|
15
|
+
sessionId?: string;
|
|
16
|
+
providerId: string;
|
|
17
|
+
modelId: string;
|
|
18
|
+
apiKey?: string;
|
|
19
|
+
cwd: string;
|
|
20
|
+
workspaceRoot?: string;
|
|
21
|
+
systemPrompt: string;
|
|
22
|
+
mode: CoreSessionConfig["mode"];
|
|
23
|
+
rules?: CoreSessionConfig["rules"];
|
|
24
|
+
maxIterations?: CoreSessionConfig["maxIterations"];
|
|
25
|
+
enableTools: boolean;
|
|
26
|
+
enableSpawnAgent: boolean;
|
|
27
|
+
enableAgentTeams: boolean;
|
|
28
|
+
disableMcpSettingsTools?: boolean;
|
|
29
|
+
teamName?: string;
|
|
30
|
+
missionLogIntervalSteps?: number;
|
|
31
|
+
missionLogIntervalMs?: number;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export type LocalRuntimeConfigOverrides = Omit<
|
|
35
|
+
CoreSessionConfig,
|
|
36
|
+
keyof RuntimeSessionConfig
|
|
37
|
+
>;
|
|
38
|
+
|
|
39
|
+
export interface LocalRuntimeStartOptions {
|
|
40
|
+
configOverrides?: Partial<LocalRuntimeConfigOverrides>;
|
|
41
|
+
userInstructionWatcher?: import("../extensions/config").UserInstructionConfigWatcher;
|
|
42
|
+
onTeamRestored?: () => void;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface StartSessionInput {
|
|
46
|
+
config: RuntimeSessionConfig;
|
|
47
|
+
source?: SessionSource;
|
|
48
|
+
prompt?: string;
|
|
49
|
+
interactive?: boolean;
|
|
50
|
+
sessionMetadata?: Record<string, unknown>;
|
|
51
|
+
initialMessages?: LlmsProviders.Message[];
|
|
52
|
+
userImages?: string[];
|
|
53
|
+
userFiles?: string[];
|
|
54
|
+
/**
|
|
55
|
+
* Local runtime bootstrap options. These are intentionally isolated under a
|
|
56
|
+
* local-only bag so the transport-facing host contract stays transport-safe.
|
|
57
|
+
*/
|
|
58
|
+
localRuntime?: LocalRuntimeStartOptions;
|
|
59
|
+
toolPolicies?: import("@clinebot/shared").AgentConfig["toolPolicies"];
|
|
60
|
+
requestToolApproval?: (
|
|
61
|
+
request: ToolApprovalRequest,
|
|
62
|
+
) => Promise<ToolApprovalResult>;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function splitCoreSessionConfig(config: CoreSessionConfig): {
|
|
66
|
+
config: RuntimeSessionConfig;
|
|
67
|
+
localRuntime?: LocalRuntimeStartOptions;
|
|
68
|
+
} {
|
|
69
|
+
const {
|
|
70
|
+
sessionId,
|
|
71
|
+
providerId,
|
|
72
|
+
modelId,
|
|
73
|
+
apiKey,
|
|
74
|
+
cwd,
|
|
75
|
+
workspaceRoot,
|
|
76
|
+
systemPrompt,
|
|
77
|
+
mode,
|
|
78
|
+
rules,
|
|
79
|
+
maxIterations,
|
|
80
|
+
enableTools,
|
|
81
|
+
enableSpawnAgent,
|
|
82
|
+
enableAgentTeams,
|
|
83
|
+
disableMcpSettingsTools,
|
|
84
|
+
teamName,
|
|
85
|
+
missionLogIntervalSteps,
|
|
86
|
+
missionLogIntervalMs,
|
|
87
|
+
...localConfigOverrides
|
|
88
|
+
} = config;
|
|
89
|
+
|
|
90
|
+
const localRuntime =
|
|
91
|
+
Object.keys(localConfigOverrides).length > 0
|
|
92
|
+
? {
|
|
93
|
+
configOverrides:
|
|
94
|
+
localConfigOverrides as Partial<LocalRuntimeConfigOverrides>,
|
|
95
|
+
}
|
|
96
|
+
: undefined;
|
|
97
|
+
|
|
98
|
+
return {
|
|
99
|
+
config: {
|
|
100
|
+
...(sessionId ? { sessionId } : {}),
|
|
101
|
+
providerId,
|
|
102
|
+
modelId,
|
|
103
|
+
...(apiKey ? { apiKey } : {}),
|
|
104
|
+
cwd,
|
|
105
|
+
...(workspaceRoot ? { workspaceRoot } : {}),
|
|
106
|
+
systemPrompt,
|
|
107
|
+
mode,
|
|
108
|
+
rules,
|
|
109
|
+
maxIterations,
|
|
110
|
+
enableTools,
|
|
111
|
+
enableSpawnAgent,
|
|
112
|
+
enableAgentTeams,
|
|
113
|
+
disableMcpSettingsTools,
|
|
114
|
+
teamName,
|
|
115
|
+
missionLogIntervalSteps,
|
|
116
|
+
missionLogIntervalMs,
|
|
117
|
+
},
|
|
118
|
+
...(localRuntime ? { localRuntime } : {}),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export interface StartSessionResult {
|
|
123
|
+
sessionId: string;
|
|
124
|
+
manifest: SessionManifest;
|
|
125
|
+
manifestPath: string;
|
|
126
|
+
messagesPath: string;
|
|
127
|
+
result?: AgentResult;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export interface SendSessionInput {
|
|
131
|
+
sessionId: string;
|
|
132
|
+
prompt: string;
|
|
133
|
+
userImages?: string[];
|
|
134
|
+
userFiles?: string[];
|
|
135
|
+
delivery?: "queue" | "steer";
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export interface SessionAccumulatedUsage {
|
|
139
|
+
inputTokens: number;
|
|
140
|
+
outputTokens: number;
|
|
141
|
+
cacheReadTokens: number;
|
|
142
|
+
cacheWriteTokens: number;
|
|
143
|
+
totalCost: number;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* RuntimeHost is the transport/runtime boundary for core session execution.
|
|
148
|
+
* Callers must normalize broad local config into `RuntimeSessionConfig`
|
|
149
|
+
* plus optional `localRuntime` overrides before invoking a host.
|
|
150
|
+
*/
|
|
151
|
+
export interface RuntimeHost {
|
|
152
|
+
readonly runtimeAddress?: string;
|
|
153
|
+
start(input: StartSessionInput): Promise<StartSessionResult>;
|
|
154
|
+
send(input: SendSessionInput): Promise<AgentResult | undefined>;
|
|
155
|
+
getAccumulatedUsage(
|
|
156
|
+
sessionId: string,
|
|
157
|
+
): Promise<SessionAccumulatedUsage | undefined>;
|
|
158
|
+
abort(sessionId: string, reason?: unknown): Promise<void>;
|
|
159
|
+
stop(sessionId: string): Promise<void>;
|
|
160
|
+
dispose(reason?: string): Promise<void>;
|
|
161
|
+
get(sessionId: string): Promise<SessionRecord | undefined>;
|
|
162
|
+
list(limit?: number): Promise<SessionRecord[]>;
|
|
163
|
+
delete(sessionId: string): Promise<boolean>;
|
|
164
|
+
update(
|
|
165
|
+
sessionId: string,
|
|
166
|
+
updates: {
|
|
167
|
+
prompt?: string | null;
|
|
168
|
+
metadata?: Record<string, unknown> | null;
|
|
169
|
+
title?: string | null;
|
|
170
|
+
},
|
|
171
|
+
): Promise<{ updated: boolean }>;
|
|
172
|
+
readMessages(sessionId: string): Promise<LlmsProviders.Message[]>;
|
|
173
|
+
handleHookEvent(payload: HookEventPayload): Promise<void>;
|
|
174
|
+
subscribe(listener: (event: CoreSessionEvent) => void): () => void;
|
|
175
|
+
updateSessionModel?(sessionId: string, modelId: string): Promise<void>;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export type RuntimeHostMode = "auto" | "rpc" | "local";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import { getValidOpenAICodexCredentials } from "../auth/codex";
|
|
12
12
|
import { getValidOcaCredentials } from "../auth/oca";
|
|
13
13
|
import { decodeJwtPayload } from "../auth/utils";
|
|
14
|
-
import { ProviderSettingsManager } from "../storage/provider-settings-manager";
|
|
14
|
+
import { ProviderSettingsManager } from "../services/storage/provider-settings-manager";
|
|
15
15
|
|
|
16
16
|
const DEFAULT_CLINE_API_BASE_URL = "https://api.cline.bot";
|
|
17
17
|
const WORKOS_TOKEN_PREFIX = "workos:";
|
|
@@ -3,7 +3,7 @@ import { tmpdir } from "node:os";
|
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import type { Tool } from "@clinebot/shared";
|
|
5
5
|
import { describe, expect, it } from "vitest";
|
|
6
|
-
import { createBuiltinTools } from "../tools";
|
|
6
|
+
import { createBuiltinTools } from "../extensions/tools";
|
|
7
7
|
import { DefaultRuntimeBuilder } from "./runtime-builder";
|
|
8
8
|
|
|
9
9
|
type LegacyConfig = {
|
|
@@ -9,12 +9,12 @@ import type {
|
|
|
9
9
|
Tool,
|
|
10
10
|
} from "@clinebot/shared";
|
|
11
11
|
import type { UserInstructionConfigWatcher } from "../extensions/config";
|
|
12
|
+
import type { ToolExecutors } from "../extensions/tools";
|
|
12
13
|
import type {
|
|
13
14
|
AgentTeamsRuntime,
|
|
14
15
|
DelegatedAgentConfigProvider,
|
|
15
16
|
TeamEvent,
|
|
16
|
-
} from "../team";
|
|
17
|
-
import type { ToolExecutors } from "../tools";
|
|
17
|
+
} from "../extensions/tools/team";
|
|
18
18
|
import type { CoreSessionConfig } from "../types/config";
|
|
19
19
|
|
|
20
20
|
export interface BuiltRuntime {
|