@puzzmo/cli 1.0.39 → 1.0.41
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/lib/commands/game/create.js +2 -2
- package/lib/commands/game/create.js.map +1 -1
- package/lib/commands/login.d.ts +2 -2
- package/lib/commands/login.js +11 -7
- package/lib/commands/login.js.map +1 -1
- package/lib/commands/upload.js +26 -16
- package/lib/commands/upload.js.map +1 -1
- package/lib/index.js +17 -8
- package/lib/index.js.map +1 -1
- package/lib/util/api.d.ts +1 -1
- package/lib/util/api.js +11 -3
- package/lib/util/api.js.map +1 -1
- package/lib/util/config.d.ts +39 -9
- package/lib/util/config.js +106 -12
- package/lib/util/config.js.map +1 -1
- package/lib/util/createGame.d.ts +2 -0
- package/lib/util/createGame.js +1 -2
- package/lib/util/createGame.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/game/create.ts +2 -2
- package/src/commands/login.ts +11 -7
- package/src/commands/upload.ts +36 -18
- package/src/index.ts +17 -8
- package/src/util/api.ts +9 -3
- package/src/util/config.ts +119 -15
- package/src/util/createGame.ts +3 -3
- package/templates/minesweeper/package.json +1 -0
- package/templates/minesweeper/vite.config.ts +1 -0
|
@@ -9,7 +9,7 @@ import { downloadPage } from "../../download/page-downloader.js";
|
|
|
9
9
|
import { runCommand, gitCommit } from "../../util/exec.js";
|
|
10
10
|
import { runSkillsPipelineTUI, runAgentWithBuildLoop } from "../../skills/runner.js";
|
|
11
11
|
import { login } from "../login.js";
|
|
12
|
-
import {
|
|
12
|
+
import { getDefaultToken } from "../../util/config.js";
|
|
13
13
|
import { detectRepoContext } from "./detectRepo.js";
|
|
14
14
|
/** Parses CLI args into CreateOptions */
|
|
15
15
|
const parseArgs = (args) => {
|
|
@@ -50,7 +50,7 @@ const slugify = (text) => text
|
|
|
50
50
|
.replace(/--+/g, "-");
|
|
51
51
|
/** Writes .mcp.json with dev server config */
|
|
52
52
|
const writeMcpConfig = (dir) => {
|
|
53
|
-
const token =
|
|
53
|
+
const token = getDefaultToken();
|
|
54
54
|
const mcpConfig = {
|
|
55
55
|
mcpServers: {
|
|
56
56
|
"dev.puzzmo.com": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/game/create.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/game/create.ts"],"names":[],"mappings":"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"}
|
package/lib/commands/login.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/** Saves a CLI token to ~/.puzzmo/config.json */
|
|
2
|
-
export declare const login: (token: string) => void;
|
|
1
|
+
/** Saves a CLI token to ~/.puzzmo/config.json under the given source server */
|
|
2
|
+
export declare const login: (token: string, source?: string) => void;
|
package/lib/commands/login.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import * as p from "@clack/prompts";
|
|
2
|
-
import {
|
|
3
|
-
/** Saves a CLI token to ~/.puzzmo/config.json */
|
|
4
|
-
export const login = (token) => {
|
|
2
|
+
import { defaultSource, addToken, decodeTokenPayload, normalizeSource } from "../util/config.js";
|
|
3
|
+
/** Saves a CLI token to ~/.puzzmo/config.json under the given source server */
|
|
4
|
+
export const login = (token, source = defaultSource) => {
|
|
5
5
|
if (!token.startsWith("pzt-")) {
|
|
6
6
|
p.log.error("Invalid CLI token. Generate one from dev.puzzmo.com.");
|
|
7
7
|
process.exit(1);
|
|
8
8
|
}
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
const payload = decodeTokenPayload(token);
|
|
10
|
+
if (!payload?.teamID) {
|
|
11
|
+
p.log.error("Could not decode the team from this token. Make sure you're using a token from dev.puzzmo.com.");
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
const normalized = normalizeSource(source);
|
|
15
|
+
addToken(normalized, token);
|
|
16
|
+
p.log.success(`Logged in to ${normalized} for team ${payload.teamID}. Token saved to ~/.puzzmo/config.json`);
|
|
13
17
|
};
|
|
14
18
|
//# sourceMappingURL=login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEhG,+EAA+E;AAC/E,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,MAAM,GAAW,aAAa,EAAE,EAAE,CAAC;IACtE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACzC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACrB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,gGAAgG,CAAC,CAAA;QAC7G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAC1C,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC3B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,UAAU,aAAa,OAAO,CAAC,MAAM,wCAAwC,CAAC,CAAA;AAAA,CAC7G,CAAA"}
|
package/lib/commands/upload.js
CHANGED
|
@@ -4,14 +4,13 @@ import fs from "node:fs";
|
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import * as p from "@clack/prompts";
|
|
6
6
|
import { GameNotFoundError, uploadFiles } from "../util/api.js";
|
|
7
|
-
import {
|
|
7
|
+
import { findTokensForTeam, getTokens, resolveServerForTeam, sourceToURL } from "../util/config.js";
|
|
8
8
|
import { createUserGame } from "../util/createGame.js";
|
|
9
9
|
import { discoverGames } from "../util/discoverGames.js";
|
|
10
10
|
/** Uploads game build artifacts to Puzzmo by discovering puzzmo.json files in `dir` */
|
|
11
11
|
export const upload = async (dir, options = {}) => {
|
|
12
12
|
const { verbose = false } = options;
|
|
13
|
-
|
|
14
|
-
if (!token) {
|
|
13
|
+
if (getTokens().length === 0) {
|
|
15
14
|
console.error("Not logged in. Run `puzzmo login <token>` or set PUZZMO_TOKEN.");
|
|
16
15
|
process.exit(1);
|
|
17
16
|
}
|
|
@@ -44,36 +43,46 @@ export const upload = async (dir, options = {}) => {
|
|
|
44
43
|
console.log(`\nMessage: ${description}`);
|
|
45
44
|
if (repoURL)
|
|
46
45
|
console.log(`Repo: ${repoURL}`);
|
|
47
|
-
const apiURL = getAPIURL();
|
|
48
|
-
const defaultURL = "https://api.puzzmo.com";
|
|
49
|
-
if (apiURL !== defaultURL)
|
|
50
|
-
console.log(`API: ${apiURL}`);
|
|
51
46
|
const results = [];
|
|
52
47
|
for (const err of discoveryErrors) {
|
|
53
48
|
results.push({ ok: false, slug: err.slug ?? path.relative(rootDir, err.puzzmoJsonPath), error: err.errors.join("; ") });
|
|
54
49
|
}
|
|
55
50
|
for (let i = 0; i < games.length; i++) {
|
|
56
51
|
const game = games[i];
|
|
57
|
-
|
|
52
|
+
const slug = game.puzzmoFile.game.slug;
|
|
53
|
+
console.log(`\n[${i + 1}/${games.length}] Uploading ${slug}`);
|
|
54
|
+
const teamID = game.puzzmoFile.game.teamID;
|
|
55
|
+
const credential = await resolveServerForTeam(teamID);
|
|
56
|
+
if (!credential) {
|
|
57
|
+
const matches = findTokensForTeam(teamID);
|
|
58
|
+
const message = matches.length === 0
|
|
59
|
+
? `No saved token for team ${teamID}. Run \`puzzmo login <token>\` (use \`--source\` if the token is for a non-default server).`
|
|
60
|
+
: `Token for team ${teamID} is registered against ${matches.map((m) => m.source).join(", ")} but none of those servers are reachable.`;
|
|
61
|
+
console.error(` ${message}`);
|
|
62
|
+
results.push({ ok: false, slug, error: message });
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const apiURL = sourceToURL(credential.source);
|
|
66
|
+
console.log(` Server: ${credential.source}`);
|
|
58
67
|
try {
|
|
59
68
|
let result;
|
|
60
69
|
try {
|
|
61
|
-
result = await uploadOneGame(game, {
|
|
70
|
+
result = await uploadOneGame(game, { credential, apiURL, sha, description, repoURL, verbose, rootDir });
|
|
62
71
|
}
|
|
63
72
|
catch (e) {
|
|
64
73
|
if (!(e instanceof GameNotFoundError))
|
|
65
74
|
throw e;
|
|
66
|
-
const created = await maybeCreateMissingGame(e, game, { teamAccessToken: token });
|
|
75
|
+
const created = await maybeCreateMissingGame(e, game, { apiURL, teamAccessToken: credential.token });
|
|
67
76
|
if (!created)
|
|
68
77
|
throw e;
|
|
69
|
-
result = await uploadOneGame(game, {
|
|
78
|
+
result = await uploadOneGame(game, { credential, apiURL, sha, description, repoURL, verbose, rootDir });
|
|
70
79
|
}
|
|
71
80
|
results.push(result);
|
|
72
81
|
}
|
|
73
82
|
catch (e) {
|
|
74
83
|
const message = e instanceof Error ? e.message : String(e);
|
|
75
84
|
console.error(` Failed: ${message}`);
|
|
76
|
-
results.push({ ok: false, slug
|
|
85
|
+
results.push({ ok: false, slug, error: message });
|
|
77
86
|
}
|
|
78
87
|
}
|
|
79
88
|
printReport(results);
|
|
@@ -83,7 +92,7 @@ export const upload = async (dir, options = {}) => {
|
|
|
83
92
|
};
|
|
84
93
|
/** Uploads a single discovered game; throws on failure */
|
|
85
94
|
const uploadOneGame = async (game, opts) => {
|
|
86
|
-
const {
|
|
95
|
+
const { credential, apiURL, sha, description, repoURL, verbose, rootDir } = opts;
|
|
87
96
|
const { puzzmoFile, distDir } = game;
|
|
88
97
|
const gameSlug = puzzmoFile.game.slug;
|
|
89
98
|
const files = collectFiles(distDir);
|
|
@@ -94,13 +103,14 @@ const uploadOneGame = async (game, opts) => {
|
|
|
94
103
|
for (const file of files)
|
|
95
104
|
totalBytes += fs.statSync(file).size;
|
|
96
105
|
console.log(` ${files.length} file(s), ${formatBytes(totalBytes)} total (sha ${sha.slice(0, 8)})`);
|
|
97
|
-
const result = await uploadFiles(token, gameSlug, sha, files, distDir, puzzmoFile, (batch, totalBatches, uploaded) => {
|
|
106
|
+
const result = await uploadFiles(apiURL, credential.token, gameSlug, sha, files, distDir, puzzmoFile, (batch, totalBatches, uploaded) => {
|
|
98
107
|
console.log(` Batch ${batch}/${totalBatches} done (${uploaded} file(s) uploaded)`);
|
|
99
108
|
}, { verbose, description, repoURL });
|
|
100
109
|
console.log(` Done - ${result.versionID}`);
|
|
101
110
|
return {
|
|
102
111
|
ok: true,
|
|
103
112
|
slug: gameSlug,
|
|
113
|
+
source: credential.source,
|
|
104
114
|
fileCount: files.length,
|
|
105
115
|
totalBytes,
|
|
106
116
|
versionID: result.versionID,
|
|
@@ -113,7 +123,7 @@ const printReport = (results) => {
|
|
|
113
123
|
const successes = results.filter((r) => r.ok);
|
|
114
124
|
const failures = results.filter((r) => !r.ok);
|
|
115
125
|
for (const r of successes) {
|
|
116
|
-
console.log(` OK ${r.slug.padEnd(24)} ${formatBytes(r.totalBytes).padStart(8)} ${r.versionID}`);
|
|
126
|
+
console.log(` OK ${r.slug.padEnd(24)} ${formatBytes(r.totalBytes).padStart(8)} ${r.source.padEnd(20)} ${r.versionID}`);
|
|
117
127
|
}
|
|
118
128
|
for (const r of failures) {
|
|
119
129
|
console.log(` FAIL ${r.slug.padEnd(24)} ${r.error}`);
|
|
@@ -207,7 +217,7 @@ const maybeCreateMissingGame = async (err, game, opts) => {
|
|
|
207
217
|
if (p.isCancel(consent) || !consent)
|
|
208
218
|
return false;
|
|
209
219
|
try {
|
|
210
|
-
const created = await createUserGame({ displayName, teamAccessToken: opts.teamAccessToken });
|
|
220
|
+
const created = await createUserGame({ apiURL: opts.apiURL, displayName, teamAccessToken: opts.teamAccessToken });
|
|
211
221
|
console.log(` Created game ${created.slug} (${created.id})`);
|
|
212
222
|
if (created.slug !== slug) {
|
|
213
223
|
console.warn(` Server picked slug "${created.slug}" but your puzzmo.json uses "${slug}". Update puzzmo.json before re-uploading.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -8,22 +8,31 @@ import { migrate } from "./commands/migrate.js";
|
|
|
8
8
|
const [command, ...args] = process.argv.slice(2);
|
|
9
9
|
const printUsage = () => {
|
|
10
10
|
console.log(`Usage:
|
|
11
|
-
puzzmo login <token>
|
|
12
|
-
|
|
11
|
+
puzzmo login <token> [--source <url>] Save a CLI auth token. You can have many stored tokens for different teams.
|
|
12
|
+
--source defaults to https://api.puzzmo.com;
|
|
13
13
|
|
|
14
|
-
puzzmo
|
|
15
|
-
|
|
16
|
-
puzzmo
|
|
14
|
+
puzzmo game create [token] Create a new Puzzmo game project
|
|
15
|
+
|
|
16
|
+
puzzmo upload [dir] [-v] Discover puzzmo.json files in [dir] (default: .) and upload each game's build.
|
|
17
|
+
puzzmo validate [dir] Discover and validate every puzzmo.json under [dir] (default: .)
|
|
18
|
+
puzzmo migrate List and select migration skills from dev.puzzmo.com`);
|
|
17
19
|
};
|
|
18
20
|
const run = async () => {
|
|
19
21
|
switch (command) {
|
|
20
22
|
case "login": {
|
|
21
|
-
const
|
|
23
|
+
const sourceIndex = args.findIndex((a) => a === "--source");
|
|
24
|
+
const source = sourceIndex >= 0 ? args[sourceIndex + 1] : undefined;
|
|
25
|
+
if (sourceIndex >= 0 && !source) {
|
|
26
|
+
console.error("Usage: puzzmo login <token> [--source <url>]");
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
const sourceValueIndex = sourceIndex >= 0 ? sourceIndex + 1 : -1;
|
|
30
|
+
const token = args.find((a, i) => !a.startsWith("-") && i !== sourceValueIndex);
|
|
22
31
|
if (!token) {
|
|
23
|
-
console.error("Usage: puzzmo login <token>");
|
|
32
|
+
console.error("Usage: puzzmo login <token> [--source <url>]");
|
|
24
33
|
process.exit(1);
|
|
25
34
|
}
|
|
26
|
-
login(token);
|
|
35
|
+
login(token, source);
|
|
27
36
|
break;
|
|
28
37
|
}
|
|
29
38
|
case "upload": {
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE/C,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAEhD,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/util/api.d.ts
CHANGED
|
@@ -31,5 +31,5 @@ export type UploadFilesOptions = {
|
|
|
31
31
|
repoURL?: string | null;
|
|
32
32
|
};
|
|
33
33
|
/** Multi-step upload: init -> batched file uploads -> complete */
|
|
34
|
-
export declare const uploadFiles: (token: string, gameSlug: string, sha: string, filePaths: string[], baseDir: string, puzzmoFile: PuzzmoFile, onProgress?: UploadProgress | undefined, options?: UploadFilesOptions) => Promise<CompleteResponse>;
|
|
34
|
+
export declare const uploadFiles: (apiURL: string, token: string, gameSlug: string, sha: string, filePaths: string[], baseDir: string, puzzmoFile: PuzzmoFile, onProgress?: UploadProgress | undefined, options?: UploadFilesOptions) => Promise<CompleteResponse>;
|
|
35
35
|
export {};
|
package/lib/util/api.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { getAPIURL } from "./config.js";
|
|
4
3
|
const BATCH_SIZE = 10;
|
|
5
4
|
/** Thrown when /cliUpload init returns a 404 because the game slug isn't registered yet. */
|
|
6
5
|
export class GameNotFoundError extends Error {
|
|
@@ -75,12 +74,21 @@ const uploadFile = async (url, token, filePath, baseDir, verbose) => {
|
|
|
75
74
|
},
|
|
76
75
|
body: content,
|
|
77
76
|
}, step, verbose);
|
|
77
|
+
if (res.status === 413)
|
|
78
|
+
throw new Error(`File ${relativePath} is too large to upload (${formatBytes(content.length)})`);
|
|
78
79
|
return (await readResponse(res, fullURL, step, verbose));
|
|
79
80
|
};
|
|
81
|
+
/** Formats a byte count as a human-readable string (e.g. "1.6 MB") */
|
|
82
|
+
const formatBytes = (bytes) => {
|
|
83
|
+
if (bytes < 1024)
|
|
84
|
+
return `${bytes} B`;
|
|
85
|
+
if (bytes < 1024 * 1024)
|
|
86
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
87
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
88
|
+
};
|
|
80
89
|
/** Multi-step upload: init -> batched file uploads -> complete */
|
|
81
|
-
export const uploadFiles = async (token, gameSlug, sha, filePaths, baseDir, puzzmoFile, onProgress, options = {}) => {
|
|
90
|
+
export const uploadFiles = async (apiURL, token, gameSlug, sha, filePaths, baseDir, puzzmoFile, onProgress, options = {}) => {
|
|
82
91
|
const { verbose = false, description, repoURL } = options;
|
|
83
|
-
const apiURL = getAPIURL();
|
|
84
92
|
if (verbose)
|
|
85
93
|
console.log(` API URL: ${apiURL}`);
|
|
86
94
|
// Step 1: Init session (includes puzzmo.json metadata)
|
package/lib/util/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/util/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/util/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAgB5B,MAAM,UAAU,GAAG,EAAE,CAAA;AAErB,4FAA4F;AAC5F,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAExB,IAAI;IADtB,YACkB,IAAY,EAC5B,OAAe,EACf;QACA,KAAK,CAAC,OAAO,CAAC,CAAA;oBAHE,IAAI;QAIpB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;IAAA,CAChC;CACF;AAkBD,yFAAyF;AACzF,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAW,EAAE,IAAiB,EAAE,IAAY,EAAE,OAAgB,EAAqB,EAAE,CAAC;IACpH,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,SAAO,IAAI,CAAC,MAAM,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAA;IACxE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAClC,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,SAAO,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,GAAG,CAAC,CAAA;QACzE,OAAO,GAAG,CAAA;IACZ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,KAAK,GAAI,CAAyB,CAAC,KAAK,CAAA;QAC9C,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAW,CAAC,OAAO,CAAA;QACtG,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACpE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC,CAAA;IACvE,CAAC;AAAA,CACF,CAAA;AAED,8FAA8F;AAC9F,MAAM,YAAY,GAAG,KAAK,EAAE,GAAa,EAAE,GAAW,EAAE,IAAY,EAAE,OAAgB,EAAE,EAAE,CAAC;IACzF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;IAC7B,IAAI,IAAa,CAAA;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;YAC/E,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,SAAS,GAAG,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC,CAAA;QACvH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,KAAK,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IAC1G,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,IAAuD,CAAA;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,UAAU,IAAI,eAAe,CAAA;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACvG,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAClE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,KAAK,GAAG,CAAC,MAAM,SAAS,GAAG,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,EAAE,CAAC,CAAA;IAChH,CAAC;IACD,OAAO,IAAI,CAAA;AAAA,CACZ,CAAA;AAED,gCAAgC;AAChC,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAW,EAAE,KAAa,EAAE,IAAY,EAAE,IAAY,EAAE,OAAgB,EAAE,EAAE,CAAC;IACnG,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAChC,GAAG,EACH;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QACjF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,EACD,IAAI,EACJ,OAAO,CACR,CAAA;IACD,OAAO,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AAAA,CAC7C,CAAA;AAED,uEAAuE;AACvE,MAAM,UAAU,GAAG,KAAK,EAAE,GAAW,EAAE,KAAa,EAAE,QAAgB,EAAE,OAAe,EAAE,OAAgB,EAAyB,EAAE,CAAC;IACnI,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACrD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IACzC,MAAM,IAAI,GAAG,gBAAgB,YAAY,GAAG,CAAA;IAE5C,MAAM,OAAO,GAAG,GAAG,GAAG,SAAS,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAA;IACjE,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAChC,OAAO,EACP;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,KAAK,EAAE;YAChC,cAAc,EAAE,0BAA0B;SAC3C;QACD,IAAI,EAAE,OAAO;KACd,EACD,IAAI,EACJ,OAAO,CACR,CAAA;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,YAAY,4BAA4B,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACvH,OAAO,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAiB,CAAA;AAAA,CACzE,CAAA;AAED,sEAAsE;AACtE,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC;IAC7C,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAA;IACrC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;IACjE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;AAAA,CAClD,CAAA;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,MAAc,EACd,KAAa,EACb,QAAgB,EAChB,GAAW,EACX,SAAmB,EACnB,OAAe,EACf,UAAsB,EACtB,UAA2B,EAC3B,OAAO,GAAuB,EAAE,EACL,EAAE,CAAC;IAC9B,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IACzD,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,EAAE,CAAC,CAAA;IAEhD,uDAAuD;IACvD,IAAI,IAAkB,CAAA;IACtB,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,QAAQ,CACpB,GAAG,MAAM,YAAY,EACrB,KAAK,EACL,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,EACnD,aAAa,EACb,OAAO,CACR,CAAiB,CAAA;IACpB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;QACjH,MAAM,CAAC,CAAA;IACT,CAAC;IACD,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;IAExD,6CAA6C;IAC7C,MAAM,OAAO,GAAG,GAAG,MAAM,cAAc,IAAI,CAAC,SAAS,OAAO,CAAA;IAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,CAAA;IAC7D,IAAI,aAAa,GAAG,CAAC,CAAA;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QAC/C,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;QACtF,aAAa,IAAI,KAAK,CAAC,MAAM,CAAA;QAC7B,UAAU,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;IACrD,CAAC;IAED,mBAAmB;IACnB,OAAO,CAAC,MAAM,QAAQ,CAAC,GAAG,MAAM,cAAc,IAAI,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAqB,CAAA;AAAA,CACrI,CAAA"}
|
package/lib/util/config.d.ts
CHANGED
|
@@ -1,13 +1,43 @@
|
|
|
1
|
+
export declare const defaultSource = "https://api.puzzmo.com";
|
|
2
|
+
export type TokenEntry = {
|
|
3
|
+
/** Server identifier (e.g. "api.puzzmo.com" or "localhost:8911") */
|
|
4
|
+
source: string;
|
|
5
|
+
/** The pzt- prefixed JWT issued by that server */
|
|
6
|
+
token: string;
|
|
7
|
+
};
|
|
1
8
|
type Config = {
|
|
2
|
-
|
|
3
|
-
apiURL?: string;
|
|
9
|
+
tokens: TokenEntry[];
|
|
4
10
|
};
|
|
5
|
-
/** Reads
|
|
11
|
+
/** Reads ~/.puzzmo/config.json. Returns an empty token list if the file doesn't exist. */
|
|
6
12
|
export declare const readConfig: () => Config;
|
|
7
|
-
/**
|
|
8
|
-
export declare const
|
|
9
|
-
/**
|
|
10
|
-
export declare const
|
|
11
|
-
/** Returns
|
|
12
|
-
export declare const
|
|
13
|
+
/** Saves a token for `source`, replacing any existing entry for that same source */
|
|
14
|
+
export declare const addToken: (source: string, token: string) => void;
|
|
15
|
+
/** Removes any saved token for `source`. Returns true if something was removed. */
|
|
16
|
+
export declare const removeToken: (source: string) => boolean;
|
|
17
|
+
/** Returns saved tokens. PUZZMO_TOKEN env var (with optional PUZZMO_API_URL) overrides everything. */
|
|
18
|
+
export declare const getTokens: () => TokenEntry[];
|
|
19
|
+
/** Best-guess token for clients that don't care which server it points at (e.g. .mcp.json scaffolding) */
|
|
20
|
+
export declare const getDefaultToken: () => string | undefined;
|
|
21
|
+
type TokenPayload = {
|
|
22
|
+
teamID?: string;
|
|
23
|
+
createdByID?: string;
|
|
24
|
+
iat?: number;
|
|
25
|
+
};
|
|
26
|
+
/** Decodes a `pzt-<jwt>` token (without verifying) and returns its payload, or null on failure */
|
|
27
|
+
export declare const decodeTokenPayload: (token: string) => TokenPayload | null;
|
|
28
|
+
/** Strips protocol and trailing slashes so two spellings of the same server compare equal */
|
|
29
|
+
export declare const normalizeSource: (source: string) => string;
|
|
30
|
+
/** Re-attaches a protocol to a normalized source. Localhost defaults to http, everything else to https. */
|
|
31
|
+
export declare const sourceToURL: (source: string) => string;
|
|
32
|
+
/** Sorts saved tokens by upload preference: localhost > *.puzzmo.com > anything else */
|
|
33
|
+
export declare const sortByServerPriority: (tokens: TokenEntry[]) => TokenEntry[];
|
|
34
|
+
/** Returns saved tokens whose JWT teamID matches the given teamID */
|
|
35
|
+
export declare const findTokensForTeam: (teamID: string) => TokenEntry[];
|
|
36
|
+
/** True if a quick fetch to `${source}/graphql` returns any HTTP response within `timeoutMs` */
|
|
37
|
+
export declare const isServerReachable: (source: string, timeoutMs?: number) => Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* Picks the (source, token) pair to use for `teamID`. Prefers localhost when reachable,
|
|
40
|
+
* then *.puzzmo.com, then any other matching source. Returns null if no token matches.
|
|
41
|
+
*/
|
|
42
|
+
export declare const resolveServerForTeam: (teamID: string) => Promise<TokenEntry | null>;
|
|
13
43
|
export {};
|
package/lib/util/config.js
CHANGED
|
@@ -3,27 +3,121 @@ import os from "node:os";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
const configDir = path.join(os.homedir(), ".puzzmo");
|
|
5
5
|
const configPath = path.join(configDir, "config.json");
|
|
6
|
-
|
|
6
|
+
export const defaultSource = "https://api.puzzmo.com";
|
|
7
|
+
/** Reads ~/.puzzmo/config.json. Returns an empty token list if the file doesn't exist. */
|
|
7
8
|
export const readConfig = () => {
|
|
8
9
|
try {
|
|
9
|
-
const
|
|
10
|
-
return
|
|
10
|
+
const parsed = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
11
|
+
return { tokens: parsed.tokens ?? [] };
|
|
11
12
|
}
|
|
12
13
|
catch {
|
|
13
|
-
return {};
|
|
14
|
+
return { tokens: [] };
|
|
14
15
|
}
|
|
15
16
|
};
|
|
16
|
-
|
|
17
|
-
export const writeConfig = (config) => {
|
|
17
|
+
const writeConfig = (config) => {
|
|
18
18
|
fs.mkdirSync(configDir, { recursive: true });
|
|
19
19
|
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
20
20
|
};
|
|
21
|
-
/**
|
|
22
|
-
export const
|
|
23
|
-
|
|
21
|
+
/** Saves a token for `source`, replacing any existing entry for that same source */
|
|
22
|
+
export const addToken = (source, token) => {
|
|
23
|
+
const normalized = normalizeSource(source);
|
|
24
|
+
const { tokens } = readConfig();
|
|
25
|
+
const remaining = tokens.filter((t) => normalizeSource(t.source) !== normalized);
|
|
26
|
+
remaining.push({ source: normalized, token });
|
|
27
|
+
writeConfig({ tokens: remaining });
|
|
24
28
|
};
|
|
25
|
-
/** Returns
|
|
26
|
-
export const
|
|
27
|
-
|
|
29
|
+
/** Removes any saved token for `source`. Returns true if something was removed. */
|
|
30
|
+
export const removeToken = (source) => {
|
|
31
|
+
const normalized = normalizeSource(source);
|
|
32
|
+
const { tokens } = readConfig();
|
|
33
|
+
const remaining = tokens.filter((t) => normalizeSource(t.source) !== normalized);
|
|
34
|
+
if (remaining.length === tokens.length)
|
|
35
|
+
return false;
|
|
36
|
+
writeConfig({ tokens: remaining });
|
|
37
|
+
return true;
|
|
38
|
+
};
|
|
39
|
+
/** Returns saved tokens. PUZZMO_TOKEN env var (with optional PUZZMO_API_URL) overrides everything. */
|
|
40
|
+
export const getTokens = () => {
|
|
41
|
+
const envToken = process.env.PUZZMO_TOKEN;
|
|
42
|
+
if (envToken) {
|
|
43
|
+
const source = normalizeSource(process.env.PUZZMO_API_URL ?? defaultSource);
|
|
44
|
+
return [{ source, token: envToken }];
|
|
45
|
+
}
|
|
46
|
+
return readConfig().tokens;
|
|
47
|
+
};
|
|
48
|
+
/** Best-guess token for clients that don't care which server it points at (e.g. .mcp.json scaffolding) */
|
|
49
|
+
export const getDefaultToken = () => getTokens()[0]?.token;
|
|
50
|
+
/** Decodes a `pzt-<jwt>` token (without verifying) and returns its payload, or null on failure */
|
|
51
|
+
export const decodeTokenPayload = (token) => {
|
|
52
|
+
try {
|
|
53
|
+
const stripped = token.startsWith("pzt-") ? token.slice(4) : token;
|
|
54
|
+
const parts = stripped.split(".");
|
|
55
|
+
if (parts.length < 2)
|
|
56
|
+
return null;
|
|
57
|
+
const payload = parts[1].replace(/-/g, "+").replace(/_/g, "/");
|
|
58
|
+
const padded = payload + "=".repeat((4 - (payload.length % 4)) % 4);
|
|
59
|
+
return JSON.parse(Buffer.from(padded, "base64").toString("utf-8"));
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
/** Strips protocol and trailing slashes so two spellings of the same server compare equal */
|
|
66
|
+
export const normalizeSource = (source) => source
|
|
67
|
+
.trim()
|
|
68
|
+
.replace(/^https?:\/\//, "")
|
|
69
|
+
.replace(/\/+$/, "");
|
|
70
|
+
/** Re-attaches a protocol to a normalized source. Localhost defaults to http, everything else to https. */
|
|
71
|
+
export const sourceToURL = (source) => {
|
|
72
|
+
const trimmed = source.trim().replace(/\/+$/, "");
|
|
73
|
+
if (/^https?:\/\//.test(trimmed))
|
|
74
|
+
return trimmed;
|
|
75
|
+
const normalized = normalizeSource(trimmed);
|
|
76
|
+
if (isLocalhost(normalized))
|
|
77
|
+
return `http://${normalized}`;
|
|
78
|
+
return `https://${normalized}`;
|
|
79
|
+
};
|
|
80
|
+
const isLocalhost = (source) => {
|
|
81
|
+
const n = normalizeSource(source);
|
|
82
|
+
return n.startsWith("localhost") || n.startsWith("127.0.0.1") || n.startsWith("0.0.0.0");
|
|
83
|
+
};
|
|
84
|
+
const isPuzzmoCom = (source) => /(^|\.)puzzmo\.com(:|\/|$)/.test(normalizeSource(source));
|
|
85
|
+
/** Sorts saved tokens by upload preference: localhost > *.puzzmo.com > anything else */
|
|
86
|
+
export const sortByServerPriority = (tokens) => {
|
|
87
|
+
const priority = (t) => (isLocalhost(t.source) ? 0 : isPuzzmoCom(t.source) ? 1 : 2);
|
|
88
|
+
return [...tokens].sort((a, b) => priority(a) - priority(b));
|
|
89
|
+
};
|
|
90
|
+
/** Returns saved tokens whose JWT teamID matches the given teamID */
|
|
91
|
+
export const findTokensForTeam = (teamID) => getTokens().filter((t) => decodeTokenPayload(t.token)?.teamID === teamID);
|
|
92
|
+
/** True if a quick fetch to `${source}/graphql` returns any HTTP response within `timeoutMs` */
|
|
93
|
+
export const isServerReachable = async (source, timeoutMs = 1500) => {
|
|
94
|
+
const url = `${sourceToURL(source)}/graphql`;
|
|
95
|
+
const controller = new AbortController();
|
|
96
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
97
|
+
try {
|
|
98
|
+
await fetch(url, { method: "GET", signal: controller.signal });
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
clearTimeout(timer);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Picks the (source, token) pair to use for `teamID`. Prefers localhost when reachable,
|
|
110
|
+
* then *.puzzmo.com, then any other matching source. Returns null if no token matches.
|
|
111
|
+
*/
|
|
112
|
+
export const resolveServerForTeam = async (teamID) => {
|
|
113
|
+
const matches = sortByServerPriority(findTokensForTeam(teamID));
|
|
114
|
+
if (matches.length === 0)
|
|
115
|
+
return null;
|
|
116
|
+
for (const candidate of matches) {
|
|
117
|
+
if (isLocalhost(candidate.source) && !(await isServerReachable(candidate.source)))
|
|
118
|
+
continue;
|
|
119
|
+
return candidate;
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
28
122
|
};
|
|
29
123
|
//# sourceMappingURL=config.js.map
|
package/lib/util/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/util/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;AACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/util/config.ts"],"names":[],"mappings":"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"}
|
package/lib/util/createGame.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export type CreateUserGameOptions = {
|
|
2
|
+
/** Base URL of the API server to call (e.g. "https://api.puzzmo.com") */
|
|
3
|
+
apiURL: string;
|
|
2
4
|
/** A teamAccessToken (the same token saved by `puzzmo login`). The mutation uses it to identify the team. */
|
|
3
5
|
teamAccessToken: string;
|
|
4
6
|
displayName: string;
|
package/lib/util/createGame.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { getAPIURL } from "./config.js";
|
|
2
1
|
const createUserGameMutation = `
|
|
3
2
|
mutation cliCreateUserGameMutation($teamAccessToken: String!, $input: CreateUserGameInput!) {
|
|
4
3
|
createUserGame(teamAccessToken: $teamAccessToken, input: $input) {
|
|
@@ -9,7 +8,7 @@ const createUserGameMutation = `
|
|
|
9
8
|
`;
|
|
10
9
|
/** Calls the createUserGame mutation using a teamAccessToken for auth. */
|
|
11
10
|
export const createUserGame = async (options) => {
|
|
12
|
-
const url = `${
|
|
11
|
+
const url = `${options.apiURL}/graphql`;
|
|
13
12
|
const response = await fetch(url, {
|
|
14
13
|
method: "POST",
|
|
15
14
|
headers: { "Content-Type": "application/json" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createGame.js","sourceRoot":"","sources":["../../src/util/createGame.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"createGame.js","sourceRoot":"","sources":["../../src/util/createGame.ts"],"names":[],"mappings":"AAAA,MAAM,sBAAsB,GAAG;;;;;;;CAO9B,CAAA;AAwBD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,OAA8B,EAAwB,EAAE,CAAC;IAC5F,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,UAAU,CAAA;IAEvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,sBAAsB;YAC7B,SAAS,EAAE;gBACT,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE;aAC5C;SACF,CAAC;KACH,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;IAE7G,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA2B,CAAA;IAEhE,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9D,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAA;IACtD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAEpF,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAA;IAC3D,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,CAAA;AAAA,CACvF,CAAA"}
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@ import { downloadPage } from "../../download/page-downloader.js"
|
|
|
10
10
|
import { runCommand, gitCommit } from "../../util/exec.js"
|
|
11
11
|
import { runSkillsPipelineTUI, runAgentWithBuildLoop } from "../../skills/runner.js"
|
|
12
12
|
import { login } from "../login.js"
|
|
13
|
-
import {
|
|
13
|
+
import { getDefaultToken } from "../../util/config.js"
|
|
14
14
|
import { detectRepoContext, type RepoType } from "./detectRepo.js"
|
|
15
15
|
|
|
16
16
|
type Strategy = "import" | "blank" | "prompt"
|
|
@@ -62,7 +62,7 @@ const slugify = (text: string) =>
|
|
|
62
62
|
|
|
63
63
|
/** Writes .mcp.json with dev server config */
|
|
64
64
|
const writeMcpConfig = (dir: string) => {
|
|
65
|
-
const token =
|
|
65
|
+
const token = getDefaultToken()
|
|
66
66
|
const mcpConfig = {
|
|
67
67
|
mcpServers: {
|
|
68
68
|
"dev.puzzmo.com": {
|
package/src/commands/login.ts
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import * as p from "@clack/prompts"
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { defaultSource, addToken, decodeTokenPayload, normalizeSource } from "../util/config.js"
|
|
4
4
|
|
|
5
|
-
/** Saves a CLI token to ~/.puzzmo/config.json */
|
|
6
|
-
export const login = (token: string) => {
|
|
5
|
+
/** Saves a CLI token to ~/.puzzmo/config.json under the given source server */
|
|
6
|
+
export const login = (token: string, source: string = defaultSource) => {
|
|
7
7
|
if (!token.startsWith("pzt-")) {
|
|
8
8
|
p.log.error("Invalid CLI token. Generate one from dev.puzzmo.com.")
|
|
9
9
|
process.exit(1)
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
const payload = decodeTokenPayload(token)
|
|
13
|
+
if (!payload?.teamID) {
|
|
14
|
+
p.log.error("Could not decode the team from this token. Make sure you're using a token from dev.puzzmo.com.")
|
|
15
|
+
process.exit(1)
|
|
16
|
+
}
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
const normalized = normalizeSource(source)
|
|
19
|
+
addToken(normalized, token)
|
|
20
|
+
p.log.success(`Logged in to ${normalized} for team ${payload.teamID}. Token saved to ~/.puzzmo/config.json`)
|
|
17
21
|
}
|
package/src/commands/upload.ts
CHANGED
|
@@ -5,7 +5,7 @@ import path from "node:path"
|
|
|
5
5
|
import * as p from "@clack/prompts"
|
|
6
6
|
|
|
7
7
|
import { GameNotFoundError, uploadFiles } from "../util/api.js"
|
|
8
|
-
import {
|
|
8
|
+
import { type TokenEntry, findTokensForTeam, getTokens, resolveServerForTeam, sourceToURL } from "../util/config.js"
|
|
9
9
|
import { createUserGame } from "../util/createGame.js"
|
|
10
10
|
import { discoverGames, type DiscoveredGame } from "../util/discoverGames.js"
|
|
11
11
|
|
|
@@ -16,6 +16,7 @@ type UploadOptions = {
|
|
|
16
16
|
type GameSuccess = {
|
|
17
17
|
ok: true
|
|
18
18
|
slug: string
|
|
19
|
+
source: string
|
|
19
20
|
fileCount: number
|
|
20
21
|
totalBytes: number
|
|
21
22
|
versionID: string
|
|
@@ -33,8 +34,8 @@ type GameResult = GameSuccess | GameFailure
|
|
|
33
34
|
/** Uploads game build artifacts to Puzzmo by discovering puzzmo.json files in `dir` */
|
|
34
35
|
export const upload = async (dir: string, options: UploadOptions = {}) => {
|
|
35
36
|
const { verbose = false } = options
|
|
36
|
-
|
|
37
|
-
if (
|
|
37
|
+
|
|
38
|
+
if (getTokens().length === 0) {
|
|
38
39
|
console.error("Not logged in. Run `puzzmo login <token>` or set PUZZMO_TOKEN.")
|
|
39
40
|
process.exit(1)
|
|
40
41
|
}
|
|
@@ -70,10 +71,6 @@ export const upload = async (dir: string, options: UploadOptions = {}) => {
|
|
|
70
71
|
if (description) console.log(`\nMessage: ${description}`)
|
|
71
72
|
if (repoURL) console.log(`Repo: ${repoURL}`)
|
|
72
73
|
|
|
73
|
-
const apiURL = getAPIURL()
|
|
74
|
-
const defaultURL = "https://api.puzzmo.com"
|
|
75
|
-
if (apiURL !== defaultURL) console.log(`API: ${apiURL}`)
|
|
76
|
-
|
|
77
74
|
const results: GameResult[] = []
|
|
78
75
|
for (const err of discoveryErrors) {
|
|
79
76
|
results.push({ ok: false, slug: err.slug ?? path.relative(rootDir, err.puzzmoJsonPath), error: err.errors.join("; ") })
|
|
@@ -81,22 +78,40 @@ export const upload = async (dir: string, options: UploadOptions = {}) => {
|
|
|
81
78
|
|
|
82
79
|
for (let i = 0; i < games.length; i++) {
|
|
83
80
|
const game = games[i]
|
|
84
|
-
|
|
81
|
+
const slug = game.puzzmoFile.game.slug
|
|
82
|
+
console.log(`\n[${i + 1}/${games.length}] Uploading ${slug}`)
|
|
83
|
+
|
|
84
|
+
const teamID = game.puzzmoFile.game.teamID
|
|
85
|
+
const credential = await resolveServerForTeam(teamID)
|
|
86
|
+
if (!credential) {
|
|
87
|
+
const matches = findTokensForTeam(teamID)
|
|
88
|
+
const message =
|
|
89
|
+
matches.length === 0
|
|
90
|
+
? `No saved token for team ${teamID}. Run \`puzzmo login <token>\` (use \`--source\` if the token is for a non-default server).`
|
|
91
|
+
: `Token for team ${teamID} is registered against ${matches.map((m) => m.source).join(", ")} but none of those servers are reachable.`
|
|
92
|
+
console.error(` ${message}`)
|
|
93
|
+
results.push({ ok: false, slug, error: message })
|
|
94
|
+
continue
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const apiURL = sourceToURL(credential.source)
|
|
98
|
+
console.log(` Server: ${credential.source}`)
|
|
99
|
+
|
|
85
100
|
try {
|
|
86
101
|
let result: GameSuccess
|
|
87
102
|
try {
|
|
88
|
-
result = await uploadOneGame(game, {
|
|
103
|
+
result = await uploadOneGame(game, { credential, apiURL, sha, description, repoURL, verbose, rootDir })
|
|
89
104
|
} catch (e) {
|
|
90
105
|
if (!(e instanceof GameNotFoundError)) throw e
|
|
91
|
-
const created = await maybeCreateMissingGame(e, game, { teamAccessToken: token })
|
|
106
|
+
const created = await maybeCreateMissingGame(e, game, { apiURL, teamAccessToken: credential.token })
|
|
92
107
|
if (!created) throw e
|
|
93
|
-
result = await uploadOneGame(game, {
|
|
108
|
+
result = await uploadOneGame(game, { credential, apiURL, sha, description, repoURL, verbose, rootDir })
|
|
94
109
|
}
|
|
95
110
|
results.push(result)
|
|
96
111
|
} catch (e) {
|
|
97
112
|
const message = e instanceof Error ? e.message : String(e)
|
|
98
113
|
console.error(` Failed: ${message}`)
|
|
99
|
-
results.push({ ok: false, slug
|
|
114
|
+
results.push({ ok: false, slug, error: message })
|
|
100
115
|
}
|
|
101
116
|
}
|
|
102
117
|
|
|
@@ -107,7 +122,8 @@ export const upload = async (dir: string, options: UploadOptions = {}) => {
|
|
|
107
122
|
}
|
|
108
123
|
|
|
109
124
|
type UploadOneOptions = {
|
|
110
|
-
|
|
125
|
+
credential: TokenEntry
|
|
126
|
+
apiURL: string
|
|
111
127
|
sha: string
|
|
112
128
|
description: string | null
|
|
113
129
|
repoURL: string | null
|
|
@@ -117,7 +133,7 @@ type UploadOneOptions = {
|
|
|
117
133
|
|
|
118
134
|
/** Uploads a single discovered game; throws on failure */
|
|
119
135
|
const uploadOneGame = async (game: DiscoveredGame, opts: UploadOneOptions): Promise<GameSuccess> => {
|
|
120
|
-
const {
|
|
136
|
+
const { credential, apiURL, sha, description, repoURL, verbose, rootDir } = opts
|
|
121
137
|
const { puzzmoFile, distDir } = game
|
|
122
138
|
const gameSlug = puzzmoFile.game.slug
|
|
123
139
|
|
|
@@ -130,7 +146,8 @@ const uploadOneGame = async (game: DiscoveredGame, opts: UploadOneOptions): Prom
|
|
|
130
146
|
console.log(` ${files.length} file(s), ${formatBytes(totalBytes)} total (sha ${sha.slice(0, 8)})`)
|
|
131
147
|
|
|
132
148
|
const result = await uploadFiles(
|
|
133
|
-
|
|
149
|
+
apiURL,
|
|
150
|
+
credential.token,
|
|
134
151
|
gameSlug,
|
|
135
152
|
sha,
|
|
136
153
|
files,
|
|
@@ -146,6 +163,7 @@ const uploadOneGame = async (game: DiscoveredGame, opts: UploadOneOptions): Prom
|
|
|
146
163
|
return {
|
|
147
164
|
ok: true,
|
|
148
165
|
slug: gameSlug,
|
|
166
|
+
source: credential.source,
|
|
149
167
|
fileCount: files.length,
|
|
150
168
|
totalBytes,
|
|
151
169
|
versionID: result.versionID,
|
|
@@ -159,7 +177,7 @@ const printReport = (results: GameResult[]) => {
|
|
|
159
177
|
const successes = results.filter((r): r is GameSuccess => r.ok)
|
|
160
178
|
const failures = results.filter((r): r is GameFailure => !r.ok)
|
|
161
179
|
for (const r of successes) {
|
|
162
|
-
console.log(` OK ${r.slug.padEnd(24)} ${formatBytes(r.totalBytes).padStart(8)} ${r.versionID}`)
|
|
180
|
+
console.log(` OK ${r.slug.padEnd(24)} ${formatBytes(r.totalBytes).padStart(8)} ${r.source.padEnd(20)} ${r.versionID}`)
|
|
163
181
|
}
|
|
164
182
|
for (const r of failures) {
|
|
165
183
|
console.log(` FAIL ${r.slug.padEnd(24)} ${r.error}`)
|
|
@@ -241,7 +259,7 @@ const hashGames = (games: DiscoveredGame[]): string => {
|
|
|
241
259
|
const maybeCreateMissingGame = async (
|
|
242
260
|
err: GameNotFoundError,
|
|
243
261
|
game: DiscoveredGame,
|
|
244
|
-
opts: { teamAccessToken: string },
|
|
262
|
+
opts: { apiURL: string; teamAccessToken: string },
|
|
245
263
|
): Promise<boolean> => {
|
|
246
264
|
const slug = err.slug
|
|
247
265
|
const displayName = game.puzzmoFile.game.displayName
|
|
@@ -258,7 +276,7 @@ const maybeCreateMissingGame = async (
|
|
|
258
276
|
if (p.isCancel(consent) || !consent) return false
|
|
259
277
|
|
|
260
278
|
try {
|
|
261
|
-
const created = await createUserGame({ displayName, teamAccessToken: opts.teamAccessToken })
|
|
279
|
+
const created = await createUserGame({ apiURL: opts.apiURL, displayName, teamAccessToken: opts.teamAccessToken })
|
|
262
280
|
console.log(` Created game ${created.slug} (${created.id})`)
|
|
263
281
|
if (created.slug !== slug) {
|
|
264
282
|
console.warn(` Server picked slug "${created.slug}" but your puzzmo.json uses "${slug}". Update puzzmo.json before re-uploading.`)
|
package/src/index.ts
CHANGED
|
@@ -11,23 +11,32 @@ const [command, ...args] = process.argv.slice(2)
|
|
|
11
11
|
|
|
12
12
|
const printUsage = () => {
|
|
13
13
|
console.log(`Usage:
|
|
14
|
-
puzzmo login <token>
|
|
15
|
-
|
|
14
|
+
puzzmo login <token> [--source <url>] Save a CLI auth token. You can have many stored tokens for different teams.
|
|
15
|
+
--source defaults to https://api.puzzmo.com;
|
|
16
16
|
|
|
17
|
-
puzzmo
|
|
18
|
-
|
|
19
|
-
puzzmo
|
|
17
|
+
puzzmo game create [token] Create a new Puzzmo game project
|
|
18
|
+
|
|
19
|
+
puzzmo upload [dir] [-v] Discover puzzmo.json files in [dir] (default: .) and upload each game's build.
|
|
20
|
+
puzzmo validate [dir] Discover and validate every puzzmo.json under [dir] (default: .)
|
|
21
|
+
puzzmo migrate List and select migration skills from dev.puzzmo.com`)
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
const run = async () => {
|
|
23
25
|
switch (command) {
|
|
24
26
|
case "login": {
|
|
25
|
-
const
|
|
27
|
+
const sourceIndex = args.findIndex((a) => a === "--source")
|
|
28
|
+
const source = sourceIndex >= 0 ? args[sourceIndex + 1] : undefined
|
|
29
|
+
if (sourceIndex >= 0 && !source) {
|
|
30
|
+
console.error("Usage: puzzmo login <token> [--source <url>]")
|
|
31
|
+
process.exit(1)
|
|
32
|
+
}
|
|
33
|
+
const sourceValueIndex = sourceIndex >= 0 ? sourceIndex + 1 : -1
|
|
34
|
+
const token = args.find((a, i) => !a.startsWith("-") && i !== sourceValueIndex)
|
|
26
35
|
if (!token) {
|
|
27
|
-
console.error("Usage: puzzmo login <token>")
|
|
36
|
+
console.error("Usage: puzzmo login <token> [--source <url>]")
|
|
28
37
|
process.exit(1)
|
|
29
38
|
}
|
|
30
|
-
login(token)
|
|
39
|
+
login(token, source)
|
|
31
40
|
break
|
|
32
41
|
}
|
|
33
42
|
case "upload": {
|
package/src/util/api.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs"
|
|
2
2
|
import path from "node:path"
|
|
3
3
|
|
|
4
|
-
import { getAPIURL } from "./config.js"
|
|
5
|
-
|
|
6
4
|
/** The schema for a puzzmo.json file - mirrors PuzzmoFile from @puzzmo-com/shared/hostAPI */
|
|
7
5
|
export type PuzzmoFile = {
|
|
8
6
|
game: {
|
|
@@ -119,11 +117,20 @@ const uploadFile = async (url: string, token: string, filePath: string, baseDir:
|
|
|
119
117
|
step,
|
|
120
118
|
verbose,
|
|
121
119
|
)
|
|
120
|
+
if (res.status === 413) throw new Error(`File ${relativePath} is too large to upload (${formatBytes(content.length)})`)
|
|
122
121
|
return (await readResponse(res, fullURL, step, verbose)) as FileResponse
|
|
123
122
|
}
|
|
124
123
|
|
|
124
|
+
/** Formats a byte count as a human-readable string (e.g. "1.6 MB") */
|
|
125
|
+
const formatBytes = (bytes: number): string => {
|
|
126
|
+
if (bytes < 1024) return `${bytes} B`
|
|
127
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`
|
|
128
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`
|
|
129
|
+
}
|
|
130
|
+
|
|
125
131
|
/** Multi-step upload: init -> batched file uploads -> complete */
|
|
126
132
|
export const uploadFiles = async (
|
|
133
|
+
apiURL: string,
|
|
127
134
|
token: string,
|
|
128
135
|
gameSlug: string,
|
|
129
136
|
sha: string,
|
|
@@ -134,7 +141,6 @@ export const uploadFiles = async (
|
|
|
134
141
|
options: UploadFilesOptions = {},
|
|
135
142
|
): Promise<CompleteResponse> => {
|
|
136
143
|
const { verbose = false, description, repoURL } = options
|
|
137
|
-
const apiURL = getAPIURL()
|
|
138
144
|
if (verbose) console.log(` API URL: ${apiURL}`)
|
|
139
145
|
|
|
140
146
|
// Step 1: Init session (includes puzzmo.json metadata)
|
package/src/util/config.ts
CHANGED
|
@@ -5,33 +5,137 @@ import path from "node:path"
|
|
|
5
5
|
const configDir = path.join(os.homedir(), ".puzzmo")
|
|
6
6
|
const configPath = path.join(configDir, "config.json")
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
export const defaultSource = "https://api.puzzmo.com"
|
|
9
|
+
|
|
10
|
+
export type TokenEntry = {
|
|
11
|
+
/** Server identifier (e.g. "api.puzzmo.com" or "localhost:8911") */
|
|
12
|
+
source: string
|
|
13
|
+
/** The pzt- prefixed JWT issued by that server */
|
|
14
|
+
token: string
|
|
11
15
|
}
|
|
12
16
|
|
|
13
|
-
|
|
17
|
+
type Config = { tokens: TokenEntry[] }
|
|
18
|
+
|
|
19
|
+
/** Reads ~/.puzzmo/config.json. Returns an empty token list if the file doesn't exist. */
|
|
14
20
|
export const readConfig = (): Config => {
|
|
15
21
|
try {
|
|
16
|
-
const
|
|
17
|
-
return
|
|
22
|
+
const parsed = JSON.parse(fs.readFileSync(configPath, "utf-8")) as Partial<Config>
|
|
23
|
+
return { tokens: parsed.tokens ?? [] }
|
|
18
24
|
} catch {
|
|
19
|
-
return {}
|
|
25
|
+
return { tokens: [] }
|
|
20
26
|
}
|
|
21
27
|
}
|
|
22
28
|
|
|
23
|
-
|
|
24
|
-
export const writeConfig = (config: Config) => {
|
|
29
|
+
const writeConfig = (config: Config) => {
|
|
25
30
|
fs.mkdirSync(configDir, { recursive: true })
|
|
26
31
|
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n")
|
|
27
32
|
}
|
|
28
33
|
|
|
29
|
-
/**
|
|
30
|
-
export const
|
|
31
|
-
|
|
34
|
+
/** Saves a token for `source`, replacing any existing entry for that same source */
|
|
35
|
+
export const addToken = (source: string, token: string) => {
|
|
36
|
+
const normalized = normalizeSource(source)
|
|
37
|
+
const { tokens } = readConfig()
|
|
38
|
+
const remaining = tokens.filter((t) => normalizeSource(t.source) !== normalized)
|
|
39
|
+
remaining.push({ source: normalized, token })
|
|
40
|
+
writeConfig({ tokens: remaining })
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Removes any saved token for `source`. Returns true if something was removed. */
|
|
44
|
+
export const removeToken = (source: string): boolean => {
|
|
45
|
+
const normalized = normalizeSource(source)
|
|
46
|
+
const { tokens } = readConfig()
|
|
47
|
+
const remaining = tokens.filter((t) => normalizeSource(t.source) !== normalized)
|
|
48
|
+
if (remaining.length === tokens.length) return false
|
|
49
|
+
writeConfig({ tokens: remaining })
|
|
50
|
+
return true
|
|
32
51
|
}
|
|
33
52
|
|
|
34
|
-
/** Returns
|
|
35
|
-
export const
|
|
36
|
-
|
|
53
|
+
/** Returns saved tokens. PUZZMO_TOKEN env var (with optional PUZZMO_API_URL) overrides everything. */
|
|
54
|
+
export const getTokens = (): TokenEntry[] => {
|
|
55
|
+
const envToken = process.env.PUZZMO_TOKEN
|
|
56
|
+
if (envToken) {
|
|
57
|
+
const source = normalizeSource(process.env.PUZZMO_API_URL ?? defaultSource)
|
|
58
|
+
return [{ source, token: envToken }]
|
|
59
|
+
}
|
|
60
|
+
return readConfig().tokens
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Best-guess token for clients that don't care which server it points at (e.g. .mcp.json scaffolding) */
|
|
64
|
+
export const getDefaultToken = (): string | undefined => getTokens()[0]?.token
|
|
65
|
+
|
|
66
|
+
type TokenPayload = { teamID?: string; createdByID?: string; iat?: number }
|
|
67
|
+
|
|
68
|
+
/** Decodes a `pzt-<jwt>` token (without verifying) and returns its payload, or null on failure */
|
|
69
|
+
export const decodeTokenPayload = (token: string): TokenPayload | null => {
|
|
70
|
+
try {
|
|
71
|
+
const stripped = token.startsWith("pzt-") ? token.slice(4) : token
|
|
72
|
+
const parts = stripped.split(".")
|
|
73
|
+
if (parts.length < 2) return null
|
|
74
|
+
const payload = parts[1].replace(/-/g, "+").replace(/_/g, "/")
|
|
75
|
+
const padded = payload + "=".repeat((4 - (payload.length % 4)) % 4)
|
|
76
|
+
return JSON.parse(Buffer.from(padded, "base64").toString("utf-8")) as TokenPayload
|
|
77
|
+
} catch {
|
|
78
|
+
return null
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** Strips protocol and trailing slashes so two spellings of the same server compare equal */
|
|
83
|
+
export const normalizeSource = (source: string): string =>
|
|
84
|
+
source
|
|
85
|
+
.trim()
|
|
86
|
+
.replace(/^https?:\/\//, "")
|
|
87
|
+
.replace(/\/+$/, "")
|
|
88
|
+
|
|
89
|
+
/** Re-attaches a protocol to a normalized source. Localhost defaults to http, everything else to https. */
|
|
90
|
+
export const sourceToURL = (source: string): string => {
|
|
91
|
+
const trimmed = source.trim().replace(/\/+$/, "")
|
|
92
|
+
if (/^https?:\/\//.test(trimmed)) return trimmed
|
|
93
|
+
const normalized = normalizeSource(trimmed)
|
|
94
|
+
if (isLocalhost(normalized)) return `http://${normalized}`
|
|
95
|
+
return `https://${normalized}`
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const isLocalhost = (source: string): boolean => {
|
|
99
|
+
const n = normalizeSource(source)
|
|
100
|
+
return n.startsWith("localhost") || n.startsWith("127.0.0.1") || n.startsWith("0.0.0.0")
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const isPuzzmoCom = (source: string): boolean => /(^|\.)puzzmo\.com(:|\/|$)/.test(normalizeSource(source))
|
|
104
|
+
|
|
105
|
+
/** Sorts saved tokens by upload preference: localhost > *.puzzmo.com > anything else */
|
|
106
|
+
export const sortByServerPriority = (tokens: TokenEntry[]): TokenEntry[] => {
|
|
107
|
+
const priority = (t: TokenEntry) => (isLocalhost(t.source) ? 0 : isPuzzmoCom(t.source) ? 1 : 2)
|
|
108
|
+
return [...tokens].sort((a, b) => priority(a) - priority(b))
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/** Returns saved tokens whose JWT teamID matches the given teamID */
|
|
112
|
+
export const findTokensForTeam = (teamID: string): TokenEntry[] => getTokens().filter((t) => decodeTokenPayload(t.token)?.teamID === teamID)
|
|
113
|
+
|
|
114
|
+
/** True if a quick fetch to `${source}/graphql` returns any HTTP response within `timeoutMs` */
|
|
115
|
+
export const isServerReachable = async (source: string, timeoutMs = 1500): Promise<boolean> => {
|
|
116
|
+
const url = `${sourceToURL(source)}/graphql`
|
|
117
|
+
const controller = new AbortController()
|
|
118
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs)
|
|
119
|
+
try {
|
|
120
|
+
await fetch(url, { method: "GET", signal: controller.signal })
|
|
121
|
+
return true
|
|
122
|
+
} catch {
|
|
123
|
+
return false
|
|
124
|
+
} finally {
|
|
125
|
+
clearTimeout(timer)
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Picks the (source, token) pair to use for `teamID`. Prefers localhost when reachable,
|
|
131
|
+
* then *.puzzmo.com, then any other matching source. Returns null if no token matches.
|
|
132
|
+
*/
|
|
133
|
+
export const resolveServerForTeam = async (teamID: string): Promise<TokenEntry | null> => {
|
|
134
|
+
const matches = sortByServerPriority(findTokensForTeam(teamID))
|
|
135
|
+
if (matches.length === 0) return null
|
|
136
|
+
for (const candidate of matches) {
|
|
137
|
+
if (isLocalhost(candidate.source) && !(await isServerReachable(candidate.source))) continue
|
|
138
|
+
return candidate
|
|
139
|
+
}
|
|
140
|
+
return null
|
|
37
141
|
}
|
package/src/util/createGame.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { getAPIURL } from "./config.js"
|
|
2
|
-
|
|
3
1
|
const createUserGameMutation = `
|
|
4
2
|
mutation cliCreateUserGameMutation($teamAccessToken: String!, $input: CreateUserGameInput!) {
|
|
5
3
|
createUserGame(teamAccessToken: $teamAccessToken, input: $input) {
|
|
@@ -22,6 +20,8 @@ type CreateUserGameResponse = {
|
|
|
22
20
|
}
|
|
23
21
|
|
|
24
22
|
export type CreateUserGameOptions = {
|
|
23
|
+
/** Base URL of the API server to call (e.g. "https://api.puzzmo.com") */
|
|
24
|
+
apiURL: string
|
|
25
25
|
/** A teamAccessToken (the same token saved by `puzzmo login`). The mutation uses it to identify the team. */
|
|
26
26
|
teamAccessToken: string
|
|
27
27
|
displayName: string
|
|
@@ -31,7 +31,7 @@ export type CreatedGame = { id: string; slug: string; displayName: string; newAc
|
|
|
31
31
|
|
|
32
32
|
/** Calls the createUserGame mutation using a teamAccessToken for auth. */
|
|
33
33
|
export const createUserGame = async (options: CreateUserGameOptions): Promise<CreatedGame> => {
|
|
34
|
-
const url = `${
|
|
34
|
+
const url = `${options.apiURL}/graphql`
|
|
35
35
|
|
|
36
36
|
const response = await fetch(url, {
|
|
37
37
|
method: "POST",
|
|
@@ -2,6 +2,7 @@ import { defineConfig } from "vite"
|
|
|
2
2
|
import { puzzmoSimulator, appBundlePlugin } from "@puzzmo/sdk/vite"
|
|
3
3
|
|
|
4
4
|
export default defineConfig({
|
|
5
|
+
base: "./",
|
|
5
6
|
plugins: [puzzmoSimulator({ fixturesGlob: "/fixtures/puzzles/**/*.json" }), appBundlePlugin()],
|
|
6
7
|
build: {
|
|
7
8
|
outDir: "dist",
|