@stina/extension-api 0.5.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/dist/chunk-V6D6CW2V.js +17 -0
- package/dist/chunk-V6D6CW2V.js.map +1 -0
- package/dist/index.cjs +35 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +135 -0
- package/dist/index.d.ts +135 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime.cjs +414 -0
- package/dist/runtime.cjs.map +1 -0
- package/dist/runtime.d.cts +17 -0
- package/dist/runtime.d.ts +17 -0
- package/dist/runtime.js +387 -0
- package/dist/runtime.js.map +1 -0
- package/dist/types-Brv9O9NY.d.cts +540 -0
- package/dist/types-Brv9O9NY.d.ts +540 -0
- package/package.json +32 -0
- package/src/index.ts +92 -0
- package/src/messages.ts +189 -0
- package/src/runtime.ts +567 -0
- package/src/types.ts +634 -0
- package/stina-extension-api-0.5.0.tgz +0 -0
- package/tsconfig.json +9 -0
- package/tsup.config.ts +9 -0
package/src/messages.ts
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message protocol between Extension Host and Extension Workers
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { AIProvider, ChatMessage, ChatOptions, GetModelsOptions, StreamEvent, Tool, ToolResult, ModelInfo } from './types.js'
|
|
6
|
+
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Host → Worker Messages
|
|
9
|
+
// ============================================================================
|
|
10
|
+
|
|
11
|
+
export type HostToWorkerMessage =
|
|
12
|
+
| ActivateMessage
|
|
13
|
+
| DeactivateMessage
|
|
14
|
+
| SettingsChangedMessage
|
|
15
|
+
| ProviderChatRequestMessage
|
|
16
|
+
| ProviderModelsRequestMessage
|
|
17
|
+
| ToolExecuteRequestMessage
|
|
18
|
+
| ResponseMessage
|
|
19
|
+
|
|
20
|
+
export interface ActivateMessage {
|
|
21
|
+
type: 'activate'
|
|
22
|
+
id: string
|
|
23
|
+
payload: {
|
|
24
|
+
extensionId: string
|
|
25
|
+
extensionVersion: string
|
|
26
|
+
storagePath: string
|
|
27
|
+
permissions: string[]
|
|
28
|
+
settings: Record<string, unknown>
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface DeactivateMessage {
|
|
33
|
+
type: 'deactivate'
|
|
34
|
+
id: string
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface SettingsChangedMessage {
|
|
38
|
+
type: 'settings-changed'
|
|
39
|
+
id: string
|
|
40
|
+
payload: {
|
|
41
|
+
key: string
|
|
42
|
+
value: unknown
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface ProviderChatRequestMessage {
|
|
47
|
+
type: 'provider-chat-request'
|
|
48
|
+
id: string
|
|
49
|
+
payload: {
|
|
50
|
+
providerId: string
|
|
51
|
+
messages: ChatMessage[]
|
|
52
|
+
options: ChatOptions
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface ProviderModelsRequestMessage {
|
|
57
|
+
type: 'provider-models-request'
|
|
58
|
+
id: string
|
|
59
|
+
payload: {
|
|
60
|
+
providerId: string
|
|
61
|
+
options?: GetModelsOptions
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface ToolExecuteRequestMessage {
|
|
66
|
+
type: 'tool-execute-request'
|
|
67
|
+
id: string
|
|
68
|
+
payload: {
|
|
69
|
+
toolId: string
|
|
70
|
+
params: Record<string, unknown>
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface ResponseMessage {
|
|
75
|
+
type: 'response'
|
|
76
|
+
id: string
|
|
77
|
+
payload: {
|
|
78
|
+
requestId: string
|
|
79
|
+
success: boolean
|
|
80
|
+
data?: unknown
|
|
81
|
+
error?: string
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// ============================================================================
|
|
86
|
+
// Worker → Host Messages
|
|
87
|
+
// ============================================================================
|
|
88
|
+
|
|
89
|
+
export type WorkerToHostMessage =
|
|
90
|
+
| ReadyMessage
|
|
91
|
+
| RequestMessage
|
|
92
|
+
| ProviderRegisteredMessage
|
|
93
|
+
| ToolRegisteredMessage
|
|
94
|
+
| StreamEventMessage
|
|
95
|
+
| LogMessage
|
|
96
|
+
| ProviderModelsResponseMessage
|
|
97
|
+
| ToolExecuteResponseMessage
|
|
98
|
+
|
|
99
|
+
export interface ReadyMessage {
|
|
100
|
+
type: 'ready'
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface RequestMessage {
|
|
104
|
+
type: 'request'
|
|
105
|
+
id: string
|
|
106
|
+
method: RequestMethod
|
|
107
|
+
payload: unknown
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export type RequestMethod =
|
|
111
|
+
| 'network.fetch'
|
|
112
|
+
| 'settings.getAll'
|
|
113
|
+
| 'settings.get'
|
|
114
|
+
| 'settings.set'
|
|
115
|
+
| 'database.execute'
|
|
116
|
+
| 'storage.get'
|
|
117
|
+
| 'storage.set'
|
|
118
|
+
| 'storage.delete'
|
|
119
|
+
| 'storage.keys'
|
|
120
|
+
|
|
121
|
+
export interface ProviderRegisteredMessage {
|
|
122
|
+
type: 'provider-registered'
|
|
123
|
+
payload: {
|
|
124
|
+
id: string
|
|
125
|
+
name: string
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export interface ToolRegisteredMessage {
|
|
130
|
+
type: 'tool-registered'
|
|
131
|
+
payload: {
|
|
132
|
+
id: string
|
|
133
|
+
name: string
|
|
134
|
+
description: string
|
|
135
|
+
parameters?: Record<string, unknown>
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface StreamEventMessage {
|
|
140
|
+
type: 'stream-event'
|
|
141
|
+
payload: {
|
|
142
|
+
requestId: string
|
|
143
|
+
event: StreamEvent
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export interface ProviderModelsResponseMessage {
|
|
148
|
+
type: 'provider-models-response'
|
|
149
|
+
payload: {
|
|
150
|
+
requestId: string
|
|
151
|
+
models: ModelInfo[]
|
|
152
|
+
error?: string
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export interface ToolExecuteResponseMessage {
|
|
157
|
+
type: 'tool-execute-response'
|
|
158
|
+
payload: {
|
|
159
|
+
requestId: string
|
|
160
|
+
result: ToolResult
|
|
161
|
+
error?: string
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export interface LogMessage {
|
|
166
|
+
type: 'log'
|
|
167
|
+
payload: {
|
|
168
|
+
level: 'debug' | 'info' | 'warn' | 'error'
|
|
169
|
+
message: string
|
|
170
|
+
data?: Record<string, unknown>
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// ============================================================================
|
|
175
|
+
// Utility Types
|
|
176
|
+
// ============================================================================
|
|
177
|
+
|
|
178
|
+
export interface PendingRequest<T = unknown> {
|
|
179
|
+
resolve: (value: T) => void
|
|
180
|
+
reject: (error: Error) => void
|
|
181
|
+
timeout: ReturnType<typeof setTimeout>
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Generate a unique message ID
|
|
186
|
+
*/
|
|
187
|
+
export function generateMessageId(): string {
|
|
188
|
+
return `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`
|
|
189
|
+
}
|