mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-17 03:03:44 +00:00
Add lifecycle callbacks to SandboxRuntimeProvider for abort signal support
- Added onExecutionStart(sandboxId, signal) - called when sandbox execution begins - Added onExecutionEnd(sandboxId) - called when sandbox execution ends - Integrated callbacks in SandboxedIframe.execute() - Enables providers to track and cancel async operations (e.g., userScript executions)
This commit is contained in:
parent
901449b38a
commit
3932c5e04c
2 changed files with 27 additions and 0 deletions
|
|
@ -254,6 +254,11 @@ export class SandboxIframe extends LitElement {
|
||||||
providers = [consoleProvider, ...providers];
|
providers = [consoleProvider, ...providers];
|
||||||
RUNTIME_MESSAGE_ROUTER.registerSandbox(sandboxId, providers, consumers);
|
RUNTIME_MESSAGE_ROUTER.registerSandbox(sandboxId, providers, consumers);
|
||||||
|
|
||||||
|
// Notify providers that execution is starting
|
||||||
|
for (const provider of providers) {
|
||||||
|
provider.onExecutionStart?.(sandboxId, signal);
|
||||||
|
}
|
||||||
|
|
||||||
const files: SandboxFile[] = [];
|
const files: SandboxFile[] = [];
|
||||||
let completed = false;
|
let completed = false;
|
||||||
|
|
||||||
|
|
@ -287,6 +292,11 @@ export class SandboxIframe extends LitElement {
|
||||||
RUNTIME_MESSAGE_ROUTER.addConsumer(sandboxId, executionConsumer);
|
RUNTIME_MESSAGE_ROUTER.addConsumer(sandboxId, executionConsumer);
|
||||||
|
|
||||||
const cleanup = () => {
|
const cleanup = () => {
|
||||||
|
// Notify providers that execution has ended
|
||||||
|
for (const provider of providers) {
|
||||||
|
provider.onExecutionEnd?.(sandboxId);
|
||||||
|
}
|
||||||
|
|
||||||
RUNTIME_MESSAGE_ROUTER.unregisterSandbox(sandboxId);
|
RUNTIME_MESSAGE_ROUTER.unregisterSandbox(sandboxId);
|
||||||
signal?.removeEventListener("abort", abortHandler);
|
signal?.removeEventListener("abort", abortHandler);
|
||||||
clearTimeout(timeoutId);
|
clearTimeout(timeoutId);
|
||||||
|
|
|
||||||
|
|
@ -32,4 +32,21 @@ export interface SandboxRuntimeProvider {
|
||||||
* This will be appended to tool descriptions dynamically so the LLM knows what's available.
|
* This will be appended to tool descriptions dynamically so the LLM knows what's available.
|
||||||
*/
|
*/
|
||||||
getDescription(): string;
|
getDescription(): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Optional lifecycle callback invoked when sandbox execution starts.
|
||||||
|
* Providers can use this to track abort signals for cancellation of async operations.
|
||||||
|
*
|
||||||
|
* @param sandboxId - The unique identifier for this sandbox execution
|
||||||
|
* @param signal - Optional AbortSignal that will be triggered if execution is cancelled
|
||||||
|
*/
|
||||||
|
onExecutionStart?(sandboxId: string, signal?: AbortSignal): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Optional lifecycle callback invoked when sandbox execution ends (success, error, or abort).
|
||||||
|
* Providers can use this to clean up any resources associated with the sandbox.
|
||||||
|
*
|
||||||
|
* @param sandboxId - The unique identifier for this sandbox execution
|
||||||
|
*/
|
||||||
|
onExecutionEnd?(sandboxId: string): void;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue