@dyrra/protocol 0.1.1
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 +11 -0
- package/dist/actions.d.ts +196 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +90 -0
- package/dist/actions.js.map +1 -0
- package/dist/api.d.ts +330 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +232 -0
- package/dist/api.js.map +1 -0
- package/dist/common.d.ts +108 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +74 -0
- package/dist/common.js.map +1 -0
- package/dist/endpoints.d.ts +44 -0
- package/dist/endpoints.d.ts.map +1 -0
- package/dist/endpoints.js +33 -0
- package/dist/endpoints.js.map +1 -0
- package/dist/errors.d.ts +73 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +84 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/registry.d.ts +829 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +357 -0
- package/dist/registry.js.map +1 -0
- package/dist/rpc.d.ts +433 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +185 -0
- package/dist/rpc.js.map +1 -0
- package/dist/screen.d.ts +116 -0
- package/dist/screen.d.ts.map +1 -0
- package/dist/screen.js +95 -0
- package/dist/screen.js.map +1 -0
- package/dist/system.d.ts +101 -0
- package/dist/system.d.ts.map +1 -0
- package/dist/system.js +99 -0
- package/dist/system.js.map +1 -0
- package/package.json +53 -0
package/dist/api.js
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { MachineKind, MachineStatus, Scope } from "./common.js";
|
|
3
|
+
/* ── Пользователи платформы (ТЗ 8.3) ──────────────────────────────────── */
|
|
4
|
+
export const CreateEndUserRequest = z
|
|
5
|
+
.object({
|
|
6
|
+
externalId: z.string().min(1).max(200),
|
|
7
|
+
email: z.string().email().optional(),
|
|
8
|
+
name: z.string().max(200).optional(),
|
|
9
|
+
})
|
|
10
|
+
.meta({ id: "CreateEndUserRequest" });
|
|
11
|
+
export const EndUser = z
|
|
12
|
+
.object({
|
|
13
|
+
id: z.string(),
|
|
14
|
+
externalId: z.string(),
|
|
15
|
+
email: z.string().nullable(),
|
|
16
|
+
name: z.string().nullable(),
|
|
17
|
+
createdAt: z.string(),
|
|
18
|
+
})
|
|
19
|
+
.meta({ id: "EndUser" });
|
|
20
|
+
/* ── Сессия подключения (ТЗ 11) ───────────────────────────────────────── */
|
|
21
|
+
export const CreateLinkSessionRequest = z
|
|
22
|
+
.object({
|
|
23
|
+
endUserId: z.string().min(1),
|
|
24
|
+
scopes: z.array(Scope).min(1),
|
|
25
|
+
redirectUrl: z.string().url().optional(),
|
|
26
|
+
})
|
|
27
|
+
.meta({ id: "CreateLinkSessionRequest" });
|
|
28
|
+
export const LinkSession = z
|
|
29
|
+
.object({
|
|
30
|
+
id: z.string(),
|
|
31
|
+
url: z.string(),
|
|
32
|
+
code: z.string(),
|
|
33
|
+
expiresAt: z.string(),
|
|
34
|
+
})
|
|
35
|
+
.meta({ id: "LinkSession" });
|
|
36
|
+
export const LINK_SESSION_TTL_SEC = 30 * 60;
|
|
37
|
+
/* ── Подключения (ТЗ 8.3) ─────────────────────────────────────────────── */
|
|
38
|
+
export const Connection = z
|
|
39
|
+
.object({
|
|
40
|
+
id: z.string(),
|
|
41
|
+
endUserId: z.string(),
|
|
42
|
+
machineId: z.string(),
|
|
43
|
+
kind: MachineKind,
|
|
44
|
+
scopes: z.array(Scope),
|
|
45
|
+
status: z.enum(["active", "revoked"]),
|
|
46
|
+
machine: MachineStatus,
|
|
47
|
+
createdAt: z.string(),
|
|
48
|
+
revokedAt: z.string().nullable(),
|
|
49
|
+
})
|
|
50
|
+
.meta({ id: "Connection" });
|
|
51
|
+
/* ── Облачные Mac (ТЗ 8.5) ────────────────────────────────────────────── */
|
|
52
|
+
export const CloudTerm = z.enum(["day", "week", "month"]).meta({ id: "CloudTerm" });
|
|
53
|
+
/**
|
|
54
|
+
* Конфигурация железа облачного Mac.
|
|
55
|
+
*
|
|
56
|
+
* Сдаётся ли конфигурация — решает не этот список, а цена в конфиге
|
|
57
|
+
* сервера: нет цены, значит только по запросу (ТЗ 4.2). Так новую позицию
|
|
58
|
+
* можно открыть или закрыть, не трогая код.
|
|
59
|
+
*/
|
|
60
|
+
export const CloudHardware = z
|
|
61
|
+
.enum([
|
|
62
|
+
"mac_mini_m4",
|
|
63
|
+
"mac_mini_m4_pro",
|
|
64
|
+
"mac_studio_m1_max",
|
|
65
|
+
"mac_studio_m1_ultra",
|
|
66
|
+
"mac_studio_m2_max",
|
|
67
|
+
"mac_studio_m2_ultra",
|
|
68
|
+
"mac_studio_m3_ultra",
|
|
69
|
+
"mac_studio_m4_max",
|
|
70
|
+
"mac_studio_m4_ultra",
|
|
71
|
+
"mac_studio_m5_max",
|
|
72
|
+
"mac_studio_m5_ultra",
|
|
73
|
+
"mac_pro",
|
|
74
|
+
])
|
|
75
|
+
.meta({ id: "CloudHardware" });
|
|
76
|
+
/**
|
|
77
|
+
* Железо, которое мы держим в пуле готовым к выдаче.
|
|
78
|
+
* Всё остальное закупается или арендуется у провайдера под клиента,
|
|
79
|
+
* поэтому такая аренда ждёт администратора.
|
|
80
|
+
*/
|
|
81
|
+
export const POOLED_HARDWARE = ["mac_mini_m4", "mac_mini_m4_pro"];
|
|
82
|
+
export function isPooledHardware(hardware) {
|
|
83
|
+
return POOLED_HARDWARE.includes(hardware);
|
|
84
|
+
}
|
|
85
|
+
/** Названия для писем и интерфейса: коды в глаза человеку показывать не нужно. */
|
|
86
|
+
export const CLOUD_HARDWARE_NAMES = {
|
|
87
|
+
mac_mini_m4: "Mac mini M4",
|
|
88
|
+
mac_mini_m4_pro: "Mac mini M4 Pro",
|
|
89
|
+
mac_studio_m1_max: "Mac Studio M1 Max",
|
|
90
|
+
mac_studio_m1_ultra: "Mac Studio M1 Ultra",
|
|
91
|
+
mac_studio_m2_max: "Mac Studio M2 Max",
|
|
92
|
+
mac_studio_m2_ultra: "Mac Studio M2 Ultra",
|
|
93
|
+
mac_studio_m3_ultra: "Mac Studio M3 Ultra",
|
|
94
|
+
mac_studio_m4_max: "Mac Studio M4 Max",
|
|
95
|
+
mac_studio_m4_ultra: "Mac Studio M4 Ultra",
|
|
96
|
+
mac_studio_m5_max: "Mac Studio M5 Max",
|
|
97
|
+
mac_studio_m5_ultra: "Mac Studio M5 Ultra",
|
|
98
|
+
mac_pro: "Mac Pro",
|
|
99
|
+
};
|
|
100
|
+
export const CLOUD_TERM_NAMES = {
|
|
101
|
+
day: "сутки",
|
|
102
|
+
week: "неделя",
|
|
103
|
+
month: "месяц",
|
|
104
|
+
};
|
|
105
|
+
export const CreateCloudMacRequest = z
|
|
106
|
+
.object({
|
|
107
|
+
term: CloudTerm,
|
|
108
|
+
hardware: CloudHardware.default("mac_mini_m4"),
|
|
109
|
+
/** Обязательно true: лицензия macOS раздел 3 разрешает только разработку и тесты (ТЗ 3.2). */
|
|
110
|
+
developerUseAcknowledged: z.literal(true),
|
|
111
|
+
preinstall: z.array(z.enum(["xcode-cli", "claude-code", "node"])).optional(),
|
|
112
|
+
xcodeVersion: z.string().optional(),
|
|
113
|
+
/** Только для конфигураций по запросу: куда ответить и что именно нужно. */
|
|
114
|
+
contactEmail: z.email().optional(),
|
|
115
|
+
note: z.string().max(2000).optional(),
|
|
116
|
+
})
|
|
117
|
+
.meta({ id: "CreateCloudMacRequest" });
|
|
118
|
+
export const CloudMac = z
|
|
119
|
+
.object({
|
|
120
|
+
id: z.string(),
|
|
121
|
+
/**
|
|
122
|
+
* `awaiting_payment` — аренда создана, но ещё не оплачена: клиент должен
|
|
123
|
+
* перейти по `checkoutUrl`. Машина выдаётся только после webhook об оплате.
|
|
124
|
+
*/
|
|
125
|
+
status: z.enum(["awaiting_payment", "queued", "provisioning", "ready", "ended"]),
|
|
126
|
+
term: CloudTerm,
|
|
127
|
+
hardware: CloudHardware,
|
|
128
|
+
leaseStartedAt: z.string().nullable(),
|
|
129
|
+
leaseEndsAt: z.string().nullable(),
|
|
130
|
+
price: z.object({ amount: z.number().int(), currency: z.string() }),
|
|
131
|
+
/** Внешняя страница оплаты. Есть только пока аренда ждёт оплаты. */
|
|
132
|
+
checkoutUrl: z.string().nullable(),
|
|
133
|
+
})
|
|
134
|
+
.meta({ id: "CloudMac" });
|
|
135
|
+
/**
|
|
136
|
+
* Заявка на конфигурацию по запросу.
|
|
137
|
+
*
|
|
138
|
+
* Возвращается с кодом 202: аренда НЕ создана и деньги не списываются.
|
|
139
|
+
* Заявка сохраняется у нас и уходит письмом администратору.
|
|
140
|
+
*/
|
|
141
|
+
export const CloudMacQuote = z
|
|
142
|
+
.object({
|
|
143
|
+
id: z.string(),
|
|
144
|
+
status: z.literal("quote_requested"),
|
|
145
|
+
hardware: CloudHardware,
|
|
146
|
+
term: CloudTerm,
|
|
147
|
+
contactEmail: z.string().nullable(),
|
|
148
|
+
note: z.string().nullable(),
|
|
149
|
+
/** Текст для человека: что будет дальше. */
|
|
150
|
+
message: z.string(),
|
|
151
|
+
createdAt: z.string(),
|
|
152
|
+
})
|
|
153
|
+
.meta({ id: "CloudMacQuote" });
|
|
154
|
+
/* ── Подписка на пакет активных Mac (ТЗ 4.1) ──────────────────────────── */
|
|
155
|
+
/**
|
|
156
|
+
* Тарификация пакетами, а не по факту: по внешней ссылке на оплату
|
|
157
|
+
* нельзя списать переменную сумму.
|
|
158
|
+
*/
|
|
159
|
+
export const BillingPackage = z
|
|
160
|
+
.enum(["free", "p50", "p200", "p1000"])
|
|
161
|
+
.meta({ id: "BillingPackage" });
|
|
162
|
+
/** Сколько активных подключённых Mac в месяц разрешает каждый пакет. */
|
|
163
|
+
export const PACKAGE_MACHINE_LIMIT = {
|
|
164
|
+
free: 10,
|
|
165
|
+
p50: 50,
|
|
166
|
+
p200: 200,
|
|
167
|
+
p1000: 1000,
|
|
168
|
+
};
|
|
169
|
+
export const Subscription = z
|
|
170
|
+
.object({
|
|
171
|
+
package: BillingPackage,
|
|
172
|
+
status: z.enum(["active", "past_due", "canceled"]),
|
|
173
|
+
machineLimit: z.number().int().positive(),
|
|
174
|
+
activeMachines: z.number().int().nonnegative(),
|
|
175
|
+
currentPeriodEnd: z.string().nullable(),
|
|
176
|
+
cancelAtPeriodEnd: z.boolean(),
|
|
177
|
+
/** Ссылки на оплату пакетов: показываются кнопками в консоли. */
|
|
178
|
+
upgradeUrls: z.record(z.string(), z.string()).optional(),
|
|
179
|
+
})
|
|
180
|
+
.meta({ id: "Subscription" });
|
|
181
|
+
/* ── Задачи Xcode (ТЗ 8.12) ───────────────────────────────────────────── */
|
|
182
|
+
export const Job = z
|
|
183
|
+
.object({
|
|
184
|
+
id: z.string(),
|
|
185
|
+
status: z.enum(["running", "succeeded", "failed"]),
|
|
186
|
+
logTail: z.string(),
|
|
187
|
+
artifacts: z.array(z.object({ type: z.string(), path: z.string() })),
|
|
188
|
+
durationSec: z.number().nonnegative(),
|
|
189
|
+
})
|
|
190
|
+
.meta({ id: "Job" });
|
|
191
|
+
/* ── Записи сессий (ТЗ 8.11) ──────────────────────────────────────────── */
|
|
192
|
+
export const Recording = z
|
|
193
|
+
.object({
|
|
194
|
+
id: z.string(),
|
|
195
|
+
status: z.enum(["processing", "ready", "deleted"]),
|
|
196
|
+
url: z.string().optional(),
|
|
197
|
+
expiresAt: z.string().optional(),
|
|
198
|
+
durationSec: z.number().nonnegative(),
|
|
199
|
+
createdAt: z.string(),
|
|
200
|
+
})
|
|
201
|
+
.meta({ id: "Recording" });
|
|
202
|
+
/* ── Webhooks платформам (ТЗ 8.6) ─────────────────────────────────────── */
|
|
203
|
+
export const WebhookEventType = z
|
|
204
|
+
.enum([
|
|
205
|
+
"connection.created",
|
|
206
|
+
"connection.revoked",
|
|
207
|
+
"machine.online",
|
|
208
|
+
"machine.offline",
|
|
209
|
+
"machine.paused",
|
|
210
|
+
"machine.resumed",
|
|
211
|
+
"machine.permissions_changed",
|
|
212
|
+
"cloud_mac.ready",
|
|
213
|
+
"cloud_mac.expiring",
|
|
214
|
+
"cloud_mac.ended",
|
|
215
|
+
"billing.payment_failed",
|
|
216
|
+
"command.completed",
|
|
217
|
+
"command.failed",
|
|
218
|
+
"command.expired",
|
|
219
|
+
"recording.ready",
|
|
220
|
+
])
|
|
221
|
+
.meta({ id: "WebhookEventType" });
|
|
222
|
+
export const WebhookEvent = z
|
|
223
|
+
.object({
|
|
224
|
+
id: z.string(),
|
|
225
|
+
type: WebhookEventType,
|
|
226
|
+
createdAt: z.string(),
|
|
227
|
+
data: z.record(z.string(), z.unknown()),
|
|
228
|
+
})
|
|
229
|
+
.meta({ id: "WebhookEvent" });
|
|
230
|
+
export const WEBHOOK_SIGNATURE_HEADER = "dyrra-signature";
|
|
231
|
+
export const WEBHOOK_TOLERANCE_SEC = 300;
|
|
232
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/common.d.ts
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** Права, которые платформа запрашивает у пользователя (ТЗ 7.3). */
|
|
3
|
+
export declare const Scope: z.ZodEnum<{
|
|
4
|
+
clipboard: "clipboard";
|
|
5
|
+
files: "files";
|
|
6
|
+
input: "input";
|
|
7
|
+
record: "record";
|
|
8
|
+
screen: "screen";
|
|
9
|
+
shell: "shell";
|
|
10
|
+
}>;
|
|
11
|
+
export type Scope = z.infer<typeof Scope>;
|
|
12
|
+
export declare const MachineKind: z.ZodEnum<{
|
|
13
|
+
cloud: "cloud";
|
|
14
|
+
connected: "connected";
|
|
15
|
+
vm: "vm";
|
|
16
|
+
}>;
|
|
17
|
+
export type MachineKind = z.infer<typeof MachineKind>;
|
|
18
|
+
/** Почему Mac не может выполнить команду прямо сейчас (ТЗ 7.7). */
|
|
19
|
+
export declare const Availability: z.ZodEnum<{
|
|
20
|
+
asleep: "asleep";
|
|
21
|
+
no_gui_session: "no_gui_session";
|
|
22
|
+
ready: "ready";
|
|
23
|
+
screen_locked: "screen_locked";
|
|
24
|
+
}>;
|
|
25
|
+
export type Availability = z.infer<typeof Availability>;
|
|
26
|
+
/**
|
|
27
|
+
* Состояние Mac в ответах API.
|
|
28
|
+
*
|
|
29
|
+
* «unknown» — Mac не на связи. Последнее запомненное значение за текущее
|
|
30
|
+
* выдавать нельзя: `online: false` вместе с `availability: "ready"`
|
|
31
|
+
* противоречат друг другу. Приложение на Mac «unknown» не присылает никогда.
|
|
32
|
+
*/
|
|
33
|
+
export declare const ReportedAvailability: z.ZodEnum<{
|
|
34
|
+
asleep: "asleep";
|
|
35
|
+
no_gui_session: "no_gui_session";
|
|
36
|
+
ready: "ready";
|
|
37
|
+
screen_locked: "screen_locked";
|
|
38
|
+
unknown: "unknown";
|
|
39
|
+
}>;
|
|
40
|
+
export type ReportedAvailability = z.infer<typeof ReportedAvailability>;
|
|
41
|
+
export declare const DisplayInfo: z.ZodObject<{
|
|
42
|
+
widthPoints: z.ZodNumber;
|
|
43
|
+
heightPoints: z.ZodNumber;
|
|
44
|
+
scaleFactor: z.ZodNumber;
|
|
45
|
+
displayId: z.ZodNumber;
|
|
46
|
+
}, z.core.$strip>;
|
|
47
|
+
export type DisplayInfo = z.infer<typeof DisplayInfo>;
|
|
48
|
+
export declare const Permissions: z.ZodObject<{
|
|
49
|
+
screenRecording: z.ZodBoolean;
|
|
50
|
+
accessibility: z.ZodBoolean;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
export type Permissions = z.infer<typeof Permissions>;
|
|
53
|
+
export declare const MachineStatus: z.ZodObject<{
|
|
54
|
+
online: z.ZodBoolean;
|
|
55
|
+
availability: z.ZodEnum<{
|
|
56
|
+
asleep: "asleep";
|
|
57
|
+
no_gui_session: "no_gui_session";
|
|
58
|
+
ready: "ready";
|
|
59
|
+
screen_locked: "screen_locked";
|
|
60
|
+
unknown: "unknown";
|
|
61
|
+
}>;
|
|
62
|
+
lastSeenAt: z.ZodNullable<z.ZodString>;
|
|
63
|
+
paused: z.ZodBoolean;
|
|
64
|
+
permissions: z.ZodObject<{
|
|
65
|
+
screenRecording: z.ZodBoolean;
|
|
66
|
+
accessibility: z.ZodBoolean;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
display: z.ZodNullable<z.ZodObject<{
|
|
69
|
+
widthPoints: z.ZodNumber;
|
|
70
|
+
heightPoints: z.ZodNumber;
|
|
71
|
+
scaleFactor: z.ZodNumber;
|
|
72
|
+
displayId: z.ZodNumber;
|
|
73
|
+
}, z.core.$strip>>;
|
|
74
|
+
appVersion: z.ZodNullable<z.ZodString>;
|
|
75
|
+
macosVersion: z.ZodNullable<z.ZodString>;
|
|
76
|
+
hiddenAppCount: z.ZodDefault<z.ZodNumber>;
|
|
77
|
+
}, z.core.$strip>;
|
|
78
|
+
export type MachineStatus = z.infer<typeof MachineStatus>;
|
|
79
|
+
/** Общие параметры поведения при недоступности Mac (ТЗ 8.10). */
|
|
80
|
+
export declare const DeliveryOptions: z.ZodObject<{
|
|
81
|
+
confirmationTimeoutMs: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
82
|
+
whenUnavailable: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
83
|
+
fail: "fail";
|
|
84
|
+
queue: "queue";
|
|
85
|
+
}>>>;
|
|
86
|
+
ttlSeconds: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
87
|
+
}, z.core.$strip>;
|
|
88
|
+
export type DeliveryOptions = z.infer<typeof DeliveryOptions>;
|
|
89
|
+
export declare const ID_PREFIXES: {
|
|
90
|
+
readonly platform: "plt";
|
|
91
|
+
readonly apiKey: "key";
|
|
92
|
+
readonly endUser: "eu";
|
|
93
|
+
readonly linkSession: "lks";
|
|
94
|
+
readonly machine: "mch";
|
|
95
|
+
readonly connection: "con";
|
|
96
|
+
readonly cloudMac: "cmc";
|
|
97
|
+
readonly cloudMacQuote: "cmq";
|
|
98
|
+
readonly command: "cmd";
|
|
99
|
+
readonly job: "job";
|
|
100
|
+
readonly recording: "rec";
|
|
101
|
+
readonly vmInstance: "vm";
|
|
102
|
+
readonly consent: "cns";
|
|
103
|
+
readonly subscription: "sub";
|
|
104
|
+
readonly snapshot: "snp";
|
|
105
|
+
readonly rpc: "rpc";
|
|
106
|
+
readonly request: "req";
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,oEAAoE;AACpE,eAAO,MAAM,KAAK;;;;;;;EAEwC,CAAC;AAC3D,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAE1C,eAAO,MAAM,WAAW;;;;EAAmE,CAAC;AAC5F,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,mEAAmE;AACnE,eAAO,MAAM,YAAY;;;;;EAEM,CAAC;AAChC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;;;;;;EAEM,CAAC;AACxC,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,WAAW;;;;;iBAOkE,CAAC;AAC3F,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW;;;iBAEuD,CAAC;AAChF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;iBAaM,CAAC;AACjC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,iEAAiE;AACjE,eAAO,MAAM,eAAe;;;;;;;iBAOM,CAAC;AACnC,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,WAAW;aACtB,QAAQ,EAAE,KAAK;aACf,MAAM,EAAE,KAAK;aACb,OAAO,EAAE,IAAI;aACb,WAAW,EAAE,KAAK;aAClB,OAAO,EAAE,KAAK;aACd,UAAU,EAAE,KAAK;aACjB,QAAQ,EAAE,KAAK;aACf,aAAa,EAAE,KAAK;aACpB,OAAO,EAAE,KAAK;aACd,GAAG,EAAE,KAAK;aACV,SAAS,EAAE,KAAK;aAChB,UAAU,EAAE,IAAI;aAChB,OAAO,EAAE,KAAK;aACd,YAAY,EAAE,KAAK;aACnB,QAAQ,EAAE,KAAK;aACf,GAAG,EAAE,KAAK;aACV,OAAO,EAAE,KAAK;CACN,CAAC"}
|
package/dist/common.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** Права, которые платформа запрашивает у пользователя (ТЗ 7.3). */
|
|
3
|
+
export const Scope = z
|
|
4
|
+
.enum(["screen", "input", "shell", "files", "clipboard", "record"])
|
|
5
|
+
.meta({ id: "Scope", description: "Право подключения" });
|
|
6
|
+
export const MachineKind = z.enum(["connected", "cloud", "vm"]).meta({ id: "MachineKind" });
|
|
7
|
+
/** Почему Mac не может выполнить команду прямо сейчас (ТЗ 7.7). */
|
|
8
|
+
export const Availability = z
|
|
9
|
+
.enum(["ready", "asleep", "screen_locked", "no_gui_session"])
|
|
10
|
+
.meta({ id: "Availability" });
|
|
11
|
+
/**
|
|
12
|
+
* Состояние Mac в ответах API.
|
|
13
|
+
*
|
|
14
|
+
* «unknown» — Mac не на связи. Последнее запомненное значение за текущее
|
|
15
|
+
* выдавать нельзя: `online: false` вместе с `availability: "ready"`
|
|
16
|
+
* противоречат друг другу. Приложение на Mac «unknown» не присылает никогда.
|
|
17
|
+
*/
|
|
18
|
+
export const ReportedAvailability = z
|
|
19
|
+
.enum(["ready", "asleep", "screen_locked", "no_gui_session", "unknown"])
|
|
20
|
+
.meta({ id: "ReportedAvailability" });
|
|
21
|
+
export const DisplayInfo = z
|
|
22
|
+
.object({
|
|
23
|
+
widthPoints: z.number().int().positive(),
|
|
24
|
+
heightPoints: z.number().int().positive(),
|
|
25
|
+
scaleFactor: z.number().positive(),
|
|
26
|
+
displayId: z.number().int().nonnegative(),
|
|
27
|
+
})
|
|
28
|
+
.meta({ id: "DisplayInfo", description: "Логический размер главного дисплея в точках" });
|
|
29
|
+
export const Permissions = z
|
|
30
|
+
.object({ screenRecording: z.boolean(), accessibility: z.boolean() })
|
|
31
|
+
.meta({ id: "Permissions", description: "Состояние разрешений macOS (TCC)" });
|
|
32
|
+
export const MachineStatus = z
|
|
33
|
+
.object({
|
|
34
|
+
online: z.boolean(),
|
|
35
|
+
availability: ReportedAvailability,
|
|
36
|
+
/** Когда Mac последний раз был на связи; null — ещё ни разу. */
|
|
37
|
+
lastSeenAt: z.string().nullable(),
|
|
38
|
+
paused: z.boolean(),
|
|
39
|
+
permissions: Permissions,
|
|
40
|
+
display: DisplayInfo.nullable(),
|
|
41
|
+
appVersion: z.string().nullable(),
|
|
42
|
+
macosVersion: z.string().nullable(),
|
|
43
|
+
hiddenAppCount: z.number().int().nonnegative().default(0),
|
|
44
|
+
})
|
|
45
|
+
.meta({ id: "MachineStatus" });
|
|
46
|
+
/** Общие параметры поведения при недоступности Mac (ТЗ 8.10). */
|
|
47
|
+
export const DeliveryOptions = z
|
|
48
|
+
.object({
|
|
49
|
+
confirmationTimeoutMs: z.number().int().min(1000).max(300_000).default(60_000),
|
|
50
|
+
whenUnavailable: z.enum(["fail", "queue"]).default("fail"),
|
|
51
|
+
ttlSeconds: z.number().int().min(1).max(86_400).default(3600),
|
|
52
|
+
})
|
|
53
|
+
.partial()
|
|
54
|
+
.meta({ id: "DeliveryOptions" });
|
|
55
|
+
export const ID_PREFIXES = {
|
|
56
|
+
platform: "plt",
|
|
57
|
+
apiKey: "key",
|
|
58
|
+
endUser: "eu",
|
|
59
|
+
linkSession: "lks",
|
|
60
|
+
machine: "mch",
|
|
61
|
+
connection: "con",
|
|
62
|
+
cloudMac: "cmc",
|
|
63
|
+
cloudMacQuote: "cmq",
|
|
64
|
+
command: "cmd",
|
|
65
|
+
job: "job",
|
|
66
|
+
recording: "rec",
|
|
67
|
+
vmInstance: "vm",
|
|
68
|
+
consent: "cns",
|
|
69
|
+
subscription: "sub",
|
|
70
|
+
snapshot: "snp",
|
|
71
|
+
rpc: "rpc",
|
|
72
|
+
request: "req",
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Адреса по умолчанию.
|
|
3
|
+
*
|
|
4
|
+
* Собственный домен подключён 17.09.2026. Адреса Render и Vercel продолжают
|
|
5
|
+
* работать, пока не переключён DNS, но по умолчанию клиенты ходят на домен.
|
|
6
|
+
*/
|
|
7
|
+
/** Адрес gateway для REST-вызовов. */
|
|
8
|
+
export declare const DEFAULT_API_BASE_URL = "https://api.dyrra.dev";
|
|
9
|
+
/** Тот же gateway для исходящего WSS от приложений на Mac. */
|
|
10
|
+
export declare const DEFAULT_GATEWAY_WS_URL = "wss://api.dyrra.dev";
|
|
11
|
+
/**
|
|
12
|
+
* Страницы подключения Mac обслуживает тот же процесс, что и API:
|
|
13
|
+
* отдельного домена у них пока нет.
|
|
14
|
+
*/
|
|
15
|
+
export declare const DEFAULT_LINK_BASE_URL = "https://api.dyrra.dev";
|
|
16
|
+
/**
|
|
17
|
+
* Пути, по которым приложение на Mac обращается к gateway (ТЗ 11).
|
|
18
|
+
*
|
|
19
|
+
* Держатся здесь, а не строками в двух местах: путь есть и в Swift,
|
|
20
|
+
* и в регистрации маршрута, и разъехаться они могут молча — снаружи
|
|
21
|
+
* это выглядит как «маршрут не найден».
|
|
22
|
+
*
|
|
23
|
+
* Из этого списка генерируются константы для Swift, а тест gateway
|
|
24
|
+
* сверяет, что каждый путь действительно зарегистрирован нужным методом.
|
|
25
|
+
*/
|
|
26
|
+
export declare const MACHINE_ENDPOINTS: {
|
|
27
|
+
readonly linkResolve: {
|
|
28
|
+
readonly kind: "http";
|
|
29
|
+
readonly method: "POST";
|
|
30
|
+
readonly path: "/machines/link/resolve";
|
|
31
|
+
};
|
|
32
|
+
readonly linkComplete: {
|
|
33
|
+
readonly kind: "http";
|
|
34
|
+
readonly method: "POST";
|
|
35
|
+
readonly path: "/machines/link/complete";
|
|
36
|
+
};
|
|
37
|
+
readonly connect: {
|
|
38
|
+
readonly kind: "websocket";
|
|
39
|
+
readonly method: "GET";
|
|
40
|
+
readonly path: "/machines/connect";
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export type MachineEndpointName = keyof typeof MACHINE_ENDPOINTS;
|
|
44
|
+
//# sourceMappingURL=endpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sCAAsC;AACtC,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,0BAAuB,CAAC;AAE1D;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB;aAC5B,WAAW;iBAAI,IAAI,EAAE,MAAM;iBAAE,MAAM,EAAE,MAAM;iBAAE,IAAI,EAAE,wBAAwB;;aAC3E,YAAY;iBAAI,IAAI,EAAE,MAAM;iBAAE,MAAM,EAAE,MAAM;iBAAE,IAAI,EAAE,yBAAyB;;aAG7E,OAAO;iBAAI,IAAI,EAAE,WAAW;iBAAE,MAAM,EAAE,KAAK;iBAAE,IAAI,EAAE,mBAAmB;;CAC9D,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Адреса по умолчанию.
|
|
3
|
+
*
|
|
4
|
+
* Собственный домен подключён 17.09.2026. Адреса Render и Vercel продолжают
|
|
5
|
+
* работать, пока не переключён DNS, но по умолчанию клиенты ходят на домен.
|
|
6
|
+
*/
|
|
7
|
+
/** Адрес gateway для REST-вызовов. */
|
|
8
|
+
export const DEFAULT_API_BASE_URL = "https://api.dyrra.dev";
|
|
9
|
+
/** Тот же gateway для исходящего WSS от приложений на Mac. */
|
|
10
|
+
export const DEFAULT_GATEWAY_WS_URL = "wss://api.dyrra.dev";
|
|
11
|
+
/**
|
|
12
|
+
* Страницы подключения Mac обслуживает тот же процесс, что и API:
|
|
13
|
+
* отдельного домена у них пока нет.
|
|
14
|
+
*/
|
|
15
|
+
export const DEFAULT_LINK_BASE_URL = DEFAULT_API_BASE_URL;
|
|
16
|
+
/**
|
|
17
|
+
* Пути, по которым приложение на Mac обращается к gateway (ТЗ 11).
|
|
18
|
+
*
|
|
19
|
+
* Держатся здесь, а не строками в двух местах: путь есть и в Swift,
|
|
20
|
+
* и в регистрации маршрута, и разъехаться они могут молча — снаружи
|
|
21
|
+
* это выглядит как «маршрут не найден».
|
|
22
|
+
*
|
|
23
|
+
* Из этого списка генерируются константы для Swift, а тест gateway
|
|
24
|
+
* сверяет, что каждый путь действительно зарегистрирован нужным методом.
|
|
25
|
+
*/
|
|
26
|
+
export const MACHINE_ENDPOINTS = {
|
|
27
|
+
linkResolve: { kind: "http", method: "POST", path: "/machines/link/resolve" },
|
|
28
|
+
linkComplete: { kind: "http", method: "POST", path: "/machines/link/complete" },
|
|
29
|
+
// Не маршрут Fastify: соединение поднимается обработчиком апгрейда,
|
|
30
|
+
// поэтому обычный запрос по этому пути законно даёт 404.
|
|
31
|
+
connect: { kind: "websocket", method: "GET", path: "/machines/connect" },
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=endpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sCAAsC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D,8DAA8D;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAE1D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE;IAC7E,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE;IAC/E,oEAAoE;IACpE,yDAAyD;IACzD,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE;CAChE,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** Коды ошибок публичного API (ТЗ 8.2). Источник правды для gateway и приложения. */
|
|
3
|
+
export declare const ErrorCode: z.ZodEnum<{
|
|
4
|
+
app_not_frontmost: "app_not_frontmost";
|
|
5
|
+
app_update_required: "app_update_required";
|
|
6
|
+
confirmation_timeout: "confirmation_timeout";
|
|
7
|
+
denied_by_user: "denied_by_user";
|
|
8
|
+
forbidden: "forbidden";
|
|
9
|
+
hidden_app_active: "hidden_app_active";
|
|
10
|
+
internal_error: "internal_error";
|
|
11
|
+
invalid_request: "invalid_request";
|
|
12
|
+
lease_not_active: "lease_not_active";
|
|
13
|
+
link_session_expired: "link_session_expired";
|
|
14
|
+
machine_already_linked_to_other_user: "machine_already_linked_to_other_user";
|
|
15
|
+
machine_busy: "machine_busy";
|
|
16
|
+
machine_offline: "machine_offline";
|
|
17
|
+
machine_paused: "machine_paused";
|
|
18
|
+
machine_unavailable: "machine_unavailable";
|
|
19
|
+
not_found: "not_found";
|
|
20
|
+
payment_required: "payment_required";
|
|
21
|
+
permission_missing: "permission_missing";
|
|
22
|
+
rate_limited: "rate_limited";
|
|
23
|
+
recording_not_shared: "recording_not_shared";
|
|
24
|
+
scope_denied: "scope_denied";
|
|
25
|
+
snapshot_expired: "snapshot_expired";
|
|
26
|
+
timeout: "timeout";
|
|
27
|
+
unauthorized: "unauthorized";
|
|
28
|
+
}>;
|
|
29
|
+
export type ErrorCode = z.infer<typeof ErrorCode>;
|
|
30
|
+
export declare const ApiError: z.ZodObject<{
|
|
31
|
+
error: z.ZodObject<{
|
|
32
|
+
code: z.ZodEnum<{
|
|
33
|
+
app_not_frontmost: "app_not_frontmost";
|
|
34
|
+
app_update_required: "app_update_required";
|
|
35
|
+
confirmation_timeout: "confirmation_timeout";
|
|
36
|
+
denied_by_user: "denied_by_user";
|
|
37
|
+
forbidden: "forbidden";
|
|
38
|
+
hidden_app_active: "hidden_app_active";
|
|
39
|
+
internal_error: "internal_error";
|
|
40
|
+
invalid_request: "invalid_request";
|
|
41
|
+
lease_not_active: "lease_not_active";
|
|
42
|
+
link_session_expired: "link_session_expired";
|
|
43
|
+
machine_already_linked_to_other_user: "machine_already_linked_to_other_user";
|
|
44
|
+
machine_busy: "machine_busy";
|
|
45
|
+
machine_offline: "machine_offline";
|
|
46
|
+
machine_paused: "machine_paused";
|
|
47
|
+
machine_unavailable: "machine_unavailable";
|
|
48
|
+
not_found: "not_found";
|
|
49
|
+
payment_required: "payment_required";
|
|
50
|
+
permission_missing: "permission_missing";
|
|
51
|
+
rate_limited: "rate_limited";
|
|
52
|
+
recording_not_shared: "recording_not_shared";
|
|
53
|
+
scope_denied: "scope_denied";
|
|
54
|
+
snapshot_expired: "snapshot_expired";
|
|
55
|
+
timeout: "timeout";
|
|
56
|
+
unauthorized: "unauthorized";
|
|
57
|
+
}>;
|
|
58
|
+
message: z.ZodString;
|
|
59
|
+
request_id: z.ZodString;
|
|
60
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
61
|
+
}, z.core.$strip>;
|
|
62
|
+
}, z.core.$strip>;
|
|
63
|
+
export type ApiError = z.infer<typeof ApiError>;
|
|
64
|
+
/** HTTP-статус для каждого кода. Единственное место, где задаётся это соответствие. */
|
|
65
|
+
export declare const ERROR_HTTP_STATUS: Record<ErrorCode, number>;
|
|
66
|
+
/** Ошибка домена, которую и gateway, и RPC-слой превращают в ApiError. */
|
|
67
|
+
export declare class DyrraError extends Error {
|
|
68
|
+
readonly code: ErrorCode;
|
|
69
|
+
readonly details?: Record<string, unknown> | undefined;
|
|
70
|
+
constructor(code: ErrorCode, message?: string, details?: Record<string, unknown> | undefined);
|
|
71
|
+
get status(): number;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,qFAAqF;AACrF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;EA2BM,CAAC;AAC7B,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASM,CAAC;AAC5B,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CA2BvD,CAAC;AAEF,0EAA0E;AAC1E,qBAAa,UAAW,SAAQ,KAAK;IAEjC,QAAQ,CAAC,IAAI,EAAE,SAAS;IAExB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAH5C,YACW,IAAI,EAAE,SAAS,EACxB,OAAO,CAAC,EAAE,MAAM,EACP,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA,EAI3C;IACD,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF"}
|