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
|
@@ -4,6 +4,7 @@ require "net/http"
|
|
|
4
4
|
require "uri"
|
|
5
5
|
require "json"
|
|
6
6
|
require "fileutils"
|
|
7
|
+
require_relative "locales/i18n"
|
|
7
8
|
|
|
8
9
|
module Clacky
|
|
9
10
|
# PlatformHttpClient provides a resilient HTTP client for all calls to the
|
|
@@ -41,18 +42,14 @@ module Clacky
|
|
|
41
42
|
DOWNLOAD_MAX_REDIRECTS = 10
|
|
42
43
|
|
|
43
44
|
# API error code → human-readable message table (shared across all callers)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"device_revoked" => "This device has been revoked from the license.",
|
|
53
|
-
"invalid_license" => "License key not found. Please verify the key.",
|
|
54
|
-
"device_not_found" => "Device not registered. Please re-activate."
|
|
55
|
-
}.freeze
|
|
45
|
+
# Server error codes that have a localized message under the
|
|
46
|
+
# "platform.error.<code>" i18n key (see locales/en.rb & zh.rb).
|
|
47
|
+
KNOWN_ERROR_CODES = %w[
|
|
48
|
+
invalid_proof invalid_signature nonce_replayed timestamp_expired
|
|
49
|
+
license_revoked license_expired device_limit_reached device_revoked
|
|
50
|
+
invalid_license device_not_found contributor_required missing_device_token
|
|
51
|
+
invalid_device_token device_token_revoked device_token_expired owner_user_not_found
|
|
52
|
+
].freeze
|
|
56
53
|
|
|
57
54
|
# Auto-detects the target host(s):
|
|
58
55
|
# - When CLACKY_LICENSE_SERVER is set → single host (dev override, no failover)
|
|
@@ -360,9 +357,15 @@ module Clacky
|
|
|
360
357
|
else
|
|
361
358
|
error_code = body["code"]
|
|
362
359
|
server_msg = extract_server_error_message(body)
|
|
363
|
-
error_msg =
|
|
364
|
-
|
|
365
|
-
|
|
360
|
+
error_msg = if KNOWN_ERROR_CODES.include?(error_code)
|
|
361
|
+
Clacky::I18n.t("platform.error.#{error_code}")
|
|
362
|
+
elsif server_msg
|
|
363
|
+
server_msg
|
|
364
|
+
elsif error_code
|
|
365
|
+
Clacky::I18n.t("platform.error.generic_with_code", code: code, error_code: error_code)
|
|
366
|
+
else
|
|
367
|
+
Clacky::I18n.t("platform.error.generic", code: code)
|
|
368
|
+
end
|
|
366
369
|
{ success: false, error: error_msg, data: body }
|
|
367
370
|
end
|
|
368
371
|
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "user_adapter_loader"
|
|
4
|
+
|
|
5
|
+
module Clacky
|
|
6
|
+
module Channel
|
|
7
|
+
module Adapters
|
|
8
|
+
# Loads channel adapters contributed by ext.yml containers via
|
|
9
|
+
# `contributes.channels: [{ id, adapter }]`. Reuses
|
|
10
|
+
# UserAdapterLoader.load_one so the require / register / interface check
|
|
11
|
+
# / error isolation contract stays identical.
|
|
12
|
+
module ExtensionAdapterLoader
|
|
13
|
+
Result = UserAdapterLoader::Result
|
|
14
|
+
|
|
15
|
+
def self.load_all
|
|
16
|
+
result = Result.new(loaded: [], skipped: [])
|
|
17
|
+
units = Array(Clacky::ExtensionLoader.last_result&.channels)
|
|
18
|
+
units.each do |unit|
|
|
19
|
+
name = "#{unit.ext_id}/#{unit.id}"
|
|
20
|
+
UserAdapterLoader.load_one(unit.spec["adapter_abs"], name, result)
|
|
21
|
+
end
|
|
22
|
+
@last_result = result
|
|
23
|
+
result
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.last_result
|
|
27
|
+
@last_result || load_all
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -36,3 +36,9 @@ require_relative "channel/channel_manager"
|
|
|
36
36
|
# Must run after the bundled adapters so user adapters can extend or override.
|
|
37
37
|
require_relative "channel/user_adapter_loader"
|
|
38
38
|
Clacky::Channel::Adapters::UserAdapterLoader.load_all
|
|
39
|
+
|
|
40
|
+
# Discover and load adapters contributed by ext.yml containers
|
|
41
|
+
# (contributes.channels). Runs last so any platform_id collision is won by
|
|
42
|
+
# user adapters, which is consistent with the override priority elsewhere.
|
|
43
|
+
require_relative "channel/extension_adapter_loader"
|
|
44
|
+
Clacky::Channel::Adapters::ExtensionAdapterLoader.load_all
|