openclacky 1.5.13 → 1.5.14
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +51 -0
- data/lib/clacky/agent/chunk_index.rb +83 -0
- data/lib/clacky/agent/history_navigation.rb +239 -0
- data/lib/clacky/agent/session_serializer.rb +38 -97
- data/lib/clacky/agent.rb +281 -276
- data/lib/clacky/agent_config.rb +1 -1
- data/lib/clacky/billing/billing_store.rb +2 -2
- data/lib/clacky/billing/platform_billing.rb +6 -0
- data/lib/clacky/brand_config.rb +13 -2
- data/lib/clacky/cli.rb +27 -0
- data/lib/clacky/client.rb +2 -2
- data/lib/clacky/default_extensions/ext-studio/agents/ext-developer/system_prompt.md +70 -134
- data/lib/clacky/default_extensions/ext-studio/panels/studio/view.js +91 -5
- data/lib/clacky/default_extensions/ext-studio/skills/ext-develop/SKILL.md +179 -577
- data/lib/clacky/default_extensions/git/panels/git/view.js +34 -14
- data/lib/clacky/default_extensions/preview/ext.yml +20 -0
- data/lib/clacky/default_extensions/preview/panels/preview/view.js +475 -0
- data/lib/clacky/default_extensions/time_machine/panels/time_machine/view.js +1 -10
- data/lib/clacky/extension/api_extension.rb +1 -1
- data/lib/clacky/extension/verifier.rb +1 -1
- data/lib/clacky/media/openai_compat.rb +70 -30
- data/lib/clacky/message_format/bedrock.rb +6 -1
- data/lib/clacky/prompts/base.md +1 -1
- data/lib/clacky/providers.rb +38 -3
- data/lib/clacky/rich_ui/rich_ui_controller.rb +1 -1
- data/lib/clacky/search_config.rb +3 -3
- data/lib/clacky/server/channel/channel_manager.rb +8 -5
- data/lib/clacky/server/git_panel.rb +10 -2
- data/lib/clacky/server/http_server.rb +161 -14
- data/lib/clacky/server/preview.rb +351 -0
- data/lib/clacky/server/web_ui_controller.rb +1 -1
- data/lib/clacky/skill.rb +48 -0
- data/lib/clacky/tools/browser.rb +176 -19
- data/lib/clacky/tools/web_search.rb +79 -8
- data/lib/clacky/ui2/components/command_suggestions.rb +2 -1
- data/lib/clacky/ui2/components/input_area.rb +22 -2
- data/lib/clacky/ui2/components/modal_component.rb +35 -6
- data/lib/clacky/ui2/ui_controller.rb +44 -7
- data/lib/clacky/utils/file_processor.rb +19 -7
- data/lib/clacky/utils/mac_app_detector.rb +186 -0
- data/lib/clacky/utils/model_pricing.rb +114 -66
- data/lib/clacky/utils/windows_app_detector.rb +334 -0
- data/lib/clacky/version.rb +1 -1
- data/lib/clacky/web/app.css +596 -130
- data/lib/clacky/web/components/chat-navigator.js +489 -202
- data/lib/clacky/web/components/code-editor.js +191 -5
- data/lib/clacky/web/components/model-picker.js +2 -1
- data/lib/clacky/web/components/quote-select.js +235 -0
- data/lib/clacky/web/core/aside.js +157 -8
- data/lib/clacky/web/core/ext.js +16 -0
- data/lib/clacky/web/features/billing/view.js +75 -21
- data/lib/clacky/web/features/skills/store.js +18 -1
- data/lib/clacky/web/features/skills/view.js +128 -7
- data/lib/clacky/web/features/workspace/store.js +80 -7
- data/lib/clacky/web/features/workspace/view.js +392 -40
- data/lib/clacky/web/i18n.js +90 -5
- data/lib/clacky/web/index.html +15 -6
- data/lib/clacky/web/sessions.js +193 -38
- data/lib/clacky/web/utils.js +34 -0
- data/lib/clacky/web/vendor/codemirror/codemirror.min.js +24 -19
- data/lib/clacky/web/vendor/codemirror/entry.js +130 -0
- data/lib/clacky/web/vendor/codemirror/package.json +29 -0
- data/lib/clacky/web/ws-dispatcher.js +20 -0
- data/lib/clacky.rb +2 -0
- metadata +11 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
// CodeMirror 6 bundle entry — exposes a single `CM` global with the editor
|
|
2
|
+
// core plus mainstream language support for the workspace file viewer.
|
|
3
|
+
import { EditorState } from "@codemirror/state";
|
|
4
|
+
import {
|
|
5
|
+
EditorView,
|
|
6
|
+
keymap,
|
|
7
|
+
lineNumbers,
|
|
8
|
+
highlightActiveLineGutter,
|
|
9
|
+
highlightSpecialChars,
|
|
10
|
+
drawSelection,
|
|
11
|
+
dropCursor,
|
|
12
|
+
rectangularSelection,
|
|
13
|
+
crosshairCursor,
|
|
14
|
+
highlightActiveLine,
|
|
15
|
+
} from "@codemirror/view";
|
|
16
|
+
import {
|
|
17
|
+
defaultKeymap,
|
|
18
|
+
history,
|
|
19
|
+
historyKeymap,
|
|
20
|
+
indentWithTab,
|
|
21
|
+
} from "@codemirror/commands";
|
|
22
|
+
import { search, searchKeymap, highlightSelectionMatches } from "@codemirror/search";
|
|
23
|
+
import {
|
|
24
|
+
bracketMatching,
|
|
25
|
+
foldGutter,
|
|
26
|
+
foldKeymap,
|
|
27
|
+
indentOnInput,
|
|
28
|
+
syntaxHighlighting,
|
|
29
|
+
defaultHighlightStyle,
|
|
30
|
+
StreamLanguage,
|
|
31
|
+
} from "@codemirror/language";
|
|
32
|
+
import { markdown, markdownLanguage } from "@codemirror/lang-markdown";
|
|
33
|
+
import { oneDark } from "@codemirror/theme-one-dark";
|
|
34
|
+
|
|
35
|
+
// ── Lezer languages (best highlighting quality) ────────────────────────────
|
|
36
|
+
import { python } from "@codemirror/lang-python";
|
|
37
|
+
import {
|
|
38
|
+
javascript,
|
|
39
|
+
typescriptLanguage,
|
|
40
|
+
jsxLanguage,
|
|
41
|
+
tsxLanguage,
|
|
42
|
+
} from "@codemirror/lang-javascript";
|
|
43
|
+
import { html } from "@codemirror/lang-html";
|
|
44
|
+
import { css } from "@codemirror/lang-css";
|
|
45
|
+
import { json } from "@codemirror/lang-json";
|
|
46
|
+
import { sql } from "@codemirror/lang-sql";
|
|
47
|
+
import { xml } from "@codemirror/lang-xml";
|
|
48
|
+
import { rust } from "@codemirror/lang-rust";
|
|
49
|
+
import { java } from "@codemirror/lang-java";
|
|
50
|
+
import { cpp } from "@codemirror/lang-cpp";
|
|
51
|
+
import { php } from "@codemirror/lang-php";
|
|
52
|
+
|
|
53
|
+
// ── Legacy (StreamParser) languages ────────────────────────────────────────
|
|
54
|
+
import { ruby } from "@codemirror/legacy-modes/mode/ruby";
|
|
55
|
+
import { go } from "@codemirror/legacy-modes/mode/go";
|
|
56
|
+
import { shell } from "@codemirror/legacy-modes/mode/shell";
|
|
57
|
+
import { yaml } from "@codemirror/legacy-modes/mode/yaml";
|
|
58
|
+
import { toml } from "@codemirror/legacy-modes/mode/toml";
|
|
59
|
+
import { dockerFile } from "@codemirror/legacy-modes/mode/dockerfile";
|
|
60
|
+
|
|
61
|
+
const rubyLang = StreamLanguage.define(ruby);
|
|
62
|
+
const goLang = StreamLanguage.define(go);
|
|
63
|
+
const shellLang = StreamLanguage.define(shell);
|
|
64
|
+
const yamlLang = StreamLanguage.define(yaml);
|
|
65
|
+
const tomlLang = StreamLanguage.define(toml);
|
|
66
|
+
const dockerfileLang = StreamLanguage.define(dockerFile);
|
|
67
|
+
|
|
68
|
+
// Lezer languages are already functions returning a LanguageSupport.
|
|
69
|
+
// LRLanguage objects and StreamLanguage supports are wrapped so CodeEditor
|
|
70
|
+
// can call every language uniformly as `CM.<lang>()`.
|
|
71
|
+
const typescript = () => typescriptLanguage;
|
|
72
|
+
const jsx = () => jsxLanguage;
|
|
73
|
+
const tsx = () => tsxLanguage;
|
|
74
|
+
const rubyFn = () => rubyLang;
|
|
75
|
+
const goFn = () => goLang;
|
|
76
|
+
const shellFn = () => shellLang;
|
|
77
|
+
const yamlFn = () => yamlLang;
|
|
78
|
+
const tomlFn = () => tomlLang;
|
|
79
|
+
const dockerfileFn = () => dockerfileLang;
|
|
80
|
+
|
|
81
|
+
export {
|
|
82
|
+
EditorState,
|
|
83
|
+
EditorView,
|
|
84
|
+
keymap,
|
|
85
|
+
lineNumbers,
|
|
86
|
+
highlightActiveLineGutter,
|
|
87
|
+
highlightSpecialChars,
|
|
88
|
+
drawSelection,
|
|
89
|
+
dropCursor,
|
|
90
|
+
rectangularSelection,
|
|
91
|
+
crosshairCursor,
|
|
92
|
+
highlightActiveLine,
|
|
93
|
+
highlightSelectionMatches,
|
|
94
|
+
defaultKeymap,
|
|
95
|
+
history,
|
|
96
|
+
historyKeymap,
|
|
97
|
+
indentWithTab,
|
|
98
|
+
search,
|
|
99
|
+
searchKeymap,
|
|
100
|
+
bracketMatching,
|
|
101
|
+
foldGutter,
|
|
102
|
+
foldKeymap,
|
|
103
|
+
indentOnInput,
|
|
104
|
+
syntaxHighlighting,
|
|
105
|
+
defaultHighlightStyle,
|
|
106
|
+
StreamLanguage,
|
|
107
|
+
markdown,
|
|
108
|
+
markdownLanguage,
|
|
109
|
+
oneDark,
|
|
110
|
+
python,
|
|
111
|
+
javascript,
|
|
112
|
+
typescript,
|
|
113
|
+
jsx,
|
|
114
|
+
tsx,
|
|
115
|
+
html,
|
|
116
|
+
css,
|
|
117
|
+
json,
|
|
118
|
+
sql,
|
|
119
|
+
xml,
|
|
120
|
+
rust,
|
|
121
|
+
java,
|
|
122
|
+
cpp,
|
|
123
|
+
php,
|
|
124
|
+
rubyFn as ruby,
|
|
125
|
+
goFn as go,
|
|
126
|
+
shellFn as shell,
|
|
127
|
+
yamlFn as yaml,
|
|
128
|
+
tomlFn as toml,
|
|
129
|
+
dockerfileFn as dockerfile,
|
|
130
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cm-build",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"@codemirror/commands": "^6.8.1",
|
|
8
|
+
"@codemirror/lang-cpp": "^6.0.2",
|
|
9
|
+
"@codemirror/lang-css": "^6.3.1",
|
|
10
|
+
"@codemirror/lang-html": "^6.4.9",
|
|
11
|
+
"@codemirror/lang-java": "^6.0.1",
|
|
12
|
+
"@codemirror/lang-javascript": "^6.2.3",
|
|
13
|
+
"@codemirror/lang-json": "^6.0.1",
|
|
14
|
+
"@codemirror/lang-markdown": "^6.3.2",
|
|
15
|
+
"@codemirror/lang-php": "^6.0.1",
|
|
16
|
+
"@codemirror/lang-python": "^6.2.0",
|
|
17
|
+
"@codemirror/lang-rust": "^6.0.1",
|
|
18
|
+
"@codemirror/lang-sql": "^6.8.1",
|
|
19
|
+
"@codemirror/lang-xml": "^6.1.0",
|
|
20
|
+
"@codemirror/language": "^6.11.0",
|
|
21
|
+
"@codemirror/legacy-modes": "^6.5.1",
|
|
22
|
+
"@codemirror/search": "^6.5.10",
|
|
23
|
+
"@codemirror/state": "^6.5.2",
|
|
24
|
+
"@codemirror/theme-one-dark": "^6.1.2",
|
|
25
|
+
"@codemirror/view": "^6.36.8",
|
|
26
|
+
"esbuild": "^0.25.0",
|
|
27
|
+
"jsdom": "^30.0.1"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -226,6 +226,20 @@ function _dispatchEvent(ev) {
|
|
|
226
226
|
}
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
+
const eventSession = ev.session_id || ev.session?.id;
|
|
230
|
+
if (eventSession === Sessions.activeId) {
|
|
231
|
+
if (["history_user_message", "task_finished", "interrupted"].includes(ev.type) ||
|
|
232
|
+
(ev.type === "session_update" && (ev.status || ev.session))) {
|
|
233
|
+
window.ChatNavigator?.refresh();
|
|
234
|
+
}
|
|
235
|
+
// Keep live output out of a detached historical window. Session status,
|
|
236
|
+
// notifications and extension delivery above continue normally.
|
|
237
|
+
const historyOutput = ["history_user_message", "assistant_message", "tool_call", "tool_result",
|
|
238
|
+
"tool_error", "tool_stdout", "phase_start", "phase_end", "request_feedback", "progress",
|
|
239
|
+
"complete", "interrupted", "info", "warning", "success", "error", "token_usage"];
|
|
240
|
+
if (historyOutput.includes(ev.type) && Sessions.deferLiveHistory(ev)) return;
|
|
241
|
+
}
|
|
242
|
+
|
|
229
243
|
switch (ev.type) {
|
|
230
244
|
|
|
231
245
|
// ── Phase grouping ─────────────────────────────────────────────────
|
|
@@ -424,6 +438,7 @@ function _dispatchEvent(ev) {
|
|
|
424
438
|
if (ev.session_id !== Sessions.activeId) break;
|
|
425
439
|
Sessions.clearProgress();
|
|
426
440
|
Sessions.appendMsg("assistant", ev.content);
|
|
441
|
+
if (!ev.phase_id && !ev.interim) window.ChatNavigator?.refresh();
|
|
427
442
|
break;
|
|
428
443
|
|
|
429
444
|
case "tool_call":
|
|
@@ -470,6 +485,11 @@ function _dispatchEvent(ev) {
|
|
|
470
485
|
break;
|
|
471
486
|
|
|
472
487
|
case "complete":
|
|
488
|
+
// The agent may have created/edited files under the working dir; notify
|
|
489
|
+
// the workspace store so the Files tree reloads on completion.
|
|
490
|
+
if (typeof Workspace !== "undefined" && Workspace.notifyTaskCompleted) {
|
|
491
|
+
Workspace.notifyTaskCompleted(ev.session_id);
|
|
492
|
+
}
|
|
473
493
|
if (ev.session_id !== Sessions.activeId) break;
|
|
474
494
|
Sessions.clearProgress();
|
|
475
495
|
Sessions.collapseToolGroup();
|
data/lib/clacky.rb
CHANGED
|
@@ -105,6 +105,8 @@ require_relative "clacky/identity"
|
|
|
105
105
|
require_relative "clacky/access_key"
|
|
106
106
|
require_relative "clacky/utils/encoding"
|
|
107
107
|
require_relative "clacky/utils/environment_detector"
|
|
108
|
+
require_relative "clacky/utils/mac_app_detector"
|
|
109
|
+
require_relative "clacky/utils/windows_app_detector"
|
|
108
110
|
require_relative "clacky/utils/browser_detector"
|
|
109
111
|
require_relative "clacky/utils/scripts_manager"
|
|
110
112
|
require_relative "clacky/utils/searcher_manager"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: openclacky
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.5.
|
|
4
|
+
version: 1.5.14
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- windy
|
|
@@ -342,10 +342,12 @@ files:
|
|
|
342
342
|
- lib/clacky/access_key.rb
|
|
343
343
|
- lib/clacky/aes_gcm.rb
|
|
344
344
|
- lib/clacky/agent.rb
|
|
345
|
+
- lib/clacky/agent/chunk_index.rb
|
|
345
346
|
- lib/clacky/agent/cost_tracker.rb
|
|
346
347
|
- lib/clacky/agent/fake_tool_call_detector.rb
|
|
347
348
|
- lib/clacky/agent/goal_manager.rb
|
|
348
349
|
- lib/clacky/agent/goal_state.rb
|
|
350
|
+
- lib/clacky/agent/history_navigation.rb
|
|
349
351
|
- lib/clacky/agent/hook_manager.rb
|
|
350
352
|
- lib/clacky/agent/llm_caller.rb
|
|
351
353
|
- lib/clacky/agent/memory_updater.rb
|
|
@@ -398,6 +400,8 @@ files:
|
|
|
398
400
|
- lib/clacky/default_extensions/meeting/ext.yml
|
|
399
401
|
- lib/clacky/default_extensions/meeting/panels/meeting/view.js
|
|
400
402
|
- lib/clacky/default_extensions/meeting/skills/meeting-summarizer/SKILL.md
|
|
403
|
+
- lib/clacky/default_extensions/preview/ext.yml
|
|
404
|
+
- lib/clacky/default_extensions/preview/panels/preview/view.js
|
|
401
405
|
- lib/clacky/default_extensions/time_machine/ext.yml
|
|
402
406
|
- lib/clacky/default_extensions/time_machine/panels/time_machine/view.js
|
|
403
407
|
- lib/clacky/default_parsers/doc_parser.rb
|
|
@@ -568,6 +572,7 @@ files:
|
|
|
568
572
|
- lib/clacky/server/git_panel.rb
|
|
569
573
|
- lib/clacky/server/http_server.rb
|
|
570
574
|
- lib/clacky/server/model_prices.rb
|
|
575
|
+
- lib/clacky/server/preview.rb
|
|
571
576
|
- lib/clacky/server/project_manager.rb
|
|
572
577
|
- lib/clacky/server/scheduler.rb
|
|
573
578
|
- lib/clacky/server/server_master.rb
|
|
@@ -638,6 +643,7 @@ files:
|
|
|
638
643
|
- lib/clacky/utils/limit_stack.rb
|
|
639
644
|
- lib/clacky/utils/logger.rb
|
|
640
645
|
- lib/clacky/utils/login_shell.rb
|
|
646
|
+
- lib/clacky/utils/mac_app_detector.rb
|
|
641
647
|
- lib/clacky/utils/model_pricing.rb
|
|
642
648
|
- lib/clacky/utils/parser_manager.rb
|
|
643
649
|
- lib/clacky/utils/path_helper.rb
|
|
@@ -645,6 +651,7 @@ files:
|
|
|
645
651
|
- lib/clacky/utils/searcher_manager.rb
|
|
646
652
|
- lib/clacky/utils/string_matcher.rb
|
|
647
653
|
- lib/clacky/utils/trash_directory.rb
|
|
654
|
+
- lib/clacky/utils/windows_app_detector.rb
|
|
648
655
|
- lib/clacky/utils/workspace_rules.rb
|
|
649
656
|
- lib/clacky/version.rb
|
|
650
657
|
- lib/clacky/vision/resolver.rb
|
|
@@ -662,6 +669,7 @@ files:
|
|
|
662
669
|
- lib/clacky/web/components/model-picker.js
|
|
663
670
|
- lib/clacky/web/components/notify.js
|
|
664
671
|
- lib/clacky/web/components/onboard.js
|
|
672
|
+
- lib/clacky/web/components/quote-select.js
|
|
665
673
|
- lib/clacky/web/components/sidebar.js
|
|
666
674
|
- lib/clacky/web/core/aside.js
|
|
667
675
|
- lib/clacky/web/core/ext.js
|
|
@@ -711,6 +719,8 @@ files:
|
|
|
711
719
|
- lib/clacky/web/theme.js
|
|
712
720
|
- lib/clacky/web/utils.js
|
|
713
721
|
- lib/clacky/web/vendor/codemirror/codemirror.min.js
|
|
722
|
+
- lib/clacky/web/vendor/codemirror/entry.js
|
|
723
|
+
- lib/clacky/web/vendor/codemirror/package.json
|
|
714
724
|
- lib/clacky/web/vendor/hljs/highlight.min.js
|
|
715
725
|
- lib/clacky/web/vendor/hljs/hljs-theme.css
|
|
716
726
|
- lib/clacky/web/vendor/katex/auto-render.min.js
|