@calliopelabs/cli 0.8.20 → 2.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.
- package/dist/agents/agent-config-loader.d.ts +60 -0
- package/dist/agents/agent-config-loader.d.ts.map +1 -0
- package/dist/agents/agent-config-loader.js +402 -0
- package/dist/agents/agent-config-loader.js.map +1 -0
- package/dist/agents/agent-config-presets.d.ts +10 -0
- package/dist/agents/agent-config-presets.d.ts.map +1 -0
- package/dist/agents/agent-config-presets.js +940 -0
- package/dist/agents/agent-config-presets.js.map +1 -0
- package/dist/agents/agent-config-types.d.ts +145 -0
- package/dist/agents/agent-config-types.d.ts.map +1 -0
- package/dist/agents/agent-config-types.js +12 -0
- package/dist/agents/agent-config-types.js.map +1 -0
- package/dist/{agterm → agents}/agent-detection.d.ts +1 -1
- package/dist/{agterm → agents}/agent-detection.d.ts.map +1 -1
- package/dist/{agterm → agents}/agent-detection.js +21 -5
- package/dist/agents/agent-detection.js.map +1 -0
- package/dist/agents/aggregator.d.ts +19 -0
- package/dist/agents/aggregator.d.ts.map +1 -0
- package/dist/agents/aggregator.js +141 -0
- package/dist/agents/aggregator.js.map +1 -0
- package/dist/{agterm → agents}/cli-backend.d.ts +1 -1
- package/dist/{agterm → agents}/cli-backend.d.ts.map +1 -1
- package/dist/{agterm → agents}/cli-backend.js +90 -12
- package/dist/agents/cli-backend.js.map +1 -0
- package/dist/agents/council-types.d.ts +113 -0
- package/dist/agents/council-types.d.ts.map +1 -0
- package/dist/agents/council-types.js +81 -0
- package/dist/agents/council-types.js.map +1 -0
- package/dist/agents/council.d.ts +107 -0
- package/dist/agents/council.d.ts.map +1 -0
- package/dist/agents/council.js +586 -0
- package/dist/agents/council.js.map +1 -0
- package/dist/agents/decomposer.d.ts +33 -0
- package/dist/agents/decomposer.d.ts.map +1 -0
- package/dist/agents/decomposer.js +138 -0
- package/dist/agents/decomposer.js.map +1 -0
- package/dist/agents/dynamic-tools.d.ts +52 -0
- package/dist/agents/dynamic-tools.d.ts.map +1 -0
- package/dist/agents/dynamic-tools.js +395 -0
- package/dist/agents/dynamic-tools.js.map +1 -0
- package/dist/agents/index.d.ts +29 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +29 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/installer.d.ts +39 -0
- package/dist/agents/installer.d.ts.map +1 -0
- package/dist/agents/installer.js +205 -0
- package/dist/agents/installer.js.map +1 -0
- package/dist/{agterm → agents}/orchestrator.d.ts +7 -2
- package/dist/agents/orchestrator.d.ts.map +1 -0
- package/dist/{agterm → agents}/orchestrator.js +22 -2
- package/dist/agents/orchestrator.js.map +1 -0
- package/dist/agents/sdk-backend.d.ts +63 -0
- package/dist/agents/sdk-backend.d.ts.map +1 -0
- package/dist/agents/sdk-backend.js +489 -0
- package/dist/agents/sdk-backend.js.map +1 -0
- package/dist/agents/swarm-types.d.ts +83 -0
- package/dist/agents/swarm-types.d.ts.map +1 -0
- package/dist/agents/swarm-types.js +20 -0
- package/dist/agents/swarm-types.js.map +1 -0
- package/dist/agents/swarm.d.ts +74 -0
- package/dist/agents/swarm.d.ts.map +1 -0
- package/dist/agents/swarm.js +307 -0
- package/dist/agents/swarm.js.map +1 -0
- package/dist/{agterm → agents}/tools.d.ts +7 -5
- package/dist/agents/tools.d.ts.map +1 -0
- package/dist/agents/tools.js +776 -0
- package/dist/agents/tools.js.map +1 -0
- package/dist/{agterm → agents}/types.d.ts +14 -2
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/{agterm → agents}/types.js +2 -2
- package/dist/agents/types.js.map +1 -0
- package/dist/api-server.d.ts +26 -0
- package/dist/api-server.d.ts.map +1 -0
- package/dist/api-server.js +230 -0
- package/dist/api-server.js.map +1 -0
- package/dist/auto-checkpoint.d.ts +35 -0
- package/dist/auto-checkpoint.d.ts.map +1 -0
- package/dist/auto-checkpoint.js +143 -0
- package/dist/auto-checkpoint.js.map +1 -0
- package/dist/auto-compressor.d.ts +44 -0
- package/dist/auto-compressor.d.ts.map +1 -0
- package/dist/auto-compressor.js +145 -0
- package/dist/auto-compressor.js.map +1 -0
- package/dist/background-jobs.d.ts +45 -0
- package/dist/background-jobs.d.ts.map +1 -0
- package/dist/background-jobs.js +122 -0
- package/dist/background-jobs.js.map +1 -0
- package/dist/bin.d.ts +6 -2
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +127 -24
- package/dist/bin.js.map +1 -1
- package/dist/checkpoint.d.ts +49 -0
- package/dist/checkpoint.d.ts.map +1 -0
- package/dist/checkpoint.js +219 -0
- package/dist/checkpoint.js.map +1 -0
- package/dist/circuit-breaker/breaker.d.ts +80 -0
- package/dist/circuit-breaker/breaker.d.ts.map +1 -0
- package/dist/circuit-breaker/breaker.js +408 -0
- package/dist/circuit-breaker/breaker.js.map +1 -0
- package/dist/circuit-breaker/defaults.d.ts +8 -0
- package/dist/circuit-breaker/defaults.d.ts.map +1 -0
- package/dist/circuit-breaker/defaults.js +35 -0
- package/dist/circuit-breaker/defaults.js.map +1 -0
- package/dist/circuit-breaker/index.d.ts +9 -0
- package/dist/circuit-breaker/index.d.ts.map +1 -0
- package/dist/circuit-breaker/index.js +8 -0
- package/dist/circuit-breaker/index.js.map +1 -0
- package/dist/circuit-breaker/types.d.ts +77 -0
- package/dist/circuit-breaker/types.d.ts.map +1 -0
- package/dist/circuit-breaker/types.js +8 -0
- package/dist/circuit-breaker/types.js.map +1 -0
- package/dist/circuit-breaker.d.ts +8 -0
- package/dist/circuit-breaker.d.ts.map +1 -0
- package/dist/circuit-breaker.js +7 -0
- package/dist/circuit-breaker.js.map +1 -0
- package/dist/cli/agent.d.ts +9 -0
- package/dist/cli/agent.d.ts.map +1 -0
- package/dist/cli/agent.js +262 -0
- package/dist/cli/agent.js.map +1 -0
- package/dist/cli/commands.d.ts +12 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/{cli.js → cli/commands.js} +285 -422
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +222 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/types.d.ts +30 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +20 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/companions.d.ts +54 -0
- package/dist/companions.d.ts.map +1 -0
- package/dist/companions.js +440 -0
- package/dist/companions.js.map +1 -0
- package/dist/config.d.ts +23 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +95 -22
- package/dist/config.js.map +1 -1
- package/dist/diff.d.ts +27 -0
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +415 -10
- package/dist/diff.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +20 -11
- package/dist/errors.js.map +1 -1
- package/dist/git-status.d.ts +23 -0
- package/dist/git-status.d.ts.map +1 -0
- package/dist/git-status.js +92 -0
- package/dist/git-status.js.map +1 -0
- package/dist/headless.d.ts +25 -0
- package/dist/headless.d.ts.map +1 -0
- package/dist/headless.js +182 -0
- package/dist/headless.js.map +1 -0
- package/dist/hud/api.d.ts +35 -0
- package/dist/hud/api.d.ts.map +1 -0
- package/dist/hud/api.js +448 -0
- package/dist/hud/api.js.map +1 -0
- package/dist/hud/palettes.d.ts +9 -0
- package/dist/hud/palettes.d.ts.map +1 -0
- package/dist/hud/palettes.js +280 -0
- package/dist/hud/palettes.js.map +1 -0
- package/dist/hud/skins.d.ts +12 -0
- package/dist/hud/skins.d.ts.map +1 -0
- package/dist/hud/skins.js +365 -0
- package/dist/hud/skins.js.map +1 -0
- package/dist/hud/theme-packs/api.d.ts +51 -0
- package/dist/hud/theme-packs/api.d.ts.map +1 -0
- package/dist/hud/theme-packs/api.js +145 -0
- package/dist/hud/theme-packs/api.js.map +1 -0
- package/dist/hud/theme-packs/index.d.ts +18 -0
- package/dist/hud/theme-packs/index.d.ts.map +1 -0
- package/dist/hud/theme-packs/index.js +38 -0
- package/dist/hud/theme-packs/index.js.map +1 -0
- package/dist/hud/theme-packs/types.d.ts +29 -0
- package/dist/hud/theme-packs/types.d.ts.map +1 -0
- package/dist/hud/theme-packs/types.js +9 -0
- package/dist/hud/theme-packs/types.js.map +1 -0
- package/dist/hud/types.d.ts +182 -0
- package/dist/hud/types.d.ts.map +1 -0
- package/dist/hud/types.js +7 -0
- package/dist/hud/types.js.map +1 -0
- package/dist/idle-eviction.d.ts +34 -0
- package/dist/idle-eviction.d.ts.map +1 -0
- package/dist/idle-eviction.js +78 -0
- package/dist/idle-eviction.js.map +1 -0
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/iteration-ledger.d.ts +105 -0
- package/dist/iteration-ledger.d.ts.map +1 -0
- package/dist/iteration-ledger.js +237 -0
- package/dist/iteration-ledger.js.map +1 -0
- package/dist/markdown.d.ts.map +1 -1
- package/dist/markdown.js +1 -27
- package/dist/markdown.js.map +1 -1
- package/dist/mcp.d.ts +35 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +291 -7
- package/dist/mcp.js.map +1 -1
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +12 -2
- package/dist/memory.js.map +1 -1
- package/dist/model-detection.d.ts +5 -0
- package/dist/model-detection.d.ts.map +1 -1
- package/dist/model-detection.js +278 -10
- package/dist/model-detection.js.map +1 -1
- package/dist/model-router.d.ts.map +1 -1
- package/dist/model-router.js +33 -11
- package/dist/model-router.js.map +1 -1
- package/dist/plugins.d.ts +8 -0
- package/dist/plugins.d.ts.map +1 -1
- package/dist/plugins.js +97 -6
- package/dist/plugins.js.map +1 -1
- package/dist/providers/anthropic.d.ts +10 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +221 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/bedrock.d.ts +17 -0
- package/dist/providers/bedrock.d.ts.map +1 -0
- package/dist/providers/bedrock.js +574 -0
- package/dist/providers/bedrock.js.map +1 -0
- package/dist/providers/compat.d.ts +13 -0
- package/dist/providers/compat.d.ts.map +1 -0
- package/dist/providers/compat.js +202 -0
- package/dist/providers/compat.js.map +1 -0
- package/dist/providers/google.d.ts +10 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +203 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/index.d.ts +23 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +145 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/ollama.d.ts +17 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +289 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +121 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +485 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/types.d.ts +63 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +164 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/sandbox-native.d.ts +59 -0
- package/dist/sandbox-native.d.ts.map +1 -0
- package/dist/sandbox-native.js +292 -0
- package/dist/sandbox-native.js.map +1 -0
- package/dist/sandbox.d.ts +2 -2
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +59 -13
- package/dist/sandbox.js.map +1 -1
- package/dist/scope.d.ts +3 -1
- package/dist/scope.d.ts.map +1 -1
- package/dist/scope.js +13 -1
- package/dist/scope.js.map +1 -1
- package/dist/session-timeout.d.ts +31 -0
- package/dist/session-timeout.d.ts.map +1 -0
- package/dist/session-timeout.js +100 -0
- package/dist/session-timeout.js.map +1 -0
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +29 -17
- package/dist/setup.js.map +1 -1
- package/dist/smart-router.d.ts +73 -0
- package/dist/smart-router.d.ts.map +1 -0
- package/dist/smart-router.js +332 -0
- package/dist/smart-router.js.map +1 -0
- package/dist/storage.d.ts +19 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +164 -1
- package/dist/storage.js.map +1 -1
- package/dist/streaming.d.ts +4 -0
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +12 -0
- package/dist/streaming.js.map +1 -1
- package/dist/styles.d.ts +32 -0
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +91 -0
- package/dist/styles.js.map +1 -1
- package/dist/summarization.d.ts +1 -1
- package/dist/summarization.js +4 -4
- package/dist/summarization.js.map +1 -1
- package/dist/terminal-image.d.ts +115 -0
- package/dist/terminal-image.d.ts.map +1 -0
- package/dist/terminal-image.js +766 -0
- package/dist/terminal-image.js.map +1 -0
- package/dist/terminal-recording.d.ts +55 -0
- package/dist/terminal-recording.d.ts.map +1 -0
- package/dist/terminal-recording.js +182 -0
- package/dist/terminal-recording.js.map +1 -0
- package/dist/themes.d.ts +19 -35
- package/dist/themes.d.ts.map +1 -1
- package/dist/themes.js +101 -210
- package/dist/themes.js.map +1 -1
- package/dist/tmux.d.ts +35 -0
- package/dist/tmux.d.ts.map +1 -0
- package/dist/tmux.js +106 -0
- package/dist/tmux.js.map +1 -0
- package/dist/tools.d.ts +3 -3
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +587 -45
- package/dist/tools.js.map +1 -1
- package/dist/trust.d.ts +53 -0
- package/dist/trust.d.ts.map +1 -0
- package/dist/trust.js +154 -0
- package/dist/trust.js.map +1 -0
- package/dist/types.d.ts +7 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +70 -32
- package/dist/types.js.map +1 -1
- package/dist/ui/agent.d.ts +61 -0
- package/dist/ui/agent.d.ts.map +1 -0
- package/dist/ui/agent.js +768 -0
- package/dist/ui/agent.js.map +1 -0
- package/dist/ui/chat-input.d.ts +32 -0
- package/dist/ui/chat-input.d.ts.map +1 -0
- package/dist/ui/chat-input.js +355 -0
- package/dist/ui/chat-input.js.map +1 -0
- package/dist/ui/commands.d.ts +92 -0
- package/dist/ui/commands.d.ts.map +1 -0
- package/dist/ui/commands.js +3006 -0
- package/dist/ui/commands.js.map +1 -0
- package/dist/ui/completions.d.ts +22 -0
- package/dist/ui/completions.d.ts.map +1 -0
- package/dist/ui/completions.js +215 -0
- package/dist/ui/completions.js.map +1 -0
- package/dist/ui/components.d.ts +38 -0
- package/dist/ui/components.d.ts.map +1 -0
- package/dist/ui/components.js +422 -0
- package/dist/ui/components.js.map +1 -0
- package/dist/ui/context.d.ts +12 -0
- package/dist/ui/context.d.ts.map +1 -0
- package/dist/ui/context.js +102 -0
- package/dist/ui/context.js.map +1 -0
- package/dist/ui/error-boundary.d.ts +33 -0
- package/dist/ui/error-boundary.d.ts.map +1 -0
- package/dist/ui/error-boundary.js +94 -0
- package/dist/ui/error-boundary.js.map +1 -0
- package/dist/ui/frame.d.ts +13 -0
- package/dist/ui/frame.d.ts.map +1 -0
- package/dist/ui/frame.js +89 -0
- package/dist/ui/frame.js.map +1 -0
- package/dist/ui/index.d.ts +12 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +928 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/messages.d.ts +19 -0
- package/dist/ui/messages.d.ts.map +1 -0
- package/dist/ui/messages.js +181 -0
- package/dist/ui/messages.js.map +1 -0
- package/dist/ui/modals.d.ts +52 -0
- package/dist/ui/modals.d.ts.map +1 -0
- package/dist/ui/modals.js +204 -0
- package/dist/ui/modals.js.map +1 -0
- package/dist/ui/pack-picker.d.ts +12 -0
- package/dist/ui/pack-picker.d.ts.map +1 -0
- package/dist/ui/pack-picker.js +101 -0
- package/dist/ui/pack-picker.js.map +1 -0
- package/dist/ui/status-bar.d.ts +20 -0
- package/dist/ui/status-bar.d.ts.map +1 -0
- package/dist/ui/status-bar.js +41 -0
- package/dist/ui/status-bar.js.map +1 -0
- package/dist/ui/theme-picker.d.ts +24 -0
- package/dist/ui/theme-picker.d.ts.map +1 -0
- package/dist/ui/theme-picker.js +190 -0
- package/dist/ui/theme-picker.js.map +1 -0
- package/dist/ui/types.d.ts +62 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +7 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +1 -9
- package/dist/version-check.js.map +1 -1
- package/package.json +8 -3
- package/dist/agterm/agent-detection.js.map +0 -1
- package/dist/agterm/cli-backend.js.map +0 -1
- package/dist/agterm/index.d.ts +0 -12
- package/dist/agterm/index.d.ts.map +0 -1
- package/dist/agterm/index.js +0 -15
- package/dist/agterm/index.js.map +0 -1
- package/dist/agterm/orchestrator.d.ts.map +0 -1
- package/dist/agterm/orchestrator.js.map +0 -1
- package/dist/agterm/tools.d.ts.map +0 -1
- package/dist/agterm/tools.js +0 -278
- package/dist/agterm/tools.js.map +0 -1
- package/dist/agterm/types.d.ts.map +0 -1
- package/dist/agterm/types.js.map +0 -1
- package/dist/cli.d.ts +0 -14
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/providers.d.ts +0 -51
- package/dist/providers.d.ts.map +0 -1
- package/dist/providers.js +0 -1146
- package/dist/providers.js.map +0 -1
- package/dist/ui-cli.d.ts +0 -17
- package/dist/ui-cli.d.ts.map +0 -1
- package/dist/ui-cli.js +0 -3730
- package/dist/ui-cli.js.map +0 -1
|
@@ -0,0 +1,586 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calliope Agents — Council Manager
|
|
3
|
+
*
|
|
4
|
+
* Coordinates groups of agents deliberating on a shared goal.
|
|
5
|
+
* Supports competitive, collaborative, consensus, and overseer modes.
|
|
6
|
+
*/
|
|
7
|
+
import { randomUUID } from 'crypto';
|
|
8
|
+
import { DEFAULT_COUNCIL_CONFIG, COUNCIL_TEMPLATES } from './council-types.js';
|
|
9
|
+
import { orchestrator } from './orchestrator.js';
|
|
10
|
+
import { swarmManager } from './swarm.js';
|
|
11
|
+
/**
|
|
12
|
+
* Council Manager - Singleton
|
|
13
|
+
*/
|
|
14
|
+
class CouncilManager {
|
|
15
|
+
sessions = new Map();
|
|
16
|
+
/**
|
|
17
|
+
* Start a new council session
|
|
18
|
+
*/
|
|
19
|
+
async startCouncil(prompt, config, cwd) {
|
|
20
|
+
const mergedConfig = {
|
|
21
|
+
...DEFAULT_COUNCIL_CONFIG,
|
|
22
|
+
...config,
|
|
23
|
+
};
|
|
24
|
+
const session = {
|
|
25
|
+
id: randomUUID(),
|
|
26
|
+
prompt,
|
|
27
|
+
status: 'deliberating',
|
|
28
|
+
config: mergedConfig,
|
|
29
|
+
deliberations: [],
|
|
30
|
+
votes: [],
|
|
31
|
+
scores: [],
|
|
32
|
+
round: 1,
|
|
33
|
+
createdAt: new Date(),
|
|
34
|
+
updatedAt: new Date(),
|
|
35
|
+
};
|
|
36
|
+
this.sessions.set(session.id, session);
|
|
37
|
+
// Start council lifecycle
|
|
38
|
+
this.runCouncilLifecycle(session, cwd).catch(err => {
|
|
39
|
+
session.status = 'failed';
|
|
40
|
+
session.error = err instanceof Error ? err.message : String(err);
|
|
41
|
+
session.updatedAt = new Date();
|
|
42
|
+
});
|
|
43
|
+
return session;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Start a council from a template
|
|
47
|
+
*/
|
|
48
|
+
async startFromTemplate(templateName, prompt, cwd) {
|
|
49
|
+
const template = COUNCIL_TEMPLATES[templateName];
|
|
50
|
+
if (!template) {
|
|
51
|
+
throw new Error(`Unknown council template: ${templateName}. Available: ${Object.keys(COUNCIL_TEMPLATES).join(', ')}`);
|
|
52
|
+
}
|
|
53
|
+
const members = template.members.map(m => ({
|
|
54
|
+
...m,
|
|
55
|
+
id: randomUUID(),
|
|
56
|
+
}));
|
|
57
|
+
const fullPrompt = template.promptPrefix
|
|
58
|
+
? `${template.promptPrefix}${prompt}`
|
|
59
|
+
: prompt;
|
|
60
|
+
return this.startCouncil(fullPrompt, {
|
|
61
|
+
mode: template.mode,
|
|
62
|
+
members,
|
|
63
|
+
tieBreaker: template.tieBreaker,
|
|
64
|
+
}, cwd);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get a council session
|
|
68
|
+
*/
|
|
69
|
+
getSession(sessionId) {
|
|
70
|
+
return this.sessions.get(sessionId);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get all sessions
|
|
74
|
+
*/
|
|
75
|
+
getAllSessions() {
|
|
76
|
+
return Array.from(this.sessions.values());
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Cancel a council session
|
|
80
|
+
*/
|
|
81
|
+
async cancelCouncil(sessionId) {
|
|
82
|
+
const session = this.sessions.get(sessionId);
|
|
83
|
+
if (!session)
|
|
84
|
+
return false;
|
|
85
|
+
session.status = 'cancelled';
|
|
86
|
+
session.completedAt = new Date();
|
|
87
|
+
session.updatedAt = new Date();
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get council statistics
|
|
92
|
+
*/
|
|
93
|
+
getStats() {
|
|
94
|
+
const all = Array.from(this.sessions.values());
|
|
95
|
+
return {
|
|
96
|
+
totalSessions: all.length,
|
|
97
|
+
activeSessions: all.filter(s => !['completed', 'failed', 'cancelled'].includes(s.status)).length,
|
|
98
|
+
completedSessions: all.filter(s => s.status === 'completed').length,
|
|
99
|
+
failedSessions: all.filter(s => s.status === 'failed').length,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Run the council lifecycle based on mode
|
|
104
|
+
*/
|
|
105
|
+
async runCouncilLifecycle(session, cwd) {
|
|
106
|
+
try {
|
|
107
|
+
switch (session.config.mode) {
|
|
108
|
+
case 'competitive':
|
|
109
|
+
await this.runCompetitive(session, cwd);
|
|
110
|
+
break;
|
|
111
|
+
case 'collaborative':
|
|
112
|
+
await this.runCollaborative(session, cwd);
|
|
113
|
+
break;
|
|
114
|
+
case 'consensus':
|
|
115
|
+
await this.runConsensus(session, cwd);
|
|
116
|
+
break;
|
|
117
|
+
case 'overseer':
|
|
118
|
+
await this.runOverseer(session, cwd);
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
session.status = 'failed';
|
|
124
|
+
session.error = error instanceof Error ? error.message : String(error);
|
|
125
|
+
session.completedAt = new Date();
|
|
126
|
+
session.updatedAt = new Date();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Competitive mode: All respond independently → cross-score → highest wins
|
|
131
|
+
*/
|
|
132
|
+
async runCompetitive(session, cwd) {
|
|
133
|
+
const { members } = session.config;
|
|
134
|
+
// Phase 1: All members deliberate independently
|
|
135
|
+
session.status = 'deliberating';
|
|
136
|
+
session.updatedAt = new Date();
|
|
137
|
+
const deliberationPromises = members.map(async (member) => {
|
|
138
|
+
const roleContext = member.role
|
|
139
|
+
? `You are acting as ${member.role}. `
|
|
140
|
+
: '';
|
|
141
|
+
const prompt = `${roleContext}${session.prompt}`;
|
|
142
|
+
try {
|
|
143
|
+
const task = await orchestrator.spawnAgent(prompt, member.agent, {
|
|
144
|
+
background: false,
|
|
145
|
+
priority: 'normal',
|
|
146
|
+
cwd,
|
|
147
|
+
});
|
|
148
|
+
const entry = {
|
|
149
|
+
memberId: member.id,
|
|
150
|
+
memberName: member.name,
|
|
151
|
+
response: task.result || '(no response)',
|
|
152
|
+
timestamp: new Date(),
|
|
153
|
+
};
|
|
154
|
+
session.deliberations.push(entry);
|
|
155
|
+
session.updatedAt = new Date();
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
session.deliberations.push({
|
|
159
|
+
memberId: member.id,
|
|
160
|
+
memberName: member.name,
|
|
161
|
+
response: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
162
|
+
timestamp: new Date(),
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
await Promise.allSettled(deliberationPromises);
|
|
167
|
+
if (session.status === 'cancelled')
|
|
168
|
+
return;
|
|
169
|
+
// Phase 2: Cross-scoring (LLM-based with heuristic fallback)
|
|
170
|
+
session.status = 'scoring';
|
|
171
|
+
session.updatedAt = new Date();
|
|
172
|
+
const scoringResults = await this.crossScoreAsync(session, cwd);
|
|
173
|
+
session.scores = scoringResults;
|
|
174
|
+
// Phase 3: Select winner
|
|
175
|
+
const winner = this.selectWinner(session);
|
|
176
|
+
if (winner) {
|
|
177
|
+
session.result = winner.response;
|
|
178
|
+
session.winnerId = winner.memberId;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
session.result = session.deliberations[0]?.response || 'No results';
|
|
182
|
+
}
|
|
183
|
+
session.status = 'completed';
|
|
184
|
+
session.completedAt = new Date();
|
|
185
|
+
session.updatedAt = new Date();
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Collaborative mode: Sequential building (A → B builds on A → C builds on B)
|
|
189
|
+
*/
|
|
190
|
+
async runCollaborative(session, cwd) {
|
|
191
|
+
const { members } = session.config;
|
|
192
|
+
session.status = 'building';
|
|
193
|
+
session.updatedAt = new Date();
|
|
194
|
+
let accumulatedContext = '';
|
|
195
|
+
for (const member of members) {
|
|
196
|
+
if (session.status === 'cancelled')
|
|
197
|
+
return;
|
|
198
|
+
const roleContext = member.role
|
|
199
|
+
? `You are acting as ${member.role}. `
|
|
200
|
+
: '';
|
|
201
|
+
let prompt;
|
|
202
|
+
if (accumulatedContext) {
|
|
203
|
+
prompt = `${roleContext}${session.prompt}\n\nPrevious contributions from the team:\n${accumulatedContext}\n\nBuild upon and improve the above contributions. Add your expertise and perspective.`;
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
prompt = `${roleContext}${session.prompt}\n\nYou are the first team member to respond. Provide a strong foundation.`;
|
|
207
|
+
}
|
|
208
|
+
try {
|
|
209
|
+
const task = await orchestrator.spawnAgent(prompt, member.agent, {
|
|
210
|
+
background: false,
|
|
211
|
+
priority: 'normal',
|
|
212
|
+
cwd,
|
|
213
|
+
});
|
|
214
|
+
const entry = {
|
|
215
|
+
memberId: member.id,
|
|
216
|
+
memberName: member.name,
|
|
217
|
+
response: task.result || '(no response)',
|
|
218
|
+
timestamp: new Date(),
|
|
219
|
+
};
|
|
220
|
+
session.deliberations.push(entry);
|
|
221
|
+
accumulatedContext += `\n\n--- ${member.name} (${member.role || 'general'}) ---\n${task.result || '(no response)'}`;
|
|
222
|
+
session.updatedAt = new Date();
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
session.deliberations.push({
|
|
226
|
+
memberId: member.id,
|
|
227
|
+
memberName: member.name,
|
|
228
|
+
response: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
229
|
+
timestamp: new Date(),
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
// The last response is the most refined version
|
|
234
|
+
const lastEntry = session.deliberations[session.deliberations.length - 1];
|
|
235
|
+
session.result = lastEntry?.response || 'No results';
|
|
236
|
+
session.winnerId = lastEntry?.memberId;
|
|
237
|
+
session.status = 'completed';
|
|
238
|
+
session.completedAt = new Date();
|
|
239
|
+
session.updatedAt = new Date();
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Consensus mode: Deliberate → vote → supermajority or repeat
|
|
243
|
+
*/
|
|
244
|
+
async runConsensus(session, cwd) {
|
|
245
|
+
const { members, maxRounds, consensusThreshold } = session.config;
|
|
246
|
+
for (let round = 1; round <= maxRounds; round++) {
|
|
247
|
+
session.round = round;
|
|
248
|
+
session.status = 'deliberating';
|
|
249
|
+
session.updatedAt = new Date();
|
|
250
|
+
// Phase 1: Deliberate
|
|
251
|
+
const previousContext = round > 1
|
|
252
|
+
? `\n\nPrevious round results:\n${session.deliberations.filter(d => d.votes !== undefined).map(d => `${d.memberName}: ${d.response.slice(0, 200)}... (${d.votes} votes)`).join('\n')}`
|
|
253
|
+
: '';
|
|
254
|
+
const deliberationPromises = members.map(async (member) => {
|
|
255
|
+
const roleContext = member.role ? `You are ${member.role}. ` : '';
|
|
256
|
+
const prompt = `${roleContext}${session.prompt}${previousContext}\n\nRound ${round}/${maxRounds}. Present your position concisely.`;
|
|
257
|
+
try {
|
|
258
|
+
const task = await orchestrator.spawnAgent(prompt, member.agent, {
|
|
259
|
+
background: false,
|
|
260
|
+
priority: 'normal',
|
|
261
|
+
cwd,
|
|
262
|
+
});
|
|
263
|
+
const entry = {
|
|
264
|
+
memberId: member.id,
|
|
265
|
+
memberName: member.name,
|
|
266
|
+
response: task.result || '(no response)',
|
|
267
|
+
timestamp: new Date(),
|
|
268
|
+
votes: 0,
|
|
269
|
+
};
|
|
270
|
+
session.deliberations.push(entry);
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
session.deliberations.push({
|
|
274
|
+
memberId: member.id,
|
|
275
|
+
memberName: member.name,
|
|
276
|
+
response: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
277
|
+
timestamp: new Date(),
|
|
278
|
+
votes: 0,
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
await Promise.allSettled(deliberationPromises);
|
|
283
|
+
session.updatedAt = new Date();
|
|
284
|
+
if (session.status === 'cancelled')
|
|
285
|
+
return;
|
|
286
|
+
// Phase 2: Vote
|
|
287
|
+
session.status = 'voting';
|
|
288
|
+
session.updatedAt = new Date();
|
|
289
|
+
// Each member votes for the best response (not their own)
|
|
290
|
+
const roundEntries = session.deliberations.filter(d => d.votes !== undefined).slice(-members.length);
|
|
291
|
+
for (const member of members) {
|
|
292
|
+
const candidates = roundEntries.filter(e => e.memberId !== member.id);
|
|
293
|
+
if (candidates.length === 0)
|
|
294
|
+
continue;
|
|
295
|
+
// Simple scoring: first candidate gets the vote (in a real system, the LLM would evaluate)
|
|
296
|
+
// For now, use round-robin voting based on member weight
|
|
297
|
+
const candidateIdx = members.indexOf(member) % candidates.length;
|
|
298
|
+
const selected = candidates[candidateIdx];
|
|
299
|
+
const vote = {
|
|
300
|
+
voterId: member.id,
|
|
301
|
+
candidateId: selected.memberId,
|
|
302
|
+
weight: member.weight,
|
|
303
|
+
};
|
|
304
|
+
session.votes.push(vote);
|
|
305
|
+
// Update vote count on the entry
|
|
306
|
+
selected.votes = (selected.votes || 0) + member.weight;
|
|
307
|
+
}
|
|
308
|
+
// Check for consensus
|
|
309
|
+
const totalWeight = members.reduce((sum, m) => sum + m.weight, 0);
|
|
310
|
+
const bestEntry = roundEntries.reduce((best, entry) => (!best || (entry.votes || 0) > (best.votes || 0) ? entry : best), null);
|
|
311
|
+
if (bestEntry && (bestEntry.votes || 0) / totalWeight >= consensusThreshold) {
|
|
312
|
+
// Consensus reached
|
|
313
|
+
session.result = bestEntry.response;
|
|
314
|
+
session.winnerId = bestEntry.memberId;
|
|
315
|
+
session.status = 'completed';
|
|
316
|
+
session.completedAt = new Date();
|
|
317
|
+
session.updatedAt = new Date();
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
// No consensus after max rounds - use tie-breaker
|
|
322
|
+
const finalResult = this.applyTieBreaker(session);
|
|
323
|
+
session.result = finalResult?.response || session.deliberations[session.deliberations.length - 1]?.response || 'No consensus reached';
|
|
324
|
+
session.winnerId = finalResult?.memberId;
|
|
325
|
+
session.status = 'completed';
|
|
326
|
+
session.completedAt = new Date();
|
|
327
|
+
session.updatedAt = new Date();
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Overseer mode: Lead decomposes (Swarm), reviews results, makes final call
|
|
331
|
+
*/
|
|
332
|
+
async runOverseer(session, cwd) {
|
|
333
|
+
const { members } = session.config;
|
|
334
|
+
const lead = members[0]; // First member is the overseer
|
|
335
|
+
if (!lead) {
|
|
336
|
+
throw new Error('Council needs at least one member for overseer mode');
|
|
337
|
+
}
|
|
338
|
+
// Phase 1: Overseer decomposes via swarm
|
|
339
|
+
session.status = 'deliberating';
|
|
340
|
+
session.updatedAt = new Date();
|
|
341
|
+
const swarmSession = await swarmManager.startSwarm(session.prompt, { decomposition: 'parallel', aggregation: 'structured' }, cwd);
|
|
342
|
+
// Wait for swarm to complete (poll at 2s intervals).
|
|
343
|
+
// Timeout scales with maxRounds (each round ≈ 5 min), minimum 5 minutes,
|
|
344
|
+
// so large councils get proportionally more time to finish.
|
|
345
|
+
const timeoutMs = Math.max(5 * 60_000, session.config.maxRounds * 5 * 60_000);
|
|
346
|
+
const pollIntervalMs = 2000;
|
|
347
|
+
const maxAttempts = Math.ceil(timeoutMs / pollIntervalMs);
|
|
348
|
+
let attempts = 0;
|
|
349
|
+
while (!['completed', 'failed', 'cancelled'].includes(swarmSession.status) && attempts < maxAttempts) {
|
|
350
|
+
await new Promise(resolve => setTimeout(resolve, pollIntervalMs));
|
|
351
|
+
attempts++;
|
|
352
|
+
}
|
|
353
|
+
if (swarmSession.status !== 'completed' || !swarmSession.result) {
|
|
354
|
+
throw new Error(`Swarm decomposition failed: ${swarmSession.error || 'timeout'}`);
|
|
355
|
+
}
|
|
356
|
+
// Record swarm results as deliberation
|
|
357
|
+
session.deliberations.push({
|
|
358
|
+
memberId: 'swarm',
|
|
359
|
+
memberName: 'Swarm Workers',
|
|
360
|
+
response: swarmSession.result,
|
|
361
|
+
timestamp: new Date(),
|
|
362
|
+
});
|
|
363
|
+
// Phase 2: Overseer reviews
|
|
364
|
+
session.status = 'reviewing';
|
|
365
|
+
session.updatedAt = new Date();
|
|
366
|
+
const reviewPrompt = `You are the overseer reviewing results from your team.
|
|
367
|
+
|
|
368
|
+
Original task: ${session.prompt}
|
|
369
|
+
|
|
370
|
+
Team results:
|
|
371
|
+
${swarmSession.result}
|
|
372
|
+
|
|
373
|
+
Review these results. Synthesize, correct errors, fill gaps, and produce the final authoritative response.`;
|
|
374
|
+
try {
|
|
375
|
+
const reviewTask = await orchestrator.spawnAgent(reviewPrompt, lead.agent, {
|
|
376
|
+
background: false,
|
|
377
|
+
priority: 'high',
|
|
378
|
+
cwd,
|
|
379
|
+
});
|
|
380
|
+
session.deliberations.push({
|
|
381
|
+
memberId: lead.id,
|
|
382
|
+
memberName: lead.name,
|
|
383
|
+
response: reviewTask.result || '(no review)',
|
|
384
|
+
timestamp: new Date(),
|
|
385
|
+
});
|
|
386
|
+
session.result = reviewTask.result || swarmSession.result;
|
|
387
|
+
session.winnerId = lead.id;
|
|
388
|
+
}
|
|
389
|
+
catch (error) {
|
|
390
|
+
// Fall back to swarm results
|
|
391
|
+
session.result = swarmSession.result;
|
|
392
|
+
session.error = `Overseer review failed: ${error instanceof Error ? error.message : String(error)}`;
|
|
393
|
+
}
|
|
394
|
+
session.status = 'completed';
|
|
395
|
+
session.completedAt = new Date();
|
|
396
|
+
session.updatedAt = new Date();
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* LLM-based cross-scoring: spawns a scoring agent to evaluate responses.
|
|
400
|
+
* Returns null if LLM scoring fails (caller should fall back to heuristic).
|
|
401
|
+
*/
|
|
402
|
+
async llmCrossScore(session, cwd) {
|
|
403
|
+
const entries = session.deliberations;
|
|
404
|
+
if (entries.length === 0)
|
|
405
|
+
return null;
|
|
406
|
+
const responseSummaries = entries.map((entry, i) => `--- Response ${i + 1} (by ${entry.memberName}) ---\n${entry.response}`).join('\n\n');
|
|
407
|
+
const scoringPrompt = `You are an impartial judge evaluating ${entries.length} responses to the following prompt:
|
|
408
|
+
|
|
409
|
+
"${session.prompt}"
|
|
410
|
+
|
|
411
|
+
Here are the responses:
|
|
412
|
+
|
|
413
|
+
${responseSummaries}
|
|
414
|
+
|
|
415
|
+
Evaluate each response on correctness, completeness, and quality. Return ONLY a JSON array of scores (0-100), one per response, in the same order they were presented. Example for 3 responses: [85, 72, 90]
|
|
416
|
+
|
|
417
|
+
Return ONLY the JSON array, no other text.`;
|
|
418
|
+
try {
|
|
419
|
+
const task = await orchestrator.spawnAgent(scoringPrompt, 'calliope', {
|
|
420
|
+
background: false,
|
|
421
|
+
priority: 'normal',
|
|
422
|
+
cwd,
|
|
423
|
+
});
|
|
424
|
+
const result = (task.result || '').trim();
|
|
425
|
+
// Extract JSON array from response (handle markdown fences, leading text, etc.)
|
|
426
|
+
const arrayMatch = result.match(/\[[\s\d,]+\]/);
|
|
427
|
+
if (!arrayMatch)
|
|
428
|
+
return null;
|
|
429
|
+
const parsed = JSON.parse(arrayMatch[0]);
|
|
430
|
+
if (!Array.isArray(parsed) || parsed.length !== entries.length)
|
|
431
|
+
return null;
|
|
432
|
+
// Validate all entries are numbers in range
|
|
433
|
+
const numericScores = parsed.map((v) => {
|
|
434
|
+
const n = Number(v);
|
|
435
|
+
if (isNaN(n))
|
|
436
|
+
throw new Error('non-numeric score');
|
|
437
|
+
return Math.max(0, Math.min(100, Math.round(n)));
|
|
438
|
+
});
|
|
439
|
+
const scores = entries.map((entry, i) => {
|
|
440
|
+
entry.score = numericScores[i];
|
|
441
|
+
return {
|
|
442
|
+
scorerId: 'llm',
|
|
443
|
+
targetId: entry.memberId,
|
|
444
|
+
score: numericScores[i],
|
|
445
|
+
weight: 1.0,
|
|
446
|
+
};
|
|
447
|
+
});
|
|
448
|
+
return scores;
|
|
449
|
+
}
|
|
450
|
+
catch {
|
|
451
|
+
return null;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Heuristic cross-scoring fallback: scores based on response structure.
|
|
456
|
+
*/
|
|
457
|
+
heuristicCrossScore(session) {
|
|
458
|
+
const scores = [];
|
|
459
|
+
const entries = session.deliberations;
|
|
460
|
+
for (const entry of entries) {
|
|
461
|
+
// Simple scoring based on response quality heuristics
|
|
462
|
+
let score = 50; // Base score
|
|
463
|
+
// Longer responses suggest more depth
|
|
464
|
+
if (entry.response.length > 500)
|
|
465
|
+
score += 15;
|
|
466
|
+
else if (entry.response.length > 200)
|
|
467
|
+
score += 10;
|
|
468
|
+
else if (entry.response.length < 50)
|
|
469
|
+
score -= 10;
|
|
470
|
+
// Structured responses (headers, lists, code blocks)
|
|
471
|
+
if (entry.response.includes('```'))
|
|
472
|
+
score += 10;
|
|
473
|
+
if (entry.response.match(/^[\-\*] /m))
|
|
474
|
+
score += 5;
|
|
475
|
+
if (entry.response.match(/^#+\s/m))
|
|
476
|
+
score += 5;
|
|
477
|
+
// Error responses get penalized
|
|
478
|
+
if (entry.response.startsWith('Error:'))
|
|
479
|
+
score = 10;
|
|
480
|
+
entry.score = Math.max(0, Math.min(100, score));
|
|
481
|
+
scores.push({
|
|
482
|
+
scorerId: 'system',
|
|
483
|
+
targetId: entry.memberId,
|
|
484
|
+
score: entry.score,
|
|
485
|
+
weight: 1.0,
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
return scores;
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Cross-score deliberations (sync fallback for non-competitive callers).
|
|
492
|
+
*/
|
|
493
|
+
crossScore(session) {
|
|
494
|
+
return this.heuristicCrossScore(session);
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Async cross-scoring: tries LLM evaluation first, falls back to heuristics.
|
|
498
|
+
*/
|
|
499
|
+
async crossScoreAsync(session, cwd) {
|
|
500
|
+
const llmScores = await this.llmCrossScore(session, cwd);
|
|
501
|
+
if (llmScores)
|
|
502
|
+
return llmScores;
|
|
503
|
+
return this.heuristicCrossScore(session);
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Select the winner based on scores
|
|
507
|
+
*/
|
|
508
|
+
selectWinner(session) {
|
|
509
|
+
if (session.deliberations.length === 0)
|
|
510
|
+
return null;
|
|
511
|
+
return session.deliberations.reduce((best, entry) => {
|
|
512
|
+
const memberWeight = session.config.members.find(m => m.id === entry.memberId)?.weight || 1.0;
|
|
513
|
+
const weightedScore = (entry.score || 0) * memberWeight;
|
|
514
|
+
const bestWeightedScore = (best.score || 0) * (session.config.members.find(m => m.id === best.memberId)?.weight || 1.0);
|
|
515
|
+
return weightedScore > bestWeightedScore ? entry : best;
|
|
516
|
+
});
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Apply tie-breaker when consensus fails
|
|
520
|
+
*/
|
|
521
|
+
applyTieBreaker(session) {
|
|
522
|
+
const { tieBreaker, designatedBreaker, members } = session.config;
|
|
523
|
+
const entries = session.deliberations;
|
|
524
|
+
switch (tieBreaker) {
|
|
525
|
+
case 'scoring': {
|
|
526
|
+
// Use cross-scoring
|
|
527
|
+
const scores = this.crossScore(session);
|
|
528
|
+
return this.selectWinner(session);
|
|
529
|
+
}
|
|
530
|
+
case 'designated': {
|
|
531
|
+
const designated = designatedBreaker || members[0]?.id;
|
|
532
|
+
return entries.find(e => e.memberId === designated) || entries[0] || null;
|
|
533
|
+
}
|
|
534
|
+
case 'voting': {
|
|
535
|
+
// Use existing votes
|
|
536
|
+
return entries.reduce((best, entry) => (!best || (entry.votes || 0) > (best.votes || 0) ? entry : best), null);
|
|
537
|
+
}
|
|
538
|
+
case 'user':
|
|
539
|
+
default:
|
|
540
|
+
// Can't resolve automatically - return highest scored
|
|
541
|
+
return this.selectWinner(session);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Format session status for display
|
|
546
|
+
*/
|
|
547
|
+
formatSessionStatus(session) {
|
|
548
|
+
const lines = [
|
|
549
|
+
`Coordination: ${session.id.slice(0, 8)}`,
|
|
550
|
+
`Mode: ${session.config.mode}`,
|
|
551
|
+
`Status: ${session.status}`,
|
|
552
|
+
`Agents: ${session.config.members.map(m => `${m.name} (${m.agent})`).join(', ')}`,
|
|
553
|
+
`Round: ${session.round}`,
|
|
554
|
+
];
|
|
555
|
+
if (session.deliberations.length > 0) {
|
|
556
|
+
lines.push(`Deliberations: ${session.deliberations.length}`);
|
|
557
|
+
for (const d of session.deliberations) {
|
|
558
|
+
const scoreStr = d.score !== undefined ? ` [score: ${d.score}]` : '';
|
|
559
|
+
const voteStr = d.votes !== undefined ? ` [votes: ${d.votes}]` : '';
|
|
560
|
+
const winner = session.winnerId === d.memberId ? ' \u2605' : '';
|
|
561
|
+
lines.push(` ${d.memberName}: ${d.response.slice(0, 60)}...${scoreStr}${voteStr}${winner}`);
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
if (session.error) {
|
|
565
|
+
lines.push(`Error: ${session.error}`);
|
|
566
|
+
}
|
|
567
|
+
return lines.join('\n');
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Get available templates
|
|
571
|
+
*/
|
|
572
|
+
getTemplates() {
|
|
573
|
+
return Object.values(COUNCIL_TEMPLATES);
|
|
574
|
+
}
|
|
575
|
+
/**
|
|
576
|
+
* Reset all sessions
|
|
577
|
+
*/
|
|
578
|
+
reset() {
|
|
579
|
+
this.sessions.clear();
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* Singleton council manager instance
|
|
584
|
+
*/
|
|
585
|
+
export const councilManager = new CouncilManager();
|
|
586
|
+
//# sourceMappingURL=council.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"council.js","sourceRoot":"","sources":["../../src/agents/council.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calliope Agents — Decomposer
|
|
3
|
+
*
|
|
4
|
+
* Decomposes a high-level task into subtasks using the overseer agent.
|
|
5
|
+
* Supports parallel, sequential, map-reduce, and pipeline strategies.
|
|
6
|
+
*/
|
|
7
|
+
import type { SubAgentType } from './types.js';
|
|
8
|
+
import type { DecompositionStrategy, SwarmSubtask } from './swarm-types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Build the decomposition prompt for the overseer
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildDecompositionPrompt(task: string, strategy: DecompositionStrategy, workerAgent: SubAgentType): string;
|
|
13
|
+
/**
|
|
14
|
+
* Parse the decomposition response from the overseer
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseDecompositionResponse(response: string, workerAgent: SubAgentType, maxRetries: number): SwarmSubtask[];
|
|
17
|
+
/**
|
|
18
|
+
* Resolve numeric dependency indices to actual subtask IDs
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveDependencies(subtasks: SwarmSubtask[]): SwarmSubtask[];
|
|
21
|
+
/**
|
|
22
|
+
* Get subtasks that are ready to execute (dependencies met)
|
|
23
|
+
*/
|
|
24
|
+
export declare function getReadySubtasks(subtasks: SwarmSubtask[]): SwarmSubtask[];
|
|
25
|
+
/**
|
|
26
|
+
* Check if all subtasks are done (completed or permanently failed)
|
|
27
|
+
*/
|
|
28
|
+
export declare function allSubtasksDone(subtasks: SwarmSubtask[]): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Check if any subtask permanently failed
|
|
31
|
+
*/
|
|
32
|
+
export declare function hasFailedSubtasks(subtasks: SwarmSubtask[]): boolean;
|
|
33
|
+
//# sourceMappingURL=decomposer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decomposer.d.ts","sourceRoot":"","sources":["../../src/agents/decomposer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAY5E;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,qBAAqB,EAC/B,WAAW,EAAE,YAAY,GACxB,MAAM,CAyCR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,MAAM,GACjB,YAAY,EAAE,CA4ChB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAa5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAWzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAKjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAInE"}
|