opencode-agentic-engine 0.1.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 -0
- package/README.md +499 -0
- package/dist/agents/agent-runtime.d.ts +51 -0
- package/dist/agents/agent-runtime.d.ts.map +1 -0
- package/dist/agents/coordinator.d.ts +84 -0
- package/dist/agents/coordinator.d.ts.map +1 -0
- package/dist/agents/orchestrator.d.ts +56 -0
- package/dist/agents/orchestrator.d.ts.map +1 -0
- package/dist/agents/role-registry.d.ts +71 -0
- package/dist/agents/role-registry.d.ts.map +1 -0
- package/dist/core/agent-loop.d.ts +39 -0
- package/dist/core/agent-loop.d.ts.map +1 -0
- package/dist/core/config.d.ts +76 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/error-analyzer.d.ts +37 -0
- package/dist/core/error-analyzer.d.ts.map +1 -0
- package/dist/core/executor.d.ts +73 -0
- package/dist/core/executor.d.ts.map +1 -0
- package/dist/core/git.d.ts +38 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/intent-parser.d.ts +26 -0
- package/dist/core/intent-parser.d.ts.map +1 -0
- package/dist/core/llm.d.ts +90 -0
- package/dist/core/llm.d.ts.map +1 -0
- package/dist/core/model-registry.d.ts +65 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/navigator.d.ts +28 -0
- package/dist/core/navigator.d.ts.map +1 -0
- package/dist/core/parallel.d.ts +63 -0
- package/dist/core/parallel.d.ts.map +1 -0
- package/dist/core/planner.d.ts +19 -0
- package/dist/core/planner.d.ts.map +1 -0
- package/dist/core/task-classifier.d.ts +24 -0
- package/dist/core/task-classifier.d.ts.map +1 -0
- package/dist/core/tech-debt-scorer.d.ts +20 -0
- package/dist/core/tech-debt-scorer.d.ts.map +1 -0
- package/dist/core/verifier.d.ts +43 -0
- package/dist/core/verifier.d.ts.map +1 -0
- package/dist/drift/checkpoints.d.ts +23 -0
- package/dist/drift/checkpoints.d.ts.map +1 -0
- package/dist/drift/context-compressor.d.ts +28 -0
- package/dist/drift/context-compressor.d.ts.map +1 -0
- package/dist/drift/dependency-tracker.d.ts +75 -0
- package/dist/drift/dependency-tracker.d.ts.map +1 -0
- package/dist/drift/hallucination-guard.d.ts +25 -0
- package/dist/drift/hallucination-guard.d.ts.map +1 -0
- package/dist/drift/pattern-discovery.d.ts +138 -0
- package/dist/drift/pattern-discovery.d.ts.map +1 -0
- package/dist/evaluation/live-evaluator.d.ts +71 -0
- package/dist/evaluation/live-evaluator.d.ts.map +1 -0
- package/dist/evolution/continuous-evolution.d.ts +92 -0
- package/dist/evolution/continuous-evolution.d.ts.map +1 -0
- package/dist/evolution/self-evolver.d.ts +85 -0
- package/dist/evolution/self-evolver.d.ts.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22069 -0
- package/dist/index.js.map +7 -0
- package/dist/memory/episodic-store.d.ts +40 -0
- package/dist/memory/episodic-store.d.ts.map +1 -0
- package/dist/memory/local-embedder.d.ts +17 -0
- package/dist/memory/local-embedder.d.ts.map +1 -0
- package/dist/memory/persistence.d.ts +17 -0
- package/dist/memory/persistence.d.ts.map +1 -0
- package/dist/memory/schema-version.d.ts +29 -0
- package/dist/memory/schema-version.d.ts.map +1 -0
- package/dist/memory/session-store.d.ts +50 -0
- package/dist/memory/session-store.d.ts.map +1 -0
- package/dist/memory/skill-format.d.ts +51 -0
- package/dist/memory/skill-format.d.ts.map +1 -0
- package/dist/memory/skill-store.d.ts +30 -0
- package/dist/memory/skill-store.d.ts.map +1 -0
- package/dist/memory/skill-training.d.ts +37 -0
- package/dist/memory/skill-training.d.ts.map +1 -0
- package/dist/memory/vector-store.d.ts +67 -0
- package/dist/memory/vector-store.d.ts.map +1 -0
- package/dist/observability/dashboard.d.ts +34 -0
- package/dist/observability/dashboard.d.ts.map +1 -0
- package/dist/observability/trace-logger.d.ts +27 -0
- package/dist/observability/trace-logger.d.ts.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { SharedMemoryEntry } from "./coordinator.js";
|
|
2
|
+
import type { LLMEngine } from "../core/llm.js";
|
|
3
|
+
export interface PipelineStage {
|
|
4
|
+
role: string;
|
|
5
|
+
description: string;
|
|
6
|
+
validationCriteria?: string[];
|
|
7
|
+
model?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface WorkflowPipeline {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
stages: PipelineStage[];
|
|
13
|
+
createdAt: number;
|
|
14
|
+
}
|
|
15
|
+
export interface CrossValidationResult {
|
|
16
|
+
stage: string;
|
|
17
|
+
targetStage: string;
|
|
18
|
+
issues: Array<{
|
|
19
|
+
severity: "error" | "warning" | "info";
|
|
20
|
+
description: string;
|
|
21
|
+
source: string;
|
|
22
|
+
}>;
|
|
23
|
+
passed: boolean;
|
|
24
|
+
summary: string;
|
|
25
|
+
}
|
|
26
|
+
export declare class Orchestrator {
|
|
27
|
+
private pipelines;
|
|
28
|
+
private activeRuns;
|
|
29
|
+
private llmEngine;
|
|
30
|
+
setLLMEngine(engine: LLMEngine): void;
|
|
31
|
+
definePipeline(pipeline: WorkflowPipeline): void;
|
|
32
|
+
getPipeline(id: string): WorkflowPipeline | undefined;
|
|
33
|
+
listPipelines(): WorkflowPipeline[];
|
|
34
|
+
startRun(runId: string, pipelineId: string): boolean;
|
|
35
|
+
getCurrentStage(runId: string): PipelineStage | null;
|
|
36
|
+
advanceStage(runId: string, output: string, issues: string[]): PipelineStage | null;
|
|
37
|
+
getStageResult(runId: string, role: string): {
|
|
38
|
+
output: string;
|
|
39
|
+
issues: string[];
|
|
40
|
+
validatedBy: string[];
|
|
41
|
+
} | undefined;
|
|
42
|
+
getAllStageResults(runId: string): Map<string, {
|
|
43
|
+
output: string;
|
|
44
|
+
issues: string[];
|
|
45
|
+
validatedBy: string[];
|
|
46
|
+
}>;
|
|
47
|
+
crossValidate(targetRole: string, output: string, allStageResults: Map<string, {
|
|
48
|
+
output: string;
|
|
49
|
+
issues: string[];
|
|
50
|
+
validatedBy: string[];
|
|
51
|
+
}>, sharedMemory: SharedMemoryEntry[]): Promise<CrossValidationResult>;
|
|
52
|
+
buildContextForRole(role: string, runId: string, sharedMemory: SharedMemoryEntry[]): string;
|
|
53
|
+
getSuggestedPipeline(description: string): string;
|
|
54
|
+
getBuiltInPipelines(): WorkflowPipeline[];
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAE/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,KAAK,CAAC;QACZ,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;QACtC,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,EAAE,MAAM,CAAA;KACf,CAAC,CAAA;IACF,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,UAAU,CAId;IACJ,OAAO,CAAC,SAAS,CAAyB;IAE1C,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAIrC,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIhD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIrD,aAAa,IAAI,gBAAgB,EAAE;IAInC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAWpD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IASpD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,GAAG,IAAI;IAgBnF,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS;IAIpH,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAIrG,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,EACzF,YAAY,EAAE,iBAAiB,EAAE,GAChC,OAAO,CAAC,qBAAqB,CAAC;IAiEjC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,MAAM;IAkC3F,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IASjD,mBAAmB,IAAI,gBAAgB,EAAE;CA6C1C"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { AgentRole } from "./coordinator.js";
|
|
2
|
+
export interface AgentDef {
|
|
3
|
+
role: AgentRole;
|
|
4
|
+
name: string;
|
|
5
|
+
prompt: string;
|
|
6
|
+
tools: string[];
|
|
7
|
+
model?: string;
|
|
8
|
+
}
|
|
9
|
+
export type CustomRole = string;
|
|
10
|
+
export interface CustomAgentDef {
|
|
11
|
+
role: CustomRole;
|
|
12
|
+
name: string;
|
|
13
|
+
prompt: string;
|
|
14
|
+
tools: string[];
|
|
15
|
+
model?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Complexity level for model suggestion */
|
|
18
|
+
export type TaskComplexity = "simple" | "moderate" | "complex";
|
|
19
|
+
export type PromptSource = "auto-evolve" | "agent-self" | "manual" | "initial";
|
|
20
|
+
export interface PromptEntry {
|
|
21
|
+
version: number;
|
|
22
|
+
prompt: string;
|
|
23
|
+
timestamp: string;
|
|
24
|
+
source: PromptSource;
|
|
25
|
+
description?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface PromptState {
|
|
28
|
+
currentVersion: number;
|
|
29
|
+
history: PromptEntry[];
|
|
30
|
+
}
|
|
31
|
+
export declare class RoleRegistry {
|
|
32
|
+
private builtIn;
|
|
33
|
+
private custom;
|
|
34
|
+
private promptHistory;
|
|
35
|
+
private defaultModels;
|
|
36
|
+
constructor(initialPrompts?: Array<{
|
|
37
|
+
role: string;
|
|
38
|
+
history: PromptEntry[];
|
|
39
|
+
}>);
|
|
40
|
+
registerCustom(def: CustomAgentDef): void;
|
|
41
|
+
private addHistoryEntry;
|
|
42
|
+
/**
|
|
43
|
+
* Update the system prompt for a built-in role with version tracking.
|
|
44
|
+
* Returns true if the role was found and updated.
|
|
45
|
+
*/
|
|
46
|
+
updatePrompt(role: AgentRole, newPrompt: string, source?: PromptSource, description?: string): boolean;
|
|
47
|
+
/** Get the current prompt for a role (built-in or custom) */
|
|
48
|
+
getPrompt(role: string): string | undefined;
|
|
49
|
+
/** Get prompt version history for a role */
|
|
50
|
+
getPromptHistory(role: string): PromptEntry[];
|
|
51
|
+
/** Get the full prompt state for a role (current version + history) */
|
|
52
|
+
getPromptState(role: string): PromptState | undefined;
|
|
53
|
+
/** Get all prompt states (for persistence) */
|
|
54
|
+
getAllPromptStates(): Array<{
|
|
55
|
+
role: string;
|
|
56
|
+
history: PromptEntry[];
|
|
57
|
+
}>;
|
|
58
|
+
/**
|
|
59
|
+
* Rollback a role's prompt to a specific version.
|
|
60
|
+
* Returns true if the rollback succeeded.
|
|
61
|
+
*/
|
|
62
|
+
rollbackPrompt(role: string, version: number): boolean;
|
|
63
|
+
getBuiltIn(role: AgentRole): AgentDef | undefined;
|
|
64
|
+
getCustom(role: CustomRole): CustomAgentDef | undefined;
|
|
65
|
+
getAllBuiltIn(): AgentDef[];
|
|
66
|
+
getAllCustom(): CustomAgentDef[];
|
|
67
|
+
listRoles(): string[];
|
|
68
|
+
suggestModel(role: string, complexity?: TaskComplexity): string;
|
|
69
|
+
setModel(role: AgentRole, model: string): void;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=role-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-registry.d.ts","sourceRoot":"","sources":["../../src/agents/role-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAE/B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,4CAA4C;AAC5C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;AAE9D,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAA;AAE9E,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,WAAW,EAAE,CAAA;CACvB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,MAAM,CAA6C;IAC3D,OAAO,CAAC,aAAa,CAAsC;IAE3D,OAAO,CAAC,aAAa,CAMpB;gBAEW,cAAc,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC;IAiX5E,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAOzC,OAAO,CAAC,eAAe;IAYvB;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,YAAuB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO;IAQhH,6DAA6D;IAC7D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3C,4CAA4C;IAC5C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;IAI7C,uEAAuE;IACvE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIrD,8CAA8C;IAC9C,kBAAkB,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC;IAIrE;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAoBtD,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS;IAIjD,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS;IAIvD,aAAa,IAAI,QAAQ,EAAE;IAI3B,YAAY,IAAI,cAAc,EAAE;IAIhC,SAAS,IAAI,MAAM,EAAE;IAOrB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,cAA2B,GAAG,MAAM;IAgB3E,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAI/C"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Subtask } from "./intent-parser.js";
|
|
2
|
+
import { Executor } from "./executor.js";
|
|
3
|
+
import { Verifier } from "./verifier.js";
|
|
4
|
+
import { ErrorAnalyzer } from "./error-analyzer.js";
|
|
5
|
+
import { DependencyTracker } from "../drift/dependency-tracker.js";
|
|
6
|
+
import { LLMEngine } from "./llm.js";
|
|
7
|
+
export interface AgentLoopConfig {
|
|
8
|
+
maxIterations: number;
|
|
9
|
+
autoRetry: boolean;
|
|
10
|
+
maxRetries: number;
|
|
11
|
+
verifyAfterEach: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface LoopResult {
|
|
14
|
+
completedSteps: string[];
|
|
15
|
+
failedSteps: string[];
|
|
16
|
+
totalIterations: number;
|
|
17
|
+
success: boolean;
|
|
18
|
+
summary: string;
|
|
19
|
+
}
|
|
20
|
+
export interface LoopObserver {
|
|
21
|
+
onStepStart(stepId: string, iteration: number): void;
|
|
22
|
+
onStepComplete(stepId: string, success: boolean, output: string): void;
|
|
23
|
+
onLoopComplete(result: LoopResult): void;
|
|
24
|
+
}
|
|
25
|
+
export declare class AgentLoop {
|
|
26
|
+
private config;
|
|
27
|
+
private llm;
|
|
28
|
+
private observers;
|
|
29
|
+
constructor(llm: LLMEngine, config?: Partial<AgentLoopConfig>);
|
|
30
|
+
addObserver(observer: LoopObserver): void;
|
|
31
|
+
runLoop(sessionId: string, executor: Executor, verifier: Verifier, errorAnalyzer: ErrorAnalyzer, depTracker: DependencyTracker, projectDir: string, stepExecutor: (step: Subtask) => Promise<{
|
|
32
|
+
success: boolean;
|
|
33
|
+
output: string;
|
|
34
|
+
filesModified: string[];
|
|
35
|
+
error?: string;
|
|
36
|
+
}>, fixExecutor?: (fix: string) => Promise<boolean>): Promise<LoopResult>;
|
|
37
|
+
private attemptRepair;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=agent-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/core/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACpD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACtE,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;CACzC;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,SAAS,CAAqB;gBAE1B,GAAG,EAAE,SAAS,EAAE,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM;IAUjE,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAInC,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACvH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAC9C,OAAO,CAAC,UAAU,CAAC;YA0FR,aAAa;CA4B5B"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export interface EmbeddingConfig {
|
|
2
|
+
/** Model name, e.g. "text-embedding-3-small", "nomic-embed-text" */
|
|
3
|
+
model: string;
|
|
4
|
+
/** Embedding endpoint — null berarti pakai base URL dari provider utama */
|
|
5
|
+
endpoint: string | null;
|
|
6
|
+
/** API key — null berarti pakai key dari provider utama */
|
|
7
|
+
apiKey: string | null;
|
|
8
|
+
}
|
|
9
|
+
export interface MemoryConfig {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
/** "lightweight" (TF-IDF, no deps) | "full" (vector embedding) */
|
|
12
|
+
mode: "lightweight" | "full";
|
|
13
|
+
maxEntries: number;
|
|
14
|
+
compressThreshold: number;
|
|
15
|
+
forgetAfterDays: number;
|
|
16
|
+
/** ISO 639-3 language codes for stop word filtering */
|
|
17
|
+
stopWordsLanguages: string[];
|
|
18
|
+
search: {
|
|
19
|
+
keywordWeight: number;
|
|
20
|
+
vectorWeight: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface AgentConfig {
|
|
24
|
+
maxDelegationDepth: number;
|
|
25
|
+
autoSkillExtract: boolean;
|
|
26
|
+
defaultRole: string;
|
|
27
|
+
requireSemanticCheck: boolean;
|
|
28
|
+
autoHallucinationCheck: boolean;
|
|
29
|
+
blockOnHallucination: boolean;
|
|
30
|
+
hallucinationThreshold: number;
|
|
31
|
+
hardBlockReliability: number;
|
|
32
|
+
softBlockReliability: number;
|
|
33
|
+
minSampleSize: number;
|
|
34
|
+
}
|
|
35
|
+
export interface StorageConfig {
|
|
36
|
+
traceRetentionDays: number;
|
|
37
|
+
skillMaxCount: number;
|
|
38
|
+
}
|
|
39
|
+
export interface AgenticConfigSchema {
|
|
40
|
+
$schema: string;
|
|
41
|
+
/** Embedding — null = lightweight mode */
|
|
42
|
+
embedding: EmbeddingConfig | null;
|
|
43
|
+
memory: MemoryConfig;
|
|
44
|
+
agent: AgentConfig;
|
|
45
|
+
storage: StorageConfig;
|
|
46
|
+
}
|
|
47
|
+
export declare const DEFAULT_CONFIG: AgenticConfigSchema;
|
|
48
|
+
export declare class ConfigLoader {
|
|
49
|
+
private config;
|
|
50
|
+
private readonly configPath;
|
|
51
|
+
private readonly worktree;
|
|
52
|
+
private watcher;
|
|
53
|
+
private listeners;
|
|
54
|
+
constructor(worktree: string);
|
|
55
|
+
/** Load config from file, auto-create default if missing */
|
|
56
|
+
load(): AgenticConfigSchema;
|
|
57
|
+
/** Save config to file */
|
|
58
|
+
save(config: AgenticConfigSchema): void;
|
|
59
|
+
/** Get current config */
|
|
60
|
+
get(): AgenticConfigSchema;
|
|
61
|
+
/** Update specific keys and persist */
|
|
62
|
+
update(partial: Partial<AgenticConfigSchema>): AgenticConfigSchema;
|
|
63
|
+
/** Watch config file for changes */
|
|
64
|
+
startWatch(): void;
|
|
65
|
+
/** Stop watching and clear all listeners */
|
|
66
|
+
stopWatch(): void;
|
|
67
|
+
/** Listen for config changes. Returns an unsubscribe function. */
|
|
68
|
+
onChange(listener: (config: AgenticConfigSchema) => void): () => void;
|
|
69
|
+
/** Check if full embedding is configured */
|
|
70
|
+
hasEmbedding(): boolean;
|
|
71
|
+
/** Get effective memory mode — auto-switch to "full" if embedding configured */
|
|
72
|
+
effectiveMemoryMode(): "lightweight" | "full";
|
|
73
|
+
/** Deep merge helper (simple version, no array merge) */
|
|
74
|
+
private mergeDeep;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAA;IACb,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,kEAAkE;IAClE,IAAI,EAAE,aAAa,GAAG,MAAM,CAAA;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,eAAe,EAAE,MAAM,CAAA;IACvB,uDAAuD;IACvD,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAED,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gBAAgB,EAAE,OAAO,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,oBAAoB,EAAE,OAAO,CAAA;IAC7B,sBAAsB,EAAE,MAAM,CAAA;IAC9B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,0CAA0C;IAC1C,SAAS,EAAE,eAAe,GAAG,IAAI,CAAA;IACjC,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,WAAW,CAAA;IAClB,OAAO,EAAE,aAAa,CAAA;CACvB;AAMD,eAAO,MAAM,cAAc,EAAE,mBA+B5B,CAAA;AAMD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,SAAS,CAAmD;gBAExD,QAAQ,EAAE,MAAM;IAM5B,4DAA4D;IAC5D,IAAI,IAAI,mBAAmB;IAqB3B,0BAA0B;IAC1B,IAAI,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IASvC,yBAAyB;IACzB,GAAG,IAAI,mBAAmB;IAI1B,uCAAuC;IACvC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,mBAAmB;IAMlE,oCAAoC;IACpC,UAAU,IAAI,IAAI;IAgBlB,4CAA4C;IAC5C,SAAS,IAAI,IAAI;IAQjB,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAAG,MAAM,IAAI;IAQrE,4CAA4C;IAC5C,YAAY,IAAI,OAAO;IAIvB,gFAAgF;IAChF,mBAAmB,IAAI,aAAa,GAAG,MAAM;IAK7C,yDAAyD;IACzD,OAAO,CAAC,SAAS;CAYlB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** Minimal LLM interface — avoids importing the full LLMEngine */
|
|
2
|
+
export interface ErrorAnalyzerLLM {
|
|
3
|
+
call(req: {
|
|
4
|
+
systemPrompt: string;
|
|
5
|
+
userPrompt: string;
|
|
6
|
+
temperature?: number;
|
|
7
|
+
}): Promise<{
|
|
8
|
+
content: string;
|
|
9
|
+
}>;
|
|
10
|
+
}
|
|
11
|
+
export interface ErrorAnalysis {
|
|
12
|
+
category: "compile" | "type" | "test" | "import" | "runtime" | "unknown";
|
|
13
|
+
summary: string;
|
|
14
|
+
likelyRootCause: string;
|
|
15
|
+
suggestedFix: string;
|
|
16
|
+
affectedFiles: string[];
|
|
17
|
+
severity: "low" | "medium" | "high" | "critical";
|
|
18
|
+
}
|
|
19
|
+
export declare class ErrorAnalyzer {
|
|
20
|
+
private llm;
|
|
21
|
+
/** Inject an LLM engine for asynchronous fallback analysis. */
|
|
22
|
+
setLLM(llm: ErrorAnalyzerLLM): void;
|
|
23
|
+
/** Check whether an LLM is configured for fallback. */
|
|
24
|
+
hasLLM(): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Synchronous rule-based analysis. Fast and dependency-free.
|
|
27
|
+
* For ambiguous errors, returns category:"unknown".
|
|
28
|
+
*/
|
|
29
|
+
analyze(errorMessage: string, modifiedFiles: string[]): ErrorAnalysis;
|
|
30
|
+
/**
|
|
31
|
+
* Asynchronous LLM-enhanced analysis.
|
|
32
|
+
* Tries rule-based first; if unknown AND LLM is available, asks the LLM
|
|
33
|
+
* to classify the error and suggest a fix.
|
|
34
|
+
*/
|
|
35
|
+
analyzeDeep(errorMessage: string, modifiedFiles: string[]): Promise<ErrorAnalysis>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=error-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-analyzer.d.ts","sourceRoot":"","sources":["../../src/core/error-analyzer.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5G;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;IACxE,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;CACjD;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAgC;IAE3C,+DAA+D;IAC/D,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAInC,uDAAuD;IACvD,MAAM,IAAI,OAAO;IAIjB;;;OAGG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,aAAa;IAqErE;;;;OAIG;IACG,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC;CAkDzF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { Subtask, Plan } from "./intent-parser";
|
|
2
|
+
export interface ExecutionResult {
|
|
3
|
+
stepId: string;
|
|
4
|
+
success: boolean;
|
|
5
|
+
output: string;
|
|
6
|
+
filesModified?: string[];
|
|
7
|
+
error?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface StepErrorHistory {
|
|
10
|
+
error: string;
|
|
11
|
+
attemptedFix: string;
|
|
12
|
+
timestamp: number;
|
|
13
|
+
success: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface StepState {
|
|
16
|
+
result?: ExecutionResult;
|
|
17
|
+
retryCount: number;
|
|
18
|
+
errorHistory: StepErrorHistory[];
|
|
19
|
+
}
|
|
20
|
+
export interface ExecutionState {
|
|
21
|
+
plan: Plan;
|
|
22
|
+
completedSteps: Set<string>;
|
|
23
|
+
failedSteps: Map<string, string>;
|
|
24
|
+
stepStates: Map<string, StepState>;
|
|
25
|
+
currentStepIndex: number;
|
|
26
|
+
}
|
|
27
|
+
export declare class Executor {
|
|
28
|
+
private maxRetries;
|
|
29
|
+
private states;
|
|
30
|
+
/** Per-error-category retry limits (Gap #13: adaptive retry policies).
|
|
31
|
+
* Different error types need different retry strategies:
|
|
32
|
+
* - compile/type: usually deterministic, 3 retries
|
|
33
|
+
* - test: flaky tests may need fewer retries
|
|
34
|
+
* - import: file-not-found won't fix by retrying
|
|
35
|
+
* - runtime: environmental, worth a few retries
|
|
36
|
+
*/
|
|
37
|
+
private retryPolicies;
|
|
38
|
+
/** Set max retries for a specific error category. Default categories: compile, type, test, import, runtime, unknown */
|
|
39
|
+
setRetryPolicy(category: string, maxRetries: number): void;
|
|
40
|
+
/** Get max retries for an error category, or the global default if not categorized */
|
|
41
|
+
getMaxRetries(category?: string): number;
|
|
42
|
+
/** Get all retry policy summaries */
|
|
43
|
+
getRetryPolicies(): Array<{
|
|
44
|
+
category: string;
|
|
45
|
+
maxRetries: number;
|
|
46
|
+
}>;
|
|
47
|
+
initExecution(sessionId: string, plan: Plan): ExecutionState;
|
|
48
|
+
getNextStep(sessionId: string): Subtask | null;
|
|
49
|
+
getBlockedSteps(sessionId: string): Array<{
|
|
50
|
+
id: string;
|
|
51
|
+
description: string;
|
|
52
|
+
blockedBy: string[];
|
|
53
|
+
}>;
|
|
54
|
+
recordResult(sessionId: string, result: ExecutionResult): void;
|
|
55
|
+
recordFixAttempt(sessionId: string, stepId: string, fix: string, success: boolean): void;
|
|
56
|
+
canRetry(sessionId: string, stepId: string, category?: string): boolean;
|
|
57
|
+
/** Detect error category from error text */
|
|
58
|
+
private detectErrorCategory;
|
|
59
|
+
getRetryCount(sessionId: string, stepId: string): number;
|
|
60
|
+
getCompletedSteps(sessionId: string): string[];
|
|
61
|
+
getStepState(sessionId: string, stepId: string): StepState | undefined;
|
|
62
|
+
isComplete(sessionId: string): boolean;
|
|
63
|
+
isHealthy(sessionId: string): boolean;
|
|
64
|
+
getProgress(sessionId: string): {
|
|
65
|
+
completed: number;
|
|
66
|
+
total: number;
|
|
67
|
+
failed: number;
|
|
68
|
+
blocked: number;
|
|
69
|
+
};
|
|
70
|
+
getAllFilesModified(sessionId: string): string[];
|
|
71
|
+
removeSession(sessionId: string): void;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export interface CommitInfo {
|
|
2
|
+
hash: string;
|
|
3
|
+
message: string;
|
|
4
|
+
files: string[];
|
|
5
|
+
timestamp: string;
|
|
6
|
+
}
|
|
7
|
+
export interface PRDescription {
|
|
8
|
+
title: string;
|
|
9
|
+
summary: string;
|
|
10
|
+
changes: string[];
|
|
11
|
+
testPlan: string;
|
|
12
|
+
breakingChanges: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface PRCreationResult {
|
|
15
|
+
url: string;
|
|
16
|
+
number: number;
|
|
17
|
+
title: string;
|
|
18
|
+
branch: string;
|
|
19
|
+
}
|
|
20
|
+
export declare class GitIntegration {
|
|
21
|
+
private cwd;
|
|
22
|
+
constructor(cwd: string);
|
|
23
|
+
isAvailable(): boolean;
|
|
24
|
+
stage(files: string[]): boolean;
|
|
25
|
+
commit(message: string, files: string[]): CommitInfo | null;
|
|
26
|
+
getHistory(count?: number): CommitInfo[];
|
|
27
|
+
getCurrentBranch(): string;
|
|
28
|
+
push(branch?: string): boolean;
|
|
29
|
+
createBranch(name: string): boolean;
|
|
30
|
+
createPR(title: string, body: string, base?: string): PRCreationResult | null;
|
|
31
|
+
getDiff(base?: string): string;
|
|
32
|
+
generatePRDescription(goal: string, steps: Array<{
|
|
33
|
+
id: string;
|
|
34
|
+
description: string;
|
|
35
|
+
success: boolean;
|
|
36
|
+
}>, filesChanged: string[]): PRDescription;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAQ;gBAEP,GAAG,EAAE,MAAM;IAIvB,WAAW,IAAI,OAAO;IAStB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAU/B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,GAAG,IAAI;IAe3D,UAAU,CAAC,KAAK,SAAK,GAAG,UAAU,EAAE;IA2BpC,gBAAgB,IAAI,MAAM;IAU1B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAY9B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAUnC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,SAAS,GAAG,gBAAgB,GAAG,IAAI;IA8B7E,OAAO,CAAC,IAAI,SAAS,GAAG,MAAM;IAS9B,qBAAqB,CACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,EACnE,YAAY,EAAE,MAAM,EAAE,GACrB,aAAa;CA2BjB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface Subtask {
|
|
2
|
+
id: string;
|
|
3
|
+
description: string;
|
|
4
|
+
dependsOn: string[];
|
|
5
|
+
verificationCriteria: string[];
|
|
6
|
+
}
|
|
7
|
+
export interface TaskIntent {
|
|
8
|
+
goal: string;
|
|
9
|
+
constraints: string[];
|
|
10
|
+
context: {
|
|
11
|
+
relevantFiles: string[];
|
|
12
|
+
dependencies: string[];
|
|
13
|
+
};
|
|
14
|
+
subtasks: Subtask[];
|
|
15
|
+
}
|
|
16
|
+
export interface Plan {
|
|
17
|
+
intent: TaskIntent;
|
|
18
|
+
estimatedSteps: number;
|
|
19
|
+
complexity: "low" | "medium" | "high";
|
|
20
|
+
warnings: string[];
|
|
21
|
+
}
|
|
22
|
+
export declare class IntentParser {
|
|
23
|
+
createPlan(intent: TaskIntent): Plan;
|
|
24
|
+
validatePlan(plan: Plan): string[];
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=intent-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-parser.d.ts","sourceRoot":"","sources":["../../src/core/intent-parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,oBAAoB,EAAE,MAAM,EAAE,CAAA;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,YAAY,EAAE,MAAM,EAAE,CAAA;KACvB,CAAA;IACD,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,UAAU,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,qBAAa,YAAY;IACvB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAqBpC,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE;CAkBnC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export interface LLMConfig {
|
|
2
|
+
provider: "openai" | "anthropic" | "local" | "opencode";
|
|
3
|
+
apiKey?: string;
|
|
4
|
+
baseURL?: string;
|
|
5
|
+
model?: string;
|
|
6
|
+
maxTokens?: number;
|
|
7
|
+
temperature?: number;
|
|
8
|
+
variant?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface LLMRequest {
|
|
11
|
+
systemPrompt: string;
|
|
12
|
+
userPrompt: string;
|
|
13
|
+
maxTokens?: number;
|
|
14
|
+
temperature?: number;
|
|
15
|
+
jsonMode?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface LLMResponse {
|
|
18
|
+
content: string;
|
|
19
|
+
usage?: {
|
|
20
|
+
promptTokens: number;
|
|
21
|
+
completionTokens: number;
|
|
22
|
+
};
|
|
23
|
+
finishReason?: string;
|
|
24
|
+
}
|
|
25
|
+
import type { ModelRegistry } from "./model-registry.js";
|
|
26
|
+
export declare class LLMEngine {
|
|
27
|
+
private config;
|
|
28
|
+
private opencodeClient;
|
|
29
|
+
private pluginSessionId;
|
|
30
|
+
private modelRegistry?;
|
|
31
|
+
private sessionStore?;
|
|
32
|
+
private memoryStores?;
|
|
33
|
+
constructor(config?: Partial<LLMConfig>);
|
|
34
|
+
setMemoryStores(stores: {
|
|
35
|
+
searchEpisodes: (query: string) => Array<{
|
|
36
|
+
planGoal: string;
|
|
37
|
+
outcome: string;
|
|
38
|
+
timestamp: string;
|
|
39
|
+
}>;
|
|
40
|
+
findSkills: (query: string) => Array<{
|
|
41
|
+
name: string;
|
|
42
|
+
successRate: number;
|
|
43
|
+
}>;
|
|
44
|
+
}): void;
|
|
45
|
+
getMemoryContext(query: string): string;
|
|
46
|
+
private buildMemoryContext;
|
|
47
|
+
setOpencodeClient(client: unknown): void;
|
|
48
|
+
setSessionId(sessionId: string): void;
|
|
49
|
+
setModelRegistry(registry: ModelRegistry): void;
|
|
50
|
+
setSessionStore(store: import("../memory/session-store.js").SessionStore): void;
|
|
51
|
+
updateConfig(config: Partial<LLMConfig>): void;
|
|
52
|
+
getCurrentModel(): string;
|
|
53
|
+
call(req: LLMRequest): Promise<LLMResponse>;
|
|
54
|
+
decomposeTask(goal: string, context: string): Promise<string[]>;
|
|
55
|
+
summarizeContext(planGoal: string, turns: string[]): Promise<string>;
|
|
56
|
+
analyzeError(errorText: string, modifiedFiles: string[]): Promise<{
|
|
57
|
+
category: string;
|
|
58
|
+
rootCause: string;
|
|
59
|
+
fix: string;
|
|
60
|
+
}>;
|
|
61
|
+
private extractJSON;
|
|
62
|
+
generatePlan(goal: string, constraints: string[], codebaseSummary: string): Promise<{
|
|
63
|
+
steps: Array<{
|
|
64
|
+
id: string;
|
|
65
|
+
description: string;
|
|
66
|
+
dependsOn: string[];
|
|
67
|
+
}>;
|
|
68
|
+
complexity: string;
|
|
69
|
+
}>;
|
|
70
|
+
reviewCode(goal: string, files: Record<string, string>): Promise<string[]>;
|
|
71
|
+
suggestRole(description: string): Promise<string | null>;
|
|
72
|
+
suggestSkillSteps(taskDescription: string, successOutput: string): Promise<{
|
|
73
|
+
steps: Array<{
|
|
74
|
+
action: string;
|
|
75
|
+
description: string;
|
|
76
|
+
tool?: string;
|
|
77
|
+
expectedOutput: string;
|
|
78
|
+
rollback?: string;
|
|
79
|
+
}>;
|
|
80
|
+
}>;
|
|
81
|
+
private detectProvider;
|
|
82
|
+
private callOpenAI;
|
|
83
|
+
private callAnthropic;
|
|
84
|
+
private callLocal;
|
|
85
|
+
private callOpenCode;
|
|
86
|
+
private httpCall;
|
|
87
|
+
private fallbackResponse;
|
|
88
|
+
}
|
|
89
|
+
export declare const llmEngine: LLMEngine;
|
|
90
|
+
//# sourceMappingURL=llm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/core/llm.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,CAAA;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AASD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,YAAY,CAAC,CAAmD;IACxE,OAAO,CAAC,YAAY,CAAC,CAGpB;gBAEW,MAAM,GAAE,OAAO,CAAC,SAAS,CAAM;IAY3C,eAAe,CAAC,MAAM,EAAE;QACtB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QAClG,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAC5E,GAAG,IAAI;IAIR,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIvC,OAAO,CAAC,kBAAkB;IAoB1B,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAOxC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI/C,eAAe,CAAC,KAAK,EAAE,OAAO,4BAA4B,EAAE,YAAY,GAAG,IAAI;IAI/E,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;IAI9C,eAAe,IAAI,MAAM;IAInB,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAwC3C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmC/D,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAUpE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QACtE,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,GAAG,EAAE,MAAM,CAAA;KACZ,CAAC;IA2CF,OAAO,CAAC,WAAW;IAwCb,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC;QACxF,KAAK,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;QACtE,UAAU,EAAE,MAAM,CAAA;KACnB,CAAC;IAgBI,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgB1E,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkBxD,iBAAiB,CAAC,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/E,KAAK,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAChH,CAAC;IAeF,OAAO,CAAC,cAAc;YAMR,UAAU;YA8BV,aAAa;YAoBb,SAAS;YAeT,YAAY;YAkDZ,QAAQ;IAgDtB,OAAO,CAAC,gBAAgB;CAMzB;AAED,eAAO,MAAM,SAAS,WAAkB,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export interface ModelStats {
|
|
2
|
+
model: string;
|
|
3
|
+
totalCalls: number;
|
|
4
|
+
successCalls: number;
|
|
5
|
+
failedCalls: number;
|
|
6
|
+
hallucinationCount: number;
|
|
7
|
+
avgLatencyMs: number;
|
|
8
|
+
lastUsed: number;
|
|
9
|
+
consecutiveFailures: number;
|
|
10
|
+
consecutiveSuccesses: number;
|
|
11
|
+
quarantineUntil: number;
|
|
12
|
+
byTaskType?: Record<string, Omit<ModelStats, 'model' | 'byTaskType'>>;
|
|
13
|
+
}
|
|
14
|
+
export interface ModelScore {
|
|
15
|
+
model: string;
|
|
16
|
+
reliability: number;
|
|
17
|
+
hallucinationRate: number;
|
|
18
|
+
totalCalls: number;
|
|
19
|
+
status: "healthy" | "degraded" | "unstable";
|
|
20
|
+
}
|
|
21
|
+
export declare class ModelRegistry {
|
|
22
|
+
private stats;
|
|
23
|
+
private modelAliases;
|
|
24
|
+
private readonly maxConsecutiveFailures;
|
|
25
|
+
constructor();
|
|
26
|
+
registerAlias(alias: string, models: string[]): void;
|
|
27
|
+
addModel(name: string): void;
|
|
28
|
+
recordCall(model: string, success: boolean, latencyMs: number, taskType?: string): void;
|
|
29
|
+
recordHallucination(model: string): void;
|
|
30
|
+
getScore(model: string): ModelScore | null;
|
|
31
|
+
getScoreByTaskType(model: string, taskType: string): ModelScore | null;
|
|
32
|
+
getAllScores(): ModelScore[];
|
|
33
|
+
resolveAlias(alias: string): string[];
|
|
34
|
+
suggestWithFallback(role: string, preferredModels?: string[]): string[];
|
|
35
|
+
isBlocked(model: string, config: {
|
|
36
|
+
hardBlockReliability: number;
|
|
37
|
+
softBlockReliability: number;
|
|
38
|
+
minSampleSize: number;
|
|
39
|
+
}): {
|
|
40
|
+
blocked: boolean;
|
|
41
|
+
reason: string;
|
|
42
|
+
severity: "hard" | "soft" | null;
|
|
43
|
+
};
|
|
44
|
+
selectBestModel(taskType: string, availableModels: string[], blockingConfig?: {
|
|
45
|
+
hardBlockReliability: number;
|
|
46
|
+
softBlockReliability: number;
|
|
47
|
+
minSampleSize: number;
|
|
48
|
+
}): string;
|
|
49
|
+
selectWithFallback(taskType: string, availableModels: string[], blockingConfig: {
|
|
50
|
+
hardBlockReliability: number;
|
|
51
|
+
softBlockReliability: number;
|
|
52
|
+
minSampleSize: number;
|
|
53
|
+
}): {
|
|
54
|
+
model: string;
|
|
55
|
+
tier: "healthy" | "degraded" | "unstable" | "reset";
|
|
56
|
+
warnings: string[];
|
|
57
|
+
};
|
|
58
|
+
resetModel(model: string): void;
|
|
59
|
+
resetStaleModels(staleDays?: number): string[];
|
|
60
|
+
enterQuarantine(model: string, durationMinutes?: number): void;
|
|
61
|
+
getSummary(): string;
|
|
62
|
+
toJSON(): Record<string, ModelStats>;
|
|
63
|
+
fromJSON(data: Record<string, ModelStats>): void;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=model-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"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"}
|