@wootsup/mcp 0.1.0 → 0.3.0
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/CHANGELOG.md +148 -83
- package/README.md +31 -27
- package/SECURITY.md +15 -6
- package/dist/auth/keychain.d.ts +27 -1
- package/dist/auth/keychain.js +48 -2
- package/dist/auth/keychain.js.map +1 -1
- package/dist/cli-hint.d.ts +22 -0
- package/dist/cli-hint.js +55 -0
- package/dist/cli-hint.js.map +1 -0
- package/dist/index.js +97 -22
- package/dist/index.js.map +1 -1
- package/dist/install-skill.js +1 -1
- package/dist/modules/apimapper/cache.js +25 -17
- package/dist/modules/apimapper/cache.js.map +1 -1
- package/dist/modules/apimapper/client.d.ts +62 -1
- package/dist/modules/apimapper/client.js +555 -291
- package/dist/modules/apimapper/client.js.map +1 -1
- package/dist/modules/apimapper/connections.js +230 -75
- package/dist/modules/apimapper/connections.js.map +1 -1
- package/dist/modules/apimapper/credential-sanitizer.d.ts +5 -0
- package/dist/modules/apimapper/credential-sanitizer.js +60 -1
- package/dist/modules/apimapper/credential-sanitizer.js.map +1 -1
- package/dist/modules/apimapper/credentials.js +19 -47
- package/dist/modules/apimapper/credentials.js.map +1 -1
- package/dist/modules/apimapper/diagnose.js +21 -2
- package/dist/modules/apimapper/diagnose.js.map +1 -1
- package/dist/modules/apimapper/flows.js +60 -77
- package/dist/modules/apimapper/flows.js.map +1 -1
- package/dist/modules/apimapper/gateway/advanced-tool.js +56 -5
- package/dist/modules/apimapper/gateway/advanced-tool.js.map +1 -1
- package/dist/modules/apimapper/gateway/essentials.d.ts +1 -1
- package/dist/modules/apimapper/gateway/essentials.js +8 -1
- package/dist/modules/apimapper/gateway/essentials.js.map +1 -1
- package/dist/modules/apimapper/get-skill.d.ts +1 -1
- package/dist/modules/apimapper/get-skill.js +44 -6
- package/dist/modules/apimapper/get-skill.js.map +1 -1
- package/dist/modules/apimapper/graph.js +40 -36
- package/dist/modules/apimapper/graph.js.map +1 -1
- package/dist/modules/apimapper/index.js +2 -0
- package/dist/modules/apimapper/index.js.map +1 -1
- package/dist/modules/apimapper/library.js +425 -83
- package/dist/modules/apimapper/library.js.map +1 -1
- package/dist/modules/apimapper/license.js +12 -36
- package/dist/modules/apimapper/license.js.map +1 -1
- package/dist/modules/apimapper/local-sources.js +20 -34
- package/dist/modules/apimapper/local-sources.js.map +1 -1
- package/dist/modules/apimapper/misc.js +13 -27
- package/dist/modules/apimapper/misc.js.map +1 -1
- package/dist/modules/apimapper/onboarding.d.ts +30 -1
- package/dist/modules/apimapper/onboarding.js +114 -19
- package/dist/modules/apimapper/onboarding.js.map +1 -1
- package/dist/modules/apimapper/schema.js +9 -18
- package/dist/modules/apimapper/schema.js.map +1 -1
- package/dist/modules/apimapper/settings.js +49 -52
- package/dist/modules/apimapper/settings.js.map +1 -1
- package/dist/modules/apimapper/sites-tools.d.ts +29 -0
- package/dist/modules/apimapper/sites-tools.js +165 -0
- package/dist/modules/apimapper/sites-tools.js.map +1 -0
- package/dist/modules/apimapper/tool-result.d.ts +46 -0
- package/dist/modules/apimapper/tool-result.js +63 -0
- package/dist/modules/apimapper/tool-result.js.map +1 -0
- package/dist/modules/apimapper/toolslist-size.d.ts +11 -10
- package/dist/modules/apimapper/toolslist-size.js +16 -14
- package/dist/modules/apimapper/toolslist-size.js.map +1 -1
- package/dist/modules/apimapper/types.d.ts +21 -0
- package/dist/modules/apimapper/types.js.map +1 -1
- package/dist/modules/apimapper/whitelist-drift.d.ts +85 -0
- package/dist/modules/apimapper/whitelist-drift.js +360 -0
- package/dist/modules/apimapper/whitelist-drift.js.map +1 -0
- package/dist/modules/apimapper/workflows.js +82 -27
- package/dist/modules/apimapper/workflows.js.map +1 -1
- package/dist/modules/apimapper/yootheme-binding.d.ts +35 -0
- package/dist/modules/apimapper/yootheme-binding.js +186 -0
- package/dist/modules/apimapper/yootheme-binding.js.map +1 -0
- package/dist/platform/index.d.ts +56 -0
- package/dist/platform/index.js +151 -2
- package/dist/platform/index.js.map +1 -1
- package/dist/setup/detect-clients.d.ts +40 -1
- package/dist/setup/detect-clients.js +148 -1
- package/dist/setup/detect-clients.js.map +1 -1
- package/dist/setup/probe-handshake.js +40 -7
- package/dist/setup/probe-handshake.js.map +1 -1
- package/dist/setup/remove-config.d.ts +8 -0
- package/dist/setup/remove-config.js +145 -0
- package/dist/setup/remove-config.js.map +1 -0
- package/dist/setup/uninstall.d.ts +34 -0
- package/dist/setup/uninstall.js +147 -0
- package/dist/setup/uninstall.js.map +1 -0
- package/dist/setup-cli.d.ts +7 -0
- package/dist/setup-cli.js +29 -1
- package/dist/setup-cli.js.map +1 -1
- package/dist/sites/loader.d.ts +41 -0
- package/dist/sites/loader.js +119 -0
- package/dist/sites/loader.js.map +1 -0
- package/dist/sites/schema.d.ts +69 -0
- package/dist/sites/schema.js +71 -0
- package/dist/sites/schema.js.map +1 -0
- package/dist/sites/secret-resolver.d.ts +47 -0
- package/dist/sites/secret-resolver.js +150 -0
- package/dist/sites/secret-resolver.js.map +1 -0
- package/dist/skill-instructions.d.ts +1 -1
- package/dist/skill-instructions.js +5 -0
- package/dist/skill-instructions.js.map +1 -1
- package/dist/transports/stdio.js +4 -4
- package/dist/transports/stdio.js.map +1 -1
- package/dist/uninstall-skill.d.ts +27 -0
- package/dist/uninstall-skill.js +89 -0
- package/dist/uninstall-skill.js.map +1 -0
- package/docs/architecture.md +21 -21
- package/docs/customgraph-internal-migration.md +4 -4
- package/docs/security.md +2 -21
- package/docs/tools.md +40 -12
- package/manifest.json +77 -79
- package/package.json +68 -65
- package/skills/apimapper/SKILL.md +53 -7
- package/skills/apimapper/reference/conditional-style-multi-items.md +114 -0
- package/skills/apimapper/reference/jmespath-pitfalls.md +108 -0
- package/skills/apimapper/reference/joomla.md +1 -1
- package/skills/apimapper/reference/library-template-discovery.md +65 -0
- package/skills/apimapper/reference/merge-two-sources-on-key.md +99 -0
- package/skills/apimapper/reference/troubleshooting.md +20 -0
- package/skills/apimapper/reference/yootheme.md +1 -1
- package/dist/auth/oauth-provider.d.ts +0 -68
- package/dist/auth/oauth-provider.js +0 -232
- package/dist/auth/oauth-provider.js.map +0 -1
- package/dist/server-http.d.ts +0 -22
- package/dist/server-http.js +0 -159
- package/dist/server-http.js.map +0 -1
- package/dist/transports/http.d.ts +0 -29
- package/dist/transports/http.js +0 -267
- package/dist/transports/http.js.map +0 -1
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// src/setup/uninstall.ts — interactive uninstall orchestration.
|
|
2
|
+
//
|
|
3
|
+
// runUninstall() is the reverse of runWizard(): it detects which AI clients
|
|
4
|
+
// still carry one of OUR MCP server entries (+ whether the skill is
|
|
5
|
+
// installed), lets the user pick what to remove via a clack multiselect
|
|
6
|
+
// (ALL pre-checked = complete uninstall) plus a skill-removal toggle, then
|
|
7
|
+
// atomically removes the matched entries + (optionally) the skill.
|
|
8
|
+
//
|
|
9
|
+
// The deps bag mirrors WizardDeps so unit tests drive a deterministic
|
|
10
|
+
// detect/select/remove sequence without touching real disk or prompts.
|
|
11
|
+
import { intro, outro, multiselect, confirm, cancel, isCancel, note } from "@clack/prompts";
|
|
12
|
+
import { detectInstalledClients as defaultDetectInstalledClients, } from "./detect-clients.js";
|
|
13
|
+
import { removeJsonConfig as defaultRemoveJsonConfig, removeTomlConfig as defaultRemoveTomlConfig, } from "./remove-config.js";
|
|
14
|
+
import { uninstallSkill as defaultUninstallSkill, isSkillInstalled as defaultIsSkillInstalled, } from "../uninstall-skill.js";
|
|
15
|
+
// ── default @clack/prompts driver ─────────────────────────────────────────
|
|
16
|
+
async function defaultPromptDriver(input) {
|
|
17
|
+
intro("🧹 API Mapper MCP uninstall");
|
|
18
|
+
if (input.installed.length > 0) {
|
|
19
|
+
note(input.installed
|
|
20
|
+
.map((c) => `${c.label}: ${c.matchedKeys.join(", ")} (${c.configPath})`)
|
|
21
|
+
.join("\n"), "Found these API Mapper MCP entries");
|
|
22
|
+
}
|
|
23
|
+
let selectedClientIds = [];
|
|
24
|
+
if (input.installed.length > 0) {
|
|
25
|
+
const clientAns = await multiselect({
|
|
26
|
+
message: "Which AI clients to remove the API Mapper MCP entry from?",
|
|
27
|
+
options: input.installed.map((c) => ({
|
|
28
|
+
value: c.id,
|
|
29
|
+
label: `${c.label} (${c.configPath})`,
|
|
30
|
+
})),
|
|
31
|
+
// ALL pre-selected = complete uninstall by default.
|
|
32
|
+
initialValues: input.installed.map((c) => c.id),
|
|
33
|
+
required: false,
|
|
34
|
+
});
|
|
35
|
+
if (isCancel(clientAns)) {
|
|
36
|
+
cancel("Uninstall cancelled. Nothing was removed.");
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
selectedClientIds = clientAns;
|
|
40
|
+
}
|
|
41
|
+
let removeSkill = false;
|
|
42
|
+
if (input.skillInstalled) {
|
|
43
|
+
const skillAns = await confirm({
|
|
44
|
+
message: "Also remove the installed skill (~/.claude/skills/apimapper/) + the AGENTS.md marker block?",
|
|
45
|
+
initialValue: true,
|
|
46
|
+
});
|
|
47
|
+
if (isCancel(skillAns)) {
|
|
48
|
+
cancel("Uninstall cancelled. Nothing was removed.");
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
removeSkill = skillAns;
|
|
52
|
+
}
|
|
53
|
+
if (!input.skipConfirm &&
|
|
54
|
+
(selectedClientIds.length > 0 || removeSkill)) {
|
|
55
|
+
const proceed = await confirm({
|
|
56
|
+
message: `Remove from ${selectedClientIds.length} client(s)${removeSkill ? " + the skill" : ""}?`,
|
|
57
|
+
initialValue: true,
|
|
58
|
+
});
|
|
59
|
+
if (isCancel(proceed) || proceed === false) {
|
|
60
|
+
cancel("Uninstall cancelled. Nothing was removed.");
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return { selectedClientIds, removeSkill };
|
|
65
|
+
}
|
|
66
|
+
const DEFAULT_DEPS = {
|
|
67
|
+
detectInstalledClients: () => defaultDetectInstalledClients(),
|
|
68
|
+
skillIsInstalled: () => defaultIsSkillInstalled(),
|
|
69
|
+
removeJsonConfig: (p, k) => defaultRemoveJsonConfig(p, k),
|
|
70
|
+
removeTomlConfig: (p, k) => defaultRemoveTomlConfig(p, k),
|
|
71
|
+
uninstallSkill: () => defaultUninstallSkill(),
|
|
72
|
+
prompt: defaultPromptDriver,
|
|
73
|
+
};
|
|
74
|
+
// ── orchestration ──────────────────────────────────────────────────────────
|
|
75
|
+
export async function runUninstall(options = {}, deps = DEFAULT_DEPS) {
|
|
76
|
+
const log = deps.log ?? ((line) => process.stderr.write(`${line}\n`));
|
|
77
|
+
const installed = await deps.detectInstalledClients();
|
|
78
|
+
const skillInstalled = deps.skillIsInstalled();
|
|
79
|
+
if (installed.length === 0 && !skillInstalled) {
|
|
80
|
+
log("Nothing to uninstall. No API Mapper MCP entries or skill found.");
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
83
|
+
// Decide the selection: --all bypasses the prompt entirely.
|
|
84
|
+
let selection;
|
|
85
|
+
if (options.all) {
|
|
86
|
+
selection = {
|
|
87
|
+
selectedClientIds: installed.map((c) => c.id),
|
|
88
|
+
removeSkill: skillInstalled,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
selection = await deps.prompt({
|
|
93
|
+
installed,
|
|
94
|
+
skillInstalled,
|
|
95
|
+
skipConfirm: Boolean(options.yes),
|
|
96
|
+
});
|
|
97
|
+
if (!selection)
|
|
98
|
+
return 130; // user cancelled
|
|
99
|
+
}
|
|
100
|
+
const selectedSet = new Set(selection.selectedClientIds);
|
|
101
|
+
let anyRemoved = false;
|
|
102
|
+
for (const client of installed) {
|
|
103
|
+
if (!selectedSet.has(client.id))
|
|
104
|
+
continue;
|
|
105
|
+
try {
|
|
106
|
+
const remover = client.format === "toml" ? deps.removeTomlConfig : deps.removeJsonConfig;
|
|
107
|
+
const res = await remover(client.configPath, client.matchedKeys);
|
|
108
|
+
if (res.removed) {
|
|
109
|
+
anyRemoved = true;
|
|
110
|
+
log(`✓ ${client.label}: removed ${res.removedKeys.join(", ")} from ${client.configPath}`);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
log(`! ${client.label}: no matching entry found (already clean).`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
log(`✗ ${client.label}: removal failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
let skillRemovedLine = "skill: kept";
|
|
121
|
+
if (selection.removeSkill && skillInstalled) {
|
|
122
|
+
try {
|
|
123
|
+
const res = await deps.uninstallSkill();
|
|
124
|
+
anyRemoved = anyRemoved || res.skillRemoved || res.markerRemoved;
|
|
125
|
+
skillRemovedLine = res.skillRemoved
|
|
126
|
+
? "skill: removed (~/.claude/skills/apimapper/)"
|
|
127
|
+
: res.markerRemoved
|
|
128
|
+
? "skill: marker removed (dir was already gone)"
|
|
129
|
+
: "skill: nothing to remove";
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
skillRemovedLine = `skill: removal failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
log(skillRemovedLine);
|
|
136
|
+
const summary = anyRemoved
|
|
137
|
+
? "✅ Uninstall complete. Restart your AI client to drop the server."
|
|
138
|
+
: "Nothing was removed (all selected entries were already clean).";
|
|
139
|
+
// Always log the summary (scripts / CI / tests read the log sink). In the
|
|
140
|
+
// interactive path, also render the clack outro chrome for a polished TTY
|
|
141
|
+
// close — but never in `--all` (non-interactive) mode.
|
|
142
|
+
log(summary);
|
|
143
|
+
if (!options.all)
|
|
144
|
+
outro(summary);
|
|
145
|
+
return 0;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/setup/uninstall.ts"],"names":[],"mappings":"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"}
|
package/dist/setup-cli.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { type TokenPayload } from "./auth/token.js";
|
|
|
4
4
|
import { type DetectedClient } from "./setup/detect-clients.js";
|
|
5
5
|
import { type McpEntry, type WriteConfigResult, type WriteConfigOptions } from "./setup/write-config.js";
|
|
6
6
|
import { type ProbeOptions, type ProbeResult } from "./setup/probe-handshake.js";
|
|
7
|
+
import { type UninstallOptions } from "./setup/uninstall.js";
|
|
7
8
|
export interface IdentityResponse {
|
|
8
9
|
platform: "wordpress" | "joomla" | "unknown";
|
|
9
10
|
siteurl: string;
|
|
@@ -43,6 +44,7 @@ export interface WizardDeps {
|
|
|
43
44
|
interface RunCliDeps {
|
|
44
45
|
installSkill: typeof defaultInstallSkill;
|
|
45
46
|
runWizard: () => Promise<number>;
|
|
47
|
+
runUninstall: (options: UninstallOptions) => Promise<number>;
|
|
46
48
|
}
|
|
47
49
|
export declare function inferDistTag(token: string, options?: {
|
|
48
50
|
override?: string;
|
|
@@ -98,5 +100,10 @@ export declare function isAllHttp404(errors: unknown[]): boolean;
|
|
|
98
100
|
*/
|
|
99
101
|
export declare function probeIdentity(siteUrl: string): Promise<IdentityResponse>;
|
|
100
102
|
export declare function runWizard(deps?: WizardDeps): Promise<number>;
|
|
103
|
+
/**
|
|
104
|
+
* Parse the `uninstall` flag tail. Recognises `--all`, `--yes`, and `-y`.
|
|
105
|
+
* Unknown flags are ignored (forward-compatible). Order-independent.
|
|
106
|
+
*/
|
|
107
|
+
export declare function parseUninstallFlags(args: string[]): UninstallOptions;
|
|
101
108
|
export declare function runCli(argv: string[], deps?: Partial<RunCliDeps>): Promise<number>;
|
|
102
109
|
export {};
|
package/dist/setup-cli.js
CHANGED
|
@@ -19,12 +19,18 @@ import { decodeToken } from "./auth/token.js";
|
|
|
19
19
|
import { detectClients as defaultDetectClients, } from "./setup/detect-clients.js";
|
|
20
20
|
import { writeJsonConfig as defaultWriteJsonConfig, writeTomlConfig as defaultWriteTomlConfig, } from "./setup/write-config.js";
|
|
21
21
|
import { probeHandshake as defaultProbeHandshake, rollbackAll, } from "./setup/probe-handshake.js";
|
|
22
|
+
import { runUninstall as defaultRunUninstall, } from "./setup/uninstall.js";
|
|
22
23
|
const HELP_TEXT = `Usage: apimapper-mcp <command>
|
|
23
24
|
|
|
24
25
|
Commands:
|
|
25
26
|
setup Interactive first-run wizard (default if no command)
|
|
26
27
|
install-skill Copy the bundled apimapper skill to ~/.claude/skills/
|
|
27
28
|
and register it in ~/AGENTS.md.
|
|
29
|
+
uninstall Interactive removal (reverse of setup): pick which AI
|
|
30
|
+
clients to remove the API Mapper MCP entry from, plus the
|
|
31
|
+
installed skill. Aliases: remove.
|
|
32
|
+
Flags: --all (remove from every detected client + skill,
|
|
33
|
+
no prompts), --yes/-y (skip the final confirm).
|
|
28
34
|
help Show this message.
|
|
29
35
|
`;
|
|
30
36
|
/**
|
|
@@ -379,15 +385,37 @@ export async function runWizard(deps = DEFAULT_DEPS) {
|
|
|
379
385
|
return 0;
|
|
380
386
|
}
|
|
381
387
|
// ── CLI dispatcher ──────────────────────────────────────────────────────
|
|
388
|
+
/**
|
|
389
|
+
* Parse the `uninstall` flag tail. Recognises `--all`, `--yes`, and `-y`.
|
|
390
|
+
* Unknown flags are ignored (forward-compatible). Order-independent.
|
|
391
|
+
*/
|
|
392
|
+
export function parseUninstallFlags(args) {
|
|
393
|
+
return {
|
|
394
|
+
all: args.includes("--all"),
|
|
395
|
+
yes: args.includes("--yes") || args.includes("-y"),
|
|
396
|
+
};
|
|
397
|
+
}
|
|
382
398
|
export async function runCli(argv, deps) {
|
|
383
399
|
const installSkill = deps?.installSkill ?? defaultInstallSkill;
|
|
384
400
|
const wizard = deps?.runWizard ?? (() => runWizard());
|
|
385
|
-
const
|
|
401
|
+
const uninstall = deps?.runUninstall ?? ((o) => defaultRunUninstall(o));
|
|
402
|
+
const [subcommand, ...rest] = argv;
|
|
386
403
|
// Default subcommand (no args, or `setup`) runs the wizard.
|
|
387
404
|
if (!subcommand || subcommand === "setup") {
|
|
388
405
|
return wizard();
|
|
389
406
|
}
|
|
390
407
|
switch (subcommand) {
|
|
408
|
+
case "uninstall":
|
|
409
|
+
case "remove": {
|
|
410
|
+
try {
|
|
411
|
+
return await uninstall(parseUninstallFlags(rest));
|
|
412
|
+
}
|
|
413
|
+
catch (err) {
|
|
414
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
415
|
+
console.error(`apimapper-mcp: uninstall failed: ${msg}`);
|
|
416
|
+
return 2;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
391
419
|
case "install-skill":
|
|
392
420
|
case "install": {
|
|
393
421
|
try {
|
package/dist/setup-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-cli.js","sourceRoot":"","sources":["../src/setup-cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup-cli.js","sourceRoot":"","sources":["../src/setup-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type SiteEntryT, type SitesFileT } from "./schema.js";
|
|
2
|
+
/** Base class for any sites-file IO / parse / validation failure. */
|
|
3
|
+
export declare class SitesFileError extends Error {
|
|
4
|
+
readonly cause?: unknown | undefined;
|
|
5
|
+
constructor(message: string, cause?: unknown | undefined);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Read-only registry around a parsed, non-empty sites file. Provides O(1)-ish
|
|
9
|
+
* lookups for the active-site resolution in client.ts. Never mutates the input.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SitesRegistry {
|
|
12
|
+
private readonly file;
|
|
13
|
+
constructor(file: SitesFileT);
|
|
14
|
+
/** Entries in insertion order (stable for list-tool UX). */
|
|
15
|
+
list(): readonly SiteEntryT[];
|
|
16
|
+
/** Site_id list in insertion order. */
|
|
17
|
+
listIds(): readonly string[];
|
|
18
|
+
/** Raw entry for a site_id, or null when unknown. */
|
|
19
|
+
get(siteId: string): SiteEntryT | null;
|
|
20
|
+
/** True when the registry contains the given site_id. */
|
|
21
|
+
has(siteId: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* The default site entry. Resolution order:
|
|
24
|
+
* 1. `default_site_id` (when it points at an existing entry).
|
|
25
|
+
* 2. The lone `is_default:true` entry (schema guarantees at most one).
|
|
26
|
+
* 3. The first entry (the file is guaranteed non-empty by the loader).
|
|
27
|
+
*/
|
|
28
|
+
getDefault(): SiteEntryT;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Load the sites file at `path` and return a {@link SitesRegistry}, or `null`
|
|
32
|
+
* when there is no usable multi-site config (so the caller falls through to the
|
|
33
|
+
* env / keychain single-site path).
|
|
34
|
+
*
|
|
35
|
+
* - `path` unset / empty / whitespace → null
|
|
36
|
+
* - file does not exist → null
|
|
37
|
+
* - file parses but has zero sites → null
|
|
38
|
+
* - malformed JSON / schema-invalid /
|
|
39
|
+
* unknown schema_version → throws {@link SitesFileError}
|
|
40
|
+
*/
|
|
41
|
+
export declare function loadSitesRegistry(path: string | undefined): SitesRegistry | null;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// src/sites/loader.ts — Phase 3.
|
|
2
|
+
//
|
|
3
|
+
// Load + validate the on-disk sites file pointed at by APIMAPPER_SITES_FILE and
|
|
4
|
+
// wrap it in a small read-only registry. This is the multi-site "agency / .dxt
|
|
5
|
+
// one-click" path: a plaintext JSON file listing several WordPress/Joomla sites,
|
|
6
|
+
// each with its own URL + token + platform. The keychain ProfileStore path
|
|
7
|
+
// (src/auth/profiles.ts) remains the secure wizard default for single-machine
|
|
8
|
+
// setups — the two mechanisms coexist; the sites-file takes priority in
|
|
9
|
+
// client.ts ONLY when APIMAPPER_SITES_FILE is set and the file is non-empty.
|
|
10
|
+
//
|
|
11
|
+
// Read-only by design: this loader never writes the sites file. Editing is an
|
|
12
|
+
// operator / wizard concern, kept out of the hot request path.
|
|
13
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
14
|
+
import { SitesFile } from "./schema.js";
|
|
15
|
+
/** Base class for any sites-file IO / parse / validation failure. */
|
|
16
|
+
export class SitesFileError extends Error {
|
|
17
|
+
cause;
|
|
18
|
+
constructor(message, cause) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.cause = cause;
|
|
21
|
+
this.name = "SitesFileError";
|
|
22
|
+
Object.setPrototypeOf(this, SitesFileError.prototype);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Read-only registry around a parsed, non-empty sites file. Provides O(1)-ish
|
|
27
|
+
* lookups for the active-site resolution in client.ts. Never mutates the input.
|
|
28
|
+
*/
|
|
29
|
+
export class SitesRegistry {
|
|
30
|
+
file;
|
|
31
|
+
constructor(file) {
|
|
32
|
+
this.file = file;
|
|
33
|
+
}
|
|
34
|
+
/** Entries in insertion order (stable for list-tool UX). */
|
|
35
|
+
list() {
|
|
36
|
+
return this.file.sites;
|
|
37
|
+
}
|
|
38
|
+
/** Site_id list in insertion order. */
|
|
39
|
+
listIds() {
|
|
40
|
+
return this.file.sites.map((s) => s.site_id);
|
|
41
|
+
}
|
|
42
|
+
/** Raw entry for a site_id, or null when unknown. */
|
|
43
|
+
get(siteId) {
|
|
44
|
+
return this.file.sites.find((s) => s.site_id === siteId) ?? null;
|
|
45
|
+
}
|
|
46
|
+
/** True when the registry contains the given site_id. */
|
|
47
|
+
has(siteId) {
|
|
48
|
+
return this.file.sites.some((s) => s.site_id === siteId);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The default site entry. Resolution order:
|
|
52
|
+
* 1. `default_site_id` (when it points at an existing entry).
|
|
53
|
+
* 2. The lone `is_default:true` entry (schema guarantees at most one).
|
|
54
|
+
* 3. The first entry (the file is guaranteed non-empty by the loader).
|
|
55
|
+
*/
|
|
56
|
+
getDefault() {
|
|
57
|
+
const explicit = this.file.default_site_id;
|
|
58
|
+
if (explicit !== null) {
|
|
59
|
+
const hit = this.get(explicit);
|
|
60
|
+
if (hit)
|
|
61
|
+
return hit;
|
|
62
|
+
}
|
|
63
|
+
const flagged = this.file.sites.find((s) => s.is_default);
|
|
64
|
+
if (flagged)
|
|
65
|
+
return flagged;
|
|
66
|
+
// Loader guarantees sites.length > 0 (empty → null, never a registry).
|
|
67
|
+
return this.file.sites[0];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Load the sites file at `path` and return a {@link SitesRegistry}, or `null`
|
|
72
|
+
* when there is no usable multi-site config (so the caller falls through to the
|
|
73
|
+
* env / keychain single-site path).
|
|
74
|
+
*
|
|
75
|
+
* - `path` unset / empty / whitespace → null
|
|
76
|
+
* - file does not exist → null
|
|
77
|
+
* - file parses but has zero sites → null
|
|
78
|
+
* - malformed JSON / schema-invalid /
|
|
79
|
+
* unknown schema_version → throws {@link SitesFileError}
|
|
80
|
+
*/
|
|
81
|
+
export function loadSitesRegistry(path) {
|
|
82
|
+
const trimmed = (path ?? "").trim();
|
|
83
|
+
if (trimmed.length === 0)
|
|
84
|
+
return null;
|
|
85
|
+
if (!existsSync(trimmed))
|
|
86
|
+
return null;
|
|
87
|
+
let raw;
|
|
88
|
+
try {
|
|
89
|
+
raw = readFileSync(trimmed, "utf8");
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
throw new SitesFileError(`Failed to read sites file at ${trimmed}`, e);
|
|
93
|
+
}
|
|
94
|
+
let parsed;
|
|
95
|
+
try {
|
|
96
|
+
parsed = JSON.parse(raw);
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
throw new SitesFileError(`Sites file at ${trimmed} is not valid JSON`, e);
|
|
100
|
+
}
|
|
101
|
+
// Explicit schema-version gate: reject a known-unknown version with a clear
|
|
102
|
+
// message rather than letting the Zod literal check surface a cryptic issue.
|
|
103
|
+
if (typeof parsed === "object" &&
|
|
104
|
+
parsed !== null &&
|
|
105
|
+
"schema_version" in parsed &&
|
|
106
|
+
parsed.schema_version !== 1) {
|
|
107
|
+
throw new SitesFileError(`Unsupported sites-file schema_version: ${String(parsed.schema_version)}. This build supports schema_version: 1.`);
|
|
108
|
+
}
|
|
109
|
+
const result = SitesFile.safeParse(parsed);
|
|
110
|
+
if (!result.success) {
|
|
111
|
+
throw new SitesFileError(`Sites file at ${trimmed} failed schema validation: ` +
|
|
112
|
+
result.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; "));
|
|
113
|
+
}
|
|
114
|
+
// Empty sites list → no usable multi-site config; fall through to env.
|
|
115
|
+
if (result.data.sites.length === 0)
|
|
116
|
+
return null;
|
|
117
|
+
return new SitesRegistry(result.data);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/sites/loader.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,2EAA2E;AAC3E,8EAA8E;AAC9E,wEAAwE;AACxE,6EAA6E;AAC7E,EAAE;AACF,8EAA8E;AAC9E,+DAA+D;AAE/D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAoC,MAAM,aAAa,CAAC;AAE1E,qEAAqE;AACrE,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGrB;IAFlB,YACE,OAAe,EACC,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,4DAA4D;IAC5D,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,uCAAuC;IACvC,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,qDAAqD;IACrD,GAAG,CAAC,MAAc;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;IACnE,CAAC;IAED,yDAAyD;IACzD,GAAG,CAAC,MAAc;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACH,UAAU;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QAC3C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;QACtB,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,uEAAuE;QACvE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAwB;IACxD,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,cAAc,CAAC,gCAAgC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,cAAc,CAAC,iBAAiB,OAAO,oBAAoB,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,IACE,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,gBAAgB,IAAI,MAAM;QACzB,MAAsC,CAAC,cAAc,KAAK,CAAC,EAC5D,CAAC;QACD,MAAM,IAAI,cAAc,CACtB,0CAA0C,MAAM,CAC7C,MAAsC,CAAC,cAAc,CACvD,0CAA0C,CAC5C,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,cAAc,CACtB,iBAAiB,OAAO,6BAA6B;YACnD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACjF,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Allowed character set for a `site_id`. Letters, digits, underscore, dash —
|
|
4
|
+
* no spaces, no path separators, no shell metacharacters. Filename-safe,
|
|
5
|
+
* URL-path-safe, log-safe.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SITE_ID_REGEX: RegExp;
|
|
8
|
+
/**
|
|
9
|
+
* 1Password Secret Reference shape (`op://<vault>/<item>/<field>` and deeper).
|
|
10
|
+
* Letters, digits, underscore, slash, dot, dash only. The negative lookahead
|
|
11
|
+
* `(?!.*\/\.\.\/)` rejects any ref containing a `/../` traversal segment while
|
|
12
|
+
* still allowing legitimate `.` in vault/item names (e.g. `op://team.acme/...`).
|
|
13
|
+
* Re-validated at the secret-resolver call site as defence-in-depth before the
|
|
14
|
+
* ref ever reaches a subprocess argv.
|
|
15
|
+
*/
|
|
16
|
+
export declare const OP_REF_REGEX: RegExp;
|
|
17
|
+
/**
|
|
18
|
+
* API Mapper MCP-key shape (canonical — mirrors core `KeyService.php`):
|
|
19
|
+
* `amk_(live|test)_<payloadB64url>.<signatureB64url>` — the payload and the
|
|
20
|
+
* signature are base64url (`A-Za-z0-9_-`) joined by exactly ONE dot. The earlier
|
|
21
|
+
* pattern dropped the `.<sig>` arm, so it rejected every REAL token (which always
|
|
22
|
+
* carries the dot) — a sites.json with a valid key failed schema validation.
|
|
23
|
+
* Re-validated here so a hand-edited sites.json can never inject a token shape the
|
|
24
|
+
* server would reject anyway.
|
|
25
|
+
*/
|
|
26
|
+
export declare const BEARER_REGEX: RegExp;
|
|
27
|
+
/**
|
|
28
|
+
* One site entry. Carries identity (`site_id`), reachability (`url` +
|
|
29
|
+
* `platform`), credential (exactly one of `bearer`/`bearer_ref`), and
|
|
30
|
+
* presentation metadata (`is_default`, `label`, `added_at`).
|
|
31
|
+
*/
|
|
32
|
+
export declare const SiteEntry: z.ZodObject<{
|
|
33
|
+
site_id: z.ZodString;
|
|
34
|
+
url: z.ZodString;
|
|
35
|
+
platform: z.ZodDefault<z.ZodEnum<{
|
|
36
|
+
wordpress: "wordpress";
|
|
37
|
+
joomla: "joomla";
|
|
38
|
+
auto: "auto";
|
|
39
|
+
}>>;
|
|
40
|
+
bearer: z.ZodOptional<z.ZodString>;
|
|
41
|
+
bearer_ref: z.ZodOptional<z.ZodString>;
|
|
42
|
+
is_default: z.ZodDefault<z.ZodBoolean>;
|
|
43
|
+
label: z.ZodOptional<z.ZodString>;
|
|
44
|
+
added_at: z.ZodOptional<z.ZodString>;
|
|
45
|
+
}, z.core.$strip>;
|
|
46
|
+
/**
|
|
47
|
+
* The on-disk sites-file root. `schema_version` is a literal `1` for now;
|
|
48
|
+
* future schema migrations bump it AND add a migration step in the loader.
|
|
49
|
+
*/
|
|
50
|
+
export declare const SitesFile: z.ZodObject<{
|
|
51
|
+
schema_version: z.ZodLiteral<1>;
|
|
52
|
+
default_site_id: z.ZodNullable<z.ZodString>;
|
|
53
|
+
sites: z.ZodArray<z.ZodObject<{
|
|
54
|
+
site_id: z.ZodString;
|
|
55
|
+
url: z.ZodString;
|
|
56
|
+
platform: z.ZodDefault<z.ZodEnum<{
|
|
57
|
+
wordpress: "wordpress";
|
|
58
|
+
joomla: "joomla";
|
|
59
|
+
auto: "auto";
|
|
60
|
+
}>>;
|
|
61
|
+
bearer: z.ZodOptional<z.ZodString>;
|
|
62
|
+
bearer_ref: z.ZodOptional<z.ZodString>;
|
|
63
|
+
is_default: z.ZodDefault<z.ZodBoolean>;
|
|
64
|
+
label: z.ZodOptional<z.ZodString>;
|
|
65
|
+
added_at: z.ZodOptional<z.ZodString>;
|
|
66
|
+
}, z.core.$strip>>;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
export type SiteEntryT = z.infer<typeof SiteEntry>;
|
|
69
|
+
export type SitesFileT = z.infer<typeof SitesFile>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// src/sites/schema.ts — Zod schemas for the on-disk API Mapper sites file.
|
|
2
|
+
//
|
|
3
|
+
// Phase 3 (2026-06-03): the multi-site sites-file mechanism. Mirrors the YT
|
|
4
|
+
// Builder reference shape (yt-builder-mcp/packages/mcp/src/sites/schema.ts) so
|
|
5
|
+
// both MCP servers expose the SAME multi-site concept, adapted for API Mapper:
|
|
6
|
+
// - token shape is `amk_(live|test)_…` (API Mapper MCP key), not `ytb_…`.
|
|
7
|
+
// - per-site `platform` is 'wordpress' | 'joomla' | 'auto' (default 'auto').
|
|
8
|
+
//
|
|
9
|
+
// The on-disk format is JSON. Each entry is one connected WordPress/Joomla site
|
|
10
|
+
// running API Mapper. A site MUST carry either an inline `bearer` (plain text)
|
|
11
|
+
// OR an `op://` 1Password Secret Reference (`bearer_ref`), never both — enforced
|
|
12
|
+
// via the SiteEntry refine().
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
/**
|
|
15
|
+
* Allowed character set for a `site_id`. Letters, digits, underscore, dash —
|
|
16
|
+
* no spaces, no path separators, no shell metacharacters. Filename-safe,
|
|
17
|
+
* URL-path-safe, log-safe.
|
|
18
|
+
*/
|
|
19
|
+
export const SITE_ID_REGEX = /^[a-zA-Z0-9_-]+$/;
|
|
20
|
+
/**
|
|
21
|
+
* 1Password Secret Reference shape (`op://<vault>/<item>/<field>` and deeper).
|
|
22
|
+
* Letters, digits, underscore, slash, dot, dash only. The negative lookahead
|
|
23
|
+
* `(?!.*\/\.\.\/)` rejects any ref containing a `/../` traversal segment while
|
|
24
|
+
* still allowing legitimate `.` in vault/item names (e.g. `op://team.acme/...`).
|
|
25
|
+
* Re-validated at the secret-resolver call site as defence-in-depth before the
|
|
26
|
+
* ref ever reaches a subprocess argv.
|
|
27
|
+
*/
|
|
28
|
+
export const OP_REF_REGEX = /^op:\/\/(?!.*\/\.\.\/)[A-Za-z0-9_/.-]+$/;
|
|
29
|
+
/**
|
|
30
|
+
* API Mapper MCP-key shape (canonical — mirrors core `KeyService.php`):
|
|
31
|
+
* `amk_(live|test)_<payloadB64url>.<signatureB64url>` — the payload and the
|
|
32
|
+
* signature are base64url (`A-Za-z0-9_-`) joined by exactly ONE dot. The earlier
|
|
33
|
+
* pattern dropped the `.<sig>` arm, so it rejected every REAL token (which always
|
|
34
|
+
* carries the dot) — a sites.json with a valid key failed schema validation.
|
|
35
|
+
* Re-validated here so a hand-edited sites.json can never inject a token shape the
|
|
36
|
+
* server would reject anyway.
|
|
37
|
+
*/
|
|
38
|
+
export const BEARER_REGEX = /^amk_(live|test)_[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/;
|
|
39
|
+
/**
|
|
40
|
+
* One site entry. Carries identity (`site_id`), reachability (`url` +
|
|
41
|
+
* `platform`), credential (exactly one of `bearer`/`bearer_ref`), and
|
|
42
|
+
* presentation metadata (`is_default`, `label`, `added_at`).
|
|
43
|
+
*/
|
|
44
|
+
export const SiteEntry = z
|
|
45
|
+
.object({
|
|
46
|
+
site_id: z.string().min(1).max(64).regex(SITE_ID_REGEX),
|
|
47
|
+
url: z.string().url(),
|
|
48
|
+
platform: z.enum(["wordpress", "joomla", "auto"]).default("auto"),
|
|
49
|
+
bearer: z.string().regex(BEARER_REGEX).optional(),
|
|
50
|
+
bearer_ref: z.string().regex(OP_REF_REGEX).optional(),
|
|
51
|
+
is_default: z.boolean().default(false),
|
|
52
|
+
label: z.string().max(120).optional(),
|
|
53
|
+
added_at: z.string().datetime().optional(),
|
|
54
|
+
})
|
|
55
|
+
.refine((s) => (s.bearer !== undefined) !== (s.bearer_ref !== undefined), {
|
|
56
|
+
message: "Exactly one of bearer or bearer_ref must be set",
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* The on-disk sites-file root. `schema_version` is a literal `1` for now;
|
|
60
|
+
* future schema migrations bump it AND add a migration step in the loader.
|
|
61
|
+
*/
|
|
62
|
+
export const SitesFile = z
|
|
63
|
+
.object({
|
|
64
|
+
schema_version: z.literal(1),
|
|
65
|
+
default_site_id: z.string().regex(SITE_ID_REGEX).nullable(),
|
|
66
|
+
sites: z.array(SiteEntry),
|
|
67
|
+
})
|
|
68
|
+
.refine((f) => f.sites.filter((s) => s.is_default).length <= 1, {
|
|
69
|
+
message: "At most one site can have is_default:true",
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/sites/schema.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAC/E,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,8BAA8B;AAE9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,yCAAyC,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GACvB,kDAAkD,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;IACvD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACjE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;IACrD,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC3C,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,EAAE;IACxE,OAAO,EAAE,iDAAiD;CAC3D,CAAC,CAAC;AAEL;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;IAC3D,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;CAC1B,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;IAC9D,OAAO,EAAE,2CAA2C;CACrD,CAAC,CAAC"}
|