@claude-flow/cli 3.32.34 → 3.32.36
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/.claude/helpers/helpers.manifest.json +5 -5
- package/.claude/helpers/hook-handler.cjs +30 -0
- package/.claude/helpers/intelligence.cjs +47 -4
- package/.claude/helpers/statusline.cjs +169 -6
- package/bin/cli.js +25 -1
- package/catalog-manifest.json +4 -4
- package/dist/src/commands/agent.js +50 -2
- package/dist/src/commands/doctor.js +159 -11
- package/dist/src/commands/hooks.js +63 -4
- package/dist/src/commands/mcp.js +1 -1
- package/dist/src/commands/memory-distill.js +1 -0
- package/dist/src/commands/metaharness.js +4 -0
- package/dist/src/commands/swarm.js +89 -5
- package/dist/src/config-adapter.js +1 -0
- package/dist/src/index.js +3 -2
- package/dist/src/init/executor.js +16 -10
- package/dist/src/init/helpers-generator.js +15 -4
- package/dist/src/init/statusline-generator.js +18 -5
- package/dist/src/mcp-server.d.ts +25 -0
- package/dist/src/mcp-server.js +57 -2
- package/dist/src/mcp-tools/agent-tools.js +10 -0
- package/dist/src/mcp-tools/embeddings-tools.js +51 -10
- package/dist/src/mcp-tools/hooks-tools.js +120 -60
- package/dist/src/mcp-tools/memory-tools.js +14 -2
- package/dist/src/mcp-tools/metaharness-tools.js +7 -0
- package/dist/src/mcp-tools/swarm-tools.d.ts +16 -0
- package/dist/src/mcp-tools/swarm-tools.js +172 -7
- package/dist/src/memory/memory-bridge.d.ts +2 -0
- package/dist/src/memory/memory-bridge.js +5 -1
- package/dist/src/memory/memory-initializer.d.ts +9 -1
- package/dist/src/memory/memory-initializer.js +66 -19
- package/dist/src/services/daemon-autostart.js +7 -4
- package/dist/src/services/flywheel-receipt.d.ts +3 -0
- package/dist/src/services/flywheel-receipt.js +1 -0
- package/dist/src/services/harness-flywheel-runtime.d.ts +6 -0
- package/dist/src/services/harness-flywheel-runtime.js +19 -19
- package/dist/src/services/harness-flywheel.d.ts +2 -0
- package/dist/src/services/harness-flywheel.js +1 -0
- package/dist/src/services/harness-project-anchor.d.ts +23 -0
- package/dist/src/services/harness-project-anchor.js +129 -0
- package/dist/src/services/learned-routing.d.ts +34 -0
- package/dist/src/services/learned-routing.js +85 -0
- package/dist/src/services/memory-distillation.d.ts +1 -0
- package/dist/src/services/memory-distillation.js +81 -5
- package/dist/src/services/pheromone-adaptive.d.ts +71 -0
- package/dist/src/services/pheromone-adaptive.js +214 -0
- package/dist/src/services/worker-daemon.js +5 -1
- package/node_modules/@claude-flow/codex/.agents/skills/github-automation/SKILL.md +32 -0
- package/node_modules/@claude-flow/codex/.agents/skills/performance-analysis/SKILL.md +32 -0
- package/node_modules/@claude-flow/codex/dist/dual-mode/cli.d.ts +4 -0
- package/node_modules/@claude-flow/codex/dist/dual-mode/cli.d.ts.map +1 -1
- package/node_modules/@claude-flow/codex/dist/dual-mode/cli.js +20 -1
- package/node_modules/@claude-flow/codex/dist/dual-mode/cli.js.map +1 -1
- package/node_modules/@claude-flow/codex/dist/dual-mode/orchestrator.d.ts +4 -0
- package/node_modules/@claude-flow/codex/dist/dual-mode/orchestrator.d.ts.map +1 -1
- package/node_modules/@claude-flow/codex/dist/dual-mode/orchestrator.js +18 -2
- package/node_modules/@claude-flow/codex/dist/dual-mode/orchestrator.js.map +1 -1
- package/node_modules/@claude-flow/codex/dist/generators/skill-md.d.ts +11 -5
- package/node_modules/@claude-flow/codex/dist/generators/skill-md.d.ts.map +1 -1
- package/node_modules/@claude-flow/codex/dist/generators/skill-md.js +84 -849
- package/node_modules/@claude-flow/codex/dist/generators/skill-md.js.map +1 -1
- package/node_modules/@claude-flow/codex/dist/initializer.d.ts.map +1 -1
- package/node_modules/@claude-flow/codex/dist/initializer.js +9 -13
- package/node_modules/@claude-flow/codex/dist/initializer.js.map +1 -1
- package/package.json +1 -1
- package/plugins/ruflo-metaharness/scripts/_harness.mjs +5 -1
- package/plugins/ruflo-metaharness/scripts/_invoke.mjs +12 -13
- package/plugins/ruflo-metaharness/scripts/mcp-scan.mjs +7 -8
- package/plugins/ruflo-metaharness/scripts/smoke.sh +58 -2
- package/plugins/ruflo-metaharness/scripts/test-similarity.mjs +38 -0
- package/plugins/ruflo-metaharness/scripts/threat-model.mjs +4 -1
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Turns raw `memory_entries` (what ruflo has been RECORDING for thousands of
|
|
5
5
|
* commits) into the structured intelligence substrate it has never populated:
|
|
6
|
-
* `episodes`
|
|
6
|
+
* `episodes` (+ `episode_embeddings`) → `reasoning_patterns`
|
|
7
|
+
* (+ `pattern_embeddings`) → `causal_edges`.
|
|
7
8
|
* This is the DISTILL/CONSOLIDATE half of the RETRIEVE→JUDGE→DISTILL→CONSOLIDATE
|
|
8
9
|
* pipeline; RETRIEVE (embeddings) was already populated, the rest was empty
|
|
9
10
|
* because the daemon's `consolidate` worker was a stub (see ADR-174 root cause).
|
|
@@ -28,7 +29,8 @@ import * as path from 'path';
|
|
|
28
29
|
import { distillTrajectoryContent, serialiseDistilled } from '../memory/structured-distill.js';
|
|
29
30
|
function emptyReport(dryRun, extra = {}) {
|
|
30
31
|
return {
|
|
31
|
-
processed: 0, episodes: 0,
|
|
32
|
+
processed: 0, episodes: 0, episodeEmbeddings: 0,
|
|
33
|
+
patterns: 0, patternEmbeddings: 0, causalEdges: 0,
|
|
32
34
|
promoted: 0, byProvenance: {}, namespaces: [], dryRun, spendUsd: 0, ...extra,
|
|
33
35
|
};
|
|
34
36
|
}
|
|
@@ -74,6 +76,20 @@ function judgeFeedback(content) {
|
|
|
74
76
|
catch { /* not JSON — treat as neutral */ }
|
|
75
77
|
return { success: true, reward: 0.5 };
|
|
76
78
|
}
|
|
79
|
+
/** Preserve an execution-observed lesson for Reflexion without presenting
|
|
80
|
+
* proxy/structural summaries as genuine self-critique. */
|
|
81
|
+
function feedbackCritique(content) {
|
|
82
|
+
try {
|
|
83
|
+
const value = JSON.parse(content);
|
|
84
|
+
for (const key of ['critique', 'error', 'message', 'summary', 'stderr']) {
|
|
85
|
+
if (typeof value[key] === 'string' && value[key].trim()) {
|
|
86
|
+
return value[key].trim().slice(0, 2000);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch { /* retain the original execution feedback below */ }
|
|
91
|
+
return `Observed execution feedback: ${content}`.slice(0, 2000);
|
|
92
|
+
}
|
|
77
93
|
/**
|
|
78
94
|
* Distill accumulated memory into the structured intelligence tables.
|
|
79
95
|
* Incremental, $0, transactional, provenance-tagged.
|
|
@@ -115,6 +131,17 @@ export async function runDistillation(options) {
|
|
|
115
131
|
db.close();
|
|
116
132
|
return { ...report, corrupt: true, skipped: 'memory DB reports corruption — run recoverMemoryDatabase first' };
|
|
117
133
|
}
|
|
134
|
+
// #2677 — older AgentDB stores may have episodes but no embedding table.
|
|
135
|
+
// Create the stable AgentDB v1 table only after the corruption gate, and
|
|
136
|
+
// never create it during a dry-run.
|
|
137
|
+
if (!dryRun && !tableExists('episode_embeddings')) {
|
|
138
|
+
db.exec(`CREATE TABLE episode_embeddings (
|
|
139
|
+
episode_id INTEGER PRIMARY KEY,
|
|
140
|
+
embedding BLOB NOT NULL,
|
|
141
|
+
embedding_model TEXT DEFAULT 'all-MiniLM-L6-v2',
|
|
142
|
+
FOREIGN KEY(episode_id) REFERENCES episodes(id) ON DELETE CASCADE
|
|
143
|
+
)`);
|
|
144
|
+
}
|
|
118
145
|
// M0: incremental cursor table (per namespace, by monotonic rowid).
|
|
119
146
|
db.exec(`CREATE TABLE IF NOT EXISTS distill_state (
|
|
120
147
|
namespace TEXT PRIMARY KEY,
|
|
@@ -128,10 +155,54 @@ export async function runDistillation(options) {
|
|
|
128
155
|
const getCursor = db.prepare('SELECT last_rowid FROM distill_state WHERE namespace = ?');
|
|
129
156
|
const setCursor = db.prepare('INSERT INTO distill_state (namespace, last_rowid, last_run_at) VALUES (?, ?, ?) ' +
|
|
130
157
|
'ON CONFLICT(namespace) DO UPDATE SET last_rowid = excluded.last_rowid, last_run_at = excluded.last_run_at');
|
|
131
|
-
const insEpisode = db.prepare('INSERT INTO episodes (session_id, task, input, output, reward, success, tags, metadata) VALUES (
|
|
158
|
+
const insEpisode = db.prepare('INSERT INTO episodes (session_id, task, input, output, critique, reward, success, tags, metadata) VALUES (?,?,?,?,?,?,?,?,?)');
|
|
159
|
+
const insEpisodeEmbedding = dryRun ? null : db.prepare('INSERT OR REPLACE INTO episode_embeddings (episode_id, embedding) VALUES (?, ?)');
|
|
132
160
|
const insPattern = db.prepare('INSERT INTO reasoning_patterns (task_type, approach, success_rate, uses, avg_reward, tags, metadata) VALUES (?,?,?,?,?,?,?)');
|
|
133
161
|
const insPatEmb = db.prepare('INSERT OR REPLACE INTO pattern_embeddings (pattern_id, embedding) VALUES (?, ?)');
|
|
134
162
|
const insEdge = db.prepare('INSERT INTO causal_edges (from_memory_id, from_memory_type, to_memory_id, to_memory_type, similarity, confidence, mechanism, metadata) VALUES (?,?,?,?,?,?,?,?)');
|
|
163
|
+
// Repair episodes produced by older distillation releases. Their metadata
|
|
164
|
+
// records sourceIds; if that provenance is absent, exact input matching is
|
|
165
|
+
// a conservative fallback. Never invent a vector or call a model.
|
|
166
|
+
if (!dryRun) {
|
|
167
|
+
const missingEpisodes = db.prepare(`
|
|
168
|
+
SELECT e.id, e.input, e.metadata
|
|
169
|
+
FROM episodes e
|
|
170
|
+
LEFT JOIN episode_embeddings ee ON ee.episode_id = e.id
|
|
171
|
+
WHERE ee.episode_id IS NULL AND e.session_id LIKE 'distill:%'
|
|
172
|
+
`).all();
|
|
173
|
+
const embeddingById = db.prepare('SELECT embedding FROM memory_entries WHERE id = ? AND embedding IS NOT NULL');
|
|
174
|
+
const embeddingByContent = db.prepare('SELECT embedding FROM memory_entries WHERE content = ? AND embedding IS NOT NULL LIMIT 1');
|
|
175
|
+
const missingCritiques = db.prepare(`
|
|
176
|
+
SELECT id, input FROM episodes
|
|
177
|
+
WHERE session_id LIKE 'distill:feedback%'
|
|
178
|
+
AND length(trim(coalesce(critique,''))) = 0
|
|
179
|
+
`).all();
|
|
180
|
+
const updateCritique = db.prepare('UPDATE episodes SET critique = ? WHERE id = ?');
|
|
181
|
+
const backfill = db.transaction(() => {
|
|
182
|
+
for (const episode of missingEpisodes) {
|
|
183
|
+
let sourceId;
|
|
184
|
+
try {
|
|
185
|
+
const metadata = JSON.parse(episode.metadata ?? '{}');
|
|
186
|
+
if (Array.isArray(metadata.sourceIds) && typeof metadata.sourceIds[0] === 'string') {
|
|
187
|
+
sourceId = metadata.sourceIds[0];
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch { /* use exact-content fallback */ }
|
|
191
|
+
let raw = sourceId ? embeddingById.get(sourceId)?.embedding : undefined;
|
|
192
|
+
if (!raw)
|
|
193
|
+
raw = embeddingByContent.get(episode.input ?? '')?.embedding;
|
|
194
|
+
const vector = parseEmbedding(raw);
|
|
195
|
+
if (!vector)
|
|
196
|
+
continue;
|
|
197
|
+
insEpisodeEmbedding.run(episode.id, Buffer.from(Float32Array.from(vector).buffer));
|
|
198
|
+
report.episodeEmbeddings++;
|
|
199
|
+
}
|
|
200
|
+
for (const episode of missingCritiques) {
|
|
201
|
+
updateCritique.run(feedbackCritique(episode.input ?? ''), episode.id);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
backfill();
|
|
205
|
+
}
|
|
135
206
|
let remaining = typeof maxEntries === 'number' ? maxEntries : Infinity;
|
|
136
207
|
for (const ns of nsList) {
|
|
137
208
|
if (remaining <= 0)
|
|
@@ -200,8 +271,14 @@ export async function runDistillation(options) {
|
|
|
200
271
|
sourceIds: cl.members.map(m => m.id).slice(0, 25),
|
|
201
272
|
paths: distilled.paths.slice(0, 10), namespace: ns, distilledBy: 'structural',
|
|
202
273
|
};
|
|
203
|
-
const epInfo = insEpisode.run(`distill:${ns}`, approach, cl.rep.content.slice(0, 2000), '', avgReward, promoted && cl.successCount > 0 ? 1 : 0, JSON.stringify(distilled.labels), JSON.stringify(provMeta));
|
|
274
|
+
const epInfo = insEpisode.run(`distill:${ns}`, approach, cl.rep.content.slice(0, 2000), '', cl.provenance === 'oracle:test-exec' ? feedbackCritique(cl.rep.content) : null, avgReward, promoted && cl.successCount > 0 ? 1 : 0, JSON.stringify(distilled.labels), JSON.stringify(provMeta));
|
|
204
275
|
report.episodes++;
|
|
276
|
+
const epId = Number(epInfo.lastInsertRowid);
|
|
277
|
+
// ReflexionMemory.retrieveRelevant() INNER JOINs this table.
|
|
278
|
+
// Reuse the source embedding so every distilled episode is
|
|
279
|
+
// immediately retrievable without an embedding-model call.
|
|
280
|
+
insEpisodeEmbedding.run(epId, Buffer.from(Float32Array.from(embVec).buffer));
|
|
281
|
+
report.episodeEmbeddings++;
|
|
205
282
|
const patInfo = insPattern.run(taskType, approach, successRate, uses, avgReward, JSON.stringify(distilled.labels), JSON.stringify(provMeta));
|
|
206
283
|
const patternId = Number(patInfo.lastInsertRowid);
|
|
207
284
|
report.patterns++;
|
|
@@ -217,7 +294,6 @@ export async function runDistillation(options) {
|
|
|
217
294
|
// rowids). Explicitly typed co-occurrence / proxy-tier / non-
|
|
218
295
|
// promoted: may rank retrieval, must NOT justify autonomous action
|
|
219
296
|
// (ADR-174 edge contract).
|
|
220
|
-
const epId = Number(epInfo.lastInsertRowid);
|
|
221
297
|
if (prevEpId !== null) {
|
|
222
298
|
insEdge.run(prevEpId, 'episode', epId, 'episode', 0, 0.3, 'co-occurrence', JSON.stringify({
|
|
223
299
|
edge_type: 'cooccurrence',
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR-330 — Adaptive Pheromone Swarm Consensus.
|
|
3
|
+
*
|
|
4
|
+
* This is a scheduling eligibility layer, not an agent terminator. It learns a
|
|
5
|
+
* bounded EMA signal per agent, compares agents against role-local baselines,
|
|
6
|
+
* and may suspend them from future dispatch. Coordinators and other protected
|
|
7
|
+
* roles remain eligible, quorum is never crossed, pruning per round is capped,
|
|
8
|
+
* and exploration periodically reactivates a suspended agent.
|
|
9
|
+
*/
|
|
10
|
+
export declare const APSC_SCHEMA = "ruflo.apsc-state/v1";
|
|
11
|
+
export interface ApscConfig {
|
|
12
|
+
alpha: number;
|
|
13
|
+
beta: number;
|
|
14
|
+
gamma: number;
|
|
15
|
+
emaDecay: number;
|
|
16
|
+
pruningFactor: number;
|
|
17
|
+
reactivationThreshold: number;
|
|
18
|
+
minActiveAgents: number;
|
|
19
|
+
minSamples: number;
|
|
20
|
+
maxSuspendFraction: number;
|
|
21
|
+
explorationRate: number;
|
|
22
|
+
dryRun: boolean;
|
|
23
|
+
protectedRoles: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface ApscAgentState {
|
|
26
|
+
agentId: string;
|
|
27
|
+
role: string;
|
|
28
|
+
status: 'active' | 'suspended';
|
|
29
|
+
samples: number;
|
|
30
|
+
rawScore: number;
|
|
31
|
+
normalizedScore: number;
|
|
32
|
+
emaScore: number;
|
|
33
|
+
lastUpdatedAt: string;
|
|
34
|
+
lastDecision?: 'keep' | 'would-suspend' | 'suspend' | 'reactivate' | 'explore';
|
|
35
|
+
}
|
|
36
|
+
export interface ApscState {
|
|
37
|
+
schemaVersion: typeof APSC_SCHEMA;
|
|
38
|
+
config: ApscConfig;
|
|
39
|
+
round: number;
|
|
40
|
+
threshold: number;
|
|
41
|
+
roleBaselines: Record<string, number>;
|
|
42
|
+
agents: Record<string, ApscAgentState>;
|
|
43
|
+
}
|
|
44
|
+
export interface ApscSignal {
|
|
45
|
+
agentId: string;
|
|
46
|
+
role: string;
|
|
47
|
+
taskSuccess: number;
|
|
48
|
+
normalizedLatency: number;
|
|
49
|
+
consensusAlignment: number;
|
|
50
|
+
}
|
|
51
|
+
export interface ApscDecision {
|
|
52
|
+
agentId: string;
|
|
53
|
+
score: number;
|
|
54
|
+
normalizedScore: number;
|
|
55
|
+
emaScore: number;
|
|
56
|
+
threshold: number;
|
|
57
|
+
action: 'keep' | 'would-suspend' | 'suspend' | 'reactivate' | 'explore';
|
|
58
|
+
applied: boolean;
|
|
59
|
+
reason: string;
|
|
60
|
+
activeAgents: number;
|
|
61
|
+
suspendedAgents: number;
|
|
62
|
+
}
|
|
63
|
+
export declare const DEFAULT_APSC_CONFIG: ApscConfig;
|
|
64
|
+
export declare function normalizeApscConfig(input?: Partial<ApscConfig>): ApscConfig;
|
|
65
|
+
export declare function createApscState(config?: Partial<ApscConfig>): ApscState;
|
|
66
|
+
export declare function recordApscSignal(current: ApscState, signal: ApscSignal, now?: number): {
|
|
67
|
+
state: ApscState;
|
|
68
|
+
decision: ApscDecision;
|
|
69
|
+
};
|
|
70
|
+
export declare function isApscAgentEligible(state: ApscState | undefined, agentId: string): boolean;
|
|
71
|
+
//# sourceMappingURL=pheromone-adaptive.d.ts.map
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR-330 — Adaptive Pheromone Swarm Consensus.
|
|
3
|
+
*
|
|
4
|
+
* This is a scheduling eligibility layer, not an agent terminator. It learns a
|
|
5
|
+
* bounded EMA signal per agent, compares agents against role-local baselines,
|
|
6
|
+
* and may suspend them from future dispatch. Coordinators and other protected
|
|
7
|
+
* roles remain eligible, quorum is never crossed, pruning per round is capped,
|
|
8
|
+
* and exploration periodically reactivates a suspended agent.
|
|
9
|
+
*/
|
|
10
|
+
export const APSC_SCHEMA = 'ruflo.apsc-state/v1';
|
|
11
|
+
export const DEFAULT_APSC_CONFIG = {
|
|
12
|
+
alpha: 0.5,
|
|
13
|
+
beta: 0.2,
|
|
14
|
+
gamma: 0.3,
|
|
15
|
+
emaDecay: 0.85,
|
|
16
|
+
pruningFactor: 0.6,
|
|
17
|
+
reactivationThreshold: 0.75,
|
|
18
|
+
minActiveAgents: 3,
|
|
19
|
+
minSamples: 3,
|
|
20
|
+
maxSuspendFraction: 0.25,
|
|
21
|
+
explorationRate: 0.1,
|
|
22
|
+
dryRun: true,
|
|
23
|
+
protectedRoles: ['coordinator', 'queen', 'security-architect', 'security-auditor'],
|
|
24
|
+
};
|
|
25
|
+
const unit = (value, field) => {
|
|
26
|
+
if (!Number.isFinite(value) || value < 0 || value > 1) {
|
|
27
|
+
throw new Error(`${field} must be a finite number in [0,1]`);
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
};
|
|
31
|
+
export function normalizeApscConfig(input = {}) {
|
|
32
|
+
const alpha = unit(input.alpha ?? DEFAULT_APSC_CONFIG.alpha, 'alpha');
|
|
33
|
+
const beta = unit(input.beta ?? DEFAULT_APSC_CONFIG.beta, 'beta');
|
|
34
|
+
const gamma = unit(input.gamma ?? DEFAULT_APSC_CONFIG.gamma, 'gamma');
|
|
35
|
+
const weight = alpha + beta + gamma;
|
|
36
|
+
if (weight <= 0)
|
|
37
|
+
throw new Error('at least one APSC score weight must be positive');
|
|
38
|
+
const minActiveAgents = input.minActiveAgents ?? DEFAULT_APSC_CONFIG.minActiveAgents;
|
|
39
|
+
const minSamples = input.minSamples ?? DEFAULT_APSC_CONFIG.minSamples;
|
|
40
|
+
if (!Number.isInteger(minActiveAgents) || minActiveAgents < 1 || minActiveAgents > 50) {
|
|
41
|
+
throw new Error('minActiveAgents must be an integer in [1,50]');
|
|
42
|
+
}
|
|
43
|
+
if (!Number.isInteger(minSamples) || minSamples < 1 || minSamples > 1000) {
|
|
44
|
+
throw new Error('minSamples must be an integer in [1,1000]');
|
|
45
|
+
}
|
|
46
|
+
const protectedRoles = [...new Set((input.protectedRoles ?? DEFAULT_APSC_CONFIG.protectedRoles)
|
|
47
|
+
.map((role) => role.trim().toLowerCase())
|
|
48
|
+
.filter(Boolean))].sort();
|
|
49
|
+
return {
|
|
50
|
+
alpha: alpha / weight,
|
|
51
|
+
beta: beta / weight,
|
|
52
|
+
gamma: gamma / weight,
|
|
53
|
+
emaDecay: unit(input.emaDecay ?? DEFAULT_APSC_CONFIG.emaDecay, 'emaDecay'),
|
|
54
|
+
pruningFactor: unit(input.pruningFactor ?? DEFAULT_APSC_CONFIG.pruningFactor, 'pruningFactor'),
|
|
55
|
+
reactivationThreshold: unit(input.reactivationThreshold ?? DEFAULT_APSC_CONFIG.reactivationThreshold, 'reactivationThreshold'),
|
|
56
|
+
minActiveAgents,
|
|
57
|
+
minSamples,
|
|
58
|
+
maxSuspendFraction: unit(input.maxSuspendFraction ?? DEFAULT_APSC_CONFIG.maxSuspendFraction, 'maxSuspendFraction'),
|
|
59
|
+
explorationRate: unit(input.explorationRate ?? DEFAULT_APSC_CONFIG.explorationRate, 'explorationRate'),
|
|
60
|
+
dryRun: input.dryRun ?? DEFAULT_APSC_CONFIG.dryRun,
|
|
61
|
+
protectedRoles,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export function createApscState(config = {}) {
|
|
65
|
+
return {
|
|
66
|
+
schemaVersion: APSC_SCHEMA,
|
|
67
|
+
config: normalizeApscConfig(config),
|
|
68
|
+
round: 0,
|
|
69
|
+
threshold: 0.5,
|
|
70
|
+
roleBaselines: {},
|
|
71
|
+
agents: {},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function counts(state) {
|
|
75
|
+
const values = Object.values(state.agents);
|
|
76
|
+
return {
|
|
77
|
+
activeAgents: values.filter((agent) => agent.status === 'active').length,
|
|
78
|
+
suspendedAgents: values.filter((agent) => agent.status === 'suspended').length,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function protectedRole(state, role) {
|
|
82
|
+
return state.config.protectedRoles.includes(role.toLowerCase());
|
|
83
|
+
}
|
|
84
|
+
export function recordApscSignal(current, signal, now = Date.now()) {
|
|
85
|
+
if (!/^[A-Za-z0-9._:-]{1,160}$/.test(signal.agentId))
|
|
86
|
+
throw new Error('invalid APSC agentId');
|
|
87
|
+
if (!/^[A-Za-z0-9._:-]{1,100}$/.test(signal.role))
|
|
88
|
+
throw new Error('invalid APSC role');
|
|
89
|
+
const config = normalizeApscConfig(current.config);
|
|
90
|
+
const state = {
|
|
91
|
+
...current,
|
|
92
|
+
config,
|
|
93
|
+
round: current.round + 1,
|
|
94
|
+
roleBaselines: { ...current.roleBaselines },
|
|
95
|
+
agents: Object.fromEntries(Object.entries(current.agents).map(([id, agent]) => [id, { ...agent }])),
|
|
96
|
+
};
|
|
97
|
+
const success = unit(signal.taskSuccess, 'taskSuccess');
|
|
98
|
+
const latency = unit(signal.normalizedLatency, 'normalizedLatency');
|
|
99
|
+
const alignment = unit(signal.consensusAlignment, 'consensusAlignment');
|
|
100
|
+
const rawScore = config.alpha * success + config.beta * (1 - latency) + config.gamma * alignment;
|
|
101
|
+
const role = signal.role.toLowerCase();
|
|
102
|
+
// Compare against peers in the same role, excluding the current agent.
|
|
103
|
+
// Letting an agent update its own baseline before normalization caused a
|
|
104
|
+
// persistently weak agent to redefine "normal" downward and reactivate
|
|
105
|
+
// without any recovery.
|
|
106
|
+
const rolePeers = Object.values(state.agents)
|
|
107
|
+
.filter((item) => item.agentId !== signal.agentId && item.role === role && item.samples > 0);
|
|
108
|
+
const peerMean = rolePeers.length
|
|
109
|
+
? rolePeers.reduce((sum, item) => sum + item.rawScore, 0) / rolePeers.length
|
|
110
|
+
: undefined;
|
|
111
|
+
const priorRoleBaseline = peerMean ?? state.roleBaselines[role] ?? rawScore;
|
|
112
|
+
// A common absolute scale unfairly prunes coordinators/specialists whose
|
|
113
|
+
// observable task signal differs by role. Center each score on its role EMA.
|
|
114
|
+
const normalizedScore = Math.max(0, Math.min(1, 0.5 + rawScore - priorRoleBaseline));
|
|
115
|
+
const previous = state.agents[signal.agentId];
|
|
116
|
+
const agent = {
|
|
117
|
+
agentId: signal.agentId,
|
|
118
|
+
role,
|
|
119
|
+
status: previous?.status ?? 'active',
|
|
120
|
+
samples: (previous?.samples ?? 0) + 1,
|
|
121
|
+
rawScore,
|
|
122
|
+
normalizedScore,
|
|
123
|
+
emaScore: previous
|
|
124
|
+
? config.emaDecay * previous.emaScore + (1 - config.emaDecay) * normalizedScore
|
|
125
|
+
: normalizedScore,
|
|
126
|
+
lastUpdatedAt: new Date(now).toISOString(),
|
|
127
|
+
lastDecision: 'keep',
|
|
128
|
+
};
|
|
129
|
+
state.agents[signal.agentId] = agent;
|
|
130
|
+
const allRoleAgents = Object.values(state.agents).filter((item) => item.role === role);
|
|
131
|
+
const observedRoleMean = allRoleAgents.reduce((sum, item) => sum + item.rawScore, 0) / allRoleAgents.length;
|
|
132
|
+
state.roleBaselines[role] = config.emaDecay * priorRoleBaseline + (1 - config.emaDecay) * observedRoleMean;
|
|
133
|
+
const mature = Object.values(state.agents).filter((item) => item.samples >= config.minSamples);
|
|
134
|
+
const observedMean = mature.length
|
|
135
|
+
? mature.reduce((sum, item) => sum + item.emaScore, 0) / mature.length
|
|
136
|
+
: state.threshold;
|
|
137
|
+
state.threshold = config.emaDecay * state.threshold + (1 - config.emaDecay) * observedMean;
|
|
138
|
+
let action = 'keep';
|
|
139
|
+
let applied = false;
|
|
140
|
+
let reason = agent.samples < config.minSamples
|
|
141
|
+
? `warm-up ${agent.samples}/${config.minSamples}`
|
|
142
|
+
: 'within adaptive envelope';
|
|
143
|
+
if (agent.status === 'suspended' && agent.emaScore >= state.threshold * config.reactivationThreshold) {
|
|
144
|
+
action = 'reactivate';
|
|
145
|
+
reason = 'score recovered above reactivation threshold';
|
|
146
|
+
if (!config.dryRun) {
|
|
147
|
+
agent.status = 'active';
|
|
148
|
+
applied = true;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
else if (agent.status === 'active'
|
|
152
|
+
&& agent.samples >= config.minSamples
|
|
153
|
+
&& !protectedRole(state, agent.role)
|
|
154
|
+
&& agent.emaScore < state.threshold * config.pruningFactor) {
|
|
155
|
+
const before = counts(state);
|
|
156
|
+
const maxThisRound = Math.floor(before.activeAgents * config.maxSuspendFraction);
|
|
157
|
+
const quorumCapacity = Math.max(0, before.activeAgents - config.minActiveAgents);
|
|
158
|
+
if (maxThisRound < 1 || quorumCapacity < 1) {
|
|
159
|
+
reason = 'safety floor prevents suspension';
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
action = config.dryRun ? 'would-suspend' : 'suspend';
|
|
163
|
+
reason = 'score below adaptive pruning threshold';
|
|
164
|
+
if (!config.dryRun) {
|
|
165
|
+
agent.status = 'suspended';
|
|
166
|
+
applied = true;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else if (protectedRole(state, agent.role)) {
|
|
171
|
+
reason = 'protected role remains eligible';
|
|
172
|
+
}
|
|
173
|
+
// Deterministic exploration: at a bounded cadence, reactivate the stalest
|
|
174
|
+
// suspended agent so a transient failure cannot permanently exclude it.
|
|
175
|
+
if (!config.dryRun && config.explorationRate > 0) {
|
|
176
|
+
const cadence = Math.max(1, Math.round(1 / config.explorationRate));
|
|
177
|
+
if (state.round % cadence === 0) {
|
|
178
|
+
const explorer = Object.values(state.agents)
|
|
179
|
+
.filter((item) => item.status === 'suspended')
|
|
180
|
+
.sort((a, b) => a.lastUpdatedAt.localeCompare(b.lastUpdatedAt) || a.agentId.localeCompare(b.agentId))[0];
|
|
181
|
+
if (explorer) {
|
|
182
|
+
explorer.status = 'active';
|
|
183
|
+
explorer.lastDecision = 'explore';
|
|
184
|
+
if (explorer.agentId === agent.agentId) {
|
|
185
|
+
action = 'explore';
|
|
186
|
+
applied = true;
|
|
187
|
+
reason = 'bounded exploration reactivation';
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
agent.lastDecision = action;
|
|
193
|
+
const after = counts(state);
|
|
194
|
+
return {
|
|
195
|
+
state,
|
|
196
|
+
decision: {
|
|
197
|
+
agentId: agent.agentId,
|
|
198
|
+
score: rawScore,
|
|
199
|
+
normalizedScore,
|
|
200
|
+
emaScore: agent.emaScore,
|
|
201
|
+
threshold: state.threshold,
|
|
202
|
+
action,
|
|
203
|
+
applied,
|
|
204
|
+
reason,
|
|
205
|
+
...after,
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
export function isApscAgentEligible(state, agentId) {
|
|
210
|
+
if (!state || state.config.dryRun)
|
|
211
|
+
return true;
|
|
212
|
+
return state.agents[agentId]?.status !== 'suspended';
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=pheromone-adaptive.js.map
|
|
@@ -70,7 +70,10 @@ const NO_DISTILL_ENV = 'RUFLO_DAEMON_NO_DISTILL';
|
|
|
70
70
|
// half a day; set RUFLO_DAEMON_TTL_SECS=0 (or `--ttl 0`) to opt out. Idle
|
|
71
71
|
// shutdown is opt-in (0 = disabled) since a legitimately quiet daemon is not a leak.
|
|
72
72
|
const DEFAULT_DAEMON_TTL_MS = 12 * 60 * 60 * 1000;
|
|
73
|
-
|
|
73
|
+
// #2834 — an auto-started daemon must not remain alive for the full 12h TTL
|
|
74
|
+
// after its workspace goes idle. Explicit 0 via config/env still disables the
|
|
75
|
+
// idle cap for operators who intentionally want a resident daemon.
|
|
76
|
+
const DEFAULT_DAEMON_IDLE_SHUTDOWN_MS = 30 * 60 * 1000;
|
|
74
77
|
/**
|
|
75
78
|
* Read a non-negative seconds value from an env var and return it as ms.
|
|
76
79
|
* Unlike the `parseInt(x) || default` idiom used elsewhere, an explicit `0`
|
|
@@ -1542,6 +1545,7 @@ export class WorkerDaemon extends EventEmitter {
|
|
|
1542
1545
|
// instead of becoming their own distinct pattern.
|
|
1543
1546
|
duplicatesRemoved: Math.max(0, report.processed - report.patterns),
|
|
1544
1547
|
episodes: report.episodes,
|
|
1548
|
+
episodeEmbeddings: report.episodeEmbeddings,
|
|
1545
1549
|
patternEmbeddings: report.patternEmbeddings,
|
|
1546
1550
|
causalEdges: report.causalEdges,
|
|
1547
1551
|
promoted: report.promoted,
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github-automation
|
|
3
|
+
description: >
|
|
4
|
+
GitHub workflow automation for issues, pull requests, CI, and releases.
|
|
5
|
+
Use when: repository hosting actions are explicitly requested.
|
|
6
|
+
Skip when: local git operations are sufficient or publishing is unauthorized.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# GitHub Automation Skill
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
Automate GitHub workflows while keeping external writes explicit and scoped.
|
|
13
|
+
|
|
14
|
+
## Commands
|
|
15
|
+
|
|
16
|
+
### Create Pull Request
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
gh pr create --draft
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Inspect Checks
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
gh pr checks
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Best Practices
|
|
29
|
+
1. Confirm repository and branch before external writes
|
|
30
|
+
2. Inspect CI evidence before changing workflows
|
|
31
|
+
3. Never publish, merge, or close without authorization
|
|
32
|
+
4. Report the exact resulting URL or identifier
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: performance-analysis
|
|
3
|
+
description: >
|
|
4
|
+
Performance profiling, benchmarking, and optimization.
|
|
5
|
+
Use when: slow operations, regressions, memory pressure, release validation.
|
|
6
|
+
Skip when: early prototyping, documentation, configuration-only changes.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Performance Analysis Skill
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
Measure before optimizing and preserve reproducible benchmark evidence.
|
|
13
|
+
|
|
14
|
+
## Commands
|
|
15
|
+
|
|
16
|
+
### Run Benchmark Suite
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npx @claude-flow/cli performance benchmark --suite all
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Profile Code
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npx @claude-flow/cli performance profile --target ./src
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Best Practices
|
|
29
|
+
1. Capture a baseline before changing code
|
|
30
|
+
2. Use identical inputs and environments
|
|
31
|
+
3. Report variance, not only the fastest result
|
|
32
|
+
4. Re-run correctness tests after optimization
|
|
@@ -8,6 +8,10 @@ import { WorkerConfig } from './orchestrator.js';
|
|
|
8
8
|
* Create the dual-mode command
|
|
9
9
|
*/
|
|
10
10
|
export declare function createDualModeCommand(): Command;
|
|
11
|
+
export declare function loadWorkerConfig(configPath: string, cwd?: string): Promise<{
|
|
12
|
+
workers: WorkerConfig[];
|
|
13
|
+
taskContext?: string;
|
|
14
|
+
}>;
|
|
11
15
|
/**
|
|
12
16
|
* Parse `--worker "<platform>:<role>:<prompt>"` specs into WorkerConfig[].
|
|
13
17
|
* Splits on the first two `:` so the prompt may itself contain colons.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/dual-mode/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/dual-mode/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,EAGL,YAAY,EAIb,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAQ/C;AAuJD,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,GAAG,SAAgB,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAe5D;AAyDD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAG,YAAY,EAAE,CAqCnF"}
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { Command } from 'commander';
|
|
6
6
|
import chalk from 'chalk';
|
|
7
|
+
import { readFile } from 'node:fs/promises';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { pathToFileURL } from 'node:url';
|
|
7
10
|
import { DualModeOrchestrator, CollaborationTemplates, loadSwarmAutomationConfig, } from './orchestrator.js';
|
|
8
11
|
import { CodexWorktreeCoordinator } from '../worktrees/coordinator.js';
|
|
9
12
|
/**
|
|
@@ -88,7 +91,7 @@ function createRunCommand() {
|
|
|
88
91
|
taskContext = `Template: ${templateName}, Task: ${task}`;
|
|
89
92
|
}
|
|
90
93
|
else if (options.config) {
|
|
91
|
-
const configData = await
|
|
94
|
+
const configData = await loadWorkerConfig(options.config, process.cwd());
|
|
92
95
|
workers = configData.workers;
|
|
93
96
|
taskContext = configData.taskContext || options.task || 'Collaborative task';
|
|
94
97
|
}
|
|
@@ -144,6 +147,22 @@ function createRunCommand() {
|
|
|
144
147
|
printResults(result);
|
|
145
148
|
});
|
|
146
149
|
}
|
|
150
|
+
export async function loadWorkerConfig(configPath, cwd = process.cwd()) {
|
|
151
|
+
const absolute = path.resolve(cwd, configPath);
|
|
152
|
+
const loaded = path.extname(absolute).toLowerCase() === '.json'
|
|
153
|
+
? JSON.parse(await readFile(absolute, 'utf8'))
|
|
154
|
+
: await import(pathToFileURL(absolute).href);
|
|
155
|
+
const config = loaded.default && typeof loaded.default === 'object'
|
|
156
|
+
? loaded.default
|
|
157
|
+
: loaded;
|
|
158
|
+
if (!Array.isArray(config.workers)) {
|
|
159
|
+
throw new Error(`Dual-mode config must export a workers array: ${absolute}`);
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
workers: config.workers,
|
|
163
|
+
...(typeof config.taskContext === 'string' ? { taskContext: config.taskContext } : {}),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
147
166
|
/**
|
|
148
167
|
* List available templates
|
|
149
168
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/dual-mode/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/dual-mode/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,8 @@ export interface WorkerResult {
|
|
|
40
40
|
}
|
|
41
41
|
export interface DualModeConfig {
|
|
42
42
|
projectPath: string;
|
|
43
|
+
/** One database shared by bootstrap, collection, policy, and worker CLIs. */
|
|
44
|
+
memoryDbPath?: string;
|
|
43
45
|
maxConcurrent?: number;
|
|
44
46
|
sharedNamespace?: string;
|
|
45
47
|
timeout?: number;
|
|
@@ -108,6 +110,8 @@ export declare class DualModeOrchestrator extends EventEmitter {
|
|
|
108
110
|
private defaultWorkerEnvelope;
|
|
109
111
|
private resolveWorkerEnvelope;
|
|
110
112
|
private workerEnvironment;
|
|
113
|
+
/** Keep every Ruflo subprocess on the same collaboration database. */
|
|
114
|
+
private sharedEnvironment;
|
|
111
115
|
/**
|
|
112
116
|
* Stop all running workers
|
|
113
117
|
*/
|