@floegence/redevplugin-ui 3.0.32 → 3.0.34

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.
@@ -2608,6 +2608,9 @@ export interface components {
2608
2608
  operations: ("http" | "http_stream" | "websocket_round_trip" | "tcp_round_trip" | "udp_round_trip")[];
2609
2609
  http_methods?: ("GET" | "HEAD" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS")[];
2610
2610
  } & unknown)[];
2611
+ process?: {
2612
+ operations: ("start" | "attach" | "status" | "write_stdin" | "close_stdin" | "read_stdout" | "read_stderr" | "wait" | "terminate" | "kill" | "close")[];
2613
+ }[];
2611
2614
  };
2612
2615
  route: {
2613
2616
  /** @enum {unknown} */
@@ -2678,6 +2681,17 @@ export interface components {
2678
2681
  tls?: Record<string, never>;
2679
2682
  }[];
2680
2683
  };
2684
+ process?: {
2685
+ resource_limits?: {
2686
+ output_buffer_bytes?: number;
2687
+ max_runtime_ms?: number;
2688
+ };
2689
+ };
2690
+ background?: {
2691
+ /** @enum {unknown} */
2692
+ strategy: "runtime_start" | "on_demand";
2693
+ worker_id: string;
2694
+ };
2681
2695
  settings?: {
2682
2696
  schema_version: number;
2683
2697
  fields?: {
@@ -2703,7 +2717,7 @@ export interface components {
2703
2717
  required_features?: components["schemas"]["ManifestV9RequiredFeatures"];
2704
2718
  optional_features?: components["schemas"]["ManifestV9OptionalFeatures"];
2705
2719
  };
2706
- permissions: ("fs.workspace.read" | "fs.workspace.write" | "fs.home.read" | "fs.home.write" | "fs.environment.read" | "fs.environment.write" | "network.client" | "network.listen")[];
2720
+ permissions: ("fs.workspace.read" | "fs.workspace.write" | "fs.home.read" | "fs.home.write" | "fs.environment.read" | "fs.environment.write" | "network.client" | "network.listen" | "process.local")[];
2707
2721
  };
2708
2722
  ManifestV9Locale: string;
2709
2723
  ManifestV9Summary: string;
@@ -2773,7 +2787,7 @@ export interface components {
2773
2787
  minProperties?: number;
2774
2788
  maxProperties?: number;
2775
2789
  } & (unknown & unknown)) | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown);
2776
- ManifestV9RequiredFeatures: ("io.stream.v1" | "fs.workspace.v1" | "fs.home.v1" | "fs.environment.v1" | "fs.watch.v1" | "net.http.v1" | "net.websocket.v1" | "net.tcp.v1" | "net.udp.v1")[];
2790
+ ManifestV9RequiredFeatures: ("io.stream.v1" | "fs.workspace.v1" | "fs.home.v1" | "fs.environment.v1" | "fs.watch.v1" | "net.http.v1" | "net.websocket.v1" | "net.tcp.v1" | "net.udp.v1" | "process.local.v1")[];
2777
2791
  ManifestV9OptionalFeatures: string[];
2778
2792
  HostCapabilityPinV1: {
2779
2793
  publisher_id: components["schemas"]["HostCapabilityPinV1Id"];
package/dist/plugin.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  export { PluginBridgeClient } from "./surface.js";
2
2
  export { PluginBridgeError } from "./errors.js";
3
3
  export { pluginAPIMajor } from "./contracts.gen.js";
4
+ export { createPluginProcessClient } from "./process.js";
5
+ export type { PluginProcessExitResult, PluginProcessMethodContracts, PluginProcessReadResult, PluginProcessResourceLimits, PluginProcessStartRequest, PluginProcessStatus, } from "./process.js";
4
6
  export { callCapabilityOperation, callCapabilityStream, callCapabilitySync, isCapabilityBusinessError, } from "./capability-client.js";
5
7
  export type { BridgeLifecycleEvent, MessagePortLike, PluginBridgeClientOptions, PluginBridgeRequestOptions, PluginCanvasAccessibilityState, PluginCanvasInputEvent, PluginCanvasKeyEvent, PluginCanvasPointerEvent, PluginCanvasWheelEvent, PluginCanvasResizeEvent, PluginCanvasSurface, PluginFileExportRequest, PluginSurfaceKeyboardBinding, PluginSurfaceKeyboardEvent, PluginSurfaceKeyboardTargetKind, PluginJSONObject, PluginJSONValue, PluginMethodResult, PluginExecutionFailureCode, PluginExecutionSnapshot, PluginExecutionProgress, PluginExecutionEvent, PluginExecutionEventList, PluginSurfaceContext, PluginSurfaceFileExportMediaType, PluginUIActionEvent, PluginUIAttributeValue, PluginUIElementVNode, PluginUIPatchOperation, PluginUIVNode, } from "./surface.js";
6
8
  export type { PluginCapabilitySchema, PluginCapabilityEffect, PluginCapabilityOperationContract, PluginCapabilityStreamContract, PluginCapabilitySyncContract, PluginCapabilityStreamEvent, PluginCapabilityStreamReadResult, PluginExecution, PluginExecutionTerminalStatus, PluginExecutionWaitOptions, PluginStream, } from "./capability-client.js";
package/dist/plugin.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { PluginBridgeClient } from "./surface.js";
2
2
  export { PluginBridgeError } from "./errors.js";
3
3
  export { pluginAPIMajor } from "./contracts.gen.js";
4
+ export { createPluginProcessClient } from "./process.js";
4
5
  export { callCapabilityOperation, callCapabilityStream, callCapabilitySync, isCapabilityBusinessError, } from "./capability-client.js";
@@ -0,0 +1,131 @@
1
+ import { type PluginCapabilitySyncContract } from "./capability-client.js";
2
+ import type { PluginBridgeClient, PluginBridgeRequestOptions } from "./surface.js";
3
+ export type PluginProcessResourceLimits = Readonly<{
4
+ output_buffer_bytes?: number;
5
+ max_runtime_ms?: number;
6
+ }>;
7
+ export type PluginProcessStartRequest = Readonly<{
8
+ program: string;
9
+ argv?: readonly string[];
10
+ cwd?: string;
11
+ environment?: Readonly<Record<string, string>>;
12
+ environment_removals?: readonly string[];
13
+ secret_references?: Readonly<Record<string, string>>;
14
+ client_key: string;
15
+ resource_limits?: PluginProcessResourceLimits;
16
+ }>;
17
+ export type PluginProcessStatus = Readonly<{
18
+ handle: string;
19
+ client_key: string;
20
+ state: "starting" | "running" | "exited" | string;
21
+ exit_code?: number;
22
+ termination_reason?: string;
23
+ }>;
24
+ export type PluginProcessReadResult = Readonly<{
25
+ data_base64: string;
26
+ cursor: number;
27
+ eof: boolean;
28
+ process_exit: boolean;
29
+ stream_gap: boolean;
30
+ dropped_bytes?: number;
31
+ }>;
32
+ export type PluginProcessExitResult = Readonly<{
33
+ exit_code?: number;
34
+ termination_reason: string;
35
+ }>;
36
+ export type PluginProcessMethodContracts = Readonly<{
37
+ start: PluginCapabilitySyncContract;
38
+ attach: PluginCapabilitySyncContract;
39
+ status: PluginCapabilitySyncContract;
40
+ writeStdin: PluginCapabilitySyncContract;
41
+ closeStdin: PluginCapabilitySyncContract;
42
+ readStdout: PluginCapabilitySyncContract;
43
+ readStderr: PluginCapabilitySyncContract;
44
+ wait: PluginCapabilitySyncContract;
45
+ terminate: PluginCapabilitySyncContract;
46
+ kill: PluginCapabilitySyncContract;
47
+ close: PluginCapabilitySyncContract;
48
+ }>;
49
+ export declare function createPluginProcessClient(bridge: PluginBridgeClient, contracts: PluginProcessMethodContracts): {
50
+ start(request: PluginProcessStartRequest, options?: PluginBridgeRequestOptions): Promise<Readonly<{
51
+ handle: string;
52
+ client_key: string;
53
+ state: "starting" | "running" | "exited" | string;
54
+ exit_code?: number;
55
+ termination_reason?: string;
56
+ }>>;
57
+ attach(request: Readonly<{
58
+ client_key: string;
59
+ }>, options?: PluginBridgeRequestOptions): Promise<Readonly<{
60
+ handle: string;
61
+ client_key: string;
62
+ state: "starting" | "running" | "exited" | string;
63
+ exit_code?: number;
64
+ termination_reason?: string;
65
+ }>>;
66
+ status(request: Readonly<{
67
+ handle: string;
68
+ }>, options?: PluginBridgeRequestOptions): Promise<Readonly<{
69
+ handle: string;
70
+ client_key: string;
71
+ state: "starting" | "running" | "exited" | string;
72
+ exit_code?: number;
73
+ termination_reason?: string;
74
+ }>>;
75
+ writeStdin(request: Readonly<{
76
+ handle: string;
77
+ data_base64: string;
78
+ }>, options?: PluginBridgeRequestOptions): Promise<Readonly<{
79
+ written: number;
80
+ }>>;
81
+ closeStdin(request: Readonly<{
82
+ handle: string;
83
+ }>, options?: PluginBridgeRequestOptions): Promise<Readonly<{
84
+ ok: boolean;
85
+ }>>;
86
+ readStdout(request: Readonly<{
87
+ handle: string;
88
+ cursor?: number;
89
+ max_bytes: number;
90
+ }>, options?: PluginBridgeRequestOptions): Promise<Readonly<{
91
+ data_base64: string;
92
+ cursor: number;
93
+ eof: boolean;
94
+ process_exit: boolean;
95
+ stream_gap: boolean;
96
+ dropped_bytes?: number;
97
+ }>>;
98
+ readStderr(request: Readonly<{
99
+ handle: string;
100
+ cursor?: number;
101
+ max_bytes: number;
102
+ }>, options?: PluginBridgeRequestOptions): Promise<Readonly<{
103
+ data_base64: string;
104
+ cursor: number;
105
+ eof: boolean;
106
+ process_exit: boolean;
107
+ stream_gap: boolean;
108
+ dropped_bytes?: number;
109
+ }>>;
110
+ wait(request: Readonly<{
111
+ handle: string;
112
+ }>, options?: PluginBridgeRequestOptions): Promise<Readonly<{
113
+ exit_code?: number;
114
+ termination_reason: string;
115
+ }>>;
116
+ terminate(request: Readonly<{
117
+ handle: string;
118
+ }>, options?: PluginBridgeRequestOptions): Promise<Readonly<{
119
+ ok: boolean;
120
+ }>>;
121
+ kill(request: Readonly<{
122
+ handle: string;
123
+ }>, options?: PluginBridgeRequestOptions): Promise<Readonly<{
124
+ ok: boolean;
125
+ }>>;
126
+ close(request: Readonly<{
127
+ handle: string;
128
+ }>, options?: PluginBridgeRequestOptions): Promise<Readonly<{
129
+ ok: boolean;
130
+ }>>;
131
+ };
@@ -0,0 +1,38 @@
1
+ import { callCapabilitySync } from "./capability-client.js";
2
+ export function createPluginProcessClient(bridge, contracts) {
3
+ return {
4
+ start(request, options) {
5
+ return callCapabilitySync(bridge, contracts.start, request, options);
6
+ },
7
+ attach(request, options) {
8
+ return callCapabilitySync(bridge, contracts.attach, request, options);
9
+ },
10
+ status(request, options) {
11
+ return callCapabilitySync(bridge, contracts.status, request, options);
12
+ },
13
+ writeStdin(request, options) {
14
+ return callCapabilitySync(bridge, contracts.writeStdin, request, options);
15
+ },
16
+ closeStdin(request, options) {
17
+ return callCapabilitySync(bridge, contracts.closeStdin, request, options);
18
+ },
19
+ readStdout(request, options) {
20
+ return callCapabilitySync(bridge, contracts.readStdout, request, options);
21
+ },
22
+ readStderr(request, options) {
23
+ return callCapabilitySync(bridge, contracts.readStderr, request, options);
24
+ },
25
+ wait(request, options) {
26
+ return callCapabilitySync(bridge, contracts.wait, request, options);
27
+ },
28
+ terminate(request, options) {
29
+ return callCapabilitySync(bridge, contracts.terminate, request, options);
30
+ },
31
+ kill(request, options) {
32
+ return callCapabilitySync(bridge, contracts.kill, request, options);
33
+ },
34
+ close(request, options) {
35
+ return callCapabilitySync(bridge, contracts.close, request, options);
36
+ },
37
+ };
38
+ }
package/dist/surface.js CHANGED
@@ -2303,6 +2303,7 @@ export function createOpaquePluginBootstrapHTML(options = {}) {
2303
2303
  sendWorkerTransfer({ type: "redevplugin.ui.canvas.ready", id, canvas_id: canvasID, canvas: offscreen, css_width: metrics.cssWidth, css_height: metrics.cssHeight, device_pixel_ratio: metrics.devicePixelRatio }, [offscreen]);
2304
2304
  return;
2305
2305
  }
2306
+ if (runtime.metrics?.cssWidth === metrics.cssWidth && runtime.metrics?.cssHeight === metrics.cssHeight && runtime.metrics?.devicePixelRatio === metrics.devicePixelRatio) return;
2306
2307
  runtime.metrics = metrics;
2307
2308
  sendInput({ type: "resize", css_width: metrics.cssWidth, css_height: metrics.cssHeight, device_pixel_ratio: metrics.devicePixelRatio });
2308
2309
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floegence/redevplugin-ui",
3
- "version": "3.0.32",
3
+ "version": "3.0.34",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "repository": {
@@ -40,7 +40,7 @@
40
40
  "dist"
41
41
  ],
42
42
  "dependencies": {
43
- "@floegence/redevplugin-contracts": "3.0.32",
43
+ "@floegence/redevplugin-contracts": "3.0.34",
44
44
  "@noble/hashes": "2.4.0"
45
45
  },
46
46
  "publishConfig": {