lockin-mcp 1.0.1 → 1.0.3
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 +73 -36
- package/dist/brand.d.ts +2 -1
- package/dist/brand.d.ts.map +1 -1
- package/dist/brand.js +2 -1
- package/dist/brand.js.map +1 -1
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +19 -0
- package/dist/config.js.map +1 -0
- package/dist/hosts-manager.d.ts.map +1 -1
- package/dist/hosts-manager.js +2 -2
- package/dist/hosts-manager.js.map +1 -1
- package/dist/hosts-manager.test.js +11 -3
- package/dist/hosts-manager.test.js.map +1 -1
- package/dist/index.js +30 -9
- package/dist/index.js.map +1 -1
- package/dist/install.js +2 -0
- package/dist/install.js.map +1 -1
- package/dist/installer/agent-instructions.d.ts +15 -1
- package/dist/installer/agent-instructions.d.ts.map +1 -1
- package/dist/installer/agent-instructions.js +27 -2
- package/dist/installer/agent-instructions.js.map +1 -1
- package/dist/installer/agents.d.ts.map +1 -1
- package/dist/installer/agents.js +63 -52
- package/dist/installer/agents.js.map +1 -1
- package/dist/installer/data-dir.d.ts +7 -0
- package/dist/installer/data-dir.d.ts.map +1 -0
- package/dist/installer/data-dir.js +38 -0
- package/dist/installer/data-dir.js.map +1 -0
- package/dist/installer/data-dir.test.d.ts +2 -0
- package/dist/installer/data-dir.test.d.ts.map +1 -0
- package/dist/installer/data-dir.test.js +59 -0
- package/dist/installer/data-dir.test.js.map +1 -0
- package/dist/installer/license.d.ts.map +1 -1
- package/dist/installer/license.js +8 -13
- package/dist/installer/license.js.map +1 -1
- package/dist/installer/platform.d.ts.map +1 -1
- package/dist/installer/platform.js +2 -2
- package/dist/installer/platform.js.map +1 -1
- package/dist/installer/poke.d.ts.map +1 -1
- package/dist/installer/poke.js +5 -13
- package/dist/installer/poke.js.map +1 -1
- package/dist/installer/port.d.ts.map +1 -1
- package/dist/installer/port.js +5 -4
- package/dist/installer/port.js.map +1 -1
- package/dist/installer/relay-provision.d.ts.map +1 -1
- package/dist/installer/relay-provision.js +9 -5
- package/dist/installer/relay-provision.js.map +1 -1
- package/dist/installer/run.d.ts.map +1 -1
- package/dist/installer/run.js +10 -20
- package/dist/installer/run.js.map +1 -1
- package/dist/installer/tui.d.ts.map +1 -1
- package/dist/installer/tui.js +7 -5
- package/dist/installer/tui.js.map +1 -1
- package/dist/installer/tunnel.d.ts.map +1 -1
- package/dist/installer/tunnel.js +7 -2
- package/dist/installer/tunnel.js.map +1 -1
- package/dist/license-check.d.ts.map +1 -1
- package/dist/license-check.js +2 -3
- package/dist/license-check.js.map +1 -1
- package/dist/license-guard.d.ts +0 -1
- package/dist/license-guard.d.ts.map +1 -1
- package/dist/license-guard.js +1 -5
- package/dist/license-guard.js.map +1 -1
- package/dist/local-http.d.ts +32 -0
- package/dist/local-http.d.ts.map +1 -0
- package/dist/local-http.js +140 -0
- package/dist/local-http.js.map +1 -0
- package/dist/local-http.test.d.ts +2 -0
- package/dist/local-http.test.d.ts.map +1 -0
- package/dist/local-http.test.js +13 -0
- package/dist/local-http.test.js.map +1 -0
- package/dist/relay-client.d.ts.map +1 -1
- package/dist/relay-client.js +26 -23
- package/dist/relay-client.js.map +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +4 -4
- package/dist/state.js.map +1 -1
- package/dist/types.d.ts +5 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -2
- package/dist/types.js.map +1 -1
- package/install.ps1 +4 -0
- package/install.sh +1 -1
- package/package.json +2 -1
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const CLAUDE_AI_CONNECTORS_BASE = "https://claude.ai/customize/connectors";
|
|
2
|
+
/** Opens the add-connector modal without pre-filled fields. */
|
|
3
|
+
export declare const CLAUDE_AI_CONNECTOR_URL = "https://claude.ai/customize/connectors?modal=add-custom-connector";
|
|
4
|
+
/** Claude pre-fills name + MCP URL from the link; API key must be entered separately. */
|
|
5
|
+
export declare function buildClaudeConnectorUrl(params: {
|
|
6
|
+
connectorName: string;
|
|
7
|
+
connectorUrl: string;
|
|
8
|
+
}): string;
|
|
9
|
+
export declare const CHATGPT_CONNECTORS_ADVANCED_URL = "https://chatgpt.com/#settings/Connectors/Advanced";
|
|
10
|
+
/** @deprecated Use CHATGPT_CONNECTORS_ADVANCED_URL */
|
|
11
|
+
export declare const CHATGPT_CONNECTORS_URL = "https://chatgpt.com/#settings/Connectors/Advanced";
|
|
12
|
+
export type ConnectorPlatform = "poke" | "claude-web" | "claude-desktop" | "chatgpt";
|
|
13
|
+
export declare function getConnectorsDocsUrl(platform?: ConnectorPlatform): string;
|
|
2
14
|
export interface AgentConnectionDetails {
|
|
3
15
|
authToken: string;
|
|
4
16
|
remoteMcpUrl: string;
|
|
@@ -10,10 +22,12 @@ export interface AgentConnectionDetails {
|
|
|
10
22
|
claude: {
|
|
11
23
|
mcpUrl: string;
|
|
12
24
|
configPath: string;
|
|
25
|
+
connectorUrl: string;
|
|
13
26
|
};
|
|
14
27
|
chatgpt: {
|
|
15
28
|
mcpUrl: string;
|
|
16
29
|
settingsUrl: string;
|
|
30
|
+
advancedSettingsUrl: string;
|
|
17
31
|
};
|
|
18
32
|
}
|
|
19
33
|
export declare function agentConnectionDetails(params: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-instructions.d.ts","sourceRoot":"","sources":["../../src/installer/agent-instructions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-instructions.d.ts","sourceRoot":"","sources":["../../src/installer/agent-instructions.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,yBAAyB,2CAA2C,CAAC;AAElF,+DAA+D;AAC/D,eAAO,MAAM,uBAAuB,sEAA4D,CAAC;AAEjG,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAOT;AAED,eAAO,MAAM,+BAA+B,sDACS,CAAC;AAEtD,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,sDAAkC,CAAC;AAEtE,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,YAAY,GACZ,gBAAgB,GAChB,SAAS,CAAC;AAEd,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAGzE;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,sBAAsB,CAqCzB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAK7E"}
|
|
@@ -1,7 +1,27 @@
|
|
|
1
1
|
import { homedir } from "node:os";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
+
import { APP_NAME } from "../brand.js";
|
|
4
|
+
import { getAppUrl } from "../config.js";
|
|
3
5
|
import { buildPokeMcpAddCommand } from "./poke.js";
|
|
4
|
-
export const
|
|
6
|
+
export const CLAUDE_AI_CONNECTORS_BASE = "https://claude.ai/customize/connectors";
|
|
7
|
+
/** Opens the add-connector modal without pre-filled fields. */
|
|
8
|
+
export const CLAUDE_AI_CONNECTOR_URL = `${CLAUDE_AI_CONNECTORS_BASE}?modal=add-custom-connector`;
|
|
9
|
+
/** Claude pre-fills name + MCP URL from the link; API key must be entered separately. */
|
|
10
|
+
export function buildClaudeConnectorUrl(params) {
|
|
11
|
+
const query = new URLSearchParams({
|
|
12
|
+
modal: "add-custom-connector",
|
|
13
|
+
connectorName: params.connectorName,
|
|
14
|
+
connectorUrl: params.connectorUrl,
|
|
15
|
+
});
|
|
16
|
+
return `${CLAUDE_AI_CONNECTORS_BASE}?${query.toString()}`;
|
|
17
|
+
}
|
|
18
|
+
export const CHATGPT_CONNECTORS_ADVANCED_URL = "https://chatgpt.com/#settings/Connectors/Advanced";
|
|
19
|
+
/** @deprecated Use CHATGPT_CONNECTORS_ADVANCED_URL */
|
|
20
|
+
export const CHATGPT_CONNECTORS_URL = CHATGPT_CONNECTORS_ADVANCED_URL;
|
|
21
|
+
export function getConnectorsDocsUrl(platform) {
|
|
22
|
+
const base = `${getAppUrl().replace(/\/$/, "")}/docs/connectors`;
|
|
23
|
+
return platform ? `${base}#${platform}` : base;
|
|
24
|
+
}
|
|
5
25
|
export function agentConnectionDetails(params) {
|
|
6
26
|
const claudeConfigPath = process.platform === "darwin"
|
|
7
27
|
? join(homedir(), "Library", "Application Support", "Claude", "claude_desktop_config.json")
|
|
@@ -20,10 +40,15 @@ export function agentConnectionDetails(params) {
|
|
|
20
40
|
claude: {
|
|
21
41
|
mcpUrl: params.remoteMcpUrl,
|
|
22
42
|
configPath: claudeConfigPath,
|
|
43
|
+
connectorUrl: buildClaudeConnectorUrl({
|
|
44
|
+
connectorName: APP_NAME,
|
|
45
|
+
connectorUrl: params.remoteMcpUrl,
|
|
46
|
+
}),
|
|
23
47
|
},
|
|
24
48
|
chatgpt: {
|
|
25
49
|
mcpUrl: params.remoteMcpUrl,
|
|
26
|
-
settingsUrl:
|
|
50
|
+
settingsUrl: CHATGPT_CONNECTORS_ADVANCED_URL,
|
|
51
|
+
advancedSettingsUrl: CHATGPT_CONNECTORS_ADVANCED_URL,
|
|
27
52
|
},
|
|
28
53
|
};
|
|
29
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-instructions.js","sourceRoot":"","sources":["../../src/installer/agent-instructions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,
|
|
1
|
+
{"version":3,"file":"agent-instructions.js","sourceRoot":"","sources":["../../src/installer/agent-instructions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,MAAM,yBAAyB,GAAG,wCAAwC,CAAC;AAElF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,yBAAyB,6BAA6B,CAAC;AAEjG,yFAAyF;AACzF,MAAM,UAAU,uBAAuB,CAAC,MAGvC;IACC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC;QAChC,KAAK,EAAE,sBAAsB;QAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC,CAAC;IACH,OAAO,GAAG,yBAAyB,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,MAAM,+BAA+B,GAC1C,mDAAmD,CAAC;AAEtD,sDAAsD;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,+BAA+B,CAAC;AAQtE,MAAM,UAAU,oBAAoB,CAAC,QAA4B;IAC/D,MAAM,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC;IACjE,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAsBD,MAAM,UAAU,sBAAsB,CAAC,MAItC;IACC,MAAM,gBAAgB,GACpB,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAC3B,CAAC,CAAC,IAAI,CACF,OAAO,EAAE,EACT,SAAS,EACT,qBAAqB,EACrB,QAAQ,EACR,4BAA4B,CAC7B;QACH,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;IAEzE,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,IAAI,EAAE;YACJ,MAAM,EAAE,MAAM,CAAC,YAAY;YAC3B,aAAa,EAAE,sBAAsB,CAAC;gBACpC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACvD,YAAY,EAAE,MAAM,CAAC,SAAS;aAC/B,CAAC;SACH;QACD,MAAM,EAAE;YACN,MAAM,EAAE,MAAM,CAAC,YAAY;YAC3B,UAAU,EAAE,gBAAgB;YAC5B,YAAY,EAAE,uBAAuB,CAAC;gBACpC,aAAa,EAAE,QAAQ;gBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC,CAAC;SACH;QACD,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAC,YAAY;YAC3B,WAAW,EAAE,+BAA+B;YAC5C,mBAAmB,EAAE,+BAA+B;SACrD;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,OAAO;QACL,mBAAmB,OAAO,CAAC,YAAY,EAAE;QACzC,mBAAmB,OAAO,CAAC,SAAS,EAAE;KACvC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/installer/agents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/installer/agents.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAyND,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,IAAI,CAAC,CA2Ef;AAED,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/installer/agents.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
2
|
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
3
|
-
import { dirname
|
|
3
|
+
import { dirname } from "node:path";
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import * as clack from "@clack/prompts";
|
|
6
6
|
import color from "picocolors";
|
|
7
7
|
import { APP_NAME } from "../brand.js";
|
|
8
|
-
import { agentConnectionDetails,
|
|
8
|
+
import { agentConnectionDetails, CHATGPT_CONNECTORS_ADVANCED_URL, getConnectorsDocsUrl, } from "./agent-instructions.js";
|
|
9
9
|
import { copyToClipboard } from "./clipboard.js";
|
|
10
|
-
import {
|
|
10
|
+
import { DATA_DIR_DISPLAY } from "./data-dir.js";
|
|
11
|
+
import { openBrowser } from "./platform.js";
|
|
11
12
|
import { buildPokeLoginCommand, POKE_LOCKIN_RECIPE_URL } from "./poke.js";
|
|
12
13
|
import { isPokeLoggedIn } from "./poke.js";
|
|
13
14
|
const execFileAsync = promisify(execFile);
|
|
@@ -78,8 +79,10 @@ async function setupPoke(details, relayReady) {
|
|
|
78
79
|
if (!relayReady) {
|
|
79
80
|
clack.log.warn("Relay was not verified during install. If Poke rejects the URL, finish background service setup and retry.");
|
|
80
81
|
}
|
|
81
|
-
clack.log.info("Opening Poke integration form (
|
|
82
|
+
clack.log.info("Opening Poke integration form (name + URL pre-filled)...");
|
|
82
83
|
await openBrowser(details.pokeIntegrationUrl);
|
|
84
|
+
await copyToClipboard(details.authToken);
|
|
85
|
+
clack.log.success("API key copied — paste in Poke when prompted");
|
|
83
86
|
const spinner = clack.spinner();
|
|
84
87
|
spinner.start("Registering LockIn MCP with Poke CLI...");
|
|
85
88
|
try {
|
|
@@ -113,58 +116,49 @@ async function setupPoke(details, relayReady) {
|
|
|
113
116
|
clack.note([
|
|
114
117
|
"In the Poke tab that just opened:",
|
|
115
118
|
`1. Confirm URL: ${color.cyan(details.poke.mcpUrl)}`,
|
|
116
|
-
|
|
119
|
+
"2. Paste API key when prompted (already copied to clipboard)",
|
|
117
120
|
"3. Click Create Integration",
|
|
118
121
|
`4. Install the LockIn recipe: ${color.cyan(POKE_LOCKIN_RECIPE_URL)}`,
|
|
119
122
|
"5. Start a new Poke chat",
|
|
120
123
|
].join("\n"), "Poke setup");
|
|
121
|
-
await copyToClipboard(details.authToken);
|
|
122
|
-
clack.log.success("API key copied to clipboard");
|
|
123
124
|
}
|
|
124
|
-
async function
|
|
125
|
+
async function setupClaudeDesktop(details) {
|
|
125
126
|
await mergeMcpServersConfig(details.claude.configPath, "lockin-mcp", remoteServerConfig(details.claude.mcpUrl, details.authToken));
|
|
126
|
-
clack.log.success(`
|
|
127
|
-
clack.log.info("Restart Claude Desktop
|
|
127
|
+
clack.log.success(`Claude Desktop configured (${details.claude.configPath})`);
|
|
128
|
+
clack.log.info("Restart Claude Desktop, then start a new chat with LockIn enabled.");
|
|
129
|
+
}
|
|
130
|
+
async function connectInstantly(params) {
|
|
131
|
+
if (params.clipboardText) {
|
|
132
|
+
const copied = await copyToClipboard(params.clipboardText);
|
|
133
|
+
if (copied) {
|
|
134
|
+
clack.log.success(params.clipboardSuccessMessage ?? "Copied to clipboard");
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
await openBrowser(params.openUrl);
|
|
138
|
+
clack.log.info(params.afterOpenNote);
|
|
139
|
+
}
|
|
140
|
+
async function setupClaudeWeb(details) {
|
|
141
|
+
await connectInstantly({
|
|
142
|
+
openUrl: details.claude.connectorUrl,
|
|
143
|
+
clipboardText: details.authToken,
|
|
144
|
+
clipboardSuccessMessage: "API key copied to clipboard",
|
|
145
|
+
afterOpenNote: "Claude opened — leave Advanced settings empty. Do not paste your API key in OAuth Client ID or Secret. " +
|
|
146
|
+
"Click Add, then enable LockIn in a new chat and sign in when Claude prompts. " +
|
|
147
|
+
"For Bearer auth, choose Claude Desktop in the installer instead.",
|
|
148
|
+
});
|
|
128
149
|
}
|
|
129
150
|
async function setupChatGPT(details) {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
"
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
message: "What should we do next?",
|
|
138
|
-
options: [
|
|
139
|
-
{ value: "url", label: "Copy MCP URL" },
|
|
140
|
-
{ value: "key", label: "Copy API key" },
|
|
141
|
-
{ value: "open", label: "Open ChatGPT Connectors settings" },
|
|
142
|
-
{ value: "skip", label: "Done" },
|
|
143
|
-
],
|
|
151
|
+
await connectInstantly({
|
|
152
|
+
openUrl: CHATGPT_CONNECTORS_ADVANCED_URL,
|
|
153
|
+
clipboardText: details.chatgpt.mcpUrl,
|
|
154
|
+
clipboardSuccessMessage: "MCP URL copied — paste when creating the connector",
|
|
155
|
+
afterOpenNote: "ChatGPT opened — enable Developer mode, create a connector, paste the MCP URL, " +
|
|
156
|
+
"set Authentication to OAuth, and leave DCR enabled. Sign in on lockinmcp.com when ChatGPT prompts — " +
|
|
157
|
+
"do not paste your API key in OAuth fields.",
|
|
144
158
|
});
|
|
145
|
-
if (clack.isCancel(action) || action === "skip") {
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
if (action === "url") {
|
|
149
|
-
await copyToClipboard(details.chatgpt.mcpUrl);
|
|
150
|
-
clack.log.success("MCP URL copied");
|
|
151
|
-
}
|
|
152
|
-
if (action === "key") {
|
|
153
|
-
await copyToClipboard(details.authToken);
|
|
154
|
-
clack.log.success("API key copied");
|
|
155
|
-
}
|
|
156
|
-
if (action === "open") {
|
|
157
|
-
await openBrowser(CHATGPT_CONNECTORS_URL);
|
|
158
|
-
}
|
|
159
159
|
}
|
|
160
|
-
function showCredentialsCard(
|
|
161
|
-
|
|
162
|
-
clack.note([
|
|
163
|
-
formatCredentialsCard(details),
|
|
164
|
-
"",
|
|
165
|
-
color.dim("One URL for all agents. Poke uses the same server automatically."),
|
|
166
|
-
color.dim(`Saved in ${manifestPath}`),
|
|
167
|
-
].join("\n"), "Your LockIn MCP credentials");
|
|
160
|
+
function showCredentialsCard() {
|
|
161
|
+
clack.log.info(color.dim(`MCP URL + API key saved in ${DATA_DIR_DISPLAY}/setup-manifest.json`));
|
|
168
162
|
}
|
|
169
163
|
export async function promptConnectAgent(params) {
|
|
170
164
|
if (!params.authToken) {
|
|
@@ -176,7 +170,7 @@ export async function promptConnectAgent(params) {
|
|
|
176
170
|
pokeIntegrationUrl: params.pokeIntegrationUrl,
|
|
177
171
|
authToken: params.authToken,
|
|
178
172
|
});
|
|
179
|
-
showCredentialsCard(
|
|
173
|
+
showCredentialsCard();
|
|
180
174
|
const choice = await clack.select({
|
|
181
175
|
message: "Connect your AI agent",
|
|
182
176
|
options: [
|
|
@@ -186,14 +180,24 @@ export async function promptConnectAgent(params) {
|
|
|
186
180
|
hint: "opens poke.com/integrations/new",
|
|
187
181
|
},
|
|
188
182
|
{
|
|
189
|
-
value: "claude",
|
|
183
|
+
value: "claude-web",
|
|
184
|
+
label: "Claude (claude.ai)",
|
|
185
|
+
hint: "opens connector + OAuth sign-in",
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
value: "claude-desktop",
|
|
190
189
|
label: "Claude Desktop",
|
|
191
|
-
hint: "writes
|
|
190
|
+
hint: "auto-writes config (Bearer auth)",
|
|
192
191
|
},
|
|
193
192
|
{
|
|
194
193
|
value: "chatgpt",
|
|
195
194
|
label: "ChatGPT",
|
|
196
|
-
hint: "
|
|
195
|
+
hint: "Advanced Connectors + developer mode",
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
value: "guide",
|
|
199
|
+
label: "Open connector setup guide",
|
|
200
|
+
hint: getConnectorsDocsUrl(),
|
|
197
201
|
},
|
|
198
202
|
{
|
|
199
203
|
value: "skip",
|
|
@@ -205,12 +209,19 @@ export async function promptConnectAgent(params) {
|
|
|
205
209
|
if (clack.isCancel(choice) || choice === "skip") {
|
|
206
210
|
return;
|
|
207
211
|
}
|
|
212
|
+
if (choice === "guide") {
|
|
213
|
+
await openBrowser(getConnectorsDocsUrl());
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
208
216
|
switch (choice) {
|
|
209
217
|
case "poke":
|
|
210
218
|
await setupPoke(details, params.publicTunnelVerified);
|
|
211
219
|
break;
|
|
212
|
-
case "claude":
|
|
213
|
-
await
|
|
220
|
+
case "claude-web":
|
|
221
|
+
await setupClaudeWeb(details);
|
|
222
|
+
break;
|
|
223
|
+
case "claude-desktop":
|
|
224
|
+
await setupClaudeDesktop(details);
|
|
214
225
|
break;
|
|
215
226
|
case "chatgpt":
|
|
216
227
|
await setupChatGPT(details);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/installer/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/installer/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Previous config directory names — migrated to {@link STATE_DIR_NAME} on first run. */
|
|
2
|
+
export declare const LEGACY_STATE_DIR_NAMES: readonly [".mac-distraction-blocker"];
|
|
3
|
+
export declare const DATA_DIR_DISPLAY = "~/.lockin";
|
|
4
|
+
export declare function getDataDirPath(): string;
|
|
5
|
+
/** Prefer `~/.lockin`, migrating legacy `~/.mac-distraction-blocker` if present. */
|
|
6
|
+
export declare function ensureDataDirMigrated(): Promise<string>;
|
|
7
|
+
//# sourceMappingURL=data-dir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-dir.d.ts","sourceRoot":"","sources":["../../src/installer/data-dir.ts"],"names":[],"mappings":"AAKA,yFAAyF;AACzF,eAAO,MAAM,sBAAsB,uCAAwC,CAAC;AAE5E,eAAO,MAAM,gBAAgB,cAAwB,CAAC;AAEtD,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAWD,oFAAoF;AACpF,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAkB7D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { access, mkdir, rename } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { STATE_DIR_NAME } from "../types.js";
|
|
5
|
+
/** Previous config directory names — migrated to {@link STATE_DIR_NAME} on first run. */
|
|
6
|
+
export const LEGACY_STATE_DIR_NAMES = [".mac-distraction-blocker"];
|
|
7
|
+
export const DATA_DIR_DISPLAY = `~/${STATE_DIR_NAME}`;
|
|
8
|
+
export function getDataDirPath() {
|
|
9
|
+
const home = process.env.HOME ?? process.env.USERPROFILE ?? homedir();
|
|
10
|
+
return join(home, STATE_DIR_NAME);
|
|
11
|
+
}
|
|
12
|
+
async function pathExists(path) {
|
|
13
|
+
try {
|
|
14
|
+
await access(path);
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/** Prefer `~/.lockin`, migrating legacy `~/.mac-distraction-blocker` if present. */
|
|
22
|
+
export async function ensureDataDirMigrated() {
|
|
23
|
+
const dataDir = getDataDirPath();
|
|
24
|
+
if (await pathExists(dataDir)) {
|
|
25
|
+
return dataDir;
|
|
26
|
+
}
|
|
27
|
+
const home = process.env.HOME ?? process.env.USERPROFILE ?? homedir();
|
|
28
|
+
for (const legacyName of LEGACY_STATE_DIR_NAMES) {
|
|
29
|
+
const legacyDir = join(home, legacyName);
|
|
30
|
+
if (await pathExists(legacyDir)) {
|
|
31
|
+
await rename(legacyDir, dataDir);
|
|
32
|
+
return dataDir;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
await mkdir(dataDir, { recursive: true, mode: 0o700 });
|
|
36
|
+
return dataDir;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data-dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-dir.js","sourceRoot":"","sources":["../../src/installer/data-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,yFAAyF;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,0BAA0B,CAAU,CAAC;AAE5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,cAAc,EAAE,CAAC;AAEtD,MAAM,UAAU,cAAc;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,EAAE,CAAC;IACtE,OAAO,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,EAAE,CAAC;IACtE,KAAK,MAAM,UAAU,IAAI,sBAAsB,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACzC,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACjC,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-dir.test.d.ts","sourceRoot":"","sources":["../../src/installer/data-dir.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { access, mkdir, mkdtemp, writeFile } from "node:fs/promises";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { describe, expect, it } from "vitest";
|
|
5
|
+
import { STATE_DIR_NAME } from "../types.js";
|
|
6
|
+
import { ensureDataDirMigrated, getDataDirPath, LEGACY_STATE_DIR_NAMES, } from "./data-dir.js";
|
|
7
|
+
async function withTempHome(fn) {
|
|
8
|
+
const home = await mkdtemp(join(tmpdir(), "lockin-home-"));
|
|
9
|
+
const prevHome = process.env.HOME;
|
|
10
|
+
const prevUserProfile = process.env.USERPROFILE;
|
|
11
|
+
process.env.HOME = home;
|
|
12
|
+
process.env.USERPROFILE = home;
|
|
13
|
+
try {
|
|
14
|
+
await fn(home);
|
|
15
|
+
}
|
|
16
|
+
finally {
|
|
17
|
+
if (prevHome === undefined) {
|
|
18
|
+
delete process.env.HOME;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
process.env.HOME = prevHome;
|
|
22
|
+
}
|
|
23
|
+
if (prevUserProfile === undefined) {
|
|
24
|
+
delete process.env.USERPROFILE;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
process.env.USERPROFILE = prevUserProfile;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
describe("data-dir", () => {
|
|
32
|
+
it("creates ~/.lockin when no config dir exists", async () => {
|
|
33
|
+
await withTempHome(async (home) => {
|
|
34
|
+
const dir = await ensureDataDirMigrated();
|
|
35
|
+
expect(dir).toBe(join(home, STATE_DIR_NAME));
|
|
36
|
+
await access(dir);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
it("returns existing ~/.lockin without changes", async () => {
|
|
40
|
+
await withTempHome(async (home) => {
|
|
41
|
+
const dataDir = join(home, STATE_DIR_NAME);
|
|
42
|
+
await mkdir(dataDir, { recursive: true });
|
|
43
|
+
await writeFile(join(dataDir, "state.json"), "{}\n");
|
|
44
|
+
const dir = await ensureDataDirMigrated();
|
|
45
|
+
expect(dir).toBe(dataDir);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
it("migrates legacy ~/.mac-distraction-blocker to ~/.lockin", async () => {
|
|
49
|
+
await withTempHome(async (home) => {
|
|
50
|
+
const legacyDir = join(home, LEGACY_STATE_DIR_NAMES[0]);
|
|
51
|
+
await mkdir(legacyDir, { recursive: true });
|
|
52
|
+
await writeFile(join(legacyDir, "state.json"), '{"blockedDomains":[]}\n');
|
|
53
|
+
const dir = await ensureDataDirMigrated();
|
|
54
|
+
expect(dir).toBe(getDataDirPath());
|
|
55
|
+
await access(join(dir, "state.json"));
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=data-dir.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-dir.test.js","sourceRoot":"","sources":["../../src/installer/data-dir.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/installer/license.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/installer/license.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,YAAY,CAAC;AAsC3D,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAoBrE;AA0CD,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAexE;AA8DD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CAoClE;AAWD,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,WAAW,CAAC,CAwBvB"}
|
|
@@ -3,16 +3,11 @@ import color from "picocolors";
|
|
|
3
3
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import { openBrowser, getInstallDir } from "./platform.js";
|
|
6
|
-
|
|
7
|
-
"http://localhost:3001/api/v1";
|
|
6
|
+
import { getLicenseApiUrl, getPurchaseUrl } from "../config.js";
|
|
8
7
|
const LICENSE_FILE = "license.json";
|
|
9
8
|
function licensePath() {
|
|
10
9
|
return join(getInstallDir(), LICENSE_FILE);
|
|
11
10
|
}
|
|
12
|
-
function purchaseUrl() {
|
|
13
|
-
const appUrl = process.env.MDB_APP_URL ?? "http://localhost:3001";
|
|
14
|
-
return `${appUrl}/signup?redirect=checkout`;
|
|
15
|
-
}
|
|
16
11
|
export async function loadCachedLicense() {
|
|
17
12
|
try {
|
|
18
13
|
const raw = await readFile(licensePath(), "utf8");
|
|
@@ -47,7 +42,7 @@ async function saveLicense(license) {
|
|
|
47
42
|
}
|
|
48
43
|
async function verifyLicenseKeyRemote(key) {
|
|
49
44
|
try {
|
|
50
|
-
const response = await fetch(`${
|
|
45
|
+
const response = await fetch(`${getLicenseApiUrl()}/license/verify`, {
|
|
51
46
|
method: "POST",
|
|
52
47
|
headers: { "Content-Type": "application/json" },
|
|
53
48
|
body: JSON.stringify({ license_key: key }),
|
|
@@ -81,10 +76,10 @@ export async function verifyLicenseKey(key) {
|
|
|
81
76
|
await saveLicense(remote);
|
|
82
77
|
return remote;
|
|
83
78
|
}
|
|
84
|
-
throw new Error(`Invalid license key. Get a Pro key at ${
|
|
79
|
+
throw new Error(`Invalid license key. Get a Pro key at ${getPurchaseUrl()} or sign in via browser.`);
|
|
85
80
|
}
|
|
86
81
|
async function startDeviceAuth() {
|
|
87
|
-
const response = await fetch(`${
|
|
82
|
+
const response = await fetch(`${getLicenseApiUrl()}/oauth/device`, {
|
|
88
83
|
method: "POST",
|
|
89
84
|
headers: { "Content-Type": "application/json" },
|
|
90
85
|
body: JSON.stringify({
|
|
@@ -98,7 +93,7 @@ async function startDeviceAuth() {
|
|
|
98
93
|
return (await response.json());
|
|
99
94
|
}
|
|
100
95
|
async function pollDeviceToken(deviceCode) {
|
|
101
|
-
const response = await fetch(`${
|
|
96
|
+
const response = await fetch(`${getLicenseApiUrl()}/oauth/token`, {
|
|
102
97
|
method: "POST",
|
|
103
98
|
headers: { "Content-Type": "application/json" },
|
|
104
99
|
body: JSON.stringify({
|
|
@@ -118,7 +113,7 @@ async function pollDeviceToken(deviceCode) {
|
|
|
118
113
|
return null;
|
|
119
114
|
}
|
|
120
115
|
if (data.tier !== "pro") {
|
|
121
|
-
throw new Error(`Pro license required. Purchase at ${
|
|
116
|
+
throw new Error(`Pro license required. Purchase at ${getPurchaseUrl()}`);
|
|
122
117
|
}
|
|
123
118
|
const license = {
|
|
124
119
|
tier: "pro",
|
|
@@ -155,7 +150,7 @@ export async function verifyViaBrowserLogin() {
|
|
|
155
150
|
}
|
|
156
151
|
}
|
|
157
152
|
spinner.stop(color.red("Timed out"));
|
|
158
|
-
throw new Error(`Browser login timed out. Purchase a license at ${
|
|
153
|
+
throw new Error(`Browser login timed out. Purchase a license at ${getPurchaseUrl()} or try again.`);
|
|
159
154
|
}
|
|
160
155
|
async function clearCachedLicense() {
|
|
161
156
|
try {
|
|
@@ -185,7 +180,7 @@ export async function resolveLicense(options) {
|
|
|
185
180
|
if (options.useBrowserLogin) {
|
|
186
181
|
return verifyViaBrowserLogin();
|
|
187
182
|
}
|
|
188
|
-
throw new Error(`Pro license required. Purchase at ${
|
|
183
|
+
throw new Error(`Pro license required. Purchase at ${getPurchaseUrl()} or use --license-key.`);
|
|
189
184
|
}
|
|
190
185
|
function sleep(ms) {
|
|
191
186
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/installer/license.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/installer/license.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,YAAY,GAAG,cAAc,CAAC;AAiCpC,SAAS,WAAW;IAClB,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;QAChD,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAoB;IAC7C,MAAM,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,GAAkB;QAC5B,GAAG,OAAO;QACV,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;KACpB,CAAC;IACF,MAAM,SAAS,CAAC,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACrE,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,GAAW;IAC/C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,gBAAgB,EAAE,iBAAiB,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,UAAU;SAC3B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,yCAAyC,cAAc,EAAE,0BAA0B,CACpF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,gBAAgB,EAAE,eAAe,EAAE;QACjE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,SAAS,EAAE,mCAAmC;YAC9C,KAAK,EAAE,KAAK;SACb,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwB,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,UAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,gBAAgB,EAAE,cAAc,EAAE;QAChE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,UAAU,EAAE,8CAA8C;YAC1D,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,mCAAmC;SAC/C,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwB,CAAC;IAC5D,IAAI,IAAI,CAAC,KAAK,KAAK,uBAAuB,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,qCAAqC,cAAc,EAAE,EAAE,CACxD,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAgB;QAC3B,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,IAAI,CAAC,YAAY;QACxB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,UAAU;YACxB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;YACrC,CAAC,CAAC,SAAS;KACd,CAAC;IACF,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;IAEvC,MAAM,QAAQ,GACZ,MAAM,CAAC,yBAAyB;QAChC,GAAG,MAAM,CAAC,gBAAgB,cAAc,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;IAEjF,KAAK,CAAC,IAAI,CACR;QACE,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;QACxD,EAAE;QACF,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC;QAC7C,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;KACpB,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,mBAAmB,CACpB,CAAC;IAEF,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;IACvD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,OAAO,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;YACxE,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,KAAK,CACb,kDAAkD,cAAc,EAAE,gBAAgB,CACnF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACpD,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAGpC;IACC,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACzC,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;QAClB,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,IAAI,KAAK,CACb,qCAAqC,cAAc,EAAE,wBAAwB,CAC9E,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/installer/platform.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/installer/platform.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAI3D,wBAAgB,cAAc,IAAI,YAAY,CA6B7C;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpE;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWrE;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB5D;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
2
|
import { promisify } from "node:util";
|
|
3
|
+
import { getDataDirPath } from "./data-dir.js";
|
|
3
4
|
const execFileAsync = promisify(execFile);
|
|
4
5
|
export function detectPlatform() {
|
|
5
6
|
const platform = process.platform;
|
|
@@ -70,7 +71,6 @@ export async function openBrowser(url) {
|
|
|
70
71
|
console.log(`Open this URL in your browser:\n ${url}`);
|
|
71
72
|
}
|
|
72
73
|
export function getInstallDir() {
|
|
73
|
-
|
|
74
|
-
return `${home}/.mac-distraction-blocker`;
|
|
74
|
+
return getDataDirPath();
|
|
75
75
|
}
|
|
76
76
|
//# sourceMappingURL=platform.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/installer/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/installer/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poke.d.ts","sourceRoot":"","sources":["../../src/installer/poke.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"poke.d.ts","sourceRoot":"","sources":["../../src/installer/poke.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMhD,MAAM,WAAW,QAAQ;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,MAAM,CAaT;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,4FAA4F;AAC5F,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,MAAM,CAST;AAED,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,eAAO,MAAM,yBAAyB,QAAsC,CAAC;AAC7E,eAAO,MAAM,qBAAqB,QAAkC,CAAC;AAErE,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,QAAQ,CAyCX;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBzB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAyClF;AAED,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAWvD"}
|