@cmodjs/core 1.6.0 → 2.0.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 (128) hide show
  1. package/docs/commands.md +4 -4
  2. package/docs/index.md +12 -11
  3. package/docs/jobs.md +12 -16
  4. package/docs/mod.md +111 -36
  5. package/docs/permissions.md +14 -18
  6. package/docs/session.md +171 -82
  7. package/docs/state.md +5 -5
  8. package/docs/testing.md +57 -41
  9. package/docs/ui.md +9 -9
  10. package/jobs/permissions/decide-permission.d.ts.map +1 -1
  11. package/jobs/permissions/decide-permission.js +1 -1
  12. package/jobs/prompt.d.ts +1 -3
  13. package/jobs/prompt.d.ts.map +1 -1
  14. package/jobs/prompt.js +2 -21
  15. package/jobs/slash-command.d.ts +1 -1
  16. package/jobs/slash-command.d.ts.map +1 -1
  17. package/jobs/slash-command.js +1 -1
  18. package/jobs/status-line.d.ts +0 -1
  19. package/jobs/status-line.d.ts.map +1 -1
  20. package/jobs/status-line.js +3 -4
  21. package/mod.d.ts +53 -105
  22. package/mod.d.ts.map +1 -1
  23. package/mod.js +18 -80
  24. package/package.json +1 -1
  25. package/records.d.ts +1 -1
  26. package/records.js +1 -1
  27. package/register.d.ts.map +1 -1
  28. package/register.js +3 -1
  29. package/runtime/before.d.ts +5 -1
  30. package/runtime/before.d.ts.map +1 -1
  31. package/runtime/before.js +81 -39
  32. package/runtime/claude.d.ts +6 -1
  33. package/runtime/claude.d.ts.map +1 -1
  34. package/runtime/conversations.d.ts.map +1 -1
  35. package/runtime/conversations.js +45 -26
  36. package/runtime/deadline.d.ts +17 -0
  37. package/runtime/deadline.d.ts.map +1 -1
  38. package/runtime/deadline.js +34 -0
  39. package/runtime/dependencies.d.ts +2 -0
  40. package/runtime/dependencies.d.ts.map +1 -1
  41. package/runtime/dependencies.js +12 -0
  42. package/runtime/grants.d.ts.map +1 -1
  43. package/runtime/grants.js +13 -8
  44. package/runtime/hooks.d.ts +28 -11
  45. package/runtime/hooks.d.ts.map +1 -1
  46. package/runtime/hooks.js +20 -123
  47. package/runtime/lifecycle.d.ts +2 -1
  48. package/runtime/lifecycle.d.ts.map +1 -1
  49. package/runtime/lifecycle.js +66 -49
  50. package/runtime/sessions.d.ts +31 -5
  51. package/runtime/sessions.d.ts.map +1 -1
  52. package/runtime/sessions.js +342 -81
  53. package/runtime/tool-calls.d.ts +0 -1
  54. package/runtime/tool-calls.d.ts.map +1 -1
  55. package/runtime/tool-calls.js +0 -19
  56. package/session/context/turn/message/instruction-file.d.ts +9 -0
  57. package/session/context/turn/message/instruction-file.d.ts.map +1 -0
  58. package/session/context/turn/message/instruction-file.js +4 -0
  59. package/session/context/turn/message/message.d.ts +5 -4
  60. package/session/context/turn/message/message.d.ts.map +1 -1
  61. package/session/context/turn/message/message.js +7 -6
  62. package/session/context/turn/message/sender.d.ts +2 -1
  63. package/session/context/turn/message/sender.d.ts.map +1 -1
  64. package/session/context/turn/message/sender.js +4 -1
  65. package/session/context/turn/message/tool-call.d.ts +5 -0
  66. package/session/context/turn/message/tool-call.d.ts.map +1 -1
  67. package/session/context/turn/message/tool-result.d.ts +6 -1
  68. package/session/context/turn/message/tool-result.d.ts.map +1 -1
  69. package/session/context/turn/turn.d.ts +7 -0
  70. package/session/context/turn/turn.d.ts.map +1 -1
  71. package/session/conversation.d.ts +10 -3
  72. package/session/conversation.d.ts.map +1 -1
  73. package/session/conversation.js +14 -5
  74. package/session/goal/goal.d.ts +1 -1
  75. package/session/goal/goal.d.ts.map +1 -1
  76. package/session/goal/task.d.ts +2 -2
  77. package/session/goal/task.d.ts.map +1 -1
  78. package/session/session.d.ts +361 -26
  79. package/session/session.d.ts.map +1 -1
  80. package/session/session.js +40 -0
  81. package/src/jobs/permissions/decide-permission.ts +2 -1
  82. package/src/jobs/prompt.ts +3 -20
  83. package/src/jobs/slash-command.ts +2 -2
  84. package/src/jobs/status-line.ts +4 -7
  85. package/src/mod.ts +52 -147
  86. package/src/records.ts +1 -1
  87. package/src/register.ts +3 -1
  88. package/src/runtime/before.ts +90 -37
  89. package/src/runtime/claude.ts +5 -1
  90. package/src/runtime/conversations.ts +41 -25
  91. package/src/runtime/deadline.ts +38 -0
  92. package/src/runtime/dependencies.ts +12 -0
  93. package/src/runtime/grants.ts +11 -7
  94. package/src/runtime/hooks.ts +48 -116
  95. package/src/runtime/lifecycle.ts +65 -50
  96. package/src/runtime/sessions.ts +366 -90
  97. package/src/runtime/tool-calls.ts +0 -19
  98. package/src/session/context/turn/message/instruction-file.ts +13 -0
  99. package/src/session/context/turn/message/message.ts +11 -9
  100. package/src/session/context/turn/message/sender.ts +5 -2
  101. package/src/session/context/turn/message/tool-call.ts +3 -0
  102. package/src/session/context/turn/message/tool-result.ts +6 -1
  103. package/src/session/context/turn/turn.ts +4 -0
  104. package/src/session/conversation.ts +21 -8
  105. package/src/session/goal/goal.ts +1 -1
  106. package/src/session/goal/task.ts +2 -2
  107. package/src/session/session.ts +227 -24
  108. package/src/testing/claude-code.ts +23 -0
  109. package/src/testing/fake-claude.ts +5 -1
  110. package/src/testing/fake-sessions.ts +38 -24
  111. package/src/testing.ts +84 -16
  112. package/testing/claude-code.d.ts +12 -0
  113. package/testing/claude-code.d.ts.map +1 -0
  114. package/testing/claude-code.js +10 -0
  115. package/testing/fake-claude.d.ts +4 -0
  116. package/testing/fake-claude.d.ts.map +1 -1
  117. package/testing/fake-claude.js +4 -1
  118. package/testing/fake-sessions.d.ts +8 -6
  119. package/testing/fake-sessions.d.ts.map +1 -1
  120. package/testing/fake-sessions.js +35 -20
  121. package/testing.d.ts +38 -9
  122. package/testing.d.ts.map +1 -1
  123. package/testing.js +54 -5
  124. package/docs/hooks.md +0 -259
  125. package/session/context/turn/message/document.d.ts +0 -7
  126. package/session/context/turn/message/document.d.ts.map +0 -1
  127. package/session/context/turn/message/document.js +0 -1
  128. package/src/session/context/turn/message/document.ts +0 -8
@@ -1,7 +1,8 @@
1
1
  import type { Disposable } from '../utils/disposable.js';
2
2
  import type { Matcher } from '../utils/matcher.js';
3
+ import type { Sender } from './context/turn/message/sender.js';
3
4
  import type { Context, ContextEnd, ContextStart } from './context/context.js';
4
- import type { Document } from './context/turn/message/document.js';
5
+ import type { InstructionFile } from './context/turn/message/instruction-file.js';
5
6
  import type { Message, MessageType } from './context/turn/message/message.js';
6
7
  import type { Note } from './context/turn/message/note.js';
7
8
  import type { Notice } from './context/turn/message/notice.js';
@@ -25,7 +26,7 @@ export type SessionPayload = {
25
26
  readonly toolCall: ToolCall;
26
27
  readonly toolResult: ToolResult;
27
28
  readonly skill: Skill;
28
- readonly document: Document;
29
+ readonly instructionFile: InstructionFile;
29
30
  readonly notice: Notice;
30
31
  readonly contextStart: Context;
31
32
  readonly contextEnd: Context;
@@ -41,7 +42,9 @@ export type Refusal = {
41
42
  };
42
43
  export type BeforeAnswer = {
43
44
  readonly prompt: {
44
- readonly text: string;
45
+ readonly text?: string;
46
+ readonly note?: string;
47
+ readonly title?: string;
45
48
  } | Refusal;
46
49
  readonly note: {
47
50
  readonly text: string;
@@ -49,7 +52,7 @@ export type BeforeAnswer = {
49
52
  readonly skill: {
50
53
  readonly text: string;
51
54
  };
52
- readonly document: {
55
+ readonly instructionFile: {
53
56
  readonly text: string;
54
57
  } | Refusal;
55
58
  readonly reply: {
@@ -61,7 +64,9 @@ export type BeforeAnswer = {
61
64
  readonly result: string;
62
65
  } | Refusal;
63
66
  readonly toolResult: {
64
- readonly text: string;
67
+ readonly output?: unknown;
68
+ readonly isError?: true;
69
+ readonly note?: string;
65
70
  };
66
71
  readonly notice: {
67
72
  readonly text: string;
@@ -71,35 +76,73 @@ export type BeforeAnswer = {
71
76
  readonly model: string;
72
77
  };
73
78
  } | Refusal;
74
- readonly taskEnd: Refusal;
75
79
  readonly turnEnd: Refusal;
76
80
  readonly contextEnd: Refusal;
77
81
  };
78
82
  export type BeforeEvent = keyof BeforeAnswer;
79
83
  export type Usage = {
80
84
  readonly model: string;
81
- readonly context: {
82
- readonly tokens?: number;
83
- readonly window?: number;
85
+ readonly contextWindow: {
86
+ readonly tokenCount?: number;
87
+ readonly size?: number;
84
88
  readonly percent?: number;
85
89
  };
86
90
  readonly cost?: {
87
91
  readonly usd: number;
88
92
  };
89
93
  };
90
- export type Client = 'terminal' | 'desktop' | 'mobile' | 'vscode';
91
- export type Listener<Event extends SessionEvent> = (payload: SessionPayload[Event]) => unknown;
92
- export type BeforeListener<Event extends BeforeEvent> = (payload: SessionPayload[Event]) => BeforeAnswer[Event] | void | Promise<BeforeAnswer[Event] | void>;
93
- export type SearchOptions = {
94
- readonly limit?: number;
95
- readonly before?: Pick<Message, 'session' | 'id'>;
94
+ export type Surface = 'terminal' | 'desktop' | 'mobile' | 'vscode';
95
+ export declare const sessionEvents: {
96
+ readonly Message: 'message';
97
+ readonly Prompt: 'prompt';
98
+ readonly Note: 'note';
99
+ readonly Reply: 'reply';
100
+ readonly ToolCall: 'toolCall';
101
+ readonly ToolResult: 'toolResult';
102
+ readonly Skill: 'skill';
103
+ readonly InstructionFile: 'instructionFile';
104
+ readonly Notice: 'notice';
105
+ readonly ContextStart: 'contextStart';
106
+ readonly ContextEnd: 'contextEnd';
107
+ readonly TurnStart: 'turnStart';
108
+ readonly TurnEnd: 'turnEnd';
109
+ readonly TaskStart: 'taskStart';
110
+ readonly TaskEnd: 'taskEnd';
111
+ readonly GoalChange: 'goalChange';
112
+ readonly UsageChange: 'usageChange';
113
+ };
114
+ export declare const beforeEvents: readonly ["Prompt", "Note", "Skill", "InstructionFile", "Reply", "ToolCall", "ToolResult", "Notice", "TaskStart", "TurnEnd", "ContextEnd"];
115
+ export type EventName = keyof typeof sessionEvents;
116
+ export type BeforeName = (typeof beforeEvents)[number];
117
+ export type PayloadOf<Name extends EventName> = SessionPayload[(typeof sessionEvents)[Name]];
118
+ export type AnswerOf<Name extends BeforeName> = (typeof sessionEvents)[Name] extends BeforeEvent ? BeforeAnswer[(typeof sessionEvents)[Name]] : never;
119
+ export type ReadOptions = {
120
+ readonly timeoutMs?: number;
121
+ };
122
+ export type AnswerOptions = ReadOptions & {
123
+ readonly onFailure?: 'pass' | 'refuse';
124
+ };
125
+ export type ListenerTime = {
126
+ readonly deadline: number;
127
+ readonly signal: AbortSignal;
96
128
  };
97
- export type RecordPart = {
98
- search(text: string, options?: SearchOptions): Promise<Message[]>;
99
- on<Event extends SessionEvent>(event: Event, listener: Listener<Event>): Disposable;
100
- on<Event extends SessionEvent>(event: Event, matcher: Matcher<SessionPayload[Event]>, listener: Listener<Event>): Disposable;
101
- before<Event extends BeforeEvent>(event: Event, listener: BeforeListener<Event>): Disposable;
102
- before<Event extends BeforeEvent>(event: Event, matcher: Matcher<SessionPayload[Event]>, listener: BeforeListener<Event>): Disposable;
129
+ export type Listener<Payload, Answer = void> = (payload: Payload, time: ListenerTime) => Answer | void | Promise<Answer | void>;
130
+ export type OnMethod<Payload> = {
131
+ (listener: Listener<Payload, unknown>, options?: ReadOptions): Disposable;
132
+ (matcher: Matcher<Payload>, listener: Listener<Payload, unknown>, options?: ReadOptions): Disposable;
133
+ };
134
+ export type BeforeMethod<Payload, Answer> = {
135
+ (listener: Listener<Payload, Answer>, options?: AnswerOptions): Disposable;
136
+ (matcher: Matcher<Payload>, listener: Listener<Payload, Answer>, options?: AnswerOptions): Disposable;
137
+ };
138
+ export type OnMethods = {
139
+ readonly [Name in EventName as `on${Name}`]: OnMethod<PayloadOf<Name>>;
140
+ };
141
+ export type BeforeMethods = {
142
+ readonly [Name in BeforeName as `before${Name}`]: BeforeMethod<PayloadOf<Name>, AnswerOf<Name>>;
143
+ };
144
+ export type RecordPart = OnMethods & BeforeMethods & {
145
+ search(text: string, matcher?: Matcher<Message>): AsyncIterable<Message>;
103
146
  };
104
147
  export type SessionSend = {
105
148
  readonly type: typeof Prompt | typeof Note;
@@ -110,6 +153,7 @@ export type TaskStartArgs = {
110
153
  readonly prompt: string;
111
154
  readonly agentType?: string;
112
155
  readonly model?: string;
156
+ readonly title: string;
113
157
  readonly name?: string;
114
158
  readonly cwd?: string;
115
159
  };
@@ -128,7 +172,7 @@ export type Session = RecordPart & {
128
172
  readonly startedAt: string;
129
173
  readonly lastAt: string;
130
174
  readonly forkedFrom?: string;
131
- goal(): Promise<Goal>;
175
+ readonly goal: Goal;
132
176
  context(): Promise<Context>;
133
177
  contexts(): Promise<Context[]>;
134
178
  turn(): Promise<Turn | undefined>;
@@ -143,16 +187,307 @@ export type Session = RecordPart & {
143
187
  startTask(task: TaskStartArgs): Promise<Task>;
144
188
  callTool(call: ToolCallArgs): Promise<ToolResult>;
145
189
  usage(): Promise<Usage>;
146
- clients(): Promise<Client[]>;
190
+ surfaces(): Promise<Surface[]>;
147
191
  };
192
+ export type TaskOwner = Omit<Session, 'startTask' | 'callTool'>;
193
+ export declare const processEvents: {
194
+ readonly ProjectSetup: {
195
+ readonly on: 'Setup';
196
+ readonly before: 'Setup';
197
+ };
198
+ readonly SessionStart: {
199
+ readonly on: 'SessionStart';
200
+ readonly before: 'SessionStart';
201
+ };
202
+ readonly SessionEnd: {
203
+ readonly on: 'SessionEnd';
204
+ };
205
+ readonly ModelChange: {
206
+ readonly on: 'PostModelSwitch';
207
+ readonly before: 'PreModelSwitch';
208
+ };
209
+ readonly CwdChange: {
210
+ readonly on: 'CwdChanged';
211
+ };
212
+ readonly DirectoryAdd: {
213
+ readonly on: 'DirectoryAdded';
214
+ };
215
+ readonly WorktreeCreate: {
216
+ readonly on: 'WorktreeCreate';
217
+ readonly before: 'WorktreeCreate';
218
+ };
219
+ readonly WorktreeRemove: {
220
+ readonly on: 'WorktreeRemove';
221
+ };
222
+ readonly Notification: {
223
+ readonly on: 'Notification';
224
+ };
225
+ readonly Elicitation: {
226
+ readonly on: 'Elicitation';
227
+ readonly before: 'Elicitation';
228
+ };
229
+ readonly ElicitationResponse: {
230
+ readonly on: 'ElicitationResult';
231
+ readonly before: 'ElicitationResult';
232
+ };
233
+ readonly PermissionCheck: {
234
+ readonly on: 'tool.check';
235
+ readonly before: 'tool.check';
236
+ };
237
+ readonly PermissionRequest: {
238
+ readonly on: 'PermissionRequest';
239
+ readonly before: 'PermissionRequest';
240
+ };
241
+ readonly PermissionDenial: {
242
+ readonly on: 'PermissionDenied';
243
+ readonly before: 'PermissionDenied';
244
+ };
245
+ readonly ToolBatch: {
246
+ readonly on: 'PostToolBatch';
247
+ readonly before: 'PostToolBatch';
248
+ };
249
+ readonly TodoCreate: {
250
+ readonly on: 'TaskCreated';
251
+ readonly before: 'TaskCreated';
252
+ };
253
+ readonly TodoComplete: {
254
+ readonly on: 'TaskCompleted';
255
+ readonly before: 'TaskCompleted';
256
+ };
257
+ readonly ReplyDisplay: {
258
+ readonly on: 'MessageDisplay';
259
+ readonly before: 'MessageDisplay';
260
+ };
261
+ };
262
+ export type Placement = {
263
+ readonly session: string;
264
+ readonly task?: string;
265
+ readonly agentType?: string;
266
+ readonly cwd: string;
267
+ readonly permissionMode?: string;
268
+ };
269
+ export type SessionStartAsked = Placement & {
270
+ readonly source: 'startup' | 'resume' | 'clear' | 'fork' | 'compact';
271
+ readonly model?: string;
272
+ readonly title?: string;
273
+ readonly idleSeconds?: number;
274
+ readonly contextTokenCount?: number;
275
+ readonly isCacheWarm?: boolean;
276
+ readonly cacheWriteUsd?: number;
277
+ };
278
+ export type SessionStarted = Omit<SessionStartAsked, 'source'> & {
279
+ readonly source: 'startup' | 'resume' | 'clear' | 'fork';
280
+ };
281
+ export type ProjectSetup = Placement & {
282
+ readonly trigger: 'init' | 'maintenance';
283
+ };
284
+ export type SessionEnded = Placement & {
285
+ readonly reason: 'clear' | 'resume' | 'logout' | 'exit' | 'other';
286
+ };
287
+ export type ModelChange = Placement & {
288
+ readonly model: string;
289
+ readonly previous: string;
290
+ readonly requested?: string;
291
+ readonly source: 'command' | 'picker' | 'sdk' | 'auto' | 'resume';
292
+ readonly contextTokenCount: number;
293
+ readonly isCacheWarm: boolean;
294
+ readonly cacheTtl: '5m' | '1h';
295
+ readonly cacheWriteUsd: number;
296
+ readonly pricing?: 'configured' | 'catalog' | 'default';
297
+ };
298
+ export type CwdChange = Placement & {
299
+ readonly previous: string;
300
+ };
301
+ export type DirectoryAdd = Placement & {
302
+ readonly directory: string;
303
+ readonly source: 'command' | 'sdk';
304
+ };
305
+ export type Worktree = Placement & {
306
+ readonly name?: string;
307
+ readonly path?: string;
308
+ };
309
+ export type Notification = Placement & {
310
+ readonly text: string;
311
+ readonly title?: string;
312
+ readonly type: string;
313
+ };
314
+ export type Elicitation = Placement & {
315
+ readonly id?: string;
316
+ readonly server: string;
317
+ readonly text: string;
318
+ readonly mode?: 'form' | 'url';
319
+ readonly url?: string;
320
+ readonly schema?: Readonly<Record<string, unknown>>;
321
+ };
322
+ export type ElicitationResponse = Placement & {
323
+ readonly id?: string;
324
+ readonly server: string;
325
+ readonly mode?: 'form' | 'url';
326
+ readonly action: 'accept' | 'decline' | 'cancel';
327
+ readonly content?: Readonly<Record<string, unknown>>;
328
+ };
329
+ export type McpServer = {
330
+ readonly name: string;
331
+ readonly source: string;
332
+ };
333
+ type PermissionRules = {
334
+ readonly rules: readonly {
335
+ readonly toolName: string;
336
+ readonly ruleContent?: string;
337
+ }[];
338
+ readonly behavior: 'allow' | 'deny' | 'ask';
339
+ };
340
+ type PermissionDestination = {
341
+ readonly destination: 'userSettings' | 'projectSettings' | 'localSettings' | 'session' | 'cliArg';
342
+ };
343
+ export type PermissionUpdate = PermissionDestination & ((PermissionRules & {
344
+ readonly type: 'addRules' | 'replaceRules' | 'removeRules';
345
+ }) | {
346
+ readonly type: 'setMode';
347
+ readonly mode: 'default' | 'acceptEdits' | 'bypassPermissions' | 'plan' | 'dontAsk' | 'auto';
348
+ } | {
349
+ readonly type: 'addDirectories' | 'removeDirectories';
350
+ readonly directories: readonly string[];
351
+ });
352
+ export type PermissionCheck = Placement & {
353
+ readonly name: string;
354
+ readonly input: Readonly<Record<string, unknown>>;
355
+ readonly callId?: string;
356
+ readonly decision: 'allow' | 'ask' | 'refuse';
357
+ readonly reason?: string;
358
+ readonly rule?: string;
359
+ readonly ceiling?: 'allow' | 'ask' | 'refuse';
360
+ };
361
+ export type PermissionRequest = Placement & {
362
+ readonly name: string;
363
+ readonly input: Readonly<Record<string, unknown>>;
364
+ readonly suggestions: readonly PermissionUpdate[];
365
+ readonly mcpServer?: McpServer;
366
+ };
367
+ export type PermissionDenial = Placement & {
368
+ readonly name: string;
369
+ readonly input: Readonly<Record<string, unknown>>;
370
+ readonly callId: string;
371
+ readonly reason: string;
372
+ readonly mcpServer?: McpServer;
373
+ };
374
+ export type BatchedCall = {
375
+ readonly callId: string;
376
+ readonly name: string;
377
+ readonly input: Readonly<Record<string, unknown>>;
378
+ readonly output?: unknown;
379
+ };
380
+ export type ToolBatch = Placement & {
381
+ readonly calls: readonly BatchedCall[];
382
+ };
383
+ export type Todo = Placement & {
384
+ readonly id: string;
385
+ readonly subject: string;
386
+ readonly description?: string;
387
+ readonly teammate?: string;
388
+ };
389
+ export type ReplyDisplay = Placement & {
390
+ readonly replyId: string;
391
+ readonly index: number;
392
+ readonly isLast: boolean;
393
+ readonly text: string;
394
+ };
395
+ export type CommandRun = Placement & {
396
+ readonly name: string;
397
+ readonly args: string;
398
+ readonly source?: 'builtin' | 'plugin' | 'user' | 'mcp';
399
+ readonly from: Sender;
400
+ };
401
+ export type CommandRunAnswer = {
402
+ readonly args?: string;
403
+ readonly note?: string;
404
+ } | {
405
+ readonly result: string;
406
+ readonly exitCode?: number;
407
+ } | Refusal;
408
+ export type ProcessPayload = {
409
+ readonly ProjectSetup: ProjectSetup;
410
+ readonly SessionStart: SessionStarted;
411
+ readonly SessionEnd: SessionEnded;
412
+ readonly ModelChange: ModelChange;
413
+ readonly CwdChange: CwdChange;
414
+ readonly DirectoryAdd: DirectoryAdd;
415
+ readonly WorktreeCreate: Worktree;
416
+ readonly WorktreeRemove: Worktree;
417
+ readonly Notification: Notification;
418
+ readonly Elicitation: Elicitation;
419
+ readonly ElicitationResponse: ElicitationResponse;
420
+ readonly PermissionCheck: PermissionCheck;
421
+ readonly PermissionRequest: PermissionRequest;
422
+ readonly PermissionDenial: PermissionDenial;
423
+ readonly ToolBatch: ToolBatch;
424
+ readonly TodoCreate: Todo;
425
+ readonly TodoComplete: Todo;
426
+ readonly ReplyDisplay: ReplyDisplay;
427
+ };
428
+ export type ProcessAsked = Omit<ProcessPayload, 'SessionStart'> & {
429
+ readonly SessionStart: SessionStartAsked;
430
+ };
431
+ export type ProcessAnswer = {
432
+ readonly ProjectSetup: Record<never, never>;
433
+ readonly SessionStart: {
434
+ readonly note?: string;
435
+ readonly title?: string;
436
+ readonly reloadSkills?: true;
437
+ readonly firstPrompt?: string;
438
+ };
439
+ readonly ModelChange: {
440
+ readonly ask: string;
441
+ } | Refusal;
442
+ readonly WorktreeCreate: {
443
+ readonly result: string;
444
+ };
445
+ readonly Elicitation: Refusal;
446
+ readonly ElicitationResponse: Refusal;
447
+ readonly PermissionCheck: {
448
+ readonly allow: true;
449
+ } | {
450
+ readonly ask: string;
451
+ } | Refusal;
452
+ readonly PermissionRequest: {
453
+ readonly allow: true;
454
+ readonly input?: Readonly<Record<string, unknown>>;
455
+ readonly updates?: readonly PermissionUpdate[];
456
+ } | (Refusal & {
457
+ readonly interrupt?: true;
458
+ });
459
+ readonly PermissionDenial: {
460
+ readonly retry: true;
461
+ };
462
+ readonly ToolBatch: {
463
+ readonly note: string;
464
+ };
465
+ readonly TodoCreate: Refusal;
466
+ readonly TodoComplete: Refusal;
467
+ readonly ReplyDisplay: {
468
+ readonly text: string;
469
+ };
470
+ };
471
+ export type ProcessName = keyof typeof processEvents;
472
+ export type ProcessOnMethods = {
473
+ readonly [Name in ProcessName as `on${Name}`]: OnMethod<ProcessPayload[Name]>;
474
+ };
475
+ export type ProcessBeforeMethods = {
476
+ readonly [Name in keyof ProcessAnswer as `before${Name}`]: BeforeMethod<ProcessAsked[Name], ProcessAnswer[Name]>;
477
+ };
478
+ export type CurrentSession = Session & ProcessOnMethods & ProcessBeforeMethods;
148
479
  export type SessionScope = {
149
480
  readonly running?: boolean;
150
481
  readonly since?: string;
151
482
  readonly everyProject?: boolean;
152
483
  };
153
- export type Sessions = Omit<RecordPart, 'search'> & {
154
- readonly current: Session;
484
+ export type SearchOptions = SessionScope & {
485
+ readonly before?: Pick<Message, 'session' | 'id'>;
486
+ };
487
+ export type Sessions = OnMethods & {
488
+ readonly current: CurrentSession;
155
489
  list(options?: SessionScope): Promise<Session[]>;
156
- search(text: string, options?: SessionScope & SearchOptions): Promise<Message[]>;
490
+ search(text: string, matcher?: Matcher<Message>, options?: SearchOptions): AsyncIterable<Message>;
157
491
  };
492
+ export {};
158
493
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session/session.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,42 @@
1
1
  export const Session = 'session';
2
2
  export const UsageChange = 'usageChange';
3
+ export const sessionEvents = {
4
+ Message: 'message',
5
+ Prompt: 'prompt',
6
+ Note: 'note',
7
+ Reply: 'reply',
8
+ ToolCall: 'toolCall',
9
+ ToolResult: 'toolResult',
10
+ Skill: 'skill',
11
+ InstructionFile: 'instructionFile',
12
+ Notice: 'notice',
13
+ ContextStart: 'contextStart',
14
+ ContextEnd: 'contextEnd',
15
+ TurnStart: 'turnStart',
16
+ TurnEnd: 'turnEnd',
17
+ TaskStart: 'taskStart',
18
+ TaskEnd: 'taskEnd',
19
+ GoalChange: 'goalChange',
20
+ UsageChange: 'usageChange',
21
+ };
22
+ export const beforeEvents = ['Prompt', 'Note', 'Skill', 'InstructionFile', 'Reply', 'ToolCall', 'ToolResult', 'Notice', 'TaskStart', 'TurnEnd', 'ContextEnd'];
23
+ export const processEvents = {
24
+ ProjectSetup: { on: 'Setup', before: 'Setup' },
25
+ SessionStart: { on: 'SessionStart', before: 'SessionStart' },
26
+ SessionEnd: { on: 'SessionEnd' },
27
+ ModelChange: { on: 'PostModelSwitch', before: 'PreModelSwitch' },
28
+ CwdChange: { on: 'CwdChanged' },
29
+ DirectoryAdd: { on: 'DirectoryAdded' },
30
+ WorktreeCreate: { on: 'WorktreeCreate', before: 'WorktreeCreate' },
31
+ WorktreeRemove: { on: 'WorktreeRemove' },
32
+ Notification: { on: 'Notification' },
33
+ Elicitation: { on: 'Elicitation', before: 'Elicitation' },
34
+ ElicitationResponse: { on: 'ElicitationResult', before: 'ElicitationResult' },
35
+ PermissionCheck: { on: 'tool.check', before: 'tool.check' },
36
+ PermissionRequest: { on: 'PermissionRequest', before: 'PermissionRequest' },
37
+ PermissionDenial: { on: 'PermissionDenied', before: 'PermissionDenied' },
38
+ ToolBatch: { on: 'PostToolBatch', before: 'PostToolBatch' },
39
+ TodoCreate: { on: 'TaskCreated', before: 'TaskCreated' },
40
+ TodoComplete: { on: 'TaskCompleted', before: 'TaskCompleted' },
41
+ ReplyDisplay: { on: 'MessageDisplay', before: 'MessageDisplay' },
42
+ };
@@ -1,4 +1,3 @@
1
- import { strictness } from '../../runtime/hooks.js'
2
1
  import { messageOf } from '../../utils/text.js'
3
2
  import { callBaseOf, callEffects, type CallEffects, type Call } from '../../utils/call-effects.js'
4
3
  import type { Workspace } from './find-project-scope.js'
@@ -6,6 +5,8 @@ import { folderInScope, matchTarget, targetOf, type MatchedCall, type Target, ty
6
5
  import { resolve } from '../../vendor.js'
7
6
  import { inFolder } from '../context.js'
8
7
 
8
+ const strictness = ['allow', 'ask', 'deny'] as const
9
+
9
10
  export type Rule<Mod> = {
10
11
  [Key in TargetKey]: TargetOf<Key> & {
11
12
  when?: (call: TargetCalls[Key] & { readonly folder: string }, mod: Mod) => boolean | Promise<boolean>
@@ -7,20 +7,18 @@ import { callEffects, type Call } from '../utils/call-effects.js'
7
7
  import { matchTarget, targetOf, type Target } from './permissions/match-target.js'
8
8
  import { afterCall, inFolder, targetWords, withinDeadline } from './context.js'
9
9
 
10
- type PromptInput = { userPrompt?: string; call?: Call & { readonly folder: string } }
10
+ type PromptInput = { call?: Call & { readonly folder: string } }
11
11
 
12
12
  type PromptOptions<State extends object> = {
13
13
  name: string
14
14
  prompt: string | ((input: PromptInput, mod: Mod<State>) => string | undefined | Promise<string | undefined>)
15
- when?: RegExp | ((userPrompt: string) => boolean)
16
15
  after?: Target | Target[]
17
16
  }
18
17
 
19
18
  const deadline: Deadline = { ms: 5000, job: 'prompt' }
20
19
 
21
- export function prompt<State extends object = Record<never, never>>({ name, prompt: text, when, after }: PromptOptions<State>): Job<void, State> {
20
+ export function prompt<State extends object = Record<never, never>>({ name, prompt: text, after }: PromptOptions<State>): Job<void, State> {
22
21
  if (name.trim() === '') throw new Error('prompt: give the block a name. Claude reads the text under it.')
23
- if (when !== undefined && after !== undefined) throw new Error(`prompt "${name}": use when or after, not both. Add a second prompt for the other trigger.`)
24
22
  const targets = after === undefined ? [] : Array.isArray(after) ? after : [after]
25
23
  for (const target of targets) targetOf(target)
26
24
 
@@ -43,10 +41,7 @@ export function prompt<State extends object = Record<never, never>>({ name, prom
43
41
  return value === undefined ? undefined : `# ${name}\n${value}`
44
42
  }
45
43
 
46
- if (when !== undefined) {
47
- addAfterUserPrompts(job, when, (userPrompt) => headedText({ userPrompt }), log)
48
- job.announce(`the ${name} prompt after matching user prompts`)
49
- } else if (targets.length > 0) {
44
+ if (targets.length > 0) {
50
45
  addAfterCalls(job, targets, headedText, log)
51
46
  job.announce(`the ${name} prompt after ${listed(targets.map(targetWords))}`)
52
47
  } else {
@@ -96,18 +91,6 @@ function addKeptCurrent<State extends object>(job: JobContext<State>, name: stri
96
91
  })
97
92
  }
98
93
 
99
- function addAfterUserPrompts<State extends object>(job: JobContext<State>, when: RegExp | ((userPrompt: string) => boolean), textFor: (userPrompt: string) => Promise<string | undefined>, log: (reason: string) => void): void {
100
- engineOf(job.mod).router.add('prompt.submit', async (e, next) => {
101
- let value: string | undefined
102
- try {
103
- if (typeof when === 'function' ? when(e.text) : e.text.search(when) >= 0) value = await textFor(e.text)
104
- } catch (error) {
105
- log(`its when check failed: ${messageOf(error)}`)
106
- }
107
- return next(value === undefined ? e : { ...e, context: [...(e.context ?? []), value] })
108
- })
109
- }
110
-
111
94
  function addAfterCalls<State extends object>(job: JobContext<State>, targets: Target[], textFor: (input: PromptInput) => Promise<string | undefined>, log: (reason: string) => void): void {
112
95
  afterCall(
113
96
  job,
@@ -6,7 +6,7 @@ import { engineOf } from '../runtime/engine.js'
6
6
  import { messageOf } from '../utils/text.js'
7
7
  import { withinDeadline } from './context.js'
8
8
 
9
- export type CommandReply = string | { text?: string; context?: string } | undefined
9
+ export type CommandReply = string | { text?: string; note?: string } | undefined
10
10
 
11
11
  const deadline: Deadline = { ms: 30000, job: 'slashCommand' }
12
12
 
@@ -57,7 +57,7 @@ export function slashCommand<State extends object = Record<never, never>>(option
57
57
  function answerOf(reply: CommandReply | void): CommandRunResult {
58
58
  if (reply === undefined) return {}
59
59
  if (typeof reply === 'string') return { text: reply }
60
- return { ...(reply.text === undefined ? {} : { text: reply.text }), ...(reply.context === undefined ? {} : { context: [reply.context] }) }
60
+ return { ...(reply.text === undefined ? {} : { text: reply.text }), ...(reply.note === undefined ? {} : { context: [reply.note] }) }
61
61
  }
62
62
 
63
63
  function splitWords(args: string): string[] {