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,40 @@
|
|
|
1
|
+
import { MemorySchemaVersion } from "./schema-version.js";
|
|
2
|
+
export interface Episode {
|
|
3
|
+
id: string;
|
|
4
|
+
sessionId: string;
|
|
5
|
+
planGoal: string;
|
|
6
|
+
summary: string;
|
|
7
|
+
outcome: "success" | "partial" | "failed";
|
|
8
|
+
decisions: string[];
|
|
9
|
+
filesChanged: string[];
|
|
10
|
+
timestamp: string;
|
|
11
|
+
tags: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface EpisodeEnvelope {
|
|
14
|
+
schema_version: number;
|
|
15
|
+
type: "episode";
|
|
16
|
+
data: Episode;
|
|
17
|
+
created_at: string;
|
|
18
|
+
}
|
|
19
|
+
export declare class EpisodicStore {
|
|
20
|
+
private episodes;
|
|
21
|
+
private migrator;
|
|
22
|
+
private onRecord?;
|
|
23
|
+
setPersistenceCallback(cb: (episode: Episode) => void): void;
|
|
24
|
+
record(sessionId: string, planGoal: string, outcome: Episode["outcome"], decisions: string[], filesChanged: string[]): Episode;
|
|
25
|
+
search(query: string): Episode[];
|
|
26
|
+
getRecent(limit?: number): Episode[];
|
|
27
|
+
getBySession(sessionId: string): Episode[];
|
|
28
|
+
getStats(): {
|
|
29
|
+
total: number;
|
|
30
|
+
successful: number;
|
|
31
|
+
partial: number;
|
|
32
|
+
failed: number;
|
|
33
|
+
};
|
|
34
|
+
exportEpisode(id: string): EpisodeEnvelope | null;
|
|
35
|
+
importEpisode(envelope: EpisodeEnvelope): boolean;
|
|
36
|
+
exportAll(): EpisodeEnvelope[];
|
|
37
|
+
getMigrator(): MemorySchemaVersion;
|
|
38
|
+
private extractTags;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=episodic-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"episodic-store.d.ts","sourceRoot":"","sources":["../../src/memory/episodic-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAE3H,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACzC,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,QAAQ,CAAC,CAA4B;IAE7C,sBAAsB,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAI5D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO;IAkB9H,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE;IAahC,SAAS,CAAC,KAAK,SAAK,GAAG,OAAO,EAAE;IAMhC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;IAI1C,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IASlF,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAMjD,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO;IAiBjD,SAAS,IAAI,eAAe,EAAE;IAI9B,WAAW,IAAI,mBAAmB;IAIlC,OAAO,CAAC,WAAW;CAIpB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LocalEmbedder — stub untuk local embedding.
|
|
3
|
+
*
|
|
4
|
+
* @xenova/transformers sudah dihapus dari dependency.
|
|
5
|
+
* Local embedding sekarang hanya fallback sparse TF-IDF.
|
|
6
|
+
* Kalau mau full vector, set `embedding.endpoint` di config.json
|
|
7
|
+
* untuk pake remote embedding via provider.
|
|
8
|
+
*/
|
|
9
|
+
export declare class LocalEmbedder {
|
|
10
|
+
private _ready;
|
|
11
|
+
init(): Promise<void>;
|
|
12
|
+
get ready(): boolean;
|
|
13
|
+
get error(): string | null;
|
|
14
|
+
embed(_text: string): Promise<Float32Array | null>;
|
|
15
|
+
}
|
|
16
|
+
export declare function createEmbedder(): Promise<LocalEmbedder>;
|
|
17
|
+
//# sourceMappingURL=local-embedder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-embedder.d.ts","sourceRoot":"","sources":["../../src/memory/local-embedder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAQ;IAEhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,CAEzB;IAEK,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CAGzD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC,CAI7D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface PersistentState<T> {
|
|
2
|
+
key: string;
|
|
3
|
+
data: T;
|
|
4
|
+
updatedAt: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class PersistenceLayer {
|
|
7
|
+
private baseDir;
|
|
8
|
+
private storeDir;
|
|
9
|
+
constructor(worktree: string);
|
|
10
|
+
save<T>(namespace: string, key: string, data: T): void;
|
|
11
|
+
load<T>(namespace: string, key: string): T | null;
|
|
12
|
+
loadAll<T>(namespace: string): PersistentState<T>[];
|
|
13
|
+
delete(namespace: string, key: string): boolean;
|
|
14
|
+
listKeys(namespace: string): string[];
|
|
15
|
+
private ensureDir;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/memory/persistence.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,CAAC,CAAA;IACP,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,QAAQ,EAAE,MAAM;IAM5B,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAYtD,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAWjD,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE;IAiBnD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAW/C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAQrC,OAAO,CAAC,SAAS;CAKlB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const MEMORY_SCHEMA_VERSION = 1;
|
|
2
|
+
export interface SchemaMigration {
|
|
3
|
+
from: number;
|
|
4
|
+
to: number;
|
|
5
|
+
description: string;
|
|
6
|
+
apply: (data: unknown) => unknown;
|
|
7
|
+
}
|
|
8
|
+
export declare class MemorySchemaVersion {
|
|
9
|
+
private migrations;
|
|
10
|
+
constructor();
|
|
11
|
+
private registerBuiltIn;
|
|
12
|
+
registerMigration(migration: SchemaMigration): void;
|
|
13
|
+
upgrade<T>(data: T, currentVersion: number): T;
|
|
14
|
+
getMigrations(): SchemaMigration[];
|
|
15
|
+
static currentVersion(): number;
|
|
16
|
+
}
|
|
17
|
+
export declare function createMemoryEnvelope<T>(data: T, type: string): {
|
|
18
|
+
schema_version: number;
|
|
19
|
+
type: string;
|
|
20
|
+
data: T;
|
|
21
|
+
created_at: string;
|
|
22
|
+
};
|
|
23
|
+
export declare function parseMemoryEnvelope<T>(envelope: unknown): {
|
|
24
|
+
version: number;
|
|
25
|
+
type: string;
|
|
26
|
+
data: T;
|
|
27
|
+
createdAt: string;
|
|
28
|
+
} | null;
|
|
29
|
+
//# sourceMappingURL=schema-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-version.d.ts","sourceRoot":"","sources":["../../src/memory/schema-version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,IAAI,CAAA;AAEtC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAA;CAClC;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAAwB;;IAM1C,OAAO,CAAC,eAAe;IAiBvB,iBAAiB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAQnD,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC;IAW9C,aAAa,IAAI,eAAe,EAAE;IAIlC,MAAM,CAAC,cAAc,IAAI,MAAM;CAGhC;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAOpI;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAS9H"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export interface ConversationTurn {
|
|
2
|
+
role: "user" | "assistant" | "tool";
|
|
3
|
+
content: string;
|
|
4
|
+
timestamp: number;
|
|
5
|
+
metadata?: Record<string, unknown>;
|
|
6
|
+
}
|
|
7
|
+
export interface SessionState {
|
|
8
|
+
sessionId: string;
|
|
9
|
+
turns: ConversationTurn[];
|
|
10
|
+
plan?: import("../core/intent-parser").Plan;
|
|
11
|
+
artifacts: Map<string, string>;
|
|
12
|
+
currentTaskType?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ExecutorSnapshot {
|
|
15
|
+
completedSteps: string[];
|
|
16
|
+
stepStates: Map<string, {
|
|
17
|
+
id: string;
|
|
18
|
+
success: boolean;
|
|
19
|
+
}>;
|
|
20
|
+
}
|
|
21
|
+
export declare class SessionStore {
|
|
22
|
+
private sessions;
|
|
23
|
+
private executorSnapshots;
|
|
24
|
+
/** Per-session model preferences: role → model name */
|
|
25
|
+
private modelPreferences;
|
|
26
|
+
/** TTL in days for session expiry (0 = never expire). Config-hot-reloadable. */
|
|
27
|
+
private forgetAfterDays;
|
|
28
|
+
/** Set the TTL for session expiry — called on config hot-reload. */
|
|
29
|
+
setForgetAfterDays(days: number): void;
|
|
30
|
+
/** Remove sessions that haven't been touched since TTL. */
|
|
31
|
+
pruneExpired(): number;
|
|
32
|
+
getOrCreate(sessionId: string): SessionState;
|
|
33
|
+
updateProgress(sessionId: string, snapshot: ExecutorSnapshot): void;
|
|
34
|
+
addTurn(sessionId: string, turn: ConversationTurn): void;
|
|
35
|
+
getContext(sessionId: string, maxTurns?: number): ConversationTurn[];
|
|
36
|
+
getContextSummary(sessionId: string): string;
|
|
37
|
+
removeSession(sessionId: string): void;
|
|
38
|
+
/** Set preferred model for a given agent role in this session. */
|
|
39
|
+
setModelPreference(sessionId: string, role: string, model: string): void;
|
|
40
|
+
/** Get preferred model for a given agent role, or undefined. */
|
|
41
|
+
getModelPreference(sessionId: string, role: string): string | undefined;
|
|
42
|
+
/** Get all model preferences for a session. Returns array of { role, model }. */
|
|
43
|
+
getAllModelPreferences(sessionId: string): Array<{
|
|
44
|
+
role: string;
|
|
45
|
+
model: string;
|
|
46
|
+
}>;
|
|
47
|
+
/** Clear model preference for a specific role, or all roles if omitted. */
|
|
48
|
+
clearModelPreference(sessionId: string, role?: string): void;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/memory/session-store.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAA;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,gBAAgB,EAAE,CAAA;IACzB,IAAI,CAAC,EAAE,OAAO,uBAAuB,EAAE,IAAI,CAAA;IAC3C,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAC1D;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,uDAAuD;IACvD,OAAO,CAAC,gBAAgB,CAAyC;IACjE,gFAAgF;IAChF,OAAO,CAAC,eAAe,CAAK;IAE5B,oEAAoE;IACpE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAItC,2DAA2D;IAC3D,YAAY,IAAI,MAAM;IActB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAa5C,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAInE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAKxD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,gBAAgB,EAAE;IAMhE,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAqB5C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQtC,kEAAkE;IAClE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IASxE,gEAAgE;IAChE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKvE,iFAAiF;IACjF,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAMjF,2EAA2E;IAC3E,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;CAS7D"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export interface SkillMeta {
|
|
2
|
+
format: "agentic-skill/v1";
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
version: number;
|
|
6
|
+
author: "agent" | "human";
|
|
7
|
+
agentRole?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface SkillDefinition {
|
|
10
|
+
meta: SkillMeta;
|
|
11
|
+
trigger: {
|
|
12
|
+
pattern: string;
|
|
13
|
+
keywords: string[];
|
|
14
|
+
context: string[];
|
|
15
|
+
};
|
|
16
|
+
workflow: {
|
|
17
|
+
steps: SkillStep[];
|
|
18
|
+
estimatedDuration: string;
|
|
19
|
+
parallelizable: boolean;
|
|
20
|
+
};
|
|
21
|
+
quality: {
|
|
22
|
+
successRate: number;
|
|
23
|
+
usageCount: number;
|
|
24
|
+
failureScenarios: string[];
|
|
25
|
+
};
|
|
26
|
+
audit: {
|
|
27
|
+
createdAt: string;
|
|
28
|
+
lastUsed: string;
|
|
29
|
+
lastModified: string;
|
|
30
|
+
modifiedBy: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export interface SkillStep {
|
|
34
|
+
order: number;
|
|
35
|
+
action: string;
|
|
36
|
+
description: string;
|
|
37
|
+
tool?: string;
|
|
38
|
+
expectedOutput: string;
|
|
39
|
+
rollback?: string;
|
|
40
|
+
}
|
|
41
|
+
export declare function createSkillDefinition(name: string, triggerPattern: string, keywords: string[], steps: {
|
|
42
|
+
action: string;
|
|
43
|
+
description: string;
|
|
44
|
+
tool?: string;
|
|
45
|
+
expectedOutput: string;
|
|
46
|
+
rollback?: string;
|
|
47
|
+
}[], triggerContext?: string[]): SkillDefinition;
|
|
48
|
+
export declare function serializeSkill(skill: SkillDefinition): string;
|
|
49
|
+
export declare function deserializeSkill(json: string): SkillDefinition | null;
|
|
50
|
+
export declare function inspectSkill(skill: SkillDefinition): string;
|
|
51
|
+
//# sourceMappingURL=skill-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-format.d.ts","sourceRoot":"","sources":["../../src/memory/skill-format.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,kBAAkB,CAAA;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,OAAO,GAAG,OAAO,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,OAAO,EAAE,MAAM,EAAE,CAAA;KAClB,CAAA;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,SAAS,EAAE,CAAA;QAClB,iBAAiB,EAAE,MAAM,CAAA;QACzB,cAAc,EAAE,OAAO,CAAA;KACxB,CAAA;IACD,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;QAClB,gBAAgB,EAAE,MAAM,EAAE,CAAA;KAC3B,CAAA;IACD,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,YAAY,EAAE,MAAM,CAAA;QACpB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAC1G,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,eAAe,CAuCjB;AA2BD,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAE7D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAQrE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAe3D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type SkillDefinition, type SkillStep, type SkillMeta, createSkillDefinition, inspectSkill, serializeSkill, deserializeSkill } from "./skill-format.js";
|
|
2
|
+
export { type SkillDefinition, type SkillStep, type SkillMeta, inspectSkill, serializeSkill, deserializeSkill, createSkillDefinition };
|
|
3
|
+
export interface SkillRecord {
|
|
4
|
+
definition: SkillDefinition;
|
|
5
|
+
usageCount: number;
|
|
6
|
+
successRate: number;
|
|
7
|
+
lastUsed: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class SkillStore {
|
|
10
|
+
private skills;
|
|
11
|
+
extract(turn: {
|
|
12
|
+
role: string;
|
|
13
|
+
content: string;
|
|
14
|
+
}, contextTags?: string[]): Promise<SkillRecord | null>;
|
|
15
|
+
find(query: string): SkillRecord[];
|
|
16
|
+
getAll(): SkillRecord[];
|
|
17
|
+
getById(id: string): SkillRecord | undefined;
|
|
18
|
+
reportFailure(skillId: string): boolean;
|
|
19
|
+
exportEnvelope(skillId: string): string | null;
|
|
20
|
+
importFromEnvelope(json: string): boolean;
|
|
21
|
+
private isExtractablePattern;
|
|
22
|
+
private extractName;
|
|
23
|
+
private extractSteps;
|
|
24
|
+
private extractPattern;
|
|
25
|
+
private extractKeywords;
|
|
26
|
+
private inferAction;
|
|
27
|
+
private inferToolForStep;
|
|
28
|
+
private inferTools;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=skill-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-store.d.ts","sourceRoot":"","sources":["../../src/memory/skill-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,qBAAqB,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAG/J,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,CAAA;AAEtI,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,eAAe,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAiC;IAEzC,OAAO,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,WAAW,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAmD/G,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE;IAYlC,MAAM,IAAI,WAAW,EAAE;IAIvB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAavC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM9C,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAsBzC,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,UAAU;CAcnB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { SkillRecord } from "./skill-store.js";
|
|
2
|
+
export interface TrainingExample {
|
|
3
|
+
instruction: string;
|
|
4
|
+
response: string;
|
|
5
|
+
skillName: string;
|
|
6
|
+
quality: number;
|
|
7
|
+
}
|
|
8
|
+
export interface TrainingDataset {
|
|
9
|
+
format: "openai" | "instructions";
|
|
10
|
+
totalExamples: number;
|
|
11
|
+
qualityFilter: number;
|
|
12
|
+
data: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Convert a single skill into a training example.
|
|
16
|
+
* instruction = trigger pattern + name → what the agent should do
|
|
17
|
+
* response = structured workflow steps → how the agent should do it
|
|
18
|
+
*/
|
|
19
|
+
export declare function skillToTrainingExample(skill: SkillRecord): TrainingExample;
|
|
20
|
+
/**
|
|
21
|
+
* Export skills as OpenAI fine-tuning JSONL format.
|
|
22
|
+
* Each line: {"messages": [{"role": "system", "content": "..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}
|
|
23
|
+
*/
|
|
24
|
+
export declare function exportOpenAIJSONL(examples: TrainingExample[]): string;
|
|
25
|
+
/**
|
|
26
|
+
* Export skills as simple instruction-response JSON array.
|
|
27
|
+
*/
|
|
28
|
+
export declare function exportInstructionsJSON(examples: TrainingExample[]): string;
|
|
29
|
+
/**
|
|
30
|
+
* Generate a summary of the training dataset quality.
|
|
31
|
+
*/
|
|
32
|
+
export declare function trainingDatasetSummary(examples: TrainingExample[]): string;
|
|
33
|
+
/**
|
|
34
|
+
* Convert all skills to training examples, filtered by minimum success rate.
|
|
35
|
+
*/
|
|
36
|
+
export declare function skillsToTrainingData(skills: SkillRecord[], format?: "openai" | "instructions", minSuccessRate?: number): TrainingDataset;
|
|
37
|
+
//# sourceMappingURL=skill-training.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-training.d.ts","sourceRoot":"","sources":["../../src/memory/skill-training.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,GAAG,cAAc,CAAA;IACjC,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,CA0B1E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,CAWrE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,CAO1E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,CAwB1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,GAAE,QAAQ,GAAG,cAAyB,EAC5C,cAAc,SAAM,GACnB,eAAe,CAejB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { LLMEngine } from "../core/llm.js";
|
|
2
|
+
import type { LocalEmbedder } from "./local-embedder.js";
|
|
3
|
+
export type DocumentType = "episode" | "skill" | "file" | "code";
|
|
4
|
+
export interface DocumentMeta {
|
|
5
|
+
type: DocumentType;
|
|
6
|
+
sessionId?: string;
|
|
7
|
+
tags?: string[];
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
}
|
|
10
|
+
export interface SearchResult {
|
|
11
|
+
id: string;
|
|
12
|
+
content: string;
|
|
13
|
+
metadata: DocumentMeta;
|
|
14
|
+
score: number;
|
|
15
|
+
}
|
|
16
|
+
export type SearchMode = "sparse" | "dense" | "hybrid" | "llm-rerank";
|
|
17
|
+
export declare class VectorStore {
|
|
18
|
+
private documents;
|
|
19
|
+
private vocabulary;
|
|
20
|
+
private maxCacheSize;
|
|
21
|
+
private searchCache;
|
|
22
|
+
private semanticCache;
|
|
23
|
+
private llmEngine;
|
|
24
|
+
private embedder;
|
|
25
|
+
private embedQueue;
|
|
26
|
+
private embedProcessing;
|
|
27
|
+
/** Search weights — from config */
|
|
28
|
+
private keywordWeight;
|
|
29
|
+
private vectorWeight;
|
|
30
|
+
/** Remote embedding config — dari config, bukan local embedder */
|
|
31
|
+
private remoteEmbedModel;
|
|
32
|
+
private remoteEmbedEndpoint;
|
|
33
|
+
private remoteEmbedApiKey;
|
|
34
|
+
/** ISO 639-3 language codes for stop word filtering */
|
|
35
|
+
private stopWordsLanguages;
|
|
36
|
+
setLLM(llm: LLMEngine): void;
|
|
37
|
+
setEmbedder(embedder: LocalEmbedder): void;
|
|
38
|
+
/** Set search weights from config — menggantikan hardcoded alpha */
|
|
39
|
+
setSearchWeights(keyword: number, vector: number): void;
|
|
40
|
+
/** Set remote embedding config — untuk full vector mode */
|
|
41
|
+
setEmbeddingConfig(model: string, endpoint: string | null, apiKey: string | null): void;
|
|
42
|
+
/** Set stop word languages — dari config */
|
|
43
|
+
setStopWordsLanguages(langs: string[]): void;
|
|
44
|
+
/** Get remote embedding config */
|
|
45
|
+
getEmbeddingConfig(): {
|
|
46
|
+
model: string;
|
|
47
|
+
endpoint: string | null;
|
|
48
|
+
apiKey: string | null;
|
|
49
|
+
} | null;
|
|
50
|
+
private queueDenseEmbed;
|
|
51
|
+
private processEmbedQueue;
|
|
52
|
+
addDocument(id: string, content: string, metadata: DocumentMeta): void;
|
|
53
|
+
search(query: string, topK?: number): SearchResult[];
|
|
54
|
+
searchWithMode(query: string, topK?: number, mode?: SearchMode): Promise<SearchResult[]>;
|
|
55
|
+
private sparseSearch;
|
|
56
|
+
private denseSearch;
|
|
57
|
+
private hybridSearch;
|
|
58
|
+
semanticSearch(query: string, topK?: number): Promise<SearchResult[]>;
|
|
59
|
+
searchByType(query: string, type: DocumentType, topK?: number): SearchResult[];
|
|
60
|
+
semanticSearchByType(query: string, type: DocumentType, topK?: number): Promise<SearchResult[]>;
|
|
61
|
+
removeDocument(id: string): boolean;
|
|
62
|
+
size(): number;
|
|
63
|
+
clear(): void;
|
|
64
|
+
clearCache(): void;
|
|
65
|
+
private tokenize;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=vector-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../../src/memory/vector-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAKxD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAEhE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,YAAY,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAA;AAiErE,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,aAAa,CAAyC;IAC9D,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,eAAe,CAAQ;IAC/B,mCAAmC;IACnC,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,YAAY,CAAM;IAC1B,kEAAkE;IAClE,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,uDAAuD;IACvD,OAAO,CAAC,kBAAkB,CAA2B;IAErD,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAI5B,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI1C,oEAAoE;IACpE,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKvD,2DAA2D;IAC3D,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMvF,4CAA4C;IAC5C,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAI5C,kCAAkC;IAClC,kBAAkB,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAK9F,OAAO,CAAC,eAAe;YAMT,iBAAiB;IAoB/B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IA2CtE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,YAAY,EAAE;IAIzC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAAI,EAAE,IAAI,GAAE,UAAqB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA+BnG,OAAO,CAAC,YAAY;YAwCN,WAAW;YAiCX,YAAY;IAmCpB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAiDtE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,SAAI,GAAG,YAAY,EAAE;IAKnE,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,SAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAKhG,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAgBnC,IAAI,IAAI,MAAM;IACd,KAAK,IAAI,IAAI;IACb,UAAU,IAAI,IAAI;IAElB,OAAO,CAAC,QAAQ;CAQjB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { TraceEntry } from "./trace-logger";
|
|
2
|
+
export interface DashboardData {
|
|
3
|
+
timeline: TimelineEvent[];
|
|
4
|
+
statistics: Statistics;
|
|
5
|
+
anomalies: Anomaly[];
|
|
6
|
+
}
|
|
7
|
+
export interface TimelineEvent {
|
|
8
|
+
time: string;
|
|
9
|
+
tool: string;
|
|
10
|
+
step: string;
|
|
11
|
+
success: boolean;
|
|
12
|
+
durationMs: number;
|
|
13
|
+
}
|
|
14
|
+
export interface Statistics {
|
|
15
|
+
totalCalls: number;
|
|
16
|
+
successRate: number;
|
|
17
|
+
averageLatency: number;
|
|
18
|
+
toolsUsed: Map<string, number>;
|
|
19
|
+
peakConcurrency: number;
|
|
20
|
+
}
|
|
21
|
+
export interface Anomaly {
|
|
22
|
+
type: "timeout" | "loop" | "retry_storm" | "silent_failure";
|
|
23
|
+
description: string;
|
|
24
|
+
detectedAt: string;
|
|
25
|
+
tool?: string;
|
|
26
|
+
count?: number;
|
|
27
|
+
}
|
|
28
|
+
export declare class Dashboard {
|
|
29
|
+
generate(traces: TraceEntry[], sessionStart: number): DashboardData;
|
|
30
|
+
formatForDisplay(data: DashboardData): string;
|
|
31
|
+
private computePeakConcurrency;
|
|
32
|
+
private detectAnomalies;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/observability/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,OAAO,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,gBAAgB,CAAA;IAC3D,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,SAAS;IACpB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa;IA8BnE,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAuC7C,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,eAAe;CAqFxB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface TraceEntry {
|
|
2
|
+
timestamp: string;
|
|
3
|
+
step: string;
|
|
4
|
+
input: string;
|
|
5
|
+
output: string;
|
|
6
|
+
toolUsed: string;
|
|
7
|
+
success: boolean;
|
|
8
|
+
durationMs: number;
|
|
9
|
+
metadata?: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export declare class TraceLogger {
|
|
12
|
+
private logPath;
|
|
13
|
+
private buffer;
|
|
14
|
+
private flushInterval;
|
|
15
|
+
/** Retention days for trace entries (0 = never prune). Config-hot-reloadable. */
|
|
16
|
+
private retentionDays;
|
|
17
|
+
constructor(worktree: string);
|
|
18
|
+
/** Set retention days for pruning old traces — called on config hot-reload. */
|
|
19
|
+
setRetentionDays(days: number): void;
|
|
20
|
+
/** Prune trace entries older than retentionDays, in-place rewriting the file. */
|
|
21
|
+
pruneOldTraces(): Promise<number>;
|
|
22
|
+
init(): Promise<void>;
|
|
23
|
+
log(entry: Omit<TraceEntry, "timestamp">): void;
|
|
24
|
+
flush(): Promise<void>;
|
|
25
|
+
dispose(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=trace-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-logger.d.ts","sourceRoot":"","sources":["../../src/observability/trace-logger.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAA8C;IACnE,iFAAiF;IACjF,OAAO,CAAC,aAAa,CAAI;gBAEb,QAAQ,EAAE,MAAM;IAI5B,+EAA+E;IAC/E,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC,iFAAiF;IAC3E,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAsBjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI;IAezC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "opencode-agentic-engine",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"homepage": "https://github.com/rahadiana/opencode-agentic-engine#readme",
|
|
5
|
+
"engines": { "node": ">=20" },
|
|
6
|
+
"description": "Multi-agent software engineering plugin for OpenCode — implements Stages I-IV from \"The End of Software Engineering\" (arXiv:2606.05608)",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"author": "rahadiana",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/rahadiana/opencode-agentic-engine.git"
|
|
13
|
+
},
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/rahadiana/opencode-agentic-engine/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"opencode",
|
|
19
|
+
"plugin",
|
|
20
|
+
"agent",
|
|
21
|
+
"software-engineering",
|
|
22
|
+
"multi-agent",
|
|
23
|
+
"code-generation",
|
|
24
|
+
"ai"
|
|
25
|
+
],
|
|
26
|
+
"main": "dist/index.js",
|
|
27
|
+
"types": "dist/index.d.ts",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": "./dist/index.js",
|
|
30
|
+
"./tool": "./dist/index.js"
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
],
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "tsc --emitDeclarationOnly && node esbuild.config.mjs",
|
|
37
|
+
"dev": "tsc --emitDeclarationOnly --watch & node esbuild.config.mjs --watch",
|
|
38
|
+
"clean": "rm -rf dist",
|
|
39
|
+
"typecheck": "tsc --noEmit",
|
|
40
|
+
"test": "node test/run.mjs",
|
|
41
|
+
"test:e2e": "node test/e2e-scenario.mjs",
|
|
42
|
+
"test:e2e-llm": "node test/e2e-llm.mjs",
|
|
43
|
+
"test:swebench": "node test/swebench-harness.mjs",
|
|
44
|
+
"test:swebench-llm": "OPENAI_BASE_URL=http://localhost:11434/v1 OPENAI_MODEL=qwen2.5:0.5b node test/swebench-harness.mjs",
|
|
45
|
+
"prepublishOnly": "npm run build"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@opencode-ai/plugin": "^1.3.3",
|
|
49
|
+
"stopword": "^3.1.5",
|
|
50
|
+
"zod": "^4.1.8"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@types/node": "^22.0.0",
|
|
54
|
+
"esbuild": "^0.28.1",
|
|
55
|
+
"typescript": "^5.7.0"
|
|
56
|
+
}
|
|
57
|
+
}
|