claude_swarm 1.0.0 → 1.0.2
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/.claude/commands/release.md +1 -1
- data/.claude/hooks/lint-code-files.rb +65 -0
- data/.rubocop.yml +22 -2
- data/CHANGELOG.md +21 -1
- data/CLAUDE.md +1 -1
- data/CONTRIBUTING.md +69 -0
- data/README.md +27 -2
- data/Rakefile +71 -3
- data/analyze_coverage.rb +94 -0
- data/docs/v2/CHANGELOG.swarm_cli.md +43 -0
- data/docs/v2/CHANGELOG.swarm_memory.md +379 -0
- data/docs/v2/CHANGELOG.swarm_sdk.md +362 -0
- data/docs/v2/README.md +308 -0
- data/docs/v2/guides/claude-code-agents.md +262 -0
- data/docs/v2/guides/complete-tutorial.md +3088 -0
- data/docs/v2/guides/getting-started.md +1456 -0
- data/docs/v2/guides/memory-adapters.md +998 -0
- data/docs/v2/guides/plugins.md +816 -0
- data/docs/v2/guides/quick-start-cli.md +1745 -0
- data/docs/v2/guides/rails-integration.md +1902 -0
- data/docs/v2/guides/swarm-memory.md +599 -0
- data/docs/v2/reference/cli.md +729 -0
- data/docs/v2/reference/ruby-dsl.md +2154 -0
- data/docs/v2/reference/yaml.md +1835 -0
- data/docs-team-swarm.yml +2222 -0
- data/examples/learning-assistant/assistant.md +7 -0
- data/examples/learning-assistant/example-memories/concept-example.md +90 -0
- data/examples/learning-assistant/example-memories/experience-example.md +66 -0
- data/examples/learning-assistant/example-memories/fact-example.md +76 -0
- data/examples/learning-assistant/example-memories/memory-index.md +78 -0
- data/examples/learning-assistant/example-memories/skill-example.md +168 -0
- data/examples/learning-assistant/learning_assistant.rb +34 -0
- data/examples/learning-assistant/learning_assistant.yml +20 -0
- data/examples/v2/dsl/01_basic.rb +44 -0
- data/examples/v2/dsl/02_core_parameters.rb +59 -0
- data/examples/v2/dsl/03_capabilities.rb +71 -0
- data/examples/v2/dsl/04_llm_parameters.rb +56 -0
- data/examples/v2/dsl/05_advanced_flags.rb +73 -0
- data/examples/v2/dsl/06_permissions.rb +80 -0
- data/examples/v2/dsl/07_mcp_server.rb +62 -0
- data/examples/v2/dsl/08_swarm_hooks.rb +53 -0
- data/examples/v2/dsl/09_agent_hooks.rb +67 -0
- data/examples/v2/dsl/10_all_agents_hooks.rb +67 -0
- data/examples/v2/dsl/11_delegation.rb +60 -0
- data/examples/v2/dsl/12_complete_integration.rb +137 -0
- data/examples/v2/file_tools_swarm.yml +102 -0
- data/examples/v2/hooks/01_basic_hooks.rb +133 -0
- data/examples/v2/hooks/02_usage_tracking.rb +201 -0
- data/examples/v2/hooks/03_production_monitoring.rb +429 -0
- data/examples/v2/hooks/agent_stop_exit_0.yml +21 -0
- data/examples/v2/hooks/agent_stop_exit_1.yml +21 -0
- data/examples/v2/hooks/agent_stop_exit_2.yml +26 -0
- data/examples/v2/hooks/multiple_hooks_all_pass.yml +37 -0
- data/examples/v2/hooks/multiple_hooks_first_fails.yml +37 -0
- data/examples/v2/hooks/multiple_hooks_second_fails.yml +37 -0
- data/examples/v2/hooks/multiple_hooks_warnings.yml +37 -0
- data/examples/v2/hooks/post_tool_use_exit_0.yml +24 -0
- data/examples/v2/hooks/post_tool_use_exit_1.yml +24 -0
- data/examples/v2/hooks/post_tool_use_exit_2.yml +24 -0
- data/examples/v2/hooks/post_tool_use_multi_matcher_exit_0.yml +26 -0
- data/examples/v2/hooks/post_tool_use_multi_matcher_exit_1.yml +26 -0
- data/examples/v2/hooks/post_tool_use_multi_matcher_exit_2.yml +26 -0
- data/examples/v2/hooks/pre_tool_use_exit_0.yml +24 -0
- data/examples/v2/hooks/pre_tool_use_exit_1.yml +24 -0
- data/examples/v2/hooks/pre_tool_use_exit_2.yml +24 -0
- data/examples/v2/hooks/pre_tool_use_multi_matcher_exit_0.yml +26 -0
- data/examples/v2/hooks/pre_tool_use_multi_matcher_exit_1.yml +26 -0
- data/examples/v2/hooks/pre_tool_use_multi_matcher_exit_2.yml +27 -0
- data/examples/v2/hooks/swarm_summary.sh +44 -0
- data/examples/v2/hooks/user_prompt_exit_0.yml +21 -0
- data/examples/v2/hooks/user_prompt_exit_1.yml +21 -0
- data/examples/v2/hooks/user_prompt_exit_2.yml +21 -0
- data/examples/v2/hooks/validate_bash.rb +59 -0
- data/examples/v2/multi_directory_permissions.yml +221 -0
- data/examples/v2/node_context_demo.rb +127 -0
- data/examples/v2/node_workflow.rb +173 -0
- data/examples/v2/path_resolution_demo.rb +216 -0
- data/examples/v2/simple-swarm-v2.rb +90 -0
- data/examples/v2/simple-swarm-v2.yml +62 -0
- data/examples/v2/swarm.yml +71 -0
- data/examples/v2/swarm_with_hooks.yml +61 -0
- data/examples/v2/swarm_with_hooks_simple.yml +25 -0
- data/examples/v2/think_tool_demo.rb +62 -0
- data/exe/swarm +6 -0
- data/lib/claude_swarm/claude_mcp_server.rb +0 -6
- data/lib/claude_swarm/cli.rb +10 -3
- data/lib/claude_swarm/commands/ps.rb +19 -20
- data/lib/claude_swarm/commands/show.rb +1 -1
- data/lib/claude_swarm/configuration.rb +10 -12
- data/lib/claude_swarm/mcp_generator.rb +10 -1
- data/lib/claude_swarm/orchestrator.rb +73 -49
- data/lib/claude_swarm/system_utils.rb +37 -11
- data/lib/claude_swarm/version.rb +1 -1
- data/lib/claude_swarm/worktree_manager.rb +1 -0
- data/lib/claude_swarm/yaml_loader.rb +22 -0
- data/lib/claude_swarm.rb +7 -3
- data/lib/swarm_cli/cli.rb +201 -0
- data/lib/swarm_cli/command_registry.rb +61 -0
- data/lib/swarm_cli/commands/mcp_serve.rb +130 -0
- data/lib/swarm_cli/commands/mcp_tools.rb +148 -0
- data/lib/swarm_cli/commands/migrate.rb +55 -0
- data/lib/swarm_cli/commands/run.rb +173 -0
- data/lib/swarm_cli/config_loader.rb +97 -0
- data/lib/swarm_cli/formatters/human_formatter.rb +711 -0
- data/lib/swarm_cli/formatters/json_formatter.rb +51 -0
- data/lib/swarm_cli/interactive_repl.rb +918 -0
- data/lib/swarm_cli/mcp_serve_options.rb +44 -0
- data/lib/swarm_cli/mcp_tools_options.rb +59 -0
- data/lib/swarm_cli/migrate_options.rb +54 -0
- data/lib/swarm_cli/migrator.rb +132 -0
- data/lib/swarm_cli/options.rb +151 -0
- data/lib/swarm_cli/ui/components/agent_badge.rb +33 -0
- data/lib/swarm_cli/ui/components/content_block.rb +120 -0
- data/lib/swarm_cli/ui/components/divider.rb +57 -0
- data/lib/swarm_cli/ui/components/panel.rb +62 -0
- data/lib/swarm_cli/ui/components/usage_stats.rb +70 -0
- data/lib/swarm_cli/ui/formatters/cost.rb +49 -0
- data/lib/swarm_cli/ui/formatters/number.rb +58 -0
- data/lib/swarm_cli/ui/formatters/text.rb +77 -0
- data/lib/swarm_cli/ui/formatters/time.rb +73 -0
- data/lib/swarm_cli/ui/icons.rb +59 -0
- data/lib/swarm_cli/ui/renderers/event_renderer.rb +188 -0
- data/lib/swarm_cli/ui/state/agent_color_cache.rb +45 -0
- data/lib/swarm_cli/ui/state/depth_tracker.rb +40 -0
- data/lib/swarm_cli/ui/state/spinner_manager.rb +170 -0
- data/lib/swarm_cli/ui/state/usage_tracker.rb +62 -0
- data/lib/swarm_cli/version.rb +5 -0
- data/lib/swarm_cli.rb +44 -0
- data/lib/swarm_memory/adapters/base.rb +141 -0
- data/lib/swarm_memory/adapters/filesystem_adapter.rb +845 -0
- data/lib/swarm_memory/chat_extension.rb +34 -0
- data/lib/swarm_memory/cli/commands.rb +306 -0
- data/lib/swarm_memory/core/entry.rb +37 -0
- data/lib/swarm_memory/core/frontmatter_parser.rb +108 -0
- data/lib/swarm_memory/core/metadata_extractor.rb +68 -0
- data/lib/swarm_memory/core/path_normalizer.rb +75 -0
- data/lib/swarm_memory/core/semantic_index.rb +244 -0
- data/lib/swarm_memory/core/storage.rb +288 -0
- data/lib/swarm_memory/core/storage_read_tracker.rb +63 -0
- data/lib/swarm_memory/dsl/builder_extension.rb +40 -0
- data/lib/swarm_memory/dsl/memory_config.rb +113 -0
- data/lib/swarm_memory/embeddings/embedder.rb +36 -0
- data/lib/swarm_memory/embeddings/informers_embedder.rb +152 -0
- data/lib/swarm_memory/errors.rb +21 -0
- data/lib/swarm_memory/integration/cli_registration.rb +30 -0
- data/lib/swarm_memory/integration/configuration.rb +43 -0
- data/lib/swarm_memory/integration/registration.rb +31 -0
- data/lib/swarm_memory/integration/sdk_plugin.rb +531 -0
- data/lib/swarm_memory/optimization/analyzer.rb +244 -0
- data/lib/swarm_memory/optimization/defragmenter.rb +863 -0
- data/lib/swarm_memory/prompts/memory.md.erb +109 -0
- data/lib/swarm_memory/prompts/memory_assistant.md.erb +181 -0
- data/lib/swarm_memory/prompts/memory_researcher.md.erb +281 -0
- data/lib/swarm_memory/prompts/memory_retrieval.md.erb +78 -0
- data/lib/swarm_memory/search/semantic_search.rb +112 -0
- data/lib/swarm_memory/search/text_search.rb +42 -0
- data/lib/swarm_memory/search/text_similarity.rb +80 -0
- data/lib/swarm_memory/skills/meta/deep-learning.md +101 -0
- data/lib/swarm_memory/skills/meta/deep-learning.yml +14 -0
- data/lib/swarm_memory/tools/load_skill.rb +313 -0
- data/lib/swarm_memory/tools/memory_defrag.rb +382 -0
- data/lib/swarm_memory/tools/memory_delete.rb +99 -0
- data/lib/swarm_memory/tools/memory_edit.rb +185 -0
- data/lib/swarm_memory/tools/memory_glob.rb +160 -0
- data/lib/swarm_memory/tools/memory_grep.rb +247 -0
- data/lib/swarm_memory/tools/memory_multi_edit.rb +281 -0
- data/lib/swarm_memory/tools/memory_read.rb +123 -0
- data/lib/swarm_memory/tools/memory_write.rb +231 -0
- data/lib/swarm_memory/utils.rb +50 -0
- data/lib/swarm_memory/version.rb +5 -0
- data/lib/swarm_memory.rb +166 -0
- data/lib/swarm_sdk/agent/RETRY_LOGIC.md +127 -0
- data/lib/swarm_sdk/agent/builder.rb +461 -0
- data/lib/swarm_sdk/agent/chat/context_tracker.rb +314 -0
- data/lib/swarm_sdk/agent/chat/hook_integration.rb +372 -0
- data/lib/swarm_sdk/agent/chat/logging_helpers.rb +116 -0
- data/lib/swarm_sdk/agent/chat/system_reminder_injector.rb +152 -0
- data/lib/swarm_sdk/agent/chat.rb +1159 -0
- data/lib/swarm_sdk/agent/context.rb +112 -0
- data/lib/swarm_sdk/agent/context_manager.rb +309 -0
- data/lib/swarm_sdk/agent/definition.rb +556 -0
- data/lib/swarm_sdk/claude_code_agent_adapter.rb +205 -0
- data/lib/swarm_sdk/configuration.rb +296 -0
- data/lib/swarm_sdk/context_compactor/metrics.rb +147 -0
- data/lib/swarm_sdk/context_compactor/token_counter.rb +106 -0
- data/lib/swarm_sdk/context_compactor.rb +340 -0
- data/lib/swarm_sdk/hooks/adapter.rb +359 -0
- data/lib/swarm_sdk/hooks/context.rb +197 -0
- data/lib/swarm_sdk/hooks/definition.rb +80 -0
- data/lib/swarm_sdk/hooks/error.rb +29 -0
- data/lib/swarm_sdk/hooks/executor.rb +146 -0
- data/lib/swarm_sdk/hooks/registry.rb +147 -0
- data/lib/swarm_sdk/hooks/result.rb +150 -0
- data/lib/swarm_sdk/hooks/shell_executor.rb +254 -0
- data/lib/swarm_sdk/hooks/tool_call.rb +35 -0
- data/lib/swarm_sdk/hooks/tool_result.rb +62 -0
- data/lib/swarm_sdk/log_collector.rb +51 -0
- data/lib/swarm_sdk/log_stream.rb +69 -0
- data/lib/swarm_sdk/markdown_parser.rb +75 -0
- data/lib/swarm_sdk/model_aliases.json +5 -0
- data/lib/swarm_sdk/models.json +1 -0
- data/lib/swarm_sdk/models.rb +120 -0
- data/lib/swarm_sdk/node/agent_config.rb +49 -0
- data/lib/swarm_sdk/node/builder.rb +439 -0
- data/lib/swarm_sdk/node/transformer_executor.rb +248 -0
- data/lib/swarm_sdk/node_context.rb +170 -0
- data/lib/swarm_sdk/node_orchestrator.rb +384 -0
- data/lib/swarm_sdk/permissions/config.rb +239 -0
- data/lib/swarm_sdk/permissions/error_formatter.rb +121 -0
- data/lib/swarm_sdk/permissions/path_matcher.rb +35 -0
- data/lib/swarm_sdk/permissions/validator.rb +173 -0
- data/lib/swarm_sdk/permissions_builder.rb +122 -0
- data/lib/swarm_sdk/plugin.rb +147 -0
- data/lib/swarm_sdk/plugin_registry.rb +101 -0
- data/lib/swarm_sdk/prompts/base_system_prompt.md.erb +243 -0
- data/lib/swarm_sdk/providers/openai_with_responses.rb +582 -0
- data/lib/swarm_sdk/result.rb +97 -0
- data/lib/swarm_sdk/swarm/agent_initializer.rb +334 -0
- data/lib/swarm_sdk/swarm/all_agents_builder.rb +140 -0
- data/lib/swarm_sdk/swarm/builder.rb +586 -0
- data/lib/swarm_sdk/swarm/mcp_configurator.rb +151 -0
- data/lib/swarm_sdk/swarm/tool_configurator.rb +419 -0
- data/lib/swarm_sdk/swarm.rb +982 -0
- data/lib/swarm_sdk/tools/bash.rb +274 -0
- data/lib/swarm_sdk/tools/clock.rb +44 -0
- data/lib/swarm_sdk/tools/delegate.rb +164 -0
- data/lib/swarm_sdk/tools/document_converters/base_converter.rb +83 -0
- data/lib/swarm_sdk/tools/document_converters/docx_converter.rb +99 -0
- data/lib/swarm_sdk/tools/document_converters/html_converter.rb +101 -0
- data/lib/swarm_sdk/tools/document_converters/pdf_converter.rb +78 -0
- data/lib/swarm_sdk/tools/document_converters/xlsx_converter.rb +194 -0
- data/lib/swarm_sdk/tools/edit.rb +150 -0
- data/lib/swarm_sdk/tools/glob.rb +158 -0
- data/lib/swarm_sdk/tools/grep.rb +228 -0
- data/lib/swarm_sdk/tools/image_extractors/docx_image_extractor.rb +43 -0
- data/lib/swarm_sdk/tools/image_extractors/pdf_image_extractor.rb +163 -0
- data/lib/swarm_sdk/tools/image_formats/tiff_builder.rb +65 -0
- data/lib/swarm_sdk/tools/multi_edit.rb +232 -0
- data/lib/swarm_sdk/tools/path_resolver.rb +43 -0
- data/lib/swarm_sdk/tools/read.rb +251 -0
- data/lib/swarm_sdk/tools/registry.rb +93 -0
- data/lib/swarm_sdk/tools/scratchpad/scratchpad_list.rb +96 -0
- data/lib/swarm_sdk/tools/scratchpad/scratchpad_read.rb +76 -0
- data/lib/swarm_sdk/tools/scratchpad/scratchpad_write.rb +91 -0
- data/lib/swarm_sdk/tools/stores/read_tracker.rb +61 -0
- data/lib/swarm_sdk/tools/stores/scratchpad_storage.rb +224 -0
- data/lib/swarm_sdk/tools/stores/storage.rb +148 -0
- data/lib/swarm_sdk/tools/stores/todo_manager.rb +65 -0
- data/lib/swarm_sdk/tools/think.rb +95 -0
- data/lib/swarm_sdk/tools/todo_write.rb +216 -0
- data/lib/swarm_sdk/tools/web_fetch.rb +261 -0
- data/lib/swarm_sdk/tools/write.rb +117 -0
- data/lib/swarm_sdk/utils.rb +50 -0
- data/lib/swarm_sdk/version.rb +5 -0
- data/lib/swarm_sdk.rb +157 -0
- data/llm.v2.txt +13407 -0
- data/rubocop/cop/security/no_reflection_methods.rb +47 -0
- data/rubocop/cop/security/no_ruby_llm_logger.rb +32 -0
- data/swarm_cli.gemspec +57 -0
- data/swarm_memory.gemspec +28 -0
- data/swarm_sdk.gemspec +41 -0
- data/team.yml +1 -1
- data/team_full.yml +1875 -0
- data/{team_v2.yml → team_sdk.yml} +121 -52
- metadata +247 -4
- data/EXAMPLES.md +0 -164
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# rubocop/no_reflection_methods.rb
|
|
4
|
+
|
|
5
|
+
require "rubocop"
|
|
6
|
+
|
|
7
|
+
module RuboCop
|
|
8
|
+
module Cop
|
|
9
|
+
module Security
|
|
10
|
+
# Custom cop to catch reflection methods that break encapsulation
|
|
11
|
+
#
|
|
12
|
+
# This cop prevents use of:
|
|
13
|
+
# - instance_variable_get
|
|
14
|
+
# - instance_variable_set
|
|
15
|
+
# - send (dynamic method calls)
|
|
16
|
+
#
|
|
17
|
+
# These methods break encapsulation and make code harder to understand and maintain.
|
|
18
|
+
class NoReflectionMethods < Base
|
|
19
|
+
MSG = "Do not use `%<method>s`; it uses reflection and can break encapsulation."
|
|
20
|
+
TEST_MSG = "Do not use `%<method>s`; it uses reflection and can break encapsulation. " \
|
|
21
|
+
"You must test behaviour through calling public methods. " \
|
|
22
|
+
"Private methods must be tested through calls done to public methods." \
|
|
23
|
+
"CRITICAL: DO NOT disable this cop."
|
|
24
|
+
|
|
25
|
+
# Match method calls
|
|
26
|
+
def on_send(node)
|
|
27
|
+
banned_methods = [:instance_variable_get, :instance_variable_set, :send]
|
|
28
|
+
|
|
29
|
+
method_name = node.method_name
|
|
30
|
+
return unless banned_methods.include?(method_name)
|
|
31
|
+
|
|
32
|
+
# Check if we're in a test file
|
|
33
|
+
file_path = processed_source.file_path
|
|
34
|
+
in_test_file = file_path.end_with?("_test.rb")
|
|
35
|
+
|
|
36
|
+
message = if in_test_file
|
|
37
|
+
format(TEST_MSG, method: method_name)
|
|
38
|
+
else
|
|
39
|
+
format(MSG, method: method_name)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
add_offense(node.loc.selector, message: message)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# rubocop/no_ruby_llm_logger.rb
|
|
4
|
+
|
|
5
|
+
require "rubocop"
|
|
6
|
+
|
|
7
|
+
module RuboCop
|
|
8
|
+
module Cop
|
|
9
|
+
module Security
|
|
10
|
+
# Custom cop to catch direct usage of RubyLLM.logger
|
|
11
|
+
#
|
|
12
|
+
# This cop prevents use of:
|
|
13
|
+
# - RubyLLM.logger
|
|
14
|
+
#
|
|
15
|
+
# Direct access to RubyLLM.logger should be avoided to maintain proper
|
|
16
|
+
# logging abstraction and prevent unintended side effects.
|
|
17
|
+
class NoRubyLlmLogger < Base
|
|
18
|
+
MSG = "Do not use `RubyLLM.logger` directly; use LogCollector instead."
|
|
19
|
+
|
|
20
|
+
# Match method calls on RubyLLM constant
|
|
21
|
+
def on_send(node)
|
|
22
|
+
return unless node.receiver
|
|
23
|
+
return unless node.receiver.const_type?
|
|
24
|
+
return unless node.receiver.const_name == :RubyLLM
|
|
25
|
+
return unless node.method_name == :logger
|
|
26
|
+
|
|
27
|
+
add_offense(node.loc.selector, message: MSG)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
data/swarm_cli.gemspec
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "lib/swarm_cli/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = "swarm_cli"
|
|
7
|
+
spec.version = SwarmCLI::VERSION
|
|
8
|
+
spec.authors = ["Paulo Arruda"]
|
|
9
|
+
spec.email = ["parrudaj@gmail.com"]
|
|
10
|
+
|
|
11
|
+
spec.summary = "Command-line interface for SwarmSDK"
|
|
12
|
+
spec.description = <<~DESC
|
|
13
|
+
SwarmCLI provides a beautiful command-line interface for SwarmSDK, the lightweight multi-agent
|
|
14
|
+
AI orchestration framework. Built with the TTY toolkit, it offers an intuitive and interactive
|
|
15
|
+
way to define, manage, and execute AI agent swarms with progress indicators, formatted output,
|
|
16
|
+
and comprehensive help documentation.
|
|
17
|
+
DESC
|
|
18
|
+
spec.homepage = "https://github.com/parruda/claude-swarm"
|
|
19
|
+
spec.license = "MIT"
|
|
20
|
+
spec.required_ruby_version = ">= 3.2.0"
|
|
21
|
+
|
|
22
|
+
spec.metadata["source_code_uri"] = "https://github.com/parruda/claude-swarm"
|
|
23
|
+
spec.metadata["changelog_uri"] = "https://github.com/parruda/claude-swarm/blob/main/docs/v2/CHANGELOG.swarm_cli.md"
|
|
24
|
+
|
|
25
|
+
File.basename(__FILE__)
|
|
26
|
+
spec.files = IO.popen(["git", "ls-files", "-z"], chdir: __dir__, err: IO::NULL) do |ls|
|
|
27
|
+
ls.readlines("\x0", chomp: true).select do |f|
|
|
28
|
+
(f == "lib/swarm_cli.rb") ||
|
|
29
|
+
f.match?(%r{\Alib/swarm_cli/}) ||
|
|
30
|
+
(f == "exe/swarm")
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
spec.bindir = "exe"
|
|
34
|
+
spec.executables = ["swarm"]
|
|
35
|
+
spec.require_paths = ["lib"]
|
|
36
|
+
|
|
37
|
+
spec.add_dependency("fast-mcp", "~> 1.6")
|
|
38
|
+
spec.add_dependency("pastel")
|
|
39
|
+
spec.add_dependency("swarm_sdk", "~> 2.1")
|
|
40
|
+
spec.add_dependency("tty-box")
|
|
41
|
+
spec.add_dependency("tty-cursor")
|
|
42
|
+
spec.add_dependency("tty-link")
|
|
43
|
+
spec.add_dependency("tty-markdown")
|
|
44
|
+
spec.add_dependency("tty-option")
|
|
45
|
+
spec.add_dependency("tty-spinner")
|
|
46
|
+
spec.add_dependency("tty-tree")
|
|
47
|
+
spec.add_dependency("zeitwerk")
|
|
48
|
+
|
|
49
|
+
# NOTE: Reline is part of Ruby stdlib (since 2.7), no gem dependency needed
|
|
50
|
+
|
|
51
|
+
# Document parsing for Read tool
|
|
52
|
+
spec.add_dependency("csv")
|
|
53
|
+
spec.add_dependency("docx", "~> 0.10")
|
|
54
|
+
spec.add_dependency("pdf-reader", "~> 2.15")
|
|
55
|
+
spec.add_dependency("reverse_markdown", "~> 3.0.0")
|
|
56
|
+
spec.add_dependency("roo", "~> 3.0.0")
|
|
57
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "lib/swarm_memory/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = "swarm_memory"
|
|
7
|
+
spec.version = SwarmMemory::VERSION
|
|
8
|
+
spec.authors = ["Paulo Arruda"]
|
|
9
|
+
spec.email = ["parrudaj@gmail.com"]
|
|
10
|
+
spec.summary = "Persistent memory system for SwarmSDK agents"
|
|
11
|
+
spec.description = "Hierarchical persistent memory with semantic search for SwarmSDK AI agents"
|
|
12
|
+
spec.homepage = "https://github.com/parruda/claude-swarm"
|
|
13
|
+
spec.license = "MIT"
|
|
14
|
+
spec.metadata["source_code_uri"] = "https://github.com/parruda/claude-swarm"
|
|
15
|
+
spec.metadata["changelog_uri"] = "https://github.com/parruda/claude-swarm/blob/main/docs/v2/CHANGELOG.swarm_memory.md"
|
|
16
|
+
|
|
17
|
+
spec.files = Dir["lib/**/*", "LICENSE"]
|
|
18
|
+
spec.require_paths = ["lib"]
|
|
19
|
+
spec.required_ruby_version = ">= 3.2.0"
|
|
20
|
+
|
|
21
|
+
# Core dependencies
|
|
22
|
+
spec.add_dependency("async", "~> 2.0")
|
|
23
|
+
spec.add_dependency("informers", "~> 1.2.1")
|
|
24
|
+
spec.add_dependency("rice", "~> 4.6.0")
|
|
25
|
+
spec.add_dependency("ruby_llm", "~> 1.8")
|
|
26
|
+
spec.add_dependency("swarm_sdk", "~> 2.1")
|
|
27
|
+
spec.add_dependency("zeitwerk", "~> 2.6")
|
|
28
|
+
end
|
data/swarm_sdk.gemspec
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "lib/swarm_sdk/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = "swarm_sdk"
|
|
7
|
+
spec.version = SwarmSDK::VERSION
|
|
8
|
+
spec.authors = ["Paulo Arruda"]
|
|
9
|
+
spec.email = ["parrudaj@gmail.com"]
|
|
10
|
+
|
|
11
|
+
spec.summary = "Lightweight multi-agent AI orchestration using RubyLLM"
|
|
12
|
+
spec.description = <<~DESC
|
|
13
|
+
SwarmSDK is a complete reimagining of Claude Swarm that runs all AI agents in a single process
|
|
14
|
+
using RubyLLM for LLM interactions. Define collaborative AI agents in simple Markdown files with
|
|
15
|
+
YAML frontmatter, and orchestrate them without the overhead of multiple processes or MCP
|
|
16
|
+
inter-process communication. Perfect for building lightweight, efficient AI agent teams with
|
|
17
|
+
specialized roles and capabilities.
|
|
18
|
+
DESC
|
|
19
|
+
spec.homepage = "https://github.com/parruda/claude-swarm"
|
|
20
|
+
spec.license = "MIT"
|
|
21
|
+
spec.required_ruby_version = ">= 3.2.0"
|
|
22
|
+
|
|
23
|
+
spec.metadata["source_code_uri"] = "https://github.com/parruda/claude-swarm"
|
|
24
|
+
spec.metadata["changelog_uri"] = "https://github.com/parruda/claude-swarm/blob/main/docs/v2/CHANGELOG.swarm_sdk.md"
|
|
25
|
+
|
|
26
|
+
File.basename(__FILE__)
|
|
27
|
+
spec.files = IO.popen(["git", "ls-files", "-z"], chdir: __dir__, err: IO::NULL) do |ls|
|
|
28
|
+
ls.readlines("\x0", chomp: true).select do |f|
|
|
29
|
+
(f == "lib/swarm_sdk.rb") ||
|
|
30
|
+
f.match?(%r{\Alib/swarm_sdk/})
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
# spec.bindir = "exe"
|
|
34
|
+
# spec.executables = []
|
|
35
|
+
spec.require_paths = ["lib"]
|
|
36
|
+
|
|
37
|
+
spec.add_dependency("async", "~> 2.0")
|
|
38
|
+
spec.add_dependency("ruby_llm", "~> 1.8")
|
|
39
|
+
spec.add_dependency("ruby_llm-mcp", "~> 0.6.2")
|
|
40
|
+
spec.add_dependency("zeitwerk", "~> 2.6")
|
|
41
|
+
end
|
data/team.yml
CHANGED
|
@@ -118,7 +118,7 @@ swarm:
|
|
|
118
118
|
|
|
119
119
|
fast_mcp_expert:
|
|
120
120
|
description: "Expert in fast-mcp library for MCP server development, tools, and resource management"
|
|
121
|
-
directory: ~/src/github.com/
|
|
121
|
+
directory: ~/src/github.com/yjacquin/fast-mcp
|
|
122
122
|
model: opus
|
|
123
123
|
vibe: true
|
|
124
124
|
prompt: |
|