@cline/core 0.0.81 → 0.0.82

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.
Files changed (43) hide show
  1. package/dist/cron/runner/cron-runner.d.ts +14 -1
  2. package/dist/cron/service/schedule-service.d.ts +9 -1
  3. package/dist/cron/specs/cron-reconciler.d.ts +1 -1
  4. package/dist/cron/store/sqlite-cron-store.d.ts +17 -0
  5. package/dist/extensions/mcp/client.d.ts +1 -0
  6. package/dist/extensions/tools/executors/line-endings.d.ts +14 -2
  7. package/dist/extensions/tools/team/multi-agent.d.ts +7 -0
  8. package/dist/hub/client/index.d.ts +20 -3
  9. package/dist/hub/client/managed-hub-build-watcher.d.ts +8 -0
  10. package/dist/hub/client/session-client.d.ts +6 -1
  11. package/dist/hub/client/ui-client.d.ts +6 -1
  12. package/dist/hub/daemon/entry.js +297 -223
  13. package/dist/hub/daemon/index.d.ts +72 -0
  14. package/dist/hub/index.js +286 -212
  15. package/dist/hub/server/command-transport.d.ts +6 -0
  16. package/dist/hub/server/handlers/context.d.ts +2 -0
  17. package/dist/hub/server/handlers/session-handlers.d.ts +1 -0
  18. package/dist/hub/server/hub-server-options.d.ts +3 -0
  19. package/dist/hub/server/hub-server-transport.d.ts +1 -0
  20. package/dist/index.d.ts +3 -0
  21. package/dist/index.js +289 -215
  22. package/dist/runtime/orchestration/session-runtime-orchestrator.d.ts +1 -0
  23. package/dist/services/global-settings.d.ts +2 -2
  24. package/dist/services/providers/local-provider-service.d.ts +1 -1
  25. package/dist/services/providers/provider-readiness.d.ts +10 -0
  26. package/dist/services/session-import/claude-code.d.ts +16 -0
  27. package/dist/services/session-import/codex.d.ts +34 -0
  28. package/dist/services/session-import/index.d.ts +6 -0
  29. package/dist/services/session-import/opencode.d.ts +25 -0
  30. package/dist/services/session-import/sanitize.d.ts +16 -0
  31. package/dist/services/session-import/service.d.ts +31 -0
  32. package/dist/services/session-import/types.d.ts +87 -0
  33. package/dist/services/workspace/agent-schedules-workspace.d.ts +8 -0
  34. package/dist/services/workspace/index.d.ts +1 -0
  35. package/dist/session/models/session-manifest.d.ts +1 -1
  36. package/dist/session/models/session-row.d.ts +10 -0
  37. package/dist/session/search/index.d.ts +1 -0
  38. package/dist/session/search/session-history-search.d.ts +51 -0
  39. package/dist/session/services/persistence-service.d.ts +10 -0
  40. package/dist/tasks/agenda-task-tool.d.ts +1 -1
  41. package/dist/tasks/task-tool.d.ts +3 -3
  42. package/dist/types/chat-schema.d.ts +2 -2
  43. package/package.json +4 -4
@@ -131,6 +131,7 @@ export declare class SessionRuntime {
131
131
  private activeTrackerWork;
132
132
  /** True when tracker logic has issued an abort for the active run. */
133
133
  private trackerAbortInFlight;
134
+ private readonly handleExternalAbort;
134
135
  constructor(config: AgentConfig, deps?: SessionRuntimeOrchestratorDeps);
135
136
  getAgentId(): string;
136
137
  getConversationId(): string;
@@ -26,13 +26,13 @@ export declare const GlobalSettingsSchema: z.ZodPipe<z.ZodObject<{
26
26
  }>>>;
27
27
  toolAutoApprove: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
28
28
  tuiTheme: z.ZodCatch<z.ZodOptional<z.ZodString>>;
29
- disabledTools: z.ZodOptional<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodString>>>, z.ZodTransform<string[] | undefined, string[] | undefined>>>;
29
+ disabledTools: z.ZodOptional<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodString>>, unknown>, z.ZodTransform<string[] | undefined, string[] | undefined>>>;
30
30
  tools: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
31
31
  web_search: "web_search";
32
32
  }> & z.core.$partial, z.ZodObject<{
33
33
  enabled: z.ZodBoolean;
34
34
  }, z.core.$strip>>>;
35
- disabledPlugins: z.ZodOptional<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodString>>>, z.ZodTransform<string[] | undefined, string[] | undefined>>>;
35
+ disabledPlugins: z.ZodOptional<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodString>>, unknown>, z.ZodTransform<string[] | undefined, string[] | undefined>>>;
36
36
  }, z.core.$strip>, z.ZodTransform<{
37
37
  telemetryOptOut: boolean;
38
38
  autoUpdateEnabled: boolean;
@@ -1,7 +1,7 @@
1
1
  import * as LlmsModels from "@cline/llms";
2
2
  import type { AddProviderActionRequest, ITelemetryService, ProviderCapability, ProviderListItem, ProviderModel, SaveProviderSettingsActionRequest, VoiceInputSelection } from "@cline/shared";
3
3
  import { type ProviderOAuthCredentials } from "../../auth/provider-auth-registry";
4
- import type { ProviderClient, ProviderConfig, ProviderProtocol, ProviderSettings } from "../../services/llms/provider-settings";
4
+ import { type ProviderClient, type ProviderConfig, type ProviderProtocol, type ProviderSettings } from "../../services/llms/provider-settings";
5
5
  import type { ProviderTokenSource } from "../../types/provider-settings";
6
6
  import type { ProviderSettingsManager } from "../storage/provider-settings-manager";
7
7
  export { ensureCustomProvidersLoaded } from "./local-provider-registry";
@@ -0,0 +1,10 @@
1
+ import type { ProviderConfig, ProviderSettings } from "../llms/provider-settings";
2
+ /**
3
+ * Whether persisted provider settings hold enough real credentials or
4
+ * endpoint configuration for a turn to plausibly succeed. Unlike the mere
5
+ * existence of a settings entry (which migrations and empty "connect" saves
6
+ * can create), this requires provider-appropriate evidence: an API key or
7
+ * OAuth token, cloud credentials (AWS/GCP/Azure/SAP), a local-auth CLI, or a
8
+ * resolvable endpoint + model for keyless local providers.
9
+ */
10
+ export declare function isProviderSettingsUsable(providerId: string, settings: ProviderSettings | undefined, config?: Pick<ProviderConfig, "baseUrl" | "modelId">): boolean;
@@ -0,0 +1,16 @@
1
+ import { type ConvertedImportedSession, type ImportableSessionSummary, type SessionImportAdapter } from "./types";
2
+ export interface ClaudeCodeAdapterOptions {
3
+ /** Defaults to ~/.claude/projects */
4
+ projectsDir?: string;
5
+ }
6
+ export declare class ClaudeCodeImportAdapter implements SessionImportAdapter {
7
+ readonly tool: "claude-code";
8
+ private readonly projectsDir;
9
+ constructor(options?: ClaudeCodeAdapterOptions);
10
+ isInstalled(): boolean;
11
+ private sessionFiles;
12
+ private findSessionFile;
13
+ discover(): ImportableSessionSummary[];
14
+ private summarizeFile;
15
+ convert(sourceId: string): ConvertedImportedSession;
16
+ }
@@ -0,0 +1,34 @@
1
+ import { type ConvertedImportedSession, type ImportableSessionSummary, type SessionImportAdapter } from "./types";
2
+ export interface CodexAdapterOptions {
3
+ /** Defaults to $CODEX_HOME or ~/.codex */
4
+ codexHome?: string;
5
+ }
6
+ export declare class CodexImportAdapter implements SessionImportAdapter {
7
+ readonly tool: "codex";
8
+ private readonly codexHome;
9
+ constructor(options?: CodexAdapterOptions);
10
+ private get sessionsDir();
11
+ isInstalled(): boolean;
12
+ /** thread_name by session id, from Codex's own index. */
13
+ private readTitleIndex;
14
+ private sessionFiles;
15
+ /**
16
+ * Resuming a Codex thread writes a new rollout file that re-embeds the
17
+ * original session_meta id, so one logical session can span several files.
18
+ * Prefer the file with the most conversation (the resumed rollout replays
19
+ * history), tie-breaking on the most recent activity.
20
+ */
21
+ private static pickRicherFile;
22
+ /**
23
+ * Session id → richest rollout file. Building it means reading every
24
+ * rollout once (resumed rollouts only carry the original id inside
25
+ * session_meta, not in their filename), so it is cached for the batch:
26
+ * without the cache, importing N sessions re-read the whole store N times.
27
+ */
28
+ private index?;
29
+ private buildIndex;
30
+ dispose(): void;
31
+ private findSessionFile;
32
+ discover(): ImportableSessionSummary[];
33
+ convert(sourceId: string): ConvertedImportedSession;
34
+ }
@@ -0,0 +1,6 @@
1
+ export { type ClaudeCodeAdapterOptions, ClaudeCodeImportAdapter, } from "./claude-code";
2
+ export { type CodexAdapterOptions, CodexImportAdapter } from "./codex";
3
+ export { type OpencodeAdapterOptions, OpencodeImportAdapter, } from "./opencode";
4
+ export { IMPORT_MISSING_TOOL_RESULT_TEXT, sanitizeImportedMessages, } from "./sanitize";
5
+ export { type ImportedFromMetadata, readImportedFromMetadata, SessionImportService, } from "./service";
6
+ export { type ConvertedImportedSession, type ImportableSessionSummary, SESSION_IMPORT_TOOL_LABELS, SESSION_IMPORT_TOOLS, type SessionImportAdapter, type SessionImportOptions, type SessionImportRequest, type SessionImportResult, type SessionImportTool, } from "./types";
@@ -0,0 +1,25 @@
1
+ import { type ConvertedImportedSession, type ImportableSessionSummary, type SessionImportAdapter } from "./types";
2
+ export interface OpencodeAdapterOptions {
3
+ /** Defaults to $XDG_DATA_HOME/opencode or ~/.local/share/opencode */
4
+ dataDir?: string;
5
+ }
6
+ export declare class OpencodeImportAdapter implements SessionImportAdapter {
7
+ readonly tool: "opencode";
8
+ private readonly dbPath;
9
+ constructor(options?: OpencodeAdapterOptions);
10
+ isInstalled(): boolean;
11
+ /**
12
+ * opencode keeps its database open in WAL mode while the app runs.
13
+ * Snapshot the db (+ WAL/SHM) into a temp dir and read the copy so we
14
+ * never contend with — or corrupt — the live store. The snapshot is kept
15
+ * for the batch (a large db copied once per imported session was the
16
+ * dominant cost) and released by dispose().
17
+ */
18
+ private snapshot?;
19
+ private openSnapshot;
20
+ dispose(): void;
21
+ private withDbCopy;
22
+ discover(): ImportableSessionSummary[];
23
+ private firstUserText;
24
+ convert(sourceId: string): ConvertedImportedSession;
25
+ }
@@ -0,0 +1,16 @@
1
+ import type * as LlmsProviders from "@cline/llms";
2
+ type Message = LlmsProviders.MessageWithMetadata;
3
+ export declare const IMPORT_MISSING_TOOL_RESULT_TEXT = "[import] Tool result was not captured in the source session history.";
4
+ /**
5
+ * Prepares foreign conversation history for persistence and eventual replay
6
+ * to a provider:
7
+ * - cleans blocks (see cleanBlocks) and drops messages left empty,
8
+ * - guarantees every assistant tool_use has a matching tool_result in the
9
+ * user messages that follow (synthesizing placeholders for orphans),
10
+ * - drops tool_result blocks whose tool_use no longer exists.
11
+ *
12
+ * Providers hard-reject histories that violate tool pairing, so this must
13
+ * run on every imported session regardless of source quality.
14
+ */
15
+ export declare function sanitizeImportedMessages(messages: Message[]): Message[];
16
+ export {};
@@ -0,0 +1,31 @@
1
+ import type { UnifiedSessionPersistenceService } from "../../session/services/persistence-service";
2
+ import type { ImportableSessionSummary, SessionImportAdapter, SessionImportOptions, SessionImportRequest, SessionImportResult, SessionImportTool } from "./types";
3
+ export interface ImportedFromMetadata {
4
+ tool: SessionImportTool;
5
+ sourceSessionId: string;
6
+ sourcePath: string;
7
+ importedAt: string;
8
+ /** Provider/model the source tool ran the session on. */
9
+ sourceProvider?: string;
10
+ sourceModel?: string;
11
+ }
12
+ export declare function readImportedFromMetadata(metadata: Record<string, unknown> | null | undefined): ImportedFromMetadata | undefined;
13
+ export declare class SessionImportService {
14
+ private readonly sessions;
15
+ private readonly adapters;
16
+ constructor(sessions: UnifiedSessionPersistenceService, adapters?: SessionImportAdapter[]);
17
+ installedTools(): SessionImportTool[];
18
+ /**
19
+ * `tool:sourceId` → existing Cline session id, from prior imports. Reads
20
+ * every row's metadata (not the 2000-row listSessions window) so a marker
21
+ * on an old session still prevents a duplicate.
22
+ */
23
+ private existingImports;
24
+ private disposeAdapters;
25
+ discover(): Promise<ImportableSessionSummary[]>;
26
+ importOne(request: SessionImportRequest, options?: SessionImportOptions): Promise<SessionImportResult>;
27
+ private importOneUnmanaged;
28
+ private importFresh;
29
+ importMany(requests: SessionImportRequest[], onProgress?: (result: SessionImportResult, index: number) => void, options?: SessionImportOptions): Promise<SessionImportResult[]>;
30
+ private persistConverted;
31
+ }
@@ -0,0 +1,87 @@
1
+ import type * as LlmsProviders from "@cline/llms";
2
+ /** External tools whose session history Cline can import. */
3
+ export declare const SESSION_IMPORT_TOOLS: readonly ["claude-code", "codex", "opencode"];
4
+ export type SessionImportTool = (typeof SESSION_IMPORT_TOOLS)[number];
5
+ export declare const SESSION_IMPORT_TOOL_LABELS: Record<SessionImportTool, string>;
6
+ /**
7
+ * A session found in an external tool's on-disk store, described with just
8
+ * enough metadata to render an import picker. Discovery must stay cheap; the
9
+ * full conversation is only parsed when the session is actually imported.
10
+ */
11
+ export interface ImportableSessionSummary {
12
+ tool: SessionImportTool;
13
+ /** Stable identifier within the source tool's store. */
14
+ sourceId: string;
15
+ /** File (or database) the session was discovered in. */
16
+ sourcePath: string;
17
+ title: string;
18
+ /** Original working directory, when the source recorded one. */
19
+ cwd: string;
20
+ startedAtMs: number;
21
+ updatedAtMs: number;
22
+ /** Conversational user/assistant events (not raw store lines). */
23
+ messageCount: number;
24
+ /** First real user prompt, trimmed for display. */
25
+ preview?: string;
26
+ /** Set when a prior import of this source session already exists. */
27
+ alreadyImportedSessionId?: string;
28
+ }
29
+ /** A source session fully translated to Cline's native message format. */
30
+ export interface ConvertedImportedSession {
31
+ tool: SessionImportTool;
32
+ sourceId: string;
33
+ sourcePath: string;
34
+ title: string;
35
+ /** First real user prompt (used for the session's prompt field). */
36
+ prompt?: string;
37
+ provider: string;
38
+ model: string;
39
+ cwd: string;
40
+ gitBranch?: string;
41
+ startedAtMs: number;
42
+ endedAtMs: number;
43
+ messages: LlmsProviders.MessageWithMetadata[];
44
+ }
45
+ export interface SessionImportAdapter {
46
+ readonly tool: SessionImportTool;
47
+ /** Whether the tool's session store exists on this machine. */
48
+ isInstalled(): boolean;
49
+ discover(): ImportableSessionSummary[];
50
+ /** Throws if the source session cannot be found or parsed. */
51
+ convert(sourceId: string): ConvertedImportedSession;
52
+ /**
53
+ * Releases per-batch caches (file indexes, database snapshots). Called by
54
+ * the service after each discover/import batch; adapters stay usable after.
55
+ */
56
+ dispose?(): void;
57
+ }
58
+ export interface SessionImportRequest {
59
+ tool: SessionImportTool;
60
+ sourceId: string;
61
+ }
62
+ export interface SessionImportOptions {
63
+ /**
64
+ * Cline provider/model the imported sessions should resume with. Opening a
65
+ * history session adopts the row's provider/model, so without this the
66
+ * session would try to run on the source tool's provider (openai-native,
67
+ * or an opencode provider id Cline doesn't know) which the user may never
68
+ * have configured. Both must be set to take effect; the source tool's own
69
+ * provider/model are always preserved in metadata.importedFrom and in
70
+ * per-message modelInfo.
71
+ */
72
+ provider?: string;
73
+ model?: string;
74
+ }
75
+ export interface SessionImportResult {
76
+ tool: SessionImportTool;
77
+ sourceId: string;
78
+ ok: boolean;
79
+ /** Cline session id created for this import (on success). */
80
+ sessionId?: string;
81
+ title?: string;
82
+ error?: string;
83
+ /** Set when the source session had already been imported; sessionId is
84
+ * the existing Cline session and nothing new was written. */
85
+ alreadyImported?: boolean;
86
+ }
87
+ export declare function truncateForDisplay(value: string | undefined, max?: number): string | undefined;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Ensure the home workspace for agent-created schedules exists and return its
3
+ * path. Agent-created schedules are user-level routines: they anchor (and
4
+ * their unattended sessions run) in `~/.cline/schedules/` instead of
5
+ * inheriting whichever chat workspace happened to create them, so they
6
+ * survive chat cleanup and stay in one predictable scope.
7
+ */
8
+ export declare function ensureAgentSchedulesWorkspace(): Promise<string>;
@@ -1,3 +1,4 @@
1
+ export { ensureAgentSchedulesWorkspace } from "./agent-schedules-workspace";
1
2
  export { ensureChatWorkspace } from "./chat-workspace";
2
3
  export type { FastFileIndexOptions } from "./file-indexer";
3
4
  export { getFileIndex, prewarmFileIndex } from "./file-indexer";
@@ -12,8 +12,8 @@ export declare const SessionManifestSchema: z.ZodObject<{
12
12
  completed: "completed";
13
13
  idle: "idle";
14
14
  running: "running";
15
- pending: "pending";
16
15
  cancelled: "cancelled";
16
+ pending: "pending";
17
17
  }>;
18
18
  interactive: z.ZodBoolean;
19
19
  provider: z.ZodString;
@@ -69,6 +69,16 @@ export interface CreateRootSessionWithArtifactsInput {
69
69
  prompt?: string;
70
70
  metadata?: Record<string, unknown>;
71
71
  startedAt?: string;
72
+ /**
73
+ * Create the session already in a terminal state (defaults to "running").
74
+ * Sessions that are pure history from birth — imports — use this so they
75
+ * never pass through a transient running/pid-0 state that the
76
+ * stale-session reconciler (in any process sharing the DB) could flip to
77
+ * failed before the creator finishes writing.
78
+ */
79
+ status?: SessionStatus;
80
+ endedAt?: string;
81
+ exitCode?: number;
72
82
  }
73
83
  export interface RootSessionArtifacts {
74
84
  manifestPath: string;
@@ -0,0 +1 @@
1
+ export * from "./session-history-search";
@@ -0,0 +1,51 @@
1
+ import type { RuntimeHost } from "../../runtime/host/runtime-host";
2
+ export interface SessionSearchInput {
3
+ query: string;
4
+ limit?: number;
5
+ workspaceRoot?: string;
6
+ }
7
+ export interface SessionSearchHit {
8
+ sessionId: string;
9
+ documentId: string;
10
+ ordinal: number;
11
+ role: string;
12
+ startedAt: string;
13
+ workspaceRoot: string;
14
+ title: string;
15
+ snippet: string;
16
+ score: number;
17
+ }
18
+ export interface SessionHistorySearchOptions {
19
+ dbPath?: string;
20
+ reconcileIntervalMs?: number;
21
+ }
22
+ export declare class SessionHistorySearchService {
23
+ private readonly host;
24
+ private readonly db;
25
+ private readonly initializationError;
26
+ private readonly intervalMs;
27
+ private readonly removedDuringRefresh;
28
+ private readonly failedEvictionSessionIds;
29
+ private timer;
30
+ private refreshPromise;
31
+ private readyPromise;
32
+ constructor(host: Pick<RuntimeHost, "listSessions" | "readSessionMessages">, options?: SessionHistorySearchOptions);
33
+ start(): void;
34
+ dispose(): Promise<void>;
35
+ refreshNow(): Promise<void>;
36
+ /**
37
+ * Removes one session from the derived index without scanning canonical
38
+ * history. The temporary tombstone prevents an in-flight reconciliation
39
+ * that captured the session before deletion from writing it back.
40
+ */
41
+ removeSession(sessionId: string): void;
42
+ waitUntilReady(): Promise<void>;
43
+ isAvailable(): boolean;
44
+ getInitializationError(): unknown | undefined;
45
+ search(input: SessionSearchInput): SessionSearchHit[];
46
+ private isSessionSuppressed;
47
+ private reconcile;
48
+ private sourceRevision;
49
+ private indexSession;
50
+ private deleteIndexedSession;
51
+ }
@@ -56,6 +56,16 @@ export declare class UnifiedSessionPersistenceService {
56
56
  private isPidAlive;
57
57
  private reconcileDeadRunningSession;
58
58
  listSessions(limit?: number): Promise<SessionRow[]>;
59
+ /**
60
+ * Lightweight, effectively unbounded listing of session ids + metadata
61
+ * (no manifest reads, no dead-session reconciliation). listSessions caps
62
+ * its scan at 2000 rows; callers that must see every row — e.g. import
63
+ * dedup markers — use this instead.
64
+ */
65
+ listSessionMetadata(limit?: number): Promise<Array<{
66
+ sessionId: string;
67
+ metadata?: Record<string, unknown>;
68
+ }>>;
59
69
  reconcileDeadSessions(limit?: number): Promise<number>;
60
70
  deleteSession(sessionId: string): Promise<{
61
71
  deleted: boolean;
@@ -48,8 +48,8 @@ export declare const TodoTaskInputSchema: z.ZodObject<{
48
48
  statuses: z.ZodOptional<z.ZodArray<z.ZodEnum<{
49
49
  failed: "failed";
50
50
  completed: "completed";
51
- in_progress: "in_progress";
52
51
  cancelled: "cancelled";
52
+ in_progress: "in_progress";
53
53
  approved: "approved";
54
54
  pending_approval: "pending_approval";
55
55
  expired: "expired";
@@ -3,9 +3,9 @@ import { z } from "zod";
3
3
  import { type ScheduledTaskResult, type ScheduleTaskOperationOptions } from "../cron/service/schedule-tool";
4
4
  import { type TodoTaskOperationOptions, type TodoTaskResult } from "./agenda-task-tool";
5
5
  export declare const TASKS_TOOL_NAME = "tasks";
6
- export declare const TASKS_SYSTEM_PROMPT_RULE = "# Tasks\n\nUse the `tasks` tool to manage durable Todo items and explicitly requested scheduled agent work.\n\n- Use `kind: \"todo\"` for meaningful follow-ups, handoffs, ideas, reminders, and other work that should remain visible after this session. This includes useful work you identify and suggest proactively. Agent-created Todos require user approval; Todos created directly by the user are approved immediately. Todo `available_at` controls availability in the list; it never schedules execution.\n- Use `kind: \"scheduled\"` only when the user explicitly asks Cline to execute work once at a future time or on a recurrence. One-time schedules require an exact future ISO 8601 `run_at` with an offset or Z. Recurring schedules require a five-field `cron_pattern` and may include an IANA `timezone`.\n- \"Remind me\" is ambiguous: ask whether the user wants a reviewed Todo note or an agent to execute work at that time when intent is unclear.\n- Never create both kinds for the same request unless the user explicitly requests both. Check existing items before creating a likely duplicate.\n- Todo instructions and scheduled prompts must be self-contained. Include the goal, constraints, relevant project context, and expected output.\n- Never approve or start a Todo yourself. Only mutate schedules from an interactive user session, and only update, pause, resume, delete, or run one immediately when the user asks.";
6
+ export declare const TASKS_SYSTEM_PROMPT_RULE = "# Tasks\n\nUse the `tasks` tool to manage durable Todo items and explicitly requested scheduled agent work.\n\n- Use `kind: \"todo\"` for meaningful follow-ups, handoffs, ideas, reminders, and other work that should remain visible after this session. This includes useful work you identify and suggest proactively. Agent-created Todos require user approval; Todos created directly by the user are approved immediately. Todo `available_at` controls availability in the list; it never schedules execution.\n- Use `kind: \"scheduled\"` only when the user explicitly asks Cline to execute work once at a future time or on a recurrence. One-time schedules require an exact future ISO 8601 `run_at` with an offset or Z. Recurring schedules require a five-field `cron_pattern` and may include an IANA `timezone`.\n- \"Remind me\" is ambiguous: ask whether the user wants a reviewed Todo note or an agent to execute work at that time when intent is unclear.\n- Never create both kinds for the same request unless the user explicitly requests both. Check existing items before creating a likely duplicate.\n- Todo instructions and scheduled prompts must be self-contained. Include the goal, constraints, relevant project context, and expected output.\n- Scheduled sessions run in the user's schedules home workspace, not this conversation's folder. Include absolute paths in the scheduled `prompt` for any project files or repositories the work must touch.\n- Never approve or start a Todo yourself. Only mutate schedules from an interactive user session, and only update, pause, resume, delete, or run one immediately when the user asks.";
7
7
  /** Guidance used while the Todo kind is disabled and only schedules remain. */
8
- export declare const SCHEDULED_TASKS_SYSTEM_PROMPT_RULE = "# Tasks\n\nUse the `tasks` tool only when the user explicitly asks Cline to execute work once at a future time or on a recurrence. Always pass `kind: \"scheduled\"`.\n\n- One-time schedules require an exact future ISO 8601 `run_at` with an offset or Z. Recurring schedules require a five-field `cron_pattern` and may include an IANA `timezone`.\n- Never create a schedule proactively. Check existing schedules before creating a likely duplicate.\n- Make the scheduled `prompt` self-contained because it runs in a new unattended session. Include the goal, constraints, relevant project context, and expected output.\n- Only update, pause, resume, delete, or run a schedule immediately when the user asks for that action.";
8
+ export declare const SCHEDULED_TASKS_SYSTEM_PROMPT_RULE = "# Tasks\n\nUse the `tasks` tool only when the user explicitly asks Cline to execute work once at a future time or on a recurrence. Always pass `kind: \"scheduled\"`.\n\n- One-time schedules require an exact future ISO 8601 `run_at` with an offset or Z. Recurring schedules require a five-field `cron_pattern` and may include an IANA `timezone`.\n- Never create a schedule proactively. Check existing schedules before creating a likely duplicate.\n- Make the scheduled `prompt` self-contained because it runs in a new unattended session in the user's schedules home workspace, not this conversation's folder. Include the goal, constraints, expected output, and absolute paths for any project files or repositories the work must touch.\n- Only update, pause, resume, delete, or run a schedule immediately when the user asks for that action.";
9
9
  export declare const TasksToolInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
10
10
  operation: z.ZodEnum<{
11
11
  update: "update";
@@ -53,8 +53,8 @@ export declare const TasksToolInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
53
53
  statuses: z.ZodOptional<z.ZodArray<z.ZodEnum<{
54
54
  failed: "failed";
55
55
  completed: "completed";
56
- in_progress: "in_progress";
57
56
  cancelled: "cancelled";
57
+ in_progress: "in_progress";
58
58
  approved: "approved";
59
59
  pending_approval: "pending_approval";
60
60
  expired: "expired";
@@ -25,8 +25,8 @@ export declare const ChatSessionStatusSchema: z.ZodEnum<{
25
25
  completed: "completed";
26
26
  idle: "idle";
27
27
  running: "running";
28
- pending: "pending";
29
28
  cancelled: "cancelled";
29
+ pending: "pending";
30
30
  starting: "starting";
31
31
  stopping: "stopping";
32
32
  }>;
@@ -107,8 +107,8 @@ export declare const ChatViewStateSchema: z.ZodObject<{
107
107
  completed: "completed";
108
108
  idle: "idle";
109
109
  running: "running";
110
- pending: "pending";
111
110
  cancelled: "cancelled";
111
+ pending: "pending";
112
112
  starting: "starting";
113
113
  stopping: "stopping";
114
114
  }>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cline/core",
3
3
  "description": "Cline Core SDK for Node Runtime",
4
- "version": "0.0.81",
4
+ "version": "0.0.82",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/cline/cline",
@@ -49,9 +49,9 @@
49
49
  "test:watch": "vitest --config vitest.config.ts"
50
50
  },
51
51
  "dependencies": {
52
- "@cline/agents": "0.0.81",
53
- "@cline/shared": "0.0.81",
54
- "@cline/llms": "0.0.81",
52
+ "@cline/agents": "0.0.82",
53
+ "@cline/shared": "0.0.82",
54
+ "@cline/llms": "0.0.82",
55
55
  "@modelcontextprotocol/sdk": "^1.29.0",
56
56
  "@opentelemetry/api": "^1.9.0",
57
57
  "@opentelemetry/api-logs": "^0.214.0",