opencode-ipynb 0.1.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/LICENSE +21 -0
- package/README.md +336 -0
- package/dist/domain/cell.d.ts +50 -0
- package/dist/domain/cell.d.ts.map +1 -0
- package/dist/domain/errors.d.ts +119 -0
- package/dist/domain/errors.d.ts.map +1 -0
- package/dist/domain/execution.d.ts +87 -0
- package/dist/domain/execution.d.ts.map +1 -0
- package/dist/domain/notebook.d.ts +65 -0
- package/dist/domain/notebook.d.ts.map +1 -0
- package/dist/domain/output.d.ts +50 -0
- package/dist/domain/output.d.ts.map +1 -0
- package/dist/format/diagnostics.d.ts +15 -0
- package/dist/format/diagnostics.d.ts.map +1 -0
- package/dist/format/diff.d.ts +20 -0
- package/dist/format/diff.d.ts.map +1 -0
- package/dist/format/markdown.d.ts +21 -0
- package/dist/format/markdown.d.ts.map +1 -0
- package/dist/format/outputs.d.ts +21 -0
- package/dist/format/outputs.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31862 -0
- package/dist/plugin-options.d.ts +13 -0
- package/dist/plugin-options.d.ts.map +1 -0
- package/dist/plugin.d.ts +4 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/services/DiffService.d.ts +17 -0
- package/dist/services/DiffService.d.ts.map +1 -0
- package/dist/services/NotebookCleanService.d.ts +34 -0
- package/dist/services/NotebookCleanService.d.ts.map +1 -0
- package/dist/services/NotebookEditService.d.ts +63 -0
- package/dist/services/NotebookEditService.d.ts.map +1 -0
- package/dist/services/NotebookExecutionService.d.ts +54 -0
- package/dist/services/NotebookExecutionService.d.ts.map +1 -0
- package/dist/services/NotebookExportService.d.ts +33 -0
- package/dist/services/NotebookExportService.d.ts.map +1 -0
- package/dist/services/NotebookFileService.d.ts +18 -0
- package/dist/services/NotebookFileService.d.ts.map +1 -0
- package/dist/services/NotebookInspectService.d.ts +62 -0
- package/dist/services/NotebookInspectService.d.ts.map +1 -0
- package/dist/services/NotebookOutputService.d.ts +62 -0
- package/dist/services/NotebookOutputService.d.ts.map +1 -0
- package/dist/services/NotebookReadService.d.ts +36 -0
- package/dist/services/NotebookReadService.d.ts.map +1 -0
- package/dist/services/PathService.d.ts +26 -0
- package/dist/services/PathService.d.ts.map +1 -0
- package/dist/services/PermissionService.d.ts +20 -0
- package/dist/services/PermissionService.d.ts.map +1 -0
- package/dist/services/PythonService.d.ts +80 -0
- package/dist/services/PythonService.d.ts.map +1 -0
- package/dist/services/index.d.ts +55 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/tools/_resolveOptions.d.ts +2 -0
- package/dist/tools/_resolveOptions.d.ts.map +1 -0
- package/dist/tools/cell_delete.d.ts +14 -0
- package/dist/tools/cell_delete.d.ts.map +1 -0
- package/dist/tools/cell_insert.d.ts +22 -0
- package/dist/tools/cell_insert.d.ts.map +1 -0
- package/dist/tools/cell_move.d.ts +16 -0
- package/dist/tools/cell_move.d.ts.map +1 -0
- package/dist/tools/clean.d.ts +22 -0
- package/dist/tools/clean.d.ts.map +1 -0
- package/dist/tools/doctor.d.ts +12 -0
- package/dist/tools/doctor.d.ts.map +1 -0
- package/dist/tools/edit.d.ts +22 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/export.d.ts +24 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/inspect.d.ts +20 -0
- package/dist/tools/inspect.d.ts.map +1 -0
- package/dist/tools/kernel.d.ts +36 -0
- package/dist/tools/kernel.d.ts.map +1 -0
- package/dist/tools/outputs.d.ts +30 -0
- package/dist/tools/outputs.d.ts.map +1 -0
- package/dist/tools/read.d.ts +30 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/repro.d.ts +42 -0
- package/dist/tools/repro.d.ts.map +1 -0
- package/dist/tools/run.d.ts +35 -0
- package/dist/tools/run.d.ts.map +1 -0
- package/dist/utils/ansi.d.ts +3 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/attachments.d.ts +11 -0
- package/dist/utils/attachments.d.ts.map +1 -0
- package/dist/utils/fiber.d.ts +2 -0
- package/dist/utils/fiber.d.ts.map +1 -0
- package/dist/utils/i18n.d.ts +8 -0
- package/dist/utils/i18n.d.ts.map +1 -0
- package/dist/utils/imports.d.ts +4 -0
- package/dist/utils/imports.d.ts.map +1 -0
- package/dist/utils/json.d.ts +5 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/limits.d.ts +9 -0
- package/dist/utils/limits.d.ts.map +1 -0
- package/dist/utils/mime.d.ts +4 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/paths.d.ts +22 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/truncate.d.ts +17 -0
- package/dist/utils/truncate.d.ts.map +1 -0
- package/package.json +69 -0
- package/python/ipynb_runner.py +952 -0
- package/python/requirements.txt +30 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const PluginOptionsSchema: z.ZodObject<{
|
|
3
|
+
pythonPath: z.ZodOptional<z.ZodString>;
|
|
4
|
+
preferUv: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
5
|
+
helperRelativePath: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
6
|
+
defaultTimeoutMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
7
|
+
allowOutsideWorktree: z.ZodOptional<z.ZodBoolean>;
|
|
8
|
+
defaultMaxOutputChars: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
9
|
+
warmKernel: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type PluginOptions = z.infer<typeof PluginOptionsSchema>;
|
|
12
|
+
export declare const parsePluginOptions: (raw: unknown, fallback?: Partial<PluginOptions>) => PluginOptions;
|
|
13
|
+
//# sourceMappingURL=plugin-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-options.d.ts","sourceRoot":"","sources":["../src/plugin-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,mBAAmB;;;;;;;;iBA8C9B,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,kBAAkB,GAC7B,KAAK,OAAO,EACZ,WAAU,OAAO,CAAC,aAAa,CAAM,KACpC,aAOF,CAAA"}
|
package/dist/plugin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAiBjD,QAAA,MAAM,MAAM,EAAE,MA8Bb,CAAA;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Context, Effect } from "effect";
|
|
2
|
+
import { diffLines } from "diff";
|
|
3
|
+
export interface DiffServiceShape {
|
|
4
|
+
readonly cellDiff: (oldSource: string, newSource: string) => string;
|
|
5
|
+
readonly notebookJsonDiff: (oldJson: string, newJson: string, filePath: string) => string;
|
|
6
|
+
}
|
|
7
|
+
declare const DiffService_base: Context.TagClass<DiffService, "@ipynb/DiffService", DiffServiceShape>;
|
|
8
|
+
export declare class DiffService extends DiffService_base {
|
|
9
|
+
}
|
|
10
|
+
export declare const makeDiffService: () => DiffServiceShape;
|
|
11
|
+
export declare const _internal: {
|
|
12
|
+
buildDiff: () => DiffServiceShape;
|
|
13
|
+
diffLines: typeof diffLines;
|
|
14
|
+
};
|
|
15
|
+
export declare const _Effect: typeof Effect;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=DiffService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffService.d.ts","sourceRoot":"","sources":["../../src/services/DiffService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAuB,SAAS,EAAe,MAAM,MAAM,CAAA;AAElE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;IACnE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;CAC1F;;AAED,qBAAa,WAAY,SAAQ,gBAAkE;CAAG;AAiCtG,eAAO,MAAM,eAAe,QA/BN,gBA+BkB,CAAA;AAExC,eAAO,MAAM,SAAS;qBAjCA,gBAAgB;;CAiCW,CAAA;AACjD,eAAO,MAAM,OAAO,eAAS,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Context, Effect } from "effect";
|
|
2
|
+
import { NotebookNotFoundError, NotebookParseError, NotebookValidationError, NotebookWriteError, PathOutsideWorktreeError, PermissionDeniedError } from "../domain/errors.js";
|
|
3
|
+
import { type NotebookFileServiceShape } from "./NotebookFileService.js";
|
|
4
|
+
import { type PathServiceShape } from "./PathService.js";
|
|
5
|
+
import { type PermissionServiceShape } from "./PermissionService.js";
|
|
6
|
+
import type { NotebookRaw } from "../domain/notebook.js";
|
|
7
|
+
export interface CleanOptions {
|
|
8
|
+
readonly clearOutputs: boolean;
|
|
9
|
+
readonly clearExecutionCount: boolean;
|
|
10
|
+
readonly stripWidgetState: boolean;
|
|
11
|
+
readonly stripLargeImages: boolean;
|
|
12
|
+
readonly normalizeSource: boolean;
|
|
13
|
+
readonly largeImageThresholdBytes: number;
|
|
14
|
+
}
|
|
15
|
+
export interface CleanResult {
|
|
16
|
+
readonly displayPath: string;
|
|
17
|
+
readonly absPath: string;
|
|
18
|
+
readonly affectedCells: number;
|
|
19
|
+
readonly removedOutputs: number;
|
|
20
|
+
readonly removedExecutionCounts: number;
|
|
21
|
+
readonly removedWidgets: number;
|
|
22
|
+
readonly removedImages: number;
|
|
23
|
+
readonly notebook: NotebookRaw;
|
|
24
|
+
}
|
|
25
|
+
export interface NotebookCleanServiceShape {
|
|
26
|
+
readonly clean: (filePath: string, options?: Partial<CleanOptions>) => Effect.Effect<CleanResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | NotebookWriteError | PathOutsideWorktreeError | PermissionDeniedError>;
|
|
27
|
+
}
|
|
28
|
+
export type CleanError = NotebookNotFoundError | NotebookParseError | NotebookValidationError | NotebookWriteError | PathOutsideWorktreeError | PermissionDeniedError;
|
|
29
|
+
declare const NotebookCleanService_base: Context.TagClass<NotebookCleanService, "@ipynb/NotebookCleanService", NotebookCleanServiceShape>;
|
|
30
|
+
export declare class NotebookCleanService extends NotebookCleanService_base {
|
|
31
|
+
}
|
|
32
|
+
declare const makeCleanImpl: (pathSvc: PathServiceShape, fileSvc: NotebookFileServiceShape, permSvc: PermissionServiceShape) => NotebookCleanServiceShape;
|
|
33
|
+
export { makeCleanImpl };
|
|
34
|
+
//# sourceMappingURL=NotebookCleanService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotebookCleanService.d.ts","sourceRoot":"","sources":["../../src/services/NotebookCleanService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAuB,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAC7F,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAEvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGxD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAA;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;CAC/B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,CACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,KAC5B,MAAM,CAAC,MAAM,CAChB,WAAW,EACT,qBAAqB,GACrB,kBAAkB,GAClB,uBAAuB,GACvB,kBAAkB,GAClB,wBAAwB,GACxB,qBAAqB,CACxB,CAAA;CACF;AAED,MAAM,MAAM,UAAU,GAClB,qBAAqB,GACrB,kBAAkB,GAClB,uBAAuB,GACvB,kBAAkB,GAClB,wBAAwB,GACxB,qBAAqB,CAAA;;AAEzB,qBAAa,oBAAqB,SAAQ,yBAGvC;CAAG;AAmDN,QAAA,MAAM,aAAa,GACjB,SAAS,gBAAgB,EACzB,SAAS,wBAAwB,EACjC,SAAS,sBAAsB,KAC9B,yBAgID,CAAA;AAEF,OAAO,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Context, Effect } from "effect";
|
|
2
|
+
import { CellIndexOutOfBoundsError, NotebookNotFoundError, NotebookParseError, NotebookValidationError, NotebookWriteError, PathOutsideWorktreeError, PermissionDeniedError } from "../domain/errors.js";
|
|
3
|
+
import { type NotebookFileServiceShape } from "./NotebookFileService.js";
|
|
4
|
+
import { type PathServiceShape } from "./PathService.js";
|
|
5
|
+
import { type PermissionServiceShape } from "./PermissionService.js";
|
|
6
|
+
import { type DiffServiceShape } from "./DiffService.js";
|
|
7
|
+
import { type NotebookRaw } from "../domain/notebook.js";
|
|
8
|
+
export interface EditRequest {
|
|
9
|
+
readonly cellIndex: number;
|
|
10
|
+
readonly source: string;
|
|
11
|
+
readonly clearOutputs?: "auto" | "always" | "never";
|
|
12
|
+
}
|
|
13
|
+
export interface EditResult {
|
|
14
|
+
readonly displayPath: string;
|
|
15
|
+
readonly absPath: string;
|
|
16
|
+
readonly cellIndex: number;
|
|
17
|
+
readonly cellType: "code" | "markdown" | "raw";
|
|
18
|
+
readonly clearedOutputs: boolean;
|
|
19
|
+
readonly diff: string;
|
|
20
|
+
readonly oldPreview: string;
|
|
21
|
+
readonly newPreview: string;
|
|
22
|
+
readonly notebook: NotebookRaw;
|
|
23
|
+
}
|
|
24
|
+
export interface InsertResult {
|
|
25
|
+
readonly displayPath: string;
|
|
26
|
+
readonly absPath: string;
|
|
27
|
+
readonly cellIndex: number;
|
|
28
|
+
readonly cellType: "code" | "markdown" | "raw";
|
|
29
|
+
readonly totalCells: number;
|
|
30
|
+
readonly preview: string;
|
|
31
|
+
}
|
|
32
|
+
export interface DeleteResult {
|
|
33
|
+
readonly displayPath: string;
|
|
34
|
+
readonly absPath: string;
|
|
35
|
+
readonly deletedIndex: number;
|
|
36
|
+
readonly deletedType: "code" | "markdown" | "raw";
|
|
37
|
+
readonly deletedPreview: string;
|
|
38
|
+
readonly totalCells: number;
|
|
39
|
+
}
|
|
40
|
+
export interface MoveResult {
|
|
41
|
+
readonly displayPath: string;
|
|
42
|
+
readonly absPath: string;
|
|
43
|
+
readonly fromIndex: number;
|
|
44
|
+
readonly toIndex: number;
|
|
45
|
+
readonly totalCells: number;
|
|
46
|
+
}
|
|
47
|
+
export type CellType = "code" | "markdown" | "raw";
|
|
48
|
+
export type EditCellError = NotebookNotFoundError | NotebookParseError | NotebookValidationError | CellIndexOutOfBoundsError | NotebookWriteError | PathOutsideWorktreeError | PermissionDeniedError;
|
|
49
|
+
export type InsertCellError = EditCellError;
|
|
50
|
+
export type DeleteCellError = EditCellError;
|
|
51
|
+
export type MoveCellError = EditCellError;
|
|
52
|
+
export interface NotebookEditServiceShape {
|
|
53
|
+
readonly editCell: (filePath: string, request: EditRequest) => Effect.Effect<EditResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | CellIndexOutOfBoundsError | NotebookWriteError | PathOutsideWorktreeError | PermissionDeniedError>;
|
|
54
|
+
readonly insertCell: (filePath: string, cellType: CellType, source: string, index: number | undefined) => Effect.Effect<InsertResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | CellIndexOutOfBoundsError | NotebookWriteError | PathOutsideWorktreeError | PermissionDeniedError>;
|
|
55
|
+
readonly deleteCell: (filePath: string, cellIndex: number) => Effect.Effect<DeleteResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | CellIndexOutOfBoundsError | NotebookWriteError | PathOutsideWorktreeError | PermissionDeniedError>;
|
|
56
|
+
readonly moveCell: (filePath: string, fromIndex: number, toIndex: number) => Effect.Effect<MoveResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | CellIndexOutOfBoundsError | NotebookWriteError | PathOutsideWorktreeError | PermissionDeniedError>;
|
|
57
|
+
}
|
|
58
|
+
declare const NotebookEditService_base: Context.TagClass<NotebookEditService, "@ipynb/NotebookEditService", NotebookEditServiceShape>;
|
|
59
|
+
export declare class NotebookEditService extends NotebookEditService_base {
|
|
60
|
+
}
|
|
61
|
+
declare const makeEditImpl: (pathSvc: PathServiceShape, fileSvc: NotebookFileServiceShape, diffSvc: DiffServiceShape, permSvc: PermissionServiceShape) => NotebookEditServiceShape;
|
|
62
|
+
export { makeEditImpl };
|
|
63
|
+
//# sourceMappingURL=NotebookEditService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotebookEditService.d.ts","sourceRoot":"","sources":["../../src/services/NotebookEditService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Context, Effect } from "effect";
|
|
2
|
+
import { type NotebookError } from "../domain/errors.js";
|
|
3
|
+
import { type NotebookFileServiceShape } from "./NotebookFileService.js";
|
|
4
|
+
import { type PathServiceShape } from "./PathService.js";
|
|
5
|
+
import { type PermissionServiceShape } from "./PermissionService.js";
|
|
6
|
+
import { type KernelManagerShape, type PythonServiceShape } from "./PythonService.js";
|
|
7
|
+
import { cellSource } from "../domain/notebook.js";
|
|
8
|
+
import type { RunResponse, CellExecutionSummary, EnvReport } from "../domain/execution.js";
|
|
9
|
+
import { type TruncationHintKey } from "../utils/i18n.js";
|
|
10
|
+
export type ExecutionMode = "cell" | "range" | "all" | "from";
|
|
11
|
+
export interface ExecutionRequest {
|
|
12
|
+
readonly mode: ExecutionMode;
|
|
13
|
+
readonly cellIndex: number | undefined;
|
|
14
|
+
readonly start: number | undefined;
|
|
15
|
+
readonly end: number | undefined;
|
|
16
|
+
readonly kernel: string | undefined;
|
|
17
|
+
readonly timeoutMs: number;
|
|
18
|
+
readonly save: boolean;
|
|
19
|
+
readonly workingDirectory: string | undefined;
|
|
20
|
+
readonly maxOutputChars: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ExecutionResult {
|
|
23
|
+
readonly displayPath: string;
|
|
24
|
+
readonly absPath: string;
|
|
25
|
+
readonly executedCells: ReadonlyArray<number>;
|
|
26
|
+
readonly durationMs: number;
|
|
27
|
+
readonly saved: boolean;
|
|
28
|
+
readonly response: RunResponse;
|
|
29
|
+
}
|
|
30
|
+
export interface NotebookExecutionServiceShape {
|
|
31
|
+
readonly execute: (filePath: string, request: ExecutionRequest) => Effect.Effect<ExecutionResult, NotebookError>;
|
|
32
|
+
readonly reportEnv: (filePath: string, options?: ReportEnvOptions) => Effect.Effect<EnvReport, NotebookError>;
|
|
33
|
+
}
|
|
34
|
+
export interface ReportEnvOptions {
|
|
35
|
+
readonly timeoutMs?: number | undefined;
|
|
36
|
+
}
|
|
37
|
+
export interface ExecutionOptions {
|
|
38
|
+
readonly kernelManager?: KernelManagerShape | undefined;
|
|
39
|
+
readonly warmKernel: boolean;
|
|
40
|
+
readonly defaultTimeoutMs: number;
|
|
41
|
+
}
|
|
42
|
+
declare const NotebookExecutionService_base: Context.TagClass<NotebookExecutionService, "@ipynb/NotebookExecutionService", NotebookExecutionServiceShape>;
|
|
43
|
+
export declare class NotebookExecutionService extends NotebookExecutionService_base {
|
|
44
|
+
}
|
|
45
|
+
declare const truncateText: (text: string | undefined, maxChars: number, locale?: string, hintKey?: TruncationHintKey) => string | undefined;
|
|
46
|
+
declare const truncateTraceback: (tb: ReadonlyArray<string>, maxChars: number) => ReadonlyArray<string>;
|
|
47
|
+
declare const truncateCellSummary: (summary: CellExecutionSummary, maxOutputChars: number) => CellExecutionSummary;
|
|
48
|
+
declare const truncateRunResponse: (response: RunResponse, maxOutputChars: number) => RunResponse;
|
|
49
|
+
export declare const buildPersistedOutputs: (summary: CellExecutionSummary) => Array<Record<string, unknown>>;
|
|
50
|
+
declare const makeExecutionImpl: (pathSvc: PathServiceShape, fileSvc: NotebookFileServiceShape, permSvc: PermissionServiceShape, pythonSvc: PythonServiceShape, execOpts?: ExecutionOptions) => NotebookExecutionServiceShape;
|
|
51
|
+
export { makeExecutionImpl };
|
|
52
|
+
export { cellSource };
|
|
53
|
+
export { truncateText, truncateTraceback, truncateCellSummary, truncateRunResponse };
|
|
54
|
+
//# sourceMappingURL=NotebookExecutionService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotebookExecutionService.d.ts","sourceRoot":"","sources":["../../src/services/NotebookExecutionService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Context, Effect } from "effect";
|
|
2
|
+
import { NotebookNotFoundError, NotebookParseError, NotebookValidationError, NotebookWriteError, PathOutsideWorktreeError, PermissionDeniedError } from "../domain/errors.js";
|
|
3
|
+
import { type NotebookFileServiceShape } from "./NotebookFileService.js";
|
|
4
|
+
import { type PathServiceShape } from "./PathService.js";
|
|
5
|
+
import { type PermissionServiceShape } from "./PermissionService.js";
|
|
6
|
+
import { DEFAULT_MAX_EXPORT_CHARS } from "../utils/limits.js";
|
|
7
|
+
export type ExportFormat = "markdown" | "python" | "summary";
|
|
8
|
+
export interface ExportOptions {
|
|
9
|
+
readonly format: ExportFormat;
|
|
10
|
+
readonly includeOutputs: boolean;
|
|
11
|
+
readonly includeErrors: boolean;
|
|
12
|
+
readonly outputPath: string | undefined;
|
|
13
|
+
readonly maxExportChars: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ExportResult {
|
|
16
|
+
readonly displayPath: string;
|
|
17
|
+
readonly absPath: string;
|
|
18
|
+
readonly format: ExportFormat;
|
|
19
|
+
readonly writtenTo: string | undefined;
|
|
20
|
+
readonly rendered: string;
|
|
21
|
+
readonly cellCount: number;
|
|
22
|
+
readonly frontMatter?: string | undefined;
|
|
23
|
+
}
|
|
24
|
+
export interface NotebookExportServiceShape {
|
|
25
|
+
readonly export: (filePath: string, options: ExportOptions) => Effect.Effect<ExportResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | NotebookWriteError | PathOutsideWorktreeError | PermissionDeniedError>;
|
|
26
|
+
}
|
|
27
|
+
declare const NotebookExportService_base: Context.TagClass<NotebookExportService, "@ipynb/NotebookExportService", NotebookExportServiceShape>;
|
|
28
|
+
export declare class NotebookExportService extends NotebookExportService_base {
|
|
29
|
+
}
|
|
30
|
+
declare const makeExportImpl: (pathSvc: PathServiceShape, fileSvc: NotebookFileServiceShape, permSvc: PermissionServiceShape) => NotebookExportServiceShape;
|
|
31
|
+
export { makeExportImpl };
|
|
32
|
+
export { DEFAULT_MAX_EXPORT_CHARS };
|
|
33
|
+
//# sourceMappingURL=NotebookExportService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotebookExportService.d.ts","sourceRoot":"","sources":["../../src/services/NotebookExportService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAGxC,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAuB,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAC7F,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAIvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAK7D,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAA;AAE5D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC1C;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,KACnB,MAAM,CAAC,MAAM,CAChB,YAAY,EACV,qBAAqB,GACrB,kBAAkB,GAClB,uBAAuB,GACvB,kBAAkB,GAClB,wBAAwB,GACxB,qBAAqB,CACxB,CAAA;CACF;;AAED,qBAAa,qBAAsB,SAAQ,0BAGxC;CAAG;AAiHN,QAAA,MAAM,cAAc,GAClB,SAAS,gBAAgB,EACzB,SAAS,wBAAwB,EACjC,SAAS,sBAAsB,KAC9B,0BAmGD,CAAA;AAEF,OAAO,EAAE,cAAc,EAAE,CAAA;AACzB,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Context, Effect } from "effect";
|
|
2
|
+
import { LockError, NotebookNotFoundError, NotebookParseError, NotebookValidationError, NotebookWriteError } from "../domain/errors.js";
|
|
3
|
+
import { NotebookSchema, type NotebookRaw, cellSource } from "../domain/notebook.js";
|
|
4
|
+
export interface NotebookFileServiceShape {
|
|
5
|
+
readonly read: (filePath: string) => Effect.Effect<NotebookRaw, NotebookNotFoundError | NotebookParseError | NotebookValidationError>;
|
|
6
|
+
readonly readText: (filePath: string) => Effect.Effect<string, NotebookNotFoundError>;
|
|
7
|
+
readonly writeAtomic: (filePath: string, notebook: NotebookRaw) => Effect.Effect<void, NotebookParseError | NotebookValidationError | NotebookWriteError>;
|
|
8
|
+
readonly withFileLock: <A, E, R>(filePath: string, program: Effect.Effect<A, E, R>) => Effect.Effect<A, E | LockError, R>;
|
|
9
|
+
}
|
|
10
|
+
declare const NotebookFileService_base: Context.TagClass<NotebookFileService, "@ipynb/NotebookFileService", NotebookFileServiceShape>;
|
|
11
|
+
export declare class NotebookFileService extends NotebookFileService_base {
|
|
12
|
+
}
|
|
13
|
+
export declare const makeNotebookFileService: () => NotebookFileServiceShape;
|
|
14
|
+
export { cellSource };
|
|
15
|
+
export declare const _schemas: {
|
|
16
|
+
readonly NotebookSchema: typeof NotebookSchema;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=NotebookFileService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotebookFileService.d.ts","sourceRoot":"","sources":["../../src/services/NotebookFileService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAGxC,OAAO,EAEL,SAAS,EACT,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAsDpF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,CACb,QAAQ,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAChB,WAAW,EACX,qBAAqB,GAAG,kBAAkB,GAAG,uBAAuB,CACrE,CAAA;IACD,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IACrF,QAAQ,CAAC,WAAW,EAAE,CACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,WAAW,KAClB,MAAM,CAAC,MAAM,CAChB,IAAI,EACJ,kBAAkB,GAAG,uBAAuB,GAAG,kBAAkB,CAClE,CAAA;IACD,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CAAA;CACxC;;AAED,qBAAa,mBAAoB,SAAQ,wBAGtC;CAAG;AAkIN,eAAO,MAAM,uBAAuB,QAhIP,wBAgI0B,CAAA;AAEvD,OAAO,EAAE,UAAU,EAAE,CAAA;AACrB,eAAO,MAAM,QAAQ,EAAE;IAAE,QAAQ,CAAC,cAAc,EAAE,OAAO,cAAc,CAAA;CAAuB,CAAA"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Context, Effect } from "effect";
|
|
2
|
+
import { NotebookNotFoundError, NotebookParseError, NotebookValidationError, PathOutsideWorktreeError } from "../domain/errors.js";
|
|
3
|
+
import { type NotebookFileServiceShape } from "./NotebookFileService.js";
|
|
4
|
+
import { type PathServiceShape } from "./PathService.js";
|
|
5
|
+
import { type CellInspection } from "../format/diagnostics.js";
|
|
6
|
+
import type { NotebookRaw } from "../domain/notebook.js";
|
|
7
|
+
export interface InspectSummary {
|
|
8
|
+
readonly filePath: string;
|
|
9
|
+
readonly displayPath: string;
|
|
10
|
+
readonly notebook: NotebookRaw;
|
|
11
|
+
readonly cells: ReadonlyArray<CellInspection>;
|
|
12
|
+
readonly totalCells: number;
|
|
13
|
+
readonly truncated: boolean;
|
|
14
|
+
readonly includeMetadata: boolean;
|
|
15
|
+
readonly includeOutputsSummary: boolean;
|
|
16
|
+
readonly reproducibilityWarnings?: ReadonlyArray<string> | undefined;
|
|
17
|
+
readonly executionOrderWarnings?: ReadonlyArray<string> | undefined;
|
|
18
|
+
readonly missingPackageWarnings?: ReadonlyArray<string> | undefined;
|
|
19
|
+
}
|
|
20
|
+
export interface InspectOptions {
|
|
21
|
+
readonly includeMetadata: boolean;
|
|
22
|
+
readonly includeOutputsSummary: boolean;
|
|
23
|
+
readonly maxCells: number;
|
|
24
|
+
}
|
|
25
|
+
export interface NotebookInspectServiceShape {
|
|
26
|
+
readonly inspect: (filePath: string, options?: Partial<InspectOptions>) => Effect.Effect<InspectSummary, NotebookNotFoundError | NotebookParseError | NotebookValidationError | PathOutsideWorktreeError>;
|
|
27
|
+
}
|
|
28
|
+
declare const NotebookInspectService_base: Context.TagClass<NotebookInspectService, "@ipynb/NotebookInspectService", NotebookInspectServiceShape>;
|
|
29
|
+
export declare class NotebookInspectService extends NotebookInspectService_base {
|
|
30
|
+
}
|
|
31
|
+
export interface AnalyzeMissingPackagesOptions {
|
|
32
|
+
readonly pythonPath: string;
|
|
33
|
+
readonly checkImport: (pythonPath: string, module: string) => Effect.Effect<{
|
|
34
|
+
name: string;
|
|
35
|
+
available: boolean;
|
|
36
|
+
detail: string;
|
|
37
|
+
}, never>;
|
|
38
|
+
}
|
|
39
|
+
export declare const analyzeMissingPackages: (notebook: NotebookRaw, options: AnalyzeMissingPackagesOptions) => Effect.Effect<ReadonlyArray<string>, never>;
|
|
40
|
+
export declare const analyzeReproducibility: (notebook: NotebookRaw) => ReadonlyArray<string>;
|
|
41
|
+
export interface ExecutionOrderEntry {
|
|
42
|
+
readonly cellIndex: number;
|
|
43
|
+
readonly executionCount: number;
|
|
44
|
+
readonly previousCount: number;
|
|
45
|
+
}
|
|
46
|
+
export declare const analyzeExecutionOrder: (notebook: NotebookRaw) => ReadonlyArray<ExecutionOrderEntry>;
|
|
47
|
+
export declare const analyzeExecutionOrderWarnings: (notebook: NotebookRaw) => ReadonlyArray<string>;
|
|
48
|
+
declare const build: (pathSvc: PathServiceShape, fileSvc: NotebookFileServiceShape) => NotebookInspectServiceShape;
|
|
49
|
+
/**
|
|
50
|
+
* Standalone Effect: detect imports that the user's Python cannot resolve.
|
|
51
|
+
* Pass the result of `pythonSvc.probe()` for `pythonPath`; the analyzer skips
|
|
52
|
+
* itself when the probe says "none" (no Python on PATH).
|
|
53
|
+
*/
|
|
54
|
+
export declare const analyzeMissingPackagesForPython: (notebook: NotebookRaw, pythonPath: string, checkImport: (pythonPath: string, module: string) => Effect.Effect<{
|
|
55
|
+
name: string;
|
|
56
|
+
available: boolean;
|
|
57
|
+
detail: string;
|
|
58
|
+
}, never>) => Effect.Effect<ReadonlyArray<string>, never>;
|
|
59
|
+
export { build as makeInspectImpl };
|
|
60
|
+
export declare const formatInspectSummary: (summary: InspectSummary) => string;
|
|
61
|
+
export type { CellInspection };
|
|
62
|
+
//# sourceMappingURL=NotebookInspectService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotebookInspectService.d.ts","sourceRoot":"","sources":["../../src/services/NotebookInspectService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Context, Effect } from "effect";
|
|
2
|
+
import { CellIndexOutOfBoundsError, NotebookNotFoundError, NotebookParseError, NotebookValidationError, NotebookWriteError, PathOutsideWorktreeError, PermissionDeniedError } from "../domain/errors.js";
|
|
3
|
+
import { type NotebookFileServiceShape } from "./NotebookFileService.js";
|
|
4
|
+
import { type PathServiceShape } from "./PathService.js";
|
|
5
|
+
import { type PermissionServiceShape } from "./PermissionService.js";
|
|
6
|
+
import { cellSource } from "../domain/notebook.js";
|
|
7
|
+
export type OutputOperation = "list" | "read" | "read_error" | "clear_cell" | "clear_all";
|
|
8
|
+
export interface OutputListEntry {
|
|
9
|
+
readonly cellIndex: number;
|
|
10
|
+
readonly cellType: "code" | "markdown" | "raw";
|
|
11
|
+
readonly outputCount: number;
|
|
12
|
+
readonly hasError: boolean;
|
|
13
|
+
readonly hasImage: boolean;
|
|
14
|
+
readonly totalBytes: number;
|
|
15
|
+
}
|
|
16
|
+
export interface ListOutputsResult {
|
|
17
|
+
readonly displayPath: string;
|
|
18
|
+
readonly entries: ReadonlyArray<OutputListEntry>;
|
|
19
|
+
readonly total: number;
|
|
20
|
+
readonly offset?: number | undefined;
|
|
21
|
+
readonly limit?: number | undefined;
|
|
22
|
+
}
|
|
23
|
+
export interface OutputReadRequest {
|
|
24
|
+
readonly cellIndex: number;
|
|
25
|
+
readonly includeImages: boolean;
|
|
26
|
+
readonly maxOutputChars: number;
|
|
27
|
+
}
|
|
28
|
+
export interface OutputReadResult {
|
|
29
|
+
readonly displayPath: string;
|
|
30
|
+
readonly cellIndex: number;
|
|
31
|
+
readonly rendered: string;
|
|
32
|
+
readonly outputCount: number;
|
|
33
|
+
}
|
|
34
|
+
export interface OutputErrorResult {
|
|
35
|
+
readonly displayPath: string;
|
|
36
|
+
readonly cellIndex: number;
|
|
37
|
+
readonly hasError: boolean;
|
|
38
|
+
readonly rendered: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ClearOutputsResult {
|
|
41
|
+
readonly displayPath: string;
|
|
42
|
+
readonly absPath: string;
|
|
43
|
+
readonly clearedCells: number;
|
|
44
|
+
readonly removedOutputs: number;
|
|
45
|
+
readonly removedExecutionCounts: number;
|
|
46
|
+
}
|
|
47
|
+
export interface NotebookOutputServiceShape {
|
|
48
|
+
readonly listOutputs: (filePath: string, offset?: number | undefined, limit?: number | undefined) => Effect.Effect<ListOutputsResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | PathOutsideWorktreeError>;
|
|
49
|
+
readonly readOutputs: (filePath: string, request: OutputReadRequest) => Effect.Effect<OutputReadResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | CellIndexOutOfBoundsError | PathOutsideWorktreeError>;
|
|
50
|
+
readonly readError: (filePath: string, cellIndex: number) => Effect.Effect<OutputErrorResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | CellIndexOutOfBoundsError | PathOutsideWorktreeError>;
|
|
51
|
+
readonly clearCellOutputs: (filePath: string, cellIndex: number) => Effect.Effect<ClearOutputsResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | CellIndexOutOfBoundsError | NotebookWriteError | PathOutsideWorktreeError | PermissionDeniedError>;
|
|
52
|
+
readonly clearAllOutputs: (filePath: string) => Effect.Effect<ClearOutputsResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | NotebookWriteError | PathOutsideWorktreeError | PermissionDeniedError>;
|
|
53
|
+
}
|
|
54
|
+
export type ClearCellOutputsError = NotebookNotFoundError | NotebookParseError | NotebookValidationError | CellIndexOutOfBoundsError | NotebookWriteError | PathOutsideWorktreeError | PermissionDeniedError;
|
|
55
|
+
export type ClearAllOutputsError = NotebookNotFoundError | NotebookParseError | NotebookValidationError | NotebookWriteError | PathOutsideWorktreeError | PermissionDeniedError;
|
|
56
|
+
declare const NotebookOutputService_base: Context.TagClass<NotebookOutputService, "@ipynb/NotebookOutputService", NotebookOutputServiceShape>;
|
|
57
|
+
export declare class NotebookOutputService extends NotebookOutputService_base {
|
|
58
|
+
}
|
|
59
|
+
declare const makeOutputImpl: (pathSvc: PathServiceShape, fileSvc: NotebookFileServiceShape, permSvc: PermissionServiceShape) => NotebookOutputServiceShape;
|
|
60
|
+
export { makeOutputImpl };
|
|
61
|
+
export { cellSource };
|
|
62
|
+
//# sourceMappingURL=NotebookOutputService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotebookOutputService.d.ts","sourceRoot":"","sources":["../../src/services/NotebookOutputService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Context, Effect } from "effect";
|
|
2
|
+
import { CellIndexOutOfBoundsError, NotebookNotFoundError, NotebookParseError, NotebookValidationError, PathOutsideWorktreeError } from "../domain/errors.js";
|
|
3
|
+
import { type NotebookFileServiceShape } from "./NotebookFileService.js";
|
|
4
|
+
import { type PathServiceShape } from "./PathService.js";
|
|
5
|
+
import { cellSource } from "../domain/notebook.js";
|
|
6
|
+
import type { ToolAttachment } from "@opencode-ai/plugin";
|
|
7
|
+
export interface ReadRangeRequest {
|
|
8
|
+
readonly cellIndex?: number | undefined;
|
|
9
|
+
readonly start?: number | undefined;
|
|
10
|
+
readonly end?: number | undefined;
|
|
11
|
+
readonly includeOutputs?: boolean | undefined;
|
|
12
|
+
readonly includeErrors?: boolean | undefined;
|
|
13
|
+
readonly includeMetadata?: boolean | undefined;
|
|
14
|
+
readonly includeImages?: boolean | undefined;
|
|
15
|
+
readonly saveImages?: boolean | undefined;
|
|
16
|
+
readonly maxSourceChars?: number | undefined;
|
|
17
|
+
readonly maxOutputChars?: number | undefined;
|
|
18
|
+
}
|
|
19
|
+
export interface ReadRangeResult {
|
|
20
|
+
readonly displayPath: string;
|
|
21
|
+
readonly absPath: string;
|
|
22
|
+
readonly totalCells: number;
|
|
23
|
+
readonly rendered: string;
|
|
24
|
+
readonly indexes: ReadonlyArray<number>;
|
|
25
|
+
readonly attachments: ReadonlyArray<ToolAttachment>;
|
|
26
|
+
}
|
|
27
|
+
export interface NotebookReadServiceShape {
|
|
28
|
+
readonly readCell: (filePath: string, cellIndex: number, options?: Partial<ReadRangeRequest>) => Effect.Effect<ReadRangeResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | CellIndexOutOfBoundsError | PathOutsideWorktreeError>;
|
|
29
|
+
readonly readRange: (filePath: string, start: number, end: number, options?: Partial<ReadRangeRequest>) => Effect.Effect<ReadRangeResult, NotebookNotFoundError | NotebookParseError | NotebookValidationError | CellIndexOutOfBoundsError | PathOutsideWorktreeError>;
|
|
30
|
+
}
|
|
31
|
+
declare const NotebookReadService_base: Context.TagClass<NotebookReadService, "@ipynb/NotebookReadService", NotebookReadServiceShape>;
|
|
32
|
+
export declare class NotebookReadService extends NotebookReadService_base {
|
|
33
|
+
}
|
|
34
|
+
export declare const makeReadImpl: (pathSvc: PathServiceShape, fileSvc: NotebookFileServiceShape) => NotebookReadServiceShape;
|
|
35
|
+
export { cellSource };
|
|
36
|
+
//# sourceMappingURL=NotebookReadService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotebookReadService.d.ts","sourceRoot":"","sources":["../../src/services/NotebookReadService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAuB,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAC7F,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAGrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;CACpD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,CACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAChC,MAAM,CAAC,MAAM,CAChB,eAAe,EACb,qBAAqB,GACrB,kBAAkB,GAClB,uBAAuB,GACvB,yBAAyB,GACzB,wBAAwB,CAC3B,CAAA;IACD,QAAQ,CAAC,SAAS,EAAE,CAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAChC,MAAM,CAAC,MAAM,CAChB,eAAe,EACb,qBAAqB,GACrB,kBAAkB,GAClB,uBAAuB,GACvB,yBAAyB,GACzB,wBAAwB,CAC3B,CAAA;CACF;;AAED,qBAAa,mBAAoB,SAAQ,wBAGtC;CAAG;AAeN,eAAO,MAAM,YAAY,GACvB,SAAS,gBAAgB,EACzB,SAAS,wBAAwB,KAChC,wBA6DF,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Context, Effect } from "effect";
|
|
2
|
+
import { PathOutsideWorktreeError, NotebookNotFoundError } from "../domain/errors.js";
|
|
3
|
+
export interface PathEnv {
|
|
4
|
+
readonly directory: string;
|
|
5
|
+
readonly worktree: string;
|
|
6
|
+
readonly platform: NodeJS.Platform;
|
|
7
|
+
readonly allowOutsideWorktree?: boolean | undefined;
|
|
8
|
+
}
|
|
9
|
+
export interface PathServiceShape {
|
|
10
|
+
readonly env: PathEnv;
|
|
11
|
+
readonly resolve: (inputPath: string) => Effect.Effect<string, never>;
|
|
12
|
+
readonly relative: (absPath: string) => Effect.Effect<string, never>;
|
|
13
|
+
readonly ensureInsideWorktree: (absPath: string) => Effect.Effect<void, PathOutsideWorktreeError>;
|
|
14
|
+
readonly ensureExists: (absPath: string) => Effect.Effect<void, NotebookNotFoundError>;
|
|
15
|
+
readonly ensureIpynb: (absPath: string) => Effect.Effect<{
|
|
16
|
+
absPath: string;
|
|
17
|
+
warned: boolean;
|
|
18
|
+
}, never>;
|
|
19
|
+
readonly toDisplay: (absPath: string) => string;
|
|
20
|
+
}
|
|
21
|
+
declare const PathService_base: Context.TagClass<PathService, "@ipynb/PathService", PathServiceShape>;
|
|
22
|
+
export declare class PathService extends PathService_base {
|
|
23
|
+
}
|
|
24
|
+
export declare const makePathService: (env: PathEnv) => PathServiceShape;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=PathService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PathService.d.ts","sourceRoot":"","sources":["../../src/services/PathService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAGxC,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAUrF,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAA;IAClC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACpD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACrE,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACpE,QAAQ,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAA;IACjG,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAA;IACtF,QAAQ,CAAC,WAAW,EAAE,CACpB,OAAO,EAAE,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,EAAE,KAAK,CAAC,CAAA;IAC/D,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;CAChD;;AAED,qBAAa,WAAY,SAAQ,gBAAkE;CAAG;AAwGtG,eAAO,MAAM,eAAe,QA9FG,OAAO,KAAG,gBA8FM,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Context, Effect } from "effect";
|
|
2
|
+
import type { ToolContext } from "@opencode-ai/plugin";
|
|
3
|
+
import { PermissionDeniedError } from "../domain/errors.js";
|
|
4
|
+
export type PermissionKind = "edit" | "bash" | "read";
|
|
5
|
+
export interface PermissionRequest {
|
|
6
|
+
readonly kind: PermissionKind;
|
|
7
|
+
readonly action: string;
|
|
8
|
+
readonly patterns: ReadonlyArray<string>;
|
|
9
|
+
readonly always: ReadonlyArray<string>;
|
|
10
|
+
readonly metadata: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface PermissionServiceShape {
|
|
13
|
+
readonly ask: (req: PermissionRequest) => Effect.Effect<void, PermissionDeniedError>;
|
|
14
|
+
}
|
|
15
|
+
declare const PermissionService_base: Context.TagClass<PermissionService, "@ipynb/PermissionService", PermissionServiceShape>;
|
|
16
|
+
export declare class PermissionService extends PermissionService_base {
|
|
17
|
+
}
|
|
18
|
+
export declare const makePermissionService: (ctx: ToolContext) => PermissionServiceShape;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=PermissionService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionService.d.ts","sourceRoot":"","sources":["../../src/services/PermissionService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AAErD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC3C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAA;CACrF;;AAED,qBAAa,iBAAkB,SAAQ,sBAGpC;CAAG;AAwBN,eAAO,MAAM,qBAAqB,QAtBd,WAAW,KAAG,sBAsBQ,CAAA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Effect, Context } from "effect";
|
|
2
|
+
import { type NotebookError } from "../domain/errors.js";
|
|
3
|
+
import { type RunRequest, type RunResponse } from "../domain/execution.js";
|
|
4
|
+
export interface PythonProbeResult {
|
|
5
|
+
readonly pythonPath: string;
|
|
6
|
+
readonly version: string;
|
|
7
|
+
readonly executable: string;
|
|
8
|
+
readonly from: "options" | "env" | "path-python" | "path-python3" | "none";
|
|
9
|
+
}
|
|
10
|
+
export interface DependencyCheck {
|
|
11
|
+
readonly name: string;
|
|
12
|
+
readonly available: boolean;
|
|
13
|
+
readonly detail: string;
|
|
14
|
+
}
|
|
15
|
+
export interface PythonDoctor {
|
|
16
|
+
readonly selected: PythonProbeResult | undefined;
|
|
17
|
+
readonly candidates: ReadonlyArray<PythonProbeResult>;
|
|
18
|
+
readonly dependencies: ReadonlyArray<DependencyCheck>;
|
|
19
|
+
readonly helperPath: string | undefined;
|
|
20
|
+
readonly preferUv: boolean;
|
|
21
|
+
readonly suggestions: ReadonlyArray<string>;
|
|
22
|
+
}
|
|
23
|
+
export interface PythonServiceOptions {
|
|
24
|
+
readonly pythonPath: string | undefined;
|
|
25
|
+
readonly preferUv: boolean;
|
|
26
|
+
readonly helperRelativePath: string;
|
|
27
|
+
}
|
|
28
|
+
export interface PythonServiceShape {
|
|
29
|
+
readonly probe: () => Effect.Effect<PythonProbeResult, never>;
|
|
30
|
+
readonly candidates: () => Effect.Effect<ReadonlyArray<PythonProbeResult>, never>;
|
|
31
|
+
readonly checkDependencies: (pythonPath: string) => Effect.Effect<ReadonlyArray<DependencyCheck>, never>;
|
|
32
|
+
readonly checkImport: (pythonPath: string, module: string) => Effect.Effect<DependencyCheck, never>;
|
|
33
|
+
readonly findHelper: () => Effect.Effect<string | undefined, never>;
|
|
34
|
+
readonly doctor: () => Effect.Effect<PythonDoctor, never>;
|
|
35
|
+
}
|
|
36
|
+
export interface _PythonServiceForTest {
|
|
37
|
+
readonly _invalidateDepsCache: (pythonPath?: string) => void;
|
|
38
|
+
}
|
|
39
|
+
declare const PythonService_base: Context.TagClass<PythonService, "@ipynb/PythonService", PythonServiceShape>;
|
|
40
|
+
export declare class PythonService extends PythonService_base {
|
|
41
|
+
}
|
|
42
|
+
declare const REQUIRED_DEPS: readonly ["nbformat", "nbclient", "jupyter_client", "ipykernel"];
|
|
43
|
+
declare const findHelper: (rel: string) => string | undefined;
|
|
44
|
+
export declare const makePythonService: (opts: PythonServiceOptions) => PythonServiceShape;
|
|
45
|
+
export { REQUIRED_DEPS, findHelper };
|
|
46
|
+
export interface KernelManagerOptions {
|
|
47
|
+
readonly pythonPath: string;
|
|
48
|
+
readonly helperPath: string;
|
|
49
|
+
readonly workingDirectory: string | undefined;
|
|
50
|
+
readonly defaultTimeoutMs: number;
|
|
51
|
+
}
|
|
52
|
+
export interface KernelRuntimeOptions {
|
|
53
|
+
readonly pythonPath: string;
|
|
54
|
+
readonly helperPath: string;
|
|
55
|
+
}
|
|
56
|
+
export interface KernelInfo {
|
|
57
|
+
readonly filePath: string;
|
|
58
|
+
readonly pid: number;
|
|
59
|
+
readonly lastUsedAt: number;
|
|
60
|
+
readonly requestsHandled: number;
|
|
61
|
+
readonly stderrTail: string;
|
|
62
|
+
}
|
|
63
|
+
export interface KernelManagerStats {
|
|
64
|
+
readonly liveKernels: number;
|
|
65
|
+
readonly totalRequests: number;
|
|
66
|
+
}
|
|
67
|
+
export declare const makeKernelManager: (opts: KernelManagerOptions) => KernelManagerShape;
|
|
68
|
+
export interface KernelManagerShape {
|
|
69
|
+
readonly execute: (filePath: string, request: RunRequest, runtime?: KernelRuntimeOptions) => Effect.Effect<RunResponse, NotebookError>;
|
|
70
|
+
readonly isRunning: (filePath: string) => boolean;
|
|
71
|
+
readonly list: () => ReadonlyArray<KernelInfo>;
|
|
72
|
+
readonly restart: (filePath: string) => Effect.Effect<void, never>;
|
|
73
|
+
readonly shutdown: (filePath: string) => Effect.Effect<void, never>;
|
|
74
|
+
readonly disposeAll: () => Effect.Effect<void, never>;
|
|
75
|
+
readonly stats: () => KernelManagerStats;
|
|
76
|
+
}
|
|
77
|
+
declare const KernelManager_base: Context.TagClass<KernelManager, "@ipynb/KernelManager", KernelManagerShape>;
|
|
78
|
+
export declare class KernelManager extends KernelManager_base {
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=PythonService.d.ts.map
|