@extentos/mcp-server 0.0.56 → 0.0.58

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 (83) hide show
  1. package/README.md +22 -62
  2. package/dist/generated/events.d.ts +3 -3
  3. package/dist/generated/events.d.ts.map +1 -1
  4. package/dist/generated/events.js +11 -6
  5. package/dist/generated/events.js.map +1 -1
  6. package/dist/generated/schemas.d.ts.map +1 -1
  7. package/dist/generated/schemas.js +41 -124
  8. package/dist/generated/schemas.js.map +1 -1
  9. package/dist/index.js +4 -3
  10. package/dist/index.js.map +1 -1
  11. package/dist/tools/data/capabilityPatterns.d.ts +11 -0
  12. package/dist/tools/data/capabilityPatterns.d.ts.map +1 -0
  13. package/dist/tools/data/capabilityPatterns.js +289 -0
  14. package/dist/tools/data/capabilityPatterns.js.map +1 -0
  15. package/dist/tools/data/codeExamples.d.ts +15 -0
  16. package/dist/tools/data/codeExamples.d.ts.map +1 -0
  17. package/dist/tools/data/codeExamples.js +494 -0
  18. package/dist/tools/data/codeExamples.js.map +1 -0
  19. package/dist/tools/data/version.js +7 -7
  20. package/dist/tools/definitions.d.ts.map +1 -1
  21. package/dist/tools/definitions.js +99 -181
  22. package/dist/tools/definitions.js.map +1 -1
  23. package/dist/tools/docs/index.d.ts.map +1 -1
  24. package/dist/tools/docs/index.js +321 -803
  25. package/dist/tools/docs/index.js.map +1 -1
  26. package/dist/tools/handlers/createSimulatorSession.d.ts.map +1 -1
  27. package/dist/tools/handlers/createSimulatorSession.js +36 -51
  28. package/dist/tools/handlers/createSimulatorSession.js.map +1 -1
  29. package/dist/tools/handlers/generateConnectionModule.js +14 -15
  30. package/dist/tools/handlers/generateConnectionModule.js.map +1 -1
  31. package/dist/tools/handlers/getCapabilityGuide.d.ts +3 -0
  32. package/dist/tools/handlers/getCapabilityGuide.d.ts.map +1 -0
  33. package/dist/tools/handlers/getCapabilityGuide.js +47 -0
  34. package/dist/tools/handlers/getCapabilityGuide.js.map +1 -0
  35. package/dist/tools/handlers/getCodeExample.d.ts +3 -0
  36. package/dist/tools/handlers/getCodeExample.d.ts.map +1 -0
  37. package/dist/tools/handlers/getCodeExample.js +50 -0
  38. package/dist/tools/handlers/getCodeExample.js.map +1 -0
  39. package/dist/tools/handlers/getCredentialGuide.d.ts.map +1 -1
  40. package/dist/tools/handlers/getCredentialGuide.js +44 -84
  41. package/dist/tools/handlers/getCredentialGuide.js.map +1 -1
  42. package/dist/tools/handlers/getEventLog.d.ts.map +1 -1
  43. package/dist/tools/handlers/getEventLog.js +7 -8
  44. package/dist/tools/handlers/getEventLog.js.map +1 -1
  45. package/dist/tools/handlers/getPermissions.d.ts.map +1 -1
  46. package/dist/tools/handlers/getPermissions.js +27 -12
  47. package/dist/tools/handlers/getPermissions.js.map +1 -1
  48. package/dist/tools/handlers/getPlatformInfo.d.ts.map +1 -1
  49. package/dist/tools/handlers/getPlatformInfo.js +112 -46
  50. package/dist/tools/handlers/getPlatformInfo.js.map +1 -1
  51. package/dist/tools/handlers/getProductionChecklist.d.ts.map +1 -1
  52. package/dist/tools/handlers/getProductionChecklist.js +86 -120
  53. package/dist/tools/handlers/getProductionChecklist.js.map +1 -1
  54. package/dist/tools/handlers/getSimulatorStatus.d.ts.map +1 -1
  55. package/dist/tools/handlers/getSimulatorStatus.js +1 -3
  56. package/dist/tools/handlers/getSimulatorStatus.js.map +1 -1
  57. package/dist/tools/handlers/getVoiceCommandGuidance.d.ts.map +1 -1
  58. package/dist/tools/handlers/getVoiceCommandGuidance.js +18 -45
  59. package/dist/tools/handlers/getVoiceCommandGuidance.js.map +1 -1
  60. package/dist/tools/handlers/inspectIntegration.d.ts.map +1 -1
  61. package/dist/tools/handlers/inspectIntegration.js +14 -52
  62. package/dist/tools/handlers/inspectIntegration.js.map +1 -1
  63. package/dist/tools/handlers/validateIntegration.d.ts.map +1 -1
  64. package/dist/tools/handlers/validateIntegration.js +83 -167
  65. package/dist/tools/handlers/validateIntegration.js.map +1 -1
  66. package/dist/tools/registry.d.ts.map +1 -1
  67. package/dist/tools/registry.js +6 -11
  68. package/dist/tools/registry.js.map +1 -1
  69. package/dist/tools/templates/androidBootstrap.d.ts.map +1 -1
  70. package/dist/tools/templates/androidBootstrap.js +20 -47
  71. package/dist/tools/templates/androidBootstrap.js.map +1 -1
  72. package/dist/tools/templates/iosBootstrap.d.ts.map +1 -1
  73. package/dist/tools/templates/iosBootstrap.js +24 -34
  74. package/dist/tools/templates/iosBootstrap.js.map +1 -1
  75. package/dist/tools/util/manifest.d.ts +0 -61
  76. package/dist/tools/util/manifest.d.ts.map +1 -1
  77. package/dist/tools/util/manifest.js +14 -112
  78. package/dist/tools/util/manifest.js.map +1 -1
  79. package/dist/tools/util/permissions.d.ts +4 -7
  80. package/dist/tools/util/permissions.d.ts.map +1 -1
  81. package/dist/tools/util/permissions.js +151 -161
  82. package/dist/tools/util/permissions.js.map +1 -1
  83. package/package.json +1 -6
@@ -1,9 +1,17 @@
1
- // Shared derivations for spec → platform permissions / Info.plist / DAT needs.
2
- // Consumed by initSpec, generateConsumer, getPermissions, and validateSpec's stats.
1
+ // Per-capability derivations: which Android permissions, iOS Info.plist
2
+ // keys, foreground-service types, and Meta DAT scopes does each SDK
3
+ // capability require? Replaces the pre-pivot spec walker that derived
4
+ // the same info from spec.blocks / spec.streams / spec.triggers.
5
+ //
6
+ // "Capability" names match the post-pivot `getPlatformInfo.features[].name`
7
+ // catalog (capture_photo, capture_video, record_audio, video_frames,
8
+ // audio_chunks, transcription_incremental, outgoing_audio_stream,
9
+ // outgoing_video_stream, voice_command, wake_word, push_to_talk,
10
+ // location_updated, phone_notification_forwarded, incoming_call_detected,
11
+ // etc.). Plus one pseudo-capability `capture_video_with_audio` to flag
12
+ // the include_audio=true configuration distinctly so apps that capture
13
+ // silent video don't over-declare RECORD_AUDIO.
3
14
  import { VERSION_INFO } from "../data/version.js";
4
- // Single source of truth for Android SDK levels lives in data/version.ts.
5
- // Hardcoding them here drifted (lib bumped 34→35; this file didn't) and broke
6
- // fresh-scaffold builds. Do not re-introduce literal values.
7
15
  const ANDROID_MIN_SDK = VERSION_INFO.android.minimumSdk;
8
16
  const ANDROID_COMPILE_SDK = VERSION_INFO.android.compileSdk;
9
17
  const ANDROID_TARGET_SDK = VERSION_INFO.android.targetSdk;
@@ -14,167 +22,167 @@ const IOS_PRIVACY_STRINGS = {
14
22
  NSLocationWhenInUseUsageDescription: "Used to deliver location-aware glasses experiences.",
15
23
  NSBluetoothAlwaysUsageDescription: "Used to connect to your Meta Ray-Ban glasses.",
16
24
  };
17
- const IOS_REASONS = {
18
- NSCameraUsageDescription: "capture_photo / capture_video block or video_frames / outgoing_video_stream.",
19
- NSMicrophoneUsageDescription: "record_audio block, voice triggers, or audio_chunks / transcription_incremental stream.",
20
- NSSpeechRecognitionUsageDescription: "voice_command / wake_word / push_to_talk trigger or transcription_incremental stream.",
21
- NSLocationWhenInUseUsageDescription: "location_updated trigger.",
22
- NSBluetoothAlwaysUsageDescription: "Required by Meta DAT SDK for all glasses connections.",
25
+ const CAPABILITY_NEEDS = {
26
+ capture_photo: {
27
+ android: ["android.permission.CAMERA"],
28
+ iosPlist: ["NSCameraUsageDescription"],
29
+ datScope: "glasses.camera.photo",
30
+ },
31
+ capture_video: {
32
+ android: ["android.permission.CAMERA"],
33
+ iosPlist: ["NSCameraUsageDescription"],
34
+ datScope: "glasses.camera.video",
35
+ },
36
+ // Distinct from capture_video — declare this capability if any capture_video
37
+ // call sets include_audio=true. Apps that only do silent video skip it so
38
+ // they don't over-declare RECORD_AUDIO.
39
+ capture_video_with_audio: {
40
+ android: ["android.permission.RECORD_AUDIO"],
41
+ iosPlist: ["NSMicrophoneUsageDescription"],
42
+ },
43
+ record_audio: {
44
+ android: ["android.permission.RECORD_AUDIO"],
45
+ iosPlist: ["NSMicrophoneUsageDescription", "NSSpeechRecognitionUsageDescription"],
46
+ datScope: "glasses.audio.record",
47
+ },
48
+ video_frames: {
49
+ android: ["android.permission.CAMERA"],
50
+ androidForegroundType: "camera",
51
+ iosPlist: ["NSCameraUsageDescription"],
52
+ datScope: "glasses.camera.stream",
53
+ },
54
+ audio_chunks: {
55
+ android: ["android.permission.RECORD_AUDIO"],
56
+ androidForegroundType: "microphone",
57
+ iosPlist: ["NSMicrophoneUsageDescription", "NSSpeechRecognitionUsageDescription"],
58
+ datScope: "glasses.audio.stream",
59
+ },
60
+ transcription_incremental: {
61
+ android: ["android.permission.RECORD_AUDIO"],
62
+ androidForegroundType: "microphone",
63
+ iosPlist: ["NSMicrophoneUsageDescription", "NSSpeechRecognitionUsageDescription"],
64
+ datScope: "glasses.audio.stream",
65
+ },
66
+ outgoing_audio_stream: {
67
+ android: ["android.permission.RECORD_AUDIO"],
68
+ androidForegroundType: "microphone",
69
+ iosPlist: ["NSMicrophoneUsageDescription"],
70
+ datScope: "glasses.audio.stream",
71
+ },
72
+ outgoing_video_stream: {
73
+ android: ["android.permission.CAMERA"],
74
+ androidForegroundType: "camera",
75
+ iosPlist: ["NSCameraUsageDescription"],
76
+ datScope: "glasses.camera.stream",
77
+ },
78
+ voice_command: {
79
+ android: ["android.permission.RECORD_AUDIO"],
80
+ iosPlist: ["NSMicrophoneUsageDescription", "NSSpeechRecognitionUsageDescription"],
81
+ },
82
+ wake_word: {
83
+ android: ["android.permission.RECORD_AUDIO"],
84
+ iosPlist: ["NSMicrophoneUsageDescription", "NSSpeechRecognitionUsageDescription"],
85
+ },
86
+ push_to_talk: {
87
+ android: ["android.permission.RECORD_AUDIO"],
88
+ iosPlist: ["NSMicrophoneUsageDescription", "NSSpeechRecognitionUsageDescription"],
89
+ },
90
+ location_updated: {
91
+ android: ["android.permission.ACCESS_FINE_LOCATION"],
92
+ iosPlist: ["NSLocationWhenInUseUsageDescription"],
93
+ },
94
+ phone_notification_forwarded: {
95
+ android: ["android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"],
96
+ needsNotificationListener: true,
97
+ },
98
+ incoming_call_detected: {
99
+ android: ["android.permission.READ_PHONE_STATE"],
100
+ },
23
101
  };
24
- export function derivePermissions(blocks, streams, triggers) {
102
+ const IOS_REASONS_BY_KEY = {
103
+ NSCameraUsageDescription: () => "capture_photo / capture_video / video_frames / outgoing_video_stream.",
104
+ NSMicrophoneUsageDescription: () => "record_audio / capture_video_with_audio / voice_command / wake_word / push_to_talk / audio_chunks / transcription_incremental / outgoing_audio_stream.",
105
+ NSSpeechRecognitionUsageDescription: () => "voice_command / wake_word / push_to_talk / record_audio / transcription_incremental / audio_chunks.",
106
+ NSLocationWhenInUseUsageDescription: () => "location_updated.",
107
+ NSBluetoothAlwaysUsageDescription: () => "Required by Meta DAT SDK for all glasses connections.",
108
+ };
109
+ const NOTIFICATION_SERVICE_DECLARATION = `<service\n android:name="com.extentos.glasses.core.notifications.ExtentosNotificationListenerService"\n android:label="Notification Mirroring"\n android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"\n android:exported="false">\n <intent-filter>\n <action android:name="android.service.notification.NotificationListenerService" />\n </intent-filter>\n</service>`;
110
+ const NOTIFICATION_DEV_INSTRUCTIONS = "Add the service declaration above inside <application> in AndroidManifest.xml. At runtime, prompt the user to grant Notification Access via NotificationAccessHelper.openSettings(context). The user must enable the toggle in system Settings → Notifications → Notification access; this permission cannot be requested programmatically.";
111
+ function knownCapabilities(input) {
25
112
  const set = new Set();
26
- const add = (v) => set.add(v);
27
- for (const b of blocks) {
28
- if (b.type === "capture_photo" || b.type === "capture_video")
29
- add("android.permission.CAMERA");
30
- if (b.type === "record_audio")
31
- add("android.permission.RECORD_AUDIO");
32
- // capture_video defaults to include_audio=false per SPEC_SCHEMA.md — only
33
- // explicit-true configuration triggers RECORD_AUDIO. Adding it
34
- // unconditionally would over-declare the permission for any video-capture
35
- // app that doesn't actually use audio (a user-trust problem on its own).
36
- if (b.type === "capture_video" && isIncludeAudioTrue(b))
37
- add("android.permission.RECORD_AUDIO");
38
- }
39
- for (const st of streams) {
40
- if (st.type === "video_frames" || st.type === "outgoing_video_stream")
41
- add("android.permission.CAMERA");
42
- if (st.type === "audio_chunks" ||
43
- st.type === "transcription_incremental" ||
44
- st.type === "outgoing_audio_stream")
45
- add("android.permission.RECORD_AUDIO");
46
- add("android.permission.FOREGROUND_SERVICE");
47
- }
48
- for (const t of triggers) {
49
- if (t.type === "voice_command" || t.type === "wake_word" || t.type === "push_to_talk")
50
- add("android.permission.RECORD_AUDIO");
51
- if (t.type === "location_updated")
52
- add("android.permission.ACCESS_FINE_LOCATION");
53
- if (t.type === "phone_notification_forwarded")
54
- add("android.permission.BIND_NOTIFICATION_LISTENER_SERVICE");
55
- if (t.type === "incoming_call_detected")
56
- add("android.permission.READ_PHONE_STATE");
57
- }
58
- add("android.permission.BLUETOOTH_CONNECT");
59
- add("android.permission.BLUETOOTH_SCAN");
60
- add("android.permission.INTERNET");
61
- return [...set].sort();
113
+ for (const c of input)
114
+ if (typeof c === "string" && CAPABILITY_NEEDS[c])
115
+ set.add(c);
116
+ return set;
62
117
  }
63
- export function deriveAndroid(spec) {
64
- const blocks = arr(spec.blocks);
65
- const streams = arr(spec.streams);
66
- const triggers = arr(spec.triggers);
67
- const permissions = derivePermissions(blocks, streams, triggers);
68
- const manifestEntries = permissions.map((p) => `<uses-permission android:name="${p}" />`);
118
+ export function deriveAndroidFromCapabilities(capabilities) {
119
+ const caps = knownCapabilities(capabilities);
120
+ const perms = new Set([
121
+ "android.permission.BLUETOOTH_CONNECT",
122
+ "android.permission.BLUETOOTH_SCAN",
123
+ "android.permission.INTERNET",
124
+ ]);
69
125
  const fgTypes = new Set();
70
- for (const s of streams) {
71
- if (s.type === "video_frames" || s.type === "outgoing_video_stream")
72
- fgTypes.add("camera");
73
- if (s.type === "audio_chunks" ||
74
- s.type === "transcription_incremental" ||
75
- s.type === "outgoing_audio_stream")
76
- fgTypes.add("microphone");
126
+ let needsNotificationListener = false;
127
+ // Streams (anything with foreground type) implicitly need FOREGROUND_SERVICE.
128
+ let anyStream = false;
129
+ for (const name of caps) {
130
+ const need = CAPABILITY_NEEDS[name];
131
+ if (need.android)
132
+ for (const p of need.android)
133
+ perms.add(p);
134
+ if (need.androidForegroundType) {
135
+ fgTypes.add(need.androidForegroundType);
136
+ anyStream = true;
137
+ }
138
+ if (need.needsNotificationListener)
139
+ needsNotificationListener = true;
77
140
  }
78
- // Foreground service for streams: the lib does not yet provide an
79
- // ExtentosForegroundService class. Earlier versions emitted a manifest
80
- // entry pointing at `.extentos.ExtentosForegroundService` — pasting that
81
- // would crash with ClassNotFoundException at runtime. Honest stance now:
82
- // surface that the spec USES streams (so devs know the gap exists),
83
- // expose the foregroundServiceType the eventual service would need, but
84
- // do NOT emit a phantom <service> declaration. When the lib ships a real
85
- // class (Flaw #5b), this returns the real declaration and validation
86
- // re-tightens to severity: error.
87
- const fgRequired = fgTypes.size > 0;
88
- const fgDecl = null;
89
- // Phone-notification triggers need the lib's NotificationListenerService
90
- // declared in the consumer app's manifest. The lib provides the class;
91
- // the host must (1) declare it here and (2) call NotificationAccessHelper
92
- // .openSettings() so the user can grant Notification Access in system
93
- // Settings (the BIND_NOTIFICATION_LISTENER_SERVICE permission is
94
- // system-managed and cannot be requested programmatically).
95
- const needsNotificationListener = triggers.some((t) => t.type === "phone_notification_forwarded");
96
- const notifDecl = needsNotificationListener
97
- ? `<service\n android:name="com.extentos.glasses.core.notifications.ExtentosNotificationListenerService"\n android:label="Notification Mirroring"\n android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"\n android:exported="false">\n <intent-filter>\n <action android:name="android.service.notification.NotificationListenerService" />\n </intent-filter>\n</service>`
98
- : null;
99
- const notifInstructions = needsNotificationListener
100
- ? "Add the service declaration above inside <application> in AndroidManifest.xml. At runtime, prompt the user to grant Notification Access via NotificationAccessHelper.openSettings(context). The user must enable the toggle in system Settings → Notifications → Notification access; this permission cannot be requested programmatically."
101
- : null;
141
+ if (anyStream)
142
+ perms.add("android.permission.FOREGROUND_SERVICE");
143
+ const permissions = [...perms].sort();
144
+ const manifestEntries = permissions.map((p) => `<uses-permission android:name="${p}" />`);
102
145
  return {
103
146
  permissions,
104
147
  manifestEntries,
105
148
  foregroundService: {
106
- required: fgRequired,
149
+ required: fgTypes.size > 0,
107
150
  types: [...fgTypes].sort(),
108
- declaration: fgDecl,
151
+ declaration: null, // ExtentosForegroundService class not yet shipped; see permissions.ts comment in pre-pivot version.
109
152
  },
110
153
  notificationListener: {
111
154
  required: needsNotificationListener,
112
- declaration: notifDecl,
113
- devInstructions: notifInstructions,
155
+ declaration: needsNotificationListener ? NOTIFICATION_SERVICE_DECLARATION : null,
156
+ devInstructions: needsNotificationListener ? NOTIFICATION_DEV_INSTRUCTIONS : null,
114
157
  },
115
158
  minimumSdk: ANDROID_MIN_SDK,
116
159
  compileSdk: ANDROID_COMPILE_SDK,
117
160
  targetSdk: ANDROID_TARGET_SDK,
118
161
  };
119
162
  }
120
- export function deriveIos(spec) {
121
- const blocks = arr(spec.blocks);
122
- const streams = arr(spec.streams);
123
- const triggers = arr(spec.triggers);
124
- const needed = new Set();
125
- needed.add("NSBluetoothAlwaysUsageDescription");
126
- for (const b of blocks) {
127
- if (b.type === "capture_photo" || b.type === "capture_video")
128
- needed.add("NSCameraUsageDescription");
129
- if (b.type === "record_audio")
130
- needed.add("NSMicrophoneUsageDescription");
131
- if (b.type === "capture_video" && isIncludeAudioTrue(b))
132
- needed.add("NSMicrophoneUsageDescription");
133
- }
134
- for (const s of streams) {
135
- if (s.type === "video_frames" || s.type === "outgoing_video_stream")
136
- needed.add("NSCameraUsageDescription");
137
- if (s.type === "audio_chunks" ||
138
- s.type === "transcription_incremental" ||
139
- s.type === "outgoing_audio_stream") {
140
- needed.add("NSMicrophoneUsageDescription");
141
- needed.add("NSSpeechRecognitionUsageDescription");
142
- }
143
- }
144
- for (const t of triggers) {
145
- if (t.type === "voice_command" || t.type === "wake_word" || t.type === "push_to_talk") {
146
- needed.add("NSMicrophoneUsageDescription");
147
- needed.add("NSSpeechRecognitionUsageDescription");
148
- }
149
- if (t.type === "location_updated")
150
- needed.add("NSLocationWhenInUseUsageDescription");
163
+ export function deriveIosFromCapabilities(capabilities) {
164
+ const caps = knownCapabilities(capabilities);
165
+ const needed = new Set(["NSBluetoothAlwaysUsageDescription"]);
166
+ for (const name of caps) {
167
+ const plist = CAPABILITY_NEEDS[name].iosPlist;
168
+ if (plist)
169
+ for (const k of plist)
170
+ needed.add(k);
151
171
  }
152
172
  const plistKeys = [...needed].sort().map((key) => ({
153
173
  key,
154
- value: IOS_PRIVACY_STRINGS[key] ?? "Required by this Extentos spec.",
155
- reason: IOS_REASONS[key] ?? "Required by this Extentos spec.",
174
+ value: IOS_PRIVACY_STRINGS[key] ?? "Required by this Extentos integration.",
175
+ reason: IOS_REASONS_BY_KEY[key]?.(caps) ?? "Required by this Extentos integration.",
156
176
  }));
157
177
  return { plistKeys };
158
178
  }
159
- export function deriveMetaDat(spec) {
160
- const blocks = arr(spec.blocks);
161
- const streams = arr(spec.streams);
179
+ export function deriveMetaDatFromCapabilities(capabilities) {
180
+ const caps = knownCapabilities(capabilities);
162
181
  const scopes = new Set(["glasses.connection"]);
163
- for (const b of blocks) {
164
- if (b.type === "capture_photo")
165
- scopes.add("glasses.camera.photo");
166
- if (b.type === "capture_video")
167
- scopes.add("glasses.camera.video");
168
- if (b.type === "record_audio")
169
- scopes.add("glasses.audio.record");
170
- }
171
- for (const s of streams) {
172
- if (s.type === "video_frames" || s.type === "outgoing_video_stream")
173
- scopes.add("glasses.camera.stream");
174
- if (s.type === "audio_chunks" ||
175
- s.type === "transcription_incremental" ||
176
- s.type === "outgoing_audio_stream")
177
- scopes.add("glasses.audio.stream");
182
+ for (const name of caps) {
183
+ const scope = CAPABILITY_NEEDS[name].datScope;
184
+ if (scope)
185
+ scopes.add(scope);
178
186
  }
179
187
  return {
180
188
  scopes: [...scopes].sort(),
@@ -187,25 +195,7 @@ export function deriveMetaDat(spec) {
187
195
  ],
188
196
  };
189
197
  }
190
- export function derivesInfoPlistPatch(spec) {
191
- const { plistKeys } = deriveIos(spec);
192
- if (!plistKeys.length)
193
- return undefined;
194
- const added = {};
195
- for (const { key, value } of plistKeys)
196
- added[key] = value;
197
- return { added };
198
- }
199
- function arr(v) {
200
- return Array.isArray(v) ? v : [];
201
- }
202
- // Read `params.include_audio` off a capture_video block. Default is `false`
203
- // per SPEC_SCHEMA.md — only an explicit-true configuration counts as "this
204
- // spec uses the microphone via video capture."
205
- function isIncludeAudioTrue(block) {
206
- const params = block.params;
207
- if (!params || typeof params !== "object")
208
- return false;
209
- return params.include_audio === true;
210
- }
198
+ // Convenience export the full list of capability names the matrix
199
+ // recognizes. Tools use this to validate input lists at parse time.
200
+ export const KNOWN_CAPABILITIES = Object.keys(CAPABILITY_NEEDS).sort();
211
201
  //# sourceMappingURL=permissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/tools/util/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/tools/util/permissions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@extentos/mcp-server",
3
- "version": "0.0.56",
3
+ "version": "0.0.58",
4
4
  "description": "Extentos MCP server — deterministic tools for building Meta-glasses apps.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,12 +19,7 @@
19
19
  "cli": "node dist/cli.js",
20
20
  "dev": "tsc --watch",
21
21
  "typecheck": "npm run prebuild && tsc --noEmit",
22
- "smoke": "npm run build && node scripts/example-flow-smoke.mjs",
23
- "smoke:bundle1": "npm run build && node scripts/bundle1-smoke.mjs",
24
- "smoke:bundle2": "npm run build && node scripts/bundle2-smoke.mjs",
25
22
  "smoke:bundle3": "npm run build && node scripts/bundle3-smoke.mjs",
26
- "smoke:bundle4": "npm run build && node scripts/bundle4-smoke.mjs",
27
- "smoke:bundle5": "npm run build && node scripts/bundle5-smoke.mjs",
28
23
  "smoke:telemetry": "npm run build && node scripts/telemetry-smoke.mjs",
29
24
  "prepublishOnly": "npm run build"
30
25
  },