@cr8rcho/alkahest 0.1.14 → 0.1.15
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.ko.md
CHANGED
|
@@ -145,7 +145,6 @@ claude mcp add alkahest -s project -- alkahest mcp
|
|
|
145
145
|
```bash
|
|
146
146
|
claude mcp add alkahest -s project \
|
|
147
147
|
-e ALKAHEST_TOKEN=alk_xxxxx \
|
|
148
|
-
-e ALKAHEST_API_URL=https://<ref>.supabase.co/functions/v1 \
|
|
149
148
|
-- alkahest mcp
|
|
150
149
|
```
|
|
151
150
|
|
|
@@ -156,15 +155,16 @@ claude mcp add alkahest -s project \
|
|
|
156
155
|
"command": "alkahest",
|
|
157
156
|
"args": ["mcp"],
|
|
158
157
|
"env": {
|
|
159
|
-
"ALKAHEST_TOKEN": "alk_xxxxx"
|
|
160
|
-
"ALKAHEST_API_URL": "https://<ref>.supabase.co/functions/v1"
|
|
158
|
+
"ALKAHEST_TOKEN": "alk_xxxxx"
|
|
161
159
|
}
|
|
162
160
|
}
|
|
163
161
|
}
|
|
164
162
|
}
|
|
165
163
|
```
|
|
166
164
|
|
|
167
|
-
이미 `alkahest login` 을 했다면
|
|
165
|
+
토큰만 있으면 됩니다 — CLI가 호스팅 서비스(alkahest.app)를 기본값으로 씁니다. 이미 `alkahest login` 을 했다면 토큰 env조차 생략 가능합니다(저장된 자격증명 사용). 그다음 에이전트에게 *"이거 publish 해줘"* 라고만 하면 링크를 돌려줍니다.
|
|
166
|
+
|
|
167
|
+
> 백엔드를 직접 셀프호스팅한다면 `-e ALKAHEST_API_URL=https://<ref>.supabase.co/functions/v1` (또는 `alkahest login --api <url>`)로 CLI를 그쪽으로 가리키세요.
|
|
168
168
|
|
|
169
169
|
## 산출물 — `.alkahest/`
|
|
170
170
|
|
package/README.md
CHANGED
|
@@ -150,7 +150,6 @@ The agent reads with `get_screen` / `who_calls` and writes back with `set_summar
|
|
|
150
150
|
```bash
|
|
151
151
|
claude mcp add alkahest -s project \
|
|
152
152
|
-e ALKAHEST_TOKEN=alk_xxxxx \
|
|
153
|
-
-e ALKAHEST_API_URL=https://<ref>.supabase.co/functions/v1 \
|
|
154
153
|
-- alkahest mcp
|
|
155
154
|
```
|
|
156
155
|
|
|
@@ -161,15 +160,16 @@ claude mcp add alkahest -s project \
|
|
|
161
160
|
"command": "alkahest",
|
|
162
161
|
"args": ["mcp"],
|
|
163
162
|
"env": {
|
|
164
|
-
"ALKAHEST_TOKEN": "alk_xxxxx"
|
|
165
|
-
"ALKAHEST_API_URL": "https://<ref>.supabase.co/functions/v1"
|
|
163
|
+
"ALKAHEST_TOKEN": "alk_xxxxx"
|
|
166
164
|
}
|
|
167
165
|
}
|
|
168
166
|
}
|
|
169
167
|
}
|
|
170
168
|
```
|
|
171
169
|
|
|
172
|
-
If you've already run `alkahest login`, the saved credentials are used
|
|
170
|
+
The token is all you need — the CLI defaults to the hosted service (alkahest.app). If you've already run `alkahest login`, even the token env is optional (saved credentials are used). Then just ask the agent to *"publish this"* and it returns the link.
|
|
171
|
+
|
|
172
|
+
> Self-hosting your own backend? Point the CLI at it with `-e ALKAHEST_API_URL=https://<ref>.supabase.co/functions/v1` (or `alkahest login --api <url>`).
|
|
173
173
|
|
|
174
174
|
## Output — `.alkahest/`
|
|
175
175
|
|
package/dist/commands/login.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { loadCredentials,
|
|
1
|
+
import { loadCredentials, saveCredentials } from "../core/credentials.js";
|
|
2
2
|
export async function login(options) {
|
|
3
3
|
const creds = loadCredentials();
|
|
4
|
-
const apiUrl = resolveApiUrl(options.api, creds);
|
|
5
4
|
if (!options.token) {
|
|
6
5
|
console.log("[alkahest] login — paste a token from the web app:");
|
|
7
6
|
console.log(" 1. Open the Alkahest web app and sign in with GitHub");
|
|
8
7
|
console.log(" 2. Account → Create token, copy the alk_… value");
|
|
9
|
-
console.log(" 3. Run: alkahest login --token alk_xxxxx"
|
|
8
|
+
console.log(" 3. Run: alkahest login --token alk_xxxxx");
|
|
10
9
|
process.exitCode = 1;
|
|
11
10
|
return;
|
|
12
11
|
}
|
|
@@ -16,12 +15,12 @@ export async function login(options) {
|
|
|
16
15
|
return;
|
|
17
16
|
}
|
|
18
17
|
creds.token = options.token;
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
// Persist the API URL only when the user explicitly chose one; the hosted default
|
|
19
|
+
// (resolveApiUrl's fallback) is left implicit so a future default change is picked up.
|
|
20
|
+
const explicitApi = options.api || process.env.ALKAHEST_API_URL;
|
|
21
|
+
if (explicitApi)
|
|
22
|
+
creds.apiUrl = explicitApi.replace(/\/+$/, "");
|
|
21
23
|
saveCredentials(creds);
|
|
22
24
|
console.log("[alkahest] logged in. Token saved to ~/.alkahest/credentials.json");
|
|
23
|
-
if (!apiUrl) {
|
|
24
|
-
console.log(" note: no API URL set — pass --api <url> or set ALKAHEST_API_URL before publishing.");
|
|
25
|
-
}
|
|
26
25
|
}
|
|
27
26
|
//# sourceMappingURL=login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAa1E,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAqB;IAC/C,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAEhC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC7E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,kFAAkF;IAClF,uFAAuF;IACvF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAChE,IAAI,WAAW;QAAE,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChE,eAAe,CAAC,KAAK,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -14,7 +14,7 @@ export interface Credentials {
|
|
|
14
14
|
}
|
|
15
15
|
export declare function loadCredentials(): Credentials;
|
|
16
16
|
export declare function saveCredentials(creds: Credentials): void;
|
|
17
|
-
/** API base URL resolved from flag → saved creds → env. */
|
|
17
|
+
/** API base URL resolved from flag → saved creds → env → hosted default. */
|
|
18
18
|
export declare function resolveApiUrl(flag: string | undefined, creds: Credentials): string;
|
|
19
19
|
/**
|
|
20
20
|
* Publish token resolved from arg → saved creds → env.
|
package/dist/core/credentials.js
CHANGED
|
@@ -3,6 +3,13 @@ import { join } from "node:path";
|
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
const CRED_DIR = join(homedir(), ".alkahest");
|
|
5
5
|
const CRED_FILE = join(CRED_DIR, "credentials.json");
|
|
6
|
+
/**
|
|
7
|
+
* The hosted service (alkahest.app). Used as the final fallback so that pointing
|
|
8
|
+
* the CLI / MCP at the public instance needs no config — the URL is not a secret
|
|
9
|
+
* (it ships in every served page). Self-hosters override via --api, `alkahest login
|
|
10
|
+
* --api <url>`, or ALKAHEST_API_URL.
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_API_URL = "https://ytcmzkrvtomtcrcyqqcb.supabase.co/functions/v1";
|
|
6
13
|
export function loadCredentials() {
|
|
7
14
|
try {
|
|
8
15
|
return JSON.parse(readFileSync(CRED_FILE, "utf8"));
|
|
@@ -15,9 +22,9 @@ export function saveCredentials(creds) {
|
|
|
15
22
|
mkdirSync(CRED_DIR, { recursive: true });
|
|
16
23
|
writeFileSync(CRED_FILE, JSON.stringify(creds, null, 2) + "\n");
|
|
17
24
|
}
|
|
18
|
-
/** API base URL resolved from flag → saved creds → env. */
|
|
25
|
+
/** API base URL resolved from flag → saved creds → env → hosted default. */
|
|
19
26
|
export function resolveApiUrl(flag, creds) {
|
|
20
|
-
return (flag || creds.apiUrl || process.env.ALKAHEST_API_URL ||
|
|
27
|
+
return (flag || creds.apiUrl || process.env.ALKAHEST_API_URL || DEFAULT_API_URL).replace(/\/+$/, "");
|
|
21
28
|
}
|
|
22
29
|
/**
|
|
23
30
|
* Publish token resolved from arg → saved creds → env.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/core/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAelC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAErD,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAgB,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAkB;IAChD,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/core/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAelC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAErD;;;;;GAKG;AACH,MAAM,eAAe,GAAG,uDAAuD,CAAC;AAEhF,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAgB,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAkB;IAChD,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,IAAwB,EAAE,KAAkB;IACxE,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,eAAe,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,GAAuB,EAAE,KAAkB;IACtE,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACzE,CAAC"}
|