openclacky 1.3.6 → 1.3.7
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 +30 -0
- data/lib/clacky/agent.rb +8 -1
- data/lib/clacky/agent_profile.rb +121 -53
- data/lib/clacky/brand_config.rb +309 -6
- data/lib/clacky/cli.rb +4 -57
- data/lib/clacky/default_extensions/coding/ext.yml +18 -0
- data/lib/clacky/default_extensions/ext-studio/agents/ext-developer/system_prompt.md +95 -0
- data/lib/clacky/default_extensions/ext-studio/api/handler.rb +254 -0
- data/lib/clacky/default_extensions/ext-studio/ext.yml +32 -0
- data/lib/clacky/default_extensions/ext-studio/panels/studio/view.js +1269 -0
- data/lib/clacky/default_extensions/ext-studio/skills/ext-debug/SKILL.md +71 -0
- data/lib/clacky/default_extensions/ext-studio/skills/ext-publish/SKILL.md +74 -0
- data/lib/clacky/default_extensions/ext-studio/skills/ext-scaffold/SKILL.md +65 -0
- data/lib/clacky/default_extensions/general/ext.yml +18 -0
- data/lib/clacky/default_extensions/git/ext.yml +12 -0
- data/lib/clacky/{default_agents/_panels/git/panel.js → default_extensions/git/panels/git/view.js} +1 -2
- data/lib/clacky/default_extensions/meeting/{handler.rb → api/handler.rb} +78 -26
- data/lib/clacky/default_extensions/meeting/ext.yml +15 -0
- data/lib/clacky/default_extensions/meeting/{meeting.js → panels/meeting/view.js} +266 -89
- data/lib/clacky/default_extensions/meeting/skills/meeting-summarizer/SKILL.md +2 -1
- data/lib/clacky/default_extensions/time_machine/ext.yml +12 -0
- data/lib/clacky/{default_agents/_panels/time_machine/panel.js → default_extensions/time_machine/panels/time_machine/view.js} +58 -47
- data/lib/clacky/default_skills/channel-manager/discord_setup.rb +1 -1
- data/lib/clacky/default_skills/extend-openclacky/SKILL.md +83 -18
- data/lib/clacky/{api_extension.rb → extension/api_extension.rb} +27 -11
- data/lib/clacky/extension/api_loader.rb +136 -0
- data/lib/clacky/extension/cli_commands.rb +226 -0
- data/lib/clacky/{server/api_extension_dispatcher.rb → extension/dispatcher.rb} +22 -9
- data/lib/clacky/extension/hook_loader.rb +77 -0
- data/lib/clacky/extension/loader.rb +483 -0
- data/lib/clacky/extension/packager.rb +226 -0
- data/lib/clacky/{patch_loader.rb → extension/patch_loader.rb} +45 -0
- data/lib/clacky/extension/scaffold/template_renderer.rb +64 -0
- data/lib/clacky/extension/scaffold/templates/full/README.md.erb +48 -0
- data/lib/clacky/extension/scaffold/templates/full/agents/designer.md +5 -0
- data/lib/clacky/extension/scaffold/templates/full/api/handler.rb.erb +16 -0
- data/lib/clacky/extension/scaffold/templates/full/channels/noop.rb.erb +40 -0
- data/lib/clacky/extension/scaffold/templates/full/ext.yml.erb +41 -0
- data/lib/clacky/extension/scaffold/templates/full/hooks/audit.rb +9 -0
- data/lib/clacky/extension/scaffold/templates/full/panels/dashboard/view.js.erb +194 -0
- data/lib/clacky/extension/scaffold/templates/full/patches/audit.rb +15 -0
- data/lib/clacky/extension/scaffold/templates/full/skills/__slug__-skill/SKILL.md.erb +8 -0
- data/lib/clacky/extension/scaffold/templates/hello/api/handler.rb.erb +9 -0
- data/lib/clacky/extension/scaffold/templates/hello/ext.yml.erb +12 -0
- data/lib/clacky/extension/scaffold/templates/hello/panels/hello/view.js.erb +31 -0
- data/lib/clacky/extension/scaffold.rb +55 -0
- data/lib/clacky/extension/verifier.rb +196 -0
- data/lib/clacky/identity.rb +70 -0
- data/lib/clacky/locales/en.rb +19 -1
- data/lib/clacky/locales/zh.rb +19 -1
- data/lib/clacky/platform_http_client.rb +18 -15
- data/lib/clacky/server/channel/extension_adapter_loader.rb +32 -0
- data/lib/clacky/server/channel.rb +6 -0
- data/lib/clacky/server/http_server.rb +313 -144
- data/lib/clacky/server/session_registry.rb +9 -2
- data/lib/clacky/skill_loader.rb +28 -1
- data/lib/clacky/ui2/ui_controller.rb +9 -6
- data/lib/clacky/version.rb +1 -1
- data/lib/clacky/web/app.css +748 -573
- data/lib/clacky/web/app.js +63 -15
- data/lib/clacky/web/auth.js +2 -0
- data/lib/clacky/web/components/notify.js +2 -0
- data/lib/clacky/web/components/sidebar.js +1 -5
- data/lib/clacky/web/core/ext.js +316 -79
- data/lib/clacky/web/features/backup/store.js +1 -0
- data/lib/clacky/web/features/backup/view.js +0 -1
- data/lib/clacky/web/features/brand/view.js +13 -5
- data/lib/clacky/web/features/extensions/store.js +184 -0
- data/lib/clacky/web/features/extensions/view.js +389 -0
- data/lib/clacky/web/features/new-session/store.js +186 -0
- data/lib/clacky/web/features/new-session/view.js +319 -0
- data/lib/clacky/web/features/share/view.js +63 -14
- data/lib/clacky/web/features/skills/store.js +3 -1
- data/lib/clacky/web/features/skills/view.js +1 -1
- data/lib/clacky/web/features/tasks/view.js +12 -0
- data/lib/clacky/web/features/trash/store.js +24 -6
- data/lib/clacky/web/features/trash/view.js +46 -9
- data/lib/clacky/web/features/workspace/store.js +2 -0
- data/lib/clacky/web/features/workspace/view.js +0 -1
- data/lib/clacky/web/i18n.js +118 -106
- data/lib/clacky/web/index.html +138 -188
- data/lib/clacky/web/sessions.js +64 -269
- data/lib/clacky/web/settings.js +1 -1
- data/lib/clacky/web/skills.js +2 -0
- data/lib/clacky/web/theme.js +2 -0
- data/lib/clacky/web/ws-dispatcher.js +1 -0
- data/lib/clacky/web/ws.js +2 -0
- data/lib/clacky.rb +21 -10
- metadata +55 -24
- data/benchmark/runner.rb +0 -441
- data/lib/clacky/api_extension_loader.rb +0 -168
- data/lib/clacky/default_agents/SOUL.md +0 -3
- data/lib/clacky/default_agents/USER.md +0 -1
- data/lib/clacky/default_agents/coding/profile.yml +0 -5
- data/lib/clacky/default_agents/coding/webui/.gitkeep +0 -0
- data/lib/clacky/default_agents/general/profile.yml +0 -2
- data/lib/clacky/default_extensions/meeting/meta.yml +0 -3
- data/lib/clacky/web/features/creator/store.js +0 -81
- data/lib/clacky/web/features/creator/view.js +0 -380
- /data/lib/clacky/{default_agents → default_extensions/coding/agents}/coding/system_prompt.md +0 -0
- /data/lib/clacky/{default_agents → default_extensions/general/agents}/general/system_prompt.md +0 -0
- /data/lib/clacky/{default_agents/base_prompt.md → prompts/base.md} +0 -0
data/lib/clacky/skill_loader.rb
CHANGED
|
@@ -12,6 +12,7 @@ module Clacky
|
|
|
12
12
|
# Skill discovery locations (in priority order: lower index = lower priority)
|
|
13
13
|
LOCATIONS = [
|
|
14
14
|
:default, # gem's built-in default skills (lowest priority)
|
|
15
|
+
:extension, # contributes.skills declared in ext.yml containers
|
|
15
16
|
:global_clacky, # ~/.clacky/skills/
|
|
16
17
|
:project_clacky, # .clacky/skills/ (highest priority among plain skills)
|
|
17
18
|
:brand # ~/.clacky/brand_skills/ (encrypted, license-gated)
|
|
@@ -62,6 +63,7 @@ module Clacky
|
|
|
62
63
|
clear
|
|
63
64
|
|
|
64
65
|
load_default_skills
|
|
66
|
+
load_extension_skills
|
|
65
67
|
load_global_clacky_skills
|
|
66
68
|
|
|
67
69
|
# Only load project-level skills when working_dir is explicitly provided.
|
|
@@ -401,7 +403,7 @@ module Clacky
|
|
|
401
403
|
# @return [Skill, nil] nil when the skill was rejected (duplicate/limit)
|
|
402
404
|
private def register_skill(skill, source:)
|
|
403
405
|
id = skill.identifier
|
|
404
|
-
priority_order = %i[default global_clacky project_clacky brand]
|
|
406
|
+
priority_order = %i[default extension global_clacky project_clacky brand]
|
|
405
407
|
|
|
406
408
|
# --- duplicate check ---
|
|
407
409
|
if (existing = @skills[id])
|
|
@@ -472,5 +474,30 @@ module Clacky
|
|
|
472
474
|
end
|
|
473
475
|
end
|
|
474
476
|
end
|
|
477
|
+
|
|
478
|
+
# Load skills declared via `contributes.skills` in ext.yml containers.
|
|
479
|
+
# Protected (encrypted) units are skipped here — they are listed by
|
|
480
|
+
# ExtensionLoader for display/management but their decryption still flows
|
|
481
|
+
# through the legacy brand_skill chain (see load_brand_skills).
|
|
482
|
+
private def load_extension_skills
|
|
483
|
+
result = Clacky::ExtensionLoader.last_result
|
|
484
|
+
return unless result&.skills
|
|
485
|
+
|
|
486
|
+
result.skills.each do |unit|
|
|
487
|
+
next if unit.spec["protected"] || unit.spec["encrypted"]
|
|
488
|
+
|
|
489
|
+
skill_dir_abs = unit.spec["skill_dir_abs"]
|
|
490
|
+
next unless File.directory?(skill_dir_abs) && File.file?(File.join(skill_dir_abs, "SKILL.md"))
|
|
491
|
+
|
|
492
|
+
begin
|
|
493
|
+
skill = Skill.new(Pathname.new(skill_dir_abs))
|
|
494
|
+
register_skill(skill, source: :extension)
|
|
495
|
+
rescue Clacky::AgentError => e
|
|
496
|
+
@errors << "Error loading extension skill '#{unit.id}' from #{skill_dir_abs}: #{e.message}"
|
|
497
|
+
rescue StandardError => e
|
|
498
|
+
@errors << "Unexpected error loading extension skill '#{unit.id}' from #{skill_dir_abs}: #{e.message}"
|
|
499
|
+
end
|
|
500
|
+
end
|
|
501
|
+
end
|
|
475
502
|
end
|
|
476
503
|
end
|
|
@@ -1085,12 +1085,15 @@ module Clacky
|
|
|
1085
1085
|
queue.push(:timeout) unless session[:intervened]
|
|
1086
1086
|
end
|
|
1087
1087
|
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1088
|
+
begin
|
|
1089
|
+
result = queue.pop
|
|
1090
|
+
ensure
|
|
1091
|
+
session[:watchdog].kill if session[:watchdog]&.alive?
|
|
1092
|
+
@feedback_countdown = nil
|
|
1093
|
+
@layout.remove_entry(entry_id) if entry_id
|
|
1094
|
+
@layout.recalculate_layout
|
|
1095
|
+
@layout.render_all
|
|
1096
|
+
end
|
|
1094
1097
|
|
|
1095
1098
|
if result == :timeout
|
|
1096
1099
|
append_output(theme.format_text(" No response — continuing automatically.", :thinking))
|
data/lib/clacky/version.rb
CHANGED