poke-gate 0.0.2 → 0.0.4
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/.github/workflows/release.yml +124 -0
- package/README.md +98 -37
- package/assets/logo.png +0 -0
- package/build.sh +51 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/AppIcon.appiconset/Contents.json +68 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/AppIcon.appiconset/icon_128x128.png +0 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png +0 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/AppIcon.appiconset/icon_16x16.png +0 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png +0 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/AppIcon.appiconset/icon_256x256.png +0 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png +0 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/AppIcon.appiconset/icon_32x32.png +0 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png +0 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/AppIcon.appiconset/icon_512x512.png +0 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png +0 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Assets.xcassets/Contents.json +6 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/ContentView.swift +8 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/GateService.swift +241 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Info.plist +8 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Item.swift +2 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/LogsView.swift +47 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/Poke_macOS_GateApp.swift +140 -0
- package/clients/Poke macOS Gate/Poke macOS Gate/SettingsView.swift +50 -0
- package/clients/Poke macOS Gate/Poke macOS Gate.xcodeproj/project.pbxproj +336 -0
- package/clients/Poke macOS Gate/Poke macOS Gate.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/clients/Poke macOS Gate/Poke macOS Gate.xcodeproj/project.xcworkspace/xcuserdata/fka.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/clients/Poke macOS Gate/Poke macOS Gate.xcodeproj/xcuserdata/fka.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/package.json +1 -1
- package/src/mcp-server.js +73 -1
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
// !$*UTF8*$!
|
|
2
|
+
{
|
|
3
|
+
archiveVersion = 1;
|
|
4
|
+
classes = {
|
|
5
|
+
};
|
|
6
|
+
objectVersion = 77;
|
|
7
|
+
objects = {
|
|
8
|
+
|
|
9
|
+
/* Begin PBXFileReference section */
|
|
10
|
+
442DE4462F71DCD9009BF9EF /* Poke macOS Gate.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Poke macOS Gate.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
11
|
+
/* End PBXFileReference section */
|
|
12
|
+
|
|
13
|
+
/* Begin PBXFileSystemSynchronizedRootGroup section */
|
|
14
|
+
442DE4482F71DCD9009BF9EF /* Poke macOS Gate */ = {
|
|
15
|
+
isa = PBXFileSystemSynchronizedRootGroup;
|
|
16
|
+
path = "Poke macOS Gate";
|
|
17
|
+
sourceTree = "<group>";
|
|
18
|
+
};
|
|
19
|
+
/* End PBXFileSystemSynchronizedRootGroup section */
|
|
20
|
+
|
|
21
|
+
/* Begin PBXFrameworksBuildPhase section */
|
|
22
|
+
442DE4432F71DCD9009BF9EF /* Frameworks */ = {
|
|
23
|
+
isa = PBXFrameworksBuildPhase;
|
|
24
|
+
buildActionMask = 2147483647;
|
|
25
|
+
files = (
|
|
26
|
+
);
|
|
27
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
28
|
+
};
|
|
29
|
+
/* End PBXFrameworksBuildPhase section */
|
|
30
|
+
|
|
31
|
+
/* Begin PBXGroup section */
|
|
32
|
+
442DE43D2F71DCD9009BF9EF = {
|
|
33
|
+
isa = PBXGroup;
|
|
34
|
+
children = (
|
|
35
|
+
442DE4482F71DCD9009BF9EF /* Poke macOS Gate */,
|
|
36
|
+
442DE4472F71DCD9009BF9EF /* Products */,
|
|
37
|
+
);
|
|
38
|
+
sourceTree = "<group>";
|
|
39
|
+
};
|
|
40
|
+
442DE4472F71DCD9009BF9EF /* Products */ = {
|
|
41
|
+
isa = PBXGroup;
|
|
42
|
+
children = (
|
|
43
|
+
442DE4462F71DCD9009BF9EF /* Poke macOS Gate.app */,
|
|
44
|
+
);
|
|
45
|
+
name = Products;
|
|
46
|
+
sourceTree = "<group>";
|
|
47
|
+
};
|
|
48
|
+
/* End PBXGroup section */
|
|
49
|
+
|
|
50
|
+
/* Begin PBXNativeTarget section */
|
|
51
|
+
442DE4452F71DCD9009BF9EF /* Poke macOS Gate */ = {
|
|
52
|
+
isa = PBXNativeTarget;
|
|
53
|
+
buildConfigurationList = 442DE4532F71DCDA009BF9EF /* Build configuration list for PBXNativeTarget "Poke macOS Gate" */;
|
|
54
|
+
buildPhases = (
|
|
55
|
+
442DE4422F71DCD9009BF9EF /* Sources */,
|
|
56
|
+
442DE4432F71DCD9009BF9EF /* Frameworks */,
|
|
57
|
+
442DE4442F71DCD9009BF9EF /* Resources */,
|
|
58
|
+
);
|
|
59
|
+
buildRules = (
|
|
60
|
+
);
|
|
61
|
+
dependencies = (
|
|
62
|
+
);
|
|
63
|
+
fileSystemSynchronizedGroups = (
|
|
64
|
+
442DE4482F71DCD9009BF9EF /* Poke macOS Gate */,
|
|
65
|
+
);
|
|
66
|
+
name = "Poke macOS Gate";
|
|
67
|
+
packageProductDependencies = (
|
|
68
|
+
);
|
|
69
|
+
productName = "Poke macOS Gate";
|
|
70
|
+
productReference = 442DE4462F71DCD9009BF9EF /* Poke macOS Gate.app */;
|
|
71
|
+
productType = "com.apple.product-type.application";
|
|
72
|
+
};
|
|
73
|
+
/* End PBXNativeTarget section */
|
|
74
|
+
|
|
75
|
+
/* Begin PBXProject section */
|
|
76
|
+
442DE43E2F71DCD9009BF9EF /* Project object */ = {
|
|
77
|
+
isa = PBXProject;
|
|
78
|
+
attributes = {
|
|
79
|
+
BuildIndependentTargetsInParallel = 1;
|
|
80
|
+
LastSwiftUpdateCheck = 2620;
|
|
81
|
+
LastUpgradeCheck = 2620;
|
|
82
|
+
TargetAttributes = {
|
|
83
|
+
442DE4452F71DCD9009BF9EF = {
|
|
84
|
+
CreatedOnToolsVersion = 26.2;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
buildConfigurationList = 442DE4412F71DCD9009BF9EF /* Build configuration list for PBXProject "Poke macOS Gate" */;
|
|
89
|
+
developmentRegion = en;
|
|
90
|
+
hasScannedForEncodings = 0;
|
|
91
|
+
knownRegions = (
|
|
92
|
+
en,
|
|
93
|
+
Base,
|
|
94
|
+
);
|
|
95
|
+
mainGroup = 442DE43D2F71DCD9009BF9EF;
|
|
96
|
+
minimizedProjectReferenceProxies = 1;
|
|
97
|
+
preferredProjectObjectVersion = 77;
|
|
98
|
+
productRefGroup = 442DE4472F71DCD9009BF9EF /* Products */;
|
|
99
|
+
projectDirPath = "";
|
|
100
|
+
projectRoot = "";
|
|
101
|
+
targets = (
|
|
102
|
+
442DE4452F71DCD9009BF9EF /* Poke macOS Gate */,
|
|
103
|
+
);
|
|
104
|
+
};
|
|
105
|
+
/* End PBXProject section */
|
|
106
|
+
|
|
107
|
+
/* Begin PBXResourcesBuildPhase section */
|
|
108
|
+
442DE4442F71DCD9009BF9EF /* Resources */ = {
|
|
109
|
+
isa = PBXResourcesBuildPhase;
|
|
110
|
+
buildActionMask = 2147483647;
|
|
111
|
+
files = (
|
|
112
|
+
);
|
|
113
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
114
|
+
};
|
|
115
|
+
/* End PBXResourcesBuildPhase section */
|
|
116
|
+
|
|
117
|
+
/* Begin PBXSourcesBuildPhase section */
|
|
118
|
+
442DE4422F71DCD9009BF9EF /* Sources */ = {
|
|
119
|
+
isa = PBXSourcesBuildPhase;
|
|
120
|
+
buildActionMask = 2147483647;
|
|
121
|
+
files = (
|
|
122
|
+
);
|
|
123
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
124
|
+
};
|
|
125
|
+
/* End PBXSourcesBuildPhase section */
|
|
126
|
+
|
|
127
|
+
/* Begin XCBuildConfiguration section */
|
|
128
|
+
442DE4512F71DCDA009BF9EF /* Debug */ = {
|
|
129
|
+
isa = XCBuildConfiguration;
|
|
130
|
+
buildSettings = {
|
|
131
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
132
|
+
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
|
133
|
+
CLANG_ANALYZER_NONNULL = YES;
|
|
134
|
+
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
135
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
|
136
|
+
CLANG_ENABLE_MODULES = YES;
|
|
137
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
138
|
+
CLANG_ENABLE_OBJC_WEAK = YES;
|
|
139
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
140
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
141
|
+
CLANG_WARN_COMMA = YES;
|
|
142
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
143
|
+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
144
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
145
|
+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
|
146
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
147
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
148
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
149
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
150
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
151
|
+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
152
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
153
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
154
|
+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
|
155
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
156
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
157
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
158
|
+
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
|
159
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
160
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
161
|
+
COPY_PHASE_STRIP = NO;
|
|
162
|
+
DEBUG_INFORMATION_FORMAT = dwarf;
|
|
163
|
+
DEVELOPMENT_TEAM = RJA7656U34;
|
|
164
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
165
|
+
ENABLE_TESTABILITY = YES;
|
|
166
|
+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
|
167
|
+
GCC_C_LANGUAGE_STANDARD = gnu17;
|
|
168
|
+
GCC_DYNAMIC_NO_PIC = NO;
|
|
169
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
170
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
|
171
|
+
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
172
|
+
"DEBUG=1",
|
|
173
|
+
"$(inherited)",
|
|
174
|
+
);
|
|
175
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
176
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
177
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
178
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
179
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
180
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
181
|
+
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
|
182
|
+
MACOSX_DEPLOYMENT_TARGET = 26.2;
|
|
183
|
+
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
|
184
|
+
MTL_FAST_MATH = YES;
|
|
185
|
+
ONLY_ACTIVE_ARCH = YES;
|
|
186
|
+
SDKROOT = macosx;
|
|
187
|
+
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
|
|
188
|
+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
189
|
+
};
|
|
190
|
+
name = Debug;
|
|
191
|
+
};
|
|
192
|
+
442DE4522F71DCDA009BF9EF /* Release */ = {
|
|
193
|
+
isa = XCBuildConfiguration;
|
|
194
|
+
buildSettings = {
|
|
195
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
196
|
+
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
|
197
|
+
CLANG_ANALYZER_NONNULL = YES;
|
|
198
|
+
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
199
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
|
200
|
+
CLANG_ENABLE_MODULES = YES;
|
|
201
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
202
|
+
CLANG_ENABLE_OBJC_WEAK = YES;
|
|
203
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
204
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
205
|
+
CLANG_WARN_COMMA = YES;
|
|
206
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
207
|
+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
208
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
209
|
+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
|
210
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
211
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
212
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
213
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
214
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
215
|
+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
216
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
217
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
218
|
+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
|
219
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
220
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
221
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
222
|
+
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
|
223
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
224
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
225
|
+
COPY_PHASE_STRIP = NO;
|
|
226
|
+
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
227
|
+
DEVELOPMENT_TEAM = RJA7656U34;
|
|
228
|
+
ENABLE_NS_ASSERTIONS = NO;
|
|
229
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
230
|
+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
|
231
|
+
GCC_C_LANGUAGE_STANDARD = gnu17;
|
|
232
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
233
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
234
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
235
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
236
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
237
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
238
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
239
|
+
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
|
240
|
+
MACOSX_DEPLOYMENT_TARGET = 26.2;
|
|
241
|
+
MTL_ENABLE_DEBUG_INFO = NO;
|
|
242
|
+
MTL_FAST_MATH = YES;
|
|
243
|
+
SDKROOT = macosx;
|
|
244
|
+
SWIFT_COMPILATION_MODE = wholemodule;
|
|
245
|
+
};
|
|
246
|
+
name = Release;
|
|
247
|
+
};
|
|
248
|
+
442DE4542F71DCDA009BF9EF /* Debug */ = {
|
|
249
|
+
isa = XCBuildConfiguration;
|
|
250
|
+
buildSettings = {
|
|
251
|
+
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
252
|
+
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
|
253
|
+
CODE_SIGN_STYLE = Automatic;
|
|
254
|
+
COMBINE_HIDPI_IMAGES = YES;
|
|
255
|
+
CURRENT_PROJECT_VERSION = 1;
|
|
256
|
+
DEVELOPMENT_TEAM = RJA7656U34;
|
|
257
|
+
ENABLE_APP_SANDBOX = NO;
|
|
258
|
+
ENABLE_HARDENED_RUNTIME = NO;
|
|
259
|
+
ENABLE_PREVIEWS = YES;
|
|
260
|
+
GENERATE_INFOPLIST_FILE = YES;
|
|
261
|
+
INFOPLIST_FILE = "Poke macOS Gate/Info.plist";
|
|
262
|
+
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
|
263
|
+
LD_RUNPATH_SEARCH_PATHS = (
|
|
264
|
+
"$(inherited)",
|
|
265
|
+
"@executable_path/../Frameworks",
|
|
266
|
+
);
|
|
267
|
+
MARKETING_VERSION = 1.0;
|
|
268
|
+
PRODUCT_BUNDLE_IDENTIFIER = "dev.fka.Poke-macOS-Gate";
|
|
269
|
+
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
270
|
+
REGISTER_APP_GROUPS = YES;
|
|
271
|
+
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
|
272
|
+
SWIFT_APPROACHABLE_CONCURRENCY = YES;
|
|
273
|
+
SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor;
|
|
274
|
+
SWIFT_EMIT_LOC_STRINGS = YES;
|
|
275
|
+
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
|
|
276
|
+
SWIFT_VERSION = 5.0;
|
|
277
|
+
};
|
|
278
|
+
name = Debug;
|
|
279
|
+
};
|
|
280
|
+
442DE4552F71DCDA009BF9EF /* Release */ = {
|
|
281
|
+
isa = XCBuildConfiguration;
|
|
282
|
+
buildSettings = {
|
|
283
|
+
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
284
|
+
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
|
285
|
+
CODE_SIGN_STYLE = Automatic;
|
|
286
|
+
COMBINE_HIDPI_IMAGES = YES;
|
|
287
|
+
CURRENT_PROJECT_VERSION = 1;
|
|
288
|
+
DEVELOPMENT_TEAM = RJA7656U34;
|
|
289
|
+
ENABLE_APP_SANDBOX = NO;
|
|
290
|
+
ENABLE_HARDENED_RUNTIME = NO;
|
|
291
|
+
ENABLE_PREVIEWS = YES;
|
|
292
|
+
GENERATE_INFOPLIST_FILE = YES;
|
|
293
|
+
INFOPLIST_FILE = "Poke macOS Gate/Info.plist";
|
|
294
|
+
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
|
295
|
+
LD_RUNPATH_SEARCH_PATHS = (
|
|
296
|
+
"$(inherited)",
|
|
297
|
+
"@executable_path/../Frameworks",
|
|
298
|
+
);
|
|
299
|
+
MARKETING_VERSION = 1.0;
|
|
300
|
+
PRODUCT_BUNDLE_IDENTIFIER = "dev.fka.Poke-macOS-Gate";
|
|
301
|
+
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
302
|
+
REGISTER_APP_GROUPS = YES;
|
|
303
|
+
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
|
304
|
+
SWIFT_APPROACHABLE_CONCURRENCY = YES;
|
|
305
|
+
SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor;
|
|
306
|
+
SWIFT_EMIT_LOC_STRINGS = YES;
|
|
307
|
+
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
|
|
308
|
+
SWIFT_VERSION = 5.0;
|
|
309
|
+
};
|
|
310
|
+
name = Release;
|
|
311
|
+
};
|
|
312
|
+
/* End XCBuildConfiguration section */
|
|
313
|
+
|
|
314
|
+
/* Begin XCConfigurationList section */
|
|
315
|
+
442DE4412F71DCD9009BF9EF /* Build configuration list for PBXProject "Poke macOS Gate" */ = {
|
|
316
|
+
isa = XCConfigurationList;
|
|
317
|
+
buildConfigurations = (
|
|
318
|
+
442DE4512F71DCDA009BF9EF /* Debug */,
|
|
319
|
+
442DE4522F71DCDA009BF9EF /* Release */,
|
|
320
|
+
);
|
|
321
|
+
defaultConfigurationIsVisible = 0;
|
|
322
|
+
defaultConfigurationName = Release;
|
|
323
|
+
};
|
|
324
|
+
442DE4532F71DCDA009BF9EF /* Build configuration list for PBXNativeTarget "Poke macOS Gate" */ = {
|
|
325
|
+
isa = XCConfigurationList;
|
|
326
|
+
buildConfigurations = (
|
|
327
|
+
442DE4542F71DCDA009BF9EF /* Debug */,
|
|
328
|
+
442DE4552F71DCDA009BF9EF /* Release */,
|
|
329
|
+
);
|
|
330
|
+
defaultConfigurationIsVisible = 0;
|
|
331
|
+
defaultConfigurationName = Release;
|
|
332
|
+
};
|
|
333
|
+
/* End XCConfigurationList section */
|
|
334
|
+
};
|
|
335
|
+
rootObject = 442DE43E2F71DCD9009BF9EF /* Project object */;
|
|
336
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>SchemeUserState</key>
|
|
6
|
+
<dict>
|
|
7
|
+
<key>Poke macOS Gate.xcscheme_^#shared#^_</key>
|
|
8
|
+
<dict>
|
|
9
|
+
<key>orderHint</key>
|
|
10
|
+
<integer>0</integer>
|
|
11
|
+
</dict>
|
|
12
|
+
</dict>
|
|
13
|
+
</dict>
|
|
14
|
+
</plist>
|
package/package.json
CHANGED
package/src/mcp-server.js
CHANGED
|
@@ -2,7 +2,7 @@ import http from "node:http";
|
|
|
2
2
|
import { execSync, exec } from "node:child_process";
|
|
3
3
|
import { readFileSync, writeFileSync, readdirSync, statSync } from "node:fs";
|
|
4
4
|
import { hostname, platform, arch, uptime, totalmem, freemem, homedir } from "node:os";
|
|
5
|
-
import { join, resolve } from "node:path";
|
|
5
|
+
import { join, resolve, extname } from "node:path";
|
|
6
6
|
|
|
7
7
|
const SERVER_INFO = { name: "poke-gate", version: "0.0.1" };
|
|
8
8
|
|
|
@@ -79,6 +79,30 @@ const TOOLS = [
|
|
|
79
79
|
description: "Get system information: OS, hostname, architecture, uptime, memory, and home directory.",
|
|
80
80
|
inputSchema: { type: "object", properties: {} },
|
|
81
81
|
},
|
|
82
|
+
{
|
|
83
|
+
name: "read_image",
|
|
84
|
+
description:
|
|
85
|
+
"Read an image or binary file and return it as base64-encoded data. " +
|
|
86
|
+
"Supports png, jpg, jpeg, gif, webp, pdf, and any other binary file. " +
|
|
87
|
+
"Returns the base64 string and MIME type.",
|
|
88
|
+
inputSchema: {
|
|
89
|
+
type: "object",
|
|
90
|
+
properties: {
|
|
91
|
+
path: { type: "string", description: "Absolute or relative path to the image/binary file" },
|
|
92
|
+
},
|
|
93
|
+
required: ["path"],
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: "take_screenshot",
|
|
98
|
+
description: "Take a screenshot of the user's screen and save it to a file. Returns the file path. Requires screen recording permission on macOS.",
|
|
99
|
+
inputSchema: {
|
|
100
|
+
type: "object",
|
|
101
|
+
properties: {
|
|
102
|
+
path: { type: "string", description: "File path to save the screenshot (optional, defaults to ~/Desktop/screenshot-<timestamp>.png)" },
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
},
|
|
82
106
|
];
|
|
83
107
|
|
|
84
108
|
function runCommand(command, cwd) {
|
|
@@ -175,6 +199,54 @@ function handleToolCall(name, args) {
|
|
|
175
199
|
return { content: [{ type: "text", text: JSON.stringify(info, null, 2) }] };
|
|
176
200
|
}
|
|
177
201
|
|
|
202
|
+
case "read_image": {
|
|
203
|
+
try {
|
|
204
|
+
const p = resolve(args.path.replace(/^~/, homedir()));
|
|
205
|
+
const ext = extname(p).toLowerCase().slice(1);
|
|
206
|
+
const mimeMap = {
|
|
207
|
+
png: "image/png", jpg: "image/jpeg", jpeg: "image/jpeg",
|
|
208
|
+
gif: "image/gif", webp: "image/webp", svg: "image/svg+xml",
|
|
209
|
+
pdf: "application/pdf", ico: "image/x-icon", bmp: "image/bmp",
|
|
210
|
+
};
|
|
211
|
+
const mimeType = mimeMap[ext] || "application/octet-stream";
|
|
212
|
+
const buf = readFileSync(p);
|
|
213
|
+
const base64 = buf.toString("base64");
|
|
214
|
+
logTool(name, args);
|
|
215
|
+
|
|
216
|
+
if (mimeType.startsWith("image/")) {
|
|
217
|
+
return {
|
|
218
|
+
content: [
|
|
219
|
+
{ type: "image", data: base64, mimeType },
|
|
220
|
+
{ type: "text", text: `Image: ${p} (${mimeType}, ${buf.length} bytes)` },
|
|
221
|
+
],
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
content: [
|
|
226
|
+
{ type: "text", text: `File: ${p} (${mimeType}, ${buf.length} bytes)\nBase64: ${base64.slice(0, 200)}${base64.length > 200 ? "..." : ""}` },
|
|
227
|
+
],
|
|
228
|
+
};
|
|
229
|
+
} catch (err) {
|
|
230
|
+
const r = { content: [{ type: "text", text: `Error: ${err.message}` }], isError: true };
|
|
231
|
+
logTool(name, args, r);
|
|
232
|
+
return r;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
case "take_screenshot": {
|
|
237
|
+
const ts = new Date().toISOString().replace(/[:.]/g, "-");
|
|
238
|
+
const dest = args.path
|
|
239
|
+
? resolve(args.path.replace(/^~/, homedir()))
|
|
240
|
+
: join(homedir(), "Desktop", `screenshot-${ts}.png`);
|
|
241
|
+
logTool(name, { path: dest });
|
|
242
|
+
return runCommand(`/usr/sbin/screencapture -x "${dest}"`, homedir()).then((result) => {
|
|
243
|
+
if (result.exitCode === 0) {
|
|
244
|
+
return { content: [{ type: "text", text: `Screenshot saved to ${dest}` }] };
|
|
245
|
+
}
|
|
246
|
+
return { content: [{ type: "text", text: `Screenshot failed: ${result.stderr || "unknown error"}` }], isError: true };
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
|
|
178
250
|
default:
|
|
179
251
|
return { content: [{ type: "text", text: `Unknown tool: ${name}` }], isError: true };
|
|
180
252
|
}
|