@moxxy/sdk 0.1.2 → 0.1.3

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 (96) hide show
  1. package/README.md +73 -73
  2. package/dist/compactor-helpers.d.ts +4 -1
  3. package/dist/compactor-helpers.d.ts.map +1 -1
  4. package/dist/compactor-helpers.js +50 -21
  5. package/dist/compactor-helpers.js.map +1 -1
  6. package/dist/define.d.ts +4 -0
  7. package/dist/define.d.ts.map +1 -1
  8. package/dist/define.js +6 -0
  9. package/dist/define.js.map +1 -1
  10. package/dist/embedding.d.ts +17 -0
  11. package/dist/embedding.d.ts.map +1 -1
  12. package/dist/errors.d.ts +1 -1
  13. package/dist/errors.d.ts.map +1 -1
  14. package/dist/errors.js.map +1 -1
  15. package/dist/fs-utils.d.ts +27 -0
  16. package/dist/fs-utils.d.ts.map +1 -0
  17. package/dist/fs-utils.js +44 -0
  18. package/dist/fs-utils.js.map +1 -0
  19. package/dist/http-utils.d.ts +16 -0
  20. package/dist/http-utils.d.ts.map +1 -0
  21. package/dist/http-utils.js +40 -0
  22. package/dist/http-utils.js.map +1 -0
  23. package/dist/index.d.ts +12 -6
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +9 -4
  26. package/dist/index.js.map +1 -1
  27. package/dist/mode-helpers.d.ts +58 -0
  28. package/dist/mode-helpers.d.ts.map +1 -1
  29. package/dist/mode-helpers.js +119 -0
  30. package/dist/mode-helpers.js.map +1 -1
  31. package/dist/mode.d.ts +8 -0
  32. package/dist/mode.d.ts.map +1 -1
  33. package/dist/mutex.d.ts +15 -0
  34. package/dist/mutex.d.ts.map +1 -0
  35. package/dist/mutex.js +15 -0
  36. package/dist/mutex.js.map +1 -0
  37. package/dist/plugin.d.ts +27 -1
  38. package/dist/plugin.d.ts.map +1 -1
  39. package/dist/provider-utils.d.ts +6 -0
  40. package/dist/provider-utils.d.ts.map +1 -1
  41. package/dist/provider-utils.js +8 -0
  42. package/dist/provider-utils.js.map +1 -1
  43. package/dist/resolvers.d.ts +52 -0
  44. package/dist/resolvers.d.ts.map +1 -0
  45. package/dist/resolvers.js +123 -0
  46. package/dist/resolvers.js.map +1 -0
  47. package/dist/schemas.d.ts +24 -24
  48. package/dist/session-like.d.ts +85 -1
  49. package/dist/session-like.d.ts.map +1 -1
  50. package/dist/voice.d.ts +36 -0
  51. package/dist/voice.d.ts.map +1 -0
  52. package/dist/voice.js +82 -0
  53. package/dist/voice.js.map +1 -0
  54. package/dist/workflow.d.ts +144 -0
  55. package/dist/workflow.d.ts.map +1 -0
  56. package/dist/workflow.js +14 -0
  57. package/dist/workflow.js.map +1 -0
  58. package/package.json +14 -14
  59. package/src/compactor-helpers.test.ts +41 -0
  60. package/src/compactor-helpers.ts +53 -19
  61. package/src/define.ts +10 -0
  62. package/src/embedding.ts +18 -0
  63. package/src/errors.ts +3 -0
  64. package/src/fs-utils.test.ts +61 -0
  65. package/src/fs-utils.ts +55 -0
  66. package/src/http-utils.test.ts +36 -0
  67. package/src/http-utils.ts +40 -0
  68. package/src/index.ts +58 -3
  69. package/src/mode-helpers.ts +169 -0
  70. package/src/mode.ts +8 -0
  71. package/src/mutex.test.ts +36 -0
  72. package/src/mutex.ts +31 -0
  73. package/src/plugin.ts +27 -1
  74. package/src/provider-utils.ts +9 -0
  75. package/src/resolvers.test.ts +45 -0
  76. package/src/resolvers.ts +164 -0
  77. package/src/session-like.ts +87 -1
  78. package/src/stuck-loop.test.ts +42 -0
  79. package/src/voice.ts +103 -0
  80. package/src/workflow.ts +165 -0
  81. package/dist/command-sync.d.ts +0 -23
  82. package/dist/command-sync.d.ts.map +0 -1
  83. package/dist/command-sync.js +0 -36
  84. package/dist/command-sync.js.map +0 -1
  85. package/dist/loop-helpers.d.ts +0 -68
  86. package/dist/loop-helpers.d.ts.map +0 -1
  87. package/dist/loop-helpers.js +0 -283
  88. package/dist/loop-helpers.js.map +0 -1
  89. package/dist/loop.d.ts +0 -106
  90. package/dist/loop.d.ts.map +0 -1
  91. package/dist/loop.js +0 -2
  92. package/dist/loop.js.map +0 -1
  93. package/dist/plugin-kind.d.ts +0 -10
  94. package/dist/plugin-kind.d.ts.map +0 -1
  95. package/dist/plugin-kind.js +0 -31
  96. package/dist/plugin-kind.js.map +0 -1
@@ -1,68 +0,0 @@
1
- import type { ProviderMessage } from './provider.js';
2
- import type { LoopContext } from './loop.js';
3
- import type { StopReason } from './provider-utils.js';
4
- import type { Skill } from './skill.js';
5
- /**
6
- * Shared bits used by every loop strategy: a typed tool-use struct and a
7
- * common stream-collection helper that runs `onBeforeProviderCall` hooks
8
- * and reduces a provider stream down to `{text, toolUses, stopReason}`.
9
- *
10
- * Lives in core (not in each loop package) so a new loop strategy stays
11
- * consistent — and so behavioral fixes here propagate. Previously
12
- * loop-plan-execute had its own copy that skipped the hook (audit bug).
13
- */
14
- export interface CollectedToolUse {
15
- readonly id: string;
16
- readonly name: string;
17
- readonly input: unknown;
18
- }
19
- /**
20
- * Compose a model-facing system prompt that includes any base prompt
21
- * plus a COMPACT skill index (name + description + triggers only).
22
- *
23
- * Lazy-loading design: the body is intentionally NOT inlined. The model
24
- * matches user intent against the description/triggers, then calls the
25
- * `load_skill` tool to fetch the body of the skill it picked. This keeps
26
- * the system prompt small even with many skills installed and avoids
27
- * paying for skill bodies the model never actually follows.
28
- */
29
- export declare function buildSystemPromptWithSkills(baseSystemPrompt: string | undefined, skills: ReadonlyArray<Skill>): string | undefined;
30
- export interface ProjectMessagesOptions {
31
- /** Optional system prompt; emitted as the first message when set. */
32
- readonly systemPrompt?: string;
33
- /** Optional trailing user message — useful for plan-execute's "Focus on this step now: X". */
34
- readonly trailingUserText?: string;
35
- }
36
- /**
37
- * Project the session's event log to a flat list of ProviderMessages
38
- * suitable for handing to `provider.stream`. Used by every loop strategy.
39
- *
40
- * Handles user_prompt, assistant_message, tool_call_requested (grouped
41
- * into a single assistant message of tool_use blocks), and tool_result.
42
- * Other event types are passed through as a no-op.
43
- *
44
- * Note: this is the minimal projection used by loop strategies. Core's
45
- * `selectMessages` is a richer variant that also honors compaction events
46
- * and attachments; the simpler form here lives in the SDK so loop plugins
47
- * stay independent of core.
48
- */
49
- export declare function projectMessagesFromLog(ctx: Pick<LoopContext, 'log'>, opts?: ProjectMessagesOptions): ProviderMessage[];
50
- export interface StreamResult {
51
- readonly text: string;
52
- readonly toolUses: ReadonlyArray<CollectedToolUse>;
53
- readonly stopReason: StopReason;
54
- readonly error: {
55
- readonly message: string;
56
- readonly retryable: boolean;
57
- } | null;
58
- }
59
- /**
60
- * Pulls a provider stream, emits `assistant_chunk` events for text deltas,
61
- * collects tool_use blocks, and returns the final `{text, toolUses, stopReason}`.
62
- * Runs `onBeforeProviderCall` lifecycle hooks before the call.
63
- */
64
- export declare function collectProviderStream(ctx: LoopContext, messages: ReadonlyArray<ProviderMessage>, opts?: {
65
- iteration?: number;
66
- includeTools?: boolean;
67
- }): Promise<StreamResult>;
68
- //# sourceMappingURL=loop-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loop-helpers.d.ts","sourceRoot":"","sources":["../src/loop-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,eAAe,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGxC;;;;;;;;GAQG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,GAC3B,MAAM,GAAG,SAAS,CAoBpB;AAED,MAAM,WAAW,sBAAsB;IACrC,qEAAqE;IACrE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,8FAA8F;IAC9F,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAiCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAC7B,IAAI,GAAE,sBAA2B,GAChC,eAAe,EAAE,CAoInB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CAClF;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACxD,OAAO,CAAC,YAAY,CAAC,CAoFvB"}
@@ -1,283 +0,0 @@
1
- /**
2
- * Compose a model-facing system prompt that includes any base prompt
3
- * plus a COMPACT skill index (name + description + triggers only).
4
- *
5
- * Lazy-loading design: the body is intentionally NOT inlined. The model
6
- * matches user intent against the description/triggers, then calls the
7
- * `load_skill` tool to fetch the body of the skill it picked. This keeps
8
- * the system prompt small even with many skills installed and avoids
9
- * paying for skill bodies the model never actually follows.
10
- */
11
- export function buildSystemPromptWithSkills(baseSystemPrompt, skills) {
12
- if (skills.length === 0)
13
- return baseSystemPrompt;
14
- const header = `## Available skills\n\n` +
15
- `Each line below is a pre-authored playbook for a specific intent. ` +
16
- `When the user's request matches one of these (by name, description, ` +
17
- `or triggers), call \`load_skill({ name: "<skill-name>" })\` FIRST to ` +
18
- `fetch the full instructions, then follow them verbatim. Prefer using ` +
19
- `a skill over re-deriving the workflow with ad-hoc tools.\n`;
20
- const entries = skills
21
- .map((s) => {
22
- const fm = s.frontmatter;
23
- const triggerHint = fm.triggers?.length
24
- ? ` (triggers: ${fm.triggers.map((t) => `"${t}"`).join(', ')})`
25
- : '';
26
- return `- **${fm.name}** — ${fm.description}${triggerHint}`;
27
- })
28
- .join('\n');
29
- const skillBlock = `${header}\n${entries}`;
30
- return baseSystemPrompt ? `${baseSystemPrompt}\n\n${skillBlock}` : skillBlock;
31
- }
32
- function activeCompactionRanges(events) {
33
- return events
34
- .filter((event) => event.type === 'compaction' &&
35
- event.tokensSaved > 0 &&
36
- event.summary.trim().length > 0 &&
37
- event.replacedRange[0] <= event.replacedRange[1])
38
- .map((event) => ({
39
- from: event.replacedRange[0],
40
- to: event.replacedRange[1],
41
- summary: event.summary,
42
- }));
43
- }
44
- function eventInCompactionRange(seq, ranges) {
45
- for (const range of ranges) {
46
- if (seq >= range.from && seq <= range.to)
47
- return range;
48
- }
49
- return null;
50
- }
51
- /**
52
- * Project the session's event log to a flat list of ProviderMessages
53
- * suitable for handing to `provider.stream`. Used by every loop strategy.
54
- *
55
- * Handles user_prompt, assistant_message, tool_call_requested (grouped
56
- * into a single assistant message of tool_use blocks), and tool_result.
57
- * Other event types are passed through as a no-op.
58
- *
59
- * Note: this is the minimal projection used by loop strategies. Core's
60
- * `selectMessages` is a richer variant that also honors compaction events
61
- * and attachments; the simpler form here lives in the SDK so loop plugins
62
- * stay independent of core.
63
- */
64
- export function projectMessagesFromLog(ctx, opts = {}) {
65
- const messages = [];
66
- if (opts.systemPrompt) {
67
- messages.push({ role: 'system', content: [{ type: 'text', text: opts.systemPrompt }] });
68
- }
69
- const allEvents = ctx.log.slice();
70
- const compactions = activeCompactionRanges(allEvents);
71
- const emittedCompactions = new Set();
72
- // Pre-scan: build the set of callIds that have a matching tool_result
73
- // (or tool_call_denied) somewhere in the log. Used to synthesize a
74
- // fallback `[interrupted]` tool_result for orphan tool_use blocks
75
- // when the assistant message gets flushed.
76
- //
77
- // Without this fallback the provider rejects the whole conversation
78
- // with "assistant message with 'tool_calls' must be followed by tool
79
- // messages responding to each 'tool_call_id'". Orphans typically
80
- // appear after a cancelled turn, an aborted process, or a tool
81
- // exception that bypassed the loop's tool_result emit path.
82
- const resolvedCallIds = new Set();
83
- for (const e of allEvents) {
84
- if (e.type === 'tool_result' || e.type === 'tool_call_denied') {
85
- resolvedCallIds.add(e.callId);
86
- }
87
- }
88
- let pendingAssistant = null;
89
- const flush = () => {
90
- if (!pendingAssistant)
91
- return;
92
- const flushed = pendingAssistant;
93
- messages.push(flushed);
94
- pendingAssistant = null;
95
- // Synthesize fallback tool_result messages for any tool_use blocks
96
- // whose callId never resolved in the event log. Has to land
97
- // immediately after the assistant message (and before any
98
- // subsequent user_prompt / assistant_message) so the provider sees
99
- // a clean assistant→tool-result chain.
100
- for (const block of flushed.content) {
101
- if (block.type === 'tool_use' && !resolvedCallIds.has(block.id)) {
102
- messages.push({
103
- role: 'tool_result',
104
- content: [
105
- {
106
- type: 'tool_result',
107
- toolUseId: block.id,
108
- content: '[tool call did not return a result — possibly interrupted or cancelled]',
109
- isError: true,
110
- },
111
- ],
112
- });
113
- // Mark synthesized so we don't double-emit if the same orphan
114
- // appears in multiple groups (defensive — shouldn't normally
115
- // happen since each tool_call_requested has a unique callId).
116
- resolvedCallIds.add(block.id);
117
- }
118
- }
119
- };
120
- for (const e of allEvents) {
121
- const compaction = eventInCompactionRange(e.seq, compactions);
122
- if (compaction) {
123
- if (!emittedCompactions.has(compaction)) {
124
- emittedCompactions.add(compaction);
125
- flush();
126
- messages.push({
127
- role: 'user',
128
- content: [{ type: 'text', text: `[summary of earlier turns]\n${compaction.summary}` }],
129
- });
130
- }
131
- continue;
132
- }
133
- switch (e.type) {
134
- case 'user_prompt': {
135
- flush();
136
- const blocks = [{ type: 'text', text: e.text }];
137
- if (e.attachments) {
138
- for (const att of e.attachments) {
139
- if (att.kind === 'image') {
140
- blocks.push({
141
- type: 'image',
142
- mediaType: att.mediaType ?? 'image/png',
143
- data: att.content,
144
- });
145
- }
146
- else {
147
- blocks.push({
148
- type: 'text',
149
- text: `[${att.kind}${att.name ? ` ${att.name}` : ''}]\n${att.content}`,
150
- });
151
- }
152
- }
153
- }
154
- messages.push({ role: 'user', content: blocks });
155
- break;
156
- }
157
- case 'assistant_message':
158
- flush();
159
- messages.push({ role: 'assistant', content: [{ type: 'text', text: e.content }] });
160
- break;
161
- case 'tool_call_requested': {
162
- pendingAssistant ??= { role: 'assistant', content: [] };
163
- pendingAssistant.content.push({
164
- type: 'tool_use',
165
- id: e.callId,
166
- name: e.name,
167
- input: e.input,
168
- });
169
- break;
170
- }
171
- case 'tool_result': {
172
- flush();
173
- const text = e.error
174
- ? `[error:${e.error.kind}] ${e.error.message}`
175
- : typeof e.output === 'string'
176
- ? e.output
177
- : JSON.stringify(e.output ?? '');
178
- messages.push({
179
- role: 'tool_result',
180
- content: [{ type: 'tool_result', toolUseId: e.callId, content: text, isError: !e.ok }],
181
- });
182
- break;
183
- }
184
- default:
185
- break;
186
- }
187
- }
188
- flush();
189
- if (opts.trailingUserText) {
190
- messages.push({ role: 'user', content: [{ type: 'text', text: opts.trailingUserText }] });
191
- }
192
- return messages;
193
- }
194
- /**
195
- * Pulls a provider stream, emits `assistant_chunk` events for text deltas,
196
- * collects tool_use blocks, and returns the final `{text, toolUses, stopReason}`.
197
- * Runs `onBeforeProviderCall` lifecycle hooks before the call.
198
- */
199
- export async function collectProviderStream(ctx, messages, opts = {}) {
200
- const req = {
201
- model: ctx.model,
202
- system: ctx.systemPrompt,
203
- messages,
204
- ...(opts.includeTools === false ? {} : { tools: ctx.tools.list() }),
205
- signal: ctx.signal,
206
- };
207
- const transformed = await ctx.hooks.dispatchBeforeProviderCall(req, {
208
- sessionId: ctx.sessionId,
209
- cwd: '',
210
- log: ctx.log,
211
- env: {},
212
- turnId: ctx.turnId,
213
- iteration: opts.iteration ?? 0,
214
- });
215
- let text = '';
216
- const toolUses = new Map();
217
- let stopReason = 'end_turn';
218
- let error = null;
219
- let stream;
220
- try {
221
- stream = ctx.provider.stream(transformed);
222
- }
223
- catch (err) {
224
- return {
225
- text: '',
226
- toolUses: [],
227
- stopReason: 'error',
228
- error: { message: err instanceof Error ? err.message : String(err), retryable: false },
229
- };
230
- }
231
- try {
232
- for await (const event of stream) {
233
- switch (event.type) {
234
- case 'text_delta': {
235
- text += event.delta;
236
- await ctx.emit({
237
- type: 'assistant_chunk',
238
- sessionId: ctx.sessionId,
239
- turnId: ctx.turnId,
240
- source: 'model',
241
- delta: event.delta,
242
- });
243
- break;
244
- }
245
- case 'tool_use_start': {
246
- toolUses.set(event.id, { name: event.name });
247
- break;
248
- }
249
- case 'tool_use_end': {
250
- const existing = toolUses.get(event.id) ?? {};
251
- toolUses.set(event.id, { ...existing, input: event.input });
252
- break;
253
- }
254
- case 'message_end': {
255
- stopReason = event.stopReason;
256
- break;
257
- }
258
- case 'error': {
259
- error = { message: event.message, retryable: event.retryable };
260
- break;
261
- }
262
- case 'message_start':
263
- case 'tool_use_delta':
264
- default:
265
- break;
266
- }
267
- }
268
- }
269
- catch (err) {
270
- error = {
271
- message: err instanceof Error ? err.message : String(err),
272
- retryable: false,
273
- };
274
- }
275
- const finalToolUses = [];
276
- for (const [id, partial] of toolUses) {
277
- if (!partial.name)
278
- continue;
279
- finalToolUses.push({ id, name: partial.name, input: partial.input ?? {} });
280
- }
281
- return { text, toolUses: finalToolUses, stopReason, error };
282
- }
283
- //# sourceMappingURL=loop-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loop-helpers.js","sourceRoot":"","sources":["../src/loop-helpers.ts"],"names":[],"mappings":"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"}
package/dist/loop.d.ts DELETED
@@ -1,106 +0,0 @@
1
- import type { CompactorDef } from './compactor.js';
2
- import type { EmittedEvent, MoxxyEvent } from './events.js';
3
- import type { HookDispatcher } from './hooks.js';
4
- import type { SessionId, TurnId } from './ids.js';
5
- import type { EventLogReader } from './log.js';
6
- import type { PermissionResolver } from './permission.js';
7
- import type { LLMProvider } from './provider.js';
8
- import type { Skill } from './skill.js';
9
- import type { SubagentSpawner } from './subagent.js';
10
- import type { ToolDef } from './tool.js';
11
- export interface ToolRegistry {
12
- list(): ReadonlyArray<ToolDef>;
13
- get(name: string): ToolDef | undefined;
14
- execute(name: string, input: unknown, signal: AbortSignal, opts?: ToolExecuteOpts): Promise<unknown>;
15
- }
16
- export interface ToolExecuteOpts {
17
- readonly callId?: string;
18
- readonly sessionId?: string;
19
- readonly turnId?: string;
20
- readonly log?: EventLogReader;
21
- readonly cwd?: string;
22
- }
23
- export interface SkillRegistry {
24
- list(): ReadonlyArray<Skill>;
25
- get(id: string): Skill | undefined;
26
- byName(name: string): Skill | undefined;
27
- filterByTriggers(prompt: string): ReadonlyArray<Skill>;
28
- }
29
- export interface PluginHostHandle {
30
- list(): ReadonlyArray<{
31
- name: string;
32
- version: string;
33
- loaded: boolean;
34
- }>;
35
- reload(): Promise<void>;
36
- }
37
- export interface LoopContext {
38
- readonly sessionId: SessionId;
39
- readonly turnId: TurnId;
40
- readonly model: string;
41
- readonly systemPrompt?: string;
42
- readonly provider: LLMProvider;
43
- readonly tools: ToolRegistry;
44
- readonly skills: SkillRegistry;
45
- readonly log: EventLogReader;
46
- readonly compactor: CompactorDef | null;
47
- readonly permissions: PermissionResolver;
48
- /**
49
- * Optional generic "ask the user a question" gate. Any loop strategy can
50
- * call this to surface a checkpoint to the user — plan-execute uses it
51
- * after producing a plan, but a code-execution loop could use it for
52
- * "run this command?" or a refactor loop for "apply this diff?". When
53
- * absent (headless / non-TTY), strategies should proceed as if the user
54
- * picked the default option, or fail closed depending on the strategy.
55
- */
56
- readonly approval?: ApprovalResolver;
57
- readonly hooks: HookDispatcher;
58
- readonly pluginHost: PluginHostHandle;
59
- readonly signal: AbortSignal;
60
- readonly maxIterations?: number;
61
- /**
62
- * Spawn one or more child agents that share the parent's registries
63
- * but run in isolation. Children stream their events back to the
64
- * parent log as `plugin_event` records with `subagent_*` subtypes.
65
- * Absent in synthetic test contexts that don't model a full Session.
66
- */
67
- readonly subagents?: SubagentSpawner;
68
- emit(event: EmittedEvent): Promise<MoxxyEvent>;
69
- }
70
- /**
71
- * Generic approval-dialog request. The TUI renders `title` as the header,
72
- * `body` as a verbatim block (plan text, diff, command preview, etc.), and
73
- * a single-select list of `options`. An option may set `requestsText` so
74
- * the dialog prompts for follow-up text after selection (e.g. redraft
75
- * feedback). `kind` is a loose tag the dialog/CLI can use for styling.
76
- */
77
- export interface ApprovalRequest {
78
- readonly title: string;
79
- readonly body: string;
80
- readonly options: ReadonlyArray<ApprovalOption>;
81
- readonly defaultOptionId?: string;
82
- readonly kind?: string;
83
- }
84
- export interface ApprovalOption {
85
- readonly id: string;
86
- readonly label: string;
87
- readonly hotkey?: string;
88
- readonly description?: string;
89
- readonly requestsText?: boolean;
90
- readonly textPrompt?: string;
91
- readonly danger?: boolean;
92
- }
93
- export interface ApprovalDecision {
94
- readonly optionId: string;
95
- /** Free-text follow-up the user typed when the option had `requestsText: true`. */
96
- readonly text?: string;
97
- }
98
- export interface ApprovalResolver {
99
- readonly name: string;
100
- confirm(req: ApprovalRequest): Promise<ApprovalDecision>;
101
- }
102
- export interface LoopStrategyDef {
103
- readonly name: string;
104
- run(ctx: LoopContext): AsyncIterable<MoxxyEvent>;
105
- }
106
- //# sourceMappingURL=loop.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
package/dist/loop.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=loop.js.map
package/dist/loop.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":""}
@@ -1,10 +0,0 @@
1
- export declare const PLUGIN_KINDS: readonly ["tools", "provider", "mode", "compactor", "cache-strategy", "view-renderer", "tunnel-provider", "mcp", "cli", "channel", "hooks", "agent", "command", "transcriber", "ui"];
2
- export type PluginKind = (typeof PLUGIN_KINDS)[number];
3
- export interface PluginKindCarrier {
4
- readonly kind?: PluginKind | ReadonlyArray<PluginKind>;
5
- }
6
- export declare function pluginKindList(kind: PluginKindCarrier['kind']): ReadonlyArray<PluginKind>;
7
- export declare function isPureUiPluginManifest(manifest: PluginKindCarrier): boolean;
8
- /** True when the manifest declares `kind: 'ui'` (alone or alongside others). */
9
- export declare function isUiPluginManifest(manifest: PluginKindCarrier): boolean;
10
- //# sourceMappingURL=plugin-kind.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-kind.d.ts","sourceRoot":"","sources":["../src/plugin-kind.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,sLAgBf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;CACxD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAGzF;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAG3E;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAEvE"}
@@ -1,31 +0,0 @@
1
- export const PLUGIN_KINDS = [
2
- 'tools',
3
- 'provider',
4
- 'mode',
5
- 'compactor',
6
- 'cache-strategy',
7
- 'view-renderer',
8
- 'tunnel-provider',
9
- 'mcp',
10
- 'cli',
11
- 'channel',
12
- 'hooks',
13
- 'agent',
14
- 'command',
15
- 'transcriber',
16
- 'ui',
17
- ];
18
- export function pluginKindList(kind) {
19
- if (!kind)
20
- return [];
21
- return typeof kind === 'string' ? [kind] : kind;
22
- }
23
- export function isPureUiPluginManifest(manifest) {
24
- const kinds = pluginKindList(manifest.kind);
25
- return kinds.length === 1 && kinds[0] === 'ui';
26
- }
27
- /** True when the manifest declares `kind: 'ui'` (alone or alongside others). */
28
- export function isUiPluginManifest(manifest) {
29
- return pluginKindList(manifest.kind).includes('ui');
30
- }
31
- //# sourceMappingURL=plugin-kind.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-kind.js","sourceRoot":"","sources":["../src/plugin-kind.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,OAAO;IACP,UAAU;IACV,MAAM;IACN,WAAW;IACX,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,KAAK;IACL,KAAK;IACL,SAAS;IACT,OAAO;IACP,OAAO;IACP,SAAS;IACT,aAAa;IACb,IAAI;CACI,CAAC;AAQX,MAAM,UAAU,cAAc,CAAC,IAA+B;IAC5D,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AACjD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,kBAAkB,CAAC,QAA2B;IAC5D,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC"}