@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/screen.d.ts
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const ScreenshotRequest: z.ZodObject<{
|
|
3
|
+
format: z.ZodDefault<z.ZodEnum<{
|
|
4
|
+
jpeg: "jpeg";
|
|
5
|
+
png: "png";
|
|
6
|
+
}>>;
|
|
7
|
+
quality: z.ZodDefault<z.ZodNumber>;
|
|
8
|
+
maxWidth: z.ZodOptional<z.ZodNumber>;
|
|
9
|
+
response: z.ZodDefault<z.ZodEnum<{
|
|
10
|
+
base64: "base64";
|
|
11
|
+
binary: "binary";
|
|
12
|
+
}>>;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
export type ScreenshotRequest = z.infer<typeof ScreenshotRequest>;
|
|
15
|
+
export declare const Screenshot: z.ZodObject<{
|
|
16
|
+
mime: z.ZodString;
|
|
17
|
+
data: z.ZodString;
|
|
18
|
+
imageWidth: z.ZodNumber;
|
|
19
|
+
imageHeight: z.ZodNumber;
|
|
20
|
+
widthPoints: z.ZodNumber;
|
|
21
|
+
heightPoints: z.ZodNumber;
|
|
22
|
+
scale: z.ZodNumber;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export type Screenshot = z.infer<typeof Screenshot>;
|
|
25
|
+
export declare const UiTreeScope: z.ZodEnum<{
|
|
26
|
+
all_windows: "all_windows";
|
|
27
|
+
frontmost: "frontmost";
|
|
28
|
+
menu_bar: "menu_bar";
|
|
29
|
+
}>;
|
|
30
|
+
export type UiTreeScope = z.infer<typeof UiTreeScope>;
|
|
31
|
+
export declare const UiTreeRequest: z.ZodObject<{
|
|
32
|
+
scope: z.ZodDefault<z.ZodEnum<{
|
|
33
|
+
all_windows: "all_windows";
|
|
34
|
+
frontmost: "frontmost";
|
|
35
|
+
menu_bar: "menu_bar";
|
|
36
|
+
}>>;
|
|
37
|
+
interactiveOnly: z.ZodDefault<z.ZodBoolean>;
|
|
38
|
+
format: z.ZodDefault<z.ZodEnum<{
|
|
39
|
+
compact: "compact";
|
|
40
|
+
json: "json";
|
|
41
|
+
}>>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
export type UiTreeRequest = z.infer<typeof UiTreeRequest>;
|
|
44
|
+
export declare const UiFrame: z.ZodObject<{
|
|
45
|
+
x: z.ZodNumber;
|
|
46
|
+
y: z.ZodNumber;
|
|
47
|
+
w: z.ZodNumber;
|
|
48
|
+
h: z.ZodNumber;
|
|
49
|
+
}, z.core.$strip>;
|
|
50
|
+
export declare const UiElement: z.ZodObject<{
|
|
51
|
+
id: z.ZodString;
|
|
52
|
+
role: z.ZodString;
|
|
53
|
+
subrole: z.ZodOptional<z.ZodString>;
|
|
54
|
+
title: z.ZodOptional<z.ZodString>;
|
|
55
|
+
description: z.ZodOptional<z.ZodString>;
|
|
56
|
+
value: z.ZodOptional<z.ZodString>;
|
|
57
|
+
identifier: z.ZodOptional<z.ZodString>;
|
|
58
|
+
frame: z.ZodObject<{
|
|
59
|
+
x: z.ZodNumber;
|
|
60
|
+
y: z.ZodNumber;
|
|
61
|
+
w: z.ZodNumber;
|
|
62
|
+
h: z.ZodNumber;
|
|
63
|
+
}, z.core.$strip>;
|
|
64
|
+
enabled: z.ZodBoolean;
|
|
65
|
+
focused: z.ZodBoolean;
|
|
66
|
+
actions: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
export type UiElement = z.infer<typeof UiElement>;
|
|
69
|
+
/**
|
|
70
|
+
* Именованный тип обязателен: безымянный вложенный объект quicktype называет
|
|
71
|
+
* `App`, а это имя перекрывает протокол SwiftUI App в приложении.
|
|
72
|
+
*/
|
|
73
|
+
export declare const UiTreeApp: z.ZodObject<{
|
|
74
|
+
bundleId: z.ZodString;
|
|
75
|
+
name: z.ZodString;
|
|
76
|
+
}, z.core.$strip>;
|
|
77
|
+
export type UiTreeApp = z.infer<typeof UiTreeApp>;
|
|
78
|
+
export declare const UiTree: z.ZodObject<{
|
|
79
|
+
snapshotId: z.ZodString;
|
|
80
|
+
app: z.ZodNullable<z.ZodObject<{
|
|
81
|
+
bundleId: z.ZodString;
|
|
82
|
+
name: z.ZodString;
|
|
83
|
+
}, z.core.$strip>>;
|
|
84
|
+
elements: z.ZodArray<z.ZodObject<{
|
|
85
|
+
id: z.ZodString;
|
|
86
|
+
role: z.ZodString;
|
|
87
|
+
subrole: z.ZodOptional<z.ZodString>;
|
|
88
|
+
title: z.ZodOptional<z.ZodString>;
|
|
89
|
+
description: z.ZodOptional<z.ZodString>;
|
|
90
|
+
value: z.ZodOptional<z.ZodString>;
|
|
91
|
+
identifier: z.ZodOptional<z.ZodString>;
|
|
92
|
+
frame: z.ZodObject<{
|
|
93
|
+
x: z.ZodNumber;
|
|
94
|
+
y: z.ZodNumber;
|
|
95
|
+
w: z.ZodNumber;
|
|
96
|
+
h: z.ZodNumber;
|
|
97
|
+
}, z.core.$strip>;
|
|
98
|
+
enabled: z.ZodBoolean;
|
|
99
|
+
focused: z.ZodBoolean;
|
|
100
|
+
actions: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
101
|
+
}, z.core.$strip>>;
|
|
102
|
+
compact: z.ZodOptional<z.ZodString>;
|
|
103
|
+
truncated: z.ZodDefault<z.ZodBoolean>;
|
|
104
|
+
}, z.core.$strip>;
|
|
105
|
+
export type UiTree = z.infer<typeof UiTree>;
|
|
106
|
+
/** Пределы обхода дерева (ТЗ 7.12), чтобы не вешать сложные окна. */
|
|
107
|
+
export declare const UI_TREE_LIMITS: {
|
|
108
|
+
readonly maxDepth: 25;
|
|
109
|
+
readonly maxElements: 1500;
|
|
110
|
+
readonly totalTimeoutMs: 2000;
|
|
111
|
+
readonly perRequestTimeoutSec: 0.25;
|
|
112
|
+
readonly snapshotTtlSec: 30;
|
|
113
|
+
};
|
|
114
|
+
/** Роли, считающиеся интерактивными при interactiveOnly=true. */
|
|
115
|
+
export declare const INTERACTIVE_ROLES: readonly ["AXButton", "AXTextField", "AXTextArea", "AXSecureTextField", "AXLink", "AXCheckBox", "AXRadioButton", "AXPopUpButton", "AXMenuItem", "AXMenuButton", "AXComboBox", "AXSlider", "AXTab", "AXDisclosureTriangle", "AXSegmentedControl"];
|
|
116
|
+
//# sourceMappingURL=screen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;iBAOM,CAAC;AACrC,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,UAAU;;;;;;;;iBAWM,CAAC;AAC9B,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAIpD,eAAO,MAAM,WAAW;;;;EAEM,CAAC;AAC/B,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,aAAa;;;;;;;;;;;iBAMM,CAAC;AACjC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,OAAO;;;;;iBAE0E,CAAC;AAE/F,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;iBAeM,CAAC;AAC7B,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,SAAS;;;iBAEM,CAAC;AAC7B,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQM,CAAC;AAC1B,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAE5C,qEAAqE;AACrE,eAAO,MAAM,cAAc;aACzB,QAAQ,EAAE,EAAE;aACZ,WAAW,EAAE,IAAI;aACjB,cAAc,EAAE,IAAI;aACpB,oBAAoB,EAAE,IAAI;aAC1B,cAAc,EAAE,EAAE;CACV,CAAC;AAEX,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,YAC5B,UAAU,EACV,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,UAAU,EACV,OAAO,EACP,sBAAsB,EACtB,oBAAoB,CACZ,CAAC"}
|
package/dist/screen.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/* ── Скриншот (ТЗ 8.4) ────────────────────────────────────────────────── */
|
|
3
|
+
export const ScreenshotRequest = z
|
|
4
|
+
.object({
|
|
5
|
+
format: z.enum(["jpeg", "png"]).default("jpeg"),
|
|
6
|
+
quality: z.number().int().min(1).max(100).default(80),
|
|
7
|
+
maxWidth: z.number().int().min(64).max(8192).optional(),
|
|
8
|
+
response: z.enum(["base64", "binary"]).default("base64"),
|
|
9
|
+
})
|
|
10
|
+
.meta({ id: "ScreenshotRequest" });
|
|
11
|
+
export const Screenshot = z
|
|
12
|
+
.object({
|
|
13
|
+
mime: z.string(),
|
|
14
|
+
data: z.string().describe("base64, если response=base64"),
|
|
15
|
+
imageWidth: z.number().int().positive(),
|
|
16
|
+
imageHeight: z.number().int().positive(),
|
|
17
|
+
widthPoints: z.number().int().positive(),
|
|
18
|
+
heightPoints: z.number().int().positive(),
|
|
19
|
+
/** imageWidth / widthPoints. Координаты действий умножать НЕ надо: API всегда в точках. */
|
|
20
|
+
scale: z.number().positive(),
|
|
21
|
+
})
|
|
22
|
+
.meta({ id: "Screenshot" });
|
|
23
|
+
/* ── Структура экрана, ui_tree (ТЗ 7.12, 8.8) ─────────────────────────── */
|
|
24
|
+
export const UiTreeScope = z
|
|
25
|
+
.enum(["frontmost", "all_windows", "menu_bar"])
|
|
26
|
+
.meta({ id: "UiTreeScope" });
|
|
27
|
+
export const UiTreeRequest = z
|
|
28
|
+
.object({
|
|
29
|
+
scope: UiTreeScope.default("frontmost"),
|
|
30
|
+
interactiveOnly: z.boolean().default(true),
|
|
31
|
+
format: z.enum(["json", "compact"]).default("compact"),
|
|
32
|
+
})
|
|
33
|
+
.meta({ id: "UiTreeRequest" });
|
|
34
|
+
export const UiFrame = z
|
|
35
|
+
.object({ x: z.number(), y: z.number(), w: z.number(), h: z.number() })
|
|
36
|
+
.meta({ id: "UiFrame", description: "Глобальные координаты в точках, начало — левый верх" });
|
|
37
|
+
export const UiElement = z
|
|
38
|
+
.object({
|
|
39
|
+
id: z.string(),
|
|
40
|
+
role: z.string(),
|
|
41
|
+
subrole: z.string().optional(),
|
|
42
|
+
title: z.string().optional(),
|
|
43
|
+
description: z.string().optional(),
|
|
44
|
+
/** Обрезано до 200 символов. НИКОГДА не заполняется для AXSecureTextField (ТЗ 3.4). */
|
|
45
|
+
value: z.string().max(200).optional(),
|
|
46
|
+
identifier: z.string().optional(),
|
|
47
|
+
frame: UiFrame,
|
|
48
|
+
enabled: z.boolean(),
|
|
49
|
+
focused: z.boolean(),
|
|
50
|
+
actions: z.array(z.string()).default([]),
|
|
51
|
+
})
|
|
52
|
+
.meta({ id: "UiElement" });
|
|
53
|
+
/**
|
|
54
|
+
* Именованный тип обязателен: безымянный вложенный объект quicktype называет
|
|
55
|
+
* `App`, а это имя перекрывает протокол SwiftUI App в приложении.
|
|
56
|
+
*/
|
|
57
|
+
export const UiTreeApp = z
|
|
58
|
+
.object({ bundleId: z.string(), name: z.string() })
|
|
59
|
+
.meta({ id: "UiTreeApp" });
|
|
60
|
+
export const UiTree = z
|
|
61
|
+
.object({
|
|
62
|
+
snapshotId: z.string(),
|
|
63
|
+
app: UiTreeApp.nullable(),
|
|
64
|
+
elements: z.array(UiElement),
|
|
65
|
+
compact: z.string().optional(),
|
|
66
|
+
truncated: z.boolean().default(false),
|
|
67
|
+
})
|
|
68
|
+
.meta({ id: "UiTree" });
|
|
69
|
+
/** Пределы обхода дерева (ТЗ 7.12), чтобы не вешать сложные окна. */
|
|
70
|
+
export const UI_TREE_LIMITS = {
|
|
71
|
+
maxDepth: 25,
|
|
72
|
+
maxElements: 1500,
|
|
73
|
+
totalTimeoutMs: 2000,
|
|
74
|
+
perRequestTimeoutSec: 0.25,
|
|
75
|
+
snapshotTtlSec: 30,
|
|
76
|
+
};
|
|
77
|
+
/** Роли, считающиеся интерактивными при interactiveOnly=true. */
|
|
78
|
+
export const INTERACTIVE_ROLES = [
|
|
79
|
+
"AXButton",
|
|
80
|
+
"AXTextField",
|
|
81
|
+
"AXTextArea",
|
|
82
|
+
"AXSecureTextField",
|
|
83
|
+
"AXLink",
|
|
84
|
+
"AXCheckBox",
|
|
85
|
+
"AXRadioButton",
|
|
86
|
+
"AXPopUpButton",
|
|
87
|
+
"AXMenuItem",
|
|
88
|
+
"AXMenuButton",
|
|
89
|
+
"AXComboBox",
|
|
90
|
+
"AXSlider",
|
|
91
|
+
"AXTab",
|
|
92
|
+
"AXDisclosureTriangle",
|
|
93
|
+
"AXSegmentedControl",
|
|
94
|
+
];
|
|
95
|
+
//# sourceMappingURL=screen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen.js","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"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"}
|
package/dist/system.d.ts
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const ShellRequest: z.ZodObject<{
|
|
3
|
+
command: z.ZodString;
|
|
4
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
5
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export type ShellRequest = z.infer<typeof ShellRequest>;
|
|
9
|
+
export declare const ShellResult: z.ZodObject<{
|
|
10
|
+
exitCode: z.ZodNumber;
|
|
11
|
+
stdout: z.ZodString;
|
|
12
|
+
stderr: z.ZodString;
|
|
13
|
+
durationMs: z.ZodNumber;
|
|
14
|
+
truncated: z.ZodBoolean;
|
|
15
|
+
timedOut: z.ZodBoolean;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
export type ShellResult = z.infer<typeof ShellResult>;
|
|
18
|
+
export declare const SHELL_LIMITS: {
|
|
19
|
+
readonly defaultTimeoutMs: 60000;
|
|
20
|
+
readonly maxTimeoutMs: 900000;
|
|
21
|
+
readonly maxOutputBytesPerStream: number;
|
|
22
|
+
readonly maxConcurrent: 4;
|
|
23
|
+
readonly sigtermGraceMs: 5000;
|
|
24
|
+
};
|
|
25
|
+
export declare const FileUploadBegin: z.ZodObject<{
|
|
26
|
+
path: z.ZodString;
|
|
27
|
+
sizeBytes: z.ZodNumber;
|
|
28
|
+
sha256: z.ZodString;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
export type FileUploadBegin = z.infer<typeof FileUploadBegin>;
|
|
31
|
+
export declare const FileStat: z.ZodObject<{
|
|
32
|
+
path: z.ZodString;
|
|
33
|
+
sizeBytes: z.ZodNumber;
|
|
34
|
+
sha256: z.ZodString;
|
|
35
|
+
modifiedAt: z.ZodString;
|
|
36
|
+
}, z.core.$strip>;
|
|
37
|
+
export type FileStat = z.infer<typeof FileStat>;
|
|
38
|
+
export declare const FILE_LIMITS: {
|
|
39
|
+
readonly maxBytes: number;
|
|
40
|
+
readonly chunkBytes: number;
|
|
41
|
+
};
|
|
42
|
+
export declare const AppRef: z.ZodObject<{
|
|
43
|
+
bundleId: z.ZodOptional<z.ZodString>;
|
|
44
|
+
name: z.ZodOptional<z.ZodString>;
|
|
45
|
+
}, z.core.$strip>;
|
|
46
|
+
export type AppRef = z.infer<typeof AppRef>;
|
|
47
|
+
export declare const RunningApp: z.ZodObject<{
|
|
48
|
+
bundleId: z.ZodString;
|
|
49
|
+
name: z.ZodString;
|
|
50
|
+
pid: z.ZodNumber;
|
|
51
|
+
active: z.ZodBoolean;
|
|
52
|
+
}, z.core.$strip>;
|
|
53
|
+
export type RunningApp = z.infer<typeof RunningApp>;
|
|
54
|
+
export declare const WindowInfo: z.ZodObject<{
|
|
55
|
+
title: z.ZodString;
|
|
56
|
+
bundleId: z.ZodString;
|
|
57
|
+
appName: z.ZodString;
|
|
58
|
+
frame: z.ZodObject<{
|
|
59
|
+
x: z.ZodNumber;
|
|
60
|
+
y: z.ZodNumber;
|
|
61
|
+
w: z.ZodNumber;
|
|
62
|
+
h: z.ZodNumber;
|
|
63
|
+
}, z.core.$strip>;
|
|
64
|
+
active: z.ZodBoolean;
|
|
65
|
+
}, z.core.$strip>;
|
|
66
|
+
export type WindowInfo = z.infer<typeof WindowInfo>;
|
|
67
|
+
export declare const OpenUrlRequest: z.ZodObject<{
|
|
68
|
+
url: z.ZodString;
|
|
69
|
+
}, z.core.$strip>;
|
|
70
|
+
export type OpenUrlRequest = z.infer<typeof OpenUrlRequest>;
|
|
71
|
+
export declare const ClipboardText: z.ZodObject<{
|
|
72
|
+
text: z.ZodString;
|
|
73
|
+
}, z.core.$strip>;
|
|
74
|
+
export type ClipboardText = z.infer<typeof ClipboardText>;
|
|
75
|
+
export declare const CommandStatus: z.ZodEnum<{
|
|
76
|
+
canceled: "canceled";
|
|
77
|
+
completed: "completed";
|
|
78
|
+
expired: "expired";
|
|
79
|
+
failed: "failed";
|
|
80
|
+
queued: "queued";
|
|
81
|
+
running: "running";
|
|
82
|
+
}>;
|
|
83
|
+
export type CommandStatus = z.infer<typeof CommandStatus>;
|
|
84
|
+
export declare const QueuedCommand: z.ZodObject<{
|
|
85
|
+
commandId: z.ZodString;
|
|
86
|
+
status: z.ZodEnum<{
|
|
87
|
+
canceled: "canceled";
|
|
88
|
+
completed: "completed";
|
|
89
|
+
expired: "expired";
|
|
90
|
+
failed: "failed";
|
|
91
|
+
queued: "queued";
|
|
92
|
+
running: "running";
|
|
93
|
+
}>;
|
|
94
|
+
expiresAt: z.ZodString;
|
|
95
|
+
result: z.ZodOptional<z.ZodUnknown>;
|
|
96
|
+
error: z.ZodOptional<z.ZodUnknown>;
|
|
97
|
+
}, z.core.$strip>;
|
|
98
|
+
export type QueuedCommand = z.infer<typeof QueuedCommand>;
|
|
99
|
+
/** Типы команд, которые имеет смысл ставить в очередь (скриншот и ui_tree — нет). */
|
|
100
|
+
export declare const QUEUEABLE_COMMAND_TYPES: readonly ["actions", "shell", "files.upload", "apps.open", "apps.activate", "urls.open", "clipboard.set"];
|
|
101
|
+
//# sourceMappingURL=system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../src/system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;iBAOM,CAAC;AAChC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,WAAW;;;;;;;iBASM,CAAC;AAC/B,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,YAAY;aACvB,gBAAgB,EAAE,KAAM;aACxB,YAAY,EAAE,MAAO;aACrB,uBAAuB;aACvB,aAAa,EAAE,CAAC;aAChB,cAAc,EAAE,IAAI;CACZ,CAAC;AAIX,eAAO,MAAM,eAAe;;;;iBAMM,CAAC;AACnC,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,QAAQ;;;;;iBAOM,CAAC;AAC5B,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,WAAW;aACtB,QAAQ;aACR,UAAU;CACF,CAAC;AAIX,eAAO,MAAM,MAAM;;;iBAGM,CAAC;AAC1B,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAE5C,eAAO,MAAM,UAAU;;;;;iBAOM,CAAC;AAC9B,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,UAAU;;;;;;;;;;;iBAQM,CAAC;AAC9B,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,cAAc;;iBAEM,CAAC;AAClC,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,aAAa;;iBAEM,CAAC;AACjC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAI1D,eAAO,MAAM,aAAa;;;;;;;EAEM,CAAC;AACjC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,aAAa;;;;;;;;;;;;;iBAQM,CAAC;AACjC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,qFAAqF;AACrF,eAAO,MAAM,uBAAuB,YAClC,SAAS,EACT,OAAO,EACP,cAAc,EACd,WAAW,EACX,eAAe,EACf,WAAW,EACX,eAAe,CACP,CAAC"}
|
package/dist/system.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/* ── Терминал (ТЗ 7.5, право shell) ───────────────────────────────────── */
|
|
3
|
+
export const ShellRequest = z
|
|
4
|
+
.object({
|
|
5
|
+
command: z.string().min(1).max(10_000),
|
|
6
|
+
cwd: z.string().optional(),
|
|
7
|
+
timeoutMs: z.number().int().min(1000).max(900_000).default(60_000),
|
|
8
|
+
env: z.record(z.string(), z.string()).optional(),
|
|
9
|
+
})
|
|
10
|
+
.meta({ id: "ShellRequest" });
|
|
11
|
+
export const ShellResult = z
|
|
12
|
+
.object({
|
|
13
|
+
exitCode: z.number().int(),
|
|
14
|
+
stdout: z.string(),
|
|
15
|
+
stderr: z.string(),
|
|
16
|
+
durationMs: z.number().int().nonnegative(),
|
|
17
|
+
truncated: z.boolean(),
|
|
18
|
+
timedOut: z.boolean(),
|
|
19
|
+
})
|
|
20
|
+
.meta({ id: "ShellResult" });
|
|
21
|
+
export const SHELL_LIMITS = {
|
|
22
|
+
defaultTimeoutMs: 60_000,
|
|
23
|
+
maxTimeoutMs: 900_000,
|
|
24
|
+
maxOutputBytesPerStream: 1024 * 1024,
|
|
25
|
+
maxConcurrent: 4,
|
|
26
|
+
sigtermGraceMs: 5000,
|
|
27
|
+
};
|
|
28
|
+
/* ── Файлы (ТЗ 7.5, право files) ──────────────────────────────────────── */
|
|
29
|
+
export const FileUploadBegin = z
|
|
30
|
+
.object({
|
|
31
|
+
path: z.string().min(1),
|
|
32
|
+
sizeBytes: z.number().int().min(0).max(100 * 1024 * 1024),
|
|
33
|
+
sha256: z.string().length(64),
|
|
34
|
+
})
|
|
35
|
+
.meta({ id: "FileUploadBegin" });
|
|
36
|
+
export const FileStat = z
|
|
37
|
+
.object({
|
|
38
|
+
path: z.string(),
|
|
39
|
+
sizeBytes: z.number().int().nonnegative(),
|
|
40
|
+
sha256: z.string(),
|
|
41
|
+
modifiedAt: z.string(),
|
|
42
|
+
})
|
|
43
|
+
.meta({ id: "FileStat" });
|
|
44
|
+
export const FILE_LIMITS = {
|
|
45
|
+
maxBytes: 100 * 1024 * 1024,
|
|
46
|
+
chunkBytes: 1024 * 1024,
|
|
47
|
+
};
|
|
48
|
+
/* ── Нативные действия (ТЗ 7.15, 8.9) ─────────────────────────────────── */
|
|
49
|
+
export const AppRef = z
|
|
50
|
+
.object({ bundleId: z.string().optional(), name: z.string().optional() })
|
|
51
|
+
.refine((v) => Boolean(v.bundleId ?? v.name), { message: "нужен bundleId или name" })
|
|
52
|
+
.meta({ id: "AppRef" });
|
|
53
|
+
export const RunningApp = z
|
|
54
|
+
.object({
|
|
55
|
+
bundleId: z.string(),
|
|
56
|
+
name: z.string(),
|
|
57
|
+
pid: z.number().int(),
|
|
58
|
+
active: z.boolean(),
|
|
59
|
+
})
|
|
60
|
+
.meta({ id: "RunningApp" });
|
|
61
|
+
export const WindowInfo = z
|
|
62
|
+
.object({
|
|
63
|
+
title: z.string(),
|
|
64
|
+
bundleId: z.string(),
|
|
65
|
+
appName: z.string(),
|
|
66
|
+
frame: z.object({ x: z.number(), y: z.number(), w: z.number(), h: z.number() }),
|
|
67
|
+
active: z.boolean(),
|
|
68
|
+
})
|
|
69
|
+
.meta({ id: "WindowInfo" });
|
|
70
|
+
export const OpenUrlRequest = z
|
|
71
|
+
.object({ url: z.string().url().max(4000) })
|
|
72
|
+
.meta({ id: "OpenUrlRequest" });
|
|
73
|
+
export const ClipboardText = z
|
|
74
|
+
.object({ text: z.string().max(1024 * 1024) })
|
|
75
|
+
.meta({ id: "ClipboardText" });
|
|
76
|
+
/* ── Очередь команд (ТЗ 7.16, 8.10) ───────────────────────────────────── */
|
|
77
|
+
export const CommandStatus = z
|
|
78
|
+
.enum(["queued", "running", "completed", "failed", "expired", "canceled"])
|
|
79
|
+
.meta({ id: "CommandStatus" });
|
|
80
|
+
export const QueuedCommand = z
|
|
81
|
+
.object({
|
|
82
|
+
commandId: z.string(),
|
|
83
|
+
status: CommandStatus,
|
|
84
|
+
expiresAt: z.string(),
|
|
85
|
+
result: z.unknown().optional(),
|
|
86
|
+
error: z.unknown().optional(),
|
|
87
|
+
})
|
|
88
|
+
.meta({ id: "QueuedCommand" });
|
|
89
|
+
/** Типы команд, которые имеет смысл ставить в очередь (скриншот и ui_tree — нет). */
|
|
90
|
+
export const QUEUEABLE_COMMAND_TYPES = [
|
|
91
|
+
"actions",
|
|
92
|
+
"shell",
|
|
93
|
+
"files.upload",
|
|
94
|
+
"apps.open",
|
|
95
|
+
"apps.activate",
|
|
96
|
+
"urls.open",
|
|
97
|
+
"clipboard.set",
|
|
98
|
+
];
|
|
99
|
+
//# sourceMappingURL=system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../src/system.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dyrra/protocol",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"zod": "4.6.2"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"quicktype": "26.0.0",
|
|
18
|
+
"@types/node": "24.10.1",
|
|
19
|
+
"tsx": "4.23.13"
|
|
20
|
+
},
|
|
21
|
+
"description": "Схемы протокола Dyrra: единый API к Mac для ИИ-агентов",
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "git+https://github.com/ceodaredevil/dyrra.git",
|
|
26
|
+
"directory": "packages/protocol"
|
|
27
|
+
},
|
|
28
|
+
"homepage": "https://github.com/ceodaredevil/dyrra",
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/ceodaredevil/dyrra/issues"
|
|
31
|
+
},
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist"
|
|
37
|
+
],
|
|
38
|
+
"keywords": [
|
|
39
|
+
"mac",
|
|
40
|
+
"macos",
|
|
41
|
+
"ai-agent",
|
|
42
|
+
"computer-use",
|
|
43
|
+
"mcp"
|
|
44
|
+
],
|
|
45
|
+
"scripts": {
|
|
46
|
+
"build": "tsx scripts/codegen.ts && tsc -p tsconfig.build.json",
|
|
47
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
48
|
+
"lint": "oxlint src",
|
|
49
|
+
"test": "vitest run",
|
|
50
|
+
"codegen": "tsx scripts/codegen.ts",
|
|
51
|
+
"build:types": "tsc -p tsconfig.build.json"
|
|
52
|
+
}
|
|
53
|
+
}
|