@clinebot/core 0.0.35 → 0.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -2
- package/dist/ClineCore.d.ts +53 -39
- package/dist/ClineCore.d.ts.map +1 -1
- package/dist/account/index.d.ts +1 -1
- package/dist/account/index.d.ts.map +1 -1
- package/dist/account/rpc.d.ts +6 -6
- package/dist/account/rpc.d.ts.map +1 -1
- package/dist/cron/index.d.ts +6 -0
- package/dist/cron/index.d.ts.map +1 -0
- package/dist/cron/resource-limiter.d.ts +9 -0
- package/dist/cron/resource-limiter.d.ts.map +1 -0
- package/dist/cron/schedule-command-service.d.ts +10 -0
- package/dist/cron/schedule-command-service.d.ts.map +1 -0
- package/dist/cron/schedule-service.d.ts +100 -0
- package/dist/cron/schedule-service.d.ts.map +1 -0
- package/dist/cron/scheduler.d.ts +66 -0
- package/dist/cron/scheduler.d.ts.map +1 -0
- package/dist/cron/sqlite-schedule-store.d.ts +52 -0
- package/dist/cron/sqlite-schedule-store.d.ts.map +1 -0
- package/dist/extensions/config/agent-config-loader.d.ts +4 -3
- package/dist/extensions/config/agent-config-loader.d.ts.map +1 -1
- package/dist/extensions/config/runtime-commands.d.ts +1 -0
- package/dist/extensions/config/runtime-commands.d.ts.map +1 -1
- package/dist/extensions/config/user-instruction-config-loader.d.ts +1 -0
- package/dist/extensions/config/user-instruction-config-loader.d.ts.map +1 -1
- package/dist/extensions/context/agentic-compaction.d.ts +2 -2
- package/dist/extensions/context/agentic-compaction.d.ts.map +1 -1
- package/dist/extensions/context/compaction-shared.d.ts +5 -4
- package/dist/extensions/context/compaction-shared.d.ts.map +1 -1
- package/dist/extensions/context/compaction.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-config-loader.d.ts +9 -2
- package/dist/extensions/plugin/plugin-config-loader.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-loader.d.ts +5 -3
- package/dist/extensions/plugin/plugin-loader.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-module-import.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-sandbox.d.ts +15 -2
- package/dist/extensions/plugin/plugin-sandbox.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-targeting.d.ts +7 -0
- package/dist/extensions/plugin/plugin-targeting.d.ts.map +1 -0
- package/dist/extensions/plugin-sandbox-bootstrap.js +211 -211
- package/dist/extensions/tools/definitions.d.ts +1 -1
- package/dist/extensions/tools/definitions.d.ts.map +1 -1
- package/dist/extensions/tools/executors/apply-patch.d.ts +3 -1
- package/dist/extensions/tools/executors/apply-patch.d.ts.map +1 -1
- package/dist/extensions/tools/executors/search.d.ts +1 -1
- package/dist/extensions/tools/executors/search.d.ts.map +1 -1
- package/dist/extensions/tools/index.d.ts +2 -0
- package/dist/extensions/tools/index.d.ts.map +1 -1
- package/dist/extensions/tools/presets.d.ts +26 -43
- package/dist/extensions/tools/presets.d.ts.map +1 -1
- package/dist/extensions/tools/runtime.d.ts +25 -0
- package/dist/extensions/tools/runtime.d.ts.map +1 -0
- package/dist/extensions/tools/schemas.d.ts.map +1 -1
- package/dist/extensions/tools/team/team-tools.d.ts +1 -0
- package/dist/extensions/tools/team/team-tools.d.ts.map +1 -1
- package/dist/hooks/hook-file-hooks.d.ts +4 -1
- package/dist/hooks/hook-file-hooks.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/subprocess.d.ts +8 -1
- package/dist/hooks/subprocess.d.ts.map +1 -1
- package/dist/hub/browser-websocket.d.ts +18 -0
- package/dist/hub/browser-websocket.d.ts.map +1 -0
- package/dist/hub/client.d.ts +45 -0
- package/dist/hub/client.d.ts.map +1 -0
- package/dist/hub/connect.d.ts +15 -0
- package/dist/hub/connect.d.ts.map +1 -0
- package/dist/hub/daemon-entry.d.ts +2 -0
- package/dist/hub/daemon-entry.d.ts.map +1 -0
- package/dist/hub/daemon-entry.js +1045 -0
- package/dist/hub/daemon.d.ts +5 -0
- package/dist/hub/daemon.d.ts.map +1 -0
- package/dist/hub/defaults.d.ts +13 -0
- package/dist/hub/defaults.d.ts.map +1 -0
- package/dist/hub/discovery.d.ts +29 -0
- package/dist/hub/discovery.d.ts.map +1 -0
- package/dist/hub/index.d.ts +15 -0
- package/dist/hub/index.d.ts.map +1 -0
- package/dist/hub/index.js +1044 -0
- package/dist/hub/native-transport.d.ts +17 -0
- package/dist/hub/native-transport.d.ts.map +1 -0
- package/dist/hub/runtime-handlers.d.ts +11 -0
- package/dist/hub/runtime-handlers.d.ts.map +1 -0
- package/dist/hub/server.d.ts +86 -0
- package/dist/hub/server.d.ts.map +1 -0
- package/dist/hub/session-client.d.ts +87 -0
- package/dist/hub/session-client.d.ts.map +1 -0
- package/dist/hub/start-shared-server.d.ts +19 -0
- package/dist/hub/start-shared-server.d.ts.map +1 -0
- package/dist/hub/transport.d.ts +8 -0
- package/dist/hub/transport.d.ts.map +1 -0
- package/dist/hub/ui-client.d.ts +44 -0
- package/dist/hub/ui-client.d.ts.map +1 -0
- package/dist/hub/workspace.d.ts +4 -0
- package/dist/hub/workspace.d.ts.map +1 -0
- package/dist/index.d.ts +26 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +498 -476
- package/dist/llms/configured-provider-registry.d.ts +28 -0
- package/dist/llms/configured-provider-registry.d.ts.map +1 -0
- package/dist/llms/provider-defaults.d.ts +27 -0
- package/dist/llms/provider-defaults.d.ts.map +1 -0
- package/dist/llms/provider-settings.d.ts +202 -0
- package/dist/llms/provider-settings.d.ts.map +1 -0
- package/dist/llms/runtime-config.d.ts +4 -0
- package/dist/llms/runtime-config.d.ts.map +1 -0
- package/dist/llms/runtime-registry.d.ts +20 -0
- package/dist/llms/runtime-registry.d.ts.map +1 -0
- package/dist/llms/runtime-types.d.ts +85 -0
- package/dist/llms/runtime-types.d.ts.map +1 -0
- package/dist/runtime/host.d.ts +1 -2
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/rules.d.ts +1 -0
- package/dist/runtime/rules.d.ts.map +1 -1
- package/dist/runtime/runtime-builder.d.ts.map +1 -1
- package/dist/runtime/runtime-host.d.ts +22 -24
- package/dist/runtime/runtime-host.d.ts.map +1 -1
- package/dist/runtime/runtime-oauth-token-manager.d.ts.map +1 -1
- package/dist/runtime/session-runtime.d.ts +1 -19
- package/dist/runtime/session-runtime.d.ts.map +1 -1
- package/dist/services/global-settings.d.ts +12 -0
- package/dist/services/global-settings.d.ts.map +1 -0
- package/dist/services/local-runtime-bootstrap.d.ts +9 -3
- package/dist/services/local-runtime-bootstrap.d.ts.map +1 -1
- package/dist/services/plugin-tools.d.ts +16 -0
- package/dist/services/plugin-tools.d.ts.map +1 -0
- package/dist/services/providers/local-provider-registry.d.ts +4 -4
- package/dist/services/providers/local-provider-registry.d.ts.map +1 -1
- package/dist/services/providers/local-provider-service.d.ts +13 -13
- package/dist/services/providers/local-provider-service.d.ts.map +1 -1
- package/dist/services/session-data.d.ts +1 -1
- package/dist/services/session-data.d.ts.map +1 -1
- package/dist/services/storage/provider-settings-legacy-migration.d.ts +1 -1
- package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -1
- package/dist/services/telemetry/index.js +28 -15
- package/dist/services/workspace-manifest.d.ts +11 -0
- package/dist/services/workspace-manifest.d.ts.map +1 -1
- package/dist/session/persistence-service.d.ts +11 -23
- package/dist/session/persistence-service.d.ts.map +1 -1
- package/dist/session/session-manifest-store.d.ts +22 -0
- package/dist/session/session-manifest-store.d.ts.map +1 -0
- package/dist/session/session-row.d.ts +93 -0
- package/dist/session/session-row.d.ts.map +1 -0
- package/dist/session/session-service.d.ts +2 -102
- package/dist/session/session-service.d.ts.map +1 -1
- package/dist/session/subagent-session-manager.d.ts +36 -0
- package/dist/session/subagent-session-manager.d.ts.map +1 -0
- package/dist/session/team-persistence-store.d.ts +24 -0
- package/dist/session/team-persistence-store.d.ts.map +1 -0
- package/dist/transports/hub.d.ts +47 -0
- package/dist/transports/hub.d.ts.map +1 -0
- package/dist/transports/local.d.ts +10 -6
- package/dist/transports/local.d.ts.map +1 -1
- package/dist/transports/remote.d.ts +10 -0
- package/dist/transports/remote.d.ts.map +1 -0
- package/dist/transports/runtime-host-support.d.ts +3 -2
- package/dist/transports/runtime-host-support.d.ts.map +1 -1
- package/dist/types/chat-schema.d.ts +10 -12
- package/dist/types/chat-schema.d.ts.map +1 -1
- package/dist/types/config.d.ts +8 -7
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/provider-settings.d.ts +4 -5
- package/dist/types/provider-settings.d.ts.map +1 -1
- package/dist/types/session.d.ts +2 -1
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +20 -6
- package/src/ClineCore.ts +68 -40
- package/src/account/index.ts +3 -3
- package/src/account/rpc.ts +12 -12
- package/src/cron/index.ts +5 -0
- package/src/cron/resource-limiter.ts +46 -0
- package/src/cron/schedule-command-service.ts +193 -0
- package/src/cron/schedule-service.ts +703 -0
- package/src/cron/scheduler.ts +637 -0
- package/src/cron/sqlite-schedule-store.ts +708 -0
- package/src/extensions/config/agent-config-loader.ts +17 -7
- package/src/extensions/config/runtime-commands.ts +6 -0
- package/src/extensions/config/user-instruction-config-loader.ts +1 -0
- package/src/extensions/context/agentic-compaction.ts +3 -3
- package/src/extensions/context/basic-compaction.ts +2 -2
- package/src/extensions/context/compaction-shared.ts +5 -4
- package/src/extensions/context/compaction.ts +3 -3
- package/src/extensions/plugin/plugin-config-loader.ts +17 -2
- package/src/extensions/plugin/plugin-loader.ts +48 -4
- package/src/extensions/plugin/plugin-module-import.ts +0 -2
- package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +93 -39
- package/src/extensions/plugin/plugin-sandbox.ts +47 -27
- package/src/extensions/plugin/plugin-targeting.ts +32 -0
- package/src/extensions/tools/definitions.ts +30 -49
- package/src/extensions/tools/executors/apply-patch.ts +69 -80
- package/src/extensions/tools/executors/search.ts +195 -3
- package/src/extensions/tools/index.ts +10 -0
- package/src/extensions/tools/presets.ts +31 -46
- package/src/extensions/tools/runtime.ts +261 -0
- package/src/extensions/tools/schemas.ts +4 -2
- package/src/extensions/tools/team/team-tools.ts +21 -0
- package/src/hooks/hook-file-hooks.ts +8 -2
- package/src/hooks/index.ts +0 -7
- package/src/hooks/subprocess-runner.ts +1 -1
- package/src/hooks/subprocess.ts +9 -0
- package/src/hub/browser-websocket.ts +137 -0
- package/src/hub/client.ts +574 -0
- package/src/hub/connect.ts +156 -0
- package/src/hub/daemon-entry.ts +87 -0
- package/src/hub/daemon.ts +181 -0
- package/src/hub/defaults.ts +43 -0
- package/src/hub/discovery.ts +247 -0
- package/src/hub/index.ts +14 -0
- package/src/hub/native-transport.ts +31 -0
- package/src/hub/runtime-handlers.ts +140 -0
- package/src/hub/server.ts +1888 -0
- package/src/hub/session-client.ts +460 -0
- package/src/hub/start-shared-server.ts +58 -0
- package/src/hub/transport.ts +14 -0
- package/src/hub/ui-client.ts +122 -0
- package/src/hub/workspace.ts +19 -0
- package/src/index.ts +124 -68
- package/src/llms/configured-provider-registry.ts +193 -0
- package/src/llms/provider-defaults.ts +637 -0
- package/src/llms/provider-settings.ts +263 -0
- package/src/llms/runtime-config.ts +43 -0
- package/src/llms/runtime-registry.ts +171 -0
- package/src/llms/runtime-types.ts +121 -0
- package/src/runtime/host.ts +107 -269
- package/src/runtime/index.ts +1 -0
- package/src/runtime/rules.ts +12 -0
- package/src/runtime/runtime-builder.ts +24 -8
- package/src/runtime/runtime-host.ts +89 -61
- package/src/runtime/runtime-oauth-token-manager.ts +11 -15
- package/src/runtime/session-runtime.ts +0 -24
- package/src/services/global-settings.ts +122 -0
- package/src/services/local-runtime-bootstrap.ts +51 -13
- package/src/services/plugin-tools.ts +85 -0
- package/src/services/providers/local-provider-registry.ts +6 -6
- package/src/services/providers/local-provider-service.ts +42 -37
- package/src/services/session-data.ts +15 -9
- package/src/services/storage/provider-settings-legacy-migration.ts +6 -4
- package/src/services/storage/provider-settings-manager.ts +1 -1
- package/src/services/workspace-manifest.ts +18 -0
- package/src/session/file-session-service.ts +1 -1
- package/src/session/index.ts +6 -27
- package/src/session/persistence-service.ts +119 -504
- package/src/session/session-manifest-store.ts +158 -0
- package/src/session/session-row.ts +199 -0
- package/src/session/session-service.ts +17 -376
- package/src/session/session-team-coordination.ts +1 -1
- package/src/session/subagent-session-manager.ts +397 -0
- package/src/session/team-persistence-store.ts +176 -0
- package/src/transports/hub.ts +656 -0
- package/src/transports/local.ts +135 -40
- package/src/transports/remote.ts +26 -0
- package/src/transports/runtime-host-support.ts +63 -9
- package/src/types/chat-schema.ts +4 -5
- package/src/types/config.ts +8 -7
- package/src/types/provider-settings.ts +11 -7
- package/src/types/session.ts +2 -4
- package/src/types.ts +27 -1
- package/dist/hooks/persistent.d.ts +0 -64
- package/dist/hooks/persistent.d.ts.map +0 -1
- package/dist/runtime/rpc-runtime-ensure.d.ts +0 -65
- package/dist/runtime/rpc-runtime-ensure.d.ts.map +0 -1
- package/dist/runtime/rpc-spawn-lease.d.ts +0 -8
- package/dist/runtime/rpc-spawn-lease.d.ts.map +0 -1
- package/dist/session/rpc-session-service.d.ts +0 -16
- package/dist/session/rpc-session-service.d.ts.map +0 -1
- package/dist/session/sqlite-rpc-session-backend.d.ts +0 -31
- package/dist/session/sqlite-rpc-session-backend.d.ts.map +0 -1
- package/dist/transports/rpc.d.ts +0 -51
- package/dist/transports/rpc.d.ts.map +0 -1
- package/src/ClineCore.test.ts +0 -226
- package/src/account/cline-account-service.test.ts +0 -185
- package/src/account/featurebase-token.test.ts +0 -175
- package/src/account/rpc.test.ts +0 -63
- package/src/auth/bounded-ttl-cache.test.ts +0 -38
- package/src/auth/client.test.ts +0 -69
- package/src/auth/cline.test.ts +0 -267
- package/src/auth/codex.test.ts +0 -170
- package/src/auth/oca.test.ts +0 -340
- package/src/auth/server.test.ts +0 -287
- package/src/auth/utils.test.ts +0 -128
- package/src/extensions/config/agent-config-loader.test.ts +0 -236
- package/src/extensions/config/hooks-config-loader.test.ts +0 -20
- package/src/extensions/config/runtime-commands.test.ts +0 -115
- package/src/extensions/config/unified-config-file-watcher.test.ts +0 -196
- package/src/extensions/config/user-instruction-config-loader.test.ts +0 -246
- package/src/extensions/context/compaction.test.ts +0 -483
- package/src/extensions/mcp/config-loader.test.ts +0 -238
- package/src/extensions/mcp/manager.test.ts +0 -105
- package/src/extensions/plugin/plugin-config-loader.test.ts +0 -184
- package/src/extensions/plugin/plugin-loader.test.ts +0 -292
- package/src/extensions/plugin/plugin-sandbox.test.ts +0 -423
- package/src/extensions/tools/definitions.test.ts +0 -780
- package/src/extensions/tools/executors/bash.test.ts +0 -87
- package/src/extensions/tools/executors/editor.test.ts +0 -35
- package/src/extensions/tools/executors/file-read.test.ts +0 -125
- package/src/extensions/tools/model-tool-routing.test.ts +0 -86
- package/src/extensions/tools/presets.test.ts +0 -70
- package/src/extensions/tools/team/multi-agent.lifecycle.test.ts +0 -455
- package/src/extensions/tools/team/spawn-agent-tool.test.ts +0 -381
- package/src/extensions/tools/team/team-tools.test.ts +0 -918
- package/src/hooks/checkpoint-hooks.test.ts +0 -168
- package/src/hooks/hook-file-hooks.test.ts +0 -311
- package/src/hooks/persistent.ts +0 -661
- package/src/runtime/history.test.ts +0 -114
- package/src/runtime/host.test.ts +0 -230
- package/src/runtime/rpc-runtime-ensure.test.ts +0 -123
- package/src/runtime/rpc-runtime-ensure.ts +0 -659
- package/src/runtime/rpc-spawn-lease.test.ts +0 -81
- package/src/runtime/rpc-spawn-lease.ts +0 -156
- package/src/runtime/runtime-builder.team-persistence.test.ts +0 -245
- package/src/runtime/runtime-builder.test.ts +0 -615
- package/src/runtime/runtime-oauth-token-manager.test.ts +0 -137
- package/src/runtime/runtime-parity.test.ts +0 -143
- package/src/services/providers/local-provider-service.test.ts +0 -1062
- package/src/services/session-data.test.ts +0 -160
- package/src/services/storage/provider-settings-legacy-migration.test.ts +0 -424
- package/src/services/storage/provider-settings-manager.test.ts +0 -191
- package/src/services/telemetry/OpenTelemetryAdapter.test.ts +0 -157
- package/src/services/telemetry/OpenTelemetryProvider.test.ts +0 -326
- package/src/services/telemetry/TelemetryLoggerSink.test.ts +0 -42
- package/src/services/telemetry/TelemetryService.test.ts +0 -134
- package/src/services/telemetry/distinct-id.test.ts +0 -57
- package/src/services/workspace/file-indexer.d.ts +0 -11
- package/src/services/workspace/file-indexer.test.ts +0 -156
- package/src/services/workspace/mention-enricher.test.ts +0 -106
- package/src/session/persistence-service.test.ts +0 -300
- package/src/session/rpc-session-service.ts +0 -114
- package/src/session/session-service.team-persistence.test.ts +0 -48
- package/src/session/sqlite-rpc-session-backend.ts +0 -301
- package/src/transports/local.e2e.test.ts +0 -380
- package/src/transports/local.test.ts +0 -2559
- package/src/transports/rpc.test.ts +0 -82
- package/src/transports/rpc.ts +0 -665
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { type AgentHooks, type HookSessionContextProvider } from "@clinebot/shared";
|
|
2
|
-
import { type HookEventPayload, type RunHookResult } from "./subprocess";
|
|
3
|
-
export interface PersistentHookClientOptions {
|
|
4
|
-
command: string[];
|
|
5
|
-
cwd?: string;
|
|
6
|
-
env?: NodeJS.ProcessEnv;
|
|
7
|
-
onSpawn?: (event: {
|
|
8
|
-
command: string[];
|
|
9
|
-
pid?: number;
|
|
10
|
-
detached: boolean;
|
|
11
|
-
}) => void;
|
|
12
|
-
}
|
|
13
|
-
export declare class PersistentHookClient {
|
|
14
|
-
private readonly options;
|
|
15
|
-
private child?;
|
|
16
|
-
private startPromise?;
|
|
17
|
-
private readonly pending;
|
|
18
|
-
private nextId;
|
|
19
|
-
private stdoutBuffer;
|
|
20
|
-
private closing;
|
|
21
|
-
constructor(options: PersistentHookClientOptions);
|
|
22
|
-
send(payload: HookEventPayload, options?: {
|
|
23
|
-
timeoutMs?: number;
|
|
24
|
-
}): Promise<RunHookResult | undefined>;
|
|
25
|
-
close(): Promise<void>;
|
|
26
|
-
private ensureStarted;
|
|
27
|
-
private start;
|
|
28
|
-
private handleStdout;
|
|
29
|
-
private handleResponseLine;
|
|
30
|
-
private handleChildExit;
|
|
31
|
-
private clearPendingRequest;
|
|
32
|
-
private rejectPendingRequest;
|
|
33
|
-
}
|
|
34
|
-
export interface PersistentSubprocessHooksOptions {
|
|
35
|
-
command?: string[];
|
|
36
|
-
cwd?: string;
|
|
37
|
-
env?: NodeJS.ProcessEnv;
|
|
38
|
-
timeoutMs?: number;
|
|
39
|
-
onSpawn?: (event: {
|
|
40
|
-
command: string[];
|
|
41
|
-
pid?: number;
|
|
42
|
-
detached: boolean;
|
|
43
|
-
}) => void;
|
|
44
|
-
onDispatchError?: (error: Error, payload: HookEventPayload) => void;
|
|
45
|
-
onDispatch?: (event: {
|
|
46
|
-
payload: HookEventPayload;
|
|
47
|
-
result?: RunHookResult;
|
|
48
|
-
detached: boolean;
|
|
49
|
-
}) => void;
|
|
50
|
-
sessionContext?: HookSessionContextProvider;
|
|
51
|
-
fallbackToSubprocess?: boolean;
|
|
52
|
-
}
|
|
53
|
-
export interface PersistentSubprocessHookControl {
|
|
54
|
-
hooks: AgentHooks;
|
|
55
|
-
shutdown: (ctx: {
|
|
56
|
-
agentId: string;
|
|
57
|
-
conversationId: string;
|
|
58
|
-
parentAgentId: string | null;
|
|
59
|
-
reason?: string;
|
|
60
|
-
}) => Promise<void>;
|
|
61
|
-
client: PersistentHookClient;
|
|
62
|
-
}
|
|
63
|
-
export declare function createPersistentSubprocessHooks(options?: PersistentSubprocessHooksOptions): PersistentSubprocessHookControl;
|
|
64
|
-
//# sourceMappingURL=persistent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"persistent.d.ts","sourceRoot":"","sources":["../../src/hooks/persistent.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,UAAU,EACf,KAAK,0BAA0B,EAE/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAQN,KAAK,gBAAgB,EAIrB,KAAK,aAAa,EAIlB,MAAM,cAAc,CAAC;AA0CtB,MAAM,WAAW,2BAA2B;IAC3C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;KAClB,KAAK,IAAI,CAAC;CACX;AAED,qBAAa,oBAAoB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,KAAK,CAAC,CAAiC;IAC/C,OAAO,CAAC,YAAY,CAAC,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,2BAA2B;IAI1C,IAAI,CACT,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9B,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAgC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAyDd,aAAa;YAgBb,KAAK;IAuDnB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,oBAAoB;CAI5B;AAED,MAAM,WAAW,gCAAgC;IAChD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;KAClB,KAAK,IAAI,CAAC;IACX,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACpE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QACpB,OAAO,EAAE,gBAAgB,CAAC;QAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,QAAQ,EAAE,OAAO,CAAC;KAClB,KAAK,IAAI,CAAC;IACX,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,+BAA+B;IAC/C,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,CAAC,GAAG,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,EAAE,oBAAoB,CAAC;CAC7B;AA2HD,wBAAgB,+BAA+B,CAC9C,OAAO,GAAE,gCAAqC,GAC5C,+BAA+B,CA0LjC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
export declare const RPC_STARTUP_LOCK_BYPASS_ENV = "CLINE_RPC_STARTUP_LOCK_HELD";
|
|
2
|
-
export declare const RPC_OWNER_ID_ENV = "CLINE_RPC_OWNER_ID";
|
|
3
|
-
export declare const RPC_BUILD_ID_ENV = "CLINE_RPC_BUILD_ID";
|
|
4
|
-
export declare const RPC_DISCOVERY_PATH_ENV = "CLINE_RPC_DISCOVERY_PATH";
|
|
5
|
-
export type RpcDiscoveryRecord = {
|
|
6
|
-
ownerId: string;
|
|
7
|
-
buildId: string;
|
|
8
|
-
entryPath?: string;
|
|
9
|
-
address: string;
|
|
10
|
-
pid?: number;
|
|
11
|
-
serverId?: string;
|
|
12
|
-
startedAt?: string;
|
|
13
|
-
protocolVersion: string;
|
|
14
|
-
updatedAt: string;
|
|
15
|
-
};
|
|
16
|
-
export type RpcOwnerContext = {
|
|
17
|
-
ownerId: string;
|
|
18
|
-
buildId: string;
|
|
19
|
-
entryPath?: string;
|
|
20
|
-
discoveryPath: string;
|
|
21
|
-
};
|
|
22
|
-
export type ResolveRpcRuntimeResult = {
|
|
23
|
-
address: string;
|
|
24
|
-
action: "reuse" | "new-port" | "started";
|
|
25
|
-
owner: RpcOwnerContext;
|
|
26
|
-
};
|
|
27
|
-
export type EnsureRpcRuntimeOptions = {
|
|
28
|
-
owner?: RpcOwnerContext;
|
|
29
|
-
resolveOwner?: () => RpcOwnerContext;
|
|
30
|
-
spawnIfNeeded: (address: string, owner: RpcOwnerContext) => void | Promise<void>;
|
|
31
|
-
readinessCheck?: (address: string) => Promise<boolean>;
|
|
32
|
-
};
|
|
33
|
-
export type ResolveRpcOwnerContextOptions = {
|
|
34
|
-
discoveryPath?: string;
|
|
35
|
-
hostBuildKey?: string;
|
|
36
|
-
identityPath?: string;
|
|
37
|
-
ownerBasis?: string;
|
|
38
|
-
ownerId?: string;
|
|
39
|
-
ownerPrefix?: string;
|
|
40
|
-
};
|
|
41
|
-
export declare function resolveRpcRuntimeBuildKey(hostBuildKey?: string): string;
|
|
42
|
-
export declare function resolveRpcOwnerContext(options?: ResolveRpcOwnerContextOptions): RpcOwnerContext;
|
|
43
|
-
export declare function recordRpcDiscovery(owner: RpcOwnerContext, record: Omit<RpcDiscoveryRecord, "ownerId" | "buildId" | "updatedAt">): Promise<void>;
|
|
44
|
-
export declare function clearRpcDiscoveryIfAddressMatches(owner: RpcOwnerContext, address: string): Promise<void>;
|
|
45
|
-
export declare function isCompatibleRuntime(address: string): Promise<boolean>;
|
|
46
|
-
export type RpcStartupLockHandle = {
|
|
47
|
-
markRunning: (details?: {
|
|
48
|
-
resolvedAddress?: string;
|
|
49
|
-
serverId?: string;
|
|
50
|
-
}) => Promise<void>;
|
|
51
|
-
};
|
|
52
|
-
export declare function withRpcStartupLock<T>(address: string, action: (lock: RpcStartupLockHandle) => Promise<T>): Promise<T>;
|
|
53
|
-
export declare function resolveEnsuredRpcRuntime(requestedAddress: string, options?: {
|
|
54
|
-
owner?: RpcOwnerContext;
|
|
55
|
-
resolveOwner?: () => RpcOwnerContext;
|
|
56
|
-
/**
|
|
57
|
-
* When true, skip startup lock acquisition. Use this when the caller
|
|
58
|
-
* already holds the lock via {@link withRpcStartupLock} to avoid a
|
|
59
|
-
* deadlock from nested lock acquisition on the same address.
|
|
60
|
-
*/
|
|
61
|
-
lockAlreadyHeld?: boolean;
|
|
62
|
-
}): Promise<ResolveRpcRuntimeResult>;
|
|
63
|
-
export declare function waitForCompatibleRpcRuntime(address: string, readinessCheck?: (address: string) => Promise<boolean>): Promise<boolean>;
|
|
64
|
-
export declare function ensureRpcRuntimeAddress(requestedAddress: string, options: EnsureRpcRuntimeOptions): Promise<ResolveRpcRuntimeResult>;
|
|
65
|
-
//# sourceMappingURL=rpc-runtime-ensure.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-runtime-ensure.d.ts","sourceRoot":"","sources":["../../src/runtime/rpc-runtime-ensure.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-spawn-lease.d.ts","sourceRoot":"","sources":["../../src/runtime/rpc-spawn-lease.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAwED,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,aAAa,GAAG,SAAS,CAyD3B"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { SessionMessagesArtifactUploader } from "../types/session";
|
|
2
|
-
import { UnifiedSessionPersistenceService } from "./persistence-service";
|
|
3
|
-
export interface RpcCoreSessionServiceOptions {
|
|
4
|
-
address?: string;
|
|
5
|
-
sessionsDir: string;
|
|
6
|
-
messagesArtifactUploader?: SessionMessagesArtifactUploader;
|
|
7
|
-
}
|
|
8
|
-
export declare class RpcCoreSessionService extends UnifiedSessionPersistenceService {
|
|
9
|
-
private readonly sessionsDirPath;
|
|
10
|
-
private readonly client;
|
|
11
|
-
readonly address: string;
|
|
12
|
-
constructor(options: RpcCoreSessionServiceOptions);
|
|
13
|
-
ensureSessionsDir(): string;
|
|
14
|
-
close(): void;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=rpc-session-service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-session-service.d.ts","sourceRoot":"","sources":["../../src/session/rpc-session-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AAKxE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AAwEzE,MAAM,WAAW,4BAA4B;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB,CAAC,EAAE,+BAA+B,CAAC;CAC3D;AAED,qBAAa,qBAAsB,SAAQ,gCAAgC;IAC1E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,4BAA4B;IAaxC,iBAAiB,IAAI,MAAM;IAOpC,KAAK,IAAI,IAAI;CAGb"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { RpcSessionBackend, RpcSessionRow, RpcSessionUpdateInput, RpcSpawnQueueItem } from "@clinebot/rpc";
|
|
2
|
-
export interface SqliteRpcSessionBackendOptions {
|
|
3
|
-
sessionsDir?: string;
|
|
4
|
-
}
|
|
5
|
-
export declare class SqliteRpcSessionBackend implements RpcSessionBackend {
|
|
6
|
-
private readonly store;
|
|
7
|
-
constructor(options?: SqliteRpcSessionBackendOptions);
|
|
8
|
-
init(): void;
|
|
9
|
-
upsertSession(row: RpcSessionRow): void;
|
|
10
|
-
getSession(sessionId: string): RpcSessionRow | undefined;
|
|
11
|
-
listSessions(options: {
|
|
12
|
-
limit: number;
|
|
13
|
-
parentSessionId?: string;
|
|
14
|
-
status?: string;
|
|
15
|
-
}): RpcSessionRow[];
|
|
16
|
-
updateSession(input: RpcSessionUpdateInput): {
|
|
17
|
-
updated: boolean;
|
|
18
|
-
statusLock: number;
|
|
19
|
-
};
|
|
20
|
-
deleteSession(sessionId: string): boolean;
|
|
21
|
-
deleteSessionsByParent(parentSessionId: string): void;
|
|
22
|
-
enqueueSpawnRequest(input: {
|
|
23
|
-
rootSessionId: string;
|
|
24
|
-
parentAgentId: string;
|
|
25
|
-
task?: string;
|
|
26
|
-
systemPrompt?: string;
|
|
27
|
-
}): void;
|
|
28
|
-
claimSpawnRequest(rootSessionId: string, parentAgentId: string): RpcSpawnQueueItem | undefined;
|
|
29
|
-
}
|
|
30
|
-
export declare function createSqliteRpcSessionBackend(options?: SqliteRpcSessionBackendOptions): RpcSessionBackend;
|
|
31
|
-
//# sourceMappingURL=sqlite-rpc-session-backend.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-rpc-session-backend.d.ts","sourceRoot":"","sources":["../../src/session/sqlite-rpc-session-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,aAAa,EAEb,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,eAAe,CAAC;AAUvB,MAAM,WAAW,8BAA8B;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,uBAAwB,YAAW,iBAAiB;IAChE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAE/B,OAAO,GAAE,8BAAmC;IAIjD,IAAI,IAAI,IAAI;IAIZ,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAyCvC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAwDxD,YAAY,CAAC,OAAO,EAAE;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,aAAa,EAAE;IA8BZ,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG;QACnD,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACnB;IAoEM,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAOzC,sBAAsB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI;IAMrD,mBAAmB,CAAC,KAAK,EAAE;QACjC,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI;IAcD,iBAAiB,CACvB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACnB,iBAAiB,GAAG,SAAS;CA0BhC;AAED,wBAAgB,6BAA6B,CAC5C,OAAO,GAAE,8BAAmC,GAC1C,iBAAiB,CAEnB"}
|
package/dist/transports/rpc.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import type * as LlmsProviders from "@clinebot/llms";
|
|
2
|
-
import { type AgentResult, type RpcChatStartSessionRequest, type ToolApprovalRequest, type ToolApprovalResult } from "@clinebot/shared";
|
|
3
|
-
import type { HookEventPayload } from "../hooks";
|
|
4
|
-
import type { RuntimeHost, SendSessionInput, SessionAccumulatedUsage, StartSessionInput, StartSessionResult } from "../runtime/runtime-host";
|
|
5
|
-
import type { RpcCoreSessionService } from "../session/rpc-session-service";
|
|
6
|
-
import type { CoreSessionEvent } from "../types/events";
|
|
7
|
-
import type { SessionRecord } from "../types/sessions";
|
|
8
|
-
type ApprovalRequester = (request: ToolApprovalRequest) => Promise<ToolApprovalResult>;
|
|
9
|
-
export declare class RpcRuntimeHost implements RuntimeHost {
|
|
10
|
-
private readonly backend;
|
|
11
|
-
private readonly defaultToolPolicies?;
|
|
12
|
-
private readonly defaultRequestToolApproval?;
|
|
13
|
-
readonly runtimeAddress: string;
|
|
14
|
-
private readonly client;
|
|
15
|
-
private readonly events;
|
|
16
|
-
private readonly sessionConfigs;
|
|
17
|
-
private readonly sessionApprovals;
|
|
18
|
-
private readonly usageBySession;
|
|
19
|
-
private readonly trackedSessionIds;
|
|
20
|
-
private stopEventStream?;
|
|
21
|
-
constructor(backend: RpcCoreSessionService, defaultToolPolicies?: RpcChatStartSessionRequest["toolPolicies"], defaultRequestToolApproval?: ApprovalRequester | undefined);
|
|
22
|
-
start(input: StartSessionInput): Promise<StartSessionResult>;
|
|
23
|
-
send(input: SendSessionInput): Promise<AgentResult | undefined>;
|
|
24
|
-
getAccumulatedUsage(sessionId: string): Promise<SessionAccumulatedUsage | undefined>;
|
|
25
|
-
abort(sessionId: string, reason?: unknown): Promise<void>;
|
|
26
|
-
stop(sessionId: string): Promise<void>;
|
|
27
|
-
dispose(reason?: string): Promise<void>;
|
|
28
|
-
get(sessionId: string): Promise<SessionRecord | undefined>;
|
|
29
|
-
list(limit?: number): Promise<SessionRecord[]>;
|
|
30
|
-
delete(sessionId: string): Promise<boolean>;
|
|
31
|
-
update(sessionId: string, updates: {
|
|
32
|
-
prompt?: string | null;
|
|
33
|
-
metadata?: Record<string, unknown> | null;
|
|
34
|
-
title?: string | null;
|
|
35
|
-
}): Promise<{
|
|
36
|
-
updated: boolean;
|
|
37
|
-
}>;
|
|
38
|
-
readMessages(sessionId: string): Promise<LlmsProviders.Message[]>;
|
|
39
|
-
handleHookEvent(payload: HookEventPayload): Promise<void>;
|
|
40
|
-
subscribe(listener: (event: CoreSessionEvent) => void): () => void;
|
|
41
|
-
updateSessionModel(): Promise<void>;
|
|
42
|
-
private emit;
|
|
43
|
-
private detachSession;
|
|
44
|
-
private refreshEventStream;
|
|
45
|
-
private handleRpcEvent;
|
|
46
|
-
private handleApprovalRequest;
|
|
47
|
-
private mapRpcEvent;
|
|
48
|
-
private syncRemoteSessionState;
|
|
49
|
-
}
|
|
50
|
-
export {};
|
|
51
|
-
//# sourceMappingURL=rpc.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/transports/rpc.ts"],"names":[],"mappings":"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"}
|
package/src/ClineCore.test.ts
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
import type { ClineCoreStartInput } from "./ClineCore";
|
|
3
|
-
import type {
|
|
4
|
-
StartSessionInput,
|
|
5
|
-
StartSessionResult,
|
|
6
|
-
} from "./runtime/runtime-host";
|
|
7
|
-
|
|
8
|
-
const { createRuntimeHostMock } = vi.hoisted(() => ({
|
|
9
|
-
createRuntimeHostMock: vi.fn(),
|
|
10
|
-
}));
|
|
11
|
-
|
|
12
|
-
vi.mock("./runtime/host", () => ({
|
|
13
|
-
createRuntimeHost: createRuntimeHostMock,
|
|
14
|
-
}));
|
|
15
|
-
|
|
16
|
-
import { ClineCore } from "./ClineCore";
|
|
17
|
-
|
|
18
|
-
function createStartInput(): ClineCoreStartInput {
|
|
19
|
-
return {
|
|
20
|
-
config: {
|
|
21
|
-
providerId: "anthropic",
|
|
22
|
-
modelId: "claude-sonnet-4-6",
|
|
23
|
-
apiKey: "test",
|
|
24
|
-
cwd: "/tmp/workspace",
|
|
25
|
-
workspaceRoot: "/tmp/workspace",
|
|
26
|
-
systemPrompt: "You are concise.",
|
|
27
|
-
mode: "act",
|
|
28
|
-
enableTools: true,
|
|
29
|
-
enableSpawnAgent: false,
|
|
30
|
-
enableAgentTeams: false,
|
|
31
|
-
},
|
|
32
|
-
prompt: "hello",
|
|
33
|
-
interactive: false,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function createStartResult(sessionId: string): StartSessionResult {
|
|
38
|
-
return {
|
|
39
|
-
sessionId,
|
|
40
|
-
manifest: {} as StartSessionResult["manifest"],
|
|
41
|
-
manifestPath: `/tmp/${sessionId}.json`,
|
|
42
|
-
messagesPath: `/tmp/${sessionId}.messages.json`,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
describe("ClineCore", () => {
|
|
47
|
-
beforeEach(() => {
|
|
48
|
-
createRuntimeHostMock.mockReset();
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it("applies start-session bootstraps before delegating to the host", async () => {
|
|
52
|
-
const listeners: Array<
|
|
53
|
-
(event: { type: string; payload: { sessionId: string } }) => void
|
|
54
|
-
> = [];
|
|
55
|
-
const host = {
|
|
56
|
-
runtimeAddress: undefined,
|
|
57
|
-
start: vi.fn(async (input: StartSessionInput) => {
|
|
58
|
-
expect(input.config.systemPrompt).toBe("Bootstrapped prompt");
|
|
59
|
-
expect(input.localRuntime?.configOverrides?.extensions).toEqual([
|
|
60
|
-
expect.objectContaining({ name: "enterprise" }),
|
|
61
|
-
]);
|
|
62
|
-
return createStartResult("session-1");
|
|
63
|
-
}),
|
|
64
|
-
send: vi.fn(),
|
|
65
|
-
getAccumulatedUsage: vi.fn(),
|
|
66
|
-
abort: vi.fn(),
|
|
67
|
-
stop: vi.fn(),
|
|
68
|
-
dispose: vi.fn(),
|
|
69
|
-
get: vi.fn(async () => undefined),
|
|
70
|
-
list: vi.fn(),
|
|
71
|
-
delete: vi.fn(),
|
|
72
|
-
readMessages: vi.fn(),
|
|
73
|
-
subscribe: vi.fn((listener) => {
|
|
74
|
-
listeners.push(listener);
|
|
75
|
-
return () => {};
|
|
76
|
-
}),
|
|
77
|
-
updateSessionModel: vi.fn(),
|
|
78
|
-
};
|
|
79
|
-
createRuntimeHostMock.mockResolvedValue(host);
|
|
80
|
-
|
|
81
|
-
const dispose = vi.fn(async () => {});
|
|
82
|
-
const applyToStartSessionInput = vi.fn(
|
|
83
|
-
async (input: ClineCoreStartInput) => ({
|
|
84
|
-
...input,
|
|
85
|
-
config: {
|
|
86
|
-
...input.config,
|
|
87
|
-
systemPrompt: "Bootstrapped prompt",
|
|
88
|
-
extensions: [
|
|
89
|
-
{
|
|
90
|
-
name: "enterprise",
|
|
91
|
-
manifest: { capabilities: [] },
|
|
92
|
-
setup: vi.fn(),
|
|
93
|
-
},
|
|
94
|
-
],
|
|
95
|
-
},
|
|
96
|
-
}),
|
|
97
|
-
);
|
|
98
|
-
|
|
99
|
-
const core = await ClineCore.create({
|
|
100
|
-
prepare: async () => ({
|
|
101
|
-
applyToStartSessionInput,
|
|
102
|
-
dispose,
|
|
103
|
-
}),
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
await core.start(createStartInput());
|
|
107
|
-
|
|
108
|
-
expect(applyToStartSessionInput).toHaveBeenCalledTimes(1);
|
|
109
|
-
expect(host.start).toHaveBeenCalledTimes(1);
|
|
110
|
-
expect(dispose).toHaveBeenCalledTimes(1);
|
|
111
|
-
expect(listeners).toHaveLength(1);
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
it("disposes active session bootstraps when the session ends", async () => {
|
|
115
|
-
let listener:
|
|
116
|
-
| ((event: { type: string; payload: { sessionId: string } }) => void)
|
|
117
|
-
| undefined;
|
|
118
|
-
const host = {
|
|
119
|
-
runtimeAddress: "127.0.0.1:5317",
|
|
120
|
-
start: vi.fn(async () => createStartResult("session-2")),
|
|
121
|
-
send: vi.fn(),
|
|
122
|
-
getAccumulatedUsage: vi.fn(),
|
|
123
|
-
abort: vi.fn(),
|
|
124
|
-
stop: vi.fn(),
|
|
125
|
-
dispose: vi.fn(),
|
|
126
|
-
get: vi.fn(async () => ({ sessionId: "session-2" })),
|
|
127
|
-
list: vi.fn(),
|
|
128
|
-
delete: vi.fn(),
|
|
129
|
-
readMessages: vi.fn(),
|
|
130
|
-
subscribe: vi.fn((nextListener) => {
|
|
131
|
-
listener = nextListener;
|
|
132
|
-
return () => {};
|
|
133
|
-
}),
|
|
134
|
-
updateSessionModel: vi.fn(),
|
|
135
|
-
};
|
|
136
|
-
createRuntimeHostMock.mockResolvedValue(host);
|
|
137
|
-
|
|
138
|
-
const dispose = vi.fn(async () => {});
|
|
139
|
-
const core = await ClineCore.create({
|
|
140
|
-
prepare: async () => ({
|
|
141
|
-
applyToStartSessionInput: (input) => input,
|
|
142
|
-
dispose,
|
|
143
|
-
}),
|
|
144
|
-
});
|
|
145
|
-
expect(core.runtimeAddress).toBe("127.0.0.1:5317");
|
|
146
|
-
|
|
147
|
-
await core.start(createStartInput());
|
|
148
|
-
expect(dispose).not.toHaveBeenCalled();
|
|
149
|
-
|
|
150
|
-
listener?.({ type: "ended", payload: { sessionId: "session-2" } });
|
|
151
|
-
await Promise.resolve();
|
|
152
|
-
|
|
153
|
-
expect(dispose).toHaveBeenCalledTimes(1);
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
it("hydrates list rows through the core API", async () => {
|
|
157
|
-
const host = {
|
|
158
|
-
runtimeAddress: undefined,
|
|
159
|
-
start: vi.fn(),
|
|
160
|
-
send: vi.fn(),
|
|
161
|
-
getAccumulatedUsage: vi.fn(),
|
|
162
|
-
abort: vi.fn(),
|
|
163
|
-
stop: vi.fn(),
|
|
164
|
-
dispose: vi.fn(),
|
|
165
|
-
get: vi.fn(async () => undefined),
|
|
166
|
-
list: vi.fn(async () => [
|
|
167
|
-
{
|
|
168
|
-
sessionId: "session-3",
|
|
169
|
-
source: "cli",
|
|
170
|
-
pid: 1,
|
|
171
|
-
startedAt: "2026-04-21T02:17:46.169Z",
|
|
172
|
-
status: "completed",
|
|
173
|
-
interactive: false,
|
|
174
|
-
provider: "",
|
|
175
|
-
model: "",
|
|
176
|
-
cwd: "/tmp/workspace",
|
|
177
|
-
workspaceRoot: "/tmp/workspace",
|
|
178
|
-
enableTools: true,
|
|
179
|
-
enableSpawn: false,
|
|
180
|
-
enableTeams: false,
|
|
181
|
-
prompt: "hello",
|
|
182
|
-
metadata: {},
|
|
183
|
-
updatedAt: "2026-04-21T02:17:46.169Z",
|
|
184
|
-
},
|
|
185
|
-
]),
|
|
186
|
-
delete: vi.fn(),
|
|
187
|
-
update: vi.fn(),
|
|
188
|
-
readMessages: vi.fn(async () => [
|
|
189
|
-
{
|
|
190
|
-
role: "user",
|
|
191
|
-
content: [{ type: "text", text: "hello" }],
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
role: "assistant",
|
|
195
|
-
content: [{ type: "text", text: "hi" }],
|
|
196
|
-
modelInfo: {
|
|
197
|
-
provider: "cline",
|
|
198
|
-
id: "anthropic/claude-sonnet-4.6",
|
|
199
|
-
},
|
|
200
|
-
metrics: {
|
|
201
|
-
cost: 0.02,
|
|
202
|
-
},
|
|
203
|
-
},
|
|
204
|
-
]),
|
|
205
|
-
handleHookEvent: vi.fn(),
|
|
206
|
-
subscribe: vi.fn(() => () => {}),
|
|
207
|
-
updateSessionModel: vi.fn(),
|
|
208
|
-
};
|
|
209
|
-
createRuntimeHostMock.mockResolvedValue(host);
|
|
210
|
-
|
|
211
|
-
const core = await ClineCore.create();
|
|
212
|
-
const [row] = await core.list(10);
|
|
213
|
-
|
|
214
|
-
expect(host.list).toHaveBeenCalledWith(10);
|
|
215
|
-
expect(host.readMessages).toHaveBeenCalledWith("session-3");
|
|
216
|
-
expect(row).toMatchObject({
|
|
217
|
-
sessionId: "session-3",
|
|
218
|
-
provider: "cline",
|
|
219
|
-
model: "anthropic/claude-sonnet-4.6",
|
|
220
|
-
metadata: {
|
|
221
|
-
title: "hello",
|
|
222
|
-
totalCost: 0.02,
|
|
223
|
-
},
|
|
224
|
-
});
|
|
225
|
-
});
|
|
226
|
-
});
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { ClineAccountService } from "./cline-account-service";
|
|
3
|
-
|
|
4
|
-
describe("ClineAccountService", () => {
|
|
5
|
-
it("fetches current user balance and sends auth header", async () => {
|
|
6
|
-
const fetchImpl = vi.fn(async (input: unknown, init?: RequestInit) => {
|
|
7
|
-
expect(String(input)).toBe(
|
|
8
|
-
"https://api.cline.bot/api/v1/users/user-1/balance",
|
|
9
|
-
);
|
|
10
|
-
expect(init?.headers).toMatchObject({
|
|
11
|
-
Authorization: "Bearer workos:token-123",
|
|
12
|
-
});
|
|
13
|
-
return new Response(
|
|
14
|
-
JSON.stringify({
|
|
15
|
-
success: true,
|
|
16
|
-
data: { balance: 5, userId: "user-1" },
|
|
17
|
-
}),
|
|
18
|
-
{ status: 200, headers: { "Content-Type": "application/json" } },
|
|
19
|
-
);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
const service = new ClineAccountService({
|
|
23
|
-
apiBaseUrl: "https://api.cline.bot",
|
|
24
|
-
getAuthToken: async () => "workos:token-123",
|
|
25
|
-
getCurrentUserId: () => "user-1",
|
|
26
|
-
fetchImpl: fetchImpl as unknown as typeof fetch,
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
const balance = await service.fetchBalance();
|
|
30
|
-
expect(balance).toEqual({ balance: 5, userId: "user-1" });
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it("resolves organization member id from /users/me when not provided", async () => {
|
|
34
|
-
const fetchImpl = vi
|
|
35
|
-
.fn()
|
|
36
|
-
.mockResolvedValueOnce(
|
|
37
|
-
new Response(
|
|
38
|
-
JSON.stringify({
|
|
39
|
-
success: true,
|
|
40
|
-
data: {
|
|
41
|
-
id: "u-1",
|
|
42
|
-
email: "u@example.com",
|
|
43
|
-
displayName: "User",
|
|
44
|
-
photoUrl: "",
|
|
45
|
-
createdAt: "2025-01-01T00:00:00Z",
|
|
46
|
-
updatedAt: "2025-01-01T00:00:00Z",
|
|
47
|
-
organizations: [
|
|
48
|
-
{
|
|
49
|
-
active: true,
|
|
50
|
-
memberId: "member-9",
|
|
51
|
-
name: "Org",
|
|
52
|
-
organizationId: "org-1",
|
|
53
|
-
roles: ["member"],
|
|
54
|
-
},
|
|
55
|
-
],
|
|
56
|
-
},
|
|
57
|
-
}),
|
|
58
|
-
{ status: 200 },
|
|
59
|
-
),
|
|
60
|
-
)
|
|
61
|
-
.mockResolvedValueOnce(
|
|
62
|
-
new Response(
|
|
63
|
-
JSON.stringify({ success: true, data: { items: [{ id: "tx-1" }] } }),
|
|
64
|
-
{ status: 200 },
|
|
65
|
-
),
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
const service = new ClineAccountService({
|
|
69
|
-
apiBaseUrl: "https://api.cline.bot",
|
|
70
|
-
getAuthToken: async () => "workos:token-123",
|
|
71
|
-
fetchImpl: fetchImpl as unknown as typeof fetch,
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
const transactions = await service.fetchOrganizationUsageTransactions({
|
|
75
|
-
organizationId: "org-1",
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
expect(fetchImpl).toHaveBeenCalledTimes(2);
|
|
79
|
-
expect(String(fetchImpl.mock.calls[1][0])).toBe(
|
|
80
|
-
"https://api.cline.bot/api/v1/organizations/org-1/members/member-9/usages",
|
|
81
|
-
);
|
|
82
|
-
expect(transactions).toEqual([{ id: "tx-1" }]);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it("fetches remote config with organizations list", async () => {
|
|
86
|
-
const remoteConfigPayload = {
|
|
87
|
-
organizationId: "org-1",
|
|
88
|
-
value: '{"model":"claude-4"}',
|
|
89
|
-
enabled: true,
|
|
90
|
-
organizations: [
|
|
91
|
-
{ organizationId: "org-1", name: "Acme Corp" },
|
|
92
|
-
{ organizationId: "org-2", name: "Beta Inc" },
|
|
93
|
-
],
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
const fetchImpl = vi.fn(async (input: unknown) => {
|
|
97
|
-
expect(String(input)).toBe(
|
|
98
|
-
"https://api.cline.bot/api/v1/users/me/remote-config",
|
|
99
|
-
);
|
|
100
|
-
return new Response(
|
|
101
|
-
JSON.stringify({ success: true, data: remoteConfigPayload }),
|
|
102
|
-
{ status: 200, headers: { "Content-Type": "application/json" } },
|
|
103
|
-
);
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
const service = new ClineAccountService({
|
|
107
|
-
apiBaseUrl: "https://api.cline.bot",
|
|
108
|
-
getAuthToken: async () => "workos:token-123",
|
|
109
|
-
fetchImpl: fetchImpl as unknown as typeof fetch,
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
const config = await service.fetchRemoteConfig();
|
|
113
|
-
expect(config).toEqual(remoteConfigPayload);
|
|
114
|
-
expect(config?.organizations).toHaveLength(2);
|
|
115
|
-
expect(config?.organizations?.[0]).toEqual({
|
|
116
|
-
organizationId: "org-1",
|
|
117
|
-
name: "Acme Corp",
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
it("fetches remote config with fallback org selected", async () => {
|
|
122
|
-
const remoteConfigPayload = {
|
|
123
|
-
organizationId: "org-fallback",
|
|
124
|
-
value: '{"model":"claude-4"}',
|
|
125
|
-
enabled: true,
|
|
126
|
-
organizations: [{ organizationId: "org-fallback", name: "Fallback Org" }],
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
const fetchImpl = vi.fn(async () => {
|
|
130
|
-
return new Response(
|
|
131
|
-
JSON.stringify({ success: true, data: remoteConfigPayload }),
|
|
132
|
-
{ status: 200, headers: { "Content-Type": "application/json" } },
|
|
133
|
-
);
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
const service = new ClineAccountService({
|
|
137
|
-
apiBaseUrl: "https://api.cline.bot",
|
|
138
|
-
getAuthToken: async () => "workos:token-123",
|
|
139
|
-
fetchImpl: fetchImpl as unknown as typeof fetch,
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
const config = await service.fetchRemoteConfig();
|
|
143
|
-
expect(config?.organizationId).toBe("org-fallback");
|
|
144
|
-
expect(config?.organizations).toHaveLength(1);
|
|
145
|
-
expect(config?.organizations?.[0]).toEqual({
|
|
146
|
-
organizationId: "org-fallback",
|
|
147
|
-
name: "Fallback Org",
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
it("returns null when no org has remote config (data: null)", async () => {
|
|
152
|
-
const fetchImpl = vi.fn(async () => {
|
|
153
|
-
return new Response(JSON.stringify({ success: true, data: null }), {
|
|
154
|
-
status: 200,
|
|
155
|
-
headers: { "Content-Type": "application/json" },
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
const service = new ClineAccountService({
|
|
160
|
-
apiBaseUrl: "https://api.cline.bot",
|
|
161
|
-
getAuthToken: async () => "workos:token-123",
|
|
162
|
-
fetchImpl: fetchImpl as unknown as typeof fetch,
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
const config = await service.fetchRemoteConfig();
|
|
166
|
-
expect(config).toBeNull();
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
it("switchAccount sends null org id for personal account", async () => {
|
|
170
|
-
const fetchImpl = vi.fn(async (_input: unknown, init?: RequestInit) => {
|
|
171
|
-
expect(init?.method).toBe("PUT");
|
|
172
|
-
expect(init?.body).toBe(JSON.stringify({ organizationId: null }));
|
|
173
|
-
return new Response(null, { status: 204 });
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
const service = new ClineAccountService({
|
|
177
|
-
apiBaseUrl: "https://api.cline.bot",
|
|
178
|
-
getAuthToken: async () => "workos:token-123",
|
|
179
|
-
fetchImpl: fetchImpl as unknown as typeof fetch,
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
await service.switchAccount(undefined);
|
|
183
|
-
expect(fetchImpl).toHaveBeenCalledTimes(1);
|
|
184
|
-
});
|
|
185
|
-
});
|