@procedures/peer 0.0.0-stage → 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/CHANGELOG.md +5 -0
- package/LICENSE +21 -0
- package/README.md +725 -2
- package/dist/.tsbuildinfo +1 -0
- package/dist/connection/index.d.ts +45 -0
- package/dist/connection/index.d.ts.map +1 -0
- package/dist/connection/index.js +148 -0
- package/dist/connection/index.js.map +1 -0
- package/dist/discovery/index.d.ts +30 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +101 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/expose.d.ts +14 -0
- package/dist/expose.d.ts.map +1 -0
- package/dist/expose.js +16 -0
- package/dist/expose.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/input-schemas.d.ts +21 -0
- package/dist/input-schemas.d.ts.map +1 -0
- package/dist/input-schemas.js +80 -0
- package/dist/input-schemas.js.map +1 -0
- package/dist/lockfile.d.ts +48 -0
- package/dist/lockfile.d.ts.map +1 -0
- package/dist/lockfile.js +115 -0
- package/dist/lockfile.js.map +1 -0
- package/dist/manifest/index.d.ts +8 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +8 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/json.d.ts +27 -0
- package/dist/manifest/json.d.ts.map +1 -0
- package/dist/manifest/json.js +24 -0
- package/dist/manifest/json.js.map +1 -0
- package/dist/manifest/typescript.d.ts +17 -0
- package/dist/manifest/typescript.d.ts.map +1 -0
- package/dist/manifest/typescript.js +123 -0
- package/dist/manifest/typescript.js.map +1 -0
- package/dist/module.d.ts +20 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +42 -0
- package/dist/module.js.map +1 -0
- package/dist/output-schemas.d.ts +21 -0
- package/dist/output-schemas.d.ts.map +1 -0
- package/dist/output-schemas.js +85 -0
- package/dist/output-schemas.js.map +1 -0
- package/dist/peer/index.d.ts +47 -0
- package/dist/peer/index.d.ts.map +1 -0
- package/dist/peer/index.js +234 -0
- package/dist/peer/index.js.map +1 -0
- package/dist/peer/security.d.ts +25 -0
- package/dist/peer/security.d.ts.map +1 -0
- package/dist/peer/security.js +58 -0
- package/dist/peer/security.js.map +1 -0
- package/dist/procedures/index.d.ts +24 -0
- package/dist/procedures/index.d.ts.map +1 -0
- package/dist/procedures/index.js +15 -0
- package/dist/procedures/index.js.map +1 -0
- package/dist/procedures/manifest.generate.d.ts +11 -0
- package/dist/procedures/manifest.generate.d.ts.map +1 -0
- package/dist/procedures/manifest.generate.js +97 -0
- package/dist/procedures/manifest.generate.js.map +1 -0
- package/dist/procedures/server.call.d.ts +30 -0
- package/dist/procedures/server.call.d.ts.map +1 -0
- package/dist/procedures/server.call.js +60 -0
- package/dist/procedures/server.call.js.map +1 -0
- package/dist/procedures/server.connect.d.ts +11 -0
- package/dist/procedures/server.connect.d.ts.map +1 -0
- package/dist/procedures/server.connect.js +35 -0
- package/dist/procedures/server.connect.js.map +1 -0
- package/dist/procedures/server.connections.d.ts +22 -0
- package/dist/procedures/server.connections.d.ts.map +1 -0
- package/dist/procedures/server.connections.js +38 -0
- package/dist/procedures/server.connections.js.map +1 -0
- package/dist/procedures/server.create.d.ts +20 -0
- package/dist/procedures/server.create.d.ts.map +1 -0
- package/dist/procedures/server.create.js +64 -0
- package/dist/procedures/server.create.js.map +1 -0
- package/dist/procedures/server.disconnect.d.ts +11 -0
- package/dist/procedures/server.disconnect.d.ts.map +1 -0
- package/dist/procedures/server.disconnect.js +22 -0
- package/dist/procedures/server.disconnect.js.map +1 -0
- package/dist/procedures/server.start.d.ts +13 -0
- package/dist/procedures/server.start.d.ts.map +1 -0
- package/dist/procedures/server.start.js +179 -0
- package/dist/procedures/server.start.js.map +1 -0
- package/dist/procedures/server.status.d.ts +12 -0
- package/dist/procedures/server.status.d.ts.map +1 -0
- package/dist/procedures/server.status.js +116 -0
- package/dist/procedures/server.status.js.map +1 -0
- package/dist/procedures/server.stop.d.ts +11 -0
- package/dist/procedures/server.stop.d.ts.map +1 -0
- package/dist/procedures/server.stop.js +96 -0
- package/dist/procedures/server.stop.js.map +1 -0
- package/dist/register.d.ts +8 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +14 -0
- package/dist/register.js.map +1 -0
- package/dist/schema.d.ts +14 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +14 -0
- package/dist/schema.js.map +1 -0
- package/dist/types.d.ts +192 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +87 -3
- package/src/connection/index.ts +219 -0
- package/src/discovery/index.ts +137 -0
- package/src/expose.ts +17 -0
- package/src/index.ts +69 -0
- package/src/input-schemas.ts +121 -0
- package/src/lockfile.ts +129 -0
- package/src/manifest/index.ts +8 -0
- package/src/manifest/json.ts +39 -0
- package/src/manifest/typescript.ts +148 -0
- package/src/module.ts +46 -0
- package/src/output-schemas.ts +110 -0
- package/src/peer/index.ts +325 -0
- package/src/peer/security.ts +58 -0
- package/src/procedures/index.ts +32 -0
- package/src/procedures/manifest.generate.ts +113 -0
- package/src/procedures/server.call.ts +96 -0
- package/src/procedures/server.connect.ts +45 -0
- package/src/procedures/server.connections.ts +64 -0
- package/src/procedures/server.create.ts +84 -0
- package/src/procedures/server.disconnect.ts +31 -0
- package/src/procedures/server.start.ts +209 -0
- package/src/procedures/server.status.ts +139 -0
- package/src/procedures/server.stop.ts +121 -0
- package/src/register.ts +17 -0
- package/src/schema.ts +15 -0
- package/src/types.ts +257 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for client-server procedures
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// =============================================================================
|
|
6
|
+
// Transport Configuration
|
|
7
|
+
// =============================================================================
|
|
8
|
+
|
|
9
|
+
export type TransportType = "http" | "websocket" | "local";
|
|
10
|
+
|
|
11
|
+
export interface HttpTransportConfig {
|
|
12
|
+
type: "http";
|
|
13
|
+
port?: number | undefined;
|
|
14
|
+
host?: string | undefined;
|
|
15
|
+
basePath?: string | undefined;
|
|
16
|
+
/** Send CORS headers. The default is false: only `corsOrigins` (or loopback pages) are served to browsers. */
|
|
17
|
+
cors?: boolean | undefined;
|
|
18
|
+
/** Browser origins that may call the peer, besides loopback origins */
|
|
19
|
+
corsOrigins?: string[] | undefined;
|
|
20
|
+
/** URL strategy: "rest" (default) or "rpc" for /rpc/service/operation format */
|
|
21
|
+
urlStrategy?: "rest" | "rpc" | undefined;
|
|
22
|
+
/** A secret that every request must send as `Authorization: Bearer <token>` */
|
|
23
|
+
token?: string | undefined;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface WebSocketTransportConfig {
|
|
27
|
+
type: "websocket";
|
|
28
|
+
port?: number | undefined;
|
|
29
|
+
host?: string | undefined;
|
|
30
|
+
path?: string | undefined;
|
|
31
|
+
/** Browser origins that may connect, besides loopback origins */
|
|
32
|
+
origins?: string[] | undefined;
|
|
33
|
+
/** A secret that every connection must send as `?token=<token>` (or a bearer header) */
|
|
34
|
+
token?: string | undefined;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface LocalTransportConfig {
|
|
38
|
+
type: "local";
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export type TransportConfig = HttpTransportConfig | WebSocketTransportConfig | LocalTransportConfig;
|
|
42
|
+
|
|
43
|
+
// =============================================================================
|
|
44
|
+
// server.create Types
|
|
45
|
+
// =============================================================================
|
|
46
|
+
|
|
47
|
+
export interface ServerCreateInput {
|
|
48
|
+
/** Transports to enable */
|
|
49
|
+
transports?: TransportConfig[] | undefined;
|
|
50
|
+
/** Auto-register all procedures from registry */
|
|
51
|
+
autoRegister?: boolean | undefined;
|
|
52
|
+
/** A secret that every request must carry (each transport that has no token of its own gets this one) */
|
|
53
|
+
token?: string | undefined;
|
|
54
|
+
/** The procedures to serve: exact keys (`git.status`) or prefixes (`git.*`). Default: every procedure */
|
|
55
|
+
expose?: string[] | undefined;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface ServerCreateOutput {
|
|
59
|
+
/** Server ID for reference */
|
|
60
|
+
serverId: string;
|
|
61
|
+
/** Active transport endpoints */
|
|
62
|
+
endpoints: Array<{
|
|
63
|
+
type: TransportType;
|
|
64
|
+
address: string;
|
|
65
|
+
}>;
|
|
66
|
+
/** Number of registered procedures */
|
|
67
|
+
procedureCount: number;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// =============================================================================
|
|
71
|
+
// server.connect Types
|
|
72
|
+
// =============================================================================
|
|
73
|
+
|
|
74
|
+
export interface ServerConnectInput {
|
|
75
|
+
/** Remote server address */
|
|
76
|
+
address: string;
|
|
77
|
+
/** Transport type to use */
|
|
78
|
+
transport?: TransportType | undefined;
|
|
79
|
+
/** Connection timeout in ms */
|
|
80
|
+
timeout?: number | undefined;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface ProcedureInfo {
|
|
84
|
+
/** Procedure path */
|
|
85
|
+
path: string[];
|
|
86
|
+
/** Description from metadata */
|
|
87
|
+
description?: string | undefined;
|
|
88
|
+
/** Input schema as JSON schema */
|
|
89
|
+
inputSchema?: Record<string, unknown> | undefined;
|
|
90
|
+
/** Output schema as JSON schema */
|
|
91
|
+
outputSchema?: Record<string, unknown> | undefined;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export interface ServerConnectOutput {
|
|
95
|
+
/** Connection ID */
|
|
96
|
+
connectionId: string;
|
|
97
|
+
/** Remote peer ID */
|
|
98
|
+
remotePeerId: string;
|
|
99
|
+
/** Procedures available on remote */
|
|
100
|
+
remoteProcedures: ProcedureInfo[];
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// =============================================================================
|
|
104
|
+
// server.disconnect Types
|
|
105
|
+
// =============================================================================
|
|
106
|
+
|
|
107
|
+
export interface ServerDisconnectInput {
|
|
108
|
+
/** Connection ID to disconnect */
|
|
109
|
+
connectionId: string;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface ServerDisconnectOutput {
|
|
113
|
+
/** Whether disconnect succeeded */
|
|
114
|
+
success: boolean;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// =============================================================================
|
|
118
|
+
// manifest.generate Types
|
|
119
|
+
// =============================================================================
|
|
120
|
+
|
|
121
|
+
export type ManifestFormat = "json" | "typescript";
|
|
122
|
+
|
|
123
|
+
export interface ManifestGenerateInput {
|
|
124
|
+
/** Output formats to generate */
|
|
125
|
+
formats?: ManifestFormat[] | undefined;
|
|
126
|
+
/** Namespace filter (only include procedures under this path) */
|
|
127
|
+
namespace?: string[] | undefined;
|
|
128
|
+
/** Output directory for files */
|
|
129
|
+
outputDir?: string | undefined;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export interface ManifestGenerateOutput {
|
|
133
|
+
/** Generated JSON manifest */
|
|
134
|
+
json?:
|
|
135
|
+
| {
|
|
136
|
+
procedures: ProcedureInfo[];
|
|
137
|
+
generatedAt: string;
|
|
138
|
+
version: string;
|
|
139
|
+
}
|
|
140
|
+
| undefined;
|
|
141
|
+
/** Generated TypeScript declaration */
|
|
142
|
+
typescript?: string | undefined;
|
|
143
|
+
/** Files written if outputDir provided */
|
|
144
|
+
filesWritten?: string[] | undefined;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// =============================================================================
|
|
148
|
+
// Peer Connection Types
|
|
149
|
+
// =============================================================================
|
|
150
|
+
|
|
151
|
+
export interface PeerConnection {
|
|
152
|
+
/** Unique connection ID */
|
|
153
|
+
id: string;
|
|
154
|
+
/** Remote peer ID */
|
|
155
|
+
remotePeerId: string;
|
|
156
|
+
/** Transport type used */
|
|
157
|
+
transport: TransportType;
|
|
158
|
+
/** Connection state */
|
|
159
|
+
state: "connecting" | "connected" | "disconnected" | "error";
|
|
160
|
+
/** Remote procedures */
|
|
161
|
+
remoteProcedures: ProcedureInfo[];
|
|
162
|
+
/** When connection was established */
|
|
163
|
+
connectedAt?: Date;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// =============================================================================
|
|
167
|
+
// Procedure Discovery Protocol Messages
|
|
168
|
+
// =============================================================================
|
|
169
|
+
|
|
170
|
+
export interface ProcedureAnnounceMessage {
|
|
171
|
+
type: "procedure-announce";
|
|
172
|
+
peerId: string;
|
|
173
|
+
procedures: ProcedureInfo[];
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export interface ProcedureUpdateMessage {
|
|
177
|
+
type: "procedure-update";
|
|
178
|
+
peerId: string;
|
|
179
|
+
added?: ProcedureInfo[];
|
|
180
|
+
removed?: string[]; // Procedure paths as strings
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// =============================================================================
|
|
184
|
+
// server.start Types
|
|
185
|
+
// =============================================================================
|
|
186
|
+
|
|
187
|
+
export interface ServerStartInput {
|
|
188
|
+
/** Port to listen on */
|
|
189
|
+
port?: number | undefined;
|
|
190
|
+
/** Host to bind to */
|
|
191
|
+
host?: string | undefined;
|
|
192
|
+
/** Transport type */
|
|
193
|
+
transport?: "http" | "websocket" | "both" | undefined;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export interface ServerStartOutput {
|
|
197
|
+
/** Whether start succeeded */
|
|
198
|
+
success: boolean;
|
|
199
|
+
/** Process ID of server */
|
|
200
|
+
pid?: number | undefined;
|
|
201
|
+
/** Port server is running on */
|
|
202
|
+
port?: number | undefined;
|
|
203
|
+
/** Endpoint URL */
|
|
204
|
+
endpoint?: string | undefined;
|
|
205
|
+
/** Log file path */
|
|
206
|
+
logFile?: string | undefined;
|
|
207
|
+
/** Status message */
|
|
208
|
+
message: string;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// =============================================================================
|
|
212
|
+
// server.stop Types
|
|
213
|
+
// =============================================================================
|
|
214
|
+
|
|
215
|
+
export interface ServerStopInput {
|
|
216
|
+
/** Port of server to stop (stops all if omitted) */
|
|
217
|
+
port?: number | undefined;
|
|
218
|
+
/** Force kill with SIGKILL instead of SIGTERM */
|
|
219
|
+
force?: boolean | undefined;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export interface ServerStopOutput {
|
|
223
|
+
/** Whether stop succeeded */
|
|
224
|
+
success: boolean;
|
|
225
|
+
/** Status message */
|
|
226
|
+
message: string;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// =============================================================================
|
|
230
|
+
// server.status Types
|
|
231
|
+
// =============================================================================
|
|
232
|
+
|
|
233
|
+
export interface ServerStatusInput {
|
|
234
|
+
/** Port to check (shows all if omitted) */
|
|
235
|
+
port?: number | undefined;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export interface ServerStatusOutput {
|
|
239
|
+
/** Whether server is running */
|
|
240
|
+
running: boolean;
|
|
241
|
+
/** Process ID */
|
|
242
|
+
pid?: number | undefined;
|
|
243
|
+
/** Port */
|
|
244
|
+
port?: number | undefined;
|
|
245
|
+
/** Endpoint URL */
|
|
246
|
+
endpoint?: string | undefined;
|
|
247
|
+
/** Transport type */
|
|
248
|
+
transport?: string | undefined;
|
|
249
|
+
/** When server started (ISO string) */
|
|
250
|
+
startedAt?: string | undefined;
|
|
251
|
+
/** Human-readable uptime */
|
|
252
|
+
uptime?: string | undefined;
|
|
253
|
+
/** Log file path */
|
|
254
|
+
logFile?: string | undefined;
|
|
255
|
+
/** Status message */
|
|
256
|
+
message: string;
|
|
257
|
+
}
|