kode-sdk 2.7.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.
Files changed (169) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +74 -0
  3. package/dist/core/agent/breakpoint-manager.d.ts +16 -0
  4. package/dist/core/agent/breakpoint-manager.js +36 -0
  5. package/dist/core/agent/message-queue.d.ts +26 -0
  6. package/dist/core/agent/message-queue.js +47 -0
  7. package/dist/core/agent/permission-manager.d.ts +9 -0
  8. package/dist/core/agent/permission-manager.js +32 -0
  9. package/dist/core/agent/todo-manager.d.ts +26 -0
  10. package/dist/core/agent/todo-manager.js +91 -0
  11. package/dist/core/agent/tool-runner.d.ts +9 -0
  12. package/dist/core/agent/tool-runner.js +45 -0
  13. package/dist/core/agent.d.ts +271 -0
  14. package/dist/core/agent.js +2334 -0
  15. package/dist/core/checkpointer.d.ts +96 -0
  16. package/dist/core/checkpointer.js +57 -0
  17. package/dist/core/checkpointers/file.d.ts +20 -0
  18. package/dist/core/checkpointers/file.js +153 -0
  19. package/dist/core/checkpointers/index.d.ts +3 -0
  20. package/dist/core/checkpointers/index.js +9 -0
  21. package/dist/core/checkpointers/redis.d.ts +35 -0
  22. package/dist/core/checkpointers/redis.js +113 -0
  23. package/dist/core/compression/ai-strategy.d.ts +53 -0
  24. package/dist/core/compression/ai-strategy.js +298 -0
  25. package/dist/core/compression/index.d.ts +12 -0
  26. package/dist/core/compression/index.js +27 -0
  27. package/dist/core/compression/prompts.d.ts +35 -0
  28. package/dist/core/compression/prompts.js +114 -0
  29. package/dist/core/compression/simple-strategy.d.ts +44 -0
  30. package/dist/core/compression/simple-strategy.js +240 -0
  31. package/dist/core/compression/token-estimator.d.ts +42 -0
  32. package/dist/core/compression/token-estimator.js +121 -0
  33. package/dist/core/compression/types.d.ts +140 -0
  34. package/dist/core/compression/types.js +9 -0
  35. package/dist/core/config.d.ts +10 -0
  36. package/dist/core/config.js +2 -0
  37. package/dist/core/context-manager.d.ts +115 -0
  38. package/dist/core/context-manager.js +107 -0
  39. package/dist/core/errors.d.ts +6 -0
  40. package/dist/core/errors.js +17 -0
  41. package/dist/core/events.d.ts +49 -0
  42. package/dist/core/events.js +312 -0
  43. package/dist/core/file-pool.d.ts +43 -0
  44. package/dist/core/file-pool.js +120 -0
  45. package/dist/core/hooks.d.ts +23 -0
  46. package/dist/core/hooks.js +71 -0
  47. package/dist/core/permission-modes.d.ts +31 -0
  48. package/dist/core/permission-modes.js +61 -0
  49. package/dist/core/pool.d.ts +31 -0
  50. package/dist/core/pool.js +87 -0
  51. package/dist/core/room.d.ts +15 -0
  52. package/dist/core/room.js +57 -0
  53. package/dist/core/scheduler.d.ts +33 -0
  54. package/dist/core/scheduler.js +58 -0
  55. package/dist/core/template.d.ts +69 -0
  56. package/dist/core/template.js +35 -0
  57. package/dist/core/time-bridge.d.ts +18 -0
  58. package/dist/core/time-bridge.js +100 -0
  59. package/dist/core/todo.d.ts +34 -0
  60. package/dist/core/todo.js +89 -0
  61. package/dist/core/types.d.ts +380 -0
  62. package/dist/core/types.js +3 -0
  63. package/dist/index.d.ts +51 -0
  64. package/dist/index.js +147 -0
  65. package/dist/infra/provider.d.ts +144 -0
  66. package/dist/infra/provider.js +294 -0
  67. package/dist/infra/sandbox-factory.d.ts +10 -0
  68. package/dist/infra/sandbox-factory.js +21 -0
  69. package/dist/infra/sandbox.d.ts +87 -0
  70. package/dist/infra/sandbox.js +255 -0
  71. package/dist/infra/store.d.ts +154 -0
  72. package/dist/infra/store.js +584 -0
  73. package/dist/skills/index.d.ts +12 -0
  74. package/dist/skills/index.js +36 -0
  75. package/dist/skills/injector.d.ts +29 -0
  76. package/dist/skills/injector.js +96 -0
  77. package/dist/skills/loader.d.ts +59 -0
  78. package/dist/skills/loader.js +215 -0
  79. package/dist/skills/manager.d.ts +85 -0
  80. package/dist/skills/manager.js +221 -0
  81. package/dist/skills/parser.d.ts +40 -0
  82. package/dist/skills/parser.js +107 -0
  83. package/dist/skills/types.d.ts +107 -0
  84. package/dist/skills/types.js +7 -0
  85. package/dist/skills/validator.d.ts +30 -0
  86. package/dist/skills/validator.js +121 -0
  87. package/dist/store.d.ts +1 -0
  88. package/dist/store.js +5 -0
  89. package/dist/tools/bash_kill/index.d.ts +1 -0
  90. package/dist/tools/bash_kill/index.js +35 -0
  91. package/dist/tools/bash_kill/prompt.d.ts +2 -0
  92. package/dist/tools/bash_kill/prompt.js +14 -0
  93. package/dist/tools/bash_logs/index.d.ts +1 -0
  94. package/dist/tools/bash_logs/index.js +40 -0
  95. package/dist/tools/bash_logs/prompt.d.ts +2 -0
  96. package/dist/tools/bash_logs/prompt.js +14 -0
  97. package/dist/tools/bash_run/index.d.ts +16 -0
  98. package/dist/tools/bash_run/index.js +61 -0
  99. package/dist/tools/bash_run/prompt.d.ts +2 -0
  100. package/dist/tools/bash_run/prompt.js +18 -0
  101. package/dist/tools/builtin.d.ts +9 -0
  102. package/dist/tools/builtin.js +27 -0
  103. package/dist/tools/define.d.ts +101 -0
  104. package/dist/tools/define.js +214 -0
  105. package/dist/tools/fs_edit/index.d.ts +1 -0
  106. package/dist/tools/fs_edit/index.js +62 -0
  107. package/dist/tools/fs_edit/prompt.d.ts +2 -0
  108. package/dist/tools/fs_edit/prompt.js +15 -0
  109. package/dist/tools/fs_glob/index.d.ts +1 -0
  110. package/dist/tools/fs_glob/index.js +60 -0
  111. package/dist/tools/fs_glob/prompt.d.ts +2 -0
  112. package/dist/tools/fs_glob/prompt.js +18 -0
  113. package/dist/tools/fs_grep/index.d.ts +1 -0
  114. package/dist/tools/fs_grep/index.js +66 -0
  115. package/dist/tools/fs_grep/prompt.d.ts +2 -0
  116. package/dist/tools/fs_grep/prompt.js +16 -0
  117. package/dist/tools/fs_multi_edit/index.d.ts +1 -0
  118. package/dist/tools/fs_multi_edit/index.js +106 -0
  119. package/dist/tools/fs_multi_edit/prompt.d.ts +2 -0
  120. package/dist/tools/fs_multi_edit/prompt.js +16 -0
  121. package/dist/tools/fs_read/index.d.ts +1 -0
  122. package/dist/tools/fs_read/index.js +40 -0
  123. package/dist/tools/fs_read/prompt.d.ts +2 -0
  124. package/dist/tools/fs_read/prompt.js +16 -0
  125. package/dist/tools/fs_rm/index.d.ts +1 -0
  126. package/dist/tools/fs_rm/index.js +41 -0
  127. package/dist/tools/fs_rm/prompt.d.ts +2 -0
  128. package/dist/tools/fs_rm/prompt.js +14 -0
  129. package/dist/tools/fs_write/index.d.ts +1 -0
  130. package/dist/tools/fs_write/index.js +40 -0
  131. package/dist/tools/fs_write/prompt.d.ts +2 -0
  132. package/dist/tools/fs_write/prompt.js +15 -0
  133. package/dist/tools/index.d.ts +9 -0
  134. package/dist/tools/index.js +56 -0
  135. package/dist/tools/mcp.d.ts +73 -0
  136. package/dist/tools/mcp.js +198 -0
  137. package/dist/tools/registry.d.ts +29 -0
  138. package/dist/tools/registry.js +26 -0
  139. package/dist/tools/skill_activate/index.d.ts +5 -0
  140. package/dist/tools/skill_activate/index.js +63 -0
  141. package/dist/tools/skill_list/index.d.ts +5 -0
  142. package/dist/tools/skill_list/index.js +48 -0
  143. package/dist/tools/skill_resource/index.d.ts +5 -0
  144. package/dist/tools/skill_resource/index.js +82 -0
  145. package/dist/tools/task_run/index.d.ts +7 -0
  146. package/dist/tools/task_run/index.js +60 -0
  147. package/dist/tools/task_run/prompt.d.ts +5 -0
  148. package/dist/tools/task_run/prompt.js +29 -0
  149. package/dist/tools/todo_read/index.d.ts +1 -0
  150. package/dist/tools/todo_read/index.js +29 -0
  151. package/dist/tools/todo_read/prompt.d.ts +2 -0
  152. package/dist/tools/todo_read/prompt.js +18 -0
  153. package/dist/tools/todo_write/index.d.ts +1 -0
  154. package/dist/tools/todo_write/index.js +42 -0
  155. package/dist/tools/todo_write/prompt.d.ts +2 -0
  156. package/dist/tools/todo_write/prompt.js +23 -0
  157. package/dist/tools/tool.d.ts +43 -0
  158. package/dist/tools/tool.js +104 -0
  159. package/dist/tools/toolkit.d.ts +69 -0
  160. package/dist/tools/toolkit.js +98 -0
  161. package/dist/tools/type-inference.d.ts +127 -0
  162. package/dist/tools/type-inference.js +207 -0
  163. package/dist/utils/agent-id.d.ts +1 -0
  164. package/dist/utils/agent-id.js +28 -0
  165. package/dist/utils/session-id.d.ts +21 -0
  166. package/dist/utils/session-id.js +64 -0
  167. package/dist/utils/unicode.d.ts +17 -0
  168. package/dist/utils/unicode.js +62 -0
  169. package/package.json +117 -0
@@ -0,0 +1,34 @@
1
+ import { Store } from '../infra/store';
2
+ export type TodoStatus = 'pending' | 'in_progress' | 'completed';
3
+ export interface TodoItem {
4
+ id: string;
5
+ title: string;
6
+ status: TodoStatus;
7
+ assignee?: string;
8
+ notes?: string;
9
+ createdAt: number;
10
+ updatedAt: number;
11
+ }
12
+ export interface TodoSnapshot {
13
+ todos: TodoItem[];
14
+ version: number;
15
+ updatedAt: number;
16
+ }
17
+ export type TodoInput = Omit<TodoItem, 'createdAt' | 'updatedAt'> & {
18
+ createdAt?: number;
19
+ updatedAt?: number;
20
+ };
21
+ export declare class TodoService {
22
+ private readonly store;
23
+ private readonly agentId;
24
+ private snapshot;
25
+ constructor(store: Store, agentId: string);
26
+ load(): Promise<void>;
27
+ list(): TodoItem[];
28
+ setTodos(todos: TodoInput[]): Promise<void>;
29
+ update(todo: TodoInput): Promise<void>;
30
+ delete(id: string): Promise<void>;
31
+ private validateTodos;
32
+ private persist;
33
+ private normalize;
34
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TodoService = void 0;
4
+ const MAX_IN_PROGRESS = 1;
5
+ class TodoService {
6
+ constructor(store, agentId) {
7
+ this.store = store;
8
+ this.agentId = agentId;
9
+ this.snapshot = { todos: [], version: 1, updatedAt: Date.now() };
10
+ }
11
+ async load() {
12
+ const existing = await this.store.loadTodos?.(this.agentId);
13
+ if (existing) {
14
+ this.snapshot = existing;
15
+ }
16
+ }
17
+ list() {
18
+ return [...this.snapshot.todos];
19
+ }
20
+ async setTodos(todos) {
21
+ const normalized = todos.map((todo) => this.normalize(todo));
22
+ this.validateTodos(normalized);
23
+ this.snapshot = {
24
+ todos: normalized.map((todo) => ({ ...todo, updatedAt: Date.now() })),
25
+ version: this.snapshot.version + 1,
26
+ updatedAt: Date.now(),
27
+ };
28
+ await this.persist();
29
+ }
30
+ async update(todo) {
31
+ const existing = this.snapshot.todos.find((t) => t.id === todo.id);
32
+ if (!existing) {
33
+ throw new Error(`Todo not found: ${todo.id}`);
34
+ }
35
+ const normalized = this.normalize({ ...existing, ...todo });
36
+ const updated = { ...existing, ...normalized, updatedAt: Date.now() };
37
+ const next = this.snapshot.todos.map((t) => (t.id === todo.id ? updated : t));
38
+ this.validateTodos(next);
39
+ this.snapshot.todos = next;
40
+ this.snapshot.version += 1;
41
+ this.snapshot.updatedAt = Date.now();
42
+ await this.persist();
43
+ }
44
+ async delete(id) {
45
+ const next = this.snapshot.todos.filter((t) => t.id !== id);
46
+ this.snapshot.todos = next;
47
+ this.snapshot.version += 1;
48
+ this.snapshot.updatedAt = Date.now();
49
+ await this.persist();
50
+ }
51
+ validateTodos(todos) {
52
+ const ids = new Set();
53
+ let inProgress = 0;
54
+ for (const todo of todos) {
55
+ if (!todo.id)
56
+ throw new Error('Todo id is required');
57
+ if (ids.has(todo.id)) {
58
+ throw new Error(`Duplicate todo id: ${todo.id}`);
59
+ }
60
+ ids.add(todo.id);
61
+ if (todo.status === 'in_progress')
62
+ inProgress += 1;
63
+ if (!todo.title?.trim()) {
64
+ throw new Error(`Todo ${todo.id} must have a title`);
65
+ }
66
+ }
67
+ if (inProgress > MAX_IN_PROGRESS) {
68
+ throw new Error('Only one todo can be in progress');
69
+ }
70
+ }
71
+ async persist() {
72
+ if (!this.store.saveTodos)
73
+ return;
74
+ await this.store.saveTodos(this.agentId, this.snapshot);
75
+ }
76
+ normalize(todo) {
77
+ const now = Date.now();
78
+ return {
79
+ id: todo.id,
80
+ title: todo.title,
81
+ status: todo.status,
82
+ assignee: todo.assignee,
83
+ notes: todo.notes,
84
+ createdAt: todo.createdAt ?? now,
85
+ updatedAt: todo.updatedAt ?? now,
86
+ };
87
+ }
88
+ }
89
+ exports.TodoService = TodoService;
@@ -0,0 +1,380 @@
1
+ export type MessageRole = 'user' | 'assistant' | 'system';
2
+ export type ContentBlock = {
3
+ type: 'text';
4
+ text: string;
5
+ } | {
6
+ type: 'tool_use';
7
+ id: string;
8
+ name: string;
9
+ input: any;
10
+ } | {
11
+ type: 'tool_result';
12
+ tool_use_id: string;
13
+ content: any;
14
+ is_error?: boolean;
15
+ };
16
+ export interface Message {
17
+ role: MessageRole;
18
+ content: ContentBlock[];
19
+ }
20
+ export interface Bookmark {
21
+ seq: number;
22
+ timestamp: number;
23
+ }
24
+ export type AgentChannel = 'progress' | 'control' | 'monitor';
25
+ export type AgentRuntimeState = 'READY' | 'WORKING' | 'PAUSED';
26
+ export type BreakpointState = 'READY' | 'PRE_MODEL' | 'STREAMING_MODEL' | 'TOOL_PENDING' | 'AWAITING_APPROVAL' | 'PRE_TOOL' | 'TOOL_EXECUTING' | 'POST_TOOL';
27
+ export type ToolCallState = 'PENDING' | 'APPROVAL_REQUIRED' | 'APPROVED' | 'EXECUTING' | 'COMPLETED' | 'FAILED' | 'DENIED' | 'SEALED';
28
+ export interface ToolCallApproval {
29
+ required: boolean;
30
+ decision?: 'allow' | 'deny';
31
+ decidedBy?: string;
32
+ decidedAt?: number;
33
+ note?: string;
34
+ meta?: Record<string, any>;
35
+ }
36
+ export interface ToolCallAuditEntry {
37
+ state: ToolCallState;
38
+ timestamp: number;
39
+ note?: string;
40
+ }
41
+ export interface ToolCallRecord {
42
+ id: string;
43
+ name: string;
44
+ input: any;
45
+ state: ToolCallState;
46
+ approval: ToolCallApproval;
47
+ result?: any;
48
+ error?: string;
49
+ isError?: boolean;
50
+ startedAt?: number;
51
+ completedAt?: number;
52
+ durationMs?: number;
53
+ createdAt: number;
54
+ updatedAt: number;
55
+ auditTrail: ToolCallAuditEntry[];
56
+ }
57
+ export type ToolCallSnapshot = Pick<ToolCallRecord, 'id' | 'name' | 'state' | 'approval' | 'result' | 'error' | 'isError' | 'durationMs' | 'startedAt' | 'completedAt'> & {
58
+ inputPreview?: any;
59
+ auditTrail?: ToolCallAuditEntry[];
60
+ };
61
+ export interface ProgressThinkChunkStartEvent {
62
+ channel: 'progress';
63
+ type: 'think_chunk_start';
64
+ step: number;
65
+ bookmark?: Bookmark;
66
+ }
67
+ export interface ProgressThinkChunkEvent {
68
+ channel: 'progress';
69
+ type: 'think_chunk';
70
+ step: number;
71
+ delta: string;
72
+ bookmark?: Bookmark;
73
+ }
74
+ export interface ProgressThinkChunkEndEvent {
75
+ channel: 'progress';
76
+ type: 'think_chunk_end';
77
+ step: number;
78
+ bookmark?: Bookmark;
79
+ }
80
+ export interface ProgressTextChunkStartEvent {
81
+ channel: 'progress';
82
+ type: 'text_chunk_start';
83
+ step: number;
84
+ bookmark?: Bookmark;
85
+ }
86
+ export interface ProgressTextChunkEvent {
87
+ channel: 'progress';
88
+ type: 'text_chunk';
89
+ step: number;
90
+ delta: string;
91
+ bookmark?: Bookmark;
92
+ }
93
+ export interface ProgressTextChunkEndEvent {
94
+ channel: 'progress';
95
+ type: 'text_chunk_end';
96
+ step: number;
97
+ text: string;
98
+ bookmark?: Bookmark;
99
+ }
100
+ export interface ProgressToolStartEvent {
101
+ channel: 'progress';
102
+ type: 'tool:start';
103
+ call: ToolCallSnapshot;
104
+ bookmark?: Bookmark;
105
+ }
106
+ export interface ProgressToolEndEvent {
107
+ channel: 'progress';
108
+ type: 'tool:end';
109
+ call: ToolCallSnapshot;
110
+ bookmark?: Bookmark;
111
+ }
112
+ export interface ProgressToolErrorEvent {
113
+ channel: 'progress';
114
+ type: 'tool:error';
115
+ call: ToolCallSnapshot;
116
+ error: string;
117
+ bookmark?: Bookmark;
118
+ }
119
+ export interface ProgressDoneEvent {
120
+ channel: 'progress';
121
+ type: 'done';
122
+ step: number;
123
+ reason: 'completed' | 'interrupted';
124
+ bookmark?: Bookmark;
125
+ }
126
+ export type ProgressEvent = ProgressThinkChunkStartEvent | ProgressThinkChunkEvent | ProgressThinkChunkEndEvent | ProgressTextChunkStartEvent | ProgressTextChunkEvent | ProgressTextChunkEndEvent | ProgressToolStartEvent | ProgressToolEndEvent | ProgressToolErrorEvent | ProgressDoneEvent;
127
+ export interface ControlPermissionRequiredEvent {
128
+ channel: 'control';
129
+ type: 'permission_required';
130
+ call: ToolCallSnapshot;
131
+ respond(decision: 'allow' | 'deny', opts?: {
132
+ note?: string;
133
+ }): Promise<void>;
134
+ bookmark?: Bookmark;
135
+ }
136
+ export interface ControlPermissionDecidedEvent {
137
+ channel: 'control';
138
+ type: 'permission_decided';
139
+ callId: string;
140
+ decision: 'allow' | 'deny';
141
+ decidedBy: string;
142
+ note?: string;
143
+ bookmark?: Bookmark;
144
+ }
145
+ export type ControlEvent = ControlPermissionRequiredEvent | ControlPermissionDecidedEvent;
146
+ export interface MonitorStateChangedEvent {
147
+ channel: 'monitor';
148
+ type: 'state_changed';
149
+ state: AgentRuntimeState;
150
+ bookmark?: Bookmark;
151
+ }
152
+ export interface MonitorStepCompleteEvent {
153
+ channel: 'monitor';
154
+ type: 'step_complete';
155
+ step: number;
156
+ durationMs?: number;
157
+ bookmark: Bookmark;
158
+ }
159
+ export interface MonitorErrorEvent {
160
+ channel: 'monitor';
161
+ type: 'error';
162
+ severity: 'info' | 'warn' | 'error';
163
+ phase: 'model' | 'tool' | 'system' | 'lifecycle';
164
+ message: string;
165
+ detail?: any;
166
+ bookmark?: Bookmark;
167
+ }
168
+ export interface MonitorTokenUsageEvent {
169
+ channel: 'monitor';
170
+ type: 'token_usage';
171
+ inputTokens: number;
172
+ outputTokens: number;
173
+ totalTokens: number;
174
+ bookmark?: Bookmark;
175
+ }
176
+ export interface MonitorToolExecutedEvent {
177
+ channel: 'monitor';
178
+ type: 'tool_executed';
179
+ call: ToolCallSnapshot;
180
+ bookmark?: Bookmark;
181
+ }
182
+ export interface MonitorAgentResumedEvent {
183
+ channel: 'monitor';
184
+ type: 'agent_resumed';
185
+ strategy: 'crash' | 'manual';
186
+ sealed: ToolCallSnapshot[];
187
+ bookmark?: Bookmark;
188
+ }
189
+ export interface MonitorBreakpointChangedEvent {
190
+ channel: 'monitor';
191
+ type: 'breakpoint_changed';
192
+ previous: BreakpointState;
193
+ current: BreakpointState;
194
+ timestamp: number;
195
+ bookmark?: Bookmark;
196
+ }
197
+ export interface MonitorTodoChangedEvent {
198
+ channel: 'monitor';
199
+ type: 'todo_changed';
200
+ current: import('./todo').TodoItem[];
201
+ previous: import('./todo').TodoItem[];
202
+ bookmark?: Bookmark;
203
+ }
204
+ export interface MonitorTodoReminderEvent {
205
+ channel: 'monitor';
206
+ type: 'todo_reminder';
207
+ todos: import('./todo').TodoItem[];
208
+ reason: string;
209
+ bookmark?: Bookmark;
210
+ }
211
+ export interface MonitorFileChangedEvent {
212
+ channel: 'monitor';
213
+ type: 'file_changed';
214
+ path: string;
215
+ mtime: number;
216
+ bookmark?: Bookmark;
217
+ }
218
+ export interface MonitorReminderSentEvent {
219
+ channel: 'monitor';
220
+ type: 'reminder_sent';
221
+ category: 'file' | 'todo' | 'security' | 'performance' | 'general';
222
+ content: string;
223
+ bookmark?: Bookmark;
224
+ }
225
+ export interface MonitorContextCompressionEvent {
226
+ channel: 'monitor';
227
+ type: 'context_compression';
228
+ /** 压缩阶段:start(开始)、summarizing(生成摘要中)、end(完成)、fallback(降级) */
229
+ phase: 'start' | 'summarizing' | 'end' | 'fallback';
230
+ /** 使用的压缩算法 */
231
+ algorithm?: 'simple' | 'ai';
232
+ /** 生成的摘要内容 */
233
+ summary?: string;
234
+ /** 压缩比例(保留消息数/总消息数) */
235
+ ratio?: number;
236
+ /** 压缩掉的 token 数(估算) */
237
+ tokensRemoved?: number;
238
+ /** 保留的 token 数(估算) */
239
+ tokensRetained?: number;
240
+ /** 降级时的错误信息 */
241
+ error?: string;
242
+ bookmark?: Bookmark;
243
+ }
244
+ export interface MonitorSchedulerTriggeredEvent {
245
+ channel: 'monitor';
246
+ type: 'scheduler_triggered';
247
+ taskId: string;
248
+ spec: string;
249
+ kind: 'steps' | 'time' | 'cron';
250
+ triggeredAt: number;
251
+ bookmark?: Bookmark;
252
+ }
253
+ export interface MonitorToolManualUpdatedEvent {
254
+ channel: 'monitor';
255
+ type: 'tool_manual_updated';
256
+ tools: string[];
257
+ timestamp: number;
258
+ bookmark?: Bookmark;
259
+ }
260
+ export interface MonitorToolCustomEvent {
261
+ channel: 'monitor';
262
+ type: 'tool_custom_event';
263
+ toolName: string;
264
+ eventType: string;
265
+ data?: any;
266
+ timestamp: number;
267
+ bookmark?: Bookmark;
268
+ }
269
+ export interface MonitorSkillDiscoveredEvent {
270
+ channel: 'monitor';
271
+ type: 'skill_discovered';
272
+ skills: string[];
273
+ timestamp: number;
274
+ bookmark?: Bookmark;
275
+ }
276
+ export interface MonitorSkillActivatedEvent {
277
+ channel: 'monitor';
278
+ type: 'skill_activated';
279
+ /** 单个 skill 名称或多个 skill 名称(逗号分隔) */
280
+ skill: string;
281
+ activatedBy: 'auto' | 'agent' | 'user';
282
+ timestamp: number;
283
+ bookmark?: Bookmark;
284
+ }
285
+ export interface MonitorSkillDeactivatedEvent {
286
+ channel: 'monitor';
287
+ type: 'skill_deactivated';
288
+ name: string;
289
+ timestamp: number;
290
+ bookmark?: Bookmark;
291
+ }
292
+ export type MonitorEvent = MonitorStateChangedEvent | MonitorStepCompleteEvent | MonitorErrorEvent | MonitorTokenUsageEvent | MonitorToolExecutedEvent | MonitorAgentResumedEvent | MonitorTodoChangedEvent | MonitorTodoReminderEvent | MonitorFileChangedEvent | MonitorReminderSentEvent | MonitorContextCompressionEvent | MonitorSchedulerTriggeredEvent | MonitorBreakpointChangedEvent | MonitorToolManualUpdatedEvent | MonitorToolCustomEvent | MonitorSkillDiscoveredEvent | MonitorSkillActivatedEvent | MonitorSkillDeactivatedEvent;
293
+ export type AgentEvent = ProgressEvent | ControlEvent | MonitorEvent;
294
+ export interface AgentEventEnvelope<T extends AgentEvent = AgentEvent> {
295
+ cursor: number;
296
+ bookmark: Bookmark;
297
+ event: T;
298
+ }
299
+ export interface Timeline {
300
+ cursor: number;
301
+ bookmark: Bookmark;
302
+ event: AgentEvent;
303
+ }
304
+ export type SnapshotId = string;
305
+ export interface Snapshot {
306
+ id: SnapshotId;
307
+ messages: Message[];
308
+ lastSfpIndex: number;
309
+ lastBookmark: Bookmark;
310
+ createdAt: string;
311
+ metadata?: Record<string, any>;
312
+ }
313
+ export interface AgentStatus {
314
+ agentId: string;
315
+ state: AgentRuntimeState;
316
+ stepCount: number;
317
+ lastSfpIndex: number;
318
+ lastBookmark?: Bookmark;
319
+ cursor: number;
320
+ breakpoint: BreakpointState;
321
+ }
322
+ export interface AgentInfo {
323
+ agentId: string;
324
+ templateId: string;
325
+ createdAt: string;
326
+ lineage: string[];
327
+ configVersion: string;
328
+ messageCount: number;
329
+ lastSfpIndex: number;
330
+ lastBookmark?: Bookmark;
331
+ breakpoint?: BreakpointState;
332
+ metadata?: Record<string, any>;
333
+ }
334
+ export interface ReminderOptions {
335
+ skipStandardEnding?: boolean;
336
+ priority?: 'low' | 'medium' | 'high';
337
+ category?: 'file' | 'todo' | 'security' | 'performance' | 'general';
338
+ /** 是否持久化(用于 Skills 等需要在整个对话中保持的内容) */
339
+ persistent?: boolean;
340
+ /** 标签(用于去重和识别) */
341
+ label?: string;
342
+ }
343
+ export type ResumeStrategy = 'crash' | 'manual';
344
+ export interface ToolOutcome {
345
+ id: string;
346
+ name: string;
347
+ ok: boolean;
348
+ content: any;
349
+ durationMs?: number;
350
+ }
351
+ export interface ToolCall {
352
+ id: string;
353
+ name: string;
354
+ args: any;
355
+ agentId: string;
356
+ }
357
+ export type HookDecision = {
358
+ decision: 'ask';
359
+ meta?: any;
360
+ } | {
361
+ decision: 'deny';
362
+ reason?: string;
363
+ toolResult?: any;
364
+ } | {
365
+ result: any;
366
+ } | void;
367
+ export type PostHookResult = void | {
368
+ update: Partial<ToolOutcome>;
369
+ } | {
370
+ replace: ToolOutcome;
371
+ };
372
+ export interface ToolContext {
373
+ agentId: string;
374
+ callId?: string;
375
+ sandbox: import('../infra/sandbox').Sandbox;
376
+ agent: any;
377
+ services?: Record<string, any>;
378
+ signal?: AbortSignal;
379
+ emit?: (eventType: string, data?: any) => void;
380
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ // Core type definitions for KODE SDK v2.7
3
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,51 @@
1
+ export { Agent, AgentConfig, AgentDependencies, CompleteResult, StreamOptions, SubscribeOptions, SendOptions, } from './core/agent';
2
+ export { AgentPool } from './core/pool';
3
+ export { Room } from './core/room';
4
+ export { Scheduler, AgentSchedulerHandle } from './core/scheduler';
5
+ export { EventBus } from './core/events';
6
+ export { HookManager, Hooks } from './core/hooks';
7
+ export { ContextManager, ContextManagerOptions, ContextUsage, CompressionResult } from './core/context-manager';
8
+ export { FilePool } from './core/file-pool';
9
+ export { ICompressionStrategy, CompressionEventEmitter, CompressionEventPayload, SimpleCompressionStrategy, AICompressionStrategy, SimpleCompressionStrategyOptions, AICompressionStrategyOptions, estimateTotalTokens, estimateMessageTokens, } from './core/compression';
10
+ export { AgentTemplateRegistry, AgentTemplateDefinition, PermissionConfig, SubAgentConfig, TodoConfig, TemplateRuntimeConfig, TemplateSkillsConfig, } from './core/template';
11
+ export { TodoService, TodoItem, TodoSnapshot } from './core/todo';
12
+ export { TimeBridge } from './core/time-bridge';
13
+ export { BreakpointManager } from './core/agent/breakpoint-manager';
14
+ export { PermissionManager } from './core/agent/permission-manager';
15
+ export { MessageQueue } from './core/agent/message-queue';
16
+ export { TodoManager } from './core/agent/todo-manager';
17
+ export { ToolRunner } from './core/agent/tool-runner';
18
+ export { permissionModes, PermissionModeRegistry, PermissionModeHandler, PermissionEvaluationContext, PermissionDecision, } from './core/permission-modes';
19
+ export { Checkpointer, Checkpoint, CheckpointMetadata, AgentState, MemoryCheckpointer, } from './core/checkpointer';
20
+ export { FileCheckpointer, RedisCheckpointer } from './core/checkpointers';
21
+ export * from './core/types';
22
+ export { ResumeError, ResumeErrorCode } from './core/errors';
23
+ export { Store, JSONStore } from './infra/store';
24
+ export { Sandbox, LocalSandbox, SandboxKind } from './infra/sandbox';
25
+ export { ModelProvider, ModelConfig, ModelResponse, ModelStreamChunk, AnthropicRetryConfig, AnthropicProviderOptions, AnthropicProvider, } from './infra/provider';
26
+ export { SandboxFactory } from './infra/sandbox-factory';
27
+ export { FsRead } from './tools/fs_read';
28
+ export { FsWrite } from './tools/fs_write';
29
+ export { FsEdit } from './tools/fs_edit';
30
+ export { FsGlob } from './tools/fs_glob';
31
+ export { FsGrep } from './tools/fs_grep';
32
+ export { FsMultiEdit } from './tools/fs_multi_edit';
33
+ export { FsRm } from './tools/fs_rm';
34
+ export { BashRun } from './tools/bash_run';
35
+ export { BashLogs } from './tools/bash_logs';
36
+ export { BashKill } from './tools/bash_kill';
37
+ export { createTaskRunTool, AgentTemplate } from './tools/task_run';
38
+ export { TodoRead } from './tools/todo_read';
39
+ export { TodoWrite } from './tools/todo_write';
40
+ export { SkillList } from './tools/skill_list';
41
+ export { SkillActivate } from './tools/skill_activate';
42
+ export { SkillResource } from './tools/skill_resource';
43
+ export { builtin } from './tools/builtin';
44
+ export { ToolInstance, ToolDescriptor, ToolRegistry, globalToolRegistry } from './tools/registry';
45
+ export { defineTool, defineTools, extractTools, ToolAttributes, ParamDef, SimpleToolDef, } from './tools/define';
46
+ export { tool, tools, ToolDefinition, EnhancedToolContext } from './tools/tool';
47
+ export { getMCPTools, disconnectMCP, disconnectAllMCP, MCPConfig, MCPTransportType } from './tools/mcp';
48
+ export { ToolKit, toolMethod } from './tools/toolkit';
49
+ export { inferFromExample, schema, patterns, SchemaBuilder, mergeSchemas, extendSchema, } from './tools/type-inference';
50
+ export { SkillsParser, SkillsValidator, SkillsLoader, SkillsManager, SkillsInjector, SkillMetadata, Skill, SkillsConfig, SkillsState, SkillResources, SkillActivation, SkillParseResult, SkillValidationResult, } from './skills';
51
+ export { generateAgentId } from './utils/agent-id';