@moxxy/sdk 0.26.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/channel.d.ts +13 -0
- package/dist/channel.d.ts.map +1 -1
- package/dist/channel.js +19 -0
- package/dist/channel.js.map +1 -1
- package/dist/event-store.d.ts +5 -1
- package/dist/event-store.d.ts.map +1 -1
- package/dist/event-store.js +24 -1
- package/dist/event-store.js.map +1 -1
- package/dist/events.d.ts +9 -3
- package/dist/events.d.ts.map +1 -1
- package/dist/first-party.d.ts +17 -0
- package/dist/first-party.d.ts.map +1 -0
- package/dist/first-party.js +19 -0
- package/dist/first-party.js.map +1 -0
- package/dist/index.d.ts +9 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -5
- package/dist/index.js.map +1 -1
- package/dist/isolation.d.ts +14 -0
- package/dist/isolation.d.ts.map +1 -1
- package/dist/isolation.js +75 -0
- package/dist/isolation.js.map +1 -1
- package/dist/mode/checkpoint.d.ts +107 -0
- package/dist/mode/checkpoint.d.ts.map +1 -0
- package/dist/mode/checkpoint.js +2 -0
- package/dist/mode/checkpoint.js.map +1 -0
- package/dist/mode/react-loop.d.ts +129 -0
- package/dist/mode/react-loop.d.ts.map +1 -0
- package/dist/mode/react-loop.js +480 -0
- package/dist/mode/react-loop.js.map +1 -0
- package/dist/mode/stuck-loop.d.ts +7 -0
- package/dist/mode/stuck-loop.d.ts.map +1 -1
- package/dist/mode/stuck-loop.js +4 -0
- package/dist/mode/stuck-loop.js.map +1 -1
- package/dist/mode-helpers.d.ts +4 -0
- package/dist/mode-helpers.d.ts.map +1 -1
- package/dist/mode-helpers.js +3 -0
- package/dist/mode-helpers.js.map +1 -1
- package/dist/mode.d.ts +43 -2
- package/dist/mode.d.ts.map +1 -1
- package/dist/mode.js.map +1 -1
- package/dist/plugin.d.ts +10 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/reflector.d.ts +58 -0
- package/dist/reflector.d.ts.map +1 -0
- package/dist/reflector.js +2 -0
- package/dist/reflector.js.map +1 -0
- package/dist/schemas.d.ts +215 -8
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +37 -0
- package/dist/schemas.js.map +1 -1
- package/dist/session-like.d.ts +52 -0
- package/dist/session-like.d.ts.map +1 -1
- package/dist/tool-dispatch.d.ts +35 -1
- package/dist/tool-dispatch.d.ts.map +1 -1
- package/dist/tool-dispatch.js +51 -0
- package/dist/tool-dispatch.js.map +1 -1
- package/package.json +1 -1
- package/src/channel.ts +25 -0
- package/src/event-store.ts +16 -1
- package/src/events.ts +9 -2
- package/src/exit-after-pair.test.ts +32 -0
- package/src/first-party.test.ts +26 -0
- package/src/first-party.ts +19 -0
- package/src/index.ts +32 -4
- package/src/isolation-aggregate.test.ts +69 -0
- package/src/isolation.ts +67 -0
- package/src/mode/checkpoint.ts +105 -0
- package/src/mode/react-loop.ts +694 -0
- package/src/mode/stuck-loop.ts +11 -0
- package/src/mode-helpers.ts +16 -0
- package/src/mode.ts +43 -2
- package/src/plugin.ts +10 -1
- package/src/reflector.ts +61 -0
- package/src/schemas.ts +41 -0
- package/src/session-like.ts +49 -0
- package/src/tool-dispatch.test.ts +77 -0
- package/src/tool-dispatch.ts +82 -1
package/dist/session-like.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { MoxxyEvent, TriggerOrigin, UserPromptAttachment } from './events.js';
|
|
2
2
|
import type { SessionId, TurnId } from './ids.js';
|
|
3
|
+
import type { CapabilitySpec } from './isolation.js';
|
|
3
4
|
import type { EventLogReader } from './log.js';
|
|
4
5
|
import type { ApprovalResolver, ModeBadge } from './mode.js';
|
|
5
6
|
import type { PermissionResolver } from './permission.js';
|
|
6
7
|
import type { ModelDescriptor, ProviderKeyValidation } from './provider.js';
|
|
8
|
+
import type { PluginSetupSpec } from './schemas.js';
|
|
7
9
|
import type { ToolCompactPresentation } from './tool.js';
|
|
8
10
|
/**
|
|
9
11
|
* Options accepted by `SessionLike.runTurn`. Defined here (rather than in
|
|
@@ -356,6 +358,44 @@ export interface PluginsAdminView {
|
|
|
356
358
|
install?(idOrSpec: string): Promise<{
|
|
357
359
|
readonly installed: string;
|
|
358
360
|
readonly registered: Readonly<Partial<Record<string, ReadonlyArray<string>>>>;
|
|
361
|
+
/**
|
|
362
|
+
* Combined capability surface of the tools this install registered —
|
|
363
|
+
* the package's blast radius, so a channel can render post-install
|
|
364
|
+
* consent (third-party packages) or an info line (first-party). Absent
|
|
365
|
+
* when the install registered no tools or the host cannot introspect
|
|
366
|
+
* isolation specs.
|
|
367
|
+
*/
|
|
368
|
+
readonly capabilities?: {
|
|
369
|
+
/** Tools that declared an isolation spec. */
|
|
370
|
+
readonly declared: number;
|
|
371
|
+
/** Tools the install registered. */
|
|
372
|
+
readonly total: number;
|
|
373
|
+
/** Widest-wins union of the declared specs. */
|
|
374
|
+
readonly surface: CapabilitySpec;
|
|
375
|
+
/** Tools with NO declaration: their surface is unknown, not empty. */
|
|
376
|
+
readonly undeclaredTools?: ReadonlyArray<string>;
|
|
377
|
+
};
|
|
378
|
+
/** Present when the package declares a `moxxy.setup` step to complete. */
|
|
379
|
+
readonly needsSetup?: {
|
|
380
|
+
readonly title: string;
|
|
381
|
+
readonly required: boolean;
|
|
382
|
+
};
|
|
383
|
+
}>;
|
|
384
|
+
/**
|
|
385
|
+
* The package's declarative setup step (`moxxy.setup`), read from its
|
|
386
|
+
* installed package.json — plain data, safe to render anywhere. Null when
|
|
387
|
+
* absent. Powers the post-install dialog and `/setup`.
|
|
388
|
+
*/
|
|
389
|
+
setupSpec?(packageName: string): Promise<PluginSetupSpec | null>;
|
|
390
|
+
/**
|
|
391
|
+
* Persist collected setup values: secrets → vault + `${vault:NAME}` option
|
|
392
|
+
* ref; other kinds → `plugins.packages.<pkg>.options.<key>`. A complete
|
|
393
|
+
* required setup re-enables the package; an incomplete one disables it
|
|
394
|
+
* (mirrors the init wizard). Optional capability per the seam convention.
|
|
395
|
+
*/
|
|
396
|
+
applySetup?(packageName: string, values: Readonly<Record<string, string | boolean>>): Promise<{
|
|
397
|
+
readonly complete: boolean;
|
|
398
|
+
readonly missing: ReadonlyArray<string>;
|
|
359
399
|
}>;
|
|
360
400
|
}
|
|
361
401
|
/** IO a channel supplies to drive an interactive OAuth flow inside its own
|
|
@@ -458,5 +498,17 @@ export interface SessionLike {
|
|
|
458
498
|
pluginsAdmin?: PluginsAdminView;
|
|
459
499
|
/** Provider onboarding slice backing in-channel connect (key entry / OAuth). */
|
|
460
500
|
providerSetup?: ProviderSetupView;
|
|
501
|
+
/**
|
|
502
|
+
* Re-read the merged config from disk and live-apply the safe subset —
|
|
503
|
+
* backs the TUI /settings panel's write-then-apply. Structurally matches
|
|
504
|
+
* @moxxy/config's ConfigApplyResult (the SDK stays config-free). Absent on
|
|
505
|
+
* a RemoteSession: writes still land, but apply waits for a restart.
|
|
506
|
+
*/
|
|
507
|
+
configAdmin?: {
|
|
508
|
+
apply(): Promise<{
|
|
509
|
+
readonly applied: ReadonlyArray<string>;
|
|
510
|
+
readonly pending: ReadonlyArray<string>;
|
|
511
|
+
}>;
|
|
512
|
+
};
|
|
461
513
|
}
|
|
462
514
|
//# sourceMappingURL=session-like.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-like.d.ts","sourceRoot":"","sources":["../src/session-like.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-like.d.ts","sourceRoot":"","sources":["../src/session-like.ts"],"names":[],"mappings":"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"}
|
package/dist/tool-dispatch.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { EmittedEvent, MoxxyEvent } from './events.js';
|
|
2
2
|
import type { ModeContext } from './mode.js';
|
|
3
|
-
import type { CollectedToolUse
|
|
3
|
+
import type { CollectedToolUse } from './mode/collect-stream.js';
|
|
4
|
+
import type { StuckLoopDetector, StuckSignal } from './mode/stuck-loop.js';
|
|
4
5
|
/**
|
|
5
6
|
* Execute a single tool-use end-to-end: dispatch `dispatchToolCall` hooks, run
|
|
6
7
|
* the permission check, invoke the tool, and emit the approved/denied/result
|
|
@@ -63,4 +64,37 @@ export interface StuckLoopReport {
|
|
|
63
64
|
* and which the provider rejects next turn). Returns `false` when no trip fired.
|
|
64
65
|
*/
|
|
65
66
|
export declare function emitRequestsAndDetectStuck(ctx: ModeContext, toolUses: ReadonlyArray<CollectedToolUse>, detector: StuckLoopDetector, report: StuckLoopReport): AsyncGenerator<MoxxyEvent, boolean, unknown>;
|
|
67
|
+
/** A stuck-detector trip, as surfaced to the nudge policy. */
|
|
68
|
+
export interface StuckTripInfo {
|
|
69
|
+
readonly toolName: string;
|
|
70
|
+
readonly count: number;
|
|
71
|
+
readonly kind: StuckSignal['kind'];
|
|
72
|
+
/** Human phrasing of HOW it repeated ("with identical input" / the near hint). */
|
|
73
|
+
readonly how: string;
|
|
74
|
+
}
|
|
75
|
+
/** Wording + extra events for {@link emitRequestsAndNudgeOnStuck}. */
|
|
76
|
+
export interface StuckNudgeReport {
|
|
77
|
+
/** Explanation for a `near` match (an `exact` match always reads
|
|
78
|
+
* "with identical input"). */
|
|
79
|
+
readonly nearHint: string;
|
|
80
|
+
/** Build the visible (non-fatal) warning surfaced to the user on a trip. */
|
|
81
|
+
readonly warnMessage: (info: StuckTripInfo) => string;
|
|
82
|
+
/** Extra events to emit right before the warning — goal mode surfaces a
|
|
83
|
+
* `goal_stuck` plugin_event here. */
|
|
84
|
+
readonly extraOnStuck?: StuckLoopReport['extraOnStuck'];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The steer-don't-stop counterpart of {@link emitRequestsAndDetectStuck}: emit
|
|
88
|
+
* a `tool_call_requested` per call and feed the detector, but a trip NEVER
|
|
89
|
+
* aborts the turn — the batch still executes (the repeated calls are usually
|
|
90
|
+
* legitimate work, e.g. re-running a failing build between edits). Instead the
|
|
91
|
+
* trip is surfaced as a visible warning + the report's extra events, the
|
|
92
|
+
* detector is reset (fresh episode — no re-trip on every subsequent call while
|
|
93
|
+
* the window is still full), and the trip info is returned so the loop can
|
|
94
|
+
* steer the model with a volatile nudge on its next provider call.
|
|
95
|
+
*
|
|
96
|
+
* Used by modes that must never kill an unattended run on a repetition
|
|
97
|
+
* heuristic (goal mode). Returns the first trip of the batch, or null.
|
|
98
|
+
*/
|
|
99
|
+
export declare function emitRequestsAndNudgeOnStuck(ctx: ModeContext, toolUses: ReadonlyArray<CollectedToolUse>, detector: StuckLoopDetector, report: StuckNudgeReport): AsyncGenerator<MoxxyEvent, StuckTripInfo | null, unknown>;
|
|
66
100
|
//# sourceMappingURL=tool-dispatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-dispatch.d.ts","sourceRoot":"","sources":["../src/tool-dispatch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-dispatch.d.ts","sourceRoot":"","sources":["../src/tool-dispatch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAK7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE3E;;;;;;;;;;;;;GAaG;AACH,wBAAuB,gBAAgB,CACrC,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,gBAAgB,EACnB,SAAS,EAAE,MAAM,GAChB,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAgG3C;AAgCD;;;;;;;GAOG;AACH,wBAAuB,eAAe,CACpC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACzC,SAAS,EAAE,MAAM,GAChB,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAmC9C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B;8CAC0C;IAC1C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC;mCAC+B;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IAC1F;0CACsC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;KAC3B,KAAK,aAAa,CAAC,YAAY,CAAC,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAuB,0BAA0B,CAC/C,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACzC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,eAAe,GACtB,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CA2C9C;AAED,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,kFAAkF;IAClF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B;mCAC+B;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,MAAM,CAAC;IACtD;0CACsC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;CACzD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAuB,2BAA2B,CAChD,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACzC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,gBAAgB,GACvB,cAAc,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI,EAAE,OAAO,CAAC,CAoC3D"}
|
package/dist/tool-dispatch.js
CHANGED
|
@@ -228,4 +228,55 @@ export async function* emitRequestsAndDetectStuck(ctx, toolUses, detector, repor
|
|
|
228
228
|
}
|
|
229
229
|
return false;
|
|
230
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* The steer-don't-stop counterpart of {@link emitRequestsAndDetectStuck}: emit
|
|
233
|
+
* a `tool_call_requested` per call and feed the detector, but a trip NEVER
|
|
234
|
+
* aborts the turn — the batch still executes (the repeated calls are usually
|
|
235
|
+
* legitimate work, e.g. re-running a failing build between edits). Instead the
|
|
236
|
+
* trip is surfaced as a visible warning + the report's extra events, the
|
|
237
|
+
* detector is reset (fresh episode — no re-trip on every subsequent call while
|
|
238
|
+
* the window is still full), and the trip info is returned so the loop can
|
|
239
|
+
* steer the model with a volatile nudge on its next provider call.
|
|
240
|
+
*
|
|
241
|
+
* Used by modes that must never kill an unattended run on a repetition
|
|
242
|
+
* heuristic (goal mode). Returns the first trip of the batch, or null.
|
|
243
|
+
*/
|
|
244
|
+
export async function* emitRequestsAndNudgeOnStuck(ctx, toolUses, detector, report) {
|
|
245
|
+
let trip = null;
|
|
246
|
+
for (const t of toolUses) {
|
|
247
|
+
yield await ctx.emit({
|
|
248
|
+
type: 'tool_call_requested',
|
|
249
|
+
sessionId: ctx.sessionId,
|
|
250
|
+
turnId: ctx.turnId,
|
|
251
|
+
source: 'model',
|
|
252
|
+
callId: asToolCallId(t.id),
|
|
253
|
+
name: t.name,
|
|
254
|
+
input: t.input,
|
|
255
|
+
});
|
|
256
|
+
const sig = detector.record(t.name, t.input);
|
|
257
|
+
if (!sig.stuck || trip)
|
|
258
|
+
continue;
|
|
259
|
+
trip = {
|
|
260
|
+
toolName: t.name,
|
|
261
|
+
count: sig.count,
|
|
262
|
+
kind: sig.kind,
|
|
263
|
+
how: sig.kind === 'near' ? report.nearHint : 'with identical input',
|
|
264
|
+
};
|
|
265
|
+
detector.reset();
|
|
266
|
+
if (report.extraOnStuck) {
|
|
267
|
+
for (const e of report.extraOnStuck({ toolName: t.name, count: sig.count, kind: sig.kind })) {
|
|
268
|
+
yield await ctx.emit(e);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
yield await ctx.emit({
|
|
272
|
+
type: 'error',
|
|
273
|
+
sessionId: ctx.sessionId,
|
|
274
|
+
turnId: ctx.turnId,
|
|
275
|
+
source: 'system',
|
|
276
|
+
kind: 'retryable',
|
|
277
|
+
message: report.warnMessage(trip),
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
return trip;
|
|
281
|
+
}
|
|
231
282
|
//# sourceMappingURL=tool-dispatch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-dispatch.js","sourceRoot":"","sources":["../src/tool-dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-dispatch.js","sourceRoot":"","sources":["../src/tool-dispatch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/channel.ts
CHANGED
|
@@ -300,6 +300,31 @@ export interface ChannelSubcommand {
|
|
|
300
300
|
run(ctx: ChannelSubcommandContext): Promise<number>;
|
|
301
301
|
}
|
|
302
302
|
|
|
303
|
+
/**
|
|
304
|
+
* Flag an orchestrator (e.g. `moxxy onboard`) passes to a channel's `pair`
|
|
305
|
+
* subcommand to say "hand control back once pairing succeeds". Every pair
|
|
306
|
+
* flow's default is to keep the just-paired channel running until Ctrl+C —
|
|
307
|
+
* right for a human running `moxxy <name> pair` standalone, wrong for a
|
|
308
|
+
* caller that pairs as one step of a longer flow (its SIGINT handlers call
|
|
309
|
+
* `process.exit`, which would kill the orchestrator). Pair flows check this
|
|
310
|
+
* via {@link exitAfterPairRequested} after a successful pairing and stop the
|
|
311
|
+
* channel + return 0 instead of blocking forever.
|
|
312
|
+
*/
|
|
313
|
+
export const EXIT_AFTER_PAIR_FLAG = 'exit-after-pair';
|
|
314
|
+
|
|
315
|
+
/** Whether the subcommand invocation asked for the pair-then-return contract. */
|
|
316
|
+
export function exitAfterPairRequested(
|
|
317
|
+
ctx: Pick<ChannelSubcommandContext, 'args' | 'deps'>,
|
|
318
|
+
): boolean {
|
|
319
|
+
// The CLI forwards subcommand argv flags both as `args.flags` and merged
|
|
320
|
+
// into `deps.options`; accept either carrier so programmatic callers that
|
|
321
|
+
// only build one of the two still opt in.
|
|
322
|
+
return (
|
|
323
|
+
ctx.args.flags[EXIT_AFTER_PAIR_FLAG] === true ||
|
|
324
|
+
ctx.deps.options?.[EXIT_AFTER_PAIR_FLAG] === true
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
|
|
303
328
|
/**
|
|
304
329
|
* Read-only registry of channels available in a Session. Implementation lives
|
|
305
330
|
* in @moxxy/core.
|
package/src/event-store.ts
CHANGED
|
@@ -12,8 +12,23 @@ import type { SessionId } from './ids.js';
|
|
|
12
12
|
* event (prompts, tool I/O), so that explicit opt-in is the trust boundary.
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
+
/** Every valid {@link SessionSource}, as a runtime constant — so validators
|
|
16
|
+
* (e.g. the CLI's `MOXXY_SESSION_SOURCE` guard) enumerate the same list the
|
|
17
|
+
* type is derived from instead of hand-listing the literals. */
|
|
18
|
+
export const SESSION_SOURCES = [
|
|
19
|
+
'cli',
|
|
20
|
+
'tui',
|
|
21
|
+
'desktop',
|
|
22
|
+
'mobile',
|
|
23
|
+
'slack',
|
|
24
|
+
'telegram',
|
|
25
|
+
'signal',
|
|
26
|
+
'whatsapp',
|
|
27
|
+
'discord',
|
|
28
|
+
] as const;
|
|
29
|
+
|
|
15
30
|
/** Originating channel of a session (persisted into the meta sidecar). */
|
|
16
|
-
export type SessionSource =
|
|
31
|
+
export type SessionSource = (typeof SESSION_SOURCES)[number];
|
|
17
32
|
|
|
18
33
|
/**
|
|
19
34
|
* The single per-session metadata record (the JSONL impl writes it to
|
package/src/events.ts
CHANGED
|
@@ -40,10 +40,16 @@ export interface UserPromptAttachment {
|
|
|
40
40
|
* a compact "trigger fired" marker instead of a giant user bubble. The prompt
|
|
41
41
|
* text stays in the event (and thus in the model's context) — only the *display*
|
|
42
42
|
* changes. Absent for an ordinary user-typed prompt.
|
|
43
|
+
*
|
|
44
|
+
* `kind: 'checkpoint'` marks a MID-TURN prompt injected by the shared ReAct
|
|
45
|
+
* loop's checkpoint gate (turn-end verification feedback). Unlike the trigger
|
|
46
|
+
* kinds it does not open a turn — renderers that treat `user_prompt` as a
|
|
47
|
+
* turn boundary must skip their boundary resets for it (see chat-model's
|
|
48
|
+
* pair-events).
|
|
43
49
|
*/
|
|
44
50
|
export interface TriggerOrigin {
|
|
45
|
-
readonly kind: 'webhook' | 'schedule' | 'workflow';
|
|
46
|
-
/** The trigger's name (webhook/schedule/workflow), for the marker label. */
|
|
51
|
+
readonly kind: 'webhook' | 'schedule' | 'workflow' | 'checkpoint';
|
|
52
|
+
/** The trigger's name (webhook/schedule/workflow/checkpoint), for the marker label. */
|
|
47
53
|
readonly name: string;
|
|
48
54
|
}
|
|
49
55
|
|
|
@@ -176,6 +182,7 @@ export interface PluginRegisteredEvent extends EventBase {
|
|
|
176
182
|
| 'isolator'
|
|
177
183
|
| 'workflow-executor'
|
|
178
184
|
| 'event-store'
|
|
185
|
+
| 'reflector'
|
|
179
186
|
>;
|
|
180
187
|
}
|
|
181
188
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { EXIT_AFTER_PAIR_FLAG, exitAfterPairRequested } from './channel.js';
|
|
3
|
+
|
|
4
|
+
function ctx(
|
|
5
|
+
flags: Record<string, string | boolean | undefined>,
|
|
6
|
+
options?: Record<string, unknown>,
|
|
7
|
+
): Parameters<typeof exitAfterPairRequested>[0] {
|
|
8
|
+
return {
|
|
9
|
+
args: { positional: [], flags },
|
|
10
|
+
deps: { cwd: '/tmp', ...(options ? { options } : {}) },
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
describe('exitAfterPairRequested', () => {
|
|
15
|
+
it('defaults to false (standalone pair keeps the channel running)', () => {
|
|
16
|
+
expect(exitAfterPairRequested(ctx({}))).toBe(false);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('honors the flag via args.flags', () => {
|
|
20
|
+
expect(exitAfterPairRequested(ctx({ [EXIT_AFTER_PAIR_FLAG]: true }))).toBe(true);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('honors the flag via deps.options (programmatic callers)', () => {
|
|
24
|
+
expect(exitAfterPairRequested(ctx({}, { [EXIT_AFTER_PAIR_FLAG]: true }))).toBe(true);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('requires boolean true — a string "true" flag is not an opt-in', () => {
|
|
28
|
+
// argv flags are string|boolean; only an explicit boolean true counts, so
|
|
29
|
+
// `--exit-after-pair=weird` values can't accidentally change lifecycle.
|
|
30
|
+
expect(exitAfterPairRequested(ctx({ [EXIT_AFTER_PAIR_FLAG]: 'true' }))).toBe(false);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { FIRST_PARTY_PLUGIN_SCOPE, isFirstPartyPackage } from './first-party.js';
|
|
3
|
+
|
|
4
|
+
describe('isFirstPartyPackage (third-party detection)', () => {
|
|
5
|
+
it('accepts packages under the @moxxy scope', () => {
|
|
6
|
+
expect(isFirstPartyPackage('@moxxy/plugin-channel-slack')).toBe(true);
|
|
7
|
+
expect(isFirstPartyPackage('@moxxy/sdk')).toBe(true);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('rejects bare (unscoped) packages', () => {
|
|
11
|
+
expect(isFirstPartyPackage('left-pad')).toBe(false);
|
|
12
|
+
expect(isFirstPartyPackage('moxxy-plugin-evil')).toBe(false);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('rejects other scopes, including lookalikes', () => {
|
|
16
|
+
expect(isFirstPartyPackage('@moxxyy/plugin-x')).toBe(false);
|
|
17
|
+
expect(isFirstPartyPackage('@moxxy-plugins/x')).toBe(false);
|
|
18
|
+
expect(isFirstPartyPackage('@evil/moxxy')).toBe(false);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('rejects a scope-only prefix trick (@moxxy without the slash)', () => {
|
|
22
|
+
// `@moxxy` alone is not under the scope: the slash is part of the prefix.
|
|
23
|
+
expect(FIRST_PARTY_PLUGIN_SCOPE.endsWith('/')).toBe(true);
|
|
24
|
+
expect(isFirstPartyPackage('@moxxy')).toBe(false);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The npm scope every first-party moxxy package lives under. First-party
|
|
3
|
+
* packages are the trusted, co-versioned set (published together via the
|
|
4
|
+
* fixed changeset group); anything outside this scope is third-party code
|
|
5
|
+
* the user pulled in from the registry and gets stricter treatment:
|
|
6
|
+
* post-install capability consent and the `thirdPartyRequireDeclaration`
|
|
7
|
+
* ratchet in `@moxxy/plugin-security`.
|
|
8
|
+
*/
|
|
9
|
+
export const FIRST_PARTY_PLUGIN_SCOPE = '@moxxy/';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Whether a package name belongs to the trusted first-party scope. The input
|
|
13
|
+
* is a bare npm package name (`@moxxy/plugin-x`, `some-plugin`) — pass names,
|
|
14
|
+
* not install specs (`name@1.2.3` would still work, but git/path specs are
|
|
15
|
+
* not names and should be resolved to one first).
|
|
16
|
+
*/
|
|
17
|
+
export function isFirstPartyPackage(packageName: string): boolean {
|
|
18
|
+
return packageName.startsWith(FIRST_PARTY_PLUGIN_SCOPE);
|
|
19
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -117,7 +117,9 @@ export type {
|
|
|
117
117
|
Isolator,
|
|
118
118
|
HandlerModuleRef,
|
|
119
119
|
} from './isolation.js';
|
|
120
|
-
export { ISOLATION_RANK } from './isolation.js';
|
|
120
|
+
export { ISOLATION_RANK, aggregateCapabilitySpecs } from './isolation.js';
|
|
121
|
+
|
|
122
|
+
export { FIRST_PARTY_PLUGIN_SCOPE, isFirstPartyPackage } from './first-party.js';
|
|
121
123
|
|
|
122
124
|
export type {
|
|
123
125
|
SubagentSpec,
|
|
@@ -190,6 +192,12 @@ export type {
|
|
|
190
192
|
SessionMeta,
|
|
191
193
|
SessionSource,
|
|
192
194
|
} from './event-store.js';
|
|
195
|
+
export { SESSION_SOURCES } from './event-store.js';
|
|
196
|
+
export type {
|
|
197
|
+
ReflectorDef,
|
|
198
|
+
ReflectContext,
|
|
199
|
+
ReflectionProposal,
|
|
200
|
+
} from './reflector.js';
|
|
193
201
|
// Node-runtime helpers (writeFileAtomic*, moxxyHome/moxxyPath,
|
|
194
202
|
// readRequestBody/bearerTokenMatches, channel-auth) are exported from the
|
|
195
203
|
// './server' subpath, NOT the main barrel — they statically reach node:*
|
|
@@ -228,6 +236,11 @@ export {
|
|
|
228
236
|
type MoxxyErrorCode,
|
|
229
237
|
type MoxxyErrorInit,
|
|
230
238
|
} from './errors.js';
|
|
239
|
+
// Shared retry primitives: a leak-safe, abort-aware sleep + the exponential
|
|
240
|
+
// back-off schedule. General-purpose — not mode-loop internals: the runner's
|
|
241
|
+
// connect retry and the desktop supervisor's restart wait use them too, so
|
|
242
|
+
// don't reimplement an ad-hoc `new Promise(setTimeout)` back-off elsewhere.
|
|
243
|
+
export { sleepWithAbort, nextBackoffMs } from './mode/abort-backoff.js';
|
|
231
244
|
export {
|
|
232
245
|
collectProviderStream,
|
|
233
246
|
runSingleShotTurn,
|
|
@@ -236,8 +249,9 @@ export {
|
|
|
236
249
|
buildSystemPromptWithSkills,
|
|
237
250
|
createStuckLoopDetector,
|
|
238
251
|
stableHash,
|
|
239
|
-
|
|
240
|
-
|
|
252
|
+
runReactLoop,
|
|
253
|
+
MAX_CONSECUTIVE_RETRIES,
|
|
254
|
+
__setRetrySleepForTests,
|
|
241
255
|
type CollectedToolUse,
|
|
242
256
|
type StreamResult,
|
|
243
257
|
type ProjectMessagesOptions,
|
|
@@ -245,12 +259,22 @@ export {
|
|
|
245
259
|
type StuckLoopDetector,
|
|
246
260
|
type StuckSignal,
|
|
247
261
|
type LoopGuardSettings,
|
|
262
|
+
type ReactLoopOptions,
|
|
263
|
+
type ProviderSuccessInfo,
|
|
264
|
+
type ToolBatchInfo,
|
|
265
|
+
type StopDirective,
|
|
266
|
+
type CheckpointContext,
|
|
267
|
+
type CheckpointResult,
|
|
268
|
+
type TurnCheckpoint,
|
|
248
269
|
} from './mode-helpers.js';
|
|
249
270
|
export {
|
|
250
271
|
dispatchToolCall,
|
|
251
272
|
executeToolUses,
|
|
252
273
|
emitRequestsAndDetectStuck,
|
|
274
|
+
emitRequestsAndNudgeOnStuck,
|
|
253
275
|
type StuckLoopReport,
|
|
276
|
+
type StuckNudgeReport,
|
|
277
|
+
type StuckTripInfo,
|
|
254
278
|
} from './tool-dispatch.js';
|
|
255
279
|
|
|
256
280
|
export type { TokenBudget, CompactContext, CompactorDef } from './compactor.js';
|
|
@@ -367,7 +391,7 @@ export type {
|
|
|
367
391
|
ResolvedPluginManifest,
|
|
368
392
|
} from './plugin.js';
|
|
369
393
|
|
|
370
|
-
export { startChannelWith } from './channel.js';
|
|
394
|
+
export { startChannelWith, EXIT_AFTER_PAIR_FLAG, exitAfterPairRequested } from './channel.js';
|
|
371
395
|
export type {
|
|
372
396
|
Channel,
|
|
373
397
|
ChannelHandle,
|
|
@@ -458,10 +482,14 @@ export {
|
|
|
458
482
|
skillFrontmatterSchema,
|
|
459
483
|
pluginManifestSchema,
|
|
460
484
|
moxxyPackageSchema,
|
|
485
|
+
pluginSetupFieldSchema,
|
|
486
|
+
pluginSetupSchema,
|
|
461
487
|
requirementSchema,
|
|
462
488
|
type SkillFrontmatterInput,
|
|
463
489
|
type PluginManifestInput,
|
|
464
490
|
type MoxxyPackageInput,
|
|
491
|
+
type PluginSetupField,
|
|
492
|
+
type PluginSetupSpec,
|
|
465
493
|
} from './schemas.js';
|
|
466
494
|
|
|
467
495
|
export {
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { aggregateCapabilitySpecs, type CapabilitySpec } from './isolation.js';
|
|
3
|
+
|
|
4
|
+
describe('aggregateCapabilitySpecs', () => {
|
|
5
|
+
it('empty / all-undefined input aggregates to an empty surface', () => {
|
|
6
|
+
expect(aggregateCapabilitySpecs([])).toEqual({});
|
|
7
|
+
expect(aggregateCapabilitySpecs([undefined, undefined])).toEqual({});
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('unions fs globs, env, and commands (sorted, deduped)', () => {
|
|
11
|
+
const a: CapabilitySpec = {
|
|
12
|
+
fs: { read: ['$cwd/**', '/tmp/**'], write: ['/tmp/**'] },
|
|
13
|
+
env: ['PATH', 'HOME'],
|
|
14
|
+
subprocess: true,
|
|
15
|
+
commands: ['npm'],
|
|
16
|
+
};
|
|
17
|
+
const b: CapabilitySpec = {
|
|
18
|
+
fs: { read: ['/tmp/**'] },
|
|
19
|
+
env: ['PATH'],
|
|
20
|
+
subprocess: true,
|
|
21
|
+
commands: ['git', 'npm'],
|
|
22
|
+
};
|
|
23
|
+
expect(aggregateCapabilitySpecs([a, b])).toEqual({
|
|
24
|
+
fs: { read: ['$cwd/**', '/tmp/**'], write: ['/tmp/**'] },
|
|
25
|
+
env: ['HOME', 'PATH'],
|
|
26
|
+
subprocess: true,
|
|
27
|
+
commands: ['git', 'npm'],
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('net takes the strongest mode: any > allowlist > none', () => {
|
|
32
|
+
const none: CapabilitySpec = { net: { mode: 'none' } };
|
|
33
|
+
const list: CapabilitySpec = { net: { mode: 'allowlist', hosts: ['b.com', 'a.com'] } };
|
|
34
|
+
const any: CapabilitySpec = { net: { mode: 'any' } };
|
|
35
|
+
|
|
36
|
+
expect(aggregateCapabilitySpecs([none])).toEqual({ net: { mode: 'none' } });
|
|
37
|
+
expect(aggregateCapabilitySpecs([none, list])).toEqual({
|
|
38
|
+
net: { mode: 'allowlist', hosts: ['a.com', 'b.com'] },
|
|
39
|
+
});
|
|
40
|
+
expect(aggregateCapabilitySpecs([list, any, none])).toEqual({ net: { mode: 'any' } });
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('merges allowlist hosts across specs', () => {
|
|
44
|
+
const a: CapabilitySpec = { net: { mode: 'allowlist', hosts: ['registry.npmjs.org'] } };
|
|
45
|
+
const b: CapabilitySpec = { net: { mode: 'allowlist', hosts: ['api.slack.com'] } };
|
|
46
|
+
expect(aggregateCapabilitySpecs([a, b])).toEqual({
|
|
47
|
+
net: { mode: 'allowlist', hosts: ['api.slack.com', 'registry.npmjs.org'] },
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('timeMs and memMb take the max; undeclared entries contribute nothing', () => {
|
|
52
|
+
const a: CapabilitySpec = { timeMs: 30_000, memMb: 128 };
|
|
53
|
+
const b: CapabilitySpec = { timeMs: 600_000 };
|
|
54
|
+
expect(aggregateCapabilitySpecs([a, undefined, b])).toEqual({
|
|
55
|
+
timeMs: 600_000,
|
|
56
|
+
memMb: 128,
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('an "any" net dropped into a wide union does not resurrect allowlist hosts', () => {
|
|
61
|
+
// Regression guard: once mode is 'any', collected hosts must not leak
|
|
62
|
+
// back into the result as a misleading narrower-looking allowlist.
|
|
63
|
+
const spec = aggregateCapabilitySpecs([
|
|
64
|
+
{ net: { mode: 'allowlist', hosts: ['a.com'] } },
|
|
65
|
+
{ net: { mode: 'any' } },
|
|
66
|
+
]);
|
|
67
|
+
expect(spec.net).toEqual({ mode: 'any' });
|
|
68
|
+
});
|
|
69
|
+
});
|