cline-rb 1.0.0

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 (58) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +139 -0
  3. data/README.md +1216 -0
  4. data/TODO.md +2 -0
  5. data/lib/cline/cli.rb +373 -0
  6. data/lib/cline/config.rb +100 -0
  7. data/lib/cline/configuration.rb +23 -0
  8. data/lib/cline/data.rb +119 -0
  9. data/lib/cline/file_content.rb +33 -0
  10. data/lib/cline/global_settings.rb +17 -0
  11. data/lib/cline/global_state/api_providers.rb +48 -0
  12. data/lib/cline/global_state/auto_approval.rb +73 -0
  13. data/lib/cline/global_state/browser.rb +52 -0
  14. data/lib/cline/global_state/features.rb +56 -0
  15. data/lib/cline/global_state/general.rb +77 -0
  16. data/lib/cline/global_state/models.rb +127 -0
  17. data/lib/cline/global_state/toggles.rb +33 -0
  18. data/lib/cline/global_state/workspace.rb +41 -0
  19. data/lib/cline/global_state.rb +16 -0
  20. data/lib/cline/log.rb +288 -0
  21. data/lib/cline/logs.rb +136 -0
  22. data/lib/cline/mcp_settings.rb +30 -0
  23. data/lib/cline/model.rb +47 -0
  24. data/lib/cline/models.rb +11 -0
  25. data/lib/cline/overlay_hash.rb +125 -0
  26. data/lib/cline/providers.rb +59 -0
  27. data/lib/cline/schema.rb +144 -0
  28. data/lib/cline/secret_string.rb +83 -0
  29. data/lib/cline/secrets.rb +119 -0
  30. data/lib/cline/serializable/cline_data.rb +131 -0
  31. data/lib/cline/serializable/dir.rb +81 -0
  32. data/lib/cline/serializable/file.rb +106 -0
  33. data/lib/cline/session.rb +87 -0
  34. data/lib/cline/session_data.rb +154 -0
  35. data/lib/cline/session_message.rb +178 -0
  36. data/lib/cline/session_messages.rb +61 -0
  37. data/lib/cline/sessions.rb +30 -0
  38. data/lib/cline/skill.rb +148 -0
  39. data/lib/cline/skills.rb +8 -0
  40. data/lib/cline/task.rb +75 -0
  41. data/lib/cline/task_message.rb +247 -0
  42. data/lib/cline/task_messages.rb +11 -0
  43. data/lib/cline/tasks.rb +30 -0
  44. data/lib/cline/usage.rb +37 -0
  45. data/lib/cline/utils/enumerable_dir_objects.rb +103 -0
  46. data/lib/cline/utils/file.rb +71 -0
  47. data/lib/cline/utils/file_monitor.rb +56 -0
  48. data/lib/cline/utils/logger.rb +37 -0
  49. data/lib/cline/utils/os/linux.rb +43 -0
  50. data/lib/cline/utils/os/mingw32.rb +46 -0
  51. data/lib/cline/utils/os.rb +31 -0
  52. data/lib/cline/utils/schema.rb +290 -0
  53. data/lib/cline/version.rb +6 -0
  54. data/lib/cline/workspace.rb +25 -0
  55. data/lib/cline/workspace_settings.rb +29 -0
  56. data/lib/cline/workspaces.rb +8 -0
  57. data/lib/cline.rb +22 -0
  58. metadata +249 -0
@@ -0,0 +1,48 @@
1
+ module Cline
2
+ class GlobalState
3
+ # API provider endpoints and authentication settings
4
+ module ApiProviders
5
+ # Define all the attributes of the included class
6
+ #
7
+ # @param base [Class] Base class including this mixin
8
+ def self.included(base)
9
+ base.class_eval do
10
+ # @!group Public API
11
+
12
+ # @return [Hash] OpenAI custom headers
13
+ attribute :open_ai_headers, Utils::Schema.map(:string)
14
+
15
+ # @return [Boolean] SAP AI Core orchestration mode flag
16
+ attribute :sap_ai_core_use_orchestration_mode, :boolean
17
+
18
+ # @return [String] Anthropic API base URL
19
+ attribute :anthropic_base_url, :string
20
+
21
+ # @return [String] OpenRouter provider sorting preference
22
+ attribute :open_router_provider_sorting, :string
23
+
24
+ # @return [String] AWS authentication method
25
+ attribute :aws_authentication, :string
26
+
27
+ # @return [String] Ollama API context window number
28
+ attribute :ollama_api_options_ctx_num, :string
29
+
30
+ # @return [String] LM Studio base URL
31
+ attribute :lm_studio_base_url, :string
32
+
33
+ # @return [String] LM Studio maximum tokens
34
+ attribute :lm_studio_max_tokens, :string
35
+
36
+ # @return [String] Gemini API base URL
37
+ attribute :gemini_base_url, :string
38
+
39
+ # @return [String] Azure API version
40
+ attribute :azure_api_version, :string
41
+
42
+ # @return [Integer] Request timeout in milliseconds
43
+ attribute :request_timeout_ms, :integer
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,73 @@
1
+ module Cline
2
+ class GlobalState
3
+ # Auto approval and command execution permissions
4
+ module AutoApproval
5
+ # Auto approval configuration settings
6
+ class AutoApprovalSettings < Schema
7
+ # @!group Public API
8
+
9
+ # Auto approval action toggles
10
+ class AutoApprovalActions < Schema
11
+ # @!group Public API
12
+
13
+ # @return [Boolean] Allow reading files
14
+ attribute :read_files, :boolean
15
+
16
+ # @return [Boolean] Allow reading files externally
17
+ attribute :read_files_externally, :boolean
18
+
19
+ # @return [Boolean] Allow editing files
20
+ attribute :edit_files, :boolean
21
+
22
+ # @return [Boolean] Allow editing files externally
23
+ attribute :edit_files_externally, :boolean
24
+
25
+ # @return [Boolean] Allow executing safe commands
26
+ attribute :execute_safe_commands, :boolean
27
+
28
+ # @return [Boolean] Allow executing all commands
29
+ attribute :execute_all_commands, :boolean
30
+
31
+ # @return [Boolean] Allow using browser tools
32
+ attribute :use_browser, :boolean
33
+
34
+ # @return [Boolean] Allow using MCP servers
35
+ attribute :use_mcp, :boolean
36
+ end
37
+
38
+ # @return [AutoApprovalActions] Action toggles
39
+ attribute :actions, AutoApprovalActions
40
+
41
+ # @return [Boolean] Auto approval enabled flag
42
+ attribute :enabled, :boolean
43
+
44
+ # @return [Integer] Configuration version
45
+ attribute :version, :integer
46
+
47
+ # @return [Array<String>] Favorite approval entries
48
+ attribute :favorites, Utils::Schema.collection(:string)
49
+
50
+ # @return [Integer] Maximum allowed requests
51
+ attribute :max_requests, :integer
52
+
53
+ # @return [Boolean] Enable notifications
54
+ attribute :enable_notifications, :boolean
55
+ end
56
+
57
+ # Define all the attributes of the included class
58
+ #
59
+ # @param base [Class] Base class including this mixin
60
+ def self.included(base)
61
+ base.class_eval do
62
+ # @!group Public API
63
+
64
+ # @return [AutoApprovalSettings] Auto approval configuration settings
65
+ attribute :auto_approval_settings, AutoApprovalSettings
66
+
67
+ # @return [Boolean] YOLO mode toggled flag
68
+ attribute :yolo_mode_toggled, :boolean
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,52 @@
1
+ module Cline
2
+ class GlobalState
3
+ # Browser integration and viewport settings
4
+ module Browser
5
+ # Browser configuration settings
6
+ class BrowserSettings < Schema
7
+ # @!group Public API
8
+
9
+ # Browser viewport settings
10
+ class BrowserViewport < Schema
11
+ # @!group Public API
12
+
13
+ # @return [Integer] Viewport width
14
+ attribute :width, :integer
15
+
16
+ # @return [Integer] Viewport height
17
+ attribute :height, :integer
18
+ end
19
+
20
+ # @return [BrowserViewport] Browser viewport dimensions
21
+ attribute :viewport, BrowserViewport
22
+
23
+ # @return [Boolean] Remote browser enabled flag
24
+ attribute :remote_browser_enabled, :boolean
25
+
26
+ # @return [String] Remote browser host address
27
+ attribute :remote_browser_host, :string
28
+
29
+ # @return [String] Chrome executable path
30
+ attribute :chrome_executable_path, :string
31
+
32
+ # @return [Boolean] Disable browser tool use
33
+ attribute :disable_tool_use, :boolean
34
+
35
+ # @return [String] Custom browser arguments
36
+ attribute :custom_args, :string
37
+ end
38
+
39
+ # Define all the attributes of the included class
40
+ #
41
+ # @param base [Class] Base class including this mixin
42
+ def self.included(base)
43
+ base.class_eval do
44
+ # @!group Public API
45
+
46
+ # @return [BrowserSettings] Browser configuration settings
47
+ attribute :browser_settings, BrowserSettings
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,56 @@
1
+ module Cline
2
+ class GlobalState
3
+ # Feature flags and experimental features
4
+ module Features
5
+ # Focus chain feature settings
6
+ class FocusChainSettings < Schema
7
+ # @!group Public API
8
+
9
+ # @return [Boolean] Focus chain enabled flag
10
+ attribute :enabled, :boolean
11
+
12
+ # @return [Integer] Reminder interval in messages
13
+ attribute :remind_cline_interval, :integer
14
+ end
15
+
16
+ # Define all the attributes of the included class
17
+ #
18
+ # @param base [Class] Base class including this mixin
19
+ def self.included(base)
20
+ base.class_eval do
21
+ # @!group Public API
22
+
23
+ # @return [FocusChainSettings] Focus chain feature settings
24
+ attribute :focus_chain_settings, FocusChainSettings
25
+
26
+ # @return [Boolean] Flag enabling Cline web tools
27
+ attribute :cline_web_tools_enabled, :boolean
28
+
29
+ # @return [Boolean] Flag enabling double check before completion
30
+ attribute :double_check_completion_enabled, :boolean
31
+
32
+ # @return [Boolean] Flag enabling parallel tool execution
33
+ attribute :enable_parallel_tool_calling, :boolean
34
+
35
+ # @return [Boolean] Flag enabling strict Plan mode enforcement
36
+ attribute :strict_plan_mode_enabled, :boolean
37
+
38
+ # @return [Boolean] Flag enabling subagents feature
39
+ attribute :subagents_enabled, :boolean
40
+
41
+ # @return [Boolean] Flag enabling auto content condensation
42
+ attribute :use_auto_condense, :boolean
43
+
44
+ # @return [Boolean] Flag enabling native tool calling
45
+ attribute :native_tool_call_enabled, :boolean
46
+
47
+ # @return [Boolean] Checkpoints feature enabled flag
48
+ attribute :enable_checkpoints_setting, :boolean
49
+
50
+ # @return [Boolean] Background edit enabled flag
51
+ attribute :background_edit_enabled, :boolean
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,77 @@
1
+ module Cline
2
+ class GlobalState
3
+ # General UI, telemetry and user preferences
4
+ module General
5
+ # Dismissed banner entry
6
+ class DismissedBanner < Schema
7
+ # @!group Public API
8
+
9
+ # @return [String] Banner identifier
10
+ attribute :banner_id, :string
11
+
12
+ # @return [Integer] Timestamp when banner was dismissed
13
+ attribute :dismissed_at, :integer
14
+ end
15
+
16
+ # Define all the attributes of the included class
17
+ #
18
+ # @param base [Class] Base class including this mixin
19
+ def self.included(base)
20
+ base.class_eval do
21
+ # @!group Public API
22
+
23
+ # @return [Boolean] Flag indicating welcome view has been completed
24
+ attribute :welcome_view_completed, :boolean
25
+
26
+ # @return [String] Custom system prompt text
27
+ attribute :custom_prompt, :string
28
+
29
+ # @return [String] Default terminal profile identifier
30
+ attribute :default_terminal_profile, :string
31
+
32
+ # @return [String] Telemetry collection preference
33
+ attribute :telemetry_setting, :string
34
+
35
+ # @return [String] OCA mode setting
36
+ attribute :oca_mode, :string
37
+
38
+ # @return [String] Current Cline version
39
+ attribute :cline_version, :string
40
+
41
+ # @return [String] Last shown announcement identifier
42
+ attribute :last_shown_announcement_id, :string
43
+
44
+ # @return [String] VS Code terminal execution mode
45
+ attribute :vscode_terminal_execution_mode, :string
46
+
47
+ # @return [Boolean] New user flag
48
+ attribute :is_new_user, :boolean
49
+
50
+ # @return [String] MCP display mode
51
+ attribute :mcp_display_mode, :string
52
+
53
+ # @return [Integer] Last dismissed info banner version
54
+ attribute :last_dismissed_info_banner_version, :integer
55
+
56
+ # @return [Integer] Last dismissed model banner version
57
+ attribute :last_dismissed_model_banner_version, :integer
58
+
59
+ # @return [Integer] Last dismissed CLI banner version
60
+ attribute :last_dismissed_cli_banner_version, :integer
61
+
62
+ # @return [Array<DismissedBanner>] List of dismissed banners
63
+ attribute :dismissed_banners, Utils::Schema.collection(DismissedBanner)
64
+
65
+ # @return [Integer] Terminal output line limit
66
+ attribute :terminal_output_line_limit, :integer
67
+
68
+ # @return [Boolean] Opt out of remote configuration flag
69
+ attribute :opt_out_of_remote_config, :boolean
70
+
71
+ # @return [Integer] VS Code migration version
72
+ attribute :__vscode_migration_version, :integer
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,127 @@
1
+ module Cline
2
+ class GlobalState
3
+ # Model and AI configuration settings
4
+ module Models
5
+ # OpenRouter model information
6
+ class OpenRouterModelInfo < Schema
7
+ # @!group Public API
8
+
9
+ # Thinking configuration for models
10
+ class ThinkingConfig < Schema
11
+ # @!group Public API
12
+
13
+ # @return [Integer] Maximum thinking budget tokens
14
+ attribute :max_budget, :integer
15
+ end
16
+
17
+ # @return [String] Model name
18
+ attribute :name, :string
19
+
20
+ # @return [Integer] Maximum tokens allowed per request
21
+ attribute :max_tokens, :integer
22
+
23
+ # @return [Integer] Context window size
24
+ attribute :context_window, :integer
25
+
26
+ # @return [Boolean] Flag indicating image support
27
+ attribute :supports_images, :boolean
28
+
29
+ # @return [Boolean] Flag indicating prompt cache support
30
+ attribute :supports_prompt_cache, :boolean
31
+
32
+ # @return [Float] Input token price
33
+ attribute :input_price, :float
34
+
35
+ # @return [Float] Output token price
36
+ attribute :output_price, :float
37
+
38
+ # @return [Float] Cache reads price
39
+ attribute :cache_reads_price, :float
40
+
41
+ # @return [String] Model description
42
+ attribute :description, :string
43
+
44
+ # @return [ThinkingConfig] Thinking configuration
45
+ attribute :thinking_config, ThinkingConfig
46
+ end
47
+
48
+ # Define all the attributes of the included class
49
+ #
50
+ # @param base [Class] Base class including this mixin
51
+ def self.included(base)
52
+ base.class_eval do
53
+ # @!group Public API
54
+
55
+ # @return [OpenRouterModelInfo] OpenRouter model information for Act mode
56
+ attribute :act_mode_open_router_model_info, OpenRouterModelInfo
57
+
58
+ # @return [OpenRouterModelInfo] OpenRouter model information for Plan mode
59
+ attribute :plan_mode_open_router_model_info, OpenRouterModelInfo
60
+
61
+ # @return [OpenRouterModelInfo] Cline model information for Act mode
62
+ attribute :act_mode_cline_model_info, OpenRouterModelInfo
63
+
64
+ # @return [OpenRouterModelInfo] Cline model information for Plan mode
65
+ attribute :plan_mode_cline_model_info, OpenRouterModelInfo
66
+
67
+ # @return [String] API provider used for Act mode
68
+ attribute :act_mode_api_provider, :string
69
+
70
+ # @return [String] API provider used for Plan mode
71
+ attribute :plan_mode_api_provider, :string
72
+
73
+ # @return [String] Cline model identifier for Act mode
74
+ attribute :act_mode_cline_model_id, :string
75
+
76
+ # @return [String] Cline model identifier for Plan mode
77
+ attribute :plan_mode_cline_model_id, :string
78
+
79
+ # @return [String] Reasoning effort level for Act mode
80
+ attribute :act_mode_reasoning_effort, :string
81
+
82
+ # @return [String] Reasoning effort level for Plan mode
83
+ attribute :plan_mode_reasoning_effort, :string
84
+
85
+ # @return [Integer] Thinking budget token limit for Plan mode
86
+ attribute :plan_mode_thinking_budget_tokens, :integer
87
+
88
+ # @return [Integer] Thinking budget token limit for Act mode
89
+ attribute :act_mode_thinking_budget_tokens, :integer
90
+
91
+ # @return [String] OpenRouter model identifier for Act mode
92
+ attribute :act_mode_open_router_model_id, :string
93
+
94
+ # @return [String] OpenRouter model identifier for Plan mode
95
+ attribute :plan_mode_open_router_model_id, :string
96
+
97
+ # @return [String] API model identifier for Plan mode
98
+ attribute :plan_mode_api_model_id, :string
99
+
100
+ # @return [String] API model identifier for Act mode
101
+ attribute :act_mode_api_model_id, :string
102
+
103
+ # @return [String] Ollama model identifier for Plan mode
104
+ attribute :plan_mode_ollama_model_id, :string
105
+
106
+ # @return [String] LM Studio model identifier for Plan mode
107
+ attribute :plan_mode_lm_studio_model_id, :string
108
+
109
+ # @return [String] Fireworks model identifier for Plan mode
110
+ attribute :plan_mode_fireworks_model_id, :string
111
+
112
+ # @return [String] Ollama model identifier for Act mode
113
+ attribute :act_mode_ollama_model_id, :string
114
+
115
+ # @return [String] LM Studio model identifier for Act mode
116
+ attribute :act_mode_lm_studio_model_id, :string
117
+
118
+ # @return [String] Fireworks model identifier for Act mode
119
+ attribute :act_mode_fireworks_model_id, :string
120
+
121
+ # @return [Boolean] Plan/Act separate models setting
122
+ attribute :plan_act_separate_models_setting, :boolean
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,33 @@
1
+ module Cline
2
+ class GlobalState
3
+ # Toggles configuration of rules, workflows and skills
4
+ module Toggles
5
+ # Define all the attributes of the included class
6
+ #
7
+ # @param base [Class] Base class including this mixin
8
+ def self.included(base)
9
+ base.class_eval do
10
+ # @!group Public API
11
+
12
+ # @return [Hash] Remote rules toggle states
13
+ attribute :remote_rules_toggles, Utils::Schema.map(:boolean)
14
+
15
+ # @return [Hash] Remote workflow toggle states
16
+ attribute :remote_workflow_toggles, Utils::Schema.map(:boolean)
17
+
18
+ # @return [Hash] Global workflow toggle states
19
+ attribute :global_workflow_toggles, Utils::Schema.map(:boolean)
20
+
21
+ # @return [Hash] Global Cline rules toggle states
22
+ attribute :global_cline_rules_toggles, Utils::Schema.map(:boolean)
23
+
24
+ # @return [Hash] Remote skills toggle states
25
+ attribute :remote_skills_toggles, Utils::Schema.map(:boolean)
26
+
27
+ # @return [Hash] Global skills toggle states
28
+ attribute :global_skills_toggles, Utils::Schema.map(:boolean)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,41 @@
1
+ module Cline
2
+ class GlobalState
3
+ # Workspace directories and multi-root configuration
4
+ module Workspace
5
+ # Workspace root directory entry
6
+ class WorkspaceRoot < Schema
7
+ # @!group Public API
8
+
9
+ # @return [String] Directory path
10
+ attribute :path, :string
11
+
12
+ # @return [String] Display name
13
+ attribute :name, :string
14
+
15
+ # @return [String] Version control system type
16
+ attribute :vcs, :string
17
+
18
+ # @return [String] Current commit hash
19
+ attribute :commit_hash, :string
20
+ end
21
+
22
+ # Define all the attributes of the included class
23
+ #
24
+ # @param base [Class] Base class including this mixin
25
+ def self.included(base)
26
+ base.class_eval do
27
+ # @!group Public API
28
+
29
+ # @return [Array<WorkspaceRoot>] List of workspace root directories
30
+ attribute :workspace_roots, Utils::Schema.collection(WorkspaceRoot)
31
+
32
+ # @return [Integer] Index of currently active primary workspace root
33
+ attribute :primary_root_index, :integer
34
+
35
+ # @return [Boolean] Flag enabling multi root workspace support
36
+ attribute :multi_root_enabled, :boolean
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,16 @@
1
+ module Cline
2
+ # Global Cline state
3
+ class GlobalState < Schema
4
+ # @!group Public API
5
+
6
+ Serializable::ClineData.include_for(self, 'globalState.json')
7
+ include Models
8
+ include AutoApproval
9
+ include Browser
10
+ include Workspace
11
+ include Features
12
+ include ApiProviders
13
+ include General
14
+ include Toggles
15
+ end
16
+ end