@locusai/sdk 0.7.3 → 0.7.4

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.
Files changed (37) hide show
  1. package/dist/agent/document-fetcher.d.ts +23 -0
  2. package/dist/agent/document-fetcher.d.ts.map +1 -0
  3. package/dist/agent/index.d.ts +1 -1
  4. package/dist/agent/index.d.ts.map +1 -1
  5. package/dist/agent/worker.d.ts +1 -1
  6. package/dist/agent/worker.d.ts.map +1 -1
  7. package/dist/agent/worker.js +424 -124
  8. package/dist/ai/claude-runner.d.ts +17 -0
  9. package/dist/ai/claude-runner.d.ts.map +1 -1
  10. package/dist/ai/codex-runner.d.ts +2 -0
  11. package/dist/ai/codex-runner.d.ts.map +1 -1
  12. package/dist/ai/runner.d.ts +7 -0
  13. package/dist/ai/runner.d.ts.map +1 -1
  14. package/dist/core/config.d.ts +10 -0
  15. package/dist/core/config.d.ts.map +1 -1
  16. package/dist/core/index.d.ts +1 -1
  17. package/dist/core/index.d.ts.map +1 -1
  18. package/dist/exec/context-tracker.d.ts +183 -0
  19. package/dist/exec/context-tracker.d.ts.map +1 -0
  20. package/dist/exec/event-emitter.d.ts +117 -0
  21. package/dist/exec/event-emitter.d.ts.map +1 -0
  22. package/dist/exec/events.d.ts +171 -0
  23. package/dist/exec/events.d.ts.map +1 -0
  24. package/dist/exec/exec-session.d.ts +164 -0
  25. package/dist/exec/exec-session.d.ts.map +1 -0
  26. package/dist/exec/history-manager.d.ts +153 -0
  27. package/dist/exec/history-manager.d.ts.map +1 -0
  28. package/dist/exec/index.d.ts +7 -0
  29. package/dist/exec/index.d.ts.map +1 -0
  30. package/dist/exec/types.d.ts +130 -0
  31. package/dist/exec/types.d.ts.map +1 -0
  32. package/dist/index-node.d.ts +1 -0
  33. package/dist/index-node.d.ts.map +1 -1
  34. package/dist/index-node.js +1274 -139
  35. package/package.json +2 -2
  36. package/dist/agent/artifact-syncer.d.ts +0 -18
  37. package/dist/agent/artifact-syncer.d.ts.map +0 -1
@@ -1,11 +1,28 @@
1
+ import type { ExecEventEmitter } from "../exec/event-emitter.js";
2
+ import type { StreamChunk } from "../exec/types.js";
1
3
  import { LogFn } from "./factory.js";
2
4
  import type { AiRunner } from "./runner.js";
3
5
  export declare class ClaudeRunner implements AiRunner {
4
6
  private model;
5
7
  private log?;
6
8
  private projectPath;
9
+ private eventEmitter?;
10
+ private currentToolName?;
11
+ private activeTools;
7
12
  constructor(projectPath: string, model?: string, log?: LogFn | undefined);
13
+ /**
14
+ * Set an event emitter to receive execution events.
15
+ */
16
+ setEventEmitter(emitter: ExecEventEmitter): void;
8
17
  run(prompt: string, _isPlanning?: boolean): Promise<string>;
18
+ runStream(prompt: string): AsyncGenerator<StreamChunk, void, unknown>;
19
+ /**
20
+ * Emit an event corresponding to a stream chunk.
21
+ */
22
+ private emitEventForChunk;
23
+ private parseStreamLineToChunk;
24
+ private processStreamItemToChunk;
25
+ private handleEventToChunk;
9
26
  private executeRun;
10
27
  private handleStreamLine;
11
28
  private processStreamItem;
@@ -1 +1 @@
1
- {"version":3,"file":"claude-runner.d.ts","sourceRoot":"","sources":["../../src/ai/claude-runner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmB5C,qBAAa,YAAa,YAAW,QAAQ;IAKzC,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,GAAG,CAAC;IALd,OAAO,CAAC,WAAW,CAAS;gBAG1B,WAAW,EAAE,MAAM,EACX,KAAK,GAAE,MAAuC,EAC9C,GAAG,CAAC,EAAE,KAAK,YAAA;IAKf,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAyB/D,OAAO,CAAC,UAAU;IAkFlB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;CAO7B"}
1
+ {"version":3,"file":"claude-runner.d.ts","sourceRoot":"","sources":["../../src/ai/claude-runner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAgC5C,qBAAa,YAAa,YAAW,QAAQ;IAQzC,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,GAAG,CAAC;IARd,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,WAAW,CAA+C;gBAGhE,WAAW,EAAE,MAAM,EACX,KAAK,GAAE,MAAuC,EAC9C,GAAG,CAAC,EAAE,KAAK,YAAA;IAKrB;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAI1C,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBxD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC;IAqK5E;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,kBAAkB;IAwE1B,OAAO,CAAC,UAAU;IAkFlB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;CAO7B"}
@@ -1,3 +1,4 @@
1
+ import type { StreamChunk } from "../exec/types.js";
1
2
  import type { LogFn } from "./factory.js";
2
3
  import type { AiRunner } from "./runner.js";
3
4
  export declare class CodexRunner implements AiRunner {
@@ -6,6 +7,7 @@ export declare class CodexRunner implements AiRunner {
6
7
  private log?;
7
8
  constructor(projectPath: string, model?: string, log?: LogFn | undefined);
8
9
  run(prompt: string): Promise<string>;
10
+ runStream(prompt: string): AsyncGenerator<StreamChunk, void, unknown>;
9
11
  private executeRun;
10
12
  private buildArgs;
11
13
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"codex-runner.d.ts","sourceRoot":"","sources":["../../src/ai/codex-runner.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,qBAAa,WAAY,YAAW,QAAQ;IAExC,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,GAAG,CAAC;gBAFJ,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,MAAsC,EAC7C,GAAG,CAAC,EAAE,KAAK,YAAA;IAGf,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB1C,OAAO,CAAC,UAAU;IAoDlB,OAAO,CAAC,SAAS;IAiBjB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,KAAK;CAGd"}
1
+ {"version":3,"file":"codex-runner.d.ts","sourceRoot":"","sources":["../../src/ai/codex-runner.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,qBAAa,WAAY,YAAW,QAAQ;IAExC,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,GAAG,CAAC;gBAFJ,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,MAAsC,EAC7C,GAAG,CAAC,EAAE,KAAK,YAAA;IAGf,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBnC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC;IA6G5E,OAAO,CAAC,UAAU;IAoDlB,OAAO,CAAC,SAAS;IAiBjB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,KAAK;CAGd"}
@@ -1,6 +1,13 @@
1
1
  import type { Provider } from "../core/config.js";
2
+ import type { ExecEventEmitter } from "../exec/event-emitter.js";
3
+ import type { StreamChunk } from "../exec/types.js";
2
4
  export interface AiRunner {
3
5
  run(prompt: string, isPlanning?: boolean): Promise<string>;
6
+ runStream(prompt: string): AsyncGenerator<StreamChunk, void, unknown>;
7
+ /**
8
+ * Set an event emitter to receive execution events.
9
+ */
10
+ setEventEmitter?(emitter: ExecEventEmitter): void;
4
11
  }
5
12
  export type AiProvider = Provider;
6
13
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/ai/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5D;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/ai/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtE;;OAEG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACnD;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC"}
@@ -12,6 +12,16 @@ export declare const LOCUS_CONFIG: {
12
12
  artifactsDir: string;
13
13
  documentsDir: string;
14
14
  agentSkillsDir: string;
15
+ sessionsDir: string;
15
16
  };
17
+ export declare const LOCUS_GITIGNORE_PATTERNS: readonly ["# Locus AI - Session data (user-specific, can grow large)", ".locus/sessions/", "", "# Locus AI - Artifacts (local-only, user-specific)", ".locus/artifacts/"];
16
18
  export declare function getLocusPath(projectPath: string, fileName: keyof typeof LOCUS_CONFIG): string;
19
+ /**
20
+ * Gets the artifacts directory path for a specific agent.
21
+ * Artifacts are organized by agent ID to avoid conflicts and improve organization.
22
+ * @param projectPath - The project root path
23
+ * @param agentId - The agent ID (can be full ID or short form)
24
+ * @returns Path to the agent-specific artifacts directory
25
+ */
26
+ export declare function getAgentArtifactsPath(projectPath: string, agentId: string): string;
17
27
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;CAGX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEhE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAGlD,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;CAQxB,CAAC;AAEF,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,OAAO,YAAY,GAClC,MAAM,CAKR"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;CAGX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEhE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAGlD,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;CASxB,CAAC;AAIF,eAAO,MAAM,wBAAwB,2KAM3B,CAAC;AAEX,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,OAAO,YAAY,GAClC,MAAM,CAKR;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,MAAM,CASR"}
@@ -1,4 +1,4 @@
1
- export { DEFAULT_MODEL, getLocusPath, LOCUS_CONFIG, PROVIDER, type Provider, } from "./config.js";
1
+ export { DEFAULT_MODEL, getAgentArtifactsPath, getLocusPath, LOCUS_CONFIG, LOCUS_GITIGNORE_PATTERNS, PROVIDER, type Provider, } from "./config.js";
2
2
  export { type CodebaseIndex, CodebaseIndexer } from "./indexer.js";
3
3
  export { PromptBuilder } from "./prompt-builder.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,KAAK,QAAQ,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,QAAQ,EACR,KAAK,QAAQ,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Artifact types that can be tracked across conversation turns.
3
+ */
4
+ export type ArtifactType = "plan" | "document" | "code" | "task-list" | "diagram" | "config" | "report" | "other";
5
+ /**
6
+ * Represents an artifact created during the session.
7
+ */
8
+ export interface Artifact {
9
+ /** Unique identifier for the artifact */
10
+ id: string;
11
+ /** Human-readable title of the artifact */
12
+ title: string;
13
+ /** Type of artifact */
14
+ type: ArtifactType;
15
+ /** Content of the artifact (can be markdown, code, etc.) */
16
+ content: string;
17
+ /** Timestamp when the artifact was created */
18
+ createdAt: number;
19
+ /** Timestamp when the artifact was last updated */
20
+ updatedAt: number;
21
+ /** Optional file path if artifact was saved to disk */
22
+ filePath?: string;
23
+ /** Optional metadata for additional context */
24
+ metadata?: Record<string, unknown>;
25
+ }
26
+ /**
27
+ * Task status for tracking progress.
28
+ */
29
+ export type TaskStatus = "pending" | "in_progress" | "completed" | "cancelled";
30
+ /**
31
+ * Represents a task created during the session.
32
+ */
33
+ export interface Task {
34
+ /** Unique identifier for the task */
35
+ id: string;
36
+ /** Human-readable title of the task */
37
+ title: string;
38
+ /** Detailed description of the task */
39
+ description?: string;
40
+ /** Current status of the task */
41
+ status: TaskStatus;
42
+ /** Timestamp when the task was created */
43
+ createdAt: number;
44
+ /** Timestamp when the task was last updated */
45
+ updatedAt: number;
46
+ /** Optional parent task ID for hierarchical tasks */
47
+ parentId?: string;
48
+ /** Optional metadata for additional context */
49
+ metadata?: Record<string, unknown>;
50
+ }
51
+ /**
52
+ * Serialized state of the ContextTracker for persistence.
53
+ */
54
+ export interface ContextTrackerState {
55
+ artifacts: Artifact[];
56
+ tasks: Task[];
57
+ }
58
+ /**
59
+ * Tracks artifacts and tasks created during an AI session to enable
60
+ * context-aware follow-up conversations and reference resolution.
61
+ *
62
+ * The ContextTracker enables multi-turn workflow support by:
63
+ * - Maintaining a registry of artifacts (plans, docs, code) created in the session
64
+ * - Tracking tasks and their status
65
+ * - Resolving natural language references ("the plan", "that doc")
66
+ * - Building context summaries for prompts
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * const tracker = new ContextTracker();
71
+ *
72
+ * // Track an artifact
73
+ * const artifact = tracker.createArtifact({
74
+ * title: "Sprint Plan Q1",
75
+ * type: "plan",
76
+ * content: "## Week 1\n..."
77
+ * });
78
+ *
79
+ * // Later, resolve a reference
80
+ * const plan = tracker.getReferencedArtifact("the plan");
81
+ *
82
+ * // Build context for next prompt
83
+ * const context = tracker.buildContextSummary();
84
+ * ```
85
+ */
86
+ export declare class ContextTracker {
87
+ private artifacts;
88
+ private tasks;
89
+ /**
90
+ * Create a new artifact and track it.
91
+ */
92
+ createArtifact(params: Omit<Artifact, "id" | "createdAt" | "updatedAt">): Artifact;
93
+ /**
94
+ * Track an existing artifact.
95
+ */
96
+ trackArtifact(artifact: Artifact): void;
97
+ /**
98
+ * Update an existing artifact.
99
+ */
100
+ updateArtifact(id: string, updates: Partial<Omit<Artifact, "id" | "createdAt">>): Artifact | null;
101
+ /**
102
+ * Get an artifact by ID.
103
+ */
104
+ getArtifact(id: string): Artifact | null;
105
+ /**
106
+ * Get all tracked artifacts.
107
+ */
108
+ getAllArtifacts(): Artifact[];
109
+ /**
110
+ * Create a new task and track it.
111
+ */
112
+ createTask(params: Omit<Task, "id" | "createdAt" | "updatedAt">): Task;
113
+ /**
114
+ * Track an existing task.
115
+ */
116
+ trackTask(task: Task): void;
117
+ /**
118
+ * Update an existing task.
119
+ */
120
+ updateTask(id: string, updates: Partial<Omit<Task, "id" | "createdAt">>): Task | null;
121
+ /**
122
+ * Get a task by ID.
123
+ */
124
+ getTask(id: string): Task | null;
125
+ /**
126
+ * Get all tracked tasks.
127
+ */
128
+ getAllTasks(): Task[];
129
+ /**
130
+ * Get tasks by status.
131
+ */
132
+ getTasksByStatus(status: TaskStatus): Task[];
133
+ /**
134
+ * Resolve a natural language reference to an artifact.
135
+ *
136
+ * Supports multiple resolution strategies:
137
+ * 1. Exact ID match
138
+ * 2. Title contains reference (case-insensitive)
139
+ * 3. Type-based reference using aliases ("the plan", "that doc")
140
+ * 4. Keyword matching in title
141
+ *
142
+ * @param reference - Natural language reference like "the plan" or "sprint doc"
143
+ * @returns The matched artifact or null if no match found
144
+ */
145
+ getReferencedArtifact(reference: string): Artifact | null;
146
+ /**
147
+ * Resolve a natural language reference to a task.
148
+ *
149
+ * @param reference - Natural language reference like "the auth task"
150
+ * @returns The matched task or null if no match found
151
+ */
152
+ getReferencedTask(reference: string): Task | null;
153
+ /**
154
+ * Build a context summary for inclusion in prompts.
155
+ * Provides the AI with awareness of artifacts and tasks from the session.
156
+ */
157
+ buildContextSummary(): string;
158
+ /**
159
+ * Get a status icon for display.
160
+ */
161
+ private getStatusIcon;
162
+ /**
163
+ * Check if the tracker has any content.
164
+ */
165
+ hasContent(): boolean;
166
+ /**
167
+ * Clear all tracked artifacts and tasks.
168
+ */
169
+ clear(): void;
170
+ /**
171
+ * Serialize the tracker state for persistence.
172
+ */
173
+ toJSON(): ContextTrackerState;
174
+ /**
175
+ * Restore tracker state from serialized data.
176
+ */
177
+ static fromJSON(state: ContextTrackerState): ContextTracker;
178
+ /**
179
+ * Restore state into this tracker instance.
180
+ */
181
+ restore(state: ContextTrackerState): void;
182
+ }
183
+ //# sourceMappingURL=context-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-tracker.d.ts","sourceRoot":"","sources":["../../src/exec/context-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import { type ExecEvent, type ExecEventListener, type ExecEventMap, ExecEventType } from "./events.js";
2
+ /**
3
+ * Type-safe event emitter for execution progress feedback.
4
+ *
5
+ * Provides methods to emit and listen to execution events with full type safety.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const emitter = new ExecEventEmitter();
10
+ *
11
+ * // Listen to events
12
+ * emitter.on(ExecEventType.TOOL_STARTED, (event) => {
13
+ * console.log(`Tool started: ${event.data.toolName}`);
14
+ * });
15
+ *
16
+ * // Emit events
17
+ * emitter.emitToolStarted('Read');
18
+ * ```
19
+ */
20
+ export declare class ExecEventEmitter {
21
+ private emitter;
22
+ private sessionId;
23
+ private isSessionActive;
24
+ private eventLog;
25
+ private debugMode;
26
+ constructor(options?: {
27
+ debug?: boolean;
28
+ });
29
+ /**
30
+ * Get the current session ID.
31
+ */
32
+ getSessionId(): string;
33
+ /**
34
+ * Check if a session is currently active.
35
+ */
36
+ isActive(): boolean;
37
+ /**
38
+ * Get the event log for debugging purposes.
39
+ */
40
+ getEventLog(): ExecEvent[];
41
+ /**
42
+ * Clear the event log.
43
+ */
44
+ clearEventLog(): void;
45
+ /**
46
+ * Subscribe to a specific event type.
47
+ */
48
+ on<K extends ExecEventType>(eventType: K, listener: ExecEventListener<ExecEventMap[K]>): this;
49
+ /**
50
+ * Subscribe to a specific event type for a single emission.
51
+ */
52
+ once<K extends ExecEventType>(eventType: K, listener: ExecEventListener<ExecEventMap[K]>): this;
53
+ /**
54
+ * Unsubscribe from a specific event type.
55
+ */
56
+ off<K extends ExecEventType>(eventType: K, listener: ExecEventListener<ExecEventMap[K]>): this;
57
+ /**
58
+ * Remove all listeners for a specific event type or all events.
59
+ */
60
+ removeAllListeners(eventType?: ExecEventType): this;
61
+ /**
62
+ * Emit an event with the given payload.
63
+ */
64
+ private emit;
65
+ /**
66
+ * Create the base event structure with timestamp.
67
+ */
68
+ private createEventBase;
69
+ /**
70
+ * Emit SESSION_STARTED event.
71
+ */
72
+ emitSessionStarted(options?: {
73
+ model?: string;
74
+ provider?: string;
75
+ }): void;
76
+ /**
77
+ * Emit PROMPT_SUBMITTED event.
78
+ */
79
+ emitPromptSubmitted(prompt: string, truncated?: boolean): void;
80
+ /**
81
+ * Emit THINKING_STARTED event.
82
+ */
83
+ emitThinkingStarted(content?: string): void;
84
+ /**
85
+ * Emit THINKING_STOPPED event.
86
+ */
87
+ emitThinkingStoped(): void;
88
+ /**
89
+ * Emit TOOL_STARTED event.
90
+ */
91
+ emitToolStarted(toolName: string, toolId?: string): void;
92
+ /**
93
+ * Emit TOOL_COMPLETED event.
94
+ */
95
+ emitToolCompleted(toolName: string, toolId?: string, result?: unknown, duration?: number): void;
96
+ /**
97
+ * Emit TOOL_FAILED event.
98
+ */
99
+ emitToolFailed(toolName: string, error: string, toolId?: string): void;
100
+ /**
101
+ * Emit TEXT_DELTA event.
102
+ */
103
+ emitTextDelta(content: string): void;
104
+ /**
105
+ * Emit RESPONSE_COMPLETED event.
106
+ */
107
+ emitResponseCompleted(content: string): void;
108
+ /**
109
+ * Emit ERROR_OCCURRED event.
110
+ */
111
+ emitErrorOccurred(error: string, code?: string): void;
112
+ /**
113
+ * Emit SESSION_ENDED event.
114
+ */
115
+ emitSessionEnded(success: boolean): void;
116
+ }
117
+ //# sourceMappingURL=event-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../src/exec/event-emitter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,aAAa,EACd,MAAM,aAAa,CAAC;AASrB;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAMzC;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,WAAW,IAAI,SAAS,EAAE;IAI1B;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,aAAa,EACxB,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC3C,IAAI;IAKP;;OAEG;IACH,IAAI,CAAC,CAAC,SAAS,aAAa,EAC1B,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC3C,IAAI;IAKP;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,aAAa,EACzB,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC3C,IAAI;IAKP;;OAEG;IACH,kBAAkB,CAAC,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI;IASnD;;OAEG;IACH,OAAO,CAAC,IAAI;IAOZ;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAYzE;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,IAAI;IAU5D;;OAEG;IACH,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAS3C;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAO1B;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAUxD;;OAEG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI;IAYP;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAWtE;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASpC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS5C;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAUrD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAUzC"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Event types emitted during AI execution for rich progress feedback.
3
+ */
4
+ export declare enum ExecEventType {
5
+ /** Session has been initialized and is ready to execute */
6
+ SESSION_STARTED = "session:started",
7
+ /** A prompt has been submitted to the AI */
8
+ PROMPT_SUBMITTED = "prompt:submitted",
9
+ /** AI has started thinking/reasoning */
10
+ THINKING_STARTED = "thinking:started",
11
+ /** AI has stopped thinking/reasoning */
12
+ THINKING_STOPPED = "thinking:stopped",
13
+ /** A tool has started execution */
14
+ TOOL_STARTED = "tool:started",
15
+ /** A tool has completed successfully */
16
+ TOOL_COMPLETED = "tool:completed",
17
+ /** A tool has failed */
18
+ TOOL_FAILED = "tool:failed",
19
+ /** Incremental text output from the AI */
20
+ TEXT_DELTA = "text:delta",
21
+ /** The AI response has completed */
22
+ RESPONSE_COMPLETED = "response:completed",
23
+ /** An error occurred during execution */
24
+ ERROR_OCCURRED = "error:occurred",
25
+ /** The session has ended */
26
+ SESSION_ENDED = "session:ended"
27
+ }
28
+ /**
29
+ * Base interface for all execution events.
30
+ */
31
+ export interface ExecEventBase {
32
+ type: ExecEventType;
33
+ timestamp: number;
34
+ }
35
+ /**
36
+ * Event payload for SESSION_STARTED
37
+ */
38
+ export interface SessionStartedEvent extends ExecEventBase {
39
+ type: ExecEventType.SESSION_STARTED;
40
+ data: {
41
+ sessionId: string;
42
+ model?: string;
43
+ provider?: string;
44
+ };
45
+ }
46
+ /**
47
+ * Event payload for PROMPT_SUBMITTED
48
+ */
49
+ export interface PromptSubmittedEvent extends ExecEventBase {
50
+ type: ExecEventType.PROMPT_SUBMITTED;
51
+ data: {
52
+ prompt: string;
53
+ truncated?: boolean;
54
+ };
55
+ }
56
+ /**
57
+ * Event payload for THINKING_STARTED
58
+ */
59
+ export interface ThinkingStartedEvent extends ExecEventBase {
60
+ type: ExecEventType.THINKING_STARTED;
61
+ data: {
62
+ content?: string;
63
+ };
64
+ }
65
+ /**
66
+ * Event payload for THINKING_STOPPED
67
+ */
68
+ export interface ThinkingStoppedEvent extends ExecEventBase {
69
+ type: ExecEventType.THINKING_STOPPED;
70
+ data: Record<string, never>;
71
+ }
72
+ /**
73
+ * Event payload for TOOL_STARTED
74
+ */
75
+ export interface ToolStartedEvent extends ExecEventBase {
76
+ type: ExecEventType.TOOL_STARTED;
77
+ data: {
78
+ toolName: string;
79
+ toolId?: string;
80
+ parameters?: Record<string, unknown>;
81
+ };
82
+ }
83
+ /**
84
+ * Event payload for TOOL_COMPLETED
85
+ */
86
+ export interface ToolCompletedEvent extends ExecEventBase {
87
+ type: ExecEventType.TOOL_COMPLETED;
88
+ data: {
89
+ toolName: string;
90
+ toolId?: string;
91
+ parameters?: Record<string, unknown>;
92
+ result?: unknown;
93
+ /** Duration in milliseconds */
94
+ duration?: number;
95
+ };
96
+ }
97
+ /**
98
+ * Event payload for TOOL_FAILED
99
+ */
100
+ export interface ToolFailedEvent extends ExecEventBase {
101
+ type: ExecEventType.TOOL_FAILED;
102
+ data: {
103
+ toolName: string;
104
+ toolId?: string;
105
+ parameters?: Record<string, unknown>;
106
+ error: string;
107
+ };
108
+ }
109
+ /**
110
+ * Event payload for TEXT_DELTA
111
+ */
112
+ export interface TextDeltaEvent extends ExecEventBase {
113
+ type: ExecEventType.TEXT_DELTA;
114
+ data: {
115
+ content: string;
116
+ };
117
+ }
118
+ /**
119
+ * Event payload for RESPONSE_COMPLETED
120
+ */
121
+ export interface ResponseCompletedEvent extends ExecEventBase {
122
+ type: ExecEventType.RESPONSE_COMPLETED;
123
+ data: {
124
+ content: string;
125
+ };
126
+ }
127
+ /**
128
+ * Event payload for ERROR_OCCURRED
129
+ */
130
+ export interface ErrorOccurredEvent extends ExecEventBase {
131
+ type: ExecEventType.ERROR_OCCURRED;
132
+ data: {
133
+ error: string;
134
+ code?: string;
135
+ };
136
+ }
137
+ /**
138
+ * Event payload for SESSION_ENDED
139
+ */
140
+ export interface SessionEndedEvent extends ExecEventBase {
141
+ type: ExecEventType.SESSION_ENDED;
142
+ data: {
143
+ sessionId: string;
144
+ success: boolean;
145
+ };
146
+ }
147
+ /**
148
+ * Union type of all execution events.
149
+ */
150
+ export type ExecEvent = SessionStartedEvent | PromptSubmittedEvent | ThinkingStartedEvent | ThinkingStoppedEvent | ToolStartedEvent | ToolCompletedEvent | ToolFailedEvent | TextDeltaEvent | ResponseCompletedEvent | ErrorOccurredEvent | SessionEndedEvent;
151
+ /**
152
+ * Event listener callback type.
153
+ */
154
+ export type ExecEventListener<T extends ExecEvent = ExecEvent> = (event: T) => void;
155
+ /**
156
+ * Type-safe event map for ExecEventEmitter.
157
+ */
158
+ export interface ExecEventMap {
159
+ [ExecEventType.SESSION_STARTED]: SessionStartedEvent;
160
+ [ExecEventType.PROMPT_SUBMITTED]: PromptSubmittedEvent;
161
+ [ExecEventType.THINKING_STARTED]: ThinkingStartedEvent;
162
+ [ExecEventType.THINKING_STOPPED]: ThinkingStoppedEvent;
163
+ [ExecEventType.TOOL_STARTED]: ToolStartedEvent;
164
+ [ExecEventType.TOOL_COMPLETED]: ToolCompletedEvent;
165
+ [ExecEventType.TOOL_FAILED]: ToolFailedEvent;
166
+ [ExecEventType.TEXT_DELTA]: TextDeltaEvent;
167
+ [ExecEventType.RESPONSE_COMPLETED]: ResponseCompletedEvent;
168
+ [ExecEventType.ERROR_OCCURRED]: ErrorOccurredEvent;
169
+ [ExecEventType.SESSION_ENDED]: SessionEndedEvent;
170
+ }
171
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/exec/events.ts"],"names":[],"mappings":"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"}