@gtkx/mcp 1.0.0-rc.3 → 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 +8 -9
- package/dist/internal.d.ts +2 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -2
- package/dist/internal.js.map +1 -1
- package/dist/protocol/errors.d.ts +3 -1
- package/dist/protocol/errors.d.ts.map +1 -1
- package/dist/protocol/errors.js +9 -1
- package/dist/protocol/errors.js.map +1 -1
- package/dist/protocol/schemas.d.ts +18 -4
- package/dist/protocol/schemas.d.ts.map +1 -1
- package/dist/protocol/schemas.js +10 -3
- package/dist/protocol/schemas.js.map +1 -1
- package/dist/reference.d.ts +17 -3
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js +123 -64
- package/dist/reference.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +120 -57
- package/dist/server.js.map +1 -1
- package/dist/socket-server.d.ts +10 -1
- package/dist/socket-server.d.ts.map +1 -1
- package/dist/socket-server.js +234 -33
- package/dist/socket-server.js.map +1 -1
- package/dist/transport.d.ts +1 -1
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js.map +1 -1
- package/package.json +4 -4
- package/src/internal.ts +4 -0
- package/src/protocol/errors.ts +14 -0
- package/src/protocol/schemas.ts +32 -6
- package/src/reference.ts +206 -83
- package/src/server.ts +162 -72
- package/src/socket-server.ts +309 -40
- package/src/transport.ts +0 -1
package/README.md
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
8
|
The React framework for Linux.<br />
|
|
9
|
-
|
|
9
|
+
Write native Linux applications with React and TypeScript.
|
|
10
|
+
Built on the GNOME stack and standard web tooling.
|
|
10
11
|
</p>
|
|
11
12
|
|
|
12
13
|
<p align="center">
|
|
@@ -20,15 +21,13 @@
|
|
|
20
21
|
|
|
21
22
|
<p align="center">
|
|
22
23
|
<a href="https://gtkx.dev">Homepage</a> ·
|
|
23
|
-
<a href="https://gtkx.dev/guide/
|
|
24
|
+
<a href="https://gtkx.dev/guide/getting-started">Documentation</a> ·
|
|
24
25
|
<a href="https://github.com/gtkx-org/gtkx/tree/main/examples">Examples</a> ·
|
|
25
26
|
<a href="https://github.com/gtkx-org/gtkx/blob/main/CONTRIBUTING.md">Contributing</a>
|
|
26
27
|
</p>
|
|
27
28
|
|
|
28
29
|
---
|
|
29
30
|
|
|
30
|
-
GTKX generates fully typed bindings for the entire GTK4 and Adwaita surface directly from GObject-Introspection. On top of those bindings you get the React programming model: components and hooks driving GObject instances, with Fast Refresh while you develop.
|
|
31
|
-
|
|
32
31
|
<p align="center">
|
|
33
32
|
<img src="https://raw.githubusercontent.com/gtkx-org/gtkx/main/examples/tutorial/assets/screenshot.png" alt="The Tasks app: an Adwaita window with a sidebar of smart views and colored lists on the left, and a boxed task list on the right." />
|
|
34
33
|
</p>
|
|
@@ -109,7 +108,7 @@ React Native and similar frameworks hide the native toolkit so one API can run e
|
|
|
109
108
|
|
|
110
109
|
### Why Node.js, and why generated bindings
|
|
111
110
|
|
|
112
|
-
GTKX runs on Node.js, which puts native modules, the npm ecosystem, and the tooling built for Node.js APIs within reach. GJS is GNOME's own runtime, built on SpiderMonkey rather than V8; node-gtk runs on Node.js but is lightly maintained, on the older nan/V8 ABI rather than N-API, and still centered on GTK3. The [
|
|
111
|
+
GTKX runs on Node.js, which puts native modules, the npm ecosystem, and the tooling built for Node.js APIs within reach. GJS is GNOME's own runtime, built on SpiderMonkey rather than V8; node-gtk runs on Node.js but is lightly maintained, on the older nan/V8 ABI rather than N-API, and still centered on GTK3. The [Why GTKX guide](https://gtkx.dev/guide/why-gtkx) covers what running on Node.js means day to day.
|
|
113
112
|
|
|
114
113
|
GTKX generates the TypeScript types and the native FFI calls from the same GObject-Introspection data, so the types cannot drift from the calls they back. Codegen covers the whole GTK4 and Adwaita surface.
|
|
115
114
|
|
|
@@ -122,10 +121,10 @@ GTKX is Linux-only and needs Node.js 24 or later. See [Requirements](#requiremen
|
|
|
122
121
|
Scaffold a new app with the `create-gtkx` initializer:
|
|
123
122
|
|
|
124
123
|
```sh
|
|
125
|
-
npm create gtkx
|
|
124
|
+
npm create gtkx
|
|
126
125
|
```
|
|
127
126
|
|
|
128
|
-
The same command works with other package managers: `pnpm create gtkx
|
|
127
|
+
The same command works with other package managers: `pnpm create gtkx` or `yarn create gtkx`.
|
|
129
128
|
|
|
130
129
|
Then run your new app:
|
|
131
130
|
|
|
@@ -146,7 +145,7 @@ The documentation at **[gtkx.dev](https://gtkx.dev)** includes a step-by-step tu
|
|
|
146
145
|
|
|
147
146
|
GTKX is Linux-only. You need:
|
|
148
147
|
|
|
149
|
-
- Linux with the GTK4 (4.20 or later), Adwaita (1.8 or later)
|
|
148
|
+
- Linux with the GTK4 (4.20 or later) and GLib development libraries, plus Adwaita (1.8 or later) once your project binds `Adw-1`
|
|
150
149
|
- Node.js 24 or later
|
|
151
150
|
|
|
152
151
|
The `@gtkx/native` addon ships prebuilt for x64 and arm64 glibc Linux; other targets need to build it from the GTKX repository, which requires a Rust toolchain.
|
|
@@ -162,7 +161,7 @@ Explore the [example apps](https://github.com/gtkx-org/gtkx/tree/main/examples):
|
|
|
162
161
|
|
|
163
162
|
## Status
|
|
164
163
|
|
|
165
|
-
GTKX 1.0 is
|
|
164
|
+
GTKX 1.0 is released.
|
|
166
165
|
|
|
167
166
|
## Contributing
|
|
168
167
|
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ErrorCode, invalidRequestError, methodNotFoundError, ProtocolError, widgetNotFoundError, } from "./protocol/errors.js";
|
|
2
|
-
export { DEFAULT_SOCKET_PATH, type ParamsSchema, type Request, type SerializedWidget, type ServerInitiatedMethod, type ServerRequestParams, ServerRequestParamsSchemas, } from "./protocol/schemas.js";
|
|
1
|
+
export { ErrorCode, invalidRequestError, methodNotFoundError, ProtocolError, propertyNotFoundError, widgetNotFoundError, } from "./protocol/errors.js";
|
|
2
|
+
export { DEFAULT_SOCKET_PATH, DEFAULT_SUBTREE_DEPTH, MAX_SUBTREE_WIDGETS, type ParamsSchema, type Request, type SerializedProperty, type SerializedWidget, type ServerInitiatedMethod, type ServerRequestParams, ServerRequestParamsSchemas, } from "./protocol/schemas.js";
|
|
3
3
|
export { ProtocolConnection } from "./transport.js";
|
|
4
4
|
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACH,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,0BAA0B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACH,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,0BAA0B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/internal.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ErrorCode, invalidRequestError, methodNotFoundError, ProtocolError, widgetNotFoundError, } from "./protocol/errors.js";
|
|
2
|
-
export { DEFAULT_SOCKET_PATH, ServerRequestParamsSchemas, } from "./protocol/schemas.js";
|
|
1
|
+
export { ErrorCode, invalidRequestError, methodNotFoundError, ProtocolError, propertyNotFoundError, widgetNotFoundError, } from "./protocol/errors.js";
|
|
2
|
+
export { DEFAULT_SOCKET_PATH, DEFAULT_SUBTREE_DEPTH, MAX_SUBTREE_WIDGETS, ServerRequestParamsSchemas, } from "./protocol/schemas.js";
|
|
3
3
|
export { ProtocolConnection } from "./transport.js";
|
|
4
4
|
//# sourceMappingURL=internal.js.map
|
package/dist/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACH,mBAAmB,
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACH,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EAOnB,0BAA0B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["export {\n ErrorCode,\n invalidRequestError,\n methodNotFoundError,\n ProtocolError,\n propertyNotFoundError,\n widgetNotFoundError,\n} from \"./protocol/errors.js\";\nexport {\n DEFAULT_SOCKET_PATH,\n DEFAULT_SUBTREE_DEPTH,\n MAX_SUBTREE_WIDGETS,\n type ParamsSchema,\n type Request,\n type SerializedProperty,\n type SerializedWidget,\n type ServerInitiatedMethod,\n type ServerRequestParams,\n ServerRequestParamsSchemas,\n} from \"./protocol/schemas.js\";\nexport { ProtocolConnection } from \"./transport.js\";\n"]}
|
|
@@ -8,12 +8,14 @@ declare const ErrorCode: {
|
|
|
8
8
|
readonly REQUEST_TIMEOUT: 1005;
|
|
9
9
|
readonly INVALID_REQUEST: 1006;
|
|
10
10
|
readonly METHOD_NOT_FOUND: 1007;
|
|
11
|
+
readonly PROPERTY_NOT_FOUND: 1008;
|
|
11
12
|
};
|
|
12
13
|
declare function isErrorCode(code: number): code is ErrorCode;
|
|
13
14
|
declare function noAppConnectedError(): ProtocolError;
|
|
14
15
|
declare function appNotFoundError(applicationId: string): ProtocolError;
|
|
15
16
|
declare function connectionWriteFailedError(applicationId: string): ProtocolError;
|
|
16
17
|
declare function widgetNotFoundError(widgetId: string): ProtocolError;
|
|
18
|
+
declare function propertyNotFoundError(widgetType: string, property: string, readableProperties: string[]): ProtocolError;
|
|
17
19
|
declare function requestTimeoutError(timeout: number): ProtocolError;
|
|
18
20
|
declare function invalidRequestError(reason: string): ProtocolError;
|
|
19
21
|
declare function methodNotFoundError(method: string): ProtocolError;
|
|
@@ -27,5 +29,5 @@ declare class ProtocolError extends Error {
|
|
|
27
29
|
data?: unknown;
|
|
28
30
|
};
|
|
29
31
|
}
|
|
30
|
-
export { ErrorCode, isErrorCode, noAppConnectedError, appNotFoundError, connectionWriteFailedError, widgetNotFoundError, requestTimeoutError, invalidRequestError, methodNotFoundError, ProtocolError, };
|
|
32
|
+
export { ErrorCode, isErrorCode, noAppConnectedError, appNotFoundError, connectionWriteFailedError, widgetNotFoundError, propertyNotFoundError, requestTimeoutError, invalidRequestError, methodNotFoundError, ProtocolError, };
|
|
31
33
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/protocol/errors.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAE5D,QAAA,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/protocol/errors.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAE5D,QAAA,MAAM,SAAS;;;;;;;;;;CAUL,CAAC;AAEX,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,SAAS,CAEpD;AAED,iBAAS,mBAAmB,IAAI,aAAa,CAM5C;AAED,iBAAS,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,CAE9D;AAED,iBAAS,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,CAMxE;AAED,iBAAS,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAE5D;AAED,iBAAS,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,aAAa,CAUhH;AAED,iBAAS,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAE3D;AAED,iBAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAE1D;AAED,iBAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAE1D;AAED,cAAM,aAAc,SAAQ,KAAK;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEH,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;IAO5D,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE;CAOrE;AAED,OAAO,EACH,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GAChB,CAAC"}
|
package/dist/protocol/errors.js
CHANGED
|
@@ -7,6 +7,7 @@ const ErrorCode = {
|
|
|
7
7
|
REQUEST_TIMEOUT: 1005,
|
|
8
8
|
INVALID_REQUEST: 1006,
|
|
9
9
|
METHOD_NOT_FOUND: 1007,
|
|
10
|
+
PROPERTY_NOT_FOUND: 1008,
|
|
10
11
|
};
|
|
11
12
|
function isErrorCode(code) {
|
|
12
13
|
return Object.values(ErrorCode).includes(code);
|
|
@@ -23,6 +24,13 @@ function connectionWriteFailedError(applicationId) {
|
|
|
23
24
|
function widgetNotFoundError(widgetId) {
|
|
24
25
|
return new ProtocolError(ErrorCode.WIDGET_NOT_FOUND, `Widget '${widgetId}' not found`, { widgetId });
|
|
25
26
|
}
|
|
27
|
+
function propertyNotFoundError(widgetType, property, readableProperties) {
|
|
28
|
+
return new ProtocolError(ErrorCode.PROPERTY_NOT_FOUND, `${widgetType} has no readable property '${property}'`, {
|
|
29
|
+
widgetType,
|
|
30
|
+
property,
|
|
31
|
+
hint: `Readable properties of ${widgetType}: ${readableProperties.join(", ")}`,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
26
34
|
function requestTimeoutError(timeout) {
|
|
27
35
|
return new ProtocolError(ErrorCode.REQUEST_TIMEOUT, `Request timed out after ${String(timeout)}ms`, { timeout });
|
|
28
36
|
}
|
|
@@ -49,5 +57,5 @@ class ProtocolError extends Error {
|
|
|
49
57
|
};
|
|
50
58
|
}
|
|
51
59
|
}
|
|
52
|
-
export { ErrorCode, isErrorCode, noAppConnectedError, appNotFoundError, connectionWriteFailedError, widgetNotFoundError, requestTimeoutError, invalidRequestError, methodNotFoundError, ProtocolError, };
|
|
60
|
+
export { ErrorCode, isErrorCode, noAppConnectedError, appNotFoundError, connectionWriteFailedError, widgetNotFoundError, propertyNotFoundError, requestTimeoutError, invalidRequestError, methodNotFoundError, ProtocolError, };
|
|
53
61
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/protocol/errors.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG;IACd,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,IAAI;IACtB,aAAa,EAAE,IAAI;IACnB,gBAAgB,EAAE,IAAI;IACtB,uBAAuB,EAAE,IAAI;IAC7B,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/protocol/errors.ts"],"names":[],"mappings":"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","sourcesContent":["type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n\nconst ErrorCode = {\n INTERNAL_ERROR: 1000,\n NO_APP_CONNECTED: 1001,\n APP_NOT_FOUND: 1002,\n WIDGET_NOT_FOUND: 1003,\n CONNECTION_WRITE_FAILED: 1004,\n REQUEST_TIMEOUT: 1005,\n INVALID_REQUEST: 1006,\n METHOD_NOT_FOUND: 1007,\n PROPERTY_NOT_FOUND: 1008,\n} as const;\n\nfunction isErrorCode(code: number): code is ErrorCode {\n return (Object.values(ErrorCode) as number[]).includes(code);\n}\n\nfunction noAppConnectedError(): ProtocolError {\n return new ProtocolError(\n ErrorCode.NO_APP_CONNECTED,\n \"No GTKX application connected: start an app with 'gtkx dev' to connect\",\n { hint: \"Run 'gtkx dev' in your project directory\" },\n );\n}\n\nfunction appNotFoundError(applicationId: string): ProtocolError {\n return new ProtocolError(ErrorCode.APP_NOT_FOUND, `Application '${applicationId}' not found`, { applicationId });\n}\n\nfunction connectionWriteFailedError(applicationId: string): ProtocolError {\n return new ProtocolError(\n ErrorCode.CONNECTION_WRITE_FAILED,\n `Connection to application '${applicationId}' is no longer writable`,\n { applicationId },\n );\n}\n\nfunction widgetNotFoundError(widgetId: string): ProtocolError {\n return new ProtocolError(ErrorCode.WIDGET_NOT_FOUND, `Widget '${widgetId}' not found`, { widgetId });\n}\n\nfunction propertyNotFoundError(widgetType: string, property: string, readableProperties: string[]): ProtocolError {\n return new ProtocolError(\n ErrorCode.PROPERTY_NOT_FOUND,\n `${widgetType} has no readable property '${property}'`,\n {\n widgetType,\n property,\n hint: `Readable properties of ${widgetType}: ${readableProperties.join(\", \")}`,\n },\n );\n}\n\nfunction requestTimeoutError(timeout: number): ProtocolError {\n return new ProtocolError(ErrorCode.REQUEST_TIMEOUT, `Request timed out after ${String(timeout)}ms`, { timeout });\n}\n\nfunction invalidRequestError(reason: string): ProtocolError {\n return new ProtocolError(ErrorCode.INVALID_REQUEST, `Invalid request: ${reason}`, { reason });\n}\n\nfunction methodNotFoundError(method: string): ProtocolError {\n return new ProtocolError(ErrorCode.METHOD_NOT_FOUND, `Method '${method}' not found`, { method });\n}\n\nclass ProtocolError extends Error {\n code: ErrorCode;\n data?: unknown;\n\n constructor(code: ErrorCode, message: string, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n this.name = \"ProtocolError\";\n }\n\n toErrorObject(): { code: number; message: string; data?: unknown } {\n return {\n code: this.code,\n message: this.message,\n ...(this.data !== undefined && { data: this.data }),\n };\n }\n}\n\nexport {\n ErrorCode,\n isErrorCode,\n noAppConnectedError,\n appNotFoundError,\n connectionWriteFailedError,\n widgetNotFoundError,\n propertyNotFoundError,\n requestTimeoutError,\n invalidRequestError,\n methodNotFoundError,\n ProtocolError,\n};\n"]}
|
|
@@ -7,10 +7,17 @@ type SerializedWidget = {
|
|
|
7
7
|
role: string;
|
|
8
8
|
name: string | null;
|
|
9
9
|
text: string | null;
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
isSensitive: boolean;
|
|
11
|
+
isVisible: boolean;
|
|
12
12
|
cssClasses: string[];
|
|
13
13
|
children: SerializedWidget[];
|
|
14
|
+
hiddenChildren?: number;
|
|
15
|
+
};
|
|
16
|
+
type SerializedProperty = {
|
|
17
|
+
type: string;
|
|
18
|
+
value: string | number | boolean | string[] | null;
|
|
19
|
+
widgetId?: string;
|
|
20
|
+
note?: string;
|
|
14
21
|
};
|
|
15
22
|
type AppInfo = {
|
|
16
23
|
applicationId: string;
|
|
@@ -45,6 +52,13 @@ declare const emptyParams: z.ZodObject<Record<string, never>>;
|
|
|
45
52
|
declare const widgetIdParams: z.ZodObject<{
|
|
46
53
|
widgetId: z.ZodString;
|
|
47
54
|
}>;
|
|
55
|
+
declare const DEFAULT_SUBTREE_DEPTH = 8;
|
|
56
|
+
declare const MAX_SUBTREE_WIDGETS = 30;
|
|
57
|
+
declare const widgetPropsParams: z.ZodObject<{
|
|
58
|
+
widgetId: z.ZodString;
|
|
59
|
+
properties: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
60
|
+
maxDepth: z.ZodOptional<z.ZodNumber>;
|
|
61
|
+
}>;
|
|
48
62
|
declare const treeParams: z.ZodObject<{
|
|
49
63
|
rootId: z.ZodOptional<z.ZodString>;
|
|
50
64
|
maxDepth: z.ZodOptional<z.ZodNumber>;
|
|
@@ -82,12 +96,12 @@ declare const ServerRequestParamsSchemas: {
|
|
|
82
96
|
"app.getWindows": typeof emptyParams;
|
|
83
97
|
"widget.getTree": typeof treeParams;
|
|
84
98
|
"widget.query": typeof queryParams;
|
|
85
|
-
"widget.getProps": typeof
|
|
99
|
+
"widget.getProps": typeof widgetPropsParams;
|
|
86
100
|
"widget.click": typeof widgetIdParams;
|
|
87
101
|
"widget.type": typeof typeParams;
|
|
88
102
|
"widget.fireEvent": typeof fireEventParams;
|
|
89
103
|
"widget.screenshot": typeof screenshotParams;
|
|
90
104
|
};
|
|
91
105
|
declare const DEFAULT_SOCKET_PATH: string;
|
|
92
|
-
export { RequestSchema, ResponseSchema, RegisterParamsSchema, widgetIdParams,
|
|
106
|
+
export { DEFAULT_SUBTREE_DEPTH, MAX_SUBTREE_WIDGETS, RequestSchema, ResponseSchema, RegisterParamsSchema, widgetIdParams, widgetPropsParams, treeParams, queryParams, typeParams, fireEventParams, screenshotParams, ServerRequestParamsSchemas, DEFAULT_SOCKET_PATH, type Request, type Response, type SerializedWidget, type SerializedProperty, type AppInfo, type ServerRequestParams, type ParamsSchema, type ServerInitiatedMethod, type Message, };
|
|
93
107
|
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/protocol/schemas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAC7C,KAAK,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE/C,KAAK,gBAAgB,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/protocol/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/protocol/schemas.js
CHANGED
|
@@ -25,9 +25,16 @@ const emptyParams = z.object({});
|
|
|
25
25
|
const widgetIdParams = z.object({
|
|
26
26
|
widgetId: z.string(),
|
|
27
27
|
});
|
|
28
|
+
const DEFAULT_SUBTREE_DEPTH = 8;
|
|
29
|
+
const MAX_SUBTREE_WIDGETS = 30;
|
|
30
|
+
const widgetPropsParams = z.object({
|
|
31
|
+
widgetId: z.string(),
|
|
32
|
+
properties: z.array(z.string()).optional(),
|
|
33
|
+
maxDepth: z.number().int().nonnegative().optional(),
|
|
34
|
+
});
|
|
28
35
|
const treeParams = z.object({
|
|
29
36
|
rootId: z.string().optional(),
|
|
30
|
-
maxDepth: z.number().int().
|
|
37
|
+
maxDepth: z.number().int().nonnegative().optional(),
|
|
31
38
|
});
|
|
32
39
|
const queryOptionsSchema = z.object({
|
|
33
40
|
name: z.string().optional(),
|
|
@@ -49,7 +56,7 @@ const ServerRequestParamsSchemas = {
|
|
|
49
56
|
"app.getWindows": emptyParams,
|
|
50
57
|
"widget.getTree": treeParams,
|
|
51
58
|
"widget.query": queryParams,
|
|
52
|
-
"widget.getProps":
|
|
59
|
+
"widget.getProps": widgetPropsParams,
|
|
53
60
|
"widget.click": widgetIdParams,
|
|
54
61
|
"widget.type": typeParams,
|
|
55
62
|
"widget.fireEvent": fireEventParams,
|
|
@@ -59,5 +66,5 @@ const DEFAULT_SOCKET_PATH = join(getRuntimeDir(), "gtkx-mcp.sock");
|
|
|
59
66
|
function getRuntimeDir() {
|
|
60
67
|
return process.env.XDG_RUNTIME_DIR ?? tmpdir();
|
|
61
68
|
}
|
|
62
|
-
export { RequestSchema, ResponseSchema, RegisterParamsSchema, widgetIdParams,
|
|
69
|
+
export { DEFAULT_SUBTREE_DEPTH, MAX_SUBTREE_WIDGETS, RequestSchema, ResponseSchema, RegisterParamsSchema, widgetIdParams, widgetPropsParams, treeParams, queryParams, typeParams, fireEventParams, screenshotParams, ServerRequestParamsSchemas, DEFAULT_SOCKET_PATH, };
|
|
63
70
|
//# sourceMappingURL=schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/protocol/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/protocol/schemas.ts"],"names":[],"mappings":"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","sourcesContent":["import { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { z } from \"zod\";\n\ntype Request = z.infer<typeof RequestSchema>;\ntype Response = z.infer<typeof ResponseSchema>;\n\ntype SerializedWidget = {\n id: string;\n type: string;\n role: string;\n name: string | null;\n text: string | null;\n isSensitive: boolean;\n isVisible: boolean;\n cssClasses: string[];\n children: SerializedWidget[];\n hiddenChildren?: number;\n};\n\ntype SerializedProperty = {\n type: string;\n value: string | number | boolean | string[] | null;\n widgetId?: string;\n note?: string;\n};\n\ntype AppInfo = {\n applicationId: string;\n pid: number;\n projectRoot?: string;\n};\n\ntype ServerRequestParams<Method extends keyof typeof ServerRequestParamsSchemas> = z.infer<\n (typeof ServerRequestParamsSchemas)[Method]\n>;\n\ntype ParamsSchema<Output> = z.ZodType<Output>;\ntype ServerInitiatedMethod = keyof typeof ServerRequestParamsSchemas;\ntype Message = Request | Response;\n\nconst RequestSchema: z.ZodObject<\n {\n id: z.ZodString;\n method: z.ZodString;\n params: z.ZodOptional<z.ZodUnknown>;\n }\n> = z.object({\n id: z.string(),\n method: z.string(),\n params: z.unknown().optional(),\n});\n\nconst ErrorSchema: z.ZodObject<\n { code: z.ZodNumber; message: z.ZodString; data: z.ZodOptional<z.ZodUnknown> }\n> = z.object({\n code: z.number(),\n message: z.string(),\n data: z.unknown().optional(),\n});\n\nconst ResponseSchema: z.ZodObject<\n {\n id: z.ZodString;\n result: z.ZodOptional<z.ZodUnknown>;\n error: z.ZodOptional<typeof ErrorSchema>;\n }\n> = z.object({\n id: z.string(),\n result: z.unknown().optional(),\n error: ErrorSchema.optional(),\n});\n\nconst RegisterParamsSchema: z.ZodObject<\n {\n applicationId: z.ZodString;\n pid: z.ZodNumber;\n projectRoot: z.ZodOptional<z.ZodString>;\n }\n> = z.object({\n applicationId: z.string(),\n pid: z.number(),\n projectRoot: z.string().optional(),\n});\n\nconst emptyParams: z.ZodObject<Record<string, never>> = z.object({});\n\nconst widgetIdParams: z.ZodObject<{ widgetId: z.ZodString }> = z.object({\n widgetId: z.string(),\n});\n\nconst DEFAULT_SUBTREE_DEPTH = 8;\nconst MAX_SUBTREE_WIDGETS = 30;\n\nconst widgetPropsParams: z.ZodObject<\n {\n widgetId: z.ZodString;\n properties: z.ZodOptional<z.ZodArray<z.ZodString>>;\n maxDepth: z.ZodOptional<z.ZodNumber>;\n }\n> = z.object({\n widgetId: z.string(),\n properties: z.array(z.string()).optional(),\n maxDepth: z.number().int().nonnegative().optional(),\n});\n\nconst treeParams: z.ZodObject<\n { rootId: z.ZodOptional<z.ZodString>; maxDepth: z.ZodOptional<z.ZodNumber> }\n> = z.object({\n rootId: z.string().optional(),\n maxDepth: z.number().int().nonnegative().optional(),\n});\n\nconst queryOptionsSchema: z.ZodObject<\n { name: z.ZodOptional<z.ZodString>; exact: z.ZodOptional<z.ZodBoolean>; timeout: z.ZodOptional<z.ZodNumber> }\n> = z.object({\n name: z.string().optional(),\n exact: z.boolean().optional(),\n timeout: z.number().optional(),\n});\n\nconst queryParams: z.ZodObject<\n {\n by: z.ZodEnum<{ role: \"role\"; text: \"text\"; name: \"name\"; labelText: \"labelText\" }>;\n value: z.ZodUnion<[z.ZodString, z.ZodNumber]>;\n options: z.ZodOptional<typeof queryOptionsSchema>;\n }\n> = z.object({\n by: z.enum([\"role\", \"text\", \"name\", \"labelText\"]),\n value: z.union([z.string(), z.number()]),\n options: queryOptionsSchema.optional(),\n});\n\nconst typeParams: z.ZodObject<\n { widgetId: z.ZodString; text: z.ZodString; clear: z.ZodOptional<z.ZodBoolean> }\n> = z.object({ widgetId: z.string(), text: z.string(), clear: z.boolean().optional() });\n\nconst fireEventParams: z.ZodObject<\n { widgetId: z.ZodString; signal: z.ZodString; args: z.ZodOptional<z.ZodArray<z.ZodUnknown>> }\n> = z.object({ widgetId: z.string(), signal: z.string(), args: z.array(z.unknown()).optional() });\n\nconst screenshotParams: z.ZodObject<\n { windowId: z.ZodOptional<z.ZodString>; path: z.ZodOptional<z.ZodString> }\n> = z.object({\n windowId: z.string().optional(),\n path: z.string().optional(),\n});\n\nconst ServerRequestParamsSchemas: {\n \"app.getWindows\": typeof emptyParams;\n \"widget.getTree\": typeof treeParams;\n \"widget.query\": typeof queryParams;\n \"widget.getProps\": typeof widgetPropsParams;\n \"widget.click\": typeof widgetIdParams;\n \"widget.type\": typeof typeParams;\n \"widget.fireEvent\": typeof fireEventParams;\n \"widget.screenshot\": typeof screenshotParams;\n} = {\n \"app.getWindows\": emptyParams,\n \"widget.getTree\": treeParams,\n \"widget.query\": queryParams,\n \"widget.getProps\": widgetPropsParams,\n \"widget.click\": widgetIdParams,\n \"widget.type\": typeParams,\n \"widget.fireEvent\": fireEventParams,\n \"widget.screenshot\": screenshotParams,\n};\n\nconst DEFAULT_SOCKET_PATH: string = join(getRuntimeDir(), \"gtkx-mcp.sock\");\n\nfunction getRuntimeDir(): string {\n return process.env.XDG_RUNTIME_DIR ?? tmpdir();\n}\n\nexport {\n DEFAULT_SUBTREE_DEPTH,\n MAX_SUBTREE_WIDGETS,\n RequestSchema,\n ResponseSchema,\n RegisterParamsSchema,\n widgetIdParams,\n widgetPropsParams,\n treeParams,\n queryParams,\n typeParams,\n fireEventParams,\n screenshotParams,\n ServerRequestParamsSchemas,\n DEFAULT_SOCKET_PATH,\n type Request,\n type Response,\n type SerializedWidget,\n type SerializedProperty,\n type AppInfo,\n type ServerRequestParams,\n type ParamsSchema,\n type ServerInitiatedMethod,\n type Message,\n};\n"]}
|
package/dist/reference.d.ts
CHANGED
|
@@ -2,12 +2,26 @@ import { type ApiReference } from "@gtkx/codegen";
|
|
|
2
2
|
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
3
|
import { type Tool } from "./tool.js";
|
|
4
4
|
type ReferenceApi = Pick<ApiReference, "lookup" | "namespaceOverview" | "namespaces" | "overview" | "search" | "symbolNames">;
|
|
5
|
+
type ProjectSource = "argument" | "workingDirectory" | "app";
|
|
6
|
+
type ResolvedProject = {
|
|
7
|
+
root: string;
|
|
8
|
+
source: ProjectSource;
|
|
9
|
+
};
|
|
10
|
+
type ScopedReference = ResolvedProject & {
|
|
11
|
+
reference: ReferenceApi;
|
|
12
|
+
};
|
|
13
|
+
type ReferenceProviderOptions = {
|
|
14
|
+
getAppRoot: () => string | undefined;
|
|
15
|
+
getWorkingDirectory?: () => string;
|
|
16
|
+
};
|
|
5
17
|
type ReferenceProvider = {
|
|
6
|
-
get(): Promise<
|
|
18
|
+
get(projectRoot?: string): Promise<ScopedReference>;
|
|
19
|
+
load(project: ResolvedProject): Promise<ScopedReference>;
|
|
20
|
+
resolve(projectRoot?: string): ResolvedProject;
|
|
7
21
|
};
|
|
8
22
|
type ResourceServer = Pick<McpServer, "registerResource">;
|
|
9
|
-
declare const createReferenceProvider: (
|
|
23
|
+
declare const createReferenceProvider: (options: ReferenceProviderOptions) => ReferenceProvider;
|
|
10
24
|
declare const buildReferenceTools: (provider: ReferenceProvider) => Tool[];
|
|
11
25
|
declare const registerReferenceResources: (server: ResourceServer, provider: ReferenceProvider) => void;
|
|
12
|
-
export { createReferenceProvider, buildReferenceTools, registerReferenceResources, type ReferenceApi, type ReferenceProvider, };
|
|
26
|
+
export { createReferenceProvider, buildReferenceTools, registerReferenceResources, type ReferenceApi, type ReferenceProvider, type ResolvedProject, };
|
|
13
27
|
//# sourceMappingURL=reference.d.ts.map
|
package/dist/reference.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAsE,MAAM,eAAe,CAAC;AAEtH,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAK3F,OAAO,EAAsC,KAAK,IAAI,EAAiB,MAAM,WAAW,CAAC;AAEzF,KAAK,YAAY,GAAG,IAAI,CACpB,YAAY,EACZ,QAAQ,GAAG,mBAAmB,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CACxF,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACrB,GAAG,IAAI,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAsE,MAAM,eAAe,CAAC;AAEtH,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAK3F,OAAO,EAAsC,KAAK,IAAI,EAAiB,MAAM,WAAW,CAAC;AAEzF,KAAK,YAAY,GAAG,IAAI,CACpB,YAAY,EACZ,QAAQ,GAAG,mBAAmB,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CACxF,CAAC;AAEF,KAAK,aAAa,GAAG,UAAU,GAAG,kBAAkB,GAAG,KAAK,CAAC;AAE7D,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,KAAK,eAAe,GAAG,eAAe,GAAG;IACrC,SAAS,EAAE,YAAY,CAAC;CAC3B,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC5B,UAAU,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACrC,mBAAmB,CAAC,EAAE,MAAM,MAAM,CAAC;CACtC,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACrB,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACpD,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACzD,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;CAClD,CAAC;AAsBF,KAAK,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAmM1D,QAAA,MAAM,uBAAuB,GAAI,SAAS,wBAAwB,KAAG,iBAgBpE,CAAC;AAqIF,QAAA,MAAM,mBAAmB,GAAI,UAAU,iBAAiB,KAAG,IAAI,EAI9D,CAAC;AAsJF,QAAA,MAAM,0BAA0B,GAAI,QAAQ,cAAc,EAAE,UAAU,iBAAiB,KAAG,IAIzF,CAAC;AAEF,OAAO,EACH,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACvB,CAAC"}
|