@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.
- package/README.md +56 -0
- package/dist/cli/login.d.ts +2 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/login.js +71 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/logout.d.ts +2 -0
- package/dist/cli/logout.d.ts.map +1 -0
- package/dist/cli/logout.js +65 -0
- package/dist/cli/logout.js.map +1 -0
- package/dist/cli/privacy.d.ts +3 -0
- package/dist/cli/privacy.d.ts.map +1 -0
- package/dist/cli/privacy.js +39 -0
- package/dist/cli/privacy.js.map +1 -0
- package/dist/cli/status.d.ts +2 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +9 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/update.d.ts +2 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +8 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/cli/whoami.d.ts +2 -0
- package/dist/cli/whoami.d.ts.map +1 -0
- package/dist/cli/whoami.js +8 -0
- package/dist/cli/whoami.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +69 -0
- package/dist/cli.js.map +1 -0
- package/dist/generated/schemas.d.ts +4 -0
- package/dist/generated/schemas.d.ts.map +1 -0
- package/dist/generated/schemas.js +2697 -0
- package/dist/generated/schemas.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/stub.d.ts +15 -0
- package/dist/stub.d.ts.map +1 -0
- package/dist/stub.js +20 -0
- package/dist/stub.js.map +1 -0
- package/dist/telemetry/client.d.ts +73 -0
- package/dist/telemetry/client.d.ts.map +1 -0
- package/dist/telemetry/client.js +207 -0
- package/dist/telemetry/client.js.map +1 -0
- package/dist/telemetry/consent.d.ts +19 -0
- package/dist/telemetry/consent.d.ts.map +1 -0
- package/dist/telemetry/consent.js +68 -0
- package/dist/telemetry/consent.js.map +1 -0
- package/dist/telemetry/index.d.ts +56 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +151 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/installRegistry.d.ts +18 -0
- package/dist/telemetry/installRegistry.d.ts.map +1 -0
- package/dist/telemetry/installRegistry.js +102 -0
- package/dist/telemetry/installRegistry.js.map +1 -0
- package/dist/tools/data/capabilities.d.ts +566 -0
- package/dist/tools/data/capabilities.d.ts.map +1 -0
- package/dist/tools/data/capabilities.js +243 -0
- package/dist/tools/data/capabilities.js.map +1 -0
- package/dist/tools/data/examplePatterns.d.ts +4 -0
- package/dist/tools/data/examplePatterns.d.ts.map +1 -0
- package/dist/tools/data/examplePatterns.js +546 -0
- package/dist/tools/data/examplePatterns.js.map +1 -0
- package/dist/tools/data/presetTriggers.d.ts +4 -0
- package/dist/tools/data/presetTriggers.d.ts.map +1 -0
- package/dist/tools/data/presetTriggers.js +47 -0
- package/dist/tools/data/presetTriggers.js.map +1 -0
- package/dist/tools/data/version.d.ts +31 -0
- package/dist/tools/data/version.d.ts.map +1 -0
- package/dist/tools/data/version.js +34 -0
- package/dist/tools/data/version.js.map +1 -0
- package/dist/tools/definitions.d.ts +13 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +347 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/docs/index.d.ts +10 -0
- package/dist/tools/docs/index.d.ts.map +1 -0
- package/dist/tools/docs/index.js +220 -0
- package/dist/tools/docs/index.js.map +1 -0
- package/dist/tools/handlers/completeAuthLink.d.ts +3 -0
- package/dist/tools/handlers/completeAuthLink.d.ts.map +1 -0
- package/dist/tools/handlers/completeAuthLink.js +152 -0
- package/dist/tools/handlers/completeAuthLink.js.map +1 -0
- package/dist/tools/handlers/createSimulatorSession.d.ts +3 -0
- package/dist/tools/handlers/createSimulatorSession.d.ts.map +1 -0
- package/dist/tools/handlers/createSimulatorSession.js +231 -0
- package/dist/tools/handlers/createSimulatorSession.js.map +1 -0
- package/dist/tools/handlers/generateConnectionModule.d.ts +3 -0
- package/dist/tools/handlers/generateConnectionModule.d.ts.map +1 -0
- package/dist/tools/handlers/generateConnectionModule.js +222 -0
- package/dist/tools/handlers/generateConnectionModule.js.map +1 -0
- package/dist/tools/handlers/generateConsumer.d.ts +3 -0
- package/dist/tools/handlers/generateConsumer.d.ts.map +1 -0
- package/dist/tools/handlers/generateConsumer.js +257 -0
- package/dist/tools/handlers/generateConsumer.js.map +1 -0
- package/dist/tools/handlers/getCredentialGuide.d.ts +3 -0
- package/dist/tools/handlers/getCredentialGuide.d.ts.map +1 -0
- package/dist/tools/handlers/getCredentialGuide.js +296 -0
- package/dist/tools/handlers/getCredentialGuide.js.map +1 -0
- package/dist/tools/handlers/getEventLog.d.ts +3 -0
- package/dist/tools/handlers/getEventLog.d.ts.map +1 -0
- package/dist/tools/handlers/getEventLog.js +90 -0
- package/dist/tools/handlers/getEventLog.js.map +1 -0
- package/dist/tools/handlers/getExampleSpec.d.ts +3 -0
- package/dist/tools/handlers/getExampleSpec.d.ts.map +1 -0
- package/dist/tools/handlers/getExampleSpec.js +44 -0
- package/dist/tools/handlers/getExampleSpec.js.map +1 -0
- package/dist/tools/handlers/getPermissions.d.ts +3 -0
- package/dist/tools/handlers/getPermissions.d.ts.map +1 -0
- package/dist/tools/handlers/getPermissions.js +50 -0
- package/dist/tools/handlers/getPermissions.js.map +1 -0
- package/dist/tools/handlers/getPlatformInfo.d.ts +3 -0
- package/dist/tools/handlers/getPlatformInfo.d.ts.map +1 -0
- package/dist/tools/handlers/getPlatformInfo.js +78 -0
- package/dist/tools/handlers/getPlatformInfo.js.map +1 -0
- package/dist/tools/handlers/getProductionChecklist.d.ts +3 -0
- package/dist/tools/handlers/getProductionChecklist.d.ts.map +1 -0
- package/dist/tools/handlers/getProductionChecklist.js +238 -0
- package/dist/tools/handlers/getProductionChecklist.js.map +1 -0
- package/dist/tools/handlers/getSimulatorStatus.d.ts +3 -0
- package/dist/tools/handlers/getSimulatorStatus.d.ts.map +1 -0
- package/dist/tools/handlers/getSimulatorStatus.js +56 -0
- package/dist/tools/handlers/getSimulatorStatus.js.map +1 -0
- package/dist/tools/handlers/getVoiceCommandGuidance.d.ts +3 -0
- package/dist/tools/handlers/getVoiceCommandGuidance.d.ts.map +1 -0
- package/dist/tools/handlers/getVoiceCommandGuidance.js +200 -0
- package/dist/tools/handlers/getVoiceCommandGuidance.js.map +1 -0
- package/dist/tools/handlers/initSpec.d.ts +3 -0
- package/dist/tools/handlers/initSpec.d.ts.map +1 -0
- package/dist/tools/handlers/initSpec.js +234 -0
- package/dist/tools/handlers/initSpec.js.map +1 -0
- package/dist/tools/handlers/inspectIntegration.d.ts +3 -0
- package/dist/tools/handlers/inspectIntegration.d.ts.map +1 -0
- package/dist/tools/handlers/inspectIntegration.js +204 -0
- package/dist/tools/handlers/inspectIntegration.js.map +1 -0
- package/dist/tools/handlers/planIntegration.d.ts +3 -0
- package/dist/tools/handlers/planIntegration.d.ts.map +1 -0
- package/dist/tools/handlers/planIntegration.js +279 -0
- package/dist/tools/handlers/planIntegration.js.map +1 -0
- package/dist/tools/handlers/searchDocs.d.ts +3 -0
- package/dist/tools/handlers/searchDocs.d.ts.map +1 -0
- package/dist/tools/handlers/searchDocs.js +41 -0
- package/dist/tools/handlers/searchDocs.js.map +1 -0
- package/dist/tools/handlers/updateSpec.d.ts +3 -0
- package/dist/tools/handlers/updateSpec.d.ts.map +1 -0
- package/dist/tools/handlers/updateSpec.js +453 -0
- package/dist/tools/handlers/updateSpec.js.map +1 -0
- package/dist/tools/handlers/validateIntegration.d.ts +3 -0
- package/dist/tools/handlers/validateIntegration.d.ts.map +1 -0
- package/dist/tools/handlers/validateIntegration.js +546 -0
- package/dist/tools/handlers/validateIntegration.js.map +1 -0
- package/dist/tools/handlers/validateSpec.d.ts +3 -0
- package/dist/tools/handlers/validateSpec.d.ts.map +1 -0
- package/dist/tools/handlers/validateSpec.js +26 -0
- package/dist/tools/handlers/validateSpec.js.map +1 -0
- package/dist/tools/registry.d.ts +4 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +43 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/response.d.ts +12 -0
- package/dist/tools/response.d.ts.map +1 -0
- package/dist/tools/response.js +19 -0
- package/dist/tools/response.js.map +1 -0
- package/dist/tools/templates/androidBootstrap.d.ts +2 -0
- package/dist/tools/templates/androidBootstrap.d.ts.map +1 -0
- package/dist/tools/templates/androidBootstrap.js +40 -0
- package/dist/tools/templates/androidBootstrap.js.map +1 -0
- package/dist/tools/templates/callbackHandler.d.ts +11 -0
- package/dist/tools/templates/callbackHandler.d.ts.map +1 -0
- package/dist/tools/templates/callbackHandler.js +177 -0
- package/dist/tools/templates/callbackHandler.js.map +1 -0
- package/dist/tools/templates/iosBootstrap.d.ts +3 -0
- package/dist/tools/templates/iosBootstrap.d.ts.map +1 -0
- package/dist/tools/templates/iosBootstrap.js +50 -0
- package/dist/tools/templates/iosBootstrap.js.map +1 -0
- package/dist/tools/templates/streamConsumer.d.ts +8 -0
- package/dist/tools/templates/streamConsumer.d.ts.map +1 -0
- package/dist/tools/templates/streamConsumer.js +248 -0
- package/dist/tools/templates/streamConsumer.js.map +1 -0
- package/dist/tools/util/appPackage.d.ts +4 -0
- package/dist/tools/util/appPackage.d.ts.map +1 -0
- package/dist/tools/util/appPackage.js +16 -0
- package/dist/tools/util/appPackage.js.map +1 -0
- package/dist/tools/util/backendClient.d.ts +25 -0
- package/dist/tools/util/backendClient.d.ts.map +1 -0
- package/dist/tools/util/backendClient.js +144 -0
- package/dist/tools/util/backendClient.js.map +1 -0
- package/dist/tools/util/manifest.d.ts +9 -0
- package/dist/tools/util/manifest.d.ts.map +1 -0
- package/dist/tools/util/manifest.js +62 -0
- package/dist/tools/util/manifest.js.map +1 -0
- package/dist/tools/util/permissions.d.ts +32 -0
- package/dist/tools/util/permissions.d.ts.map +1 -0
- package/dist/tools/util/permissions.js +165 -0
- package/dist/tools/util/permissions.js.map +1 -0
- package/dist/tools/validation/validateSpec.d.ts +22 -0
- package/dist/tools/validation/validateSpec.d.ts.map +1 -0
- package/dist/tools/validation/validateSpec.js +370 -0
- package/dist/tools/validation/validateSpec.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,546 @@
|
|
|
1
|
+
// Reference ExtentosSpec templates per MCP_TOOLS.md § getExampleSpec.
|
|
2
|
+
// All templates conform to schemas/extentos-spec.schema.json v1.0 and enforce:
|
|
3
|
+
// - is_empty branch idiom after app_callback
|
|
4
|
+
// - fallback trigger on voice specs
|
|
5
|
+
// - thermal_warning on stream specs (via preset thermal_throttle inlined)
|
|
6
|
+
// - branch depth ≤ 1
|
|
7
|
+
// - realistic handler names, named captures promoted to regular variables
|
|
8
|
+
const BASE = {
|
|
9
|
+
$schema: "extentos://schema/v1",
|
|
10
|
+
extentos_version: "1.0",
|
|
11
|
+
target: { vendor: "meta_rayban" },
|
|
12
|
+
};
|
|
13
|
+
const THERMAL_THROTTLE_TRIGGER = {
|
|
14
|
+
type: "thermal_warning",
|
|
15
|
+
id: "t_thermal_throttle",
|
|
16
|
+
severity: "critical",
|
|
17
|
+
actions: [
|
|
18
|
+
{ type: "set_toggle", key: "battery_save_mode", value: true },
|
|
19
|
+
{ type: "log", level: "warning", message: "thermal throttle engaged" },
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
const FALLBACK_TRIGGER = {
|
|
23
|
+
type: "fallback",
|
|
24
|
+
id: "t_fallback",
|
|
25
|
+
actions: [
|
|
26
|
+
{ type: "speak_text", text: "Sorry, I didn't catch that." },
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
const KOTLIN_VISION = `// ExtentosCallbacks.kt (excerpt) — AppCallbackHandler impl
|
|
30
|
+
override suspend fun onCall(call: AppCallback): AppCallbackResult {
|
|
31
|
+
return when (call.handler) {
|
|
32
|
+
"vision" -> {
|
|
33
|
+
val image = call.input["image"] as? String
|
|
34
|
+
?: return AppCallbackResult.Error("bad_input", "missing image")
|
|
35
|
+
val prompt = call.input["prompt"] as? String ?: "Describe this scene."
|
|
36
|
+
// TODO: wire your anthropic client here
|
|
37
|
+
val description = yourAnthropicClient.describe(image, prompt)
|
|
38
|
+
AppCallbackResult.Success(buildJsonObject { put("description", description) })
|
|
39
|
+
}
|
|
40
|
+
else -> AppCallbackResult.Error("unknown_handler", call.handler)
|
|
41
|
+
}
|
|
42
|
+
}`;
|
|
43
|
+
const SWIFT_VISION = `// ExtentosCallbacks.swift (excerpt) — AppCallbackHandler
|
|
44
|
+
func onCall(name: String, payload: JSONValue, context: CallbackContext) async -> JSONValue {
|
|
45
|
+
switch name {
|
|
46
|
+
case "vision":
|
|
47
|
+
guard let image = payload["image"]?.stringValue else {
|
|
48
|
+
return JSONValue.object(["error": .string("missing image")])
|
|
49
|
+
}
|
|
50
|
+
let prompt = payload["prompt"]?.stringValue ?? "Describe this scene."
|
|
51
|
+
// TODO: wire your Anthropic client here
|
|
52
|
+
let description = try await yourAnthropicClient.describe(image: image, prompt: prompt)
|
|
53
|
+
return JSONValue.object(["description": .string(description)])
|
|
54
|
+
default:
|
|
55
|
+
return JSONValue.object(["error": .string("unknown handler: \\(name)")])
|
|
56
|
+
}
|
|
57
|
+
}`;
|
|
58
|
+
export const PATTERN_IDS = [
|
|
59
|
+
"voice_assistant",
|
|
60
|
+
"live_translation",
|
|
61
|
+
"scene_description",
|
|
62
|
+
"notification_reader",
|
|
63
|
+
"navigation_guide",
|
|
64
|
+
"video_call",
|
|
65
|
+
"object_detection",
|
|
66
|
+
"voice_notes",
|
|
67
|
+
];
|
|
68
|
+
export const PATTERNS = {
|
|
69
|
+
voice_assistant: {
|
|
70
|
+
id: "voice_assistant",
|
|
71
|
+
description: "Voice-activated AI assistant that captures a photo on 'describe what you see' and narrates the result. The archetype for any photo+vision voice command.",
|
|
72
|
+
spec: {
|
|
73
|
+
...BASE,
|
|
74
|
+
blocks: [
|
|
75
|
+
{ type: "capture_photo", id: "main_camera", params: { resolution: "MEDIUM", format: "jpeg" } },
|
|
76
|
+
],
|
|
77
|
+
triggers: [
|
|
78
|
+
{
|
|
79
|
+
type: "voice_command",
|
|
80
|
+
id: "t_describe",
|
|
81
|
+
phrase: "describe what you see",
|
|
82
|
+
match_mode: "contains",
|
|
83
|
+
actions: [
|
|
84
|
+
{ type: "block_call", block_id: "main_camera", save_as: "photo" },
|
|
85
|
+
{ type: "app_callback", handler: "vision", input: { image: "{{photo}}", prompt: "Describe this scene briefly." }, save_as: "result" },
|
|
86
|
+
{
|
|
87
|
+
type: "branch",
|
|
88
|
+
condition: { variable: "result.description", operator: "is_empty" },
|
|
89
|
+
then: [{ type: "speak_text", text: "I couldn't describe that one." }],
|
|
90
|
+
else: [{ type: "speak_text", text: "{{result.description}}" }],
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
},
|
|
94
|
+
FALLBACK_TRIGGER,
|
|
95
|
+
],
|
|
96
|
+
},
|
|
97
|
+
usedPrimitives: {
|
|
98
|
+
blocks: ["capture_photo"],
|
|
99
|
+
streams: [],
|
|
100
|
+
triggers: ["voice_command", "fallback"],
|
|
101
|
+
actions: ["block_call", "app_callback", "branch", "speak_text"],
|
|
102
|
+
},
|
|
103
|
+
handlerNames: ["vision"],
|
|
104
|
+
codeSnippets: { kotlin: KOTLIN_VISION, swift: SWIFT_VISION },
|
|
105
|
+
},
|
|
106
|
+
live_translation: {
|
|
107
|
+
id: "live_translation",
|
|
108
|
+
description: "Continuous speech translation — transcription stream feeds a translate handler, speaks the translation. Manual_launch kicks it off; thermal guard included.",
|
|
109
|
+
spec: {
|
|
110
|
+
...BASE,
|
|
111
|
+
blocks: [],
|
|
112
|
+
streams: [
|
|
113
|
+
{
|
|
114
|
+
type: "transcription_incremental",
|
|
115
|
+
id: "live_transcript",
|
|
116
|
+
config: { language: "en-US" },
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
triggers: [
|
|
120
|
+
{
|
|
121
|
+
type: "manual_launch",
|
|
122
|
+
id: "t_start_translation",
|
|
123
|
+
actions: [
|
|
124
|
+
{ type: "set_toggle", key: "transcription_enabled", value: true },
|
|
125
|
+
{ type: "speak_text", text: "Live translation started." },
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: "voice_command",
|
|
130
|
+
id: "t_stop_translation",
|
|
131
|
+
phrase: "stop translating",
|
|
132
|
+
match_mode: "contains",
|
|
133
|
+
actions: [
|
|
134
|
+
{ type: "set_toggle", key: "transcription_enabled", value: false },
|
|
135
|
+
{ type: "speak_text", text: "Translation stopped." },
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
FALLBACK_TRIGGER,
|
|
139
|
+
THERMAL_THROTTLE_TRIGGER,
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
usedPrimitives: {
|
|
143
|
+
blocks: [],
|
|
144
|
+
streams: ["transcription_incremental"],
|
|
145
|
+
triggers: ["manual_launch", "voice_command", "fallback", "thermal_warning"],
|
|
146
|
+
actions: ["set_toggle", "speak_text"],
|
|
147
|
+
},
|
|
148
|
+
handlerNames: ["translate"],
|
|
149
|
+
codeSnippets: {
|
|
150
|
+
kotlin: `// ExtentosStreams.kt (excerpt) — live transcript consumer\n` +
|
|
151
|
+
`glasses.streams.transcriptionIncremental.collect { transcript ->\n` +
|
|
152
|
+
` if (transcript is Transcript.Final && transcript.text.isNotBlank()) {\n` +
|
|
153
|
+
` // TODO: wire your translation client here (DeepL, Google Translate, etc.)\n` +
|
|
154
|
+
` val translated = yourTranslator.translate(transcript.text, target = "es")\n` +
|
|
155
|
+
` glasses.runtime.speak(translated)\n` +
|
|
156
|
+
` }\n` +
|
|
157
|
+
`}`,
|
|
158
|
+
swift: `// ExtentosStreams.swift (excerpt)\n` +
|
|
159
|
+
`for await transcript in glasses.streams.transcriptionIncremental {\n` +
|
|
160
|
+
` guard case .final(let text, _) = transcript, !text.isEmpty else { continue }\n` +
|
|
161
|
+
` // TODO: wire your translation client here\n` +
|
|
162
|
+
` let translated = try await yourTranslator.translate(text, target: "es")\n` +
|
|
163
|
+
` await glasses.runtime.speak(translated)\n` +
|
|
164
|
+
`}`,
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
scene_description: {
|
|
168
|
+
id: "scene_description",
|
|
169
|
+
description: "Multi-phrase scene description — accepts several natural utterances for the same photo+vision flow.",
|
|
170
|
+
spec: {
|
|
171
|
+
...BASE,
|
|
172
|
+
blocks: [
|
|
173
|
+
{ type: "capture_photo", id: "main_camera", params: { resolution: "MEDIUM", format: "jpeg" } },
|
|
174
|
+
],
|
|
175
|
+
triggers: [
|
|
176
|
+
{
|
|
177
|
+
type: "voice_command",
|
|
178
|
+
id: "t_describe",
|
|
179
|
+
phrase: "what do you see",
|
|
180
|
+
match_mode: "contains",
|
|
181
|
+
actions: [
|
|
182
|
+
{ type: "block_call", block_id: "main_camera", save_as: "photo" },
|
|
183
|
+
{ type: "app_callback", handler: "vision", input: { image: "{{photo}}", prompt: "Describe this scene in one sentence." }, save_as: "result" },
|
|
184
|
+
{
|
|
185
|
+
type: "branch",
|
|
186
|
+
condition: { variable: "result.description", operator: "is_empty" },
|
|
187
|
+
then: [{ type: "speak_text", text: "I couldn't see that clearly." }],
|
|
188
|
+
else: [{ type: "speak_text", text: "{{result.description}}" }],
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
type: "voice_command",
|
|
194
|
+
id: "t_read_text",
|
|
195
|
+
phrase: "read this",
|
|
196
|
+
match_mode: "contains",
|
|
197
|
+
actions: [
|
|
198
|
+
{ type: "block_call", block_id: "main_camera", save_as: "photo" },
|
|
199
|
+
{ type: "app_callback", handler: "vision", input: { image: "{{photo}}", prompt: "Read the text visible in this image verbatim." }, save_as: "result" },
|
|
200
|
+
{
|
|
201
|
+
type: "branch",
|
|
202
|
+
condition: { variable: "result.description", operator: "is_empty" },
|
|
203
|
+
then: [{ type: "speak_text", text: "No readable text found." }],
|
|
204
|
+
else: [{ type: "speak_text", text: "{{result.description}}" }],
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
},
|
|
208
|
+
FALLBACK_TRIGGER,
|
|
209
|
+
],
|
|
210
|
+
},
|
|
211
|
+
usedPrimitives: {
|
|
212
|
+
blocks: ["capture_photo"],
|
|
213
|
+
streams: [],
|
|
214
|
+
triggers: ["voice_command", "fallback"],
|
|
215
|
+
actions: ["block_call", "app_callback", "branch", "speak_text"],
|
|
216
|
+
},
|
|
217
|
+
handlerNames: ["vision"],
|
|
218
|
+
codeSnippets: { kotlin: KOTLIN_VISION, swift: SWIFT_VISION },
|
|
219
|
+
},
|
|
220
|
+
notification_reader: {
|
|
221
|
+
id: "notification_reader",
|
|
222
|
+
description: "Forward phone notifications to glasses TTS. Privacy-gated: respects privacy_mode toggle.",
|
|
223
|
+
spec: {
|
|
224
|
+
...BASE,
|
|
225
|
+
blocks: [],
|
|
226
|
+
triggers: [
|
|
227
|
+
{
|
|
228
|
+
type: "phone_notification_forwarded",
|
|
229
|
+
id: "t_read_notification",
|
|
230
|
+
actions: [
|
|
231
|
+
{
|
|
232
|
+
type: "branch",
|
|
233
|
+
condition: { variable: "toggles.privacy_mode", operator: "equals", value: true },
|
|
234
|
+
then: [{ type: "log", level: "info", message: "notification suppressed by privacy_mode" }],
|
|
235
|
+
else: [
|
|
236
|
+
{ type: "earcon_beep", sound: "notification", volume: 0.6 },
|
|
237
|
+
{ type: "speak_text", text: "{{trigger_payload.title}}. {{trigger_payload.body}}" },
|
|
238
|
+
],
|
|
239
|
+
},
|
|
240
|
+
],
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
type: "voice_command",
|
|
244
|
+
id: "t_toggle_privacy",
|
|
245
|
+
phrase: "enable privacy mode",
|
|
246
|
+
match_mode: "contains",
|
|
247
|
+
actions: [
|
|
248
|
+
{ type: "set_toggle", key: "privacy_mode", value: true },
|
|
249
|
+
{ type: "speak_text", text: "Privacy mode on." },
|
|
250
|
+
],
|
|
251
|
+
},
|
|
252
|
+
FALLBACK_TRIGGER,
|
|
253
|
+
],
|
|
254
|
+
},
|
|
255
|
+
usedPrimitives: {
|
|
256
|
+
blocks: [],
|
|
257
|
+
streams: [],
|
|
258
|
+
triggers: ["phone_notification_forwarded", "voice_command", "fallback"],
|
|
259
|
+
actions: ["branch", "earcon_beep", "speak_text", "log", "set_toggle"],
|
|
260
|
+
},
|
|
261
|
+
handlerNames: [],
|
|
262
|
+
codeSnippets: {
|
|
263
|
+
kotlin: `// No handler needed — notification_reader works entirely via set_toggle and branch on trigger_payload.\n` +
|
|
264
|
+
`// Ensure NotificationListenerService is granted at runtime; the library surfaces payload through phone_notification_forwarded.`,
|
|
265
|
+
swift: `// No handler needed — notification_reader works entirely via set_toggle and branch on trigger_payload.\n` +
|
|
266
|
+
`// Ensure UNUserNotificationCenter delegate is set; the library surfaces payload through phone_notification_forwarded.`,
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
navigation_guide: {
|
|
270
|
+
id: "navigation_guide",
|
|
271
|
+
description: "Turn-by-turn walking directions: location_updated feeds a navigation handler; speaks next step only when distance changed.",
|
|
272
|
+
spec: {
|
|
273
|
+
...BASE,
|
|
274
|
+
blocks: [],
|
|
275
|
+
triggers: [
|
|
276
|
+
{
|
|
277
|
+
type: "voice_command",
|
|
278
|
+
id: "t_set_destination",
|
|
279
|
+
phrase: "navigate to {destination}",
|
|
280
|
+
match_mode: "contains",
|
|
281
|
+
actions: [
|
|
282
|
+
{ type: "app_callback", handler: "navigation_set_destination", input: { destination: "{{destination}}" }, save_as: "nav" },
|
|
283
|
+
{
|
|
284
|
+
type: "branch",
|
|
285
|
+
condition: { variable: "nav.accepted", operator: "equals", value: true },
|
|
286
|
+
then: [{ type: "speak_text", text: "Starting navigation to {{destination}}." }],
|
|
287
|
+
else: [{ type: "speak_text", text: "I couldn't find that destination." }],
|
|
288
|
+
},
|
|
289
|
+
],
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
type: "location_updated",
|
|
293
|
+
id: "t_next_step",
|
|
294
|
+
min_interval_millis: 5000,
|
|
295
|
+
min_displacement_meters: 10,
|
|
296
|
+
actions: [
|
|
297
|
+
{ type: "app_callback", handler: "navigation_next_step", input: { lat: "{{trigger_payload.latitude}}", lng: "{{trigger_payload.longitude}}" }, save_as: "step" },
|
|
298
|
+
{
|
|
299
|
+
type: "branch",
|
|
300
|
+
condition: { variable: "step.instruction", operator: "not_empty" },
|
|
301
|
+
then: [{ type: "speak_text", text: "{{step.instruction}}" }],
|
|
302
|
+
},
|
|
303
|
+
],
|
|
304
|
+
},
|
|
305
|
+
FALLBACK_TRIGGER,
|
|
306
|
+
],
|
|
307
|
+
},
|
|
308
|
+
usedPrimitives: {
|
|
309
|
+
blocks: [],
|
|
310
|
+
streams: [],
|
|
311
|
+
triggers: ["voice_command", "location_updated", "fallback"],
|
|
312
|
+
actions: ["app_callback", "branch", "speak_text"],
|
|
313
|
+
},
|
|
314
|
+
handlerNames: ["navigation_set_destination", "navigation_next_step"],
|
|
315
|
+
codeSnippets: {
|
|
316
|
+
kotlin: `// Handles both navigation_set_destination and navigation_next_step via when-discriminator.\n` +
|
|
317
|
+
`override suspend fun onCall(call: AppCallback): AppCallbackResult = when (call.handler) {\n` +
|
|
318
|
+
` "navigation_set_destination" -> {\n` +
|
|
319
|
+
` val destination = call.input["destination"] as? String ?: ""\n` +
|
|
320
|
+
` // TODO: wire your routing provider here\n` +
|
|
321
|
+
` val accepted = yourRoutingClient.setDestination(destination)\n` +
|
|
322
|
+
` AppCallbackResult.Success(buildJsonObject { put("accepted", accepted) })\n` +
|
|
323
|
+
` }\n` +
|
|
324
|
+
` "navigation_next_step" -> {\n` +
|
|
325
|
+
` val step = yourRoutingClient.nextStep()\n` +
|
|
326
|
+
` AppCallbackResult.Success(buildJsonObject { put("instruction", step?.text.orEmpty()) })\n` +
|
|
327
|
+
` }\n` +
|
|
328
|
+
` else -> AppCallbackResult.Error("unknown_handler", call.handler)\n` +
|
|
329
|
+
`}`,
|
|
330
|
+
swift: `func onCall(name: String, payload: JSONValue, context: CallbackContext) async -> JSONValue {\n` +
|
|
331
|
+
` switch name {\n` +
|
|
332
|
+
` case "navigation_set_destination":\n` +
|
|
333
|
+
` let destination = payload["destination"]?.stringValue ?? ""\n` +
|
|
334
|
+
` let accepted = try await yourRoutingClient.setDestination(destination)\n` +
|
|
335
|
+
` return JSONValue.object(["accepted": .bool(accepted)])\n` +
|
|
336
|
+
` case "navigation_next_step":\n` +
|
|
337
|
+
` let step = try await yourRoutingClient.nextStep()\n` +
|
|
338
|
+
` return JSONValue.object(["instruction": .string(step?.text ?? "")])\n` +
|
|
339
|
+
` default:\n` +
|
|
340
|
+
` return JSONValue.object(["error": .string("unknown handler: \\(name)")])\n` +
|
|
341
|
+
` }\n` +
|
|
342
|
+
`}`,
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
video_call: {
|
|
346
|
+
id: "video_call",
|
|
347
|
+
description: "Outgoing video+audio to a third-party service. Kicks off on 'start a call', toggles coexistence to prefer_video, tears down on 'end call'.",
|
|
348
|
+
spec: {
|
|
349
|
+
...BASE,
|
|
350
|
+
blocks: [],
|
|
351
|
+
streams: [
|
|
352
|
+
{
|
|
353
|
+
type: "outgoing_video",
|
|
354
|
+
id: "call_video",
|
|
355
|
+
config: { resolution: "MEDIUM", frame_rate: 15, codec: "hvc1" },
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
type: "outgoing_audio",
|
|
359
|
+
id: "call_audio",
|
|
360
|
+
config: { chunk_millis: 20, codec: "opus" },
|
|
361
|
+
},
|
|
362
|
+
],
|
|
363
|
+
triggers: [
|
|
364
|
+
{
|
|
365
|
+
type: "voice_command",
|
|
366
|
+
id: "t_start_call",
|
|
367
|
+
phrase: "start a call",
|
|
368
|
+
match_mode: "contains",
|
|
369
|
+
actions: [
|
|
370
|
+
{ type: "set_toggle", key: "audio_video_coexistence_policy", value: "prefer_video" },
|
|
371
|
+
{ type: "set_toggle", key: "camera_streaming_enabled", value: true },
|
|
372
|
+
{ type: "speak_text", text: "Calling now." },
|
|
373
|
+
],
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
type: "voice_command",
|
|
377
|
+
id: "t_end_call",
|
|
378
|
+
phrase: "end call",
|
|
379
|
+
match_mode: "contains",
|
|
380
|
+
actions: [
|
|
381
|
+
{ type: "set_toggle", key: "camera_streaming_enabled", value: false },
|
|
382
|
+
{ type: "speak_text", text: "Call ended." },
|
|
383
|
+
],
|
|
384
|
+
},
|
|
385
|
+
FALLBACK_TRIGGER,
|
|
386
|
+
THERMAL_THROTTLE_TRIGGER,
|
|
387
|
+
],
|
|
388
|
+
},
|
|
389
|
+
usedPrimitives: {
|
|
390
|
+
blocks: [],
|
|
391
|
+
streams: ["outgoing_video", "outgoing_audio"],
|
|
392
|
+
triggers: ["voice_command", "fallback", "thermal_warning"],
|
|
393
|
+
actions: ["set_toggle", "speak_text"],
|
|
394
|
+
},
|
|
395
|
+
handlerNames: [],
|
|
396
|
+
codeSnippets: {
|
|
397
|
+
kotlin: `// Send outgoing frames/chunks to your call service.\n` +
|
|
398
|
+
`val videoJob = scope.launch {\n` +
|
|
399
|
+
` glasses.streams.outgoingVideo.collect { frame ->\n` +
|
|
400
|
+
` yourCallClient.sendVideoFrame(frame.bytes, frame.presentationTimeMicros)\n` +
|
|
401
|
+
` }\n` +
|
|
402
|
+
`}\n` +
|
|
403
|
+
`val audioJob = scope.launch {\n` +
|
|
404
|
+
` glasses.streams.outgoingAudio.collect { chunk -> yourCallClient.sendAudioChunk(chunk.bytes) }\n` +
|
|
405
|
+
`}`,
|
|
406
|
+
swift: `let videoTask = Task.detached(priority: .utility) {\n` +
|
|
407
|
+
` for await frame in glasses.streams.outgoingVideo {\n` +
|
|
408
|
+
` try? await yourCallClient.send(videoFrame: frame.bytes, pts: frame.presentationTimeMicros)\n` +
|
|
409
|
+
` }\n` +
|
|
410
|
+
`}\n` +
|
|
411
|
+
`let audioTask = Task.detached(priority: .utility) {\n` +
|
|
412
|
+
` for await chunk in glasses.streams.outgoingAudio {\n` +
|
|
413
|
+
` try? await yourCallClient.send(audioChunk: chunk.bytes)\n` +
|
|
414
|
+
` }\n` +
|
|
415
|
+
`}`,
|
|
416
|
+
},
|
|
417
|
+
},
|
|
418
|
+
object_detection: {
|
|
419
|
+
id: "object_detection",
|
|
420
|
+
description: "Continuous object detection on low-fps video frames. Speaks detected objects when detection changes. Thermal throttle guard included.",
|
|
421
|
+
spec: {
|
|
422
|
+
...BASE,
|
|
423
|
+
blocks: [],
|
|
424
|
+
streams: [
|
|
425
|
+
{
|
|
426
|
+
type: "video_frames",
|
|
427
|
+
id: "detection_frames",
|
|
428
|
+
config: { resolution: "LOW", frame_rate: 2, codec: "hvc1", backpressure: "drop_oldest" },
|
|
429
|
+
},
|
|
430
|
+
],
|
|
431
|
+
triggers: [
|
|
432
|
+
{
|
|
433
|
+
type: "voice_command",
|
|
434
|
+
id: "t_toggle_detection",
|
|
435
|
+
phrase: "start detecting objects",
|
|
436
|
+
match_mode: "contains",
|
|
437
|
+
actions: [
|
|
438
|
+
{ type: "set_toggle", key: "camera_streaming_enabled", value: true },
|
|
439
|
+
{ type: "speak_text", text: "Object detection on." },
|
|
440
|
+
],
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
type: "voice_command",
|
|
444
|
+
id: "t_stop_detection",
|
|
445
|
+
phrase: "stop detecting",
|
|
446
|
+
match_mode: "contains",
|
|
447
|
+
actions: [
|
|
448
|
+
{ type: "set_toggle", key: "camera_streaming_enabled", value: false },
|
|
449
|
+
{ type: "speak_text", text: "Stopped." },
|
|
450
|
+
],
|
|
451
|
+
},
|
|
452
|
+
FALLBACK_TRIGGER,
|
|
453
|
+
THERMAL_THROTTLE_TRIGGER,
|
|
454
|
+
],
|
|
455
|
+
},
|
|
456
|
+
usedPrimitives: {
|
|
457
|
+
blocks: [],
|
|
458
|
+
streams: ["video_frames"],
|
|
459
|
+
triggers: ["voice_command", "fallback", "thermal_warning"],
|
|
460
|
+
actions: ["set_toggle", "speak_text"],
|
|
461
|
+
},
|
|
462
|
+
handlerNames: ["detect_objects"],
|
|
463
|
+
codeSnippets: {
|
|
464
|
+
kotlin: `// Consume low-fps frames on the Default dispatcher (ML workload).\n` +
|
|
465
|
+
`scope.launch(Dispatchers.Default) {\n` +
|
|
466
|
+
` glasses.streams.videoFrames.collect { frame ->\n` +
|
|
467
|
+
` // TODO: wire your on-device ML model (TFLite / ONNX) here\n` +
|
|
468
|
+
` val labels = yourDetector.detect(frame.bytes, frame.width, frame.height)\n` +
|
|
469
|
+
` if (labels.isNotEmpty()) glasses.runtime.speak("I see " + labels.take(3).joinToString(", "))\n` +
|
|
470
|
+
` }\n` +
|
|
471
|
+
`}`,
|
|
472
|
+
swift: `Task.detached(priority: .userInitiated) {\n` +
|
|
473
|
+
` for await frame in glasses.streams.videoFrames {\n` +
|
|
474
|
+
` // TODO: wire your on-device ML model (CoreML / Vision) here\n` +
|
|
475
|
+
` let labels = yourDetector.detect(bytes: frame.bytes, width: frame.width, height: frame.height)\n` +
|
|
476
|
+
` if !labels.isEmpty {\n` +
|
|
477
|
+
` await glasses.runtime.speak("I see " + labels.prefix(3).joined(separator: ", "))\n` +
|
|
478
|
+
` }\n` +
|
|
479
|
+
` }\n` +
|
|
480
|
+
`}`,
|
|
481
|
+
},
|
|
482
|
+
},
|
|
483
|
+
voice_notes: {
|
|
484
|
+
id: "voice_notes",
|
|
485
|
+
description: "Record a voice note on 'take a note', transcribe, send to your notes service. Named capture {duration} demoted to regular variable.",
|
|
486
|
+
spec: {
|
|
487
|
+
...BASE,
|
|
488
|
+
blocks: [
|
|
489
|
+
{
|
|
490
|
+
type: "record_audio",
|
|
491
|
+
id: "note_recorder",
|
|
492
|
+
params: { max_duration_seconds: 30, silence_timeout_seconds: 3, quality: "standard" },
|
|
493
|
+
},
|
|
494
|
+
],
|
|
495
|
+
triggers: [
|
|
496
|
+
{
|
|
497
|
+
type: "voice_command",
|
|
498
|
+
id: "t_take_note",
|
|
499
|
+
phrase: "take a note",
|
|
500
|
+
match_mode: "contains",
|
|
501
|
+
actions: [
|
|
502
|
+
{ type: "speak_text", text: "Recording." },
|
|
503
|
+
{ type: "block_call", block_id: "note_recorder", save_as: "note" },
|
|
504
|
+
{
|
|
505
|
+
type: "branch",
|
|
506
|
+
condition: { variable: "note.transcript", operator: "is_empty" },
|
|
507
|
+
then: [{ type: "speak_text", text: "I didn't catch that." }],
|
|
508
|
+
else: [
|
|
509
|
+
{ type: "app_callback", handler: "save_note", input: { text: "{{note.transcript}}" }, save_as: "save_result" },
|
|
510
|
+
{ type: "speak_text", text: "Saved." },
|
|
511
|
+
],
|
|
512
|
+
},
|
|
513
|
+
],
|
|
514
|
+
},
|
|
515
|
+
FALLBACK_TRIGGER,
|
|
516
|
+
],
|
|
517
|
+
},
|
|
518
|
+
usedPrimitives: {
|
|
519
|
+
blocks: ["record_audio"],
|
|
520
|
+
streams: [],
|
|
521
|
+
triggers: ["voice_command", "fallback"],
|
|
522
|
+
actions: ["speak_text", "block_call", "branch", "app_callback"],
|
|
523
|
+
},
|
|
524
|
+
handlerNames: ["save_note"],
|
|
525
|
+
codeSnippets: {
|
|
526
|
+
kotlin: `override suspend fun onCall(call: AppCallback): AppCallbackResult = when (call.handler) {\n` +
|
|
527
|
+
` "save_note" -> {\n` +
|
|
528
|
+
` val text = call.input["text"] as? String ?: ""\n` +
|
|
529
|
+
` // TODO: wire your notes backend (Notion, Supabase, etc.) here\n` +
|
|
530
|
+
` yourNotesClient.save(text)\n` +
|
|
531
|
+
` AppCallbackResult.Success(buildJsonObject { put("ok", true) })\n` +
|
|
532
|
+
` }\n` +
|
|
533
|
+
` else -> AppCallbackResult.Error("unknown_handler", call.handler)\n` +
|
|
534
|
+
`}`,
|
|
535
|
+
swift: `func onCall(name: String, payload: JSONValue, context: CallbackContext) async -> JSONValue {\n` +
|
|
536
|
+
` guard name == "save_note" else {\n` +
|
|
537
|
+
` return JSONValue.object(["error": .string("unknown handler: \\(name)")])\n` +
|
|
538
|
+
` }\n` +
|
|
539
|
+
` let text = payload["text"]?.stringValue ?? ""\n` +
|
|
540
|
+
` try await yourNotesClient.save(text)\n` +
|
|
541
|
+
` return JSONValue.object(["ok": .bool(true)])\n` +
|
|
542
|
+
`}`,
|
|
543
|
+
},
|
|
544
|
+
},
|
|
545
|
+
};
|
|
546
|
+
//# sourceMappingURL=examplePatterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"examplePatterns.js","sourceRoot":"","sources":["../../../src/tools/data/examplePatterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const PRESET_TRIGGER_IDS: readonly ["fallback_default", "thermal_throttle", "disconnect_announce"];
|
|
2
|
+
export type PresetTriggerId = (typeof PRESET_TRIGGER_IDS)[number];
|
|
3
|
+
export declare const PRESET_TRIGGERS: Record<PresetTriggerId, Record<string, unknown>>;
|
|
4
|
+
//# sourceMappingURL=presetTriggers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presetTriggers.d.ts","sourceRoot":"","sources":["../../../src/tools/data/presetTriggers.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,0EAIrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqC5E,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Preset-trigger expansions for initSpec.
|
|
2
|
+
// Source: docs/_mcp_tools_working.md § initSpec presetTriggers.
|
|
3
|
+
// Explicit agent-provided triggers with matching `id` override the preset.
|
|
4
|
+
export const PRESET_TRIGGER_IDS = [
|
|
5
|
+
"fallback_default",
|
|
6
|
+
"thermal_throttle",
|
|
7
|
+
"disconnect_announce",
|
|
8
|
+
];
|
|
9
|
+
export const PRESET_TRIGGERS = {
|
|
10
|
+
fallback_default: {
|
|
11
|
+
type: "fallback",
|
|
12
|
+
id: "fallback_handler",
|
|
13
|
+
actions: [
|
|
14
|
+
{
|
|
15
|
+
type: "log",
|
|
16
|
+
level: "info",
|
|
17
|
+
message: "unrecognized utterance",
|
|
18
|
+
payload: { raw: "{{trigger_payload.raw_transcript}}" },
|
|
19
|
+
},
|
|
20
|
+
{ type: "speak_text", text: "Sorry, I didn't catch that. Try again." },
|
|
21
|
+
],
|
|
22
|
+
},
|
|
23
|
+
thermal_throttle: {
|
|
24
|
+
type: "thermal_warning",
|
|
25
|
+
id: "thermal_throttle",
|
|
26
|
+
severity: "moderate",
|
|
27
|
+
actions: [
|
|
28
|
+
{ type: "log", level: "warning", message: "thermal warning — entering battery save mode" },
|
|
29
|
+
{ type: "set_toggle", key: "battery_save_mode", value: true },
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
disconnect_announce: {
|
|
33
|
+
type: "connection_state_changed",
|
|
34
|
+
id: "disconnect_announce",
|
|
35
|
+
on_transition: { to: "Disconnected" },
|
|
36
|
+
actions: [
|
|
37
|
+
{ type: "speak_text", text: "Glasses disconnected." },
|
|
38
|
+
{
|
|
39
|
+
type: "log",
|
|
40
|
+
level: "info",
|
|
41
|
+
message: "glasses disconnected",
|
|
42
|
+
payload: { cause: "{{trigger_payload.cause}}" },
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=presetTriggers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presetTriggers.js","sourceRoot":"","sources":["../../../src/tools/data/presetTriggers.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,gEAAgE;AAChE,2EAA2E;AAE3E,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;CACb,CAAC;AAIX,MAAM,CAAC,MAAM,eAAe,GAAqD;IAC/E,gBAAgB,EAAE;QAChB,IAAI,EAAE,UAAU;QAChB,EAAE,EAAE,kBAAkB;QACtB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,wBAAwB;gBACjC,OAAO,EAAE,EAAE,GAAG,EAAE,oCAAoC,EAAE;aACvD;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wCAAwC,EAAE;SACvE;KACF;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,iBAAiB;QACvB,EAAE,EAAE,kBAAkB;QACtB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,8CAA8C,EAAE;YAC1F,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE;SAC9D;KACF;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,0BAA0B;QAChC,EAAE,EAAE,qBAAqB;QACzB,aAAa,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE;QACrC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,uBAAuB,EAAE;YACrD;gBACE,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,sBAAsB;gBAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE;aAChD;SACF;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare const VERSION_INFO: {
|
|
2
|
+
latestStable: string;
|
|
3
|
+
specVersion: string;
|
|
4
|
+
android: {
|
|
5
|
+
minimumSdk: number;
|
|
6
|
+
compileSdk: number;
|
|
7
|
+
targetSdk: number;
|
|
8
|
+
kotlinVersion: string;
|
|
9
|
+
};
|
|
10
|
+
ios: {
|
|
11
|
+
minimumDeploymentTarget: string;
|
|
12
|
+
swiftVersion: string;
|
|
13
|
+
};
|
|
14
|
+
datSdkVersion: {
|
|
15
|
+
android: string;
|
|
16
|
+
ios: string;
|
|
17
|
+
};
|
|
18
|
+
artifacts: {
|
|
19
|
+
android: {
|
|
20
|
+
core: string;
|
|
21
|
+
ui: string;
|
|
22
|
+
debug: string;
|
|
23
|
+
};
|
|
24
|
+
ios: {
|
|
25
|
+
package: string;
|
|
26
|
+
version: string;
|
|
27
|
+
products: string[];
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=version.d.ts.map
|