@extentos/mcp-server 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/README.md +56 -0
  2. package/dist/cli/login.d.ts +2 -0
  3. package/dist/cli/login.d.ts.map +1 -0
  4. package/dist/cli/login.js +71 -0
  5. package/dist/cli/login.js.map +1 -0
  6. package/dist/cli/logout.d.ts +2 -0
  7. package/dist/cli/logout.d.ts.map +1 -0
  8. package/dist/cli/logout.js +65 -0
  9. package/dist/cli/logout.js.map +1 -0
  10. package/dist/cli/privacy.d.ts +3 -0
  11. package/dist/cli/privacy.d.ts.map +1 -0
  12. package/dist/cli/privacy.js +39 -0
  13. package/dist/cli/privacy.js.map +1 -0
  14. package/dist/cli/status.d.ts +2 -0
  15. package/dist/cli/status.d.ts.map +1 -0
  16. package/dist/cli/status.js +9 -0
  17. package/dist/cli/status.js.map +1 -0
  18. package/dist/cli/update.d.ts +2 -0
  19. package/dist/cli/update.d.ts.map +1 -0
  20. package/dist/cli/update.js +8 -0
  21. package/dist/cli/update.js.map +1 -0
  22. package/dist/cli/whoami.d.ts +2 -0
  23. package/dist/cli/whoami.d.ts.map +1 -0
  24. package/dist/cli/whoami.js +8 -0
  25. package/dist/cli/whoami.js.map +1 -0
  26. package/dist/cli.d.ts +3 -0
  27. package/dist/cli.d.ts.map +1 -0
  28. package/dist/cli.js +69 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/generated/schemas.d.ts +4 -0
  31. package/dist/generated/schemas.d.ts.map +1 -0
  32. package/dist/generated/schemas.js +2697 -0
  33. package/dist/generated/schemas.js.map +1 -0
  34. package/dist/index.d.ts +3 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +69 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/stub.d.ts +15 -0
  39. package/dist/stub.d.ts.map +1 -0
  40. package/dist/stub.js +20 -0
  41. package/dist/stub.js.map +1 -0
  42. package/dist/telemetry/client.d.ts +73 -0
  43. package/dist/telemetry/client.d.ts.map +1 -0
  44. package/dist/telemetry/client.js +207 -0
  45. package/dist/telemetry/client.js.map +1 -0
  46. package/dist/telemetry/consent.d.ts +19 -0
  47. package/dist/telemetry/consent.d.ts.map +1 -0
  48. package/dist/telemetry/consent.js +68 -0
  49. package/dist/telemetry/consent.js.map +1 -0
  50. package/dist/telemetry/index.d.ts +56 -0
  51. package/dist/telemetry/index.d.ts.map +1 -0
  52. package/dist/telemetry/index.js +151 -0
  53. package/dist/telemetry/index.js.map +1 -0
  54. package/dist/telemetry/installRegistry.d.ts +18 -0
  55. package/dist/telemetry/installRegistry.d.ts.map +1 -0
  56. package/dist/telemetry/installRegistry.js +102 -0
  57. package/dist/telemetry/installRegistry.js.map +1 -0
  58. package/dist/tools/data/capabilities.d.ts +566 -0
  59. package/dist/tools/data/capabilities.d.ts.map +1 -0
  60. package/dist/tools/data/capabilities.js +243 -0
  61. package/dist/tools/data/capabilities.js.map +1 -0
  62. package/dist/tools/data/examplePatterns.d.ts +4 -0
  63. package/dist/tools/data/examplePatterns.d.ts.map +1 -0
  64. package/dist/tools/data/examplePatterns.js +546 -0
  65. package/dist/tools/data/examplePatterns.js.map +1 -0
  66. package/dist/tools/data/presetTriggers.d.ts +4 -0
  67. package/dist/tools/data/presetTriggers.d.ts.map +1 -0
  68. package/dist/tools/data/presetTriggers.js +47 -0
  69. package/dist/tools/data/presetTriggers.js.map +1 -0
  70. package/dist/tools/data/version.d.ts +31 -0
  71. package/dist/tools/data/version.d.ts.map +1 -0
  72. package/dist/tools/data/version.js +34 -0
  73. package/dist/tools/data/version.js.map +1 -0
  74. package/dist/tools/definitions.d.ts +13 -0
  75. package/dist/tools/definitions.d.ts.map +1 -0
  76. package/dist/tools/definitions.js +347 -0
  77. package/dist/tools/definitions.js.map +1 -0
  78. package/dist/tools/docs/index.d.ts +10 -0
  79. package/dist/tools/docs/index.d.ts.map +1 -0
  80. package/dist/tools/docs/index.js +220 -0
  81. package/dist/tools/docs/index.js.map +1 -0
  82. package/dist/tools/handlers/completeAuthLink.d.ts +3 -0
  83. package/dist/tools/handlers/completeAuthLink.d.ts.map +1 -0
  84. package/dist/tools/handlers/completeAuthLink.js +152 -0
  85. package/dist/tools/handlers/completeAuthLink.js.map +1 -0
  86. package/dist/tools/handlers/createSimulatorSession.d.ts +3 -0
  87. package/dist/tools/handlers/createSimulatorSession.d.ts.map +1 -0
  88. package/dist/tools/handlers/createSimulatorSession.js +231 -0
  89. package/dist/tools/handlers/createSimulatorSession.js.map +1 -0
  90. package/dist/tools/handlers/generateConnectionModule.d.ts +3 -0
  91. package/dist/tools/handlers/generateConnectionModule.d.ts.map +1 -0
  92. package/dist/tools/handlers/generateConnectionModule.js +222 -0
  93. package/dist/tools/handlers/generateConnectionModule.js.map +1 -0
  94. package/dist/tools/handlers/generateConsumer.d.ts +3 -0
  95. package/dist/tools/handlers/generateConsumer.d.ts.map +1 -0
  96. package/dist/tools/handlers/generateConsumer.js +257 -0
  97. package/dist/tools/handlers/generateConsumer.js.map +1 -0
  98. package/dist/tools/handlers/getCredentialGuide.d.ts +3 -0
  99. package/dist/tools/handlers/getCredentialGuide.d.ts.map +1 -0
  100. package/dist/tools/handlers/getCredentialGuide.js +296 -0
  101. package/dist/tools/handlers/getCredentialGuide.js.map +1 -0
  102. package/dist/tools/handlers/getEventLog.d.ts +3 -0
  103. package/dist/tools/handlers/getEventLog.d.ts.map +1 -0
  104. package/dist/tools/handlers/getEventLog.js +90 -0
  105. package/dist/tools/handlers/getEventLog.js.map +1 -0
  106. package/dist/tools/handlers/getExampleSpec.d.ts +3 -0
  107. package/dist/tools/handlers/getExampleSpec.d.ts.map +1 -0
  108. package/dist/tools/handlers/getExampleSpec.js +44 -0
  109. package/dist/tools/handlers/getExampleSpec.js.map +1 -0
  110. package/dist/tools/handlers/getPermissions.d.ts +3 -0
  111. package/dist/tools/handlers/getPermissions.d.ts.map +1 -0
  112. package/dist/tools/handlers/getPermissions.js +50 -0
  113. package/dist/tools/handlers/getPermissions.js.map +1 -0
  114. package/dist/tools/handlers/getPlatformInfo.d.ts +3 -0
  115. package/dist/tools/handlers/getPlatformInfo.d.ts.map +1 -0
  116. package/dist/tools/handlers/getPlatformInfo.js +78 -0
  117. package/dist/tools/handlers/getPlatformInfo.js.map +1 -0
  118. package/dist/tools/handlers/getProductionChecklist.d.ts +3 -0
  119. package/dist/tools/handlers/getProductionChecklist.d.ts.map +1 -0
  120. package/dist/tools/handlers/getProductionChecklist.js +238 -0
  121. package/dist/tools/handlers/getProductionChecklist.js.map +1 -0
  122. package/dist/tools/handlers/getSimulatorStatus.d.ts +3 -0
  123. package/dist/tools/handlers/getSimulatorStatus.d.ts.map +1 -0
  124. package/dist/tools/handlers/getSimulatorStatus.js +56 -0
  125. package/dist/tools/handlers/getSimulatorStatus.js.map +1 -0
  126. package/dist/tools/handlers/getVoiceCommandGuidance.d.ts +3 -0
  127. package/dist/tools/handlers/getVoiceCommandGuidance.d.ts.map +1 -0
  128. package/dist/tools/handlers/getVoiceCommandGuidance.js +200 -0
  129. package/dist/tools/handlers/getVoiceCommandGuidance.js.map +1 -0
  130. package/dist/tools/handlers/initSpec.d.ts +3 -0
  131. package/dist/tools/handlers/initSpec.d.ts.map +1 -0
  132. package/dist/tools/handlers/initSpec.js +234 -0
  133. package/dist/tools/handlers/initSpec.js.map +1 -0
  134. package/dist/tools/handlers/inspectIntegration.d.ts +3 -0
  135. package/dist/tools/handlers/inspectIntegration.d.ts.map +1 -0
  136. package/dist/tools/handlers/inspectIntegration.js +204 -0
  137. package/dist/tools/handlers/inspectIntegration.js.map +1 -0
  138. package/dist/tools/handlers/planIntegration.d.ts +3 -0
  139. package/dist/tools/handlers/planIntegration.d.ts.map +1 -0
  140. package/dist/tools/handlers/planIntegration.js +279 -0
  141. package/dist/tools/handlers/planIntegration.js.map +1 -0
  142. package/dist/tools/handlers/searchDocs.d.ts +3 -0
  143. package/dist/tools/handlers/searchDocs.d.ts.map +1 -0
  144. package/dist/tools/handlers/searchDocs.js +41 -0
  145. package/dist/tools/handlers/searchDocs.js.map +1 -0
  146. package/dist/tools/handlers/updateSpec.d.ts +3 -0
  147. package/dist/tools/handlers/updateSpec.d.ts.map +1 -0
  148. package/dist/tools/handlers/updateSpec.js +453 -0
  149. package/dist/tools/handlers/updateSpec.js.map +1 -0
  150. package/dist/tools/handlers/validateIntegration.d.ts +3 -0
  151. package/dist/tools/handlers/validateIntegration.d.ts.map +1 -0
  152. package/dist/tools/handlers/validateIntegration.js +546 -0
  153. package/dist/tools/handlers/validateIntegration.js.map +1 -0
  154. package/dist/tools/handlers/validateSpec.d.ts +3 -0
  155. package/dist/tools/handlers/validateSpec.d.ts.map +1 -0
  156. package/dist/tools/handlers/validateSpec.js +26 -0
  157. package/dist/tools/handlers/validateSpec.js.map +1 -0
  158. package/dist/tools/registry.d.ts +4 -0
  159. package/dist/tools/registry.d.ts.map +1 -0
  160. package/dist/tools/registry.js +43 -0
  161. package/dist/tools/registry.js.map +1 -0
  162. package/dist/tools/response.d.ts +12 -0
  163. package/dist/tools/response.d.ts.map +1 -0
  164. package/dist/tools/response.js +19 -0
  165. package/dist/tools/response.js.map +1 -0
  166. package/dist/tools/templates/androidBootstrap.d.ts +2 -0
  167. package/dist/tools/templates/androidBootstrap.d.ts.map +1 -0
  168. package/dist/tools/templates/androidBootstrap.js +40 -0
  169. package/dist/tools/templates/androidBootstrap.js.map +1 -0
  170. package/dist/tools/templates/callbackHandler.d.ts +11 -0
  171. package/dist/tools/templates/callbackHandler.d.ts.map +1 -0
  172. package/dist/tools/templates/callbackHandler.js +177 -0
  173. package/dist/tools/templates/callbackHandler.js.map +1 -0
  174. package/dist/tools/templates/iosBootstrap.d.ts +3 -0
  175. package/dist/tools/templates/iosBootstrap.d.ts.map +1 -0
  176. package/dist/tools/templates/iosBootstrap.js +50 -0
  177. package/dist/tools/templates/iosBootstrap.js.map +1 -0
  178. package/dist/tools/templates/streamConsumer.d.ts +8 -0
  179. package/dist/tools/templates/streamConsumer.d.ts.map +1 -0
  180. package/dist/tools/templates/streamConsumer.js +248 -0
  181. package/dist/tools/templates/streamConsumer.js.map +1 -0
  182. package/dist/tools/util/appPackage.d.ts +4 -0
  183. package/dist/tools/util/appPackage.d.ts.map +1 -0
  184. package/dist/tools/util/appPackage.js +16 -0
  185. package/dist/tools/util/appPackage.js.map +1 -0
  186. package/dist/tools/util/backendClient.d.ts +25 -0
  187. package/dist/tools/util/backendClient.d.ts.map +1 -0
  188. package/dist/tools/util/backendClient.js +144 -0
  189. package/dist/tools/util/backendClient.js.map +1 -0
  190. package/dist/tools/util/manifest.d.ts +9 -0
  191. package/dist/tools/util/manifest.d.ts.map +1 -0
  192. package/dist/tools/util/manifest.js +62 -0
  193. package/dist/tools/util/manifest.js.map +1 -0
  194. package/dist/tools/util/permissions.d.ts +32 -0
  195. package/dist/tools/util/permissions.d.ts.map +1 -0
  196. package/dist/tools/util/permissions.js +165 -0
  197. package/dist/tools/util/permissions.js.map +1 -0
  198. package/dist/tools/validation/validateSpec.d.ts +22 -0
  199. package/dist/tools/validation/validateSpec.d.ts.map +1 -0
  200. package/dist/tools/validation/validateSpec.js +370 -0
  201. package/dist/tools/validation/validateSpec.js.map +1 -0
  202. package/package.json +58 -0
package/README.md ADDED
@@ -0,0 +1,56 @@
1
+ # @extentos/mcp-server
2
+
3
+ MCP server for building Meta-glasses-connected apps with Claude Code and other
4
+ MCP-aware agents. Exposes 18 deterministic tools covering planning, spec
5
+ authoring, code generation, permissions, credential guidance, validation, and
6
+ a browser-based simulator for testing without physical hardware.
7
+
8
+ ## Install
9
+
10
+ Register the server with Claude Code (or any MCP host) in one line:
11
+
12
+ ```bash
13
+ claude mcp add extentos -- npx -y @extentos/mcp-server@latest
14
+ ```
15
+
16
+ Restart Claude Code. `/mcp` should list `extentos` with all tools available.
17
+
18
+ Prerequisites: Node.js 20+ on `PATH`. That's it — `npx` fetches the package on
19
+ first run and caches it.
20
+
21
+ ## What it does
22
+
23
+ The agent drives a full integration flow:
24
+
25
+ 1. `planIntegration` — pick the tool sequence for a goal
26
+ 2. `generateConnectionModule` — write the bootstrap code + Gradle/SPM wiring
27
+ 3. `initSpec` / `updateSpec` — build up the app's behavior spec
28
+ 4. `generateConsumer(kind: "callback")` — emit BYOK handler stubs
29
+ 5. `getPermissions` / `validateIntegration` — check wiring before running
30
+ 6. `createSimulatorSession` — provision a browser-hosted glasses surrogate
31
+ 7. `getEventLog` / `inspectIntegration` — debug a running session
32
+ 8. `getProductionChecklist` — walk through ship-readiness
33
+
34
+ See the full tool reference and example flow in the repo:
35
+
36
+ - [MCP tool catalog](https://github.com/Asgermolgaard/vibe-hardware/blob/master/docs/mcp/MCP_TOOLS.md)
37
+ - [12-step example flow](https://github.com/Asgermolgaard/vibe-hardware/blob/master/docs/mcp/EXAMPLE_FLOW.md)
38
+ - [Authentication model](https://github.com/Asgermolgaard/vibe-hardware/blob/master/docs/mcp/AUTHENTICATION.md)
39
+
40
+ ## Platforms
41
+
42
+ - **Android** — primary target for the current pre-release. Library resolves
43
+ from `mavenLocal()` during Phase 7a; Maven Central promotion is on the
44
+ Phase 7b roadmap.
45
+ - **iOS** — supported via SPM. Same MCP tool surface, different generated
46
+ artifacts.
47
+
48
+ ## Status
49
+
50
+ Pre-1.0. APIs may shift between minor versions until the hardware test loop
51
+ closes. Pin to an exact version (`@0.1.0`) if you need reproducibility across
52
+ sessions.
53
+
54
+ ## License
55
+
56
+ MIT — see [LICENSE](https://github.com/Asgermolgaard/vibe-hardware/blob/master/LICENSE) in the repo.
@@ -0,0 +1,2 @@
1
+ export declare function login(): Promise<void>;
2
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"AA0BA,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA2C3C"}
@@ -0,0 +1,71 @@
1
+ // `extentos-mcp login` — explicitly initiate the device-code flow.
2
+ // Spec: docs/mcp/AUTHENTICATION.md § Device-code upgrade flow (on-demand trigger).
3
+ //
4
+ // Flow:
5
+ // 1. POST /api/auth/device/code — backend issues {deviceCode, userCode, verificationUrl, ...}
6
+ // 2. Print user-visible code + URL, best-effort auto-open the verification URL
7
+ // 3. Call handleCompleteAuthLink to poll until approved / expired / denied
8
+ // 4. handleCompleteAuthLink writes ~/.extentos/auth.json and emits telemetry
9
+ //
10
+ // Telemetry: emits `account.login_initiated` with trigger=cli_explicit at step 1.
11
+ // `account.login_completed` + `account.linked` are emitted by completeAuthLink.
12
+ import { spawn } from "node:child_process";
13
+ import { backendFetch } from "../tools/util/backendClient.js";
14
+ import { handleCompleteAuthLink } from "../tools/handlers/completeAuthLink.js";
15
+ import { drainTelemetry, emitLoginInitiated } from "../telemetry/index.js";
16
+ export async function login() {
17
+ emitLoginInitiated("cli_explicit");
18
+ const res = await backendFetch("/api/auth/device/code", {
19
+ method: "POST",
20
+ body: { scope: "account_full" },
21
+ });
22
+ if (!res.ok || !res.data?.deviceCode || !res.data?.userCode || !res.data?.verificationUrl) {
23
+ console.error("[extentos-mcp login] Failed to start device-code flow:");
24
+ console.error(` ${res.errorText ?? `HTTP ${res.status}`}`);
25
+ await drainTelemetry();
26
+ process.exit(1);
27
+ }
28
+ const { deviceCode, userCode, verificationUrl, expiresInSeconds, pollIntervalSeconds } = res.data;
29
+ console.log("Extentos account linking");
30
+ console.log("");
31
+ console.log(` User code: ${userCode}`);
32
+ console.log(` Verification URL: ${verificationUrl}`);
33
+ console.log("");
34
+ console.log(`Opening browser… (if it doesn't open, paste the URL above)`);
35
+ autoOpen(verificationUrl);
36
+ console.log(`Polling for up to ${expiresInSeconds ?? 600}s. Ctrl-C to cancel.`);
37
+ const result = await handleCompleteAuthLink({
38
+ deviceCode,
39
+ maxWaitSeconds: expiresInSeconds ?? 600,
40
+ pollIntervalSeconds: pollIntervalSeconds ?? 5,
41
+ });
42
+ const text = result.content?.[0]?.text ?? "";
43
+ if (result.isError) {
44
+ console.error("[extentos-mcp login] Link failed:");
45
+ console.error(text);
46
+ await drainTelemetry();
47
+ process.exit(1);
48
+ }
49
+ console.log("Linked.");
50
+ console.log(text);
51
+ await drainTelemetry();
52
+ }
53
+ function autoOpen(url) {
54
+ if (process.env.EXTENTOS_NO_AUTO_OPEN === "1")
55
+ return;
56
+ try {
57
+ if (process.platform === "darwin") {
58
+ spawn("open", [url], { detached: true, stdio: "ignore" }).unref();
59
+ }
60
+ else if (process.platform === "win32") {
61
+ spawn("cmd.exe", ["/c", "start", "", url], { detached: true, stdio: "ignore" }).unref();
62
+ }
63
+ else {
64
+ spawn("xdg-open", [url], { detached: true, stdio: "ignore" }).unref();
65
+ }
66
+ }
67
+ catch {
68
+ // best-effort — URL is already printed above
69
+ }
70
+ }
71
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function logout(): Promise<void>;
2
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/cli/logout.ts"],"names":[],"mappings":"AAqBA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAqC5C"}
@@ -0,0 +1,65 @@
1
+ // `extentos-mcp logout` — clear ~/.extentos/auth.json.
2
+ // Spec: docs/mcp/AUTHENTICATION.md § CLI commands.
3
+ //
4
+ // Calls POST /api/auth/logout (best-effort — if the network is down we still
5
+ // delete the local file so the install cleanly reverts to anonymous), then
6
+ // unlinks the local auth.json.
7
+ //
8
+ // Telemetry: emits `account.logged_out` with sessionLifetimeDays computed
9
+ // from auth.json's `linkedAt` timestamp.
10
+ import { existsSync, readFileSync, rmSync } from "node:fs";
11
+ import { homedir } from "node:os";
12
+ import { join } from "node:path";
13
+ import { backendFetch } from "../tools/util/backendClient.js";
14
+ import { drainTelemetry, emitLoggedOut } from "../telemetry/index.js";
15
+ function authPath() {
16
+ const base = process.env.EXTENTOS_CONFIG_DIR || join(homedir(), ".extentos");
17
+ return join(base, "auth.json");
18
+ }
19
+ export async function logout() {
20
+ const path = authPath();
21
+ if (!existsSync(path)) {
22
+ console.log("Not linked — no ~/.extentos/auth.json to remove.");
23
+ await drainTelemetry();
24
+ return;
25
+ }
26
+ let token = null;
27
+ let linkedAt = null;
28
+ try {
29
+ const raw = readFileSync(path, "utf-8");
30
+ const parsed = JSON.parse(raw);
31
+ if (typeof parsed.authToken === "string")
32
+ token = parsed.authToken;
33
+ if (typeof parsed.linkedAt === "string")
34
+ linkedAt = parsed.linkedAt;
35
+ }
36
+ catch {
37
+ // fall through — still delete the file
38
+ }
39
+ if (token) {
40
+ // Best-effort server revocation. Ignore failures.
41
+ await backendFetch("/api/auth/logout", { method: "POST", body: { authToken: token } });
42
+ }
43
+ try {
44
+ rmSync(path);
45
+ console.log("Logged out. Install returns to anonymous.");
46
+ }
47
+ catch (err) {
48
+ console.error(`[extentos-mcp logout] Failed to delete ${path}:`);
49
+ console.error(` ${err instanceof Error ? err.message : String(err)}`);
50
+ await drainTelemetry();
51
+ process.exit(1);
52
+ }
53
+ const lifetimeDays = computeLifetimeDays(linkedAt);
54
+ emitLoggedOut(lifetimeDays);
55
+ await drainTelemetry();
56
+ }
57
+ function computeLifetimeDays(linkedAt) {
58
+ if (!linkedAt)
59
+ return null;
60
+ const ms = Date.parse(linkedAt);
61
+ if (Number.isNaN(ms))
62
+ return null;
63
+ return Math.max(0, Math.round((Date.now() - ms) / (24 * 60 * 60 * 1000)));
64
+ }
65
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/cli/logout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function acceptPrivacy(): Promise<void>;
2
+ export declare function declinePrivacy(): Promise<void>;
3
+ //# sourceMappingURL=privacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../src/cli/privacy.ts"],"names":[],"mappings":"AAkBA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAWnD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAepD"}
@@ -0,0 +1,39 @@
1
+ // `extentos-mcp accept-privacy` / `decline-privacy` — persist consent decision.
2
+ // Spec: docs/mcp/TELEMETRY.md § Consent flow,
3
+ // docs/mcp/AUTHENTICATION.md § CLI commands.
4
+ //
5
+ // Both write ~/.extentos/consent; the emit order matters:
6
+ // - accept: write "accepted" first, then emit mcp.consent_accepted (gate is now open)
7
+ // - decline: emit mcp.consent_declined first, then write "declined" (last event
8
+ // on the way out; once written, the gate closes and further emits no-op)
9
+ import { writeConsent } from "../telemetry/consent.js";
10
+ import { drainTelemetry, emitConsentAccepted, emitConsentDeclined, } from "../telemetry/index.js";
11
+ const POLICY_VERSION = "2026-04-22";
12
+ export async function acceptPrivacy() {
13
+ const res = writeConsent("accepted");
14
+ if (!res.ok) {
15
+ console.error(`[extentos-mcp accept-privacy] Failed to write ${res.path}:`);
16
+ console.error(` ${res.error ?? "unknown error"}`);
17
+ process.exit(1);
18
+ }
19
+ emitConsentAccepted(POLICY_VERSION);
20
+ console.log(`Consent recorded at ${res.path}.`);
21
+ console.log("Telemetry upload enabled.");
22
+ await drainTelemetry();
23
+ }
24
+ export async function declinePrivacy() {
25
+ // Emit BEFORE writing "declined" so this final event passes the enabled() gate.
26
+ emitConsentDeclined(POLICY_VERSION);
27
+ // Drain synchronously so the decline event actually reaches the backend before
28
+ // subsequent emits are gated off.
29
+ await drainTelemetry();
30
+ const res = writeConsent("declined");
31
+ if (!res.ok) {
32
+ console.error(`[extentos-mcp decline-privacy] Failed to write ${res.path}:`);
33
+ console.error(` ${res.error ?? "unknown error"}`);
34
+ process.exit(1);
35
+ }
36
+ console.log(`Consent recorded at ${res.path}.`);
37
+ console.log("Telemetry upload disabled. Simulator continues to work.");
38
+ }
39
+ //# sourceMappingURL=privacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy.js","sourceRoot":"","sources":["../../src/cli/privacy.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,8CAA8C;AAC9C,mDAAmD;AACnD,EAAE;AACF,0DAA0D;AAC1D,wFAAwF;AACxF,kFAAkF;AAClF,6EAA6E;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,cAAc,GAAG,YAAY,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,iDAAiD,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;QAC5E,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,gFAAgF;IAChF,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACpC,+EAA+E;IAC/E,kCAAkC;IAClC,MAAM,cAAc,EAAE,CAAC;IAEvB,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,kDAAkD,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function status(): Promise<void>;
2
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAIA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAM5C"}
@@ -0,0 +1,9 @@
1
+ // `extentos-mcp status` — Phase 0 shell.
2
+ // Full mechanics: docs/mcp/AUTHENTICATION.md § CLI commands.
3
+ // Superset of whoami plus consent state, versions, library recommendations.
4
+ export async function status() {
5
+ console.error("[extentos-mcp status] Phase 0 scaffold — not implemented.");
6
+ console.error("When implemented: prints consent state, installId, linked account, tier, MCP server version, library version recommendations.");
7
+ process.exit(1);
8
+ }
9
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,6DAA6D;AAC7D,4EAA4E;AAE5E,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC3E,OAAO,CAAC,KAAK,CACX,+HAA+H,CAChI,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function update(): Promise<void>;
2
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AAGA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAM5C"}
@@ -0,0 +1,8 @@
1
+ // `extentos-mcp update` — Phase 0 shell.
2
+ // Full mechanics: docs/mcp/MCP_TOOLS.md § CLI subcommands.
3
+ export async function update() {
4
+ console.error("[extentos-mcp update] Phase 0 scaffold — not implemented.");
5
+ console.error("When implemented: no-op on npx @extentos/mcp-server@latest installs; for pinned installs prints instructions to bump version in agent MCP config.");
6
+ process.exit(1);
7
+ }
8
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,2DAA2D;AAE3D,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC3E,OAAO,CAAC,KAAK,CACX,mJAAmJ,CACpJ,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function whoami(): Promise<void>;
2
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/cli/whoami.ts"],"names":[],"mappings":"AAGA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAM5C"}
@@ -0,0 +1,8 @@
1
+ // `extentos-mcp whoami` — Phase 0 shell.
2
+ // Full mechanics: docs/mcp/AUTHENTICATION.md § CLI commands.
3
+ export async function whoami() {
4
+ console.error("[extentos-mcp whoami] Phase 0 scaffold — not implemented.");
5
+ console.error("When implemented: prints installId, accountId (if linked), tier, meterRemaining, authExpiry.");
6
+ process.exit(1);
7
+ }
8
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/cli/whoami.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,6DAA6D;AAE7D,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC3E,OAAO,CAAC,KAAK,CACX,8FAA8F,CAC/F,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env node
2
+ // Extentos MCP CLI — Phase 0 shells.
3
+ // 7 subcommands per docs/mcp/AUTHENTICATION.md § CLI commands.
4
+ // Running with no subcommand starts the MCP server over stdio.
5
+ import { Command } from "commander";
6
+ import { login } from "./cli/login.js";
7
+ import { logout } from "./cli/logout.js";
8
+ import { whoami } from "./cli/whoami.js";
9
+ import { acceptPrivacy, declinePrivacy } from "./cli/privacy.js";
10
+ import { status } from "./cli/status.js";
11
+ import { update } from "./cli/update.js";
12
+ const program = new Command();
13
+ program
14
+ .name("extentos-mcp")
15
+ .description("Extentos MCP server and developer CLI.")
16
+ .version("0.0.1");
17
+ program
18
+ .command("login")
19
+ .description("Link this install to an Extentos account via device-code flow.")
20
+ .action(async () => {
21
+ await login();
22
+ });
23
+ program
24
+ .command("logout")
25
+ .description("Clear ~/.extentos/auth.json. Install returns to anonymous tier.")
26
+ .action(async () => {
27
+ await logout();
28
+ });
29
+ program
30
+ .command("whoami")
31
+ .description("Print installId, accountId, tier, meter remaining, auth expiry.")
32
+ .action(async () => {
33
+ await whoami();
34
+ });
35
+ program
36
+ .command("accept-privacy")
37
+ .description("Record privacy policy consent (enables telemetry upload).")
38
+ .action(async () => {
39
+ await acceptPrivacy();
40
+ });
41
+ program
42
+ .command("decline-privacy")
43
+ .description("Record privacy policy decline (disables telemetry upload).")
44
+ .action(async () => {
45
+ await declinePrivacy();
46
+ });
47
+ program
48
+ .command("status")
49
+ .description("Print consent state, install ID, linked account, MCP/library versions.")
50
+ .action(async () => {
51
+ await status();
52
+ });
53
+ program
54
+ .command("update")
55
+ .description("Check for MCP server updates (no-op on npx @latest installs).")
56
+ .action(async () => {
57
+ await update();
58
+ });
59
+ if (process.argv.length <= 2) {
60
+ // No subcommand — run the MCP server over stdio.
61
+ await import("./index.js");
62
+ }
63
+ else {
64
+ program.parseAsync(process.argv).catch((err) => {
65
+ console.error("[extentos-mcp] error:", err);
66
+ process.exit(1);
67
+ });
68
+ }
69
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,qCAAqC;AACrC,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CAAC,wCAAwC,CAAC;KACrD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,KAAK,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,wEAAwE,CAAC;KACrF,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEL,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC7B,iDAAiD;IACjD,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;AAC7B,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7C,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const specSchema: Readonly<Record<string, unknown>>;
2
+ export declare const manifestSchema: Readonly<Record<string, unknown>>;
3
+ export declare const connectionPageSchema: Readonly<Record<string, unknown>>;
4
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/generated/schemas.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAygE/C,CAAC;AAEX,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6YnD,CAAC;AAEX,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4OzD,CAAC"}