feat(editor/runtime): Replace bare editor with Monaco-based editor and add runtime + workspace/filetree integration
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
/**
|
||||
* Represents a file or directory entry in the virtual filesystem
|
||||
*/
|
||||
export interface IFileEntry {
|
||||
type: 'file' | 'directory';
|
||||
name: string;
|
||||
path: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle to a spawned process with I/O streams
|
||||
*/
|
||||
export interface IProcessHandle {
|
||||
/** Stream of output data from the process */
|
||||
output: ReadableStream<string>;
|
||||
/** Input stream to write data to the process */
|
||||
input: { getWriter(): WritableStreamDefaultWriter<string> };
|
||||
/** Promise that resolves with exit code when process terminates */
|
||||
exit: Promise<number>;
|
||||
/** Kill the process */
|
||||
kill(): void;
|
||||
}
|
||||
|
||||
/**
|
||||
* Abstract execution environment interface.
|
||||
* Implementations can target WebContainer (browser), Backend API (server), or Mock (testing).
|
||||
*/
|
||||
export interface IExecutionEnvironment {
|
||||
// ============ Filesystem Operations ============
|
||||
|
||||
/**
|
||||
* Read the contents of a file
|
||||
* @param path - Absolute path to the file
|
||||
* @returns File contents as string
|
||||
*/
|
||||
readFile(path: string): Promise<string>;
|
||||
|
||||
/**
|
||||
* Write contents to a file (creates or overwrites)
|
||||
* @param path - Absolute path to the file
|
||||
* @param contents - String contents to write
|
||||
*/
|
||||
writeFile(path: string, contents: string): Promise<void>;
|
||||
|
||||
/**
|
||||
* List contents of a directory
|
||||
* @param path - Absolute path to the directory
|
||||
* @returns Array of file entries
|
||||
*/
|
||||
readDir(path: string): Promise<IFileEntry[]>;
|
||||
|
||||
/**
|
||||
* Create a directory (and parent directories if needed)
|
||||
* @param path - Absolute path to create
|
||||
*/
|
||||
mkdir(path: string): Promise<void>;
|
||||
|
||||
/**
|
||||
* Remove a file or directory
|
||||
* @param path - Absolute path to remove
|
||||
* @param options - Optional: { recursive: true } for directories
|
||||
*/
|
||||
rm(path: string, options?: { recursive?: boolean }): Promise<void>;
|
||||
|
||||
/**
|
||||
* Check if a path exists
|
||||
* @param path - Absolute path to check
|
||||
*/
|
||||
exists(path: string): Promise<boolean>;
|
||||
|
||||
// ============ Process Execution ============
|
||||
|
||||
/**
|
||||
* Spawn a new process
|
||||
* @param command - Command to run (e.g., 'jsh', 'node', 'npm')
|
||||
* @param args - Optional arguments
|
||||
* @returns Process handle with I/O streams
|
||||
*/
|
||||
spawn(command: string, args?: string[]): Promise<IProcessHandle>;
|
||||
|
||||
// ============ Lifecycle ============
|
||||
|
||||
/**
|
||||
* Initialize the environment (e.g., boot WebContainer)
|
||||
* Must be called before any other operations
|
||||
*/
|
||||
init(): Promise<void>;
|
||||
|
||||
/**
|
||||
* Destroy the environment and clean up resources
|
||||
*/
|
||||
destroy(): Promise<void>;
|
||||
|
||||
// ============ State ============
|
||||
|
||||
/** Whether the environment has been initialized and is ready */
|
||||
readonly ready: boolean;
|
||||
|
||||
/** Type identifier for the environment implementation */
|
||||
readonly type: 'webcontainer' | 'backend' | 'mock';
|
||||
}
|
||||
1
ts_web/elements/00group-runtime/interfaces/index.ts
Normal file
1
ts_web/elements/00group-runtime/interfaces/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from './IExecutionEnvironment.js';
|
||||
Reference in New Issue
Block a user