openclacky 1.2.10 → 1.2.13
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/.clacky/skills/gem-release/SKILL.md +1 -1
- data/.clacky/skills/gem-release/scripts/release.sh +4 -1
- data/CHANGELOG.md +56 -1
- data/lib/clacky/agent/llm_caller.rb +40 -25
- data/lib/clacky/agent/memory_updater.rb +12 -0
- data/lib/clacky/agent/session_serializer.rb +1 -1
- data/lib/clacky/agent/skill_auto_creator.rb +7 -4
- data/lib/clacky/agent/skill_evolution.rb +23 -5
- data/lib/clacky/agent/skill_manager.rb +86 -1
- data/lib/clacky/agent/skill_reflector.rb +18 -23
- data/lib/clacky/agent/tool_registry.rb +10 -0
- data/lib/clacky/agent.rb +68 -23
- data/lib/clacky/agent_config.rb +59 -15
- data/lib/clacky/anthropic_stream_aggregator.rb +17 -1
- data/lib/clacky/bedrock_stream_aggregator.rb +17 -1
- data/lib/clacky/cli.rb +55 -0
- data/lib/clacky/client.rb +25 -3
- data/lib/clacky/default_skills/channel-manager/SKILL.md +47 -42
- data/lib/clacky/default_skills/channel-manager/feishu_setup.rb +134 -0
- data/lib/clacky/default_skills/media-gen/SKILL.md +5 -0
- data/lib/clacky/default_skills/persist-memory/SKILL.md +4 -3
- data/lib/clacky/default_skills/search-skills/SKILL.md +61 -0
- data/lib/clacky/idle_compression_timer.rb +1 -1
- data/lib/clacky/message_format/open_ai.rb +7 -1
- data/lib/clacky/message_history.rb +57 -0
- data/lib/clacky/openai_stream_aggregator.rb +30 -3
- data/lib/clacky/providers.rb +40 -12
- data/lib/clacky/server/channel/adapters/dingtalk/adapter.rb +10 -1
- data/lib/clacky/server/channel/adapters/discord/adapter.rb +8 -2
- data/lib/clacky/server/channel/adapters/feishu/adapter.rb +10 -1
- data/lib/clacky/server/channel/adapters/feishu/bot.rb +12 -0
- data/lib/clacky/server/channel/adapters/feishu/message_parser.rb +23 -3
- data/lib/clacky/server/channel/adapters/telegram/adapter.rb +12 -2
- data/lib/clacky/server/channel/adapters/wecom/adapter.rb +5 -1
- data/lib/clacky/server/channel/channel_manager.rb +65 -4
- data/lib/clacky/server/channel/group_message_buffer.rb +53 -0
- data/lib/clacky/server/http_server.rb +190 -10
- data/lib/clacky/server/session_registry.rb +34 -14
- data/lib/clacky/server/web_ui_controller.rb +24 -1
- data/lib/clacky/session_manager.rb +120 -0
- data/lib/clacky/tools/trash_manager.rb +1 -1
- data/lib/clacky/tools/web_search.rb +59 -8
- data/lib/clacky/ui2/layout_manager.rb +15 -5
- data/lib/clacky/ui2/progress_handle.rb +7 -1
- data/lib/clacky/ui2/ui_controller.rb +27 -0
- data/lib/clacky/ui_interface.rb +22 -0
- data/lib/clacky/utils/model_pricing.rb +96 -0
- data/lib/clacky/version.rb +1 -1
- data/lib/clacky/web/app.css +230 -7
- data/lib/clacky/web/app.js +6 -5
- data/lib/clacky/web/apple-touch-icon-180.png +0 -0
- data/lib/clacky/web/brand.js +22 -2
- data/lib/clacky/web/favicon.ico +0 -0
- data/lib/clacky/web/i18n.js +22 -4
- data/lib/clacky/web/index.html +6 -4
- data/lib/clacky/web/logo_nav_dark.png +0 -0
- data/lib/clacky/web/model-tester.js +8 -1
- data/lib/clacky/web/sessions.js +576 -120
- data/lib/clacky/web/settings.js +213 -51
- data/lib/clacky/web/skills.js +5 -14
- data/lib/clacky/web/theme.js +1 -0
- data/lib/clacky/web/utils.js +57 -0
- data/lib/clacky/web/ws-dispatcher.js +136 -0
- data/scripts/build/lib/gem.sh +9 -2
- data/scripts/build/src/install_full.sh.cc +2 -0
- data/scripts/build/src/uninstall.sh.cc +1 -1
- data/scripts/install.ps1 +19 -5
- data/scripts/install.sh +9 -2
- data/scripts/install_full.sh +11 -2
- data/scripts/install_rails_deps.sh +9 -2
- data/scripts/uninstall.sh +10 -3
- metadata +9 -2
data/scripts/install.ps1
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
# Parameters:
|
|
11
11
|
# -BrandName Display name shown in prompts (default: OpenClacky)
|
|
12
12
|
# -CommandName CLI command name after install (default: openclacky)
|
|
13
|
+
# -Region CDN region: china (default) or global (use global for non-China networks)
|
|
13
14
|
#
|
|
14
15
|
# WSL1 is preferred (shares Windows network stack — no mirrored networking needed).
|
|
15
16
|
# If WSL1 import fails, the script falls back to WSL2 with mirrored networking.
|
|
@@ -22,7 +23,9 @@
|
|
|
22
23
|
param(
|
|
23
24
|
[switch]$Local,
|
|
24
25
|
[string]$BrandName = "",
|
|
25
|
-
[string]$CommandName = ""
|
|
26
|
+
[string]$CommandName = "",
|
|
27
|
+
[ValidateSet("china", "global")]
|
|
28
|
+
[string]$Region = "china"
|
|
26
29
|
)
|
|
27
30
|
|
|
28
31
|
Set-StrictMode -Version Latest
|
|
@@ -32,11 +35,19 @@ $env:WSL_UTF8 = "1"
|
|
|
32
35
|
$global:DisplayName = if ($BrandName) { $BrandName } else { "OpenClacky" }
|
|
33
36
|
$global:DisplayCmd = if ($CommandName) { $CommandName } else { "openclacky" }
|
|
34
37
|
|
|
35
|
-
|
|
36
|
-
|
|
38
|
+
Write-Host "==> Region: $Region"
|
|
39
|
+
|
|
40
|
+
$CLACKY_CDN_BASE_URL = if ($Region -eq "global") { "https://sg.oss.1024code.com" } else { "https://oss.1024code.com" }
|
|
41
|
+
$CLACKY_INSTALL_SCRIPT_BASE_URL = if ($Region -eq "global") { "https://raw.githubusercontent.com" } else { "https://oss.1024code.com" }
|
|
42
|
+
$CLACKY_CDN_PRIMARY_HOST = if ($Region -eq "global") { "sg.oss.1024code.com" } else { "oss.1024code.com" }
|
|
43
|
+
|
|
44
|
+
Write-Host "==> CDN_BASE_URL: $CLACKY_CDN_BASE_URL"
|
|
45
|
+
Write-Host "==> INSTALL_SCRIPT_BASE_URL: $CLACKY_INSTALL_SCRIPT_BASE_URL"
|
|
46
|
+
Write-Host "==> CDN_PRIMARY_HOST: $CLACKY_CDN_PRIMARY_HOST"
|
|
47
|
+
|
|
37
48
|
$CLACKY_CDN_BACKUP_HOST = "clackyai-1258723534.cos.ap-guangzhou.myqcloud.com"
|
|
38
|
-
$INSTALL_PS1_COMMAND = "powershell -c `"irm $
|
|
39
|
-
$INSTALL_SCRIPT_URL = "$
|
|
49
|
+
$INSTALL_PS1_COMMAND = "powershell -c `"irm $CLACKY_INSTALL_SCRIPT_BASE_URL/clacky-ai/openclacky/main/scripts/install.ps1 | iex`""
|
|
50
|
+
$INSTALL_SCRIPT_URL = "$CLACKY_INSTALL_SCRIPT_BASE_URL/clacky-ai/openclacky/main/scripts/install.sh"
|
|
40
51
|
$UBUNTU_WSL_AMD64_URL = "$CLACKY_CDN_BASE_URL/ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz"
|
|
41
52
|
$UBUNTU_WSL_AMD64_SHA256_URL = "$CLACKY_CDN_BASE_URL/ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz.sha256"
|
|
42
53
|
$UBUNTU_WSL_ARM64_URL = "$CLACKY_CDN_BASE_URL/ubuntu-jammy-wsl-arm64-ubuntu22.04lts.rootfs.tar.gz"
|
|
@@ -303,6 +314,9 @@ function Run-InstallInWsl {
|
|
|
303
314
|
wsl.exe -d Ubuntu -u root -- bash -c "cd ~ && curl -fsSL $INSTALL_SCRIPT_URL | bash -s -- --brand-name=$BrandName --command=$CommandName"
|
|
304
315
|
}
|
|
305
316
|
|
|
317
|
+
if ($LASTEXITCODE -eq 2) {
|
|
318
|
+
exit 2
|
|
319
|
+
}
|
|
306
320
|
if ($LASTEXITCODE -ne 0) {
|
|
307
321
|
Write-Fail "Installation failed inside WSL (exit $LASTEXITCODE)."
|
|
308
322
|
Write-Fail "You can retry manually:"
|
data/scripts/install.sh
CHANGED
|
@@ -474,7 +474,12 @@ restore_gemrc() {
|
|
|
474
474
|
setup_gem_home() {
|
|
475
475
|
local gem_dir
|
|
476
476
|
gem_dir=$(gem environment gemdir 2>/dev/null || true)
|
|
477
|
-
|
|
477
|
+
|
|
478
|
+
# gemdir writable → no workaround needed, clean up old RC entries
|
|
479
|
+
if [ -w "$gem_dir" ]; then
|
|
480
|
+
restore_gem_home
|
|
481
|
+
return 0
|
|
482
|
+
fi
|
|
478
483
|
|
|
479
484
|
local ruby_api
|
|
480
485
|
ruby_api=$(ruby -e 'puts RbConfig::CONFIG["ruby_version"]' 2>/dev/null)
|
|
@@ -483,7 +488,9 @@ setup_gem_home() {
|
|
|
483
488
|
export PATH="$HOME/.gem/ruby/${ruby_api}/bin:$PATH"
|
|
484
489
|
print_info "System Ruby detected — gems will install to ~/.gem/ruby/${ruby_api}"
|
|
485
490
|
|
|
486
|
-
|
|
491
|
+
# Clean old RC entries (could be from a different Ruby version), then write new ones
|
|
492
|
+
restore_gem_home
|
|
493
|
+
if [ -n "$SHELL_RC" ]; then
|
|
487
494
|
{
|
|
488
495
|
echo ""
|
|
489
496
|
echo "# Ruby user gem dir (added by openclacky installer)"
|
data/scripts/install_full.sh
CHANGED
|
@@ -559,7 +559,12 @@ restore_gemrc() {
|
|
|
559
559
|
setup_gem_home() {
|
|
560
560
|
local gem_dir
|
|
561
561
|
gem_dir=$(gem environment gemdir 2>/dev/null || true)
|
|
562
|
-
|
|
562
|
+
|
|
563
|
+
# gemdir writable → no workaround needed, clean up old RC entries
|
|
564
|
+
if [ -w "$gem_dir" ]; then
|
|
565
|
+
restore_gem_home
|
|
566
|
+
return 0
|
|
567
|
+
fi
|
|
563
568
|
|
|
564
569
|
local ruby_api
|
|
565
570
|
ruby_api=$(ruby -e 'puts RbConfig::CONFIG["ruby_version"]' 2>/dev/null)
|
|
@@ -568,7 +573,9 @@ setup_gem_home() {
|
|
|
568
573
|
export PATH="$HOME/.gem/ruby/${ruby_api}/bin:$PATH"
|
|
569
574
|
print_info "System Ruby detected — gems will install to ~/.gem/ruby/${ruby_api}"
|
|
570
575
|
|
|
571
|
-
|
|
576
|
+
# Clean old RC entries (could be from a different Ruby version), then write new ones
|
|
577
|
+
restore_gem_home
|
|
578
|
+
if [ -n "$SHELL_RC" ]; then
|
|
572
579
|
{
|
|
573
580
|
echo ""
|
|
574
581
|
echo "# Ruby user gem dir (added by openclacky installer)"
|
|
@@ -732,6 +739,8 @@ install_via_gem() {
|
|
|
732
739
|
local ver; ver=$(ruby -e 'puts RUBY_VERSION' 2>/dev/null)
|
|
733
740
|
version_ge "$ver" "3.1.0" || { print_error "Ruby $ver too old (>= 3.1.0 required)"; return 1; }
|
|
734
741
|
|
|
742
|
+
setup_gem_home
|
|
743
|
+
|
|
735
744
|
print_info "Installing ${DISPLAY_NAME}..."
|
|
736
745
|
if gem install openclacky --no-document; then
|
|
737
746
|
print_success "${DISPLAY_NAME} installed!"
|
|
@@ -687,7 +687,12 @@ restore_gemrc() {
|
|
|
687
687
|
setup_gem_home() {
|
|
688
688
|
local gem_dir
|
|
689
689
|
gem_dir=$(gem environment gemdir 2>/dev/null || true)
|
|
690
|
-
|
|
690
|
+
|
|
691
|
+
# gemdir writable → no workaround needed, clean up old RC entries
|
|
692
|
+
if [ -w "$gem_dir" ]; then
|
|
693
|
+
restore_gem_home
|
|
694
|
+
return 0
|
|
695
|
+
fi
|
|
691
696
|
|
|
692
697
|
local ruby_api
|
|
693
698
|
ruby_api=$(ruby -e 'puts RbConfig::CONFIG["ruby_version"]' 2>/dev/null)
|
|
@@ -696,7 +701,9 @@ setup_gem_home() {
|
|
|
696
701
|
export PATH="$HOME/.gem/ruby/${ruby_api}/bin:$PATH"
|
|
697
702
|
print_info "System Ruby detected — gems will install to ~/.gem/ruby/${ruby_api}"
|
|
698
703
|
|
|
699
|
-
|
|
704
|
+
# Clean old RC entries (could be from a different Ruby version), then write new ones
|
|
705
|
+
restore_gem_home
|
|
706
|
+
if [ -n "$SHELL_RC" ]; then
|
|
700
707
|
{
|
|
701
708
|
echo ""
|
|
702
709
|
echo "# Ruby user gem dir (added by openclacky installer)"
|
data/scripts/uninstall.sh
CHANGED
|
@@ -159,7 +159,12 @@ restore_gemrc() {
|
|
|
159
159
|
setup_gem_home() {
|
|
160
160
|
local gem_dir
|
|
161
161
|
gem_dir=$(gem environment gemdir 2>/dev/null || true)
|
|
162
|
-
|
|
162
|
+
|
|
163
|
+
# gemdir writable → no workaround needed, clean up old RC entries
|
|
164
|
+
if [ -w "$gem_dir" ]; then
|
|
165
|
+
restore_gem_home
|
|
166
|
+
return 0
|
|
167
|
+
fi
|
|
163
168
|
|
|
164
169
|
local ruby_api
|
|
165
170
|
ruby_api=$(ruby -e 'puts RbConfig::CONFIG["ruby_version"]' 2>/dev/null)
|
|
@@ -168,7 +173,9 @@ setup_gem_home() {
|
|
|
168
173
|
export PATH="$HOME/.gem/ruby/${ruby_api}/bin:$PATH"
|
|
169
174
|
print_info "System Ruby detected — gems will install to ~/.gem/ruby/${ruby_api}"
|
|
170
175
|
|
|
171
|
-
|
|
176
|
+
# Clean old RC entries (could be from a different Ruby version), then write new ones
|
|
177
|
+
restore_gem_home
|
|
178
|
+
if [ -n "$SHELL_RC" ]; then
|
|
172
179
|
{
|
|
173
180
|
echo ""
|
|
174
181
|
echo "# Ruby user gem dir (added by openclacky installer)"
|
|
@@ -207,7 +214,7 @@ load_brand() {
|
|
|
207
214
|
[ -f "$brand_file" ] || return 0
|
|
208
215
|
BRAND_NAME=$(awk -F': ' '/^product_name:/{gsub(/^"|"$/, "", $2); gsub(/^ +| +$/, "", $2); print $2}' "$brand_file") || true
|
|
209
216
|
BRAND_COMMAND=$(awk -F': ' '/^package_name:/{gsub(/^"|"$/, "", $2); gsub(/^ +| +$/, "", $2); print $2}' "$brand_file") || true
|
|
210
|
-
[ -n "$BRAND_NAME" ]
|
|
217
|
+
if [ -n "$BRAND_NAME" ]; then DISPLAY_NAME="$BRAND_NAME"; fi
|
|
211
218
|
}
|
|
212
219
|
|
|
213
220
|
check_installation() {
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: openclacky
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.13
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- windy
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-06-
|
|
11
|
+
date: 2026-06-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -366,6 +366,7 @@ files:
|
|
|
366
366
|
- lib/clacky/default_skills/channel-manager/SKILL.md
|
|
367
367
|
- lib/clacky/default_skills/channel-manager/dingtalk_setup.rb
|
|
368
368
|
- lib/clacky/default_skills/channel-manager/discord_setup.rb
|
|
369
|
+
- lib/clacky/default_skills/channel-manager/feishu_setup.rb
|
|
369
370
|
- lib/clacky/default_skills/channel-manager/import_lark_skills.rb
|
|
370
371
|
- lib/clacky/default_skills/channel-manager/install_feishu_skills.rb
|
|
371
372
|
- lib/clacky/default_skills/channel-manager/weixin_setup.rb
|
|
@@ -386,6 +387,7 @@ files:
|
|
|
386
387
|
- lib/clacky/default_skills/personal-website/publish.rb
|
|
387
388
|
- lib/clacky/default_skills/product-help/SKILL.md
|
|
388
389
|
- lib/clacky/default_skills/recall-memory/SKILL.md
|
|
390
|
+
- lib/clacky/default_skills/search-skills/SKILL.md
|
|
389
391
|
- lib/clacky/default_skills/skill-add/SKILL.md
|
|
390
392
|
- lib/clacky/default_skills/skill-add/scripts/install_from_zip.rb
|
|
391
393
|
- lib/clacky/default_skills/skill-creator/SKILL.md
|
|
@@ -451,6 +453,7 @@ files:
|
|
|
451
453
|
- lib/clacky/server/channel/channel_config.rb
|
|
452
454
|
- lib/clacky/server/channel/channel_manager.rb
|
|
453
455
|
- lib/clacky/server/channel/channel_ui_controller.rb
|
|
456
|
+
- lib/clacky/server/channel/group_message_buffer.rb
|
|
454
457
|
- lib/clacky/server/channel/user_adapter_loader.rb
|
|
455
458
|
- lib/clacky/server/discover.rb
|
|
456
459
|
- lib/clacky/server/epipe_safe_io.rb
|
|
@@ -531,16 +534,19 @@ files:
|
|
|
531
534
|
- lib/clacky/version.rb
|
|
532
535
|
- lib/clacky/web/app.css
|
|
533
536
|
- lib/clacky/web/app.js
|
|
537
|
+
- lib/clacky/web/apple-touch-icon-180.png
|
|
534
538
|
- lib/clacky/web/auth.js
|
|
535
539
|
- lib/clacky/web/billing.js
|
|
536
540
|
- lib/clacky/web/brand.js
|
|
537
541
|
- lib/clacky/web/channels.js
|
|
538
542
|
- lib/clacky/web/creator.js
|
|
539
543
|
- lib/clacky/web/datepicker.js
|
|
544
|
+
- lib/clacky/web/favicon.ico
|
|
540
545
|
- lib/clacky/web/i18n.js
|
|
541
546
|
- lib/clacky/web/icon-dark.svg
|
|
542
547
|
- lib/clacky/web/icon.svg
|
|
543
548
|
- lib/clacky/web/index.html
|
|
549
|
+
- lib/clacky/web/logo_nav_dark.png
|
|
544
550
|
- lib/clacky/web/marked.min.js
|
|
545
551
|
- lib/clacky/web/mcp.js
|
|
546
552
|
- lib/clacky/web/model-tester.js
|
|
@@ -553,6 +559,7 @@ files:
|
|
|
553
559
|
- lib/clacky/web/tasks.js
|
|
554
560
|
- lib/clacky/web/theme.js
|
|
555
561
|
- lib/clacky/web/trash.js
|
|
562
|
+
- lib/clacky/web/utils.js
|
|
556
563
|
- lib/clacky/web/vendor/hljs/highlight.min.js
|
|
557
564
|
- lib/clacky/web/vendor/hljs/hljs-theme.css
|
|
558
565
|
- lib/clacky/web/vendor/katex/auto-render.min.js
|