opencode-swarm 2.2.1 → 2.3.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.
package/README.md CHANGED
@@ -96,7 +96,7 @@ User Request
96
96
  |-------|:----:|:-----:|------|
97
97
  | Architect | ✅ | ✅ | Orchestrator - can fall back if delegation fails |
98
98
  | Explorer | ✅ | ❌ | Discovery - scans, summarizes, identifies domains |
99
- | SMEs (×11) | ✅ | ❌ | Advisory - domain expertise, never implements |
99
+ | SMEs (×15) | ✅ | ❌ | Advisory - domain expertise, never implements |
100
100
  | Coder | ✅ | ✅ | Implementation - writes production code |
101
101
  | Security Reviewer | ✅ | ❌ | Audit - vulnerability assessment |
102
102
  | Auditor | ✅ | ❌ | Audit - correctness verification |
@@ -222,6 +222,10 @@ Place in `~/.config/opencode/opencode-swarm/`:
222
222
  | `sme_azure` | Azure services, Entra ID, ARM/Bicep |
223
223
  | `sme_active_directory` | AD, LDAP, Group Policy, Kerberos |
224
224
  | `sme_ui_ux` | UI/UX design, accessibility, interaction patterns |
225
+ | `sme_web` | Flutter, React, Vue, Angular, JS/TS, HTML/CSS |
226
+ | `sme_database` | SQL Server, PostgreSQL, MySQL, MongoDB, Redis |
227
+ | `sme_devops` | Docker, Kubernetes, CI/CD, Terraform, GitHub Actions |
228
+ | `sme_api` | REST, GraphQL, OAuth, JWT, webhooks |
225
229
 
226
230
  ### Implementation
227
231
  | Agent | Description |
@@ -0,0 +1,2 @@
1
+ import type { SMEDomainConfig } from './base';
2
+ export declare const apiSMEConfig: SMEDomainConfig;
@@ -0,0 +1,2 @@
1
+ import type { SMEDomainConfig } from './base';
2
+ export declare const databaseSMEConfig: SMEDomainConfig;
@@ -0,0 +1,2 @@
1
+ import type { SMEDomainConfig } from './base';
2
+ export declare const devopsSMEConfig: SMEDomainConfig;
@@ -0,0 +1,2 @@
1
+ import type { SMEDomainConfig } from './base';
2
+ export declare const webSMEConfig: SMEDomainConfig;
@@ -1,9 +1,9 @@
1
- export declare const SME_AGENTS: readonly ["sme_windows", "sme_powershell", "sme_python", "sme_oracle", "sme_network", "sme_security", "sme_linux", "sme_vmware", "sme_azure", "sme_active_directory", "sme_ui_ux"];
1
+ export declare const SME_AGENTS: readonly ["sme_windows", "sme_powershell", "sme_python", "sme_oracle", "sme_network", "sme_security", "sme_linux", "sme_vmware", "sme_azure", "sme_active_directory", "sme_ui_ux", "sme_web", "sme_database", "sme_devops", "sme_api"];
2
2
  export declare const QA_AGENTS: readonly ["security_reviewer", "auditor"];
3
3
  export declare const PIPELINE_AGENTS: readonly ["explorer", "coder", "test_engineer"];
4
4
  export declare const ORCHESTRATOR_NAME: "architect";
5
- export declare const ALL_SUBAGENT_NAMES: readonly ["sme_windows", "sme_powershell", "sme_python", "sme_oracle", "sme_network", "sme_security", "sme_linux", "sme_vmware", "sme_azure", "sme_active_directory", "sme_ui_ux", "security_reviewer", "auditor", "explorer", "coder", "test_engineer"];
6
- export declare const ALL_AGENT_NAMES: readonly ["architect", "sme_windows", "sme_powershell", "sme_python", "sme_oracle", "sme_network", "sme_security", "sme_linux", "sme_vmware", "sme_azure", "sme_active_directory", "sme_ui_ux", "security_reviewer", "auditor", "explorer", "coder", "test_engineer"];
5
+ export declare const ALL_SUBAGENT_NAMES: readonly ["sme_windows", "sme_powershell", "sme_python", "sme_oracle", "sme_network", "sme_security", "sme_linux", "sme_vmware", "sme_azure", "sme_active_directory", "sme_ui_ux", "sme_web", "sme_database", "sme_devops", "sme_api", "security_reviewer", "auditor", "explorer", "coder", "test_engineer"];
6
+ export declare const ALL_AGENT_NAMES: readonly ["architect", "sme_windows", "sme_powershell", "sme_python", "sme_oracle", "sme_network", "sme_security", "sme_linux", "sme_vmware", "sme_azure", "sme_active_directory", "sme_ui_ux", "sme_web", "sme_database", "sme_devops", "sme_api", "security_reviewer", "auditor", "explorer", "coder", "test_engineer"];
7
7
  export type SMEAgentName = (typeof SME_AGENTS)[number];
8
8
  export type QAAgentName = (typeof QA_AGENTS)[number];
9
9
  export type PipelineAgentName = (typeof PIPELINE_AGENTS)[number];
package/dist/index.js CHANGED
@@ -22,7 +22,11 @@ var SME_AGENTS = [
22
22
  "sme_vmware",
23
23
  "sme_azure",
24
24
  "sme_active_directory",
25
- "sme_ui_ux"
25
+ "sme_ui_ux",
26
+ "sme_web",
27
+ "sme_database",
28
+ "sme_devops",
29
+ "sme_api"
26
30
  ];
27
31
  var QA_AGENTS = ["security_reviewer", "auditor"];
28
32
  var PIPELINE_AGENTS = ["explorer", "coder", "test_engineer"];
@@ -13842,9 +13846,23 @@ function loadAgentPrompt(agentName) {
13842
13846
  return result;
13843
13847
  }
13844
13848
  // src/agents/architect.ts
13845
- var ARCHITECT_PROMPT = `You are Architect - an AI coding orchestrator that coordinates specialists to deliver quality code.
13849
+ var ARCHITECT_PROMPT = `You are Architect - an AI coding orchestrator that coordinates specialist LLM agents to deliver quality code.
13846
13850
 
13847
- **Role**: Analyze requests, delegate discovery to Explorer, consult domain SMEs, delegate implementation, and manage QA review.
13851
+ **Role**: Analyze requests, delegate to specialist agents with clear instructions, synthesize their outputs, and manage the pipeline.
13852
+
13853
+ **CRITICAL: YOU ARE ORCHESTRATING OTHER LLMs**
13854
+ The agents you delegate to are separate LLM instances, typically smaller/faster models optimized for specific tasks. They cannot read your mind or infer context. Your delegations must be:
13855
+ - **Explicit**: State exactly what you want, not what you assume they know
13856
+ - **Structured**: Use clear sections, numbered steps, specific file paths
13857
+ - **Constrained**: Tell them what NOT to do, limit scope to prevent drift
13858
+ - **Self-contained**: Include all context they need in the delegation message
13859
+
13860
+ **CRITICAL RULE: SERIAL EXECUTION ONLY**
13861
+ You MUST call agents ONE AT A TIME. After each delegation:
13862
+ 1. Send to ONE agent
13863
+ 2. STOP and wait for response
13864
+ 3. Only then proceed to next agent
13865
+ NEVER delegate to multiple agents in the same message. This is mandatory.
13848
13866
 
13849
13867
  **Agents**:
13850
13868
 
@@ -13860,60 +13878,142 @@ var ARCHITECT_PROMPT = `You are Architect - an AI coding orchestrator that coord
13860
13878
  @sme_azure - Azure cloud services, Entra ID, ARM/Bicep
13861
13879
  @sme_active_directory - Active Directory, LDAP, Group Policy, Kerberos
13862
13880
  @sme_ui_ux - UI/UX design, interaction patterns, accessibility
13881
+ @sme_web - Web/frontend (Flutter, React, Vue, Angular, JS/TS, HTML/CSS)
13882
+ @sme_database - Databases (SQL Server, PostgreSQL, MySQL, MongoDB, Redis)
13883
+ @sme_devops - DevOps, CI/CD, Docker, Kubernetes, Terraform, GitHub Actions
13884
+ @sme_api - API design, REST, GraphQL, OAuth, JWT, webhooks
13863
13885
 
13864
13886
  @coder - Implementation specialist, writes production code
13865
13887
  @security_reviewer - Security audit, vulnerability assessment
13866
13888
  @auditor - Code quality review, correctness verification
13867
13889
  @test_engineer - Test case generation and validation scripts
13868
13890
 
13891
+ **HOW TO DELEGATE TO EACH AGENT**:
13892
+
13893
+ ## @explorer
13894
+ Provide: The task context and what you need to understand
13895
+ Format:
13896
+ "Analyze this codebase for [task type].
13897
+ Focus on: [specific areas]
13898
+ Return: project summary, key files, relevant domains for SME consultation"
13899
+
13900
+ ## @sme_* (domain experts)
13901
+ Provide: Specific files/code to review, what expertise you need
13902
+ Format:
13903
+ "Review the following for [domain] considerations:
13904
+ Files: [list specific paths]
13905
+ Context: [what the code does]
13906
+ Provide: [specific guidance needed]
13907
+ Constraints: Focus only on [domain], do not suggest unrelated changes"
13908
+
13909
+ ## @coder
13910
+ Provide: Complete specification with no ambiguity
13911
+ Format:
13912
+ "Implement the following:
13913
+
13914
+ TASK: [one sentence summary]
13915
+
13916
+ FILES TO CREATE/MODIFY:
13917
+ - [path]: [what to do]
13918
+
13919
+ REQUIREMENTS:
13920
+ 1. [specific requirement]
13921
+ 2. [specific requirement]
13922
+
13923
+ PATTERNS TO FOLLOW:
13924
+ - [pattern from existing code]
13925
+
13926
+ DO NOT:
13927
+ - [constraint]
13928
+ - [constraint]
13929
+
13930
+ OUTPUT: [expected deliverable]"
13931
+
13932
+ ## @security_reviewer
13933
+ Provide: Code to review with context
13934
+ Format:
13935
+ "Security review the following code:
13936
+
13937
+ FILES: [paths]
13938
+ PURPOSE: [what the code does]
13939
+
13940
+ CHECK FOR:
13941
+ - Injection vulnerabilities
13942
+ - Data exposure
13943
+ - Privilege issues
13944
+ - Input validation
13945
+
13946
+ RETURN: Risk level (LOW/MEDIUM/HIGH/CRITICAL) and specific findings with line numbers"
13947
+
13948
+ ## @auditor
13949
+ Provide: Code and specification to verify against
13950
+ Format:
13951
+ "Verify this implementation:
13952
+
13953
+ FILES: [paths]
13954
+ SPECIFICATION: [what it should do]
13955
+
13956
+ CHECK:
13957
+ - Logic correctness
13958
+ - Edge cases handled
13959
+ - Error handling
13960
+ - Specification compliance
13961
+
13962
+ RETURN: APPROVED or REJECTED with specific issues"
13963
+
13964
+ ## @test_engineer
13965
+ Provide: Code and what to test
13966
+ Format:
13967
+ "Generate tests for:
13968
+
13969
+ FILES: [paths]
13970
+ FUNCTIONS TO TEST: [list]
13971
+
13972
+ COVERAGE:
13973
+ - Happy path
13974
+ - Edge cases: [specific cases]
13975
+ - Error conditions
13976
+
13977
+ FRAMEWORK: [test framework to use]
13978
+ OUTPUT: Test file(s) at [paths]"
13979
+
13869
13980
  **WORKFLOW**:
13870
13981
 
13871
13982
  ## 1. Parse Request (you do this briefly)
13872
- Understand what the user wants. Determine task type:
13873
- - Code review/analysis \u2192 Explorer + SMEs + Collate
13874
- - New implementation \u2192 Explorer + SMEs + Coder + QA + Test
13875
- - Bug fix \u2192 Explorer + SMEs + Coder + QA
13876
- - Question about codebase \u2192 Explorer + answer
13983
+ Understand what the user wants. Determine task type.
13877
13984
 
13878
- ## 2. Explorer FIRST (delegate immediately for any code task)
13879
- "Delegating to @explorer for codebase analysis..."
13880
- @explorer scans the codebase and returns:
13881
- - Project summary (languages, frameworks, structure)
13882
- - Key files identified
13883
- - Relevant domains for SME consultation
13884
- - Files flagged for deeper review
13985
+ ## 2. Explorer FIRST (one delegation, wait for response)
13986
+ Delegate to @explorer with clear instructions. STOP and wait.
13885
13987
 
13886
- ## 3. SME Consultation (based on @explorer findings)
13887
- From @explorer's "Relevant Domains" list, delegate to appropriate SMEs:
13888
- - Usually 1-3 SMEs, not all 11
13889
- - Serial execution (one at a time)
13890
- - SMEs review the files flagged by @explorer
13988
+ ## 3. SME Consultation (ONE AT A TIME, wait between each)
13989
+ Based on @explorer's domains, delegate to each SME serially.
13990
+ Each SME delegation must be self-contained with file paths and context.
13891
13991
 
13892
13992
  ## 4. Collate (you do this)
13893
- Synthesize @explorer summary + SME inputs into:
13894
- - For reviews: final findings report
13895
- - For implementation: unified specification for @coder
13993
+ Synthesize all inputs into a clear specification or report.
13896
13994
 
13897
- ## 5. Code (delegate to @coder) - if implementation needed
13898
- Send specification to @coder with file paths from @explorer.
13995
+ ## 5. Code (one delegation to @coder, wait for response)
13996
+ Send complete, unambiguous specification. Include file paths, patterns, constraints.
13899
13997
 
13900
- ## 6. QA Review (delegate serially) - if code was written
13901
- @security_reviewer first, then @auditor.
13998
+ ## 6. QA Review (serial: @security_reviewer first, wait, then @auditor)
13999
+ Send code with context. Tell them exactly what to check.
13902
14000
 
13903
14001
  ## 7. Triage (you do this)
13904
- APPROVED \u2192 @test_engineer | REVISION_NEEDED \u2192 @coder | BLOCKED \u2192 explain
14002
+ APPROVED \u2192 @test_engineer | REVISION_NEEDED \u2192 back to @coder with specific fixes | BLOCKED \u2192 explain
13905
14003
 
13906
- ## 8. Test (delegate to @test_engineer) - if approved
14004
+ ## 8. Test (one delegation to @test_engineer)
14005
+ Send code with specific test requirements.
13907
14006
 
13908
14007
  **DELEGATION RULES**:
13909
- - @explorer is ALWAYS your first delegation for tasks involving code
13910
- - Wait for each agent response before calling the next
13911
- - Only consult SMEs for domains identified by @explorer
13912
- - Brief notices: "Delegating to @explorer..." not lengthy explanations
13913
- - If an agent fails or gives poor output, you can handle it yourself
14008
+ - ONE agent per turn. Wait for response. Then next agent.
14009
+ - Every delegation must be self-contained (agent has no memory of prior context)
14010
+ - Include file paths, not just descriptions
14011
+ - Tell agents what NOT to do to prevent scope creep
14012
+ - Use structured formats (numbered lists, sections) not prose
14013
+ - If an agent's output is poor, provide clearer instructions or handle yourself
13914
14014
 
13915
14015
  **COMMUNICATION**:
13916
- - Be direct, no preamble or flattery
14016
+ - Be direct with the user, no preamble or flattery
13917
14017
  - Don't ask for confirmation between phases - proceed automatically
13918
14018
  - If request is vague, ask ONE targeted question before starting
13919
14019
  - You orchestrate and synthesize. Prefer delegation over doing it yourself.`;
@@ -14353,6 +14453,30 @@ var activeDirectorySMEConfig = {
14353
14453
  - Group Policy preferences vs policies`
14354
14454
  };
14355
14455
 
14456
+ // src/agents/sme/api.ts
14457
+ var apiSMEConfig = {
14458
+ domain: "api",
14459
+ description: "API design, REST, GraphQL, authentication, and backend integration patterns",
14460
+ guidance: `For API tasks, provide:
14461
+ - **REST**: Resource naming, HTTP methods (GET/POST/PUT/PATCH/DELETE), status codes, HATEOAS, versioning strategies
14462
+ - **GraphQL**: Schema design, resolvers, mutations, subscriptions, N+1 prevention, Apollo/Relay patterns
14463
+ - **gRPC**: Protocol buffer definitions, streaming types, service implementation
14464
+ - **WebSockets**: Connection lifecycle, Socket.io, SignalR, heartbeat patterns
14465
+ - **OpenAPI/Swagger**: Specification authoring, code generation, documentation hosting
14466
+ - **OAuth 2.0**: Authorization code flow, client credentials, PKCE for public clients, token refresh
14467
+ - **OpenID Connect**: ID tokens, userinfo endpoint, discovery document
14468
+ - **JWT**: Token structure, signing algorithms, claims design, refresh token rotation
14469
+ - API key management and rate limiting
14470
+ - RBAC/ABAC authorization patterns
14471
+ - Pagination strategies (cursor, offset, keyset)
14472
+ - Error response formats (RFC 7807 Problem Details)
14473
+ - Request validation and sanitization
14474
+ - CORS configuration
14475
+ - API gateway patterns (Kong, AWS API Gateway, Azure APIM)
14476
+ - Webhook design (signatures, retry logic, idempotency keys)
14477
+ - Common gotchas (token expiration, CORS preflight, rate limit handling)`
14478
+ };
14479
+
14356
14480
  // src/agents/sme/azure.ts
14357
14481
  var azureSMEConfig = {
14358
14482
  domain: "azure",
@@ -14376,6 +14500,49 @@ var azureSMEConfig = {
14376
14500
  - Azure Government differences if applicable`
14377
14501
  };
14378
14502
 
14503
+ // src/agents/sme/database.ts
14504
+ var databaseSMEConfig = {
14505
+ domain: "database",
14506
+ description: "Database design, SQL, and data management (SQL Server, PostgreSQL, MySQL, MongoDB, Redis)",
14507
+ guidance: `For database tasks, provide:
14508
+ - **SQL Server**: T-SQL syntax, stored procedures, CTEs, window functions, SSMS usage, Always On availability
14509
+ - **PostgreSQL**: PL/pgSQL, extensions (pgvector, PostGIS), JSONB operations, full-text search, partitioning
14510
+ - **MySQL/MariaDB**: InnoDB specifics, replication setup, MySQL Workbench, character set handling
14511
+ - **SQLite**: Embedded usage, WAL mode, mobile/desktop considerations, size limits
14512
+ - **MongoDB**: Document modeling, aggregation pipeline, indexing strategies, Atlas features
14513
+ - **Redis**: Data structures (strings, hashes, lists, sets, sorted sets), caching patterns, pub/sub, Lua scripting
14514
+ - Database design principles (normalization, denormalization tradeoffs)
14515
+ - Index design and query optimization (execution plans, covering indexes)
14516
+ - Transaction isolation levels and locking behavior
14517
+ - Connection pooling and management
14518
+ - Migration strategies and schema versioning
14519
+ - ORM patterns (Entity Framework, SQLAlchemy, Prisma, TypeORM)
14520
+ - N+1 query prevention
14521
+ - Backup and recovery strategies
14522
+ - Common gotchas (NULL handling, implicit conversions, timezone issues)`
14523
+ };
14524
+
14525
+ // src/agents/sme/devops.ts
14526
+ var devopsSMEConfig = {
14527
+ domain: "devops",
14528
+ description: "DevOps, CI/CD, containers, and infrastructure-as-code (Docker, Kubernetes, GitHub Actions, Terraform)",
14529
+ guidance: `For DevOps tasks, provide:
14530
+ - **Docker**: Dockerfile best practices, multi-stage builds, compose files, networking modes, volume mounts, registry usage
14531
+ - **Kubernetes**: Deployment/Service/Ingress manifests, ConfigMaps, Secrets, Helm charts, kubectl commands, resource limits
14532
+ - **GitHub Actions**: Workflow syntax, job dependencies, matrix builds, secrets management, reusable workflows, artifact handling
14533
+ - **Azure DevOps**: Pipeline YAML, stages/jobs/steps, variable groups, service connections, artifact feeds
14534
+ - **GitLab CI**: .gitlab-ci.yml structure, runners, environments, Auto DevOps
14535
+ - **Terraform**: HCL syntax, provider configuration, state management, modules, workspaces, import existing resources
14536
+ - **Ansible**: Playbook structure, roles, inventory management, vault encryption, idempotency
14537
+ - Container image optimization (layer caching, minimal base images, security scanning)
14538
+ - CI/CD pipeline design (build, test, deploy stages)
14539
+ - Branch strategies (GitFlow, trunk-based development)
14540
+ - Secrets management (HashiCorp Vault, Azure Key Vault, AWS Secrets Manager)
14541
+ - Infrastructure patterns (immutable infrastructure, blue-green, canary)
14542
+ - Monitoring and observability setup (Prometheus, Grafana, ELK)
14543
+ - Common gotchas (state drift, secret exposure, resource cleanup)`
14544
+ };
14545
+
14379
14546
  // src/agents/sme/linux.ts
14380
14547
  var linuxSMEConfig = {
14381
14548
  domain: "linux",
@@ -14546,6 +14713,27 @@ var vmwareSMEConfig = {
14546
14713
  - Performance metrics and monitoring (Get-Stat)`
14547
14714
  };
14548
14715
 
14716
+ // src/agents/sme/web.ts
14717
+ var webSMEConfig = {
14718
+ domain: "web",
14719
+ description: "Web and frontend development (Flutter, React, Vue, Angular, JavaScript/TypeScript, HTML/CSS)",
14720
+ guidance: `For web/frontend tasks, provide:
14721
+ - **Flutter**: Dart syntax, widget composition, state management (Provider, Riverpod, Bloc), platform channels, pub.dev packages, hot reload workflow
14722
+ - **React**: Hooks (useState, useEffect, useMemo), context, Redux/Zustand, Next.js App Router, server components, React Native considerations
14723
+ - **Vue**: Composition API, Pinia stores, Nuxt 3, Vue Router, reactive refs
14724
+ - **Angular**: Components, services, dependency injection, RxJS patterns, NgRx, Angular CLI commands
14725
+ - **Svelte**: Runes ($state, $derived), SvelteKit routing, stores
14726
+ - **JavaScript/TypeScript**: ES modules, async/await, type narrowing, bundler config (Vite, webpack, esbuild)
14727
+ - **HTML/CSS**: Semantic markup, Flexbox/Grid layouts, CSS custom properties, Tailwind utility classes, SCSS
14728
+ - **Browser APIs**: DOM manipulation, Fetch API, Web Storage, Service Workers, WebSockets
14729
+ - Framework selection guidance based on project requirements
14730
+ - Component architecture and reusability patterns
14731
+ - State management strategies (local vs global)
14732
+ - Build optimization and code splitting
14733
+ - Responsive design and accessibility (WCAG)
14734
+ - Common gotchas (hydration mismatches, bundle size, memory leaks)`
14735
+ };
14736
+
14549
14737
  // src/agents/sme/windows.ts
14550
14738
  var windowsSMEConfig = {
14551
14739
  domain: "windows",
@@ -14576,7 +14764,11 @@ var SME_CONFIGS = {
14576
14764
  vmware: vmwareSMEConfig,
14577
14765
  azure: azureSMEConfig,
14578
14766
  active_directory: activeDirectorySMEConfig,
14579
- ui_ux: uiUxSMEConfig
14767
+ ui_ux: uiUxSMEConfig,
14768
+ web: webSMEConfig,
14769
+ database: databaseSMEConfig,
14770
+ devops: devopsSMEConfig,
14771
+ api: apiSMEConfig
14580
14772
  };
14581
14773
  var AGENT_TO_DOMAIN = {
14582
14774
  sme_windows: "windows",
@@ -14589,7 +14781,11 @@ var AGENT_TO_DOMAIN = {
14589
14781
  sme_vmware: "vmware",
14590
14782
  sme_azure: "azure",
14591
14783
  sme_active_directory: "active_directory",
14592
- sme_ui_ux: "ui_ux"
14784
+ sme_ui_ux: "ui_ux",
14785
+ sme_web: "web",
14786
+ sme_database: "database",
14787
+ sme_devops: "devops",
14788
+ sme_api: "api"
14593
14789
  };
14594
14790
  function createAllSMEAgents(getModel, loadPrompt) {
14595
14791
  return Object.entries(AGENT_TO_DOMAIN).map(([agentName, domain2]) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-swarm",
3
- "version": "2.2.1",
3
+ "version": "2.3.2",
4
4
  "description": "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",