feed-the-machine 1.5.0 → 1.6.0
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/LICENSE +21 -21
- package/README.md +170 -170
- package/bin/generate-manifest.mjs +463 -463
- package/bin/install.mjs +491 -491
- package/docs/HOOKS.md +243 -243
- package/docs/INBOX.md +233 -233
- package/ftm/SKILL.md +122 -122
- package/ftm-audit/SKILL.md +623 -541
- package/ftm-audit/references/protocols/PROJECT-PATTERNS.md +91 -91
- package/ftm-audit/references/protocols/RUNTIME-WIRING.md +66 -66
- package/ftm-audit/references/protocols/WIRING-CONTRACTS.md +135 -135
- package/ftm-audit/references/strategies/AUTO-FIX-STRATEGIES.md +69 -69
- package/ftm-audit/references/templates/REPORT-FORMAT.md +96 -96
- package/ftm-audit/scripts/run-knip.sh +23 -23
- package/ftm-audit.yml +2 -2
- package/ftm-brainstorm/SKILL.md +498 -498
- package/ftm-brainstorm/evals/evals.json +100 -100
- package/ftm-brainstorm/evals/promptfoo.yaml +109 -109
- package/ftm-brainstorm/references/agent-prompts.md +224 -224
- package/ftm-brainstorm/references/plan-template.md +121 -121
- package/ftm-brainstorm.yml +2 -2
- package/ftm-browse/SKILL.md +454 -454
- package/ftm-browse/daemon/browser-manager.ts +206 -206
- package/ftm-browse/daemon/bun.lock +30 -30
- package/ftm-browse/daemon/cli.ts +347 -347
- package/ftm-browse/daemon/commands.ts +410 -410
- package/ftm-browse/daemon/main.ts +357 -357
- package/ftm-browse/daemon/package.json +17 -17
- package/ftm-browse/daemon/server.ts +189 -189
- package/ftm-browse/daemon/snapshot.ts +519 -519
- package/ftm-browse/daemon/tsconfig.json +22 -22
- package/ftm-browse.yml +4 -4
- package/ftm-capture/SKILL.md +370 -370
- package/ftm-capture.yml +4 -4
- package/ftm-codex-gate/SKILL.md +361 -361
- package/ftm-codex-gate.yml +2 -2
- package/ftm-config/SKILL.md +345 -345
- package/ftm-config.default.yml +82 -80
- package/ftm-config.yml +2 -2
- package/ftm-council/SKILL.md +416 -416
- package/ftm-council/references/prompts/CLAUDE-INVESTIGATION.md +60 -60
- package/ftm-council/references/prompts/CODEX-INVESTIGATION.md +58 -58
- package/ftm-council/references/prompts/GEMINI-INVESTIGATION.md +58 -58
- package/ftm-council/references/prompts/REBUTTAL-TEMPLATE.md +57 -57
- package/ftm-council/references/protocols/PREREQUISITES.md +47 -47
- package/ftm-council/references/protocols/STEP-0-FRAMING.md +46 -46
- package/ftm-council.yml +2 -2
- package/ftm-dashboard/SKILL.md +163 -163
- package/ftm-dashboard.yml +4 -4
- package/ftm-debug/SKILL.md +1037 -1037
- package/ftm-debug/references/phases/PHASE-0-INTAKE.md +58 -58
- package/ftm-debug/references/phases/PHASE-1-TRIAGE.md +46 -46
- package/ftm-debug/references/phases/PHASE-2-WAR-ROOM-AGENTS.md +279 -279
- package/ftm-debug/references/phases/PHASE-3-TO-6-EXECUTION.md +436 -436
- package/ftm-debug/references/protocols/BLACKBOARD.md +86 -86
- package/ftm-debug/references/protocols/EDGE-CASES.md +103 -103
- package/ftm-debug.yml +2 -2
- package/ftm-diagram/SKILL.md +277 -277
- package/ftm-diagram.yml +2 -2
- package/ftm-executor/SKILL.md +777 -767
- package/ftm-executor/references/STYLE-TEMPLATE.md +73 -73
- package/ftm-executor/references/phases/PHASE-0-VERIFICATION.md +62 -62
- package/ftm-executor/references/phases/PHASE-2-AGENT-ASSEMBLY.md +34 -34
- package/ftm-executor/references/phases/PHASE-3-WORKTREES.md +38 -38
- package/ftm-executor/references/phases/PHASE-4-5-AUDIT.md +72 -72
- package/ftm-executor/references/phases/PHASE-4-DISPATCH.md +66 -66
- package/ftm-executor/references/phases/PHASE-5-5-CODEX-GATE.md +73 -73
- package/ftm-executor/references/protocols/DOCUMENTATION-BOOTSTRAP.md +36 -36
- package/ftm-executor/references/protocols/MODEL-PROFILE.md +59 -44
- package/ftm-executor/references/protocols/PROGRESS-TRACKING.md +66 -66
- package/ftm-executor/runtime/ftm-runtime.mjs +252 -252
- package/ftm-executor/runtime/package.json +8 -8
- package/ftm-executor.yml +2 -2
- package/ftm-git/SKILL.md +441 -441
- package/ftm-git/evals/evals.json +26 -26
- package/ftm-git/evals/promptfoo.yaml +75 -75
- package/ftm-git/hooks/post-commit-experience.sh +92 -92
- package/ftm-git/references/patterns/SECRET-PATTERNS.md +104 -104
- package/ftm-git/references/protocols/REMEDIATION.md +139 -139
- package/ftm-git/scripts/pre-commit-secrets.sh +110 -110
- package/ftm-git.yml +2 -2
- package/ftm-inbox/backend/adapters/_retry.py +64 -64
- package/ftm-inbox/backend/adapters/base.py +230 -230
- package/ftm-inbox/backend/adapters/freshservice.py +104 -104
- package/ftm-inbox/backend/adapters/gmail.py +125 -125
- package/ftm-inbox/backend/adapters/jira.py +136 -136
- package/ftm-inbox/backend/adapters/registry.py +192 -192
- package/ftm-inbox/backend/adapters/slack.py +110 -110
- package/ftm-inbox/backend/db/connection.py +54 -54
- package/ftm-inbox/backend/db/schema.py +78 -78
- package/ftm-inbox/backend/executor/__init__.py +7 -7
- package/ftm-inbox/backend/executor/engine.py +149 -149
- package/ftm-inbox/backend/executor/step_runner.py +98 -98
- package/ftm-inbox/backend/main.py +103 -103
- package/ftm-inbox/backend/models/__init__.py +1 -1
- package/ftm-inbox/backend/models/unified_task.py +36 -36
- package/ftm-inbox/backend/planner/__init__.py +6 -6
- package/ftm-inbox/backend/planner/generator.py +127 -127
- package/ftm-inbox/backend/planner/schema.py +34 -34
- package/ftm-inbox/backend/requirements.txt +5 -5
- package/ftm-inbox/backend/routes/execute.py +186 -186
- package/ftm-inbox/backend/routes/health.py +52 -52
- package/ftm-inbox/backend/routes/inbox.py +68 -68
- package/ftm-inbox/backend/routes/plan.py +271 -271
- package/ftm-inbox/bin/launchagent.mjs +91 -91
- package/ftm-inbox/bin/setup.mjs +188 -188
- package/ftm-inbox/bin/start.sh +10 -10
- package/ftm-inbox/bin/status.sh +17 -17
- package/ftm-inbox/bin/stop.sh +8 -8
- package/ftm-inbox/config.example.yml +55 -55
- package/ftm-inbox/package-lock.json +2898 -2898
- package/ftm-inbox/package.json +26 -26
- package/ftm-inbox/postcss.config.js +6 -6
- package/ftm-inbox/src/app.css +199 -199
- package/ftm-inbox/src/app.html +18 -18
- package/ftm-inbox/src/lib/api.ts +166 -166
- package/ftm-inbox/src/lib/components/ExecutionLog.svelte +81 -81
- package/ftm-inbox/src/lib/components/InboxFeed.svelte +143 -143
- package/ftm-inbox/src/lib/components/PlanStep.svelte +271 -271
- package/ftm-inbox/src/lib/components/PlanView.svelte +206 -206
- package/ftm-inbox/src/lib/components/StreamPanel.svelte +99 -99
- package/ftm-inbox/src/lib/components/TaskCard.svelte +190 -190
- package/ftm-inbox/src/lib/components/ui/EmptyState.svelte +63 -63
- package/ftm-inbox/src/lib/components/ui/KawaiiCard.svelte +86 -86
- package/ftm-inbox/src/lib/components/ui/PillButton.svelte +106 -106
- package/ftm-inbox/src/lib/components/ui/StatusBadge.svelte +67 -67
- package/ftm-inbox/src/lib/components/ui/StreamDrawer.svelte +149 -149
- package/ftm-inbox/src/lib/components/ui/ThemeToggle.svelte +80 -80
- package/ftm-inbox/src/lib/theme.ts +47 -47
- package/ftm-inbox/src/routes/+layout.svelte +76 -76
- package/ftm-inbox/src/routes/+page.svelte +401 -401
- package/ftm-inbox/svelte.config.js +12 -12
- package/ftm-inbox/tailwind.config.ts +63 -63
- package/ftm-inbox/tsconfig.json +13 -13
- package/ftm-inbox/vite.config.ts +6 -6
- package/ftm-intent/SKILL.md +241 -241
- package/ftm-intent.yml +2 -2
- package/ftm-manifest.json +3794 -3794
- package/ftm-map/SKILL.md +291 -291
- package/ftm-map/scripts/db.py +712 -712
- package/ftm-map/scripts/index.py +415 -415
- package/ftm-map/scripts/parser.py +224 -224
- package/ftm-map/scripts/queries/go-tags.scm +20 -20
- package/ftm-map/scripts/queries/javascript-tags.scm +35 -35
- package/ftm-map/scripts/queries/python-tags.scm +31 -31
- package/ftm-map/scripts/queries/ruby-tags.scm +19 -19
- package/ftm-map/scripts/queries/rust-tags.scm +37 -37
- package/ftm-map/scripts/queries/typescript-tags.scm +41 -41
- package/ftm-map/scripts/query.py +301 -301
- package/ftm-map/scripts/ranker.py +377 -377
- package/ftm-map/scripts/requirements.txt +5 -5
- package/ftm-map/scripts/setup-hooks.sh +27 -27
- package/ftm-map/scripts/setup.sh +56 -56
- package/ftm-map/scripts/test_db.py +364 -364
- package/ftm-map/scripts/test_parser.py +174 -174
- package/ftm-map/scripts/test_query.py +183 -183
- package/ftm-map/scripts/test_ranker.py +199 -199
- package/ftm-map/scripts/views.py +591 -591
- package/ftm-map.yml +2 -2
- package/ftm-mind/SKILL.md +1943 -1943
- package/ftm-mind/evals/promptfoo.yaml +142 -142
- package/ftm-mind/references/blackboard-schema.md +328 -328
- package/ftm-mind/references/complexity-guide.md +110 -110
- package/ftm-mind/references/event-registry.md +319 -319
- package/ftm-mind/references/mcp-inventory.md +296 -296
- package/ftm-mind/references/protocols/COMPLEXITY-SIZING.md +72 -72
- package/ftm-mind/references/protocols/MCP-HEURISTICS.md +32 -32
- package/ftm-mind/references/protocols/PLAN-APPROVAL.md +80 -80
- package/ftm-mind/references/reflexion-protocol.md +249 -249
- package/ftm-mind/references/routing/SCENARIOS.md +22 -22
- package/ftm-mind/references/routing-scenarios.md +35 -35
- package/ftm-mind.yml +2 -2
- package/ftm-pause/SKILL.md +395 -395
- package/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md +186 -186
- package/ftm-pause/references/protocols/VALIDATION.md +80 -80
- package/ftm-pause.yml +2 -2
- package/ftm-researcher/SKILL.md +275 -275
- package/ftm-researcher/evals/agent-diversity.yaml +17 -17
- package/ftm-researcher/evals/synthesis-quality.yaml +12 -12
- package/ftm-researcher/evals/trigger-accuracy.yaml +39 -39
- package/ftm-researcher/references/adaptive-search.md +116 -116
- package/ftm-researcher/references/agent-prompts.md +193 -193
- package/ftm-researcher/references/council-integration.md +193 -193
- package/ftm-researcher/references/output-format.md +203 -203
- package/ftm-researcher/references/synthesis-pipeline.md +165 -165
- package/ftm-researcher/scripts/score_credibility.py +234 -234
- package/ftm-researcher/scripts/validate_research.py +92 -92
- package/ftm-researcher.yml +2 -2
- package/ftm-resume/SKILL.md +518 -518
- package/ftm-resume/references/protocols/VALIDATION.md +172 -172
- package/ftm-resume.yml +2 -2
- package/ftm-retro/SKILL.md +380 -380
- package/ftm-retro/references/protocols/SCORING-RUBRICS.md +89 -89
- package/ftm-retro/references/templates/REPORT-FORMAT.md +109 -109
- package/ftm-retro.yml +2 -2
- package/ftm-routine/SKILL.md +170 -170
- package/ftm-routine.yml +4 -4
- package/ftm-state/blackboard/capabilities.json +5 -5
- package/ftm-state/blackboard/capabilities.schema.json +27 -27
- package/ftm-state/blackboard/context.json +23 -23
- package/ftm-state/blackboard/experiences/index.json +9 -9
- package/ftm-state/blackboard/patterns.json +6 -6
- package/ftm-state/schemas/context.schema.json +130 -130
- package/ftm-state/schemas/experience-index.schema.json +77 -77
- package/ftm-state/schemas/experience.schema.json +78 -78
- package/ftm-state/schemas/patterns.schema.json +44 -44
- package/ftm-upgrade/SKILL.md +194 -194
- package/ftm-upgrade/scripts/check-version.sh +76 -76
- package/ftm-upgrade/scripts/upgrade.sh +143 -143
- package/ftm-upgrade.yml +2 -2
- package/ftm-verify.yml +2 -2
- package/ftm.yml +2 -2
- package/hooks/ftm-blackboard-enforcer.sh +93 -93
- package/hooks/ftm-discovery-reminder.sh +90 -90
- package/hooks/ftm-drafts-gate.sh +61 -61
- package/hooks/ftm-event-logger.mjs +107 -107
- package/hooks/ftm-map-autodetect.sh +79 -79
- package/hooks/ftm-pending-sync-check.sh +22 -22
- package/hooks/ftm-plan-gate.sh +92 -92
- package/hooks/ftm-post-commit-trigger.sh +57 -57
- package/hooks/settings-template.json +81 -81
- package/install.sh +363 -363
- package/package.json +84 -84
- package/uninstall.sh +25 -25
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
# ftm-researcher/evals/trigger-accuracy.yaml
|
|
2
|
-
description: Verify ftm-researcher triggers on research requests and not on brainstorm/debug/other
|
|
3
|
-
prompts:
|
|
4
|
-
- vars:
|
|
5
|
-
input: "research parallel agent architectures"
|
|
6
|
-
assert:
|
|
7
|
-
- type: contains
|
|
8
|
-
value: "ftm-researcher"
|
|
9
|
-
- vars:
|
|
10
|
-
input: "what's the state of the art on LLM fine-tuning"
|
|
11
|
-
assert:
|
|
12
|
-
- type: contains
|
|
13
|
-
value: "ftm-researcher"
|
|
14
|
-
- vars:
|
|
15
|
-
input: "find me examples of rate limiting in Go"
|
|
16
|
-
assert:
|
|
17
|
-
- type: contains
|
|
18
|
-
value: "ftm-researcher"
|
|
19
|
-
- vars:
|
|
20
|
-
input: "compare Redis vs Memcached"
|
|
21
|
-
assert:
|
|
22
|
-
- type: contains
|
|
23
|
-
value: "ftm-researcher"
|
|
24
|
-
# Should NOT trigger
|
|
25
|
-
- vars:
|
|
26
|
-
input: "I have an idea for a dashboard"
|
|
27
|
-
assert:
|
|
28
|
-
- type: not-contains
|
|
29
|
-
value: "ftm-researcher"
|
|
30
|
-
- vars:
|
|
31
|
-
input: "debug this flaky test"
|
|
32
|
-
assert:
|
|
33
|
-
- type: not-contains
|
|
34
|
-
value: "ftm-researcher"
|
|
35
|
-
- vars:
|
|
36
|
-
input: "help me brainstorm auth design"
|
|
37
|
-
assert:
|
|
38
|
-
- type: not-contains
|
|
39
|
-
value: "ftm-researcher"
|
|
1
|
+
# ftm-researcher/evals/trigger-accuracy.yaml
|
|
2
|
+
description: Verify ftm-researcher triggers on research requests and not on brainstorm/debug/other
|
|
3
|
+
prompts:
|
|
4
|
+
- vars:
|
|
5
|
+
input: "research parallel agent architectures"
|
|
6
|
+
assert:
|
|
7
|
+
- type: contains
|
|
8
|
+
value: "ftm-researcher"
|
|
9
|
+
- vars:
|
|
10
|
+
input: "what's the state of the art on LLM fine-tuning"
|
|
11
|
+
assert:
|
|
12
|
+
- type: contains
|
|
13
|
+
value: "ftm-researcher"
|
|
14
|
+
- vars:
|
|
15
|
+
input: "find me examples of rate limiting in Go"
|
|
16
|
+
assert:
|
|
17
|
+
- type: contains
|
|
18
|
+
value: "ftm-researcher"
|
|
19
|
+
- vars:
|
|
20
|
+
input: "compare Redis vs Memcached"
|
|
21
|
+
assert:
|
|
22
|
+
- type: contains
|
|
23
|
+
value: "ftm-researcher"
|
|
24
|
+
# Should NOT trigger
|
|
25
|
+
- vars:
|
|
26
|
+
input: "I have an idea for a dashboard"
|
|
27
|
+
assert:
|
|
28
|
+
- type: not-contains
|
|
29
|
+
value: "ftm-researcher"
|
|
30
|
+
- vars:
|
|
31
|
+
input: "debug this flaky test"
|
|
32
|
+
assert:
|
|
33
|
+
- type: not-contains
|
|
34
|
+
value: "ftm-researcher"
|
|
35
|
+
- vars:
|
|
36
|
+
input: "help me brainstorm auth design"
|
|
37
|
+
assert:
|
|
38
|
+
- type: not-contains
|
|
39
|
+
value: "ftm-researcher"
|
|
@@ -1,116 +1,116 @@
|
|
|
1
|
-
# Adaptive Search Protocol
|
|
2
|
-
|
|
3
|
-
Wave 1 → Wave 2 refinement for Deep mode research.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## When It Runs
|
|
8
|
-
|
|
9
|
-
Only in Deep mode. After wave 1 findings are normalized (Phase 1 of synthesis).
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## How It Works
|
|
14
|
-
|
|
15
|
-
The orchestrator analyzes wave 1 findings across 4 dimensions:
|
|
16
|
-
|
|
17
|
-
### 1. Coverage Analysis
|
|
18
|
-
|
|
19
|
-
For each original subtopic:
|
|
20
|
-
- **SATURATED** (3+ findings with diverse sources): Well-covered. Agent can be reassigned.
|
|
21
|
-
- **THIN** (1-2 findings): Partially covered. Same agent gets a refined query.
|
|
22
|
-
- **GAP** (0 findings): Not covered. Agent gets a broader query + alternative search terms.
|
|
23
|
-
|
|
24
|
-
### 2. Contradiction Detection
|
|
25
|
-
|
|
26
|
-
- Identify claims where 2+ agents directly contradict each other
|
|
27
|
-
- Mark these subtopics as CONTESTED — wave 2 agents prioritize resolution
|
|
28
|
-
- For each contradiction, note: which agents, which claims, what the disagreement is
|
|
29
|
-
|
|
30
|
-
### 3. Depth Opportunities
|
|
31
|
-
|
|
32
|
-
- Identify findings that mention specific tools, libraries, or approaches worth deeper investigation
|
|
33
|
-
- Generate drill-down queries for wave 2
|
|
34
|
-
- Prioritize depth opportunities that the user's response highlighted as important
|
|
35
|
-
|
|
36
|
-
### 4. Surprise Detection
|
|
37
|
-
|
|
38
|
-
- Identify findings that don't fit any original subtopic — unexpected angles
|
|
39
|
-
- Generate new subtopics to explore these surprises
|
|
40
|
-
- Surprises are high-value: they represent information the user didn't know to ask about
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Wave 2 Dispatch
|
|
45
|
-
|
|
46
|
-
Reassign agents based on analysis:
|
|
47
|
-
|
|
48
|
-
| Coverage Status | Action |
|
|
49
|
-
|---|---|
|
|
50
|
-
| SATURATED | Reassign agent to a GAP or CONTESTED area |
|
|
51
|
-
| THIN | Same agent, refined query with more specific terms |
|
|
52
|
-
| GAP | Agent gets broader query + alternative search terms |
|
|
53
|
-
| CONTESTED | Assign 2 agents (one per side) to find resolution evidence |
|
|
54
|
-
| SURPRISE | Assign the most relevant agent to explore the unexpected angle |
|
|
55
|
-
|
|
56
|
-
### Agent Reassignment Rules
|
|
57
|
-
|
|
58
|
-
1. Prefer reassigning agents whose original domain is closest to the gap
|
|
59
|
-
2. If a GAP exists in the academic domain, reassign Academic Scout even if it was SATURATED
|
|
60
|
-
3. Codebase Analyst is never reassigned — it always re-searches with refined local queries
|
|
61
|
-
4. If all subtopics are SATURATED, focus wave 2 on depth opportunities and surprises
|
|
62
|
-
|
|
63
|
-
### Context Injection for Wave 2
|
|
64
|
-
|
|
65
|
-
All wave 2 agents receive:
|
|
66
|
-
- Full wave 1 findings summary (so they don't re-search)
|
|
67
|
-
- Their specific wave 2 mission (gap-fill, deepen, resolve, or explore)
|
|
68
|
-
- Explicit instruction: "Build on wave 1, do not repeat it"
|
|
69
|
-
- The contradiction details if they're resolving a CONTESTED subtopic
|
|
70
|
-
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
## Merge Protocol
|
|
74
|
-
|
|
75
|
-
Wave 2 findings merge with wave 1 before entering the synthesis pipeline:
|
|
76
|
-
|
|
77
|
-
1. Wave 2 findings are added to the findings pool with `wave: 2` marker
|
|
78
|
-
2. The normalize phase (Phase 1) runs again across ALL findings (wave 1 + wave 2)
|
|
79
|
-
3. Deduplication groups wave 1 and wave 2 findings together — if wave 2 confirms a wave 1 finding, the agent_count increases
|
|
80
|
-
4. New wave 2 findings that weren't in wave 1 are added as new unique claims
|
|
81
|
-
5. The wave marker is preserved through synthesis for traceability
|
|
82
|
-
|
|
83
|
-
### Contradiction Resolution
|
|
84
|
-
|
|
85
|
-
When wave 2 agents were dispatched to resolve a CONTESTED subtopic:
|
|
86
|
-
- If wave 2 finds evidence strongly supporting one side, the contest is resolved
|
|
87
|
-
- If wave 2 finds evidence supporting both sides, the contest remains but with richer context
|
|
88
|
-
- The pairwise ranking (Phase 3) benefits from the additional evidence
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Orchestrator Analysis Template
|
|
93
|
-
|
|
94
|
-
After wave 1 normalization, the orchestrator produces this analysis:
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
COVERAGE ANALYSIS:
|
|
98
|
-
1. [subtopic]: SATURATED | THIN | GAP — [N findings, M source types]
|
|
99
|
-
2. [subtopic]: SATURATED | THIN | GAP — [N findings, M source types]
|
|
100
|
-
...
|
|
101
|
-
|
|
102
|
-
CONTRADICTIONS DETECTED:
|
|
103
|
-
- [Agent A] claims [X] vs [Agent B] claims [Y] — on subtopic [Z]
|
|
104
|
-
|
|
105
|
-
DEPTH OPPORTUNITIES:
|
|
106
|
-
- Finding [N] mentions [specific tool/approach] worth investigating
|
|
107
|
-
- Finding [M] suggests [unexpected constraint] that needs validation
|
|
108
|
-
|
|
109
|
-
SURPRISES:
|
|
110
|
-
- [Agent] found [unexpected finding] not covered by any original subtopic
|
|
111
|
-
|
|
112
|
-
WAVE 2 PLAN:
|
|
113
|
-
- [Agent]: [mission] — [refined query]
|
|
114
|
-
- [Agent]: [mission] — [refined query]
|
|
115
|
-
...
|
|
116
|
-
```
|
|
1
|
+
# Adaptive Search Protocol
|
|
2
|
+
|
|
3
|
+
Wave 1 → Wave 2 refinement for Deep mode research.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## When It Runs
|
|
8
|
+
|
|
9
|
+
Only in Deep mode. After wave 1 findings are normalized (Phase 1 of synthesis).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## How It Works
|
|
14
|
+
|
|
15
|
+
The orchestrator analyzes wave 1 findings across 4 dimensions:
|
|
16
|
+
|
|
17
|
+
### 1. Coverage Analysis
|
|
18
|
+
|
|
19
|
+
For each original subtopic:
|
|
20
|
+
- **SATURATED** (3+ findings with diverse sources): Well-covered. Agent can be reassigned.
|
|
21
|
+
- **THIN** (1-2 findings): Partially covered. Same agent gets a refined query.
|
|
22
|
+
- **GAP** (0 findings): Not covered. Agent gets a broader query + alternative search terms.
|
|
23
|
+
|
|
24
|
+
### 2. Contradiction Detection
|
|
25
|
+
|
|
26
|
+
- Identify claims where 2+ agents directly contradict each other
|
|
27
|
+
- Mark these subtopics as CONTESTED — wave 2 agents prioritize resolution
|
|
28
|
+
- For each contradiction, note: which agents, which claims, what the disagreement is
|
|
29
|
+
|
|
30
|
+
### 3. Depth Opportunities
|
|
31
|
+
|
|
32
|
+
- Identify findings that mention specific tools, libraries, or approaches worth deeper investigation
|
|
33
|
+
- Generate drill-down queries for wave 2
|
|
34
|
+
- Prioritize depth opportunities that the user's response highlighted as important
|
|
35
|
+
|
|
36
|
+
### 4. Surprise Detection
|
|
37
|
+
|
|
38
|
+
- Identify findings that don't fit any original subtopic — unexpected angles
|
|
39
|
+
- Generate new subtopics to explore these surprises
|
|
40
|
+
- Surprises are high-value: they represent information the user didn't know to ask about
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Wave 2 Dispatch
|
|
45
|
+
|
|
46
|
+
Reassign agents based on analysis:
|
|
47
|
+
|
|
48
|
+
| Coverage Status | Action |
|
|
49
|
+
|---|---|
|
|
50
|
+
| SATURATED | Reassign agent to a GAP or CONTESTED area |
|
|
51
|
+
| THIN | Same agent, refined query with more specific terms |
|
|
52
|
+
| GAP | Agent gets broader query + alternative search terms |
|
|
53
|
+
| CONTESTED | Assign 2 agents (one per side) to find resolution evidence |
|
|
54
|
+
| SURPRISE | Assign the most relevant agent to explore the unexpected angle |
|
|
55
|
+
|
|
56
|
+
### Agent Reassignment Rules
|
|
57
|
+
|
|
58
|
+
1. Prefer reassigning agents whose original domain is closest to the gap
|
|
59
|
+
2. If a GAP exists in the academic domain, reassign Academic Scout even if it was SATURATED
|
|
60
|
+
3. Codebase Analyst is never reassigned — it always re-searches with refined local queries
|
|
61
|
+
4. If all subtopics are SATURATED, focus wave 2 on depth opportunities and surprises
|
|
62
|
+
|
|
63
|
+
### Context Injection for Wave 2
|
|
64
|
+
|
|
65
|
+
All wave 2 agents receive:
|
|
66
|
+
- Full wave 1 findings summary (so they don't re-search)
|
|
67
|
+
- Their specific wave 2 mission (gap-fill, deepen, resolve, or explore)
|
|
68
|
+
- Explicit instruction: "Build on wave 1, do not repeat it"
|
|
69
|
+
- The contradiction details if they're resolving a CONTESTED subtopic
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Merge Protocol
|
|
74
|
+
|
|
75
|
+
Wave 2 findings merge with wave 1 before entering the synthesis pipeline:
|
|
76
|
+
|
|
77
|
+
1. Wave 2 findings are added to the findings pool with `wave: 2` marker
|
|
78
|
+
2. The normalize phase (Phase 1) runs again across ALL findings (wave 1 + wave 2)
|
|
79
|
+
3. Deduplication groups wave 1 and wave 2 findings together — if wave 2 confirms a wave 1 finding, the agent_count increases
|
|
80
|
+
4. New wave 2 findings that weren't in wave 1 are added as new unique claims
|
|
81
|
+
5. The wave marker is preserved through synthesis for traceability
|
|
82
|
+
|
|
83
|
+
### Contradiction Resolution
|
|
84
|
+
|
|
85
|
+
When wave 2 agents were dispatched to resolve a CONTESTED subtopic:
|
|
86
|
+
- If wave 2 finds evidence strongly supporting one side, the contest is resolved
|
|
87
|
+
- If wave 2 finds evidence supporting both sides, the contest remains but with richer context
|
|
88
|
+
- The pairwise ranking (Phase 3) benefits from the additional evidence
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Orchestrator Analysis Template
|
|
93
|
+
|
|
94
|
+
After wave 1 normalization, the orchestrator produces this analysis:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
COVERAGE ANALYSIS:
|
|
98
|
+
1. [subtopic]: SATURATED | THIN | GAP — [N findings, M source types]
|
|
99
|
+
2. [subtopic]: SATURATED | THIN | GAP — [N findings, M source types]
|
|
100
|
+
...
|
|
101
|
+
|
|
102
|
+
CONTRADICTIONS DETECTED:
|
|
103
|
+
- [Agent A] claims [X] vs [Agent B] claims [Y] — on subtopic [Z]
|
|
104
|
+
|
|
105
|
+
DEPTH OPPORTUNITIES:
|
|
106
|
+
- Finding [N] mentions [specific tool/approach] worth investigating
|
|
107
|
+
- Finding [M] suggests [unexpected constraint] that needs validation
|
|
108
|
+
|
|
109
|
+
SURPRISES:
|
|
110
|
+
- [Agent] found [unexpected finding] not covered by any original subtopic
|
|
111
|
+
|
|
112
|
+
WAVE 2 PLAN:
|
|
113
|
+
- [Agent]: [mission] — [refined query]
|
|
114
|
+
- [Agent]: [mission] — [refined query]
|
|
115
|
+
...
|
|
116
|
+
```
|