@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,90 @@
|
|
|
1
|
+
// getEventLog — fetch the structured event trace from a session.
|
|
2
|
+
// Spec: docs/mcp/MCP_TOOLS.md § getEventLog
|
|
3
|
+
import { okResponse, errorResponse } from "../response.js";
|
|
4
|
+
import { backendFetch } from "../util/backendClient.js";
|
|
5
|
+
const FILTER_VALUES = new Set([
|
|
6
|
+
"all",
|
|
7
|
+
"errors",
|
|
8
|
+
"transport",
|
|
9
|
+
"triggers",
|
|
10
|
+
"blocks",
|
|
11
|
+
"callbacks",
|
|
12
|
+
"toggles",
|
|
13
|
+
"streams",
|
|
14
|
+
"system",
|
|
15
|
+
"spec",
|
|
16
|
+
]);
|
|
17
|
+
export async function handleGetEventLog(raw) {
|
|
18
|
+
if (!raw || typeof raw !== "object") {
|
|
19
|
+
return errorResponse({
|
|
20
|
+
code: "invalid_arguments",
|
|
21
|
+
message: "getEventLog requires { sessionId }.",
|
|
22
|
+
fixHint: "Pass { sessionId: 'sim_...' }.",
|
|
23
|
+
retryable: false,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const o = raw;
|
|
27
|
+
if (typeof o.sessionId !== "string" || !o.sessionId.trim()) {
|
|
28
|
+
return errorResponse({
|
|
29
|
+
code: "invalid_arguments",
|
|
30
|
+
message: "sessionId (string) is required.",
|
|
31
|
+
fixHint: "Pass the sessionId returned by createSimulatorSession.",
|
|
32
|
+
retryable: false,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const filter = typeof o.filter === "string" ? o.filter : "all";
|
|
36
|
+
if (!FILTER_VALUES.has(filter)) {
|
|
37
|
+
return errorResponse({
|
|
38
|
+
code: "invalid_arguments",
|
|
39
|
+
message: `filter must be one of: ${[...FILTER_VALUES].join(", ")}.`,
|
|
40
|
+
fixHint: "Use 'all' to fetch everything.",
|
|
41
|
+
retryable: false,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
const limit = typeof o.limit === "number" && o.limit > 0 ? o.limit : 50;
|
|
45
|
+
const since = typeof o.since === "string" ? o.since : undefined;
|
|
46
|
+
const flowId = typeof o.flowId === "string" ? o.flowId : undefined;
|
|
47
|
+
const responseFormat = o.responseFormat === "concise" ? "concise" : "detailed";
|
|
48
|
+
const params = new URLSearchParams();
|
|
49
|
+
params.set("filter", filter);
|
|
50
|
+
params.set("limit", String(limit));
|
|
51
|
+
if (since)
|
|
52
|
+
params.set("since", since);
|
|
53
|
+
if (flowId)
|
|
54
|
+
params.set("flowId", flowId);
|
|
55
|
+
const res = await backendFetch(`/api/sessions/${encodeURIComponent(o.sessionId)}/events?${params.toString()}`);
|
|
56
|
+
if (res.status === 404) {
|
|
57
|
+
return errorResponse({
|
|
58
|
+
code: "session_not_found",
|
|
59
|
+
message: `No session found with id ${JSON.stringify(o.sessionId)}.`,
|
|
60
|
+
fixHint: "Call createSimulatorSession to start a new session.",
|
|
61
|
+
retryable: false,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if (!res.ok || !res.data) {
|
|
65
|
+
return errorResponse({
|
|
66
|
+
code: "backend_unreachable",
|
|
67
|
+
message: `Backend events endpoint failed: ${res.errorText ?? `HTTP ${res.status}`}.`,
|
|
68
|
+
fixHint: "Ensure the Extentos backend is reachable.",
|
|
69
|
+
retryable: true,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
const events = (res.data.events ?? []).map((e) => responseFormat === "concise"
|
|
73
|
+
? {
|
|
74
|
+
id: e.id,
|
|
75
|
+
timestamp: e.timestamp,
|
|
76
|
+
flowId: e.flowId,
|
|
77
|
+
layer: e.layer,
|
|
78
|
+
severity: e.severity,
|
|
79
|
+
type: e.type,
|
|
80
|
+
message: e.message,
|
|
81
|
+
}
|
|
82
|
+
: e);
|
|
83
|
+
return okResponse({
|
|
84
|
+
events,
|
|
85
|
+
sessionStatus: res.data.sessionStatus,
|
|
86
|
+
totalEvents: res.data.totalEvents ?? events.length,
|
|
87
|
+
hasMore: res.data.hasMore ?? false,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=getEventLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getEventLog.js","sourceRoot":"","sources":["../../../src/tools/handlers/getEventLog.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,4CAA4C;AAE5C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAmB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,KAAK;IACL,QAAQ;IACR,WAAW;IACX,UAAU;IACV,QAAQ;IACR,WAAW;IACX,SAAS;IACT,SAAS;IACT,QAAQ;IACR,MAAM;CACP,CAAC,CAAC;AAqBH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAY;IAClD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,aAAa,CAAC;YACnB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,qCAAqC;YAC9C,OAAO,EAAE,gCAAgC;YACzC,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3D,OAAO,aAAa,CAAC;YACnB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,iCAAiC;YAC1C,OAAO,EAAE,wDAAwD;YACjE,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,aAAa,CAAC;YACnB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,0BAA0B,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACnE,OAAO,EAAE,gCAAgC;YACzC,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,MAAM,cAAc,GAAG,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAE/E,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,IAAI,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,IAAI,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAG,MAAM,YAAY,CAC5B,iBAAiB,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,MAAM,CAAC,QAAQ,EAAE,EAAE,CAC/E,CAAC;IAEF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC;YACnB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG;YACnE,OAAO,EAAE,qDAAqD;YAC9D,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,aAAa,CAAC;YACnB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,mCAAmC,GAAG,CAAC,SAAS,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG;YACpF,OAAO,EAAE,2CAA2C;YACpD,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/C,cAAc,KAAK,SAAS;QAC1B,CAAC,CAAC;YACE,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB;QACH,CAAC,CAAC,CAAC,CACN,CAAC;IAEF,OAAO,UAAU,CAAC;QAChB,MAAM;QACN,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa;QACrC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM;QAClD,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK;KACnC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getExampleSpec.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/getExampleSpec.ts"],"names":[],"mappings":"AAIA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAM5E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAa7D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// getExampleSpec — retrieve one of 8 canonical reference specs.
|
|
2
|
+
// Spec: docs/mcp/MCP_TOOLS.md § getExampleSpec
|
|
3
|
+
import { PATTERNS, PATTERN_IDS } from "../data/examplePatterns.js";
|
|
4
|
+
import { okResponse, errorResponse } from "../response.js";
|
|
5
|
+
export function handleGetExampleSpec(raw) {
|
|
6
|
+
const parsed = parseArgs(raw);
|
|
7
|
+
if ("error" in parsed)
|
|
8
|
+
return parsed.error;
|
|
9
|
+
const p = PATTERNS[parsed.args.pattern];
|
|
10
|
+
return okResponse({
|
|
11
|
+
pattern: p.id,
|
|
12
|
+
description: p.description,
|
|
13
|
+
spec: p.spec,
|
|
14
|
+
usedPrimitives: p.usedPrimitives,
|
|
15
|
+
handlerNames: p.handlerNames,
|
|
16
|
+
codeSnippets: p.codeSnippets,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function parseArgs(raw) {
|
|
20
|
+
if (!raw || typeof raw !== "object") {
|
|
21
|
+
return {
|
|
22
|
+
error: errorResponse({
|
|
23
|
+
code: "invalid_arguments",
|
|
24
|
+
message: "getExampleSpec requires an object argument.",
|
|
25
|
+
fixHint: "Pass { pattern: <one of 8 pattern ids> }.",
|
|
26
|
+
retryable: false,
|
|
27
|
+
}),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const obj = raw;
|
|
31
|
+
const pattern = obj.pattern;
|
|
32
|
+
if (typeof pattern !== "string" || !PATTERN_IDS.includes(pattern)) {
|
|
33
|
+
return {
|
|
34
|
+
error: errorResponse({
|
|
35
|
+
code: "invalid_arguments",
|
|
36
|
+
message: `pattern must be one of: ${PATTERN_IDS.join(", ")} (got ${JSON.stringify(pattern)}).`,
|
|
37
|
+
fixHint: "Pass pattern: one of the 8 canonical ids.",
|
|
38
|
+
retryable: false,
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return { args: { pattern: pattern } };
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=getExampleSpec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getExampleSpec.js","sourceRoot":"","sources":["../../../src/tools/handlers/getExampleSpec.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,+CAA+C;AAE/C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAkB,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAmB,MAAM,gBAAgB,CAAC;AAM5E,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAE3C,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,UAAU,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,EAAE;QACb,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,YAAY,EAAE,CAAC,CAAC,YAAY;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO;YACL,KAAK,EAAE,aAAa,CAAC;gBACnB,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,6CAA6C;gBACtD,OAAO,EAAE,2CAA2C;gBACpD,SAAS,EAAE,KAAK;aACjB,CAAC;SACH,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAoB,CAAC,EAAE,CAAC;QAC/E,OAAO;YACL,KAAK,EAAE,aAAa,CAAC;gBACnB,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,2BAA2B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI;gBAC9F,OAAO,EAAE,2CAA2C;gBACpD,SAAS,EAAE,KAAK;aACjB,CAAC;SACH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAoB,EAAE,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPermissions.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/getPermissions.ts"],"names":[],"mappings":"AAIA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAmC7D"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// getPermissions — derive full platform manifest/Info.plist + Meta DAT requirements.
|
|
2
|
+
// Spec: docs/mcp/MCP_TOOLS.md § getPermissions
|
|
3
|
+
import { deriveAndroid, deriveIos, deriveMetaDat } from "../util/permissions.js";
|
|
4
|
+
import { okResponse, errorResponse } from "../response.js";
|
|
5
|
+
export function handleGetPermissions(raw) {
|
|
6
|
+
if (!raw || typeof raw !== "object") {
|
|
7
|
+
return errorResponse({
|
|
8
|
+
code: "invalid_arguments",
|
|
9
|
+
message: "getPermissions requires { spec, platform }.",
|
|
10
|
+
fixHint: 'Pass { spec: <spec>, platform: "android" | "ios" }.',
|
|
11
|
+
retryable: false,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
const obj = raw;
|
|
15
|
+
if (!obj.spec || typeof obj.spec !== "object") {
|
|
16
|
+
return errorResponse({
|
|
17
|
+
code: "invalid_arguments",
|
|
18
|
+
message: "spec is required and must be an object.",
|
|
19
|
+
fixHint: "Pass the current spec JSON.",
|
|
20
|
+
retryable: false,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
if (obj.platform !== "android" && obj.platform !== "ios") {
|
|
24
|
+
return errorResponse({
|
|
25
|
+
code: "invalid_arguments",
|
|
26
|
+
message: `platform must be "android" or "ios" (got ${JSON.stringify(obj.platform)}).`,
|
|
27
|
+
fixHint: 'Pass platform: "android" or "ios".',
|
|
28
|
+
retryable: false,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
const spec = obj.spec;
|
|
32
|
+
const android = deriveAndroid(spec);
|
|
33
|
+
const ios = deriveIos(spec);
|
|
34
|
+
const metaDat = deriveMetaDat(spec);
|
|
35
|
+
const summary = buildSummary(obj.platform, android, ios, metaDat);
|
|
36
|
+
return okResponse({ android, ios, metaDat, summary });
|
|
37
|
+
}
|
|
38
|
+
function buildSummary(platform, android, ios, metaDat) {
|
|
39
|
+
if (platform === "android") {
|
|
40
|
+
const fg = android.foregroundService.required
|
|
41
|
+
? ` Foreground service required (types: ${android.foregroundService.types.join(", ")}).`
|
|
42
|
+
: "";
|
|
43
|
+
return `Android: ${android.permissions.length} permission${s(android.permissions.length)} (min SDK ${android.minimumSdk}, target ${android.targetSdk}).${fg} Meta DAT registration ${metaDat.registrationRequired ? "required" : "not required"} (${metaDat.scopes.length} scopes).`;
|
|
44
|
+
}
|
|
45
|
+
return `iOS: ${ios.plistKeys.length} Info.plist key${s(ios.plistKeys.length)} required. Meta DAT registration ${metaDat.registrationRequired ? "required" : "not required"} (${metaDat.scopes.length} scopes).`;
|
|
46
|
+
}
|
|
47
|
+
function s(n) {
|
|
48
|
+
return n === 1 ? "" : "s";
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=getPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPermissions.js","sourceRoot":"","sources":["../../../src/tools/handlers/getPermissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPlatformInfo.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/getPlatformInfo.ts"],"names":[],"mappings":"AAOA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAU5E,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CA+B9D"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// getPlatformInfo — static platform metadata bundle.
|
|
2
|
+
// Spec: docs/mcp/MCP_TOOLS.md § getPlatformInfo
|
|
3
|
+
// Consolidates version / schema / capabilities into one tool (three legacy tools pre-v1).
|
|
4
|
+
import { specSchema } from "../../generated/schemas.js";
|
|
5
|
+
import { VERSION_INFO } from "../data/version.js";
|
|
6
|
+
import { META_RAYBAN_CAPABILITIES } from "../data/capabilities.js";
|
|
7
|
+
import { okResponse, errorResponse } from "../response.js";
|
|
8
|
+
const SECTIONS = ["version", "schema", "capabilities"];
|
|
9
|
+
export function handleGetPlatformInfo(raw) {
|
|
10
|
+
const parsed = parseArgs(raw);
|
|
11
|
+
if ("error" in parsed)
|
|
12
|
+
return parsed.error;
|
|
13
|
+
const { sections, glasses } = parsed.args;
|
|
14
|
+
const response = {};
|
|
15
|
+
if (sections.includes("version")) {
|
|
16
|
+
response.version = VERSION_INFO;
|
|
17
|
+
}
|
|
18
|
+
if (sections.includes("schema")) {
|
|
19
|
+
response.schema = {
|
|
20
|
+
schema: specSchema,
|
|
21
|
+
version: "1.0",
|
|
22
|
+
schemaUri: "extentos://schema/v1",
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (sections.includes("capabilities")) {
|
|
26
|
+
if (glasses !== "meta_rayban") {
|
|
27
|
+
return errorResponse({
|
|
28
|
+
code: "invalid_arguments",
|
|
29
|
+
message: "glasses is required when sections includes \"capabilities\" — only \"meta_rayban\" is supported for MVP.",
|
|
30
|
+
fixHint: "Pass glasses: \"meta_rayban\".",
|
|
31
|
+
retryable: false,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
response.capabilities = META_RAYBAN_CAPABILITIES;
|
|
35
|
+
}
|
|
36
|
+
return okResponse(response);
|
|
37
|
+
}
|
|
38
|
+
function parseArgs(raw) {
|
|
39
|
+
if (!raw || typeof raw !== "object") {
|
|
40
|
+
return {
|
|
41
|
+
error: errorResponse({
|
|
42
|
+
code: "invalid_arguments",
|
|
43
|
+
message: "getPlatformInfo requires an object argument.",
|
|
44
|
+
fixHint: "Pass { sections: [\"version\" | \"schema\" | \"capabilities\"], glasses? }.",
|
|
45
|
+
retryable: false,
|
|
46
|
+
}),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const obj = raw;
|
|
50
|
+
const rawSections = obj.sections;
|
|
51
|
+
if (!Array.isArray(rawSections) || rawSections.length === 0) {
|
|
52
|
+
return {
|
|
53
|
+
error: errorResponse({
|
|
54
|
+
code: "invalid_arguments",
|
|
55
|
+
message: "sections must be a non-empty array.",
|
|
56
|
+
fixHint: "Pass sections: [\"version\"], or any non-empty subset of [\"version\", \"schema\", \"capabilities\"].",
|
|
57
|
+
retryable: false,
|
|
58
|
+
}),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const sections = [];
|
|
62
|
+
for (const s of rawSections) {
|
|
63
|
+
if (typeof s !== "string" || !SECTIONS.includes(s)) {
|
|
64
|
+
return {
|
|
65
|
+
error: errorResponse({
|
|
66
|
+
code: "invalid_arguments",
|
|
67
|
+
message: `sections contains an unknown value ${JSON.stringify(s)}; valid: ${SECTIONS.join(", ")}.`,
|
|
68
|
+
fixHint: "Remove unknown sections.",
|
|
69
|
+
retryable: false,
|
|
70
|
+
}),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
sections.push(s);
|
|
74
|
+
}
|
|
75
|
+
const glasses = obj.glasses === "meta_rayban" ? "meta_rayban" : undefined;
|
|
76
|
+
return { args: { sections, glasses } };
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=getPlatformInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPlatformInfo.js","sourceRoot":"","sources":["../../../src/tools/handlers/getPlatformInfo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProductionChecklist.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/getProductionChecklist.ts"],"names":[],"mappings":"AAQA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAsB5E,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAkLrE"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
// getProductionChecklist — personalized production readiness checklist.
|
|
2
|
+
// Spec: docs/mcp/MCP_TOOLS.md § getProductionChecklist
|
|
3
|
+
// 8 categories, personalized by spec contents (skip API Keys if no handlers,
|
|
4
|
+
// skip Foreground Service if no streams, etc.).
|
|
5
|
+
import { readFileSync } from "node:fs";
|
|
6
|
+
import { join } from "node:path";
|
|
7
|
+
import { deriveAndroid, deriveIos, deriveMetaDat } from "../util/permissions.js";
|
|
8
|
+
import { okResponse, errorResponse } from "../response.js";
|
|
9
|
+
export function handleGetProductionChecklist(raw) {
|
|
10
|
+
if (!raw || typeof raw !== "object") {
|
|
11
|
+
return errorResponse({
|
|
12
|
+
code: "invalid_arguments",
|
|
13
|
+
message: "getProductionChecklist requires { spec, platform }.",
|
|
14
|
+
fixHint: 'Pass { spec: <spec>, platform: "android" | "ios" }.',
|
|
15
|
+
retryable: false,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
const obj = raw;
|
|
19
|
+
if (!obj.spec || typeof obj.spec !== "object") {
|
|
20
|
+
return errorResponse({
|
|
21
|
+
code: "invalid_arguments",
|
|
22
|
+
message: "spec is required and must be an object.",
|
|
23
|
+
fixHint: "Pass the current spec JSON.",
|
|
24
|
+
retryable: false,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
if (obj.platform !== "android" && obj.platform !== "ios") {
|
|
28
|
+
return errorResponse({
|
|
29
|
+
code: "invalid_arguments",
|
|
30
|
+
message: `platform must be "android" or "ios" (got ${JSON.stringify(obj.platform)}).`,
|
|
31
|
+
fixHint: 'Pass platform: "android" or "ios".',
|
|
32
|
+
retryable: false,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const spec = obj.spec;
|
|
36
|
+
const platform = obj.platform;
|
|
37
|
+
const projectPath = typeof obj.projectPath === "string" ? obj.projectPath : undefined;
|
|
38
|
+
const state = projectPath ? readProjectState(projectPath) : emptyState();
|
|
39
|
+
const handlers = collectHandlers(spec);
|
|
40
|
+
const streams = asArr(spec.streams);
|
|
41
|
+
const hasStreams = streams.length > 0;
|
|
42
|
+
const hasHandlers = handlers.length > 0;
|
|
43
|
+
const android = deriveAndroid(spec);
|
|
44
|
+
const ios = deriveIos(spec);
|
|
45
|
+
const metaDat = deriveMetaDat(spec);
|
|
46
|
+
const steps = [];
|
|
47
|
+
// 1. Meta Developer Account
|
|
48
|
+
steps.push({
|
|
49
|
+
category: "Meta Developer Account",
|
|
50
|
+
description: "Register a Meta for Developers app and enable the Wearables DAT product.",
|
|
51
|
+
status: state.metaAppId ? "done" : "needed",
|
|
52
|
+
details: "All real-hardware traffic requires a Meta App ID and Client Token. The default manifest ships with placeholders that only work in simulator mode.",
|
|
53
|
+
fix: "Create an app at https://developers.facebook.com/apps/, enable Meta Wearables DAT, copy the App ID and Client Token into extentos.manifest.json (MVP) or platform config.",
|
|
54
|
+
});
|
|
55
|
+
// 2. DAT Registration
|
|
56
|
+
steps.push({
|
|
57
|
+
category: "DAT Registration",
|
|
58
|
+
description: "Register your package/bundle ID with Meta's Developer Access Toolkit.",
|
|
59
|
+
status: "needed",
|
|
60
|
+
details: platform === "android"
|
|
61
|
+
? "Meta binds the DAT entitlement to the Android package name + signing signature. The app will not connect to real glasses until this pair is registered."
|
|
62
|
+
: "Meta binds the DAT entitlement to the iOS bundle ID + Team ID. The app will not connect to real glasses until this pair is registered.",
|
|
63
|
+
fix: platform === "android"
|
|
64
|
+
? "In your Meta app settings, add an Android platform with your package name and release SHA-1 signing signature."
|
|
65
|
+
: "In your Meta app settings, add an iOS platform with your bundle ID and Team ID.",
|
|
66
|
+
requiredScopes: metaDat.scopes,
|
|
67
|
+
});
|
|
68
|
+
// 3. Credential Swap
|
|
69
|
+
steps.push({
|
|
70
|
+
category: "Credential Swap",
|
|
71
|
+
description: "Replace simulator placeholder credentials with production Meta credentials.",
|
|
72
|
+
status: state.metaCredentialsConfigured ? "done" : "needed",
|
|
73
|
+
details: "The generated extentos.manifest.json (Android) or Info.plist MWDAT dict (iOS) ships with placeholder values that route to the simulator. Production builds must swap them.",
|
|
74
|
+
fix: platform === "android"
|
|
75
|
+
? "Edit extentos.manifest.json.meta: set metaAppId and clientToken to real values from Meta Developer Center."
|
|
76
|
+
: "Edit Info.plist MWDAT dict: set MetaAppID, ClientToken, and TeamID to real values.",
|
|
77
|
+
codeChange: platform === "android"
|
|
78
|
+
? { file: "extentos.manifest.json", hint: "meta.metaAppId, meta.clientToken" }
|
|
79
|
+
: { file: "Info.plist", hint: "MWDAT.MetaAppID, MWDAT.ClientToken, MWDAT.TeamID" },
|
|
80
|
+
});
|
|
81
|
+
// 4. API Keys — only if spec has app_callback handlers
|
|
82
|
+
if (hasHandlers) {
|
|
83
|
+
steps.push({
|
|
84
|
+
category: "API Keys",
|
|
85
|
+
description: `Wire BYOK API keys for ${handlers.length} callback handler${handlers.length === 1 ? "" : "s"}.`,
|
|
86
|
+
status: "needed",
|
|
87
|
+
details: "Every app_callback handler in the spec is expected to call a third-party AI / vision / translation service. Production builds must not ship with in-simulator proxy credentials.",
|
|
88
|
+
fix: "Call getCredentialGuide to get per-provider setup steps, then wire secrets via platform config (BuildConfig on Android, Info.plist lookup on iOS).",
|
|
89
|
+
affectedHandlers: handlers,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
// 5. Permissions Audit — always
|
|
93
|
+
const permCount = platform === "android" ? android.permissions.length : ios.plistKeys.length;
|
|
94
|
+
steps.push({
|
|
95
|
+
category: "Permissions Audit",
|
|
96
|
+
description: `Verify ${permCount} ${platform === "android" ? "runtime permission" : "Info.plist key"}${permCount === 1 ? "" : "s"} are declared with real user-facing rationale strings.`,
|
|
97
|
+
status: "needed",
|
|
98
|
+
details: platform === "android"
|
|
99
|
+
? `Derived permissions: ${android.permissions.join(", ")}. AndroidManifest must declare each, and runtime prompts (camera, mic, Bluetooth) must be requested before the first block invocation.`
|
|
100
|
+
: `Derived Info.plist keys: ${ios.plistKeys.map((k) => k.key).join(", ")}. Each NSUsageDescription string must be user-facing and truthful — App Store Review rejects generic placeholders.`,
|
|
101
|
+
fix: platform === "android"
|
|
102
|
+
? "Run getPermissions to see the full set, then ensure AndroidManifest.xml matches and RuntimePermissions is wired before hardware use."
|
|
103
|
+
: "Run getPermissions to see the full set, then open Info.plist and replace any generated placeholder rationale strings with copy your users will read.",
|
|
104
|
+
});
|
|
105
|
+
// 6. Foreground Service — only if streams exist and platform is android
|
|
106
|
+
if (hasStreams && platform === "android") {
|
|
107
|
+
const fgTypes = android.foregroundService.types;
|
|
108
|
+
steps.push({
|
|
109
|
+
category: "Foreground Service",
|
|
110
|
+
description: `Declare foreground service for ${fgTypes.join(" + ")} stream${fgTypes.length === 1 ? "" : "s"}.`,
|
|
111
|
+
status: "needed",
|
|
112
|
+
details: "Android 14+ requires a typed foreground service for mic/camera streams that run while the app is backgrounded. The Extentos library ships the service class; the manifest entry and start/stop wiring are app-level.",
|
|
113
|
+
fix: "Add the ExtentosForegroundService entry to AndroidManifest.xml (type=" + fgTypes.join("|") + ") and call ExtentosGlasses.startStreamingService() before the first stream starts.",
|
|
114
|
+
codeChange: {
|
|
115
|
+
file: "AndroidManifest.xml",
|
|
116
|
+
hint: android.foregroundService.declaration ?? "<service ... android:foregroundServiceType=...>",
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
else if (hasStreams && platform === "ios") {
|
|
121
|
+
// iOS doesn't have "foreground service" but equivalent: background modes.
|
|
122
|
+
steps.push({
|
|
123
|
+
category: "Foreground Service",
|
|
124
|
+
description: "Enable background audio/Bluetooth modes for continuous stream delivery.",
|
|
125
|
+
status: "needed",
|
|
126
|
+
details: "iOS terminates mic/camera streams when the app suspends unless the matching UIBackgroundModes key is declared. DAT requires bluetooth-central + external-accessory; streaming mic additionally needs audio.",
|
|
127
|
+
fix: "In Info.plist UIBackgroundModes, add: bluetooth-central, bluetooth-peripheral, external-accessory (plus audio if streaming mic).",
|
|
128
|
+
codeChange: { file: "Info.plist", hint: "UIBackgroundModes" },
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
// 7. Transport Config — always
|
|
132
|
+
steps.push({
|
|
133
|
+
category: "Transport Config",
|
|
134
|
+
description: "Confirm production transport resolution — real Meta DAT SDK, no BrowserSimTransport.",
|
|
135
|
+
status: "needed",
|
|
136
|
+
details: "During development the library auto-selects BrowserSimTransport (if session URL set) or RealMetaTransport. For production release builds, ensure the simulator session URL is not shipped and the transport resolver falls through to real hardware.",
|
|
137
|
+
fix: platform === "android"
|
|
138
|
+
? "Strip any EXTENTOS_SIMULATOR_SESSION_URL from release buildConfig. Confirm ExtentosGlasses.create() has no explicit transport override."
|
|
139
|
+
: "Strip any EXTENTOS_SIMULATOR_SESSION_URL from release Info.plist. Confirm Extentos.create() has no explicit transport override.",
|
|
140
|
+
});
|
|
141
|
+
// 8. Store Listing — always, optional priority
|
|
142
|
+
steps.push({
|
|
143
|
+
category: "Store Listing",
|
|
144
|
+
description: platform === "android" ? "Prepare Play Store listing metadata." : "Prepare App Store Connect listing metadata.",
|
|
145
|
+
status: "optional",
|
|
146
|
+
details: platform === "android"
|
|
147
|
+
? "Privacy policy URL, data-safety disclosures (camera, mic, Bluetooth, location if applicable), screenshots, target audience. Play Store rejects apps that use camera/mic without a published policy."
|
|
148
|
+
: "Privacy policy URL, App Privacy disclosures (matching the Info.plist keys above), App Review justification for Bluetooth external accessory, screenshots, age rating.",
|
|
149
|
+
fix: "Draft a privacy policy covering the glasses-derived data (photo/video/audio) and host it publicly before submitting.",
|
|
150
|
+
});
|
|
151
|
+
const neededCount = steps.filter((s) => s.status === "needed").length;
|
|
152
|
+
const doneCount = steps.filter((s) => s.status === "done").length;
|
|
153
|
+
const ready = neededCount === 0;
|
|
154
|
+
const summary = buildSummary({
|
|
155
|
+
ready,
|
|
156
|
+
neededCount,
|
|
157
|
+
doneCount,
|
|
158
|
+
total: steps.length,
|
|
159
|
+
platform,
|
|
160
|
+
hasHandlers,
|
|
161
|
+
hasStreams,
|
|
162
|
+
scopeCount: metaDat.scopes.length,
|
|
163
|
+
projectPathGiven: Boolean(projectPath),
|
|
164
|
+
manifestFound: state.manifestExists,
|
|
165
|
+
});
|
|
166
|
+
return okResponse({ ready, steps, summary });
|
|
167
|
+
}
|
|
168
|
+
function buildSummary(opts) {
|
|
169
|
+
const parts = [];
|
|
170
|
+
parts.push(`${opts.ready ? "Ready" : "Not ready"} for production on ${opts.platform}: ${opts.neededCount} step${opts.neededCount === 1 ? "" : "s"} still needed, ${opts.doneCount} done, ${opts.total} total.`);
|
|
171
|
+
if (!opts.projectPathGiven) {
|
|
172
|
+
parts.push("No projectPath supplied — assumed nothing is done yet. Pass projectPath to check manifest/credential state.");
|
|
173
|
+
}
|
|
174
|
+
else if (!opts.manifestFound) {
|
|
175
|
+
parts.push("extentos.manifest.json not found at projectPath — treated as pre-bootstrap.");
|
|
176
|
+
}
|
|
177
|
+
parts.push(`${opts.scopeCount} Meta DAT scope${opts.scopeCount === 1 ? "" : "s"} required based on spec contents.`);
|
|
178
|
+
if (opts.hasStreams)
|
|
179
|
+
parts.push("Spec uses streams — foreground service / background modes step included.");
|
|
180
|
+
if (!opts.hasHandlers)
|
|
181
|
+
parts.push("Spec has no app_callback handlers — API Keys step skipped.");
|
|
182
|
+
return parts.join(" ");
|
|
183
|
+
}
|
|
184
|
+
function collectHandlers(spec) {
|
|
185
|
+
const set = new Set();
|
|
186
|
+
walkActions(spec.triggers, (action) => {
|
|
187
|
+
if (action && action.type === "app_callback" && typeof action.handler === "string") {
|
|
188
|
+
set.add(action.handler);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
return [...set].sort();
|
|
192
|
+
}
|
|
193
|
+
function walkActions(triggers, visit) {
|
|
194
|
+
const arr = asArr(triggers);
|
|
195
|
+
for (const t of arr) {
|
|
196
|
+
walkActionList(t.actions, visit);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function walkActionList(actions, visit) {
|
|
200
|
+
const arr = asArr(actions);
|
|
201
|
+
for (const a of arr) {
|
|
202
|
+
visit(a);
|
|
203
|
+
if (a.type === "branch") {
|
|
204
|
+
walkActionList(a.then, visit);
|
|
205
|
+
walkActionList(a.else, visit);
|
|
206
|
+
}
|
|
207
|
+
const wrapper = a.actions;
|
|
208
|
+
if (wrapper)
|
|
209
|
+
walkActionList(wrapper, visit);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function asArr(v) {
|
|
213
|
+
return Array.isArray(v) ? v : [];
|
|
214
|
+
}
|
|
215
|
+
function emptyState() {
|
|
216
|
+
return { manifestExists: false, metaCredentialsConfigured: false };
|
|
217
|
+
}
|
|
218
|
+
function readProjectState(projectPath) {
|
|
219
|
+
try {
|
|
220
|
+
const manifestPath = join(projectPath, "extentos.manifest.json");
|
|
221
|
+
const text = readFileSync(manifestPath, "utf8");
|
|
222
|
+
const parsed = JSON.parse(text);
|
|
223
|
+
const meta = (parsed && typeof parsed === "object" ? parsed.meta : undefined);
|
|
224
|
+
const appId = typeof meta?.metaAppId === "string" ? meta.metaAppId : undefined;
|
|
225
|
+
const token = typeof meta?.clientToken === "string" ? meta.clientToken : undefined;
|
|
226
|
+
const isPlaceholder = (v) => !v || v === "" || v.includes("PLACEHOLDER") || v.includes("REPLACE_ME") || v.includes("simulator");
|
|
227
|
+
const configured = !isPlaceholder(appId) && !isPlaceholder(token);
|
|
228
|
+
return {
|
|
229
|
+
manifestExists: true,
|
|
230
|
+
metaCredentialsConfigured: configured,
|
|
231
|
+
metaAppId: appId,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
return emptyState();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=getProductionChecklist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProductionChecklist.js","sourceRoot":"","sources":["../../../src/tools/handlers/getProductionChecklist.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSimulatorStatus.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/getSimulatorStatus.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAmB5E,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAsDhF"}
|