@extentos/mcp-server 0.0.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.
Files changed (202) hide show
  1. package/README.md +56 -0
  2. package/dist/cli/login.d.ts +2 -0
  3. package/dist/cli/login.d.ts.map +1 -0
  4. package/dist/cli/login.js +71 -0
  5. package/dist/cli/login.js.map +1 -0
  6. package/dist/cli/logout.d.ts +2 -0
  7. package/dist/cli/logout.d.ts.map +1 -0
  8. package/dist/cli/logout.js +65 -0
  9. package/dist/cli/logout.js.map +1 -0
  10. package/dist/cli/privacy.d.ts +3 -0
  11. package/dist/cli/privacy.d.ts.map +1 -0
  12. package/dist/cli/privacy.js +39 -0
  13. package/dist/cli/privacy.js.map +1 -0
  14. package/dist/cli/status.d.ts +2 -0
  15. package/dist/cli/status.d.ts.map +1 -0
  16. package/dist/cli/status.js +9 -0
  17. package/dist/cli/status.js.map +1 -0
  18. package/dist/cli/update.d.ts +2 -0
  19. package/dist/cli/update.d.ts.map +1 -0
  20. package/dist/cli/update.js +8 -0
  21. package/dist/cli/update.js.map +1 -0
  22. package/dist/cli/whoami.d.ts +2 -0
  23. package/dist/cli/whoami.d.ts.map +1 -0
  24. package/dist/cli/whoami.js +8 -0
  25. package/dist/cli/whoami.js.map +1 -0
  26. package/dist/cli.d.ts +3 -0
  27. package/dist/cli.d.ts.map +1 -0
  28. package/dist/cli.js +69 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/generated/schemas.d.ts +4 -0
  31. package/dist/generated/schemas.d.ts.map +1 -0
  32. package/dist/generated/schemas.js +2697 -0
  33. package/dist/generated/schemas.js.map +1 -0
  34. package/dist/index.d.ts +3 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +69 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/stub.d.ts +15 -0
  39. package/dist/stub.d.ts.map +1 -0
  40. package/dist/stub.js +20 -0
  41. package/dist/stub.js.map +1 -0
  42. package/dist/telemetry/client.d.ts +73 -0
  43. package/dist/telemetry/client.d.ts.map +1 -0
  44. package/dist/telemetry/client.js +207 -0
  45. package/dist/telemetry/client.js.map +1 -0
  46. package/dist/telemetry/consent.d.ts +19 -0
  47. package/dist/telemetry/consent.d.ts.map +1 -0
  48. package/dist/telemetry/consent.js +68 -0
  49. package/dist/telemetry/consent.js.map +1 -0
  50. package/dist/telemetry/index.d.ts +56 -0
  51. package/dist/telemetry/index.d.ts.map +1 -0
  52. package/dist/telemetry/index.js +151 -0
  53. package/dist/telemetry/index.js.map +1 -0
  54. package/dist/telemetry/installRegistry.d.ts +18 -0
  55. package/dist/telemetry/installRegistry.d.ts.map +1 -0
  56. package/dist/telemetry/installRegistry.js +102 -0
  57. package/dist/telemetry/installRegistry.js.map +1 -0
  58. package/dist/tools/data/capabilities.d.ts +566 -0
  59. package/dist/tools/data/capabilities.d.ts.map +1 -0
  60. package/dist/tools/data/capabilities.js +243 -0
  61. package/dist/tools/data/capabilities.js.map +1 -0
  62. package/dist/tools/data/examplePatterns.d.ts +4 -0
  63. package/dist/tools/data/examplePatterns.d.ts.map +1 -0
  64. package/dist/tools/data/examplePatterns.js +546 -0
  65. package/dist/tools/data/examplePatterns.js.map +1 -0
  66. package/dist/tools/data/presetTriggers.d.ts +4 -0
  67. package/dist/tools/data/presetTriggers.d.ts.map +1 -0
  68. package/dist/tools/data/presetTriggers.js +47 -0
  69. package/dist/tools/data/presetTriggers.js.map +1 -0
  70. package/dist/tools/data/version.d.ts +31 -0
  71. package/dist/tools/data/version.d.ts.map +1 -0
  72. package/dist/tools/data/version.js +34 -0
  73. package/dist/tools/data/version.js.map +1 -0
  74. package/dist/tools/definitions.d.ts +13 -0
  75. package/dist/tools/definitions.d.ts.map +1 -0
  76. package/dist/tools/definitions.js +347 -0
  77. package/dist/tools/definitions.js.map +1 -0
  78. package/dist/tools/docs/index.d.ts +10 -0
  79. package/dist/tools/docs/index.d.ts.map +1 -0
  80. package/dist/tools/docs/index.js +220 -0
  81. package/dist/tools/docs/index.js.map +1 -0
  82. package/dist/tools/handlers/completeAuthLink.d.ts +3 -0
  83. package/dist/tools/handlers/completeAuthLink.d.ts.map +1 -0
  84. package/dist/tools/handlers/completeAuthLink.js +152 -0
  85. package/dist/tools/handlers/completeAuthLink.js.map +1 -0
  86. package/dist/tools/handlers/createSimulatorSession.d.ts +3 -0
  87. package/dist/tools/handlers/createSimulatorSession.d.ts.map +1 -0
  88. package/dist/tools/handlers/createSimulatorSession.js +231 -0
  89. package/dist/tools/handlers/createSimulatorSession.js.map +1 -0
  90. package/dist/tools/handlers/generateConnectionModule.d.ts +3 -0
  91. package/dist/tools/handlers/generateConnectionModule.d.ts.map +1 -0
  92. package/dist/tools/handlers/generateConnectionModule.js +222 -0
  93. package/dist/tools/handlers/generateConnectionModule.js.map +1 -0
  94. package/dist/tools/handlers/generateConsumer.d.ts +3 -0
  95. package/dist/tools/handlers/generateConsumer.d.ts.map +1 -0
  96. package/dist/tools/handlers/generateConsumer.js +257 -0
  97. package/dist/tools/handlers/generateConsumer.js.map +1 -0
  98. package/dist/tools/handlers/getCredentialGuide.d.ts +3 -0
  99. package/dist/tools/handlers/getCredentialGuide.d.ts.map +1 -0
  100. package/dist/tools/handlers/getCredentialGuide.js +296 -0
  101. package/dist/tools/handlers/getCredentialGuide.js.map +1 -0
  102. package/dist/tools/handlers/getEventLog.d.ts +3 -0
  103. package/dist/tools/handlers/getEventLog.d.ts.map +1 -0
  104. package/dist/tools/handlers/getEventLog.js +90 -0
  105. package/dist/tools/handlers/getEventLog.js.map +1 -0
  106. package/dist/tools/handlers/getExampleSpec.d.ts +3 -0
  107. package/dist/tools/handlers/getExampleSpec.d.ts.map +1 -0
  108. package/dist/tools/handlers/getExampleSpec.js +44 -0
  109. package/dist/tools/handlers/getExampleSpec.js.map +1 -0
  110. package/dist/tools/handlers/getPermissions.d.ts +3 -0
  111. package/dist/tools/handlers/getPermissions.d.ts.map +1 -0
  112. package/dist/tools/handlers/getPermissions.js +50 -0
  113. package/dist/tools/handlers/getPermissions.js.map +1 -0
  114. package/dist/tools/handlers/getPlatformInfo.d.ts +3 -0
  115. package/dist/tools/handlers/getPlatformInfo.d.ts.map +1 -0
  116. package/dist/tools/handlers/getPlatformInfo.js +78 -0
  117. package/dist/tools/handlers/getPlatformInfo.js.map +1 -0
  118. package/dist/tools/handlers/getProductionChecklist.d.ts +3 -0
  119. package/dist/tools/handlers/getProductionChecklist.d.ts.map +1 -0
  120. package/dist/tools/handlers/getProductionChecklist.js +238 -0
  121. package/dist/tools/handlers/getProductionChecklist.js.map +1 -0
  122. package/dist/tools/handlers/getSimulatorStatus.d.ts +3 -0
  123. package/dist/tools/handlers/getSimulatorStatus.d.ts.map +1 -0
  124. package/dist/tools/handlers/getSimulatorStatus.js +56 -0
  125. package/dist/tools/handlers/getSimulatorStatus.js.map +1 -0
  126. package/dist/tools/handlers/getVoiceCommandGuidance.d.ts +3 -0
  127. package/dist/tools/handlers/getVoiceCommandGuidance.d.ts.map +1 -0
  128. package/dist/tools/handlers/getVoiceCommandGuidance.js +200 -0
  129. package/dist/tools/handlers/getVoiceCommandGuidance.js.map +1 -0
  130. package/dist/tools/handlers/initSpec.d.ts +3 -0
  131. package/dist/tools/handlers/initSpec.d.ts.map +1 -0
  132. package/dist/tools/handlers/initSpec.js +234 -0
  133. package/dist/tools/handlers/initSpec.js.map +1 -0
  134. package/dist/tools/handlers/inspectIntegration.d.ts +3 -0
  135. package/dist/tools/handlers/inspectIntegration.d.ts.map +1 -0
  136. package/dist/tools/handlers/inspectIntegration.js +204 -0
  137. package/dist/tools/handlers/inspectIntegration.js.map +1 -0
  138. package/dist/tools/handlers/planIntegration.d.ts +3 -0
  139. package/dist/tools/handlers/planIntegration.d.ts.map +1 -0
  140. package/dist/tools/handlers/planIntegration.js +279 -0
  141. package/dist/tools/handlers/planIntegration.js.map +1 -0
  142. package/dist/tools/handlers/searchDocs.d.ts +3 -0
  143. package/dist/tools/handlers/searchDocs.d.ts.map +1 -0
  144. package/dist/tools/handlers/searchDocs.js +41 -0
  145. package/dist/tools/handlers/searchDocs.js.map +1 -0
  146. package/dist/tools/handlers/updateSpec.d.ts +3 -0
  147. package/dist/tools/handlers/updateSpec.d.ts.map +1 -0
  148. package/dist/tools/handlers/updateSpec.js +453 -0
  149. package/dist/tools/handlers/updateSpec.js.map +1 -0
  150. package/dist/tools/handlers/validateIntegration.d.ts +3 -0
  151. package/dist/tools/handlers/validateIntegration.d.ts.map +1 -0
  152. package/dist/tools/handlers/validateIntegration.js +546 -0
  153. package/dist/tools/handlers/validateIntegration.js.map +1 -0
  154. package/dist/tools/handlers/validateSpec.d.ts +3 -0
  155. package/dist/tools/handlers/validateSpec.d.ts.map +1 -0
  156. package/dist/tools/handlers/validateSpec.js +26 -0
  157. package/dist/tools/handlers/validateSpec.js.map +1 -0
  158. package/dist/tools/registry.d.ts +4 -0
  159. package/dist/tools/registry.d.ts.map +1 -0
  160. package/dist/tools/registry.js +43 -0
  161. package/dist/tools/registry.js.map +1 -0
  162. package/dist/tools/response.d.ts +12 -0
  163. package/dist/tools/response.d.ts.map +1 -0
  164. package/dist/tools/response.js +19 -0
  165. package/dist/tools/response.js.map +1 -0
  166. package/dist/tools/templates/androidBootstrap.d.ts +2 -0
  167. package/dist/tools/templates/androidBootstrap.d.ts.map +1 -0
  168. package/dist/tools/templates/androidBootstrap.js +40 -0
  169. package/dist/tools/templates/androidBootstrap.js.map +1 -0
  170. package/dist/tools/templates/callbackHandler.d.ts +11 -0
  171. package/dist/tools/templates/callbackHandler.d.ts.map +1 -0
  172. package/dist/tools/templates/callbackHandler.js +177 -0
  173. package/dist/tools/templates/callbackHandler.js.map +1 -0
  174. package/dist/tools/templates/iosBootstrap.d.ts +3 -0
  175. package/dist/tools/templates/iosBootstrap.d.ts.map +1 -0
  176. package/dist/tools/templates/iosBootstrap.js +50 -0
  177. package/dist/tools/templates/iosBootstrap.js.map +1 -0
  178. package/dist/tools/templates/streamConsumer.d.ts +8 -0
  179. package/dist/tools/templates/streamConsumer.d.ts.map +1 -0
  180. package/dist/tools/templates/streamConsumer.js +248 -0
  181. package/dist/tools/templates/streamConsumer.js.map +1 -0
  182. package/dist/tools/util/appPackage.d.ts +4 -0
  183. package/dist/tools/util/appPackage.d.ts.map +1 -0
  184. package/dist/tools/util/appPackage.js +16 -0
  185. package/dist/tools/util/appPackage.js.map +1 -0
  186. package/dist/tools/util/backendClient.d.ts +25 -0
  187. package/dist/tools/util/backendClient.d.ts.map +1 -0
  188. package/dist/tools/util/backendClient.js +144 -0
  189. package/dist/tools/util/backendClient.js.map +1 -0
  190. package/dist/tools/util/manifest.d.ts +9 -0
  191. package/dist/tools/util/manifest.d.ts.map +1 -0
  192. package/dist/tools/util/manifest.js +62 -0
  193. package/dist/tools/util/manifest.js.map +1 -0
  194. package/dist/tools/util/permissions.d.ts +32 -0
  195. package/dist/tools/util/permissions.d.ts.map +1 -0
  196. package/dist/tools/util/permissions.js +165 -0
  197. package/dist/tools/util/permissions.js.map +1 -0
  198. package/dist/tools/validation/validateSpec.d.ts +22 -0
  199. package/dist/tools/validation/validateSpec.d.ts.map +1 -0
  200. package/dist/tools/validation/validateSpec.js +370 -0
  201. package/dist/tools/validation/validateSpec.js.map +1 -0
  202. package/package.json +58 -0
@@ -0,0 +1,257 @@
1
+ // generateConsumer — unified tool for callback handlers + stream consumers.
2
+ // Spec: docs/mcp/MCP_TOOLS.md § generateConsumer
3
+ // kind: "callback" → emits ExtentosCallbacks.{kt,swift} + bootstrap register patch
4
+ // kind: "stream" → emits ExtentosStreams.{kt,swift}
5
+ import { androidSourcePath, iosModuleName } from "../util/appPackage.js";
6
+ import { renderAndroidCallbacksRich, renderIosCallbacksRich, } from "../templates/callbackHandler.js";
7
+ import { renderAndroidStreams, renderIosStreams, } from "../templates/streamConsumer.js";
8
+ import { okResponse, errorResponse } from "../response.js";
9
+ export function handleGenerateConsumer(raw) {
10
+ const parsed = parseArgs(raw);
11
+ if ("error" in parsed)
12
+ return parsed.error;
13
+ const args = parsed.args;
14
+ return args.kind === "callback" ? buildCallback(args) : buildStream(args);
15
+ }
16
+ function buildCallback(args) {
17
+ const concise = args.responseFormat === "concise";
18
+ const files = [];
19
+ if (args.platform === "android") {
20
+ const src = androidSourcePath(args.appPackage);
21
+ files.push({
22
+ path: `app/src/main/java/${src}/extentos/ExtentosCallbacks.kt`,
23
+ action: "create_or_merge",
24
+ content: renderAndroidCallbacksRich(args.appPackage, args.handlers, concise),
25
+ });
26
+ files.push({
27
+ path: `app/src/main/java/${src}/extentos/ExtentosBootstrap.kt`,
28
+ action: "patch",
29
+ content: androidBootstrapRegisterSnippet(),
30
+ });
31
+ }
32
+ else {
33
+ const mod = iosModuleName(args.appPackage);
34
+ files.push({
35
+ path: `Sources/${mod}/Extentos/ExtentosCallbacks.swift`,
36
+ action: "create_or_merge",
37
+ content: renderIosCallbacksRich(args.handlers, concise),
38
+ });
39
+ files.push({
40
+ path: `Sources/${mod}/Extentos/ExtentosBootstrap.swift`,
41
+ action: "patch",
42
+ content: iosBootstrapRegisterSnippet(),
43
+ });
44
+ }
45
+ const handlersGenerated = args.handlers.map((h) => h.name);
46
+ const summary = `Generated callback handler with ${handlersGenerated.length} stub${handlersGenerated.length === 1 ? "" : "s"}${handlersGenerated.length ? " (" + handlersGenerated.join(", ") + ")" : ""}. Bootstrap patch registers the handler in the EXTENTOS-GENERATED-START:dispatch region. BYOK — fill in your provider client inside USER-CODE blocks.`;
47
+ const response = {
48
+ files,
49
+ manifestPatch: {
50
+ generatedFilesUpdated: [files[0].path],
51
+ integrationAdded: { handlerNames: handlersGenerated },
52
+ },
53
+ handlersGenerated,
54
+ summary,
55
+ };
56
+ return okResponse(response);
57
+ }
58
+ function buildStream(args) {
59
+ const concise = args.responseFormat === "concise";
60
+ const files = [];
61
+ if (args.platform === "android") {
62
+ const src = androidSourcePath(args.appPackage);
63
+ files.push({
64
+ path: `app/src/main/java/${src}/extentos/ExtentosStreams.kt`,
65
+ action: "create_or_merge",
66
+ content: renderAndroidStreams(args.appPackage, args.streams, args.scope, concise),
67
+ });
68
+ }
69
+ else {
70
+ const mod = iosModuleName(args.appPackage);
71
+ files.push({
72
+ path: `Sources/${mod}/Extentos/ExtentosStreams.swift`,
73
+ action: "create_or_merge",
74
+ content: renderIosStreams(args.streams, args.scope, concise),
75
+ });
76
+ }
77
+ const streamIds = args.streams.map((s) => s.id);
78
+ const summary = `Generated stream consumers for ${streamIds.length} stream${streamIds.length === 1 ? "" : "s"}${streamIds.length ? " (" + streamIds.join(", ") + ")" : ""}. Scope: ${args.scope}.`;
79
+ const response = {
80
+ files,
81
+ manifestPatch: {
82
+ generatedFilesUpdated: [files[0].path],
83
+ integrationAdded: { streams: args.streams.map((s) => s.type).sort() },
84
+ streamsAdded: streamIds,
85
+ },
86
+ summary,
87
+ };
88
+ if (args.platform === "android") {
89
+ const deltas = androidStreamPermissions(args.streams);
90
+ if (deltas.added.length)
91
+ response.permissionsDelta = deltas;
92
+ }
93
+ else {
94
+ const infoPlist = iosStreamInfoPlist(args.streams);
95
+ if (Object.keys(infoPlist.added).length)
96
+ response.infoPlistPatch = infoPlist;
97
+ }
98
+ return okResponse(response);
99
+ }
100
+ function androidStreamPermissions(streams) {
101
+ const set = new Set();
102
+ for (const s of streams) {
103
+ if (s.type === "video_frames" || s.type === "outgoing_video_stream")
104
+ set.add("android.permission.CAMERA");
105
+ if (s.type === "audio_chunks" ||
106
+ s.type === "transcription_incremental" ||
107
+ s.type === "outgoing_audio_stream")
108
+ set.add("android.permission.RECORD_AUDIO");
109
+ set.add("android.permission.FOREGROUND_SERVICE");
110
+ }
111
+ const added = [...set].sort();
112
+ return {
113
+ added,
114
+ manifestEntries: added.map((p) => `<uses-permission android:name="${p}" />`),
115
+ };
116
+ }
117
+ function iosStreamInfoPlist(streams) {
118
+ const added = {};
119
+ for (const s of streams) {
120
+ if (s.type === "video_frames" || s.type === "outgoing_video_stream") {
121
+ added.NSCameraUsageDescription = "Used to capture photos and video from your glasses.";
122
+ }
123
+ if (s.type === "audio_chunks" ||
124
+ s.type === "transcription_incremental" ||
125
+ s.type === "outgoing_audio_stream") {
126
+ added.NSMicrophoneUsageDescription = "Used to capture audio from your glasses for voice commands.";
127
+ if (s.type === "transcription_incremental") {
128
+ added.NSSpeechRecognitionUsageDescription =
129
+ "Used to transcribe voice commands from your glasses.";
130
+ }
131
+ }
132
+ }
133
+ return { added };
134
+ }
135
+ function androidBootstrapRegisterSnippet() {
136
+ return (`Replace the body of the EXTENTOS-GENERATED-START:dispatch region in ExtentosBootstrap.kt with:\n\n` +
137
+ `// EXTENTOS-GENERATED-START:dispatch\n` +
138
+ `glasses.extensions.registerAppCallbackHandler(extentosCallbackHandler)\n` +
139
+ `// EXTENTOS-GENERATED-END:dispatch\n\n` +
140
+ `(add the import: import ${"${appPackage}"}.extentos.extentosCallbackHandler)`);
141
+ }
142
+ function iosBootstrapRegisterSnippet() {
143
+ return (`Replace the body of the EXTENTOS-GENERATED-START:dispatch region in ExtentosBootstrap.swift with:\n\n` +
144
+ `// EXTENTOS-GENERATED-START:dispatch\n` +
145
+ `glasses.extensions.registerAppCallbackHandler(ExtentosCallbacks())\n` +
146
+ `// EXTENTOS-GENERATED-END:dispatch\n`);
147
+ }
148
+ function parseArgs(raw) {
149
+ if (!raw || typeof raw !== "object") {
150
+ return {
151
+ error: errorResponse({
152
+ code: "invalid_arguments",
153
+ message: "generateConsumer requires an object argument.",
154
+ fixHint: 'Pass { kind: "callback" | "stream", appPackage, platform, ... }.',
155
+ retryable: false,
156
+ }),
157
+ };
158
+ }
159
+ const obj = raw;
160
+ const kind = obj.kind;
161
+ if (kind !== "callback" && kind !== "stream") {
162
+ return {
163
+ error: errorResponse({
164
+ code: "invalid_arguments",
165
+ message: `kind must be "callback" or "stream" (got ${JSON.stringify(kind)}).`,
166
+ fixHint: 'Pass kind: "callback" or "stream".',
167
+ retryable: false,
168
+ }),
169
+ };
170
+ }
171
+ if (typeof obj.appPackage !== "string" || !obj.appPackage) {
172
+ return errInvalid("appPackage is required and must be a non-empty string.", "Pass the developer's package/bundle id.");
173
+ }
174
+ if (obj.platform !== "android" && obj.platform !== "ios") {
175
+ return errInvalid(`platform must be "android" or "ios" (got ${JSON.stringify(obj.platform)}).`, 'Pass platform: "android" or "ios".');
176
+ }
177
+ const responseFormat = obj.responseFormat === "concise" ? "concise" : "detailed";
178
+ if (kind === "callback") {
179
+ if (!Array.isArray(obj.handlers)) {
180
+ return errInvalid("handlers is required when kind: \"callback\" and must be an array.", 'Pass handlers: [{ name, inputKeys?, service?, suggestedProvider? }, ...]');
181
+ }
182
+ const handlers = [];
183
+ for (const [i, raw] of obj.handlers.entries()) {
184
+ if (!raw || typeof raw !== "object") {
185
+ return errInvalid(`handlers[${i}] must be an object.`, "Each handler: { name, ... }.");
186
+ }
187
+ const h = raw;
188
+ if (typeof h.name !== "string" || !h.name) {
189
+ return errInvalid(`handlers[${i}].name is required.`, "Pass each handler's name.");
190
+ }
191
+ handlers.push({
192
+ name: h.name,
193
+ inputKeys: Array.isArray(h.inputKeys)
194
+ ? h.inputKeys.filter((k) => typeof k === "string")
195
+ : undefined,
196
+ service: typeof h.service === "string" ? h.service : undefined,
197
+ suggestedProvider: typeof h.suggestedProvider === "string" ? h.suggestedProvider : undefined,
198
+ });
199
+ }
200
+ return {
201
+ args: {
202
+ kind: "callback",
203
+ appPackage: obj.appPackage,
204
+ platform: obj.platform,
205
+ handlers,
206
+ responseFormat,
207
+ },
208
+ };
209
+ }
210
+ // kind: "stream"
211
+ if (!Array.isArray(obj.streams)) {
212
+ return errInvalid("streams is required when kind: \"stream\" and must be an array.", "Pass streams from the spec, each with { id, type }.");
213
+ }
214
+ const streams = [];
215
+ const validTypes = [
216
+ "video_frames",
217
+ "audio_chunks",
218
+ "transcription_incremental",
219
+ "outgoing_audio_stream",
220
+ "outgoing_video_stream",
221
+ ];
222
+ for (const [i, raw] of obj.streams.entries()) {
223
+ if (!raw || typeof raw !== "object") {
224
+ return errInvalid(`streams[${i}] must be an object.`, "Each stream: { id, type }.");
225
+ }
226
+ const s = raw;
227
+ if (typeof s.id !== "string" || !s.id) {
228
+ return errInvalid(`streams[${i}].id is required.`, "Give each stream a spec id.");
229
+ }
230
+ if (typeof s.type !== "string" || !validTypes.includes(s.type)) {
231
+ return errInvalid(`streams[${i}].type must be one of: ${validTypes.join(", ")} (got ${JSON.stringify(s.type)}).`, "Copy the stream type verbatim from the spec's streams[] entry.");
232
+ }
233
+ streams.push({ id: s.id, type: s.type });
234
+ }
235
+ const scope = obj.scope === "connection" ? "connection" : "lifecycle";
236
+ return {
237
+ args: {
238
+ kind: "stream",
239
+ appPackage: obj.appPackage,
240
+ platform: obj.platform,
241
+ streams,
242
+ scope,
243
+ responseFormat,
244
+ },
245
+ };
246
+ }
247
+ function errInvalid(message, fixHint) {
248
+ return {
249
+ error: errorResponse({
250
+ code: "invalid_arguments",
251
+ message,
252
+ fixHint,
253
+ retryable: false,
254
+ }),
255
+ };
256
+ }
257
+ //# sourceMappingURL=generateConsumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateConsumer.js","sourceRoot":"","sources":["../../../src/tools/handlers/generateConsumer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type McpContent } from "../response.js";
2
+ export declare function handleGetCredentialGuide(raw: unknown): McpContent;
3
+ //# sourceMappingURL=getCredentialGuide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCredentialGuide.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/getCredentialGuide.ts"],"names":[],"mappings":"AAKA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA8I5E,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAcjE"}
@@ -0,0 +1,296 @@
1
+ // getCredentialGuide — step-by-step credential setup for Meta + BYOK providers.
2
+ // Spec: docs/mcp/MCP_TOOLS.md § getCredentialGuide
3
+ // Built-in provider guides for 9 services + custom fallback.
4
+ import { okResponse, errorResponse } from "../response.js";
5
+ const VALID_SERVICES = [
6
+ "anthropic",
7
+ "openai",
8
+ "google_cloud_vision",
9
+ "google_translate",
10
+ "google_gemini",
11
+ "deepl",
12
+ "azure_cognitive",
13
+ "aws_bedrock",
14
+ "huggingface",
15
+ "custom",
16
+ ];
17
+ const PROVIDER_GUIDES = {
18
+ anthropic: {
19
+ label: "Anthropic",
20
+ portalUrl: "https://console.anthropic.com/settings/keys",
21
+ keyName: "ANTHROPIC_API_KEY",
22
+ steps: [
23
+ "Create a workspace at console.anthropic.com and add billing.",
24
+ "Navigate to Settings → API Keys → Create Key.",
25
+ "Copy the key (it's only shown once).",
26
+ "Store as ANTHROPIC_API_KEY in your secrets store (never commit to git).",
27
+ ],
28
+ docsUrl: "https://docs.anthropic.com/en/api/getting-started",
29
+ },
30
+ openai: {
31
+ label: "OpenAI",
32
+ portalUrl: "https://platform.openai.com/api-keys",
33
+ keyName: "OPENAI_API_KEY",
34
+ steps: [
35
+ "Sign in at platform.openai.com and add billing.",
36
+ "Navigate to API Keys → Create new secret key.",
37
+ "Set the desired model scopes for the key.",
38
+ "Store as OPENAI_API_KEY.",
39
+ ],
40
+ docsUrl: "https://platform.openai.com/docs/quickstart",
41
+ },
42
+ google_cloud_vision: {
43
+ label: "Google Cloud Vision",
44
+ portalUrl: "https://console.cloud.google.com/apis/library/vision.googleapis.com",
45
+ keyName: "GCLOUD_VISION_API_KEY",
46
+ steps: [
47
+ "Create a Google Cloud project and enable billing.",
48
+ "Enable the Cloud Vision API.",
49
+ "Create an API key (APIs & Services → Credentials → Create credentials → API key).",
50
+ "Restrict the key to the Vision API.",
51
+ ],
52
+ docsUrl: "https://cloud.google.com/vision/docs/setup",
53
+ },
54
+ google_translate: {
55
+ label: "Google Cloud Translation",
56
+ portalUrl: "https://console.cloud.google.com/apis/library/translate.googleapis.com",
57
+ keyName: "GCLOUD_TRANSLATE_API_KEY",
58
+ steps: [
59
+ "Create a Google Cloud project and enable billing.",
60
+ "Enable the Cloud Translation API.",
61
+ "Create an API key restricted to the Translation API.",
62
+ ],
63
+ docsUrl: "https://cloud.google.com/translate/docs/setup",
64
+ },
65
+ google_gemini: {
66
+ label: "Google Gemini",
67
+ portalUrl: "https://aistudio.google.com/app/apikey",
68
+ keyName: "GEMINI_API_KEY",
69
+ steps: [
70
+ "Sign in at aistudio.google.com.",
71
+ "Click Get API key → Create API key in existing project (or new).",
72
+ "Store as GEMINI_API_KEY.",
73
+ ],
74
+ docsUrl: "https://ai.google.dev/gemini-api/docs/api-key",
75
+ },
76
+ deepl: {
77
+ label: "DeepL",
78
+ portalUrl: "https://www.deepl.com/pro-api",
79
+ keyName: "DEEPL_AUTH_KEY",
80
+ steps: [
81
+ "Sign up for DeepL API Free or Pro.",
82
+ "Go to Account → Authentication Key for DeepL API.",
83
+ "Store as DEEPL_AUTH_KEY.",
84
+ ],
85
+ docsUrl: "https://developers.deepl.com/docs",
86
+ },
87
+ azure_cognitive: {
88
+ label: "Azure Cognitive Services",
89
+ portalUrl: "https://portal.azure.com/#create/Microsoft.CognitiveServicesAllInOne",
90
+ keyName: "AZURE_COGNITIVE_KEY",
91
+ steps: [
92
+ "Create a Cognitive Services resource in the Azure portal.",
93
+ "Copy Key 1 + Endpoint from Keys and Endpoint.",
94
+ "Store as AZURE_COGNITIVE_KEY + AZURE_COGNITIVE_ENDPOINT.",
95
+ ],
96
+ docsUrl: "https://learn.microsoft.com/en-us/azure/ai-services/",
97
+ },
98
+ aws_bedrock: {
99
+ label: "AWS Bedrock",
100
+ portalUrl: "https://console.aws.amazon.com/bedrock/",
101
+ keyName: "AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY",
102
+ steps: [
103
+ "Enable model access under Bedrock → Model access.",
104
+ "Create an IAM user with bedrock:InvokeModel permission.",
105
+ "Generate access keys for the user.",
106
+ "Store as AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY + AWS_REGION.",
107
+ ],
108
+ docsUrl: "https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started.html",
109
+ },
110
+ huggingface: {
111
+ label: "Hugging Face",
112
+ portalUrl: "https://huggingface.co/settings/tokens",
113
+ keyName: "HF_TOKEN",
114
+ steps: [
115
+ "Sign in at huggingface.co.",
116
+ "Settings → Access Tokens → New token (Read or Write as needed).",
117
+ "Store as HF_TOKEN.",
118
+ ],
119
+ docsUrl: "https://huggingface.co/docs/api-inference/en/index",
120
+ },
121
+ };
122
+ export function handleGetCredentialGuide(raw) {
123
+ const parsed = parseArgs(raw);
124
+ if ("error" in parsed)
125
+ return parsed.error;
126
+ const { spec, platform, services } = parsed;
127
+ const derivedServices = services.length ? services : deriveServicesFromSpec(spec);
128
+ const handlers = collectHandlerNames(spec);
129
+ const metaCredentials = buildMetaCredentials(platform);
130
+ const serviceCredentials = derivedServices.map((svc) => buildServiceGuide(svc, handlers, platform));
131
+ const summary = buildSummary(platform, metaCredentials, serviceCredentials);
132
+ return okResponse({ metaCredentials, serviceCredentials, summary });
133
+ }
134
+ function buildMetaCredentials(platform) {
135
+ const steps = [
136
+ "Create an app at https://developers.facebook.com/apps/ (Consumer type is fine for MVP).",
137
+ "Add the Meta Wearables Developer Access Toolkit (DAT) product to the app.",
138
+ `Register your ${platform === "android" ? "Android package + SHA-256 signing signature" : "iOS bundle ID + Team ID"} under DAT → Configuration.`,
139
+ "Copy Meta App ID and Client Token from the DAT configuration page.",
140
+ platform === "android"
141
+ ? "Paste them into extentos.manifest.json under credentials.metaAppId + credentials.metaClientToken."
142
+ : "Paste them into Info.plist under the MWDAT dict (MetaAppID, ClientToken, TeamID, AppLinkURLScheme).",
143
+ ];
144
+ const configChange = platform === "android"
145
+ ? {
146
+ file: "extentos.manifest.json",
147
+ keys: ["credentials.metaAppId", "credentials.metaClientToken"],
148
+ example: `{\n "credentials": {\n "metaAppId": "<your Meta App ID>",\n "metaClientToken": "<your Client Token>"\n }\n}`,
149
+ }
150
+ : {
151
+ file: "Info.plist",
152
+ keys: ["MWDAT.MetaAppID", "MWDAT.ClientToken", "MWDAT.TeamID", "MWDAT.AppLinkURLScheme"],
153
+ example: `<key>MWDAT</key>\n<dict>\n <key>MetaAppID</key><string><your Meta App ID></string>\n <key>ClientToken</key><string><your Client Token></string>\n <key>TeamID</key><string>NKSJ4DJ375</string>\n <key>AppLinkURLScheme</key><string>yourapp://</string>\n</dict>`,
154
+ };
155
+ return { required: true, steps, configChange };
156
+ }
157
+ function buildServiceGuide(service, handlers, platform) {
158
+ const forHandlers = handlers.filter((h) => guessServiceForHandler(h) === service);
159
+ if (service === "custom") {
160
+ return {
161
+ service,
162
+ forHandlers,
163
+ steps: [
164
+ "Create an account with your chosen provider and obtain an API key.",
165
+ "Decide on a key storage strategy: Android keystore / iOS Keychain / BuildConfig / Info.plist / server proxy.",
166
+ "Pass the key to your callback handler via dependency injection or constructor args.",
167
+ ],
168
+ codeExample: sampleCode(platform, "YOUR_API_KEY"),
169
+ };
170
+ }
171
+ const guide = PROVIDER_GUIDES[service];
172
+ return {
173
+ service,
174
+ forHandlers,
175
+ steps: [
176
+ `Portal: ${guide.portalUrl}`,
177
+ ...guide.steps,
178
+ `Docs: ${guide.docsUrl}`,
179
+ ],
180
+ codeExample: sampleCode(platform, guide.keyName),
181
+ };
182
+ }
183
+ function sampleCode(platform, keyName) {
184
+ if (platform === "android") {
185
+ return (`// build.gradle.kts (app)\n` +
186
+ `android { defaultConfig { buildConfigField("String", "${keyName}", "\\"${"$"}{System.getenv(\\"${keyName}\\") ?: \\"\\"}\\"") } }\n\n` +
187
+ `// ExtentosCallbacks.kt\n` +
188
+ `private suspend fun handleVision(call: AppCall): AppCallbackResult {\n` +
189
+ ` val client = YourClient(apiKey = BuildConfig.${keyName})\n` +
190
+ ` return client.analyze(call.input)\n` +
191
+ `}`);
192
+ }
193
+ return (`// Info.plist\n` +
194
+ `<key>${keyName}</key>\n<string>$(${keyName})</string> <!-- inject via xcconfig, not checked in -->\n\n` +
195
+ `// ExtentosCallbacks.swift\n` +
196
+ `private func handleVision(payload: JSONValue, context: CallbackContext) async -> JSONValue {\n` +
197
+ ` let key = Bundle.main.object(forInfoDictionaryKey: "${keyName}") as? String ?? ""\n` +
198
+ ` let client = YourClient(apiKey: key)\n` +
199
+ ` return try await client.analyze(payload)\n` +
200
+ `}`);
201
+ }
202
+ function deriveServicesFromSpec(spec) {
203
+ const handlers = collectHandlerNames(spec);
204
+ const set = new Set();
205
+ for (const h of handlers) {
206
+ set.add(guessServiceForHandler(h));
207
+ }
208
+ if (set.size === 0)
209
+ set.add("custom");
210
+ return [...set].sort();
211
+ }
212
+ function guessServiceForHandler(name) {
213
+ const n = name.toLowerCase();
214
+ if (/translate|translation/.test(n))
215
+ return "google_translate";
216
+ if (/vision|scene|describe|identify|object|photo|image/.test(n))
217
+ return "anthropic";
218
+ if (/gemini/.test(n))
219
+ return "google_gemini";
220
+ if (/openai|gpt|chat/.test(n))
221
+ return "openai";
222
+ return "custom";
223
+ }
224
+ function collectHandlerNames(spec) {
225
+ const set = new Set();
226
+ const visit = (actions) => {
227
+ if (!Array.isArray(actions))
228
+ return;
229
+ for (const a of actions) {
230
+ if (!a || typeof a !== "object")
231
+ continue;
232
+ const rec = a;
233
+ if (rec.type === "app_callback" && typeof rec.handler === "string")
234
+ set.add(rec.handler);
235
+ if (rec.type === "branch") {
236
+ visit(rec.then);
237
+ visit(rec.else);
238
+ }
239
+ if (rec.type === "retry_with_backoff" || rec.type === "when_connected") {
240
+ if (rec.action)
241
+ visit([rec.action]);
242
+ }
243
+ }
244
+ };
245
+ const triggers = Array.isArray(spec.triggers) ? spec.triggers : [];
246
+ for (const t of triggers)
247
+ visit(t.actions);
248
+ return [...set].sort();
249
+ }
250
+ function buildSummary(platform, meta, services) {
251
+ const svcCount = services.length;
252
+ const withHandlers = services.filter((s) => s.forHandlers.length > 0).length;
253
+ return `Credential guide for ${platform}: Meta DAT ${meta.required ? "required" : "not required"} (${meta.steps.length} steps). ${svcCount} BYOK service${svcCount === 1 ? "" : "s"}${withHandlers ? ` (${withHandlers} handler-linked)` : ""}. Keys are stored in platform-local secure storage — the Extentos library never proxies or relays them.`;
254
+ }
255
+ function parseArgs(raw) {
256
+ if (!raw || typeof raw !== "object") {
257
+ return {
258
+ error: errorResponse({
259
+ code: "invalid_arguments",
260
+ message: "getCredentialGuide requires { spec, platform }.",
261
+ fixHint: 'Pass { spec, platform: "android" | "ios", services?: [...] }.',
262
+ retryable: false,
263
+ }),
264
+ };
265
+ }
266
+ const obj = raw;
267
+ if (!obj.spec || typeof obj.spec !== "object") {
268
+ return errInvalid("spec is required.", "Pass the current spec.");
269
+ }
270
+ if (obj.platform !== "android" && obj.platform !== "ios") {
271
+ return errInvalid(`platform must be "android" or "ios" (got ${JSON.stringify(obj.platform)}).`, 'Pass platform: "android" or "ios".');
272
+ }
273
+ const services = [];
274
+ if (Array.isArray(obj.services)) {
275
+ for (const s of obj.services) {
276
+ if (typeof s === "string" && VALID_SERVICES.includes(s)) {
277
+ services.push(s);
278
+ }
279
+ else {
280
+ return errInvalid(`services contains invalid entry ${JSON.stringify(s)}.`, `Valid services: ${VALID_SERVICES.join(", ")}.`);
281
+ }
282
+ }
283
+ }
284
+ return { spec: obj.spec, platform: obj.platform, services };
285
+ }
286
+ function errInvalid(message, fixHint) {
287
+ return {
288
+ error: errorResponse({
289
+ code: "invalid_arguments",
290
+ message,
291
+ fixHint,
292
+ retryable: false,
293
+ }),
294
+ };
295
+ }
296
+ //# sourceMappingURL=getCredentialGuide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCredentialGuide.js","sourceRoot":"","sources":["../../../src/tools/handlers/getCredentialGuide.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type McpContent } from "../response.js";
2
+ export declare function handleGetEventLog(raw: unknown): Promise<McpContent>;
3
+ //# sourceMappingURL=getEventLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEventLog.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/getEventLog.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAmC5E,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAiFzE"}