tempo-plugin-sdk 1.0.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/README.md +40 -0
- package/dist/globals.d.ts +2 -0
- package/dist/globals.d.ts.map +1 -0
- package/dist/globals.js +8 -0
- package/dist/globals.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime.d.ts +4 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +83 -0
- package/dist/runtime.js.map +1 -0
- package/dist/types.d.ts +256 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui.d.ts +4 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +32 -0
- package/dist/ui.js.map +1 -0
- package/package.json +40 -0
package/README.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# tempo-plugin-sdk
|
|
2
|
+
|
|
3
|
+
Application model and typed Host APIs for Tempo plugins.
|
|
4
|
+
|
|
5
|
+
UI plugins connect after Tempo has supplied the page context:
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { connect } from "tempo-plugin-sdk/ui";
|
|
9
|
+
|
|
10
|
+
const app = await connect();
|
|
11
|
+
await app.notify.show({ title: `Tempo API ${app.context.apiVersion}` });
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Runtime plugins declare their setup and cleanup in one place:
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { defineRuntime } from "tempo-plugin-sdk/runtime";
|
|
18
|
+
|
|
19
|
+
defineRuntime(({ commands, events, onDispose }) => {
|
|
20
|
+
commands.register("run", async () => ({ ok: true }));
|
|
21
|
+
onDispose(events.on("clipboard.changed", console.log));
|
|
22
|
+
});
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Hybrid plugins can share an optional IPC contract:
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
type PluginIpc = {
|
|
29
|
+
invokes: {
|
|
30
|
+
greet: (name: string) => { message: string };
|
|
31
|
+
};
|
|
32
|
+
messages: {
|
|
33
|
+
refreshed: [at: Date];
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Pass it to `connect<PluginIpc>()` and `defineRuntime<PluginIpc>()` to type channel names, arguments, and invoke results on both sides. Omitting the contract keeps dynamic string channels available.
|
|
39
|
+
|
|
40
|
+
The SDK uses APIs injected by Tempo. It does not request or bypass plugin permissions.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["../src/globals.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAQhD"}
|
package/dist/globals.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function getHostGlobal(name) {
|
|
2
|
+
const value = globalThis[name];
|
|
3
|
+
if (value === undefined || value === null) {
|
|
4
|
+
throw new Error(`Tempo SDK could not connect: host global \"${name}\" is unavailable`);
|
|
5
|
+
}
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=globals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globals.js","sourceRoot":"","sources":["../src/globals.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAI,IAAY;IAC3C,MAAM,KAAK,GAAI,UAAsC,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,8CAA8C,IAAI,mBAAmB,CACtE,CAAC;IACJ,CAAC;IACD,OAAO,KAAU,CAAC;AACpB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AnyPluginIpcContract, PluginIpcContract, TempoRuntimeSetup } from "./types.js";
|
|
2
|
+
export type * from "./types.js";
|
|
3
|
+
export declare function defineRuntime<TContract extends PluginIpcContract = AnyPluginIpcContract>(setup: TempoRuntimeSetup<TContract>): void;
|
|
4
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EAEpB,iBAAiB,EAMjB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,mBAAmB,YAAY,CAAC;AAchC,wBAAgB,aAAa,CAC3B,SAAS,SAAS,iBAAiB,GAAG,oBAAoB,EAC1D,KAAK,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,IAAI,CA8E3C"}
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { getHostGlobal } from "./globals.js";
|
|
2
|
+
function createIpc(ipcMain) {
|
|
3
|
+
return {
|
|
4
|
+
handle: (channel, handler) => ipcMain.handle(channel, handler),
|
|
5
|
+
on: (channel, listener) => ipcMain.on(channel, listener),
|
|
6
|
+
send: (channel, ...args) => ipcMain.send(channel, ...args),
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export function defineRuntime(setup) {
|
|
10
|
+
if (typeof setup !== "function") {
|
|
11
|
+
throw new TypeError("defineRuntime requires a setup function");
|
|
12
|
+
}
|
|
13
|
+
const host = getHostGlobal("tempo");
|
|
14
|
+
const ipcMain = getHostGlobal("ipcMain");
|
|
15
|
+
const onMounted = getHostGlobal("onMounted");
|
|
16
|
+
const onUnmounted = getHostGlobal("onUnmounted");
|
|
17
|
+
const disposers = [];
|
|
18
|
+
let disposing = false;
|
|
19
|
+
async function runDisposers() {
|
|
20
|
+
disposing = true;
|
|
21
|
+
const errors = [];
|
|
22
|
+
while (disposers.length > 0) {
|
|
23
|
+
try {
|
|
24
|
+
await disposers.pop()?.();
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
errors.push(error);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return errors;
|
|
31
|
+
}
|
|
32
|
+
const context = Object.freeze({
|
|
33
|
+
pluginId: host.pluginId,
|
|
34
|
+
paths: host.paths,
|
|
35
|
+
runtime: host.runtime,
|
|
36
|
+
commands: host.commands,
|
|
37
|
+
mcpTools: host.mcpTools,
|
|
38
|
+
events: host.events,
|
|
39
|
+
storage: host.storage,
|
|
40
|
+
files: host.files,
|
|
41
|
+
settings: host.settings,
|
|
42
|
+
notify: host.notify,
|
|
43
|
+
theme: host.theme,
|
|
44
|
+
mainPanel: host.mainPanel,
|
|
45
|
+
apps: host.app,
|
|
46
|
+
external: host.external,
|
|
47
|
+
ipc: createIpc(ipcMain),
|
|
48
|
+
onDispose(disposer) {
|
|
49
|
+
if (typeof disposer !== "function") {
|
|
50
|
+
throw new TypeError("onDispose requires a function");
|
|
51
|
+
}
|
|
52
|
+
if (disposing) {
|
|
53
|
+
throw new Error("Cannot register a disposer while Runtime is stopping");
|
|
54
|
+
}
|
|
55
|
+
disposers.push(disposer);
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
onMounted(async () => {
|
|
59
|
+
try {
|
|
60
|
+
const disposer = await setup(context);
|
|
61
|
+
if (typeof disposer === "function") {
|
|
62
|
+
disposers.push(disposer);
|
|
63
|
+
}
|
|
64
|
+
else if (disposer !== undefined) {
|
|
65
|
+
throw new TypeError("Runtime setup must return a disposer or nothing");
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch (setupError) {
|
|
69
|
+
const cleanupErrors = await runDisposers();
|
|
70
|
+
if (cleanupErrors.length > 0) {
|
|
71
|
+
throw new AggregateError([setupError, ...cleanupErrors], "Tempo Runtime setup and cleanup failed");
|
|
72
|
+
}
|
|
73
|
+
throw setupError;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
onUnmounted(async () => {
|
|
77
|
+
const errors = await runDisposers();
|
|
78
|
+
if (errors.length > 0) {
|
|
79
|
+
throw new AggregateError(errors, "Tempo Runtime cleanup failed");
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
export type TempoTheme = "light" | "dark" | "system";
|
|
2
|
+
export type TempoJsonPrimitive = string | number | boolean | null;
|
|
3
|
+
export type TempoJsonValue = TempoJsonPrimitive | TempoJsonObject | TempoJsonValue[];
|
|
4
|
+
export interface TempoJsonObject {
|
|
5
|
+
[key: string]: TempoJsonValue;
|
|
6
|
+
}
|
|
7
|
+
export type TempoIpcPrimitive = string | number | boolean | bigint | null | undefined;
|
|
8
|
+
export type TempoIpcTypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array;
|
|
9
|
+
export type TempoIpcValue = TempoIpcPrimitive | Date | Error | ArrayBuffer | DataView | TempoIpcTypedArray | TempoIpcObject | TempoIpcValue[] | Map<TempoIpcValue, TempoIpcValue> | Set<TempoIpcValue>;
|
|
10
|
+
export interface TempoIpcObject {
|
|
11
|
+
[key: string]: TempoIpcValue;
|
|
12
|
+
}
|
|
13
|
+
export type TempoTextActionInput = {
|
|
14
|
+
kind: "text";
|
|
15
|
+
text: string;
|
|
16
|
+
};
|
|
17
|
+
export type TempoImageActionInput = {
|
|
18
|
+
kind: "image";
|
|
19
|
+
entryId: number;
|
|
20
|
+
imageUrl: string;
|
|
21
|
+
filePath?: string;
|
|
22
|
+
width?: number | null;
|
|
23
|
+
height?: number | null;
|
|
24
|
+
};
|
|
25
|
+
export type TempoFileActionInput = {
|
|
26
|
+
kind: "file";
|
|
27
|
+
entryId: number;
|
|
28
|
+
paths: string[];
|
|
29
|
+
};
|
|
30
|
+
export type TempoActionInput = TempoTextActionInput | TempoImageActionInput | TempoFileActionInput;
|
|
31
|
+
export type TempoActionInvocation = {
|
|
32
|
+
actionId: string;
|
|
33
|
+
query: string;
|
|
34
|
+
input: TempoActionInput;
|
|
35
|
+
};
|
|
36
|
+
export type TempoContextParams = TempoActionInvocation | TempoJsonObject | null;
|
|
37
|
+
export type TempoSessionData = TempoJsonObject | null;
|
|
38
|
+
export type TempoSettingValue = string | boolean | string[];
|
|
39
|
+
export type TempoSettings = Record<string, TempoSettingValue>;
|
|
40
|
+
export type TempoWindowDimension = number | `${number}%`;
|
|
41
|
+
export type TempoWindowPosition = number | `${number}%` | "center";
|
|
42
|
+
export interface TempoWindowRect {
|
|
43
|
+
width?: TempoWindowDimension;
|
|
44
|
+
height?: TempoWindowDimension;
|
|
45
|
+
x?: TempoWindowPosition;
|
|
46
|
+
y?: TempoWindowPosition;
|
|
47
|
+
}
|
|
48
|
+
export interface TempoNotificationOptions {
|
|
49
|
+
title?: string;
|
|
50
|
+
body?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface TempoClipboardChangedPayload {
|
|
53
|
+
schemaVersion: 1;
|
|
54
|
+
at: string;
|
|
55
|
+
}
|
|
56
|
+
export interface TempoHostEventMap {
|
|
57
|
+
"clipboard.changed": TempoClipboardChangedPayload;
|
|
58
|
+
}
|
|
59
|
+
export type TempoHostEventName = keyof TempoHostEventMap & string;
|
|
60
|
+
export type TempoHostEventHandler<TEvent extends TempoHostEventName> = (payload: TempoHostEventMap[TEvent]) => void;
|
|
61
|
+
export interface TempoEventsApi {
|
|
62
|
+
on<TEvent extends TempoHostEventName>(event: TEvent, handler: TempoHostEventHandler<TEvent>): () => void;
|
|
63
|
+
once<TEvent extends TempoHostEventName>(event: TEvent, handler: TempoHostEventHandler<TEvent>): () => void;
|
|
64
|
+
off<TEvent extends TempoHostEventName>(event: TEvent, handler: TempoHostEventHandler<TEvent>): boolean;
|
|
65
|
+
removeAllListeners(event?: TempoHostEventName): void;
|
|
66
|
+
listenerCount(event: TempoHostEventName): number;
|
|
67
|
+
eventNames(): TempoHostEventName[];
|
|
68
|
+
}
|
|
69
|
+
export interface TempoStorageApi {
|
|
70
|
+
get<TValue extends TempoJsonValue = TempoJsonValue>(key: string): Promise<TValue | null>;
|
|
71
|
+
set(key: string, value: TempoJsonValue): Promise<void>;
|
|
72
|
+
delete(key: string): Promise<void>;
|
|
73
|
+
list(): Promise<string[]>;
|
|
74
|
+
}
|
|
75
|
+
export type TempoFileType = "file" | "directory" | "other";
|
|
76
|
+
export interface TempoFileStat {
|
|
77
|
+
path: string;
|
|
78
|
+
type: TempoFileType;
|
|
79
|
+
size: number | null;
|
|
80
|
+
modifiedAt: string | null;
|
|
81
|
+
}
|
|
82
|
+
export interface TempoFileEntry extends TempoFileStat {
|
|
83
|
+
name: string;
|
|
84
|
+
}
|
|
85
|
+
export interface TempoFileOperationOptions {
|
|
86
|
+
recursive?: boolean;
|
|
87
|
+
}
|
|
88
|
+
export interface TempoFilesApi {
|
|
89
|
+
readText(path: string): Promise<string>;
|
|
90
|
+
writeText(path: string, content: string): Promise<void>;
|
|
91
|
+
readBytes(path: string): Promise<Uint8Array>;
|
|
92
|
+
writeBytes(path: string, bytes: Uint8Array): Promise<void>;
|
|
93
|
+
list(path?: string): Promise<TempoFileEntry[]>;
|
|
94
|
+
stat(path: string): Promise<TempoFileStat | null>;
|
|
95
|
+
mkdir(path: string, options?: TempoFileOperationOptions): Promise<void>;
|
|
96
|
+
remove(path: string, options?: TempoFileOperationOptions): Promise<void>;
|
|
97
|
+
rename(from: string, to: string): Promise<void>;
|
|
98
|
+
}
|
|
99
|
+
export interface TempoSettingsApi {
|
|
100
|
+
getAll(): Promise<TempoSettings>;
|
|
101
|
+
get<TValue extends TempoSettingValue = TempoSettingValue>(id: string, fallback?: TValue): Promise<TValue | undefined>;
|
|
102
|
+
subscribe(handler: (values: TempoSettings) => void): () => void;
|
|
103
|
+
}
|
|
104
|
+
export interface TempoNotifyApi {
|
|
105
|
+
show(options?: TempoNotificationOptions): Promise<void>;
|
|
106
|
+
}
|
|
107
|
+
export interface TempoAppApi {
|
|
108
|
+
open(appId: string, params?: TempoJsonObject): Promise<void>;
|
|
109
|
+
}
|
|
110
|
+
export interface TempoExternalApi {
|
|
111
|
+
open(url: string): Promise<void>;
|
|
112
|
+
}
|
|
113
|
+
export interface TempoUiContext {
|
|
114
|
+
apiVersion: string;
|
|
115
|
+
theme: TempoTheme;
|
|
116
|
+
params: TempoContextParams;
|
|
117
|
+
session: TempoSessionData;
|
|
118
|
+
}
|
|
119
|
+
export interface TempoUiThemeApi {
|
|
120
|
+
get(): Promise<TempoTheme>;
|
|
121
|
+
subscribe(handler: (theme: TempoTheme) => void): Promise<() => void>;
|
|
122
|
+
}
|
|
123
|
+
export interface TempoUiMainPanelApi {
|
|
124
|
+
hide(): Promise<void>;
|
|
125
|
+
back(): Promise<void>;
|
|
126
|
+
setSize(height: number): Promise<void>;
|
|
127
|
+
}
|
|
128
|
+
export interface TempoWindowApi {
|
|
129
|
+
setRect(rect: TempoWindowRect): Promise<void>;
|
|
130
|
+
close(): Promise<void>;
|
|
131
|
+
}
|
|
132
|
+
export interface TempoSessionApi {
|
|
133
|
+
push(payload: TempoJsonObject): Promise<void>;
|
|
134
|
+
}
|
|
135
|
+
export interface TempoUiApi {
|
|
136
|
+
readonly context: TempoUiContext | null;
|
|
137
|
+
ready(): Promise<TempoUiContext>;
|
|
138
|
+
readonly events: TempoEventsApi;
|
|
139
|
+
readonly storage: TempoStorageApi;
|
|
140
|
+
readonly files: TempoFilesApi;
|
|
141
|
+
readonly settings: TempoSettingsApi;
|
|
142
|
+
readonly notify: TempoNotifyApi;
|
|
143
|
+
readonly theme: TempoUiThemeApi;
|
|
144
|
+
readonly mainPanel: TempoUiMainPanelApi;
|
|
145
|
+
readonly window: TempoWindowApi;
|
|
146
|
+
readonly app: TempoAppApi;
|
|
147
|
+
readonly external: TempoExternalApi;
|
|
148
|
+
readonly session: TempoSessionApi;
|
|
149
|
+
}
|
|
150
|
+
export interface IpcRendererEvent {
|
|
151
|
+
readonly sender: "runtime";
|
|
152
|
+
}
|
|
153
|
+
export interface IpcRendererApi {
|
|
154
|
+
invoke<TResult extends TempoIpcValue = TempoIpcValue, TArgs extends readonly TempoIpcValue[] = TempoIpcValue[]>(channel: string, ...args: TArgs): Promise<TResult>;
|
|
155
|
+
send<TArgs extends readonly TempoIpcValue[]>(channel: string, ...args: TArgs): void;
|
|
156
|
+
on<TArgs extends readonly TempoIpcValue[]>(channel: string, listener: (event: IpcRendererEvent, ...args: TArgs) => void): () => void;
|
|
157
|
+
}
|
|
158
|
+
export type TempoRuntimeResult = TempoJsonValue | void;
|
|
159
|
+
export type TempoLifecycleHook = () => void | Promise<void>;
|
|
160
|
+
export type TempoLifecycleRegistrar = (hook: TempoLifecycleHook) => void;
|
|
161
|
+
export interface IpcMainEventSender {
|
|
162
|
+
send<TArgs extends readonly TempoIpcValue[]>(channel: string, ...args: TArgs): void;
|
|
163
|
+
}
|
|
164
|
+
export interface IpcMainEvent {
|
|
165
|
+
readonly sender: IpcMainEventSender;
|
|
166
|
+
}
|
|
167
|
+
export interface IpcMainApi {
|
|
168
|
+
handle<TArgs extends readonly TempoIpcValue[] = TempoIpcValue[], TResult extends TempoIpcValue | void = TempoIpcValue | void>(channel: string, handler: (event: IpcMainEvent, ...args: TArgs) => TResult | Promise<TResult>): void;
|
|
169
|
+
on<TArgs extends readonly TempoIpcValue[]>(channel: string, listener: (event: IpcMainEvent, ...args: TArgs) => void): () => void;
|
|
170
|
+
send<TArgs extends readonly TempoIpcValue[]>(channel: string, ...args: TArgs): void;
|
|
171
|
+
}
|
|
172
|
+
export interface TempoRuntimePaths {
|
|
173
|
+
readonly data: string;
|
|
174
|
+
}
|
|
175
|
+
export interface TempoRuntimeInfo {
|
|
176
|
+
readonly engine: "deno";
|
|
177
|
+
readonly version: string;
|
|
178
|
+
readonly nodeCompatVersion: string;
|
|
179
|
+
}
|
|
180
|
+
export interface TempoCommandsApi {
|
|
181
|
+
register<TParams = TempoActionInvocation>(id: string, handler: (params: TParams, signal: AbortSignal) => TempoRuntimeResult | Promise<TempoRuntimeResult>): void;
|
|
182
|
+
}
|
|
183
|
+
export interface TempoMcpToolsApi {
|
|
184
|
+
register<TParams = TempoJsonObject>(name: string, handler: (params: TParams, signal: AbortSignal) => TempoRuntimeResult | Promise<TempoRuntimeResult>): void;
|
|
185
|
+
}
|
|
186
|
+
export interface TempoRuntimeThemeApi {
|
|
187
|
+
get(): Promise<TempoTheme>;
|
|
188
|
+
}
|
|
189
|
+
export interface TempoRuntimeMainPanelApi {
|
|
190
|
+
hide(): Promise<void>;
|
|
191
|
+
}
|
|
192
|
+
export interface TempoRuntimeApi {
|
|
193
|
+
readonly pluginId: string;
|
|
194
|
+
readonly paths: TempoRuntimePaths;
|
|
195
|
+
readonly runtime: TempoRuntimeInfo;
|
|
196
|
+
readonly commands: TempoCommandsApi;
|
|
197
|
+
readonly mcpTools: TempoMcpToolsApi;
|
|
198
|
+
readonly events: TempoEventsApi;
|
|
199
|
+
readonly storage: TempoStorageApi;
|
|
200
|
+
readonly files: TempoFilesApi;
|
|
201
|
+
readonly settings: TempoSettingsApi;
|
|
202
|
+
readonly notify: TempoNotifyApi;
|
|
203
|
+
readonly theme: TempoRuntimeThemeApi;
|
|
204
|
+
readonly mainPanel: TempoRuntimeMainPanelApi;
|
|
205
|
+
readonly app: TempoAppApi;
|
|
206
|
+
readonly external: TempoExternalApi;
|
|
207
|
+
}
|
|
208
|
+
export interface PluginIpcContract {
|
|
209
|
+
invokes?: object;
|
|
210
|
+
messages?: object;
|
|
211
|
+
}
|
|
212
|
+
export type AnyPluginIpcContract = {
|
|
213
|
+
invokes: Record<string, (...args: any[]) => any>;
|
|
214
|
+
messages: Record<string, readonly any[]>;
|
|
215
|
+
};
|
|
216
|
+
type InvokeMap<TContract extends PluginIpcContract> = TContract extends {
|
|
217
|
+
invokes: infer TInvokes;
|
|
218
|
+
} ? TInvokes : AnyPluginIpcContract["invokes"];
|
|
219
|
+
type MessageMap<TContract extends PluginIpcContract> = TContract extends {
|
|
220
|
+
messages: infer TMessages;
|
|
221
|
+
} ? TMessages : AnyPluginIpcContract["messages"];
|
|
222
|
+
type InvokeChannel<TContract extends PluginIpcContract> = keyof InvokeMap<TContract> & string;
|
|
223
|
+
type MessageChannel<TContract extends PluginIpcContract> = keyof MessageMap<TContract> & string;
|
|
224
|
+
type InvokeArgs<TContract extends PluginIpcContract, TChannel extends InvokeChannel<TContract>> = InvokeMap<TContract>[TChannel] extends (...args: infer TArgs) => any ? TArgs : never;
|
|
225
|
+
type InvokeResult<TContract extends PluginIpcContract, TChannel extends InvokeChannel<TContract>> = InvokeMap<TContract>[TChannel] extends (...args: any[]) => infer TResult ? Awaited<TResult> : never;
|
|
226
|
+
type MessageArgs<TContract extends PluginIpcContract, TChannel extends MessageChannel<TContract>> = MessageMap<TContract>[TChannel] extends readonly any[] ? MessageMap<TContract>[TChannel] : never;
|
|
227
|
+
export interface TempoUiIpc<TContract extends PluginIpcContract = AnyPluginIpcContract> {
|
|
228
|
+
invoke<TChannel extends InvokeChannel<TContract>>(channel: TChannel, ...args: InvokeArgs<TContract, TChannel>): Promise<InvokeResult<TContract, TChannel>>;
|
|
229
|
+
send<TChannel extends MessageChannel<TContract>>(channel: TChannel, ...args: MessageArgs<TContract, TChannel>): void;
|
|
230
|
+
on<TChannel extends MessageChannel<TContract>>(channel: TChannel, listener: (event: IpcRendererEvent, ...args: MessageArgs<TContract, TChannel>) => void): () => void;
|
|
231
|
+
}
|
|
232
|
+
export interface TempoRuntimeIpcSender<TContract extends PluginIpcContract = AnyPluginIpcContract> {
|
|
233
|
+
send<TChannel extends MessageChannel<TContract>>(channel: TChannel, ...args: MessageArgs<TContract, TChannel>): void;
|
|
234
|
+
}
|
|
235
|
+
export interface TempoRuntimeIpcEvent<TContract extends PluginIpcContract = AnyPluginIpcContract> {
|
|
236
|
+
readonly sender: TempoRuntimeIpcSender<TContract>;
|
|
237
|
+
}
|
|
238
|
+
export interface TempoRuntimeIpc<TContract extends PluginIpcContract = AnyPluginIpcContract> {
|
|
239
|
+
handle<TChannel extends InvokeChannel<TContract>>(channel: TChannel, handler: (event: TempoRuntimeIpcEvent<TContract>, ...args: InvokeArgs<TContract, TChannel>) => InvokeResult<TContract, TChannel> | Promise<InvokeResult<TContract, TChannel>>): void;
|
|
240
|
+
on<TChannel extends MessageChannel<TContract>>(channel: TChannel, listener: (event: TempoRuntimeIpcEvent<TContract>, ...args: MessageArgs<TContract, TChannel>) => void): () => void;
|
|
241
|
+
send<TChannel extends MessageChannel<TContract>>(channel: TChannel, ...args: MessageArgs<TContract, TChannel>): void;
|
|
242
|
+
}
|
|
243
|
+
export interface TempoUiClient<TContract extends PluginIpcContract = AnyPluginIpcContract> extends Omit<TempoUiApi, "app" | "context" | "ready"> {
|
|
244
|
+
readonly context: TempoUiContext;
|
|
245
|
+
readonly apps: TempoAppApi;
|
|
246
|
+
readonly ipc: TempoUiIpc<TContract>;
|
|
247
|
+
}
|
|
248
|
+
export type TempoDisposer = () => void | Promise<void>;
|
|
249
|
+
export interface TempoRuntimeContext<TContract extends PluginIpcContract = AnyPluginIpcContract> extends Omit<TempoRuntimeApi, "app"> {
|
|
250
|
+
readonly apps: TempoAppApi;
|
|
251
|
+
readonly ipc: TempoRuntimeIpc<TContract>;
|
|
252
|
+
onDispose(disposer: TempoDisposer): void;
|
|
253
|
+
}
|
|
254
|
+
export type TempoRuntimeSetup<TContract extends PluginIpcContract = AnyPluginIpcContract> = (context: TempoRuntimeContext<TContract>) => void | TempoDisposer | Promise<void | TempoDisposer>;
|
|
255
|
+
export {};
|
|
256
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/ui.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AnyPluginIpcContract, PluginIpcContract, TempoUiClient } from "./types.js";
|
|
2
|
+
export type * from "./types.js";
|
|
3
|
+
export declare function connect<TContract extends PluginIpcContract = AnyPluginIpcContract>(): Promise<TempoUiClient<TContract>>;
|
|
4
|
+
//# sourceMappingURL=ui.d.ts.map
|
package/dist/ui.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EAEpB,iBAAiB,EAEjB,aAAa,EAEd,MAAM,YAAY,CAAC;AAEpB,mBAAmB,YAAY,CAAC;AAehC,wBAAsB,OAAO,CAC3B,SAAS,SAAS,iBAAiB,GAAG,oBAAoB,KACvD,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAuBrC"}
|
package/dist/ui.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { getHostGlobal } from "./globals.js";
|
|
2
|
+
function createIpc(ipcRenderer) {
|
|
3
|
+
return {
|
|
4
|
+
invoke: (channel, ...args) => ipcRenderer.invoke(channel, ...args),
|
|
5
|
+
send: (channel, ...args) => ipcRenderer.send(channel, ...args),
|
|
6
|
+
on: (channel, listener) => ipcRenderer.on(channel, listener),
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export async function connect() {
|
|
10
|
+
const host = getHostGlobal("tempo");
|
|
11
|
+
const ipcRenderer = getHostGlobal("ipcRenderer");
|
|
12
|
+
const context = await host.ready();
|
|
13
|
+
if (!context || typeof context !== "object") {
|
|
14
|
+
throw new Error("Tempo SDK could not connect: host returned an invalid UI context");
|
|
15
|
+
}
|
|
16
|
+
return Object.freeze({
|
|
17
|
+
context,
|
|
18
|
+
events: host.events,
|
|
19
|
+
storage: host.storage,
|
|
20
|
+
files: host.files,
|
|
21
|
+
settings: host.settings,
|
|
22
|
+
notify: host.notify,
|
|
23
|
+
theme: host.theme,
|
|
24
|
+
mainPanel: host.mainPanel,
|
|
25
|
+
window: host.window,
|
|
26
|
+
apps: host.app,
|
|
27
|
+
external: host.external,
|
|
28
|
+
session: host.session,
|
|
29
|
+
ipc: createIpc(ipcRenderer),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=ui.js.map
|
package/dist/ui.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAY7C,SAAS,SAAS,CAChB,WAA2B;IAE3B,OAAO;QACL,MAAM,EAAE,CAAC,OAAe,EAAE,GAAG,IAAW,EAAE,EAAE,CAC1C,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QACtC,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAW,EAAE,EAAE,CACxC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QACpC,EAAE,EAAE,CAAC,OAAe,EAAE,QAAkC,EAAE,EAAE,CAC1D,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,QAAiB,CAAC;KACpB,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO;IAG3B,MAAM,IAAI,GAAG,aAAa,CAAa,OAAO,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,aAAa,CAAiB,aAAa,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACnC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO;QACP,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,GAAG;QACd,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,EAAE,SAAS,CAAY,WAAW,CAAC;KACvC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tempo-plugin-sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Application model and typed host APIs for Tempo plugins",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/joooooooojo/tempo.git",
|
|
8
|
+
"directory": "sdk"
|
|
9
|
+
},
|
|
10
|
+
"type": "module",
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"import": "./dist/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./ui": {
|
|
21
|
+
"types": "./dist/ui.d.ts",
|
|
22
|
+
"import": "./dist/ui.js"
|
|
23
|
+
},
|
|
24
|
+
"./runtime": {
|
|
25
|
+
"types": "./dist/runtime.d.ts",
|
|
26
|
+
"import": "./dist/runtime.js"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsc -p tsconfig.json",
|
|
31
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
32
|
+
"test": "pnpm build && node --test"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"typescript": "~5.8.3"
|
|
39
|
+
}
|
|
40
|
+
}
|