@oh-my-pi/pi-coding-agent 16.1.12 → 16.1.14
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/CHANGELOG.md +27 -0
- package/dist/cli.js +5650 -2860
- package/dist/types/config/settings-schema.d.ts +44 -14
- package/dist/types/cursor.d.ts +9 -9
- package/dist/types/eval/__tests__/julia-prelude.test.d.ts +1 -0
- package/dist/types/eval/backend-helpers.d.ts +23 -0
- package/dist/types/eval/executor-base.d.ts +118 -0
- package/dist/types/eval/index.d.ts +2 -0
- package/dist/types/eval/jl/executor.d.ts +44 -0
- package/dist/types/eval/jl/index.d.ts +11 -0
- package/dist/types/eval/jl/kernel.d.ts +28 -0
- package/dist/types/eval/jl/prelude.d.ts +1 -0
- package/dist/types/eval/jl/runtime.d.ts +22 -0
- package/dist/types/eval/kernel-base.d.ts +105 -0
- package/dist/types/eval/py/kernel.d.ts +3 -61
- package/dist/types/eval/rb/executor.d.ts +77 -0
- package/dist/types/eval/rb/index.d.ts +11 -0
- package/dist/types/eval/rb/kernel.d.ts +31 -0
- package/dist/types/eval/rb/prelude.d.ts +1 -0
- package/dist/types/eval/rb/runtime.d.ts +23 -0
- package/dist/types/eval/runtime-env.d.ts +24 -0
- package/dist/types/eval/types.d.ts +3 -3
- package/dist/types/extensibility/extensions/runner.d.ts +2 -15
- package/dist/types/extensibility/hooks/loader.d.ts +1 -25
- package/dist/types/extensibility/session-handler-types.d.ts +23 -0
- package/dist/types/jsonrpc/message-framing.d.ts +35 -0
- package/dist/types/mnemopi/embed-client.d.ts +7 -24
- package/dist/types/modes/components/chat-transcript-builder.d.ts +1 -1
- package/dist/types/modes/components/custom-editor.d.ts +11 -0
- package/dist/types/modes/components/selector-helpers.d.ts +53 -0
- package/dist/types/modes/interactive-mode.d.ts +0 -2
- package/dist/types/modes/theme/theme.d.ts +8 -1
- package/dist/types/modes/types.d.ts +0 -2
- package/dist/types/modes/utils/copy-targets.d.ts +1 -1
- package/dist/types/modes/utils/interactive-context-helpers.d.ts +14 -0
- package/dist/types/modes/utils/transcript-render-helpers.d.ts +54 -0
- package/dist/types/sdk.d.ts +1 -1
- package/dist/types/session/agent-session.d.ts +2 -2
- package/dist/types/stt/asr-client.d.ts +3 -29
- package/dist/types/subprocess/worker-client.d.ts +149 -0
- package/dist/types/subprocess/worker-runtime.d.ts +107 -0
- package/dist/types/tiny/title-client.d.ts +14 -34
- package/dist/types/tools/eval-backends.d.ts +6 -3
- package/dist/types/tools/eval-render.d.ts +6 -5
- package/dist/types/tools/eval.d.ts +13 -15
- package/dist/types/tools/index.d.ts +3 -3
- package/dist/types/tts/tts-client.d.ts +3 -28
- package/dist/types/tui/code-cell.d.ts +7 -0
- package/dist/types/utils/file-display-mode.d.ts +1 -1
- package/dist/types/web/parallel.d.ts +6 -0
- package/package.json +12 -12
- package/src/config/settings-schema.ts +50 -18
- package/src/config/settings.ts +5 -0
- package/src/dap/client.ts +13 -107
- package/src/eval/__tests__/julia-prelude.test.ts +77 -0
- package/src/eval/backend-helpers.ts +48 -0
- package/src/eval/executor-base.ts +425 -0
- package/src/eval/index.ts +2 -0
- package/src/eval/jl/executor.ts +540 -0
- package/src/eval/jl/index.ts +54 -0
- package/src/eval/jl/kernel.ts +235 -0
- package/src/eval/jl/prelude.jl +930 -0
- package/src/eval/jl/prelude.ts +3 -0
- package/src/eval/jl/runner.jl +634 -0
- package/src/eval/jl/runtime.ts +118 -0
- package/src/eval/js/index.ts +3 -14
- package/src/eval/kernel-base.ts +569 -0
- package/src/eval/py/executor.ts +43 -252
- package/src/eval/py/index.ts +9 -20
- package/src/eval/py/kernel.ts +29 -544
- package/src/eval/rb/executor.ts +504 -0
- package/src/eval/rb/index.ts +54 -0
- package/src/eval/rb/kernel.ts +230 -0
- package/src/eval/rb/prelude.rb +721 -0
- package/src/eval/rb/prelude.ts +3 -0
- package/src/eval/rb/runner.rb +474 -0
- package/src/eval/rb/runtime.ts +132 -0
- package/src/eval/runtime-env.ts +104 -0
- package/src/eval/types.ts +3 -3
- package/src/extensibility/extensions/runner.ts +4 -11
- package/src/extensibility/hooks/loader.ts +3 -21
- package/src/extensibility/session-handler-types.ts +21 -0
- package/src/internal-urls/docs-index.generated.txt +1 -1
- package/src/jsonrpc/message-framing.ts +142 -0
- package/src/lsp/client.ts +13 -109
- package/src/mnemopi/embed-client.ts +43 -198
- package/src/modes/components/agent-dashboard.ts +17 -40
- package/src/modes/components/chat-transcript-builder.ts +18 -102
- package/src/modes/components/custom-editor.ts +19 -0
- package/src/modes/components/extensions/extension-dashboard.ts +4 -13
- package/src/modes/components/extensions/extension-list.ts +16 -44
- package/src/modes/components/history-search.ts +4 -16
- package/src/modes/components/selector-helpers.ts +129 -0
- package/src/modes/components/settings-selector.ts +7 -5
- package/src/modes/components/tree-selector.ts +13 -18
- package/src/modes/controllers/event-controller.ts +3 -9
- package/src/modes/controllers/input-controller.ts +32 -54
- package/src/modes/interactive-mode.ts +5 -7
- package/src/modes/theme/theme.ts +35 -0
- package/src/modes/types.ts +0 -2
- package/src/modes/utils/copy-targets.ts +3 -2
- package/src/modes/utils/interactive-context-helpers.ts +27 -0
- package/src/modes/utils/transcript-render-helpers.ts +157 -0
- package/src/modes/utils/ui-helpers.ts +21 -126
- package/src/prompts/system/system-prompt.md +10 -10
- package/src/prompts/tools/bash.md +0 -1
- package/src/prompts/tools/eval.md +6 -4
- package/src/prompts/tools/find.md +0 -4
- package/src/prompts/tools/read.md +1 -2
- package/src/prompts/tools/replace.md +1 -1
- package/src/prompts/tools/search.md +0 -1
- package/src/sdk.ts +13 -7
- package/src/session/agent-session.ts +9 -7
- package/src/stt/asr-client.ts +35 -215
- package/src/stt/asr-worker.ts +29 -181
- package/src/subprocess/worker-client.ts +297 -0
- package/src/subprocess/worker-runtime.ts +277 -0
- package/src/task/executor.ts +4 -4
- package/src/tiny/title-client.ts +53 -219
- package/src/tiny/worker.ts +29 -180
- package/src/tools/eval-backends.ts +10 -3
- package/src/tools/eval-render.ts +17 -8
- package/src/tools/eval.ts +187 -22
- package/src/tools/index.ts +51 -28
- package/src/tts/tts-client.ts +38 -206
- package/src/tts/tts-worker.ts +23 -97
- package/src/tui/code-cell.ts +12 -1
- package/src/utils/file-display-mode.ts +2 -3
- package/src/web/parallel.ts +43 -42
- package/src/web/search/providers/parallel.ts +10 -99
|
@@ -2886,16 +2886,6 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2886
2886
|
readonly description: "Prepend line numbers to read tool output by default";
|
|
2887
2887
|
};
|
|
2888
2888
|
};
|
|
2889
|
-
readonly readHashLines: {
|
|
2890
|
-
readonly type: "boolean";
|
|
2891
|
-
readonly default: true;
|
|
2892
|
-
readonly ui: {
|
|
2893
|
-
readonly tab: "files";
|
|
2894
|
-
readonly group: "Reading";
|
|
2895
|
-
readonly label: "Hash Lines";
|
|
2896
|
-
readonly description: "Include snapshot-tag headers and line numbers in read output for hashline edit mode ([PATH#TAG] plus LINE:content)";
|
|
2897
|
-
};
|
|
2898
|
-
};
|
|
2899
2889
|
readonly "read.defaultLimit": {
|
|
2900
2890
|
readonly type: "number";
|
|
2901
2891
|
readonly default: 300;
|
|
@@ -3152,7 +3142,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3152
3142
|
readonly default: true;
|
|
3153
3143
|
readonly ui: {
|
|
3154
3144
|
readonly tab: "shell";
|
|
3155
|
-
readonly group: "Eval &
|
|
3145
|
+
readonly group: "Eval & Runtimes";
|
|
3156
3146
|
readonly label: "Python Eval Backend";
|
|
3157
3147
|
readonly description: "Allow the eval tool to dispatch Python cells to the IPython kernel";
|
|
3158
3148
|
};
|
|
@@ -3162,18 +3152,38 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3162
3152
|
readonly default: true;
|
|
3163
3153
|
readonly ui: {
|
|
3164
3154
|
readonly tab: "shell";
|
|
3165
|
-
readonly group: "Eval &
|
|
3155
|
+
readonly group: "Eval & Runtimes";
|
|
3166
3156
|
readonly label: "JavaScript Eval Backend";
|
|
3167
3157
|
readonly description: "Allow the eval tool to dispatch JavaScript cells to the in-process runtime";
|
|
3168
3158
|
};
|
|
3169
3159
|
};
|
|
3160
|
+
readonly "eval.rb": {
|
|
3161
|
+
readonly type: "boolean";
|
|
3162
|
+
readonly default: false;
|
|
3163
|
+
readonly ui: {
|
|
3164
|
+
readonly tab: "shell";
|
|
3165
|
+
readonly group: "Eval & Runtimes";
|
|
3166
|
+
readonly label: "Ruby Eval Backend";
|
|
3167
|
+
readonly description: "Allow the eval tool to dispatch Ruby cells to the persistent Ruby kernel";
|
|
3168
|
+
};
|
|
3169
|
+
};
|
|
3170
|
+
readonly "eval.jl": {
|
|
3171
|
+
readonly type: "boolean";
|
|
3172
|
+
readonly default: false;
|
|
3173
|
+
readonly ui: {
|
|
3174
|
+
readonly tab: "shell";
|
|
3175
|
+
readonly group: "Eval & Runtimes";
|
|
3176
|
+
readonly label: "Julia Eval Backend";
|
|
3177
|
+
readonly description: "Allow the eval tool to dispatch Julia cells to the persistent Julia kernel";
|
|
3178
|
+
};
|
|
3179
|
+
};
|
|
3170
3180
|
readonly "python.kernelMode": {
|
|
3171
3181
|
readonly type: "enum";
|
|
3172
3182
|
readonly values: readonly ["session", "per-call"];
|
|
3173
3183
|
readonly default: "session";
|
|
3174
3184
|
readonly ui: {
|
|
3175
3185
|
readonly tab: "shell";
|
|
3176
|
-
readonly group: "Eval &
|
|
3186
|
+
readonly group: "Eval & Runtimes";
|
|
3177
3187
|
readonly label: "Python Kernel Mode";
|
|
3178
3188
|
readonly description: "Keep the IPython kernel alive across eval calls or start fresh each time";
|
|
3179
3189
|
};
|
|
@@ -3183,11 +3193,31 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3183
3193
|
readonly default: "";
|
|
3184
3194
|
readonly ui: {
|
|
3185
3195
|
readonly tab: "shell";
|
|
3186
|
-
readonly group: "Eval &
|
|
3196
|
+
readonly group: "Eval & Runtimes";
|
|
3187
3197
|
readonly label: "Python Interpreter";
|
|
3188
3198
|
readonly description: "Optional path to an exact Python executable. When set, automatic Python runtime discovery is skipped.";
|
|
3189
3199
|
};
|
|
3190
3200
|
};
|
|
3201
|
+
readonly "ruby.interpreter": {
|
|
3202
|
+
readonly type: "string";
|
|
3203
|
+
readonly default: "";
|
|
3204
|
+
readonly ui: {
|
|
3205
|
+
readonly tab: "shell";
|
|
3206
|
+
readonly group: "Eval & Runtimes";
|
|
3207
|
+
readonly label: "Ruby Interpreter";
|
|
3208
|
+
readonly description: "Optional path to an exact Ruby executable. When set, automatic Ruby runtime discovery is skipped.";
|
|
3209
|
+
};
|
|
3210
|
+
};
|
|
3211
|
+
readonly "julia.interpreter": {
|
|
3212
|
+
readonly type: "string";
|
|
3213
|
+
readonly default: "";
|
|
3214
|
+
readonly ui: {
|
|
3215
|
+
readonly tab: "shell";
|
|
3216
|
+
readonly group: "Eval & Runtimes";
|
|
3217
|
+
readonly label: "Julia Interpreter";
|
|
3218
|
+
readonly description: "Optional path to an exact Julia executable. When set, automatic Julia runtime discovery is skipped.";
|
|
3219
|
+
};
|
|
3220
|
+
};
|
|
3191
3221
|
readonly "tools.approval": {
|
|
3192
3222
|
readonly type: "record";
|
|
3193
3223
|
readonly default: {};
|
package/dist/types/cursor.d.ts
CHANGED
|
@@ -9,14 +9,14 @@ interface CursorExecBridgeOptions {
|
|
|
9
9
|
export declare class CursorExecHandlers implements ICursorExecHandlers {
|
|
10
10
|
private options;
|
|
11
11
|
constructor(options: CursorExecBridgeOptions);
|
|
12
|
-
read(args: Parameters<NonNullable<ICursorExecHandlers["read"]>>[0]): Promise<ToolResultMessage<
|
|
13
|
-
ls(args: Parameters<NonNullable<ICursorExecHandlers["ls"]>>[0]): Promise<ToolResultMessage<
|
|
14
|
-
grep(args: Parameters<NonNullable<ICursorExecHandlers["grep"]>>[0]): Promise<ToolResultMessage<
|
|
15
|
-
write(args: Parameters<NonNullable<ICursorExecHandlers["write"]>>[0]): Promise<ToolResultMessage<
|
|
16
|
-
delete(args: Parameters<NonNullable<ICursorExecHandlers["delete"]>>[0]): Promise<ToolResultMessage<
|
|
17
|
-
shell(args: Parameters<NonNullable<ICursorExecHandlers["shell"]>>[0]): Promise<ToolResultMessage<
|
|
18
|
-
shellStream(args: Parameters<NonNullable<ICursorExecHandlers["shellStream"]>>[0], callbacks: CursorShellStreamCallbacks): Promise<ToolResultMessage<
|
|
19
|
-
diagnostics(args: Parameters<NonNullable<ICursorExecHandlers["diagnostics"]>>[0]): Promise<ToolResultMessage<
|
|
20
|
-
mcp(call: CursorMcpCall): Promise<ToolResultMessage<
|
|
12
|
+
read(args: Parameters<NonNullable<ICursorExecHandlers["read"]>>[0]): Promise<ToolResultMessage<unknown>>;
|
|
13
|
+
ls(args: Parameters<NonNullable<ICursorExecHandlers["ls"]>>[0]): Promise<ToolResultMessage<unknown>>;
|
|
14
|
+
grep(args: Parameters<NonNullable<ICursorExecHandlers["grep"]>>[0]): Promise<ToolResultMessage<unknown>>;
|
|
15
|
+
write(args: Parameters<NonNullable<ICursorExecHandlers["write"]>>[0]): Promise<ToolResultMessage<unknown>>;
|
|
16
|
+
delete(args: Parameters<NonNullable<ICursorExecHandlers["delete"]>>[0]): Promise<ToolResultMessage<unknown>>;
|
|
17
|
+
shell(args: Parameters<NonNullable<ICursorExecHandlers["shell"]>>[0]): Promise<ToolResultMessage<unknown>>;
|
|
18
|
+
shellStream(args: Parameters<NonNullable<ICursorExecHandlers["shellStream"]>>[0], callbacks: CursorShellStreamCallbacks): Promise<ToolResultMessage<unknown>>;
|
|
19
|
+
diagnostics(args: Parameters<NonNullable<ICursorExecHandlers["diagnostics"]>>[0]): Promise<ToolResultMessage<unknown>>;
|
|
20
|
+
mcp(call: CursorMcpCall): Promise<ToolResultMessage<unknown>>;
|
|
21
21
|
}
|
|
22
22
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers shared by the per-language eval backend definitions (jl/js/py/rb
|
|
3
|
+
* index modules): session-id namespacing, settings access, and projection of
|
|
4
|
+
* executor results into the ExecutorBackend result shape.
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolSession } from "../tools";
|
|
7
|
+
import type { ExecutorBackendResult } from "./backend";
|
|
8
|
+
import type { EvalDisplayOutput } from "./types";
|
|
9
|
+
export declare function namespaceSessionId(sessionId: string, prefix: string): string;
|
|
10
|
+
export declare function readSetting<T>(session: ToolSession, key: string): T | undefined;
|
|
11
|
+
export declare function readInterpreterSetting(session: ToolSession, key: string): string | undefined;
|
|
12
|
+
export declare function toExecutorBackendResult(result: {
|
|
13
|
+
output: string;
|
|
14
|
+
exitCode: number | undefined;
|
|
15
|
+
cancelled: boolean;
|
|
16
|
+
truncated: boolean;
|
|
17
|
+
artifactId?: string | undefined;
|
|
18
|
+
totalLines: number;
|
|
19
|
+
totalBytes: number;
|
|
20
|
+
outputLines: number;
|
|
21
|
+
outputBytes: number;
|
|
22
|
+
displayOutputs: EvalDisplayOutput[];
|
|
23
|
+
}): ExecutorBackendResult;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { ToolSession } from "../tools";
|
|
2
|
+
import type { JsStatusEvent } from "./js/shared/types";
|
|
3
|
+
import type { KernelDisplayOutput } from "./py/display";
|
|
4
|
+
/**
|
|
5
|
+
* Constructor for a language executor's cancellation error. Each backend
|
|
6
|
+
* subclasses {@link Error} and carries a `timedOut` flag distinguishing a
|
|
7
|
+
* deadline expiry from a plain abort.
|
|
8
|
+
*/
|
|
9
|
+
export type CancelledErrorClass = new (timedOut: boolean) => Error & {
|
|
10
|
+
timedOut: boolean;
|
|
11
|
+
};
|
|
12
|
+
/** Managed-env values a kernel patch may carry (`null` clears, `undefined` skips). */
|
|
13
|
+
export type KernelEnvPatch = Record<string, string | null | undefined>;
|
|
14
|
+
/**
|
|
15
|
+
* Options every kernel-backed language executor shares. Per-language option
|
|
16
|
+
* interfaces structurally extend this; the base executor only reads these.
|
|
17
|
+
*/
|
|
18
|
+
export interface KernelExecutorBaseOptions {
|
|
19
|
+
cwd?: string;
|
|
20
|
+
timeoutMs?: number;
|
|
21
|
+
deadlineMs?: number;
|
|
22
|
+
idleTimeoutMs?: number;
|
|
23
|
+
onChunk?: (chunk: string) => Promise<void> | void;
|
|
24
|
+
signal?: AbortSignal;
|
|
25
|
+
onStatus?: (event: JsStatusEvent) => void;
|
|
26
|
+
emitStatus?: (event: JsStatusEvent) => void;
|
|
27
|
+
toolSession?: ToolSession;
|
|
28
|
+
bridgeSessionId?: string;
|
|
29
|
+
artifactId?: string;
|
|
30
|
+
artifactPath?: string;
|
|
31
|
+
}
|
|
32
|
+
/** Normalised execution result produced by {@link executeWithKernelBase}. */
|
|
33
|
+
export interface KernelExecutionResult {
|
|
34
|
+
output: string;
|
|
35
|
+
exitCode: number | undefined;
|
|
36
|
+
cancelled: boolean;
|
|
37
|
+
truncated: boolean;
|
|
38
|
+
artifactId: string | undefined;
|
|
39
|
+
totalLines: number;
|
|
40
|
+
totalBytes: number;
|
|
41
|
+
outputLines: number;
|
|
42
|
+
outputBytes: number;
|
|
43
|
+
displayOutputs: KernelDisplayOutput[];
|
|
44
|
+
stdinRequested: boolean;
|
|
45
|
+
}
|
|
46
|
+
/** Minimal kernel surface the base executor drives, satisfied by every backend kernel. */
|
|
47
|
+
export interface GenericKernel<TEnv> {
|
|
48
|
+
execute(code: string, options: {
|
|
49
|
+
cwd?: string;
|
|
50
|
+
env?: TEnv;
|
|
51
|
+
id: string;
|
|
52
|
+
signal?: AbortSignal;
|
|
53
|
+
timeoutMs?: number;
|
|
54
|
+
onChunk: (text: string) => Promise<void> | void;
|
|
55
|
+
onDisplay: (output: KernelDisplayOutput) => Promise<void> | void;
|
|
56
|
+
}): Promise<{
|
|
57
|
+
status: "ok" | "error";
|
|
58
|
+
cancelled: boolean;
|
|
59
|
+
timedOut: boolean;
|
|
60
|
+
kernelKilled?: boolean;
|
|
61
|
+
stdinRequested?: boolean;
|
|
62
|
+
}>;
|
|
63
|
+
}
|
|
64
|
+
export declare function getExecutionDeadlineMs(options?: {
|
|
65
|
+
deadlineMs?: number;
|
|
66
|
+
timeoutMs?: number;
|
|
67
|
+
}): number | undefined;
|
|
68
|
+
export declare function getRemainingTimeoutMs(deadlineMs?: number): number | undefined;
|
|
69
|
+
export declare function isCancellationError(error: unknown, cancelledErrorClass: CancelledErrorClass): boolean;
|
|
70
|
+
export declare function isTimedOutCancellation(error: unknown, cancelledErrorClass: CancelledErrorClass, signal?: AbortSignal): boolean;
|
|
71
|
+
export declare function waitForPromiseWithCancellation<T>(promise: Promise<T>, options: {
|
|
72
|
+
signal?: AbortSignal;
|
|
73
|
+
deadlineMs?: number;
|
|
74
|
+
}, cancelledErrorClass: CancelledErrorClass): Promise<T>;
|
|
75
|
+
export declare function createCancelledKernelResult(output: string): KernelExecutionResult;
|
|
76
|
+
export declare const MANAGED_KERNEL_ENV_KEYS: readonly ["PI_SESSION_FILE", "PI_ARTIFACTS_DIR", "PI_TOOL_BRIDGE_URL", "PI_TOOL_BRIDGE_TOKEN", "PI_TOOL_BRIDGE_SESSION", "PI_EVAL_LOCAL_ROOTS"];
|
|
77
|
+
interface ManagedKernelEnvOptions {
|
|
78
|
+
sessionFile?: string;
|
|
79
|
+
artifactsDir?: string;
|
|
80
|
+
bridgeSessionId?: string;
|
|
81
|
+
bridge?: {
|
|
82
|
+
url: string;
|
|
83
|
+
token: string;
|
|
84
|
+
};
|
|
85
|
+
localRoots?: Record<string, string>;
|
|
86
|
+
}
|
|
87
|
+
export declare function buildManagedKernelEnvPatch(options: ManagedKernelEnvOptions): Record<string, string | null>;
|
|
88
|
+
export declare function buildManagedKernelEnv(options: ManagedKernelEnvOptions): Record<string, string> | undefined;
|
|
89
|
+
export declare function attachSessionOwner(session: {
|
|
90
|
+
ownerIds: Set<string>;
|
|
91
|
+
hasFallbackOwner: boolean;
|
|
92
|
+
}, sessionId: string, ownerId: string | undefined): void;
|
|
93
|
+
export interface ExecuteWithKernelBaseParams<TOptions extends KernelExecutorBaseOptions, TEnv extends KernelEnvPatch = Record<string, string | null>> {
|
|
94
|
+
kernel: GenericKernel<TEnv>;
|
|
95
|
+
code: string;
|
|
96
|
+
options: TOptions | undefined;
|
|
97
|
+
/** Prefix for the per-execution run id (e.g. `"py"`, `"rb"`, `"jl"`). */
|
|
98
|
+
runIdPrefix: string;
|
|
99
|
+
/** Human-readable language label used in the failure log line. */
|
|
100
|
+
errorLogLabel: string;
|
|
101
|
+
/**
|
|
102
|
+
* Julia surfaces eval-timeout control events through its normal status path,
|
|
103
|
+
* so they must NOT be filtered out the way the JS-status backends do.
|
|
104
|
+
*/
|
|
105
|
+
isJulia?: boolean;
|
|
106
|
+
cancelledErrorClass: CancelledErrorClass;
|
|
107
|
+
buildKernelEnvPatch: (options: TOptions) => TEnv;
|
|
108
|
+
formatKernelTimeoutAnnotation: (executionTimeoutMs: number | undefined, kernelKilled: boolean) => string;
|
|
109
|
+
formatTimeoutAnnotation: (executionTimeoutMs: number | undefined) => string | undefined;
|
|
110
|
+
/**
|
|
111
|
+
* Override how the wall-clock deadline is derived from options. Defaults to
|
|
112
|
+
* {@link getExecutionDeadlineMs}; Julia passes the pre-computed `deadlineMs`
|
|
113
|
+
* straight through instead of re-deriving from `timeoutMs`.
|
|
114
|
+
*/
|
|
115
|
+
resolveDeadlineMs?: (options: TOptions | undefined) => number | undefined;
|
|
116
|
+
}
|
|
117
|
+
export declare function executeWithKernelBase<TOptions extends KernelExecutorBaseOptions, TEnv extends KernelEnvPatch = Record<string, string | null>>(params: ExecuteWithKernelBaseParams<TOptions, TEnv>): Promise<KernelExecutionResult>;
|
|
118
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ToolSession } from "../../tools";
|
|
2
|
+
import { type PyToolBridgeInfo } from "../py/tool-bridge";
|
|
3
|
+
import type { EvalDisplayOutput, EvalStatusEvent } from "../types";
|
|
4
|
+
import { JuliaKernel, type KernelExecuteOptions, type KernelExecuteResult } from "./kernel";
|
|
5
|
+
export interface JuliaExecutorOptions {
|
|
6
|
+
cwd?: string;
|
|
7
|
+
sessionId?: string;
|
|
8
|
+
sessionFile?: string;
|
|
9
|
+
artifactsDir?: string;
|
|
10
|
+
localRoots?: Record<string, string>;
|
|
11
|
+
interpreter?: string;
|
|
12
|
+
onChunk?: (text: string) => void | Promise<void>;
|
|
13
|
+
onStatus?: (event: EvalStatusEvent) => void;
|
|
14
|
+
signal?: AbortSignal;
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
deadlineMs?: number;
|
|
17
|
+
idleTimeoutMs?: number;
|
|
18
|
+
kernelOwnerId?: string;
|
|
19
|
+
reset?: boolean;
|
|
20
|
+
toolSession?: ToolSession;
|
|
21
|
+
bridge?: PyToolBridgeInfo;
|
|
22
|
+
bridgeSessionId?: string;
|
|
23
|
+
artifactId?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface JuliaKernelExecutor {
|
|
26
|
+
execute: (code: string, options?: KernelExecuteOptions) => Promise<KernelExecuteResult>;
|
|
27
|
+
}
|
|
28
|
+
export interface JuliaResult {
|
|
29
|
+
output: string;
|
|
30
|
+
exitCode: number | undefined;
|
|
31
|
+
cancelled: boolean;
|
|
32
|
+
truncated: boolean;
|
|
33
|
+
artifactId: string | undefined;
|
|
34
|
+
totalLines: number;
|
|
35
|
+
totalBytes: number;
|
|
36
|
+
outputLines: number;
|
|
37
|
+
outputBytes: number;
|
|
38
|
+
displayOutputs: EvalDisplayOutput[];
|
|
39
|
+
stdinRequested: boolean;
|
|
40
|
+
}
|
|
41
|
+
export declare function disposeAllJuliaKernelSessions(): Promise<void>;
|
|
42
|
+
export declare function disposeJuliaKernelSessionsByOwner(ownerId: string): Promise<void>;
|
|
43
|
+
export declare function executeJuliaWithKernel(kernel: JuliaKernel, code: string, options?: JuliaExecutorOptions): Promise<JuliaResult>;
|
|
44
|
+
export declare function executeJulia(code: string, options?: JuliaExecutorOptions): Promise<JuliaResult>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ToolSession } from "../../tools";
|
|
2
|
+
import { type ExecutorBackendExecOptions, type ExecutorBackendResult } from "../backend";
|
|
3
|
+
export declare function namespaceSessionId(sessionId: string): string;
|
|
4
|
+
declare const _default: {
|
|
5
|
+
id: "julia";
|
|
6
|
+
label: string;
|
|
7
|
+
highlightLang: string;
|
|
8
|
+
isAvailable(session: ToolSession): Promise<boolean>;
|
|
9
|
+
execute(code: string, opts: ExecutorBackendExecOptions): Promise<ExecutorBackendResult>;
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { BaseKernel, type KernelStartOptions } from "../kernel-base";
|
|
2
|
+
import type { KernelDisplayOutput } from "../py/display";
|
|
3
|
+
import { type JuliaRuntime } from "./runtime";
|
|
4
|
+
export type { KernelExecuteResult, KernelRuntimeEnv } from "../kernel-base";
|
|
5
|
+
export { renderKernelDisplay } from "../py/display";
|
|
6
|
+
export type { KernelDisplayOutput };
|
|
7
|
+
export interface KernelExecuteOptions {
|
|
8
|
+
id?: string;
|
|
9
|
+
cwd?: string;
|
|
10
|
+
env?: Record<string, string | undefined>;
|
|
11
|
+
silent?: boolean;
|
|
12
|
+
storeHistory?: boolean;
|
|
13
|
+
timeoutMs?: number;
|
|
14
|
+
signal?: AbortSignal;
|
|
15
|
+
onChunk?: (text: string) => void | Promise<void>;
|
|
16
|
+
onDisplay?: (output: KernelDisplayOutput) => void | Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export interface JuliaKernelAvailability {
|
|
19
|
+
ok: boolean;
|
|
20
|
+
juliaPath?: string;
|
|
21
|
+
runtime?: JuliaRuntime;
|
|
22
|
+
reason?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function checkJuliaKernelAvailability(cwd: string, interpreter?: string): Promise<JuliaKernelAvailability>;
|
|
25
|
+
export declare class JuliaKernel extends BaseKernel<KernelExecuteOptions> {
|
|
26
|
+
private constructor();
|
|
27
|
+
static start(options: KernelStartOptions): Promise<JuliaKernel>;
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const JULIA_PRELUDE: string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface JuliaRuntime {
|
|
2
|
+
/** Path to the julia executable. */
|
|
3
|
+
juliaPath: string;
|
|
4
|
+
/** Filtered environment variables. */
|
|
5
|
+
env: Record<string, string | undefined>;
|
|
6
|
+
}
|
|
7
|
+
export declare const filterEnv: (env: Record<string, string | undefined>) => Record<string, string | undefined>;
|
|
8
|
+
/**
|
|
9
|
+
* Resolve an explicitly configured interpreter (`julia.interpreter`) into a
|
|
10
|
+
* runtime, bypassing discovery. Does not probe the executable.
|
|
11
|
+
* `~` expands to the home directory and relative paths resolve against `cwd`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveExplicitJuliaRuntime(interpreter: string, cwd: string, baseEnv: Record<string, string | undefined>): JuliaRuntime;
|
|
14
|
+
/**
|
|
15
|
+
* Enumerate candidate Julia runtimes in priority order. With an explicit
|
|
16
|
+
* interpreter that is the only candidate; otherwise the first `julia` on PATH.
|
|
17
|
+
*/
|
|
18
|
+
export declare function enumerateJuliaRuntimes(cwd: string, baseEnv: Record<string, string | undefined>, interpreter?: string): JuliaRuntime[];
|
|
19
|
+
/**
|
|
20
|
+
* Resolve the highest-priority Julia runtime. Throws when none exists.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveJuliaRuntime(cwd: string, baseEnv: Record<string, string | undefined>, interpreter?: string): JuliaRuntime;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { Subprocess } from "bun";
|
|
2
|
+
import { type KernelDisplayOutput } from "./py/display";
|
|
3
|
+
export type KernelRuntimeEnv = Record<string, string | null>;
|
|
4
|
+
export interface KernelExecuteOptions {
|
|
5
|
+
id?: string;
|
|
6
|
+
/** Runtime working directory applied immediately before this request executes. */
|
|
7
|
+
cwd?: string;
|
|
8
|
+
/** Managed runtime environment variables applied immediately before this request executes. */
|
|
9
|
+
env?: Record<string, string | undefined> | Record<string, string | null>;
|
|
10
|
+
signal?: AbortSignal;
|
|
11
|
+
onChunk?: (text: string) => Promise<void> | void;
|
|
12
|
+
onDisplay?: (output: KernelDisplayOutput) => Promise<void> | void;
|
|
13
|
+
timeoutMs?: number;
|
|
14
|
+
silent?: boolean;
|
|
15
|
+
storeHistory?: boolean;
|
|
16
|
+
allowStdin?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface KernelExecuteResult {
|
|
19
|
+
status: "ok" | "error";
|
|
20
|
+
executionCount?: number;
|
|
21
|
+
error?: {
|
|
22
|
+
name: string;
|
|
23
|
+
value: string;
|
|
24
|
+
traceback: string[];
|
|
25
|
+
};
|
|
26
|
+
cancelled: boolean;
|
|
27
|
+
timedOut: boolean;
|
|
28
|
+
stdinRequested: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* True when the kernel subprocess was killed as part of settling this
|
|
31
|
+
* execution (e.g. SIGINT was ignored and we escalated to shutdown, or the
|
|
32
|
+
* kernel died unexpectedly). When false, the kernel remains reusable.
|
|
33
|
+
*/
|
|
34
|
+
kernelKilled?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface KernelShutdownResult {
|
|
37
|
+
confirmed: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface KernelShutdownOptions {
|
|
40
|
+
signal?: AbortSignal;
|
|
41
|
+
timeoutMs?: number;
|
|
42
|
+
}
|
|
43
|
+
/** Per-language lifecycle configuration consumed by each kernel's `start()`. */
|
|
44
|
+
export interface KernelStartOptions {
|
|
45
|
+
cwd: string;
|
|
46
|
+
env?: Record<string, string | undefined>;
|
|
47
|
+
/** Explicit interpreter path; skips discovery when set. */
|
|
48
|
+
interpreter?: string;
|
|
49
|
+
signal?: AbortSignal;
|
|
50
|
+
deadlineMs?: number;
|
|
51
|
+
}
|
|
52
|
+
/** Per-language configuration handed to {@link BaseKernel} by each subclass. */
|
|
53
|
+
export interface BaseKernelOptions<TExecuteOptions extends KernelExecuteOptions = KernelExecuteOptions> {
|
|
54
|
+
/** Human-readable language label used in log messages and errors. */
|
|
55
|
+
languageName: string;
|
|
56
|
+
/** When true, every IPC frame is logged at debug level. */
|
|
57
|
+
traceIpc: boolean;
|
|
58
|
+
/** Wire payload asking the runner to exit cleanly. */
|
|
59
|
+
exitPayload: string;
|
|
60
|
+
/** How long to wait after SIGINT before escalating to subprocess termination. */
|
|
61
|
+
interruptEscalationMs: number;
|
|
62
|
+
/** Default grace period applied by {@link BaseKernel.shutdown}. */
|
|
63
|
+
shutdownGraceMs: number;
|
|
64
|
+
/** Serializes an execution request into the runner's wire protocol. */
|
|
65
|
+
buildPayload: (code: string, msgId: string, options?: TExecuteOptions) => string;
|
|
66
|
+
}
|
|
67
|
+
export type FrameType = "started" | "stdout" | "stderr" | "display" | "result" | "error" | "done";
|
|
68
|
+
export interface Frame {
|
|
69
|
+
type: FrameType;
|
|
70
|
+
id?: string;
|
|
71
|
+
data?: string;
|
|
72
|
+
bundle?: Record<string, unknown>;
|
|
73
|
+
ename?: string;
|
|
74
|
+
evalue?: string;
|
|
75
|
+
traceback?: string[];
|
|
76
|
+
status?: "ok" | "error";
|
|
77
|
+
executionCount?: number;
|
|
78
|
+
cancelled?: boolean;
|
|
79
|
+
}
|
|
80
|
+
export declare function getRemainingTimeMs(deadlineMs?: number): number | undefined;
|
|
81
|
+
export declare function createAbortError(name: "AbortError" | "TimeoutError", message: string): Error;
|
|
82
|
+
export declare function throwIfAborted(signal: AbortSignal | undefined, fallbackReason: string): void;
|
|
83
|
+
export declare function isTimeoutReason(reason: unknown): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Shared subprocess-backed kernel machinery for the language runners. Each
|
|
86
|
+
* language subclasses this, supplying its binary/runner via a static `start()`
|
|
87
|
+
* and its wire protocol via {@link BaseKernelOptions.buildPayload}. The IPC loop
|
|
88
|
+
* speaks NDJSON: the runner emits one JSON {@link Frame} per line; outbound
|
|
89
|
+
* requests are serialized by `buildPayload` (which may itself be NDJSON or any
|
|
90
|
+
* other line-delimited encoding).
|
|
91
|
+
*
|
|
92
|
+
* `TExecuteOptions` is the language's own execute-options type so each runner's
|
|
93
|
+
* `buildPayload` sees its precise option shape (e.g. environment-map variants).
|
|
94
|
+
*/
|
|
95
|
+
export declare abstract class BaseKernel<TExecuteOptions extends KernelExecuteOptions = KernelExecuteOptions> {
|
|
96
|
+
#private;
|
|
97
|
+
readonly id: string;
|
|
98
|
+
constructor(id: string, options: BaseKernelOptions<TExecuteOptions>);
|
|
99
|
+
setProcess(proc: Subprocess<"pipe", "pipe", "pipe">): void;
|
|
100
|
+
isAlive(): boolean;
|
|
101
|
+
execute(code: string, options?: TExecuteOptions): Promise<KernelExecuteResult>;
|
|
102
|
+
interrupt(): Promise<void>;
|
|
103
|
+
shutdown(options?: KernelShutdownOptions): Promise<KernelShutdownResult>;
|
|
104
|
+
executeWithBudget(code: string, signal: AbortSignal | undefined, timeoutMs: number, label: string): Promise<void>;
|
|
105
|
+
}
|
|
@@ -1,60 +1,8 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { BaseKernel, type KernelStartOptions } from "../kernel-base";
|
|
2
2
|
import { type PythonRuntime } from "./runtime";
|
|
3
|
+
export type { KernelExecuteOptions, KernelExecuteResult, KernelRuntimeEnv, KernelShutdownOptions, KernelShutdownResult, } from "../kernel-base";
|
|
3
4
|
export type { KernelDisplayOutput, PythonStatusEvent } from "./display";
|
|
4
5
|
export { renderKernelDisplay } from "./display";
|
|
5
|
-
export type KernelRuntimeEnv = Record<string, string | null>;
|
|
6
|
-
export interface KernelExecuteOptions {
|
|
7
|
-
id?: string;
|
|
8
|
-
/** Runtime working directory applied immediately before this request executes. */
|
|
9
|
-
cwd?: string;
|
|
10
|
-
/** Managed runtime environment variables applied immediately before this request executes. */
|
|
11
|
-
env?: KernelRuntimeEnv;
|
|
12
|
-
signal?: AbortSignal;
|
|
13
|
-
onChunk?: (text: string) => Promise<void> | void;
|
|
14
|
-
onDisplay?: (output: KernelDisplayOutput) => Promise<void> | void;
|
|
15
|
-
timeoutMs?: number;
|
|
16
|
-
silent?: boolean;
|
|
17
|
-
storeHistory?: boolean;
|
|
18
|
-
allowStdin?: boolean;
|
|
19
|
-
}
|
|
20
|
-
export interface KernelExecuteResult {
|
|
21
|
-
status: "ok" | "error";
|
|
22
|
-
executionCount?: number;
|
|
23
|
-
error?: {
|
|
24
|
-
name: string;
|
|
25
|
-
value: string;
|
|
26
|
-
traceback: string[];
|
|
27
|
-
};
|
|
28
|
-
cancelled: boolean;
|
|
29
|
-
timedOut: boolean;
|
|
30
|
-
stdinRequested: boolean;
|
|
31
|
-
/**
|
|
32
|
-
* True when the kernel subprocess was killed as part of settling this
|
|
33
|
-
* execution (e.g. SIGINT was ignored and we escalated to shutdown, or the
|
|
34
|
-
* kernel died unexpectedly). When false, the kernel remains reusable.
|
|
35
|
-
*/
|
|
36
|
-
kernelKilled?: boolean;
|
|
37
|
-
}
|
|
38
|
-
export interface KernelShutdownResult {
|
|
39
|
-
confirmed: boolean;
|
|
40
|
-
}
|
|
41
|
-
interface KernelLifecycleOptions {
|
|
42
|
-
signal?: AbortSignal;
|
|
43
|
-
deadlineMs?: number;
|
|
44
|
-
}
|
|
45
|
-
interface KernelStartOptions extends KernelLifecycleOptions {
|
|
46
|
-
cwd: string;
|
|
47
|
-
env?: Record<string, string | undefined>;
|
|
48
|
-
/**
|
|
49
|
-
* Explicit interpreter path (`python.interpreter` from the session's
|
|
50
|
-
* settings). When set, runtime discovery is skipped entirely.
|
|
51
|
-
*/
|
|
52
|
-
interpreter?: string;
|
|
53
|
-
}
|
|
54
|
-
interface KernelShutdownOptions {
|
|
55
|
-
signal?: AbortSignal;
|
|
56
|
-
timeoutMs?: number;
|
|
57
|
-
}
|
|
58
6
|
export interface PythonKernelAvailability {
|
|
59
7
|
ok: boolean;
|
|
60
8
|
pythonPath?: string;
|
|
@@ -63,13 +11,7 @@ export interface PythonKernelAvailability {
|
|
|
63
11
|
runtime?: PythonRuntime;
|
|
64
12
|
}
|
|
65
13
|
export declare function checkPythonKernelAvailability(cwd: string, interpreter?: string): Promise<PythonKernelAvailability>;
|
|
66
|
-
export declare class PythonKernel {
|
|
67
|
-
#private;
|
|
68
|
-
readonly id: string;
|
|
14
|
+
export declare class PythonKernel extends BaseKernel {
|
|
69
15
|
private constructor();
|
|
70
16
|
static start(options: KernelStartOptions): Promise<PythonKernel>;
|
|
71
|
-
isAlive(): boolean;
|
|
72
|
-
execute(code: string, options?: KernelExecuteOptions): Promise<KernelExecuteResult>;
|
|
73
|
-
interrupt(): Promise<void>;
|
|
74
|
-
shutdown(options?: KernelShutdownOptions): Promise<KernelShutdownResult>;
|
|
75
17
|
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { ToolSession } from "../../tools";
|
|
2
|
+
import type { JsStatusEvent } from "../js/shared/types";
|
|
3
|
+
import { type KernelDisplayOutput, type KernelExecuteOptions, type KernelExecuteResult } from "./kernel";
|
|
4
|
+
export interface RubyExecutorOptions {
|
|
5
|
+
/** Working directory for command execution */
|
|
6
|
+
cwd?: string;
|
|
7
|
+
/** Timeout in milliseconds */
|
|
8
|
+
timeoutMs?: number;
|
|
9
|
+
/** Absolute wall-clock deadline in milliseconds since epoch */
|
|
10
|
+
deadlineMs?: number;
|
|
11
|
+
/**
|
|
12
|
+
* Runtime-work budget (ms). Used only for timeout-annotation text when the
|
|
13
|
+
* caller drives cancellation via the eval watchdog `signal`. Does not arm a timer.
|
|
14
|
+
*/
|
|
15
|
+
idleTimeoutMs?: number;
|
|
16
|
+
/** Callback for streaming output chunks (already sanitized) */
|
|
17
|
+
onChunk?: (chunk: string) => Promise<void> | void;
|
|
18
|
+
/** AbortSignal for cancellation */
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
/** Session identifier for kernel reuse */
|
|
21
|
+
sessionId?: string;
|
|
22
|
+
/** Logical owner identifier for retained kernel cleanup */
|
|
23
|
+
kernelOwnerId?: string;
|
|
24
|
+
/** Explicit interpreter path (`ruby.interpreter`). Skips discovery when set. */
|
|
25
|
+
interpreter?: string;
|
|
26
|
+
/** Restart the kernel before executing */
|
|
27
|
+
reset?: boolean;
|
|
28
|
+
/** Session file path for accessing task outputs */
|
|
29
|
+
sessionFile?: string;
|
|
30
|
+
/** Effective artifacts directory for the current session. */
|
|
31
|
+
artifactsDir?: string;
|
|
32
|
+
/** Artifact path/id for full output storage */
|
|
33
|
+
artifactPath?: string;
|
|
34
|
+
artifactId?: string;
|
|
35
|
+
/**
|
|
36
|
+
* On-disk roots the prelude helpers substitute for internal-URL schemes
|
|
37
|
+
* (e.g. `{ local: "/…/artifacts/local" }`). Exported to the kernel as
|
|
38
|
+
* `PI_EVAL_LOCAL_ROOTS` (JSON).
|
|
39
|
+
*/
|
|
40
|
+
localRoots?: Record<string, string>;
|
|
41
|
+
/**
|
|
42
|
+
* ToolSession used to resolve host-side `tool.<name>(args)` calls. When
|
|
43
|
+
* omitted, the bridge env vars are not injected and `tool.foo(...)` raises.
|
|
44
|
+
*/
|
|
45
|
+
toolSession?: ToolSession;
|
|
46
|
+
/** Callback for status events emitted by tool bridge invocations. */
|
|
47
|
+
emitStatus?: (event: JsStatusEvent) => void;
|
|
48
|
+
/** Live status events streamed as they are emitted. */
|
|
49
|
+
onStatus?: (event: JsStatusEvent) => void;
|
|
50
|
+
/** @internal Bridge session id, set by `executeRuby` before delegating. */
|
|
51
|
+
bridgeSessionId?: string;
|
|
52
|
+
/** @internal Bridge endpoint info, set by `executeRuby` before delegating. */
|
|
53
|
+
bridge?: {
|
|
54
|
+
url: string;
|
|
55
|
+
token: string;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export interface RubyKernelExecutor {
|
|
59
|
+
execute: (code: string, options?: KernelExecuteOptions) => Promise<KernelExecuteResult>;
|
|
60
|
+
}
|
|
61
|
+
export interface RubyResult {
|
|
62
|
+
output: string;
|
|
63
|
+
exitCode: number | undefined;
|
|
64
|
+
cancelled: boolean;
|
|
65
|
+
truncated: boolean;
|
|
66
|
+
artifactId?: string;
|
|
67
|
+
totalLines: number;
|
|
68
|
+
totalBytes: number;
|
|
69
|
+
outputLines: number;
|
|
70
|
+
outputBytes: number;
|
|
71
|
+
displayOutputs: KernelDisplayOutput[];
|
|
72
|
+
stdinRequested: boolean;
|
|
73
|
+
}
|
|
74
|
+
export declare function disposeAllRubyKernelSessions(): Promise<void>;
|
|
75
|
+
export declare function disposeRubyKernelSessionsByOwner(ownerId: string): Promise<void>;
|
|
76
|
+
export declare function executeRubyWithKernel(kernel: RubyKernelExecutor, code: string, options?: RubyExecutorOptions): Promise<RubyResult>;
|
|
77
|
+
export declare function executeRuby(code: string, options?: RubyExecutorOptions): Promise<RubyResult>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ToolSession } from "../../tools";
|
|
2
|
+
import { type ExecutorBackendExecOptions, type ExecutorBackendResult } from "../backend";
|
|
3
|
+
export declare function namespaceSessionId(sessionId: string): string;
|
|
4
|
+
declare const _default: {
|
|
5
|
+
id: "ruby";
|
|
6
|
+
label: string;
|
|
7
|
+
highlightLang: string;
|
|
8
|
+
isAvailable(session: ToolSession): Promise<boolean>;
|
|
9
|
+
execute(code: string, opts: ExecutorBackendExecOptions): Promise<ExecutorBackendResult>;
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|