claude-mycelium 2.0.0 → 2.2.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/.agent-meta/_inhibitors.ndjson +1287 -0
- package/.agent-meta/_quarantine.json +45 -0
- package/.agent-meta/config.json +9 -0
- package/.agent-meta/tasks/_active.json +4 -0
- package/.agent-meta/tasks/task_0657b028-05a0-4b0c-b0b9-a4eae3d66cd9.json +168 -0
- package/.claude/memory.db +0 -0
- package/.claude/settings.local.json +4 -1
- package/README.md +85 -233
- package/SECURITY.md +145 -0
- package/dist/agent/task-worker.d.ts +11 -0
- package/dist/agent/task-worker.d.ts.map +1 -0
- package/dist/agent/task-worker.js +173 -0
- package/dist/agent/task-worker.js.map +1 -0
- package/dist/agent/worker.d.ts +8 -0
- package/dist/agent/worker.d.ts.map +1 -0
- package/dist/agent/worker.js +97 -0
- package/dist/agent/worker.js.map +1 -0
- package/dist/bin.d.ts +7 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +11 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/cost.d.ts +10 -0
- package/dist/cli/cost.d.ts.map +1 -0
- package/dist/cli/cost.js +163 -0
- package/dist/cli/cost.js.map +1 -0
- package/dist/cli/gc.d.ts +10 -0
- package/dist/cli/gc.d.ts.map +1 -0
- package/dist/cli/gc.js +108 -0
- package/dist/cli/gc.js.map +1 -0
- package/dist/cli/gradients.d.ts +10 -0
- package/dist/cli/gradients.d.ts.map +1 -0
- package/dist/cli/gradients.js +70 -0
- package/dist/cli/gradients.js.map +1 -0
- package/dist/cli/grow.d.ts +17 -0
- package/dist/cli/grow.d.ts.map +1 -0
- package/dist/cli/grow.js +373 -0
- package/dist/cli/grow.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +74 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +11 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +97 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/status.d.ts +10 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +191 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/coordination/file-locks.d.ts +42 -0
- package/dist/coordination/file-locks.d.ts.map +1 -0
- package/dist/coordination/file-locks.js +269 -0
- package/dist/coordination/file-locks.js.map +1 -0
- package/dist/coordination/index.d.ts +4 -0
- package/dist/coordination/index.d.ts.map +1 -1
- package/dist/coordination/index.js +4 -0
- package/dist/coordination/index.js.map +1 -1
- package/dist/coordination/inhibitors.d.ts +84 -0
- package/dist/coordination/inhibitors.d.ts.map +1 -0
- package/dist/coordination/inhibitors.js +290 -0
- package/dist/coordination/inhibitors.js.map +1 -0
- package/dist/coordination/process-manager.d.ts +73 -0
- package/dist/coordination/process-manager.d.ts.map +1 -0
- package/dist/coordination/process-manager.js +144 -0
- package/dist/coordination/process-manager.js.map +1 -0
- package/dist/core/agent-executor.d.ts +4 -1
- package/dist/core/agent-executor.d.ts.map +1 -1
- package/dist/core/agent-executor.js +38 -12
- package/dist/core/agent-executor.js.map +1 -1
- package/dist/core/change-applier.d.ts +29 -5
- package/dist/core/change-applier.d.ts.map +1 -1
- package/dist/core/change-applier.js +254 -24
- package/dist/core/change-applier.js.map +1 -1
- package/dist/core/signals/churn.d.ts.map +1 -1
- package/dist/core/signals/churn.js +6 -4
- package/dist/core/signals/churn.js.map +1 -1
- package/dist/core/signals/debt.d.ts.map +1 -1
- package/dist/core/signals/debt.js +4 -3
- package/dist/core/signals/debt.js.map +1 -1
- package/dist/cost/cost-tracker.d.ts.map +1 -1
- package/dist/cost/cost-tracker.js +2 -0
- package/dist/cost/cost-tracker.js.map +1 -1
- package/dist/gc/index.d.ts +17 -0
- package/dist/gc/index.d.ts.map +1 -0
- package/dist/gc/index.js +17 -0
- package/dist/gc/index.js.map +1 -0
- package/dist/gc/runner.d.ts +39 -0
- package/dist/gc/runner.d.ts.map +1 -0
- package/dist/gc/runner.js +277 -0
- package/dist/gc/runner.js.map +1 -0
- package/dist/gc/trace-compactor.d.ts +31 -0
- package/dist/gc/trace-compactor.d.ts.map +1 -0
- package/dist/gc/trace-compactor.js +162 -0
- package/dist/gc/trace-compactor.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/prompts/index.d.ts +2 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js.map +1 -1
- package/dist/quarantine/explorer.d.ts +65 -0
- package/dist/quarantine/explorer.d.ts.map +1 -0
- package/dist/quarantine/explorer.js +175 -0
- package/dist/quarantine/explorer.js.map +1 -0
- package/dist/quarantine/index.d.ts +7 -0
- package/dist/quarantine/index.d.ts.map +1 -0
- package/dist/quarantine/index.js +7 -0
- package/dist/quarantine/index.js.map +1 -0
- package/dist/quarantine/manager.d.ts +75 -0
- package/dist/quarantine/manager.d.ts.map +1 -0
- package/dist/quarantine/manager.js +275 -0
- package/dist/quarantine/manager.js.map +1 -0
- package/dist/task/acceptance.d.ts +29 -0
- package/dist/task/acceptance.d.ts.map +1 -0
- package/dist/task/acceptance.js +228 -0
- package/dist/task/acceptance.js.map +1 -0
- package/dist/task/agent-coordinator.d.ts +40 -0
- package/dist/task/agent-coordinator.d.ts.map +1 -0
- package/dist/task/agent-coordinator.js +168 -0
- package/dist/task/agent-coordinator.js.map +1 -0
- package/dist/task/executor.d.ts +37 -0
- package/dist/task/executor.d.ts.map +1 -0
- package/dist/task/executor.js +462 -0
- package/dist/task/executor.js.map +1 -0
- package/dist/task/index.d.ts +12 -0
- package/dist/task/index.d.ts.map +1 -0
- package/dist/task/index.js +12 -0
- package/dist/task/index.js.map +1 -0
- package/dist/task/planner.d.ts +21 -0
- package/dist/task/planner.d.ts.map +1 -0
- package/dist/task/planner.js +253 -0
- package/dist/task/planner.js.map +1 -0
- package/dist/task/storage.d.ts +46 -0
- package/dist/task/storage.d.ts.map +1 -0
- package/dist/task/storage.js +266 -0
- package/dist/task/storage.js.map +1 -0
- package/dist/trace/trace-event.d.ts +2 -18
- package/dist/trace/trace-event.d.ts.map +1 -1
- package/dist/trace/trace-event.js +6 -6
- package/dist/trace/trace-event.js.map +1 -1
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +54 -15
- package/dist/utils/file-utils.js.map +1 -1
- package/docs/PHASE5_IMPLEMENTATION.md +237 -0
- package/docs/PHASES-3-7-COMPLETE.md +177 -0
- package/docs/PHASE_4_COMPLETE.md +135 -0
- package/docs/PHASE_7_DELIVERABLES.md +295 -0
- package/docs/PHASE_7_IMPLEMENTATION.md +306 -0
- package/docs/PHASE_7_SUMMARY.txt +195 -0
- package/docs/RELEASE-NOTES-v2.1.md +213 -0
- package/docs/ROADMAP.md +194 -107
- package/docs/SECURITY-AUDIT.md +387 -0
- package/docs/SNAPSHOT.md +59 -32
- package/docs/implementation/phase3-summary.md +220 -0
- package/package.json +27 -11
- package/src/agent/task-worker.ts +196 -0
- package/src/agent/worker.ts +111 -0
- package/src/bin.ts +13 -0
- package/src/cli/cost.ts +210 -0
- package/src/cli/gc.ts +138 -0
- package/src/cli/gradients.ts +97 -0
- package/src/cli/grow.ts +416 -0
- package/src/cli/index.ts +81 -0
- package/src/cli/init.ts +139 -0
- package/src/cli/status.ts +218 -0
- package/src/coordination/file-locks.ts +300 -0
- package/src/coordination/index.ts +4 -0
- package/src/coordination/inhibitors.ts +345 -0
- package/src/coordination/process-manager.ts +199 -0
- package/src/core/agent-executor.ts +37 -8
- package/src/core/signals/churn.ts +8 -5
- package/src/core/signals/debt.ts +4 -3
- package/src/cost/cost-tracker.ts +2 -0
- package/src/gc/index.ts +17 -0
- package/src/gc/runner.ts +314 -0
- package/src/gc/trace-compactor.ts +187 -0
- package/src/index.ts +7 -1
- package/src/prompts/index.ts +2 -1
- package/src/quarantine/explorer.ts +234 -0
- package/src/quarantine/index.ts +7 -0
- package/src/quarantine/manager.ts +336 -0
- package/src/task/acceptance.ts +267 -0
- package/src/task/agent-coordinator.ts +220 -0
- package/src/task/executor.ts +543 -0
- package/src/task/index.ts +38 -0
- package/src/task/planner.ts +294 -0
- package/src/task/storage.ts +332 -0
- package/src/trace/trace-event.ts +7 -26
- package/src/utils/file-utils.ts +61 -15
- package/tests/cli/gc.test.ts +206 -0
- package/tests/cli/init.test.ts +181 -0
- package/tests/cli/status.test.ts +282 -0
- package/tests/coordination/file-locks.test.ts +196 -0
- package/tests/coordination/inhibitors.test.ts +459 -0
- package/tests/coordination/integration.test.ts +195 -0
- package/tests/coordination/process-manager.test.ts +165 -0
- package/tests/gc/trace-compactor.test.ts +245 -0
- package/tests/integration/phase-7.test.ts +145 -0
- package/tests/quarantine/explorer.test.ts +381 -0
- package/tests/quarantine/manager.test.ts +399 -0
- package/tests/security/command-injection.test.ts +88 -0
- package/tests/security/path-traversal.test.ts +103 -0
- package/tests/task/acceptance.test.ts +411 -0
- package/tests/task/executor.test.ts +421 -0
- package/tests/task/planner.test.ts +359 -0
- package/tests/trace/trace-event.test.ts +62 -20
- package/tsconfig.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -9,10 +9,11 @@
|
|
|
9
9
|
* - LLM: Anthropic integration
|
|
10
10
|
* - Trace: Event tracking
|
|
11
11
|
* - Cost: Token and cost tracking
|
|
12
|
+
* - Task: LLM-based task planning and execution (Phase 5)
|
|
12
13
|
* - Utils: Logging, file I/O, configuration
|
|
13
14
|
* - Types: Complete TypeScript interfaces
|
|
14
15
|
*
|
|
15
|
-
* Per initial-spec and Phase
|
|
16
|
+
* Per initial-spec, Phase 2 spec, and Phase 5 (Task System).
|
|
16
17
|
*
|
|
17
18
|
* Usage:
|
|
18
19
|
* ```typescript
|
|
@@ -22,6 +23,8 @@
|
|
|
22
23
|
* createAnthropicClient,
|
|
23
24
|
* recordTraceEvent,
|
|
24
25
|
* calculateCost,
|
|
26
|
+
* planTask,
|
|
27
|
+
* executeTask,
|
|
25
28
|
* } from 'claude-mycelium';
|
|
26
29
|
* ```
|
|
27
30
|
*/
|
|
@@ -30,6 +33,7 @@ export * from './coordination/index.js';
|
|
|
30
33
|
export { createAnthropicClient, type LLMRequest, type LLMResponse, LLMError } from './llm/index.js';
|
|
31
34
|
export * from './trace/index.js';
|
|
32
35
|
export * from './cost/index.js';
|
|
36
|
+
export * from './task/index.js';
|
|
33
37
|
export * from './utils/index.js';
|
|
34
38
|
export * from './types/index.js';
|
|
35
39
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AAIxC,OAAO,EAAE,qBAAqB,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpG,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,10 +9,11 @@
|
|
|
9
9
|
* - LLM: Anthropic integration
|
|
10
10
|
* - Trace: Event tracking
|
|
11
11
|
* - Cost: Token and cost tracking
|
|
12
|
+
* - Task: LLM-based task planning and execution (Phase 5)
|
|
12
13
|
* - Utils: Logging, file I/O, configuration
|
|
13
14
|
* - Types: Complete TypeScript interfaces
|
|
14
15
|
*
|
|
15
|
-
* Per initial-spec and Phase
|
|
16
|
+
* Per initial-spec, Phase 2 spec, and Phase 5 (Task System).
|
|
16
17
|
*
|
|
17
18
|
* Usage:
|
|
18
19
|
* ```typescript
|
|
@@ -22,6 +23,8 @@
|
|
|
22
23
|
* createAnthropicClient,
|
|
23
24
|
* recordTraceEvent,
|
|
24
25
|
* calculateCost,
|
|
26
|
+
* planTask,
|
|
27
|
+
* executeTask,
|
|
25
28
|
* } from 'claude-mycelium';
|
|
26
29
|
* ```
|
|
27
30
|
*/
|
|
@@ -33,6 +36,8 @@ export * from './coordination/index.js';
|
|
|
33
36
|
export { createAnthropicClient, LLMError } from './llm/index.js';
|
|
34
37
|
export * from './trace/index.js';
|
|
35
38
|
export * from './cost/index.js';
|
|
39
|
+
// Phase 5: Task System
|
|
40
|
+
export * from './task/index.js';
|
|
36
41
|
// Utilities
|
|
37
42
|
export * from './utils/index.js';
|
|
38
43
|
// Types
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,uBAAuB;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AAExC,sEAAsE;AACtE,2EAA2E;AAC3E,OAAO,EAAE,qBAAqB,EAAqC,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpG,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAEhC,uBAAuB;AACvB,cAAc,iBAAiB,CAAC;AAEhC,YAAY;AACZ,cAAc,kBAAkB,CAAC;AAEjC,QAAQ;AACR,cAAc,kBAAkB,CAAC"}
|
package/dist/prompts/index.d.ts
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* Mode-specific prompts for guiding agents.
|
|
6
6
|
* Each prompt provides context and instructions for a specific improvement mode.
|
|
7
7
|
*/
|
|
8
|
-
import type { Mode
|
|
8
|
+
import type { Mode } from '../types/index.js';
|
|
9
|
+
import type { GradientScore } from '../core/gradient.js';
|
|
9
10
|
export { generatePrompt as generateErrorReducerPrompt } from './error-reducer.js';
|
|
10
11
|
export { generatePrompt as generateComplexityReducerPrompt } from './complexity-reducer.js';
|
|
11
12
|
export { generatePrompt as generateDebtPayerPrompt } from './debt-payer.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,cAAc,IAAI,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,cAAc,IAAI,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,cAAc,IAAI,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,IAAI,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAkE3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKvC,OAAO,EAAE,cAAc,IAAI,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,cAAc,IAAI,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,cAAc,IAAI,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,IAAI,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAI7E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,IAAU,EACV,QAAuB;IAEvB,oBAAoB;IACpB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE9C,gBAAgB;IAChB,MAAM,OAAO,GAAkB;QAC7B,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,IAAI;KACL,CAAC;IAEF,gCAAgC;IAChC,IAAI,UAAkB,CAAC;IACvB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC9D,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACnE,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC3D,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC3D,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,iDAAiD;YACjD,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM;QACR,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,2CAA2C;IAC3C,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;oCAea,CAAC;IAEnC,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,UAAU;KACjB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAsB;IACjD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE5C,OAAO;sBACa,IAAI;;;gBAGV,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;sBACnB,QAAQ,CAAC,cAAc,CAAC,IAAI,MAAM,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;EAgB9F,OAAO;;;;6EAIoE,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Explorer Mode Spawning for Claude-Mycelium
|
|
3
|
+
* Adaptive probability based on system efficiency and centrality
|
|
4
|
+
* Reference: initial-spec §7, second-spec §10
|
|
5
|
+
*/
|
|
6
|
+
import type { Gradient, TraceEvent } from '../types/index.js';
|
|
7
|
+
export interface ExplorerConfig {
|
|
8
|
+
baseProbability: number;
|
|
9
|
+
maxProbability: number;
|
|
10
|
+
efficiencyThreshold: number;
|
|
11
|
+
lookbackRuns: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Determine if explorer should spawn based on system-wide efficiency
|
|
15
|
+
* Probability increases as efficiency drops
|
|
16
|
+
*
|
|
17
|
+
* Formula from spec:
|
|
18
|
+
* - efficiency >= 0.3 → 5% chance
|
|
19
|
+
* - efficiency = 0.15 → 15% chance
|
|
20
|
+
* - efficiency = 0.0 → 25% chance
|
|
21
|
+
*/
|
|
22
|
+
export declare function shouldSpawnExplorer(getRecentTraces: (limit: number) => Promise<TraceEvent[]>, config?: ExplorerConfig): Promise<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Select target for explorer mode
|
|
25
|
+
* Priority:
|
|
26
|
+
* 1. Quarantined files with explorer attempts remaining
|
|
27
|
+
* 2. Highest gradient non-quarantined file
|
|
28
|
+
*/
|
|
29
|
+
export declare function selectExplorerTarget(gradients: Gradient[], isFileLocked: (file: string) => Promise<boolean>): Promise<string | null>;
|
|
30
|
+
/**
|
|
31
|
+
* Calculate explorer spawn probability for a specific file
|
|
32
|
+
* Based on centrality: 0.1 × (1 + centrality)
|
|
33
|
+
*
|
|
34
|
+
* Examples from spec:
|
|
35
|
+
* - centrality 0.0 → 10% chance
|
|
36
|
+
* - centrality 0.5 → 15% chance
|
|
37
|
+
* - centrality 1.0 → 20% chance
|
|
38
|
+
*/
|
|
39
|
+
export declare function calculateExplorerProbability(centrality: number): number;
|
|
40
|
+
/**
|
|
41
|
+
* Check if explorer should be spawned for a specific file
|
|
42
|
+
* Uses centrality-based probability
|
|
43
|
+
*/
|
|
44
|
+
export declare function shouldSpawnExplorerForFile(centrality: number): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Execute explorer mode with different system prompt
|
|
47
|
+
* Explorer has:
|
|
48
|
+
* - Higher temperature (more creative)
|
|
49
|
+
* - Different instruction set (exploratory)
|
|
50
|
+
* - Less constrained by patterns
|
|
51
|
+
*/
|
|
52
|
+
export interface ExplorerPromptConfig {
|
|
53
|
+
temperature: number;
|
|
54
|
+
systemPromptAddition: string;
|
|
55
|
+
}
|
|
56
|
+
export declare const EXPLORER_PROMPT_CONFIG: ExplorerPromptConfig;
|
|
57
|
+
/**
|
|
58
|
+
* Get explorer mode configuration
|
|
59
|
+
*/
|
|
60
|
+
export declare function getExplorerConfig(): ExplorerPromptConfig;
|
|
61
|
+
/**
|
|
62
|
+
* Format explorer instructions for prompt
|
|
63
|
+
*/
|
|
64
|
+
export declare function formatExplorerInstructions(file: string, isQuarantined: boolean, explorerAttempts: number): string;
|
|
65
|
+
//# sourceMappingURL=explorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explorer.d.ts","sourceRoot":"","sources":["../../src/quarantine/explorer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQ9D,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AASD;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,EACzD,MAAM,GAAE,cAA+B,GACtC,OAAO,CAAC,OAAO,CAAC,CA0ClB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,QAAQ,EAAE,EACrB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAC/C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4CxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAGtE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,sBAAsB,EAAE,oBAsBpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,oBAAoB,CAExD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAqBR"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Explorer Mode Spawning for Claude-Mycelium
|
|
3
|
+
* Adaptive probability based on system efficiency and centrality
|
|
4
|
+
* Reference: initial-spec §7, second-spec §10
|
|
5
|
+
*/
|
|
6
|
+
import { logInfo, logDebug, logError } from '../utils/logger.js';
|
|
7
|
+
import { getQuarantinedFiles, canExplorerAttempt, recordExplorerAttempt, isQuarantined, } from './manager.js';
|
|
8
|
+
const DEFAULT_CONFIG = {
|
|
9
|
+
baseProbability: 0.05, // 5% base chance
|
|
10
|
+
maxProbability: 0.25, // 25% max chance
|
|
11
|
+
efficiencyThreshold: 0.3, // Below this, increase probability
|
|
12
|
+
lookbackRuns: 20,
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Determine if explorer should spawn based on system-wide efficiency
|
|
16
|
+
* Probability increases as efficiency drops
|
|
17
|
+
*
|
|
18
|
+
* Formula from spec:
|
|
19
|
+
* - efficiency >= 0.3 → 5% chance
|
|
20
|
+
* - efficiency = 0.15 → 15% chance
|
|
21
|
+
* - efficiency = 0.0 → 25% chance
|
|
22
|
+
*/
|
|
23
|
+
export async function shouldSpawnExplorer(getRecentTraces, config = DEFAULT_CONFIG) {
|
|
24
|
+
try {
|
|
25
|
+
const recentTraces = await getRecentTraces(config.lookbackRuns);
|
|
26
|
+
if (recentTraces.length < 10) {
|
|
27
|
+
// Not enough data
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
// Calculate system-wide efficiency
|
|
31
|
+
const efficiencies = recentTraces.map(t => t.efficiency || 0);
|
|
32
|
+
const avgEfficiency = efficiencies.reduce((a, b) => a + b, 0) / efficiencies.length;
|
|
33
|
+
// Probability increases as efficiency drops
|
|
34
|
+
const efficiencyFactor = Math.max(0, config.efficiencyThreshold - avgEfficiency) / config.efficiencyThreshold;
|
|
35
|
+
const probability = config.baseProbability +
|
|
36
|
+
(config.maxProbability - config.baseProbability) * efficiencyFactor;
|
|
37
|
+
const shouldSpawn = Math.random() < probability;
|
|
38
|
+
if (shouldSpawn) {
|
|
39
|
+
logInfo('Explorer spawn triggered', {
|
|
40
|
+
avgEfficiency: avgEfficiency.toFixed(3),
|
|
41
|
+
probability: (probability * 100).toFixed(1) + '%',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
logDebug('Explorer spawn skipped', {
|
|
46
|
+
avgEfficiency: avgEfficiency.toFixed(3),
|
|
47
|
+
probability: (probability * 100).toFixed(1) + '%',
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return shouldSpawn;
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
logError('Failed to check explorer spawn', error);
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Select target for explorer mode
|
|
59
|
+
* Priority:
|
|
60
|
+
* 1. Quarantined files with explorer attempts remaining
|
|
61
|
+
* 2. Highest gradient non-quarantined file
|
|
62
|
+
*/
|
|
63
|
+
export async function selectExplorerTarget(gradients, isFileLocked) {
|
|
64
|
+
try {
|
|
65
|
+
// First, try quarantined files that still have explorer attempts
|
|
66
|
+
const quarantined = await getQuarantinedFiles();
|
|
67
|
+
for (const entry of quarantined) {
|
|
68
|
+
if (await canExplorerAttempt(entry.file)) {
|
|
69
|
+
const locked = await isFileLocked(entry.file);
|
|
70
|
+
if (!locked) {
|
|
71
|
+
logInfo('Explorer targeting quarantined file', {
|
|
72
|
+
file: entry.file,
|
|
73
|
+
attempts: entry.explorer_attempts,
|
|
74
|
+
max: entry.max_explorer_attempts,
|
|
75
|
+
});
|
|
76
|
+
// Record the attempt
|
|
77
|
+
await recordExplorerAttempt(entry.file);
|
|
78
|
+
return entry.file;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Otherwise, pick highest gradient non-quarantined file
|
|
83
|
+
const sorted = [...gradients].sort((a, b) => b.score - a.score);
|
|
84
|
+
for (const g of sorted) {
|
|
85
|
+
const quarantinedCheck = await isQuarantined(g.file);
|
|
86
|
+
const lockedCheck = await isFileLocked(g.file);
|
|
87
|
+
if (!quarantinedCheck && !lockedCheck) {
|
|
88
|
+
logInfo('Explorer targeting high-gradient file', {
|
|
89
|
+
file: g.file,
|
|
90
|
+
gradient: g.score.toFixed(3),
|
|
91
|
+
});
|
|
92
|
+
return g.file;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
logError('Failed to select explorer target', error);
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Calculate explorer spawn probability for a specific file
|
|
104
|
+
* Based on centrality: 0.1 × (1 + centrality)
|
|
105
|
+
*
|
|
106
|
+
* Examples from spec:
|
|
107
|
+
* - centrality 0.0 → 10% chance
|
|
108
|
+
* - centrality 0.5 → 15% chance
|
|
109
|
+
* - centrality 1.0 → 20% chance
|
|
110
|
+
*/
|
|
111
|
+
export function calculateExplorerProbability(centrality) {
|
|
112
|
+
return 0.1 * (1 + centrality);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if explorer should be spawned for a specific file
|
|
116
|
+
* Uses centrality-based probability
|
|
117
|
+
*/
|
|
118
|
+
export function shouldSpawnExplorerForFile(centrality) {
|
|
119
|
+
const probability = calculateExplorerProbability(centrality);
|
|
120
|
+
return Math.random() < probability;
|
|
121
|
+
}
|
|
122
|
+
export const EXPLORER_PROMPT_CONFIG = {
|
|
123
|
+
temperature: 0.8, // More creative than normal modes
|
|
124
|
+
systemPromptAddition: `
|
|
125
|
+
## Explorer Mode
|
|
126
|
+
|
|
127
|
+
You are in EXPLORER mode. This file has resisted conventional approaches.
|
|
128
|
+
|
|
129
|
+
Your goal is to try creative, unconventional solutions that other modes might not consider:
|
|
130
|
+
- Radical refactoring
|
|
131
|
+
- Complete rewrites of problematic sections
|
|
132
|
+
- Alternative algorithms or patterns
|
|
133
|
+
- Breaking changes if necessary
|
|
134
|
+
|
|
135
|
+
Don't be constrained by existing patterns. Think outside the box.
|
|
136
|
+
|
|
137
|
+
Success criteria:
|
|
138
|
+
- Meaningful gradient improvement (efficiency > 0.2)
|
|
139
|
+
- CI passes
|
|
140
|
+
- Code quality maintained or improved
|
|
141
|
+
|
|
142
|
+
Be bold but careful.
|
|
143
|
+
`,
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Get explorer mode configuration
|
|
147
|
+
*/
|
|
148
|
+
export function getExplorerConfig() {
|
|
149
|
+
return { ...EXPLORER_PROMPT_CONFIG };
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Format explorer instructions for prompt
|
|
153
|
+
*/
|
|
154
|
+
export function formatExplorerInstructions(file, isQuarantined, explorerAttempts) {
|
|
155
|
+
if (isQuarantined) {
|
|
156
|
+
return `
|
|
157
|
+
## 🔬 Explorer Mode: Quarantined File
|
|
158
|
+
|
|
159
|
+
File: ${file}
|
|
160
|
+
Status: QUARANTINED (${explorerAttempts} explorer attempts made)
|
|
161
|
+
|
|
162
|
+
This file has failed ${explorerAttempts > 0 ? 'multiple' : 'many'} conventional improvement attempts.
|
|
163
|
+
Try creative, unconventional approaches. Don't be afraid to make bold changes.
|
|
164
|
+
`;
|
|
165
|
+
}
|
|
166
|
+
return `
|
|
167
|
+
## 🔬 Explorer Mode: Creative Exploration
|
|
168
|
+
|
|
169
|
+
File: ${file}
|
|
170
|
+
Status: Selected for exploratory improvement
|
|
171
|
+
|
|
172
|
+
Try innovative approaches that might not be obvious. Think creatively.
|
|
173
|
+
`;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=explorer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explorer.js","sourceRoot":"","sources":["../../src/quarantine/explorer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,GACd,MAAM,cAAc,CAAC;AAStB,MAAM,cAAc,GAAmB;IACrC,eAAe,EAAE,IAAI,EAAE,iBAAiB;IACxC,cAAc,EAAE,IAAI,EAAE,iBAAiB;IACvC,mBAAmB,EAAE,GAAG,EAAE,mCAAmC;IAC7D,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,eAAyD,EACzD,SAAyB,cAAc;IAEvC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAEhE,IAAI,YAAY,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC7B,kBAAkB;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mCAAmC;QACnC,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;QAEpF,4CAA4C;QAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,CAAC,EACD,MAAM,CAAC,mBAAmB,GAAG,aAAa,CAC3C,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAE/B,MAAM,WAAW,GACf,MAAM,CAAC,eAAe;YACtB,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,gBAAgB,CAAC;QAEtE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC;QAEhD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,0BAA0B,EAAE;gBAClC,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvC,WAAW,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;aAClD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,wBAAwB,EAAE;gBACjC,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvC,WAAW,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;aAClD,CAAC,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,gCAAgC,EAAE,KAAc,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAqB,EACrB,YAAgD;IAEhD,IAAI,CAAC;QACH,iEAAiE;QACjE,MAAM,WAAW,GAAG,MAAM,mBAAmB,EAAE,CAAC;QAEhD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,IAAI,MAAM,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,qCAAqC,EAAE;wBAC7C,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,QAAQ,EAAE,KAAK,CAAC,iBAAiB;wBACjC,GAAG,EAAE,KAAK,CAAC,qBAAqB;qBACjC,CAAC,CAAC;oBAEH,qBAAqB;oBACrB,MAAM,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAExC,OAAO,KAAK,CAAC,IAAI,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEhE,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAE/C,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtC,OAAO,CAAC,uCAAuC,EAAE;oBAC/C,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC7B,CAAC,CAAC;gBACH,OAAO,CAAC,CAAC,IAAI,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,kCAAkC,EAAE,KAAc,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAAC,UAAkB;IAC7D,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,UAAkB;IAC3D,MAAM,WAAW,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC;AACrC,CAAC;AAcD,MAAM,CAAC,MAAM,sBAAsB,GAAyB;IAC1D,WAAW,EAAE,GAAG,EAAE,kCAAkC;IACpD,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;CAmBvB;CACA,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,EAAE,GAAG,sBAAsB,EAAE,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAAY,EACZ,aAAsB,EACtB,gBAAwB;IAExB,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO;;;QAGH,IAAI;uBACW,gBAAgB;;uBAEhB,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;;CAEhE,CAAC;IACA,CAAC;IAED,OAAO;;;QAGD,IAAI;;;;CAIX,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/quarantine/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/quarantine/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quarantine Manager for Claude-Mycelium
|
|
3
|
+
* Full withdrawal mechanism when files resist all approaches
|
|
4
|
+
* Storage: .agent-meta/_quarantine.json
|
|
5
|
+
* Reference: initial-spec §6, second-spec §9
|
|
6
|
+
*/
|
|
7
|
+
import type { TraceEvent } from '../types/index.js';
|
|
8
|
+
export interface QuarantineEntry {
|
|
9
|
+
file: string;
|
|
10
|
+
quarantined_at: string;
|
|
11
|
+
reason: string;
|
|
12
|
+
attempts_before_quarantine: number;
|
|
13
|
+
explorer_attempts: number;
|
|
14
|
+
max_explorer_attempts: number;
|
|
15
|
+
}
|
|
16
|
+
export interface QuarantineState {
|
|
17
|
+
updated_at: string;
|
|
18
|
+
entries: QuarantineEntry[];
|
|
19
|
+
}
|
|
20
|
+
export interface QuarantineConfig {
|
|
21
|
+
minSamplesBeforeQuarantine: number;
|
|
22
|
+
efficiencyThreshold: number;
|
|
23
|
+
maxExplorerAttempts: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if a file should be quarantined
|
|
27
|
+
* Trigger: 10+ samples, all with efficiency < 0.02
|
|
28
|
+
*/
|
|
29
|
+
export declare function shouldQuarantine(file: string, getTracesForFile: (file: string) => Promise<TraceEvent[]>, config?: QuarantineConfig): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Add a file to quarantine
|
|
32
|
+
*/
|
|
33
|
+
export declare function addToQuarantine(entry: QuarantineEntry): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Check if a file is quarantined
|
|
36
|
+
*/
|
|
37
|
+
export declare function isQuarantined(file: string): Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* Get quarantine entry for a file
|
|
40
|
+
*/
|
|
41
|
+
export declare function getQuarantineEntry(file: string): Promise<QuarantineEntry | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Check if explorer can attempt quarantined file
|
|
44
|
+
*/
|
|
45
|
+
export declare function canExplorerAttempt(file: string): Promise<boolean>;
|
|
46
|
+
/**
|
|
47
|
+
* Record an explorer attempt on quarantined file
|
|
48
|
+
*/
|
|
49
|
+
export declare function recordExplorerAttempt(file: string): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Check if quarantine should be released after explorer success
|
|
52
|
+
* Only explorer mode with efficiency >= 0.2 can release
|
|
53
|
+
*/
|
|
54
|
+
export declare function checkQuarantineRelease(file: string, trace: TraceEvent): Promise<boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Remove a file from quarantine
|
|
57
|
+
*/
|
|
58
|
+
export declare function removeFromQuarantine(file: string): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Get all quarantined files
|
|
61
|
+
*/
|
|
62
|
+
export declare function getQuarantinedFiles(): Promise<QuarantineEntry[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Check and potentially quarantine a file after agent run
|
|
65
|
+
*/
|
|
66
|
+
export declare function checkAndQuarantine(file: string, getTracesForFile: (file: string) => Promise<TraceEvent[]>, config?: QuarantineConfig): Promise<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
* Get quarantine statistics
|
|
69
|
+
*/
|
|
70
|
+
export declare function getQuarantineStats(): Promise<{
|
|
71
|
+
total: number;
|
|
72
|
+
withExplorerAttempts: number;
|
|
73
|
+
exhausted: number;
|
|
74
|
+
}>;
|
|
75
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/quarantine/manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B,EAAE,MAAM,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B,EAAE,MAAM,CAAC;IACnC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAQD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,EACzD,MAAM,GAAE,gBAAiC,GACxC,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B3E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQlE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAQtF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUvE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBvE;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,OAAO,CAAC,CAsBlB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBtE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAQtE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,EACzD,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,OAAO,CAAC,CA+BlB;AAoCD;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAeD"}
|