@wootsup/mcp 0.1.0-rc.9 → 0.1.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/README.md +7 -7
- package/dist/index.d.ts +19 -0
- package/dist/index.js +71 -5
- package/dist/index.js.map +1 -1
- package/dist/modules/apimapper/cache.d.ts +2 -2
- package/dist/modules/apimapper/cache.js +107 -25
- package/dist/modules/apimapper/cache.js.map +1 -1
- package/dist/modules/apimapper/client.d.ts +40 -0
- package/dist/modules/apimapper/client.js +82 -12
- package/dist/modules/apimapper/client.js.map +1 -1
- package/dist/modules/apimapper/connections-format.d.ts +51 -0
- package/dist/modules/apimapper/connections-format.js +261 -0
- package/dist/modules/apimapper/connections-format.js.map +1 -0
- package/dist/modules/apimapper/connections-trim.d.ts +82 -0
- package/dist/modules/apimapper/connections-trim.js +224 -0
- package/dist/modules/apimapper/connections-trim.js.map +1 -0
- package/dist/modules/apimapper/connections.d.ts +14 -2
- package/dist/modules/apimapper/connections.js +447 -143
- package/dist/modules/apimapper/connections.js.map +1 -1
- package/dist/modules/apimapper/credentials-format.d.ts +21 -0
- package/dist/modules/apimapper/credentials-format.js +145 -0
- package/dist/modules/apimapper/credentials-format.js.map +1 -0
- package/dist/modules/apimapper/credentials.d.ts +12 -2
- package/dist/modules/apimapper/credentials.js +253 -72
- package/dist/modules/apimapper/credentials.js.map +1 -1
- package/dist/modules/apimapper/diagnose.d.ts +54 -2
- package/dist/modules/apimapper/diagnose.js +193 -11
- package/dist/modules/apimapper/diagnose.js.map +1 -1
- package/dist/modules/apimapper/elicitation.d.ts +54 -0
- package/dist/modules/apimapper/elicitation.js +90 -0
- package/dist/modules/apimapper/elicitation.js.map +1 -0
- package/dist/modules/apimapper/flows-format.d.ts +50 -0
- package/dist/modules/apimapper/flows-format.js +318 -0
- package/dist/modules/apimapper/flows-format.js.map +1 -0
- package/dist/modules/apimapper/flows.d.ts +13 -2
- package/dist/modules/apimapper/flows.js +325 -118
- package/dist/modules/apimapper/flows.js.map +1 -1
- package/dist/modules/apimapper/gateway/advanced-tool.d.ts +9 -0
- package/dist/modules/apimapper/gateway/advanced-tool.js +214 -0
- package/dist/modules/apimapper/gateway/advanced-tool.js.map +1 -0
- package/dist/modules/apimapper/gateway/capturing-server.d.ts +81 -0
- package/dist/modules/apimapper/gateway/capturing-server.js +87 -0
- package/dist/modules/apimapper/gateway/capturing-server.js.map +1 -0
- package/dist/modules/apimapper/gateway/essentials.d.ts +4 -0
- package/dist/modules/apimapper/gateway/essentials.js +28 -0
- package/dist/modules/apimapper/gateway/essentials.js.map +1 -0
- package/dist/modules/apimapper/gateway/test-support.d.ts +17 -0
- package/dist/modules/apimapper/gateway/test-support.js +43 -0
- package/dist/modules/apimapper/gateway/test-support.js.map +1 -0
- package/dist/modules/apimapper/get-skill.d.ts +3 -3
- package/dist/modules/apimapper/get-skill.js +4 -2
- package/dist/modules/apimapper/get-skill.js.map +1 -1
- package/dist/modules/apimapper/graph-builder.js +1 -1
- package/dist/modules/apimapper/graph-builder.js.map +1 -1
- package/dist/modules/apimapper/graph.d.ts +2 -2
- package/dist/modules/apimapper/graph.js +165 -34
- package/dist/modules/apimapper/graph.js.map +1 -1
- package/dist/modules/apimapper/index.d.ts +17 -1
- package/dist/modules/apimapper/index.js +66 -17
- package/dist/modules/apimapper/index.js.map +1 -1
- package/dist/modules/apimapper/inspect.d.ts +3 -2
- package/dist/modules/apimapper/inspect.js +97 -13
- package/dist/modules/apimapper/inspect.js.map +1 -1
- package/dist/modules/apimapper/library.d.ts +2 -2
- package/dist/modules/apimapper/library.js +303 -60
- package/dist/modules/apimapper/library.js.map +1 -1
- package/dist/modules/apimapper/license-format.d.ts +22 -0
- package/dist/modules/apimapper/license-format.js +149 -0
- package/dist/modules/apimapper/license-format.js.map +1 -0
- package/dist/modules/apimapper/license.d.ts +16 -2
- package/dist/modules/apimapper/license.js +85 -37
- package/dist/modules/apimapper/license.js.map +1 -1
- package/dist/modules/apimapper/local-sources.d.ts +2 -2
- package/dist/modules/apimapper/local-sources.js +58 -30
- package/dist/modules/apimapper/local-sources.js.map +1 -1
- package/dist/modules/apimapper/misc.d.ts +30 -2
- package/dist/modules/apimapper/misc.js +129 -50
- package/dist/modules/apimapper/misc.js.map +1 -1
- package/dist/modules/apimapper/node-schema.d.ts +52 -0
- package/dist/modules/apimapper/node-schema.js +70 -2
- package/dist/modules/apimapper/node-schema.js.map +1 -1
- package/dist/modules/apimapper/normalizers.d.ts +1 -0
- package/dist/modules/apimapper/normalizers.js +51 -0
- package/dist/modules/apimapper/normalizers.js.map +1 -1
- package/dist/modules/apimapper/onboarding.d.ts +48 -2
- package/dist/modules/apimapper/onboarding.js +324 -17
- package/dist/modules/apimapper/onboarding.js.map +1 -1
- package/dist/modules/apimapper/read-cache.d.ts +31 -2
- package/dist/modules/apimapper/read-cache.js +20 -6
- package/dist/modules/apimapper/read-cache.js.map +1 -1
- package/dist/modules/apimapper/render/_shared.d.ts +24 -0
- package/dist/modules/apimapper/render/_shared.js +84 -0
- package/dist/modules/apimapper/render/_shared.js.map +1 -0
- package/dist/modules/apimapper/render/dag.d.ts +18 -0
- package/dist/modules/apimapper/render/dag.js +70 -0
- package/dist/modules/apimapper/render/dag.js.map +1 -0
- package/dist/modules/apimapper/render/index.d.ts +2 -0
- package/dist/modules/apimapper/render/index.js +112 -0
- package/dist/modules/apimapper/render/index.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/chart-bar.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/chart-bar.js +70 -0
- package/dist/modules/apimapper/render/renderers/chart-bar.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/chart-line.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/chart-line.js +71 -0
- package/dist/modules/apimapper/render/renderers/chart-line.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/diff.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/diff.js +154 -0
- package/dist/modules/apimapper/render/renderers/diff.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/flow-diagram.d.ts +1 -0
- package/dist/modules/apimapper/render/renderers/flow-diagram.js +180 -0
- package/dist/modules/apimapper/render/renderers/flow-diagram.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/json-tree.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/json-tree.js +87 -0
- package/dist/modules/apimapper/render/renderers/json-tree.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/schema-diagram.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/schema-diagram.js +83 -0
- package/dist/modules/apimapper/render/renderers/schema-diagram.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/table.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/table.js +75 -0
- package/dist/modules/apimapper/render/renderers/table.js.map +1 -0
- package/dist/modules/apimapper/render/schemas.d.ts +23 -0
- package/dist/modules/apimapper/render/schemas.js +56 -0
- package/dist/modules/apimapper/render/schemas.js.map +1 -0
- package/dist/modules/apimapper/render/secret-masking.d.ts +5 -0
- package/dist/modules/apimapper/render/secret-masking.js +51 -0
- package/dist/modules/apimapper/render/secret-masking.js.map +1 -0
- package/dist/modules/apimapper/render/sidecar.d.ts +21 -0
- package/dist/modules/apimapper/render/sidecar.js +66 -0
- package/dist/modules/apimapper/render/sidecar.js.map +1 -0
- package/dist/modules/apimapper/render/token-cap.d.ts +21 -0
- package/dist/modules/apimapper/render/token-cap.js +57 -0
- package/dist/modules/apimapper/render/token-cap.js.map +1 -0
- package/dist/modules/apimapper/schema.d.ts +2 -2
- package/dist/modules/apimapper/schema.js +100 -32
- package/dist/modules/apimapper/schema.js.map +1 -1
- package/dist/modules/apimapper/settings-format.d.ts +23 -0
- package/dist/modules/apimapper/settings-format.js +135 -0
- package/dist/modules/apimapper/settings-format.js.map +1 -0
- package/dist/modules/apimapper/settings.d.ts +2 -2
- package/dist/modules/apimapper/settings.js +101 -40
- package/dist/modules/apimapper/settings.js.map +1 -1
- package/dist/modules/apimapper/skill-resources.d.ts +2 -2
- package/dist/modules/apimapper/skill-resources.js.map +1 -1
- package/dist/modules/apimapper/token-baseline.harness.d.ts +91 -0
- package/dist/modules/apimapper/token-baseline.harness.js +291 -0
- package/dist/modules/apimapper/token-baseline.harness.js.map +1 -0
- package/dist/modules/apimapper/toolslist-size.d.ts +55 -0
- package/dist/modules/apimapper/toolslist-size.js +190 -0
- package/dist/modules/apimapper/toolslist-size.js.map +1 -0
- package/dist/modules/apimapper/types.d.ts +23 -8
- package/dist/modules/apimapper/types.js +26 -1
- package/dist/modules/apimapper/types.js.map +1 -1
- package/dist/modules/apimapper/use-profile.d.ts +21 -0
- package/dist/modules/apimapper/use-profile.js +56 -2
- package/dist/modules/apimapper/use-profile.js.map +1 -1
- package/dist/modules/apimapper/workflows.d.ts +2 -2
- package/dist/modules/apimapper/workflows.js +143 -16
- package/dist/modules/apimapper/workflows.js.map +1 -1
- package/dist/platform/index.js +44 -5
- package/dist/platform/index.js.map +1 -1
- package/dist/setup-cli.d.ts +53 -0
- package/dist/setup-cli.js +126 -4
- package/dist/setup-cli.js.map +1 -1
- package/docs/architecture.md +1 -1
- package/docs/tools.md +1 -1
- package/manifest.json +12 -3
- package/package.json +9 -4
- package/skills/apimapper/SKILL.md +1 -1
- package/skills/apimapper/reference/render.md +132 -0
- package/skills/apimapper/reference/troubleshooting.md +1 -1
- package/skills/apimapper/reference/yootheme.md +1 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// src/modules/apimapper/settings-format.ts — W3.1 structuredContent helpers
|
|
2
|
+
//
|
|
3
|
+
// rc.13 Welle 3 (2026-05-20) — extracted from settings.ts when the migration
|
|
4
|
+
// to the toolkit's structuredContent builders added the detail builders for
|
|
5
|
+
// settings_get / features_get and the table shape for health_warnings_list.
|
|
6
|
+
// The tool-registration module (settings.ts) keeps the lean surface; the
|
|
7
|
+
// column constants, detail builders and next-step strings live here —
|
|
8
|
+
// matching connections-format.ts / credentials-format.ts.
|
|
9
|
+
//
|
|
10
|
+
// - settings_get / features_get → detailResult (display="detail"): a flat
|
|
11
|
+
// scalar settings/feature dict renders as grouped key-value entries.
|
|
12
|
+
// - health_warnings_list → tableResult (display="data-table").
|
|
13
|
+
// - IA-10 (W3.9): every migrated tool carries actionable next-step guidance
|
|
14
|
+
// in the LLM-readable text (table footer / detail "Next steps" group).
|
|
15
|
+
import { detailResult, } from "@getimo/mcp-toolkit";
|
|
16
|
+
// ── health_warnings_list table shape ──────────────────────────────────
|
|
17
|
+
export const HEALTH_WARNINGS_COLUMNS = [
|
|
18
|
+
{ key: "credentialId", label: "CREDENTIAL_ID", width: 32 },
|
|
19
|
+
{ key: "type", label: "TYPE", width: 28 },
|
|
20
|
+
];
|
|
21
|
+
// IA-10: next-step guidance, kept in the table footer so it is VISIBLE in the
|
|
22
|
+
// LLM-readable text of the warning list.
|
|
23
|
+
export const HEALTH_WARNINGS_NEXT_STEPS = "Next: apimapper_health_warnings_dismiss({ id }) to dismiss a warning · " +
|
|
24
|
+
"apimapper_credential_get({ id }) to inspect the affected credential.";
|
|
25
|
+
/** health_warnings_list row map: warning item → table row. */
|
|
26
|
+
export function mapHealthWarningRow(w) {
|
|
27
|
+
return {
|
|
28
|
+
credentialId: w.credentialId ? String(w.credentialId) : "—",
|
|
29
|
+
type: w.type ? String(w.type) : "—",
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Coerce a scalar settings value into a detail entry string. */
|
|
33
|
+
function scalarStr(v) {
|
|
34
|
+
if (v === null || v === undefined)
|
|
35
|
+
return "—";
|
|
36
|
+
if (typeof v === "boolean")
|
|
37
|
+
return v ? "true" : "false";
|
|
38
|
+
return String(v);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build a structured detail view for settings_get.
|
|
42
|
+
*
|
|
43
|
+
* The settings dict is a flat scalar map (cache_ttl, debug_mode, log_level,
|
|
44
|
+
* …) — each key becomes a detail entry. The active license tier is the
|
|
45
|
+
* badge; the canonical SETTABLE_KEYS list + next-step calls go into an
|
|
46
|
+
* IA-10 "Next steps" group so the LLM reads the affordance in the text.
|
|
47
|
+
*/
|
|
48
|
+
export function buildSettingsDetail(tier, settings, settableKeys) {
|
|
49
|
+
const entries = Object.keys(settings).map((key) => ({
|
|
50
|
+
key,
|
|
51
|
+
label: key,
|
|
52
|
+
value: scalarStr(settings[key]),
|
|
53
|
+
format: typeof settings[key] === "boolean" ? "boolean" : "text",
|
|
54
|
+
}));
|
|
55
|
+
const groups = [];
|
|
56
|
+
groups.push({
|
|
57
|
+
label: "Settings",
|
|
58
|
+
entries: entries.length > 0
|
|
59
|
+
? entries
|
|
60
|
+
: [{ key: "_empty", label: "Settings", value: "no settings returned" }],
|
|
61
|
+
});
|
|
62
|
+
groups.push({
|
|
63
|
+
// IA-10 (W3.9): actionable next steps in a dedicated group.
|
|
64
|
+
label: "Next steps",
|
|
65
|
+
entries: [
|
|
66
|
+
{
|
|
67
|
+
key: "settable_keys",
|
|
68
|
+
label: "Settable keys",
|
|
69
|
+
value: settableKeys.join(", "),
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
key: "update",
|
|
73
|
+
label: "Update",
|
|
74
|
+
value: "apimapper_settings_update({ patch: { … } }) — only the settable keys above are honored",
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
});
|
|
78
|
+
return detailResult({
|
|
79
|
+
title: "API Mapper Settings",
|
|
80
|
+
subtitle: tier ? `License tier: ${tier}` : undefined,
|
|
81
|
+
badge: tier
|
|
82
|
+
? { text: `tier: ${tier}`, variant: "info" }
|
|
83
|
+
: { text: "settings", variant: "secondary" },
|
|
84
|
+
groups,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Build a structured detail view for features_get.
|
|
89
|
+
*
|
|
90
|
+
* The feature dict mixes booleans (jmespath: true) and numeric limits
|
|
91
|
+
* (max_connections: -1) — each key becomes a detail entry. The active tier
|
|
92
|
+
* is the badge; a single IA-10 "Next steps" group points at the license
|
|
93
|
+
* tools for upgrading a gated feature.
|
|
94
|
+
*/
|
|
95
|
+
export function buildFeaturesDetail(tier, features) {
|
|
96
|
+
const keys = Object.keys(features);
|
|
97
|
+
const entries = keys.map((key) => ({
|
|
98
|
+
key,
|
|
99
|
+
label: key,
|
|
100
|
+
value: scalarStr(features[key]),
|
|
101
|
+
format: typeof features[key] === "boolean" ? "boolean" : "text",
|
|
102
|
+
}));
|
|
103
|
+
const groups = [];
|
|
104
|
+
groups.push({
|
|
105
|
+
label: "Features",
|
|
106
|
+
entries: entries.length > 0
|
|
107
|
+
? entries
|
|
108
|
+
: [{ key: "_empty", label: "Features", value: "no features returned" }],
|
|
109
|
+
});
|
|
110
|
+
groups.push({
|
|
111
|
+
label: "Next steps",
|
|
112
|
+
entries: [
|
|
113
|
+
{
|
|
114
|
+
key: "feature_count",
|
|
115
|
+
label: "Feature count",
|
|
116
|
+
value: keys.length,
|
|
117
|
+
format: "text",
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
key: "upgrade",
|
|
121
|
+
label: "Upgrade",
|
|
122
|
+
value: "A gated feature unlocks with a higher tier — apimapper_license_status to check the current license, apimapper_license_activate to apply a new key.",
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
});
|
|
126
|
+
return detailResult({
|
|
127
|
+
title: "License-Gated Features",
|
|
128
|
+
subtitle: tier ? `License tier: ${tier}` : undefined,
|
|
129
|
+
badge: tier
|
|
130
|
+
? { text: `tier: ${tier}`, variant: "info" }
|
|
131
|
+
: { text: "features", variant: "secondary" },
|
|
132
|
+
groups,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=settings-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-format.js","sourceRoot":"","sources":["../../../src/modules/apimapper/settings-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function registerSettingsTools(server:
|
|
1
|
+
import type { ToolRegistrar } from "./gateway/capturing-server.js";
|
|
2
|
+
export declare function registerSettingsTools(server: ToolRegistrar): void;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { formatResult,
|
|
2
|
+
import { formatResult, tableResult, errorResult, readOnly, mutating, destructive, } from "@getimo/mcp-toolkit";
|
|
3
3
|
import { request, hintFor } from "./client.js";
|
|
4
|
+
import { toRows } from "./types.js";
|
|
5
|
+
import { HEALTH_WARNINGS_COLUMNS, HEALTH_WARNINGS_NEXT_STEPS, mapHealthWarningRow, buildSettingsDetail, buildFeaturesDetail, } from "./settings-format.js";
|
|
4
6
|
// SettingsHandler::sanitizeSettingsData (core/src/Admin/Handler/SettingsHandler.php)
|
|
5
7
|
// pins the canonical allow-list. Keep this in sync with that PHP constant.
|
|
6
8
|
const SETTABLE_KEYS = [
|
|
@@ -12,6 +14,28 @@ const SETTABLE_KEYS = [
|
|
|
12
14
|
"delete_data_on_uninstall",
|
|
13
15
|
"error_reporting",
|
|
14
16
|
];
|
|
17
|
+
// F-18 (W1.11): Strict patch schema — typed per-key, .strict() rejects unknown
|
|
18
|
+
// keys at the Zod boundary so callers see a clear error instead of having
|
|
19
|
+
// keys dropped silently by the server. PHP server-side limits api_timeout to
|
|
20
|
+
// 1..120 (SettingsHandler.php) — surfaced here as int >=1 (upper-bound coerce
|
|
21
|
+
// stays server-side so we don't fail closed if PHP ever widens the cap).
|
|
22
|
+
// log_level intentionally `z.string()` (not enum): PHP accepts any string and
|
|
23
|
+
// existing wire fixtures use values like "warning"/"warn" interchangeably.
|
|
24
|
+
const settingsPatchSchema = z
|
|
25
|
+
.object({
|
|
26
|
+
cache_ttl: z.number().int().min(0).optional(),
|
|
27
|
+
debug_mode: z.boolean().optional(),
|
|
28
|
+
log_level: z.string().optional(),
|
|
29
|
+
api_timeout: z.number().int().min(1).optional(),
|
|
30
|
+
server_debug_mode: z.boolean().optional(),
|
|
31
|
+
delete_data_on_uninstall: z.boolean().optional(),
|
|
32
|
+
error_reporting: z.boolean().optional(),
|
|
33
|
+
})
|
|
34
|
+
.strict()
|
|
35
|
+
.describe("Settings patch (strict allow-list). Unknown keys rejected at schema level. " +
|
|
36
|
+
"Known SETTABLE_KEYS: " +
|
|
37
|
+
SETTABLE_KEYS.join(", ") +
|
|
38
|
+
". Provide any subset; only changed keys are sent.");
|
|
15
39
|
export function registerSettingsTools(server) {
|
|
16
40
|
// ── apimapper_settings_get ─────────────────────────────────────────
|
|
17
41
|
// F-A6-09: PHP returns `{success, settings, tier}`. Surface tier + settings
|
|
@@ -23,20 +47,24 @@ export function registerSettingsTools(server) {
|
|
|
23
47
|
"server_debug_mode, delete_data_on_uninstall, error_reporting) plus the active license tier." +
|
|
24
48
|
"\n\nExample:\n apimapper_settings_get({})",
|
|
25
49
|
inputSchema: {},
|
|
26
|
-
annotations: readOnly(),
|
|
50
|
+
annotations: readOnly({ title: "Get Settings", openWorld: true }),
|
|
27
51
|
}, async () => {
|
|
28
52
|
const r = await request("/settings");
|
|
29
53
|
if (!r.success) {
|
|
30
|
-
return
|
|
54
|
+
return errorResult({
|
|
55
|
+
message: r.error ?? "settings get failed",
|
|
56
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
57
|
+
suggestion: hintFor(r.errorCode),
|
|
58
|
+
details: {},
|
|
59
|
+
});
|
|
31
60
|
}
|
|
32
61
|
const settings = (r.data?.settings && typeof r.data.settings === "object")
|
|
33
62
|
? r.data.settings
|
|
34
63
|
: {};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}, false, { maxChars: 4000 });
|
|
64
|
+
// W3.1 — detailResult: grouped key-value detail for the Rich Card. The
|
|
65
|
+
// settings dict is a flat scalar map; IA-10 carries the settable-keys
|
|
66
|
+
// affordance + the settings_update follow-up in a "Next steps" group.
|
|
67
|
+
return buildSettingsDetail(r.data?.tier, settings, SETTABLE_KEYS);
|
|
40
68
|
});
|
|
41
69
|
// ── apimapper_settings_update ──────────────────────────────────────
|
|
42
70
|
// F-A6-10: Real allow-list is SETTABLE_KEYS above; telemetry_enabled +
|
|
@@ -49,22 +77,22 @@ export function registerSettingsTools(server) {
|
|
|
49
77
|
"Use apimapper_settings_get to inspect the current full set." +
|
|
50
78
|
"\n\nExample:\n apimapper_settings_update({ patch: { cache_ttl: 600, debug_mode: true } })",
|
|
51
79
|
inputSchema: {
|
|
52
|
-
patch:
|
|
80
|
+
patch: settingsPatchSchema,
|
|
53
81
|
},
|
|
54
|
-
annotations: mutating(),
|
|
82
|
+
annotations: mutating({ title: "Update Settings", openWorld: true }),
|
|
55
83
|
}, async ({ patch }) => {
|
|
84
|
+
const requestedKeys = Object.keys(patch);
|
|
56
85
|
const r = await request("/settings", {
|
|
57
86
|
method: "POST",
|
|
58
87
|
body: JSON.stringify(patch),
|
|
59
88
|
});
|
|
60
89
|
if (!r.success) {
|
|
61
|
-
return
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}, true);
|
|
90
|
+
return errorResult({
|
|
91
|
+
message: r.error ?? "settings update failed",
|
|
92
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
93
|
+
suggestion: hintFor(r.errorCode),
|
|
94
|
+
details: { keys: requestedKeys },
|
|
95
|
+
});
|
|
68
96
|
}
|
|
69
97
|
// PHP returns the post-update sanitised settings dict; surface what was
|
|
70
98
|
// actually applied (not what was requested), so the caller can spot
|
|
@@ -72,10 +100,17 @@ export function registerSettingsTools(server) {
|
|
|
72
100
|
const appliedSettings = (r.data?.settings && typeof r.data.settings === "object")
|
|
73
101
|
? r.data.settings
|
|
74
102
|
: undefined;
|
|
103
|
+
// F-18 (W1.11): compute server-side dropped keys. With .strict() unknown
|
|
104
|
+
// keys never reach here, but the server can still drop keys (e.g. a
|
|
105
|
+
// tier-gated value gets sanitised away). dropped_keys only surfaces when
|
|
106
|
+
// non-empty so the success envelope stays clean.
|
|
107
|
+
const appliedKeys = appliedSettings ? Object.keys(appliedSettings) : [];
|
|
108
|
+
const droppedKeys = requestedKeys.filter((k) => !appliedKeys.includes(k));
|
|
75
109
|
return formatResult({
|
|
76
110
|
updated: true,
|
|
77
|
-
requested_keys:
|
|
111
|
+
requested_keys: requestedKeys,
|
|
78
112
|
applied_settings: appliedSettings,
|
|
113
|
+
...(droppedKeys.length > 0 ? { dropped_keys: droppedKeys } : {}),
|
|
79
114
|
}, false, { maxChars: 2000 });
|
|
80
115
|
});
|
|
81
116
|
// ── apimapper_settings_reset_demo ──────────────────────────────────
|
|
@@ -92,7 +127,7 @@ export function registerSettingsTools(server) {
|
|
|
92
127
|
.default(false)
|
|
93
128
|
.describe("Must be true to execute. Ask user for confirmation first."),
|
|
94
129
|
},
|
|
95
|
-
annotations: destructive(),
|
|
130
|
+
annotations: destructive({ title: "Reset Demo Settings", openWorld: true }),
|
|
96
131
|
}, async ({ confirm }) => {
|
|
97
132
|
if (!confirm) {
|
|
98
133
|
return formatResult({
|
|
@@ -104,7 +139,12 @@ export function registerSettingsTools(server) {
|
|
|
104
139
|
}
|
|
105
140
|
const r = await request("/settings/reset-demo", { method: "POST" });
|
|
106
141
|
if (!r.success) {
|
|
107
|
-
return
|
|
142
|
+
return errorResult({
|
|
143
|
+
message: r.error ?? "demo reset failed",
|
|
144
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
145
|
+
suggestion: hintFor(r.errorCode),
|
|
146
|
+
details: {},
|
|
147
|
+
});
|
|
108
148
|
}
|
|
109
149
|
return formatResult({ reset: true, result: r.data?.result }, false, { maxChars: 2000 });
|
|
110
150
|
});
|
|
@@ -116,15 +156,24 @@ export function registerSettingsTools(server) {
|
|
|
116
156
|
"(e.g., 'max_connections: 1'); read each key by its expected type." +
|
|
117
157
|
"\n\nExample:\n apimapper_features_get({})",
|
|
118
158
|
inputSchema: {},
|
|
119
|
-
annotations: readOnly(),
|
|
159
|
+
annotations: readOnly({ title: "Get Feature Flags", openWorld: true }),
|
|
120
160
|
}, async () => {
|
|
121
161
|
const r = await request("/features");
|
|
122
162
|
if (!r.success) {
|
|
123
|
-
return
|
|
163
|
+
return errorResult({
|
|
164
|
+
message: r.error ?? "features get failed",
|
|
165
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
166
|
+
suggestion: hintFor(r.errorCode),
|
|
167
|
+
details: {},
|
|
168
|
+
});
|
|
124
169
|
}
|
|
125
|
-
const features = r.data?.features
|
|
126
|
-
|
|
127
|
-
|
|
170
|
+
const features = (r.data?.features && typeof r.data.features === "object")
|
|
171
|
+
? r.data.features
|
|
172
|
+
: {};
|
|
173
|
+
// W3.1 — detailResult: the feature dict mixes booleans + numeric limits;
|
|
174
|
+
// each key becomes a scalar detail entry. IA-10 "Next steps" group
|
|
175
|
+
// points at the license tools for unlocking a gated feature.
|
|
176
|
+
return buildFeaturesDetail(r.data?.tier, features);
|
|
128
177
|
});
|
|
129
178
|
// ── apimapper_platform_parity ──────────────────────────────────────
|
|
130
179
|
// F-A6-02: PHP PlatformParityHandler returns `{matrix, summary, gaps}` —
|
|
@@ -134,11 +183,16 @@ export function registerSettingsTools(server) {
|
|
|
134
183
|
description: "Compare feature parity between WordPress and Joomla versions of API Mapper." +
|
|
135
184
|
"\n\nExample:\n apimapper_platform_parity({})",
|
|
136
185
|
inputSchema: {},
|
|
137
|
-
annotations: readOnly(),
|
|
186
|
+
annotations: readOnly({ title: "Check Platform Parity", openWorld: true }),
|
|
138
187
|
}, async () => {
|
|
139
188
|
const r = await request("/platform-parity");
|
|
140
189
|
if (!r.success) {
|
|
141
|
-
return
|
|
190
|
+
return errorResult({
|
|
191
|
+
message: r.error ?? "platform parity failed",
|
|
192
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
193
|
+
suggestion: hintFor(r.errorCode),
|
|
194
|
+
details: {},
|
|
195
|
+
});
|
|
142
196
|
}
|
|
143
197
|
const gaps = Array.isArray(r.data?.gaps) ? r.data.gaps : [];
|
|
144
198
|
return formatResult({
|
|
@@ -156,24 +210,26 @@ export function registerSettingsTools(server) {
|
|
|
156
210
|
description: "List active admin health-warnings (banners shown in the Admin UI)." +
|
|
157
211
|
"\n\nExample:\n apimapper_health_warnings_list({})",
|
|
158
212
|
inputSchema: {},
|
|
159
|
-
annotations: readOnly(),
|
|
213
|
+
annotations: readOnly({ title: "List Health Warnings", openWorld: true }),
|
|
160
214
|
}, async () => {
|
|
161
215
|
const r = await request("/admin/health-warnings");
|
|
162
216
|
if (!r.success) {
|
|
163
|
-
return
|
|
217
|
+
return errorResult({
|
|
218
|
+
message: r.error ?? "health warnings list failed",
|
|
219
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
220
|
+
suggestion: hintFor(r.errorCode),
|
|
221
|
+
details: {},
|
|
222
|
+
});
|
|
164
223
|
}
|
|
165
224
|
const items = Array.isArray(r.data?.items) ? r.data.items : [];
|
|
166
225
|
const visible = Boolean(r.data?.visible);
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
{ key: "credentialId", label: "CREDENTIAL_ID", width: 32 },
|
|
173
|
-
{ key: "type", label: "TYPE", width: 28 },
|
|
174
|
-
],
|
|
226
|
+
// W3.1 — tableResult: ASCII table for the LLM + typed DataTable payload
|
|
227
|
+
// for the Rich Card. IA-10: the footer carries the next-step guidance.
|
|
228
|
+
return tableResult(toRows(items), {
|
|
229
|
+
columns: HEALTH_WARNINGS_COLUMNS,
|
|
230
|
+
map: mapHealthWarningRow,
|
|
175
231
|
header: (n) => `${n} active warnings${visible ? "" : " (banner dismissed)"}`,
|
|
176
|
-
footer:
|
|
232
|
+
footer: HEALTH_WARNINGS_NEXT_STEPS,
|
|
177
233
|
});
|
|
178
234
|
});
|
|
179
235
|
// ── apimapper_health_warnings_dismiss ──────────────────────────────
|
|
@@ -184,14 +240,19 @@ export function registerSettingsTools(server) {
|
|
|
184
240
|
inputSchema: {
|
|
185
241
|
id: z.string().describe("Warning ID. Use apimapper_health_warnings_list to find."),
|
|
186
242
|
},
|
|
187
|
-
annotations: mutating(),
|
|
243
|
+
annotations: mutating({ title: "Dismiss Health Warning", openWorld: true }),
|
|
188
244
|
}, async ({ id }) => {
|
|
189
245
|
const r = await request("/admin/health-warnings/dismiss", {
|
|
190
246
|
method: "POST",
|
|
191
247
|
body: JSON.stringify({ id }),
|
|
192
248
|
});
|
|
193
249
|
if (!r.success) {
|
|
194
|
-
return
|
|
250
|
+
return errorResult({
|
|
251
|
+
message: r.error ?? "warning dismiss failed",
|
|
252
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
253
|
+
suggestion: hintFor(r.errorCode),
|
|
254
|
+
details: { id },
|
|
255
|
+
});
|
|
195
256
|
}
|
|
196
257
|
return formatResult({ dismissed: true, id }, false, { maxChars: 1500 });
|
|
197
258
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/modules/apimapper/settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/modules/apimapper/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ToolRegistrar } from "./gateway/capturing-server.js";
|
|
2
2
|
export declare const SKILL_RESOURCE_URIS: readonly ["skill://apimapper/getting-started", "skill://apimapper/oauth", "skill://apimapper/yootheme", "skill://apimapper/joomla", "skill://apimapper/troubleshooting"];
|
|
3
3
|
export type SkillResourceUri = (typeof SKILL_RESOURCE_URIS)[number];
|
|
4
|
-
export declare function registerSkillResources(server:
|
|
4
|
+
export declare function registerSkillResources(server: ToolRegistrar, rootDir?: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-resources.js","sourceRoot":"","sources":["../../../src/modules/apimapper/skill-resources.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,sEAAsE;AACtE,4EAA4E;AAC5E,6DAA6D;AAC7D,EAAE;AACF,6EAA6E;AAC7E,uEAAuE;AACvE,0EAA0E;AAC1E,EAAE;AACF,4CAA4C;AAC5C,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,gFAAgF;AAChF,6EAA6E;AAC7E,uCAAuC;AACvC,qFAAqF;AAGrF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,mCAAmC;IACnC,yBAAyB;IACzB,4BAA4B;IAC5B,0BAA0B;IAC1B,mCAAmC;CAC3B,CAAC;AAYX,MAAM,SAAS,GAAwB;IACrC;QACE,GAAG,EAAE,mCAAmC;QACxC,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,gGAAgG;QAClG,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,+FAA+F;QACjG,QAAQ,EAAE,oBAAoB;KAC/B;IACD;QACE,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,iGAAiG;QACnG,QAAQ,EAAE,uBAAuB;KAClC;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,2FAA2F;QACxG,QAAQ,EAAE,qBAAqB;KAChC;IACD;QACE,GAAG,EAAE,mCAAmC;QACxC,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,mGAAmG;QACrG,QAAQ,EAAE,8BAA8B;KACzC;CACF,CAAC;AAEF,SAAS,iBAAiB;IACxB,2EAA2E;IAC3E,sEAAsE;IACtE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,
|
|
1
|
+
{"version":3,"file":"skill-resources.js","sourceRoot":"","sources":["../../../src/modules/apimapper/skill-resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A canned REST body — either a raw string sent as-is, or a JSON-serializable
|
|
3
|
+
* object/array that the harness stringifies. Narrowing to these three shapes
|
|
4
|
+
* keeps the `JSON.stringify` branch type-safe without falling back to `unknown`.
|
|
5
|
+
*/
|
|
6
|
+
export type CannedBody = string | Record<string, unknown> | unknown[];
|
|
7
|
+
/** A single fetch result the responder hands back for one upstream URL. */
|
|
8
|
+
export interface CannedResponse {
|
|
9
|
+
/** HTTP status. Defaults to 200 when omitted. */
|
|
10
|
+
status?: number;
|
|
11
|
+
/** Response body — an object/array is JSON-stringified; a string is sent as-is. */
|
|
12
|
+
body: CannedBody;
|
|
13
|
+
}
|
|
14
|
+
/** Maps an upstream request (URL + init) to a canned REST response. */
|
|
15
|
+
export type FetchResponder = (url: string, init?: RequestInit) => CannedResponse;
|
|
16
|
+
/** The shape every apimapper tool handler resolves to (MCP CallToolResult). */
|
|
17
|
+
interface ToolCallResult {
|
|
18
|
+
content?: Array<{
|
|
19
|
+
type: string;
|
|
20
|
+
text?: string;
|
|
21
|
+
}>;
|
|
22
|
+
isError?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/** A registered tool: its handler is what the harness invokes. */
|
|
25
|
+
export interface RegisteredHarnessTool {
|
|
26
|
+
handler: (args: Record<string, unknown>, extra?: unknown) => Promise<ToolCallResult> | ToolCallResult;
|
|
27
|
+
}
|
|
28
|
+
/** Per-tool byte tally for one replayed call. */
|
|
29
|
+
export interface SequenceEntry {
|
|
30
|
+
tool: string;
|
|
31
|
+
/**
|
|
32
|
+
* Total UTF-8 bytes of the result's `content[].text` blocks — the raw
|
|
33
|
+
* payload an MCP client receives. This is the historical token-baseline
|
|
34
|
+
* metric and the field the ≥40% goal is measured against.
|
|
35
|
+
*/
|
|
36
|
+
bytes: number;
|
|
37
|
+
/**
|
|
38
|
+
* `bytes` minus the toolkit's embedded `<!-- structured-meta:… -->` base64
|
|
39
|
+
* marker(s). Some MCP hosts (the WootsUp Chat UI) strip this marker before
|
|
40
|
+
* the LLM sees the text; generic hosts (Claude Desktop / Cursor) do not.
|
|
41
|
+
* Reporting both keeps the post-W3 measurement honest about which figure a
|
|
42
|
+
* given host actually pays.
|
|
43
|
+
*/
|
|
44
|
+
visibleBytes: number;
|
|
45
|
+
}
|
|
46
|
+
/** The full harness measurement. */
|
|
47
|
+
export interface TokenBaselineResult {
|
|
48
|
+
sequence: SequenceEntry[];
|
|
49
|
+
/** Sum of `bytes` (raw text incl. structured-meta marker) across the run. */
|
|
50
|
+
totalBytes: number;
|
|
51
|
+
/** Sum of `visibleBytes` (marker stripped) across the run. */
|
|
52
|
+
totalVisibleBytes: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* One step of the canonical sequence — the tool to invoke and the canned
|
|
56
|
+
* real-shape arguments to invoke it with.
|
|
57
|
+
*/
|
|
58
|
+
interface SequenceStep {
|
|
59
|
+
tool: string;
|
|
60
|
+
args: Record<string, unknown>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The canonical 8-call walkthrough (the Maria mixed-feed flow): a fresh user
|
|
64
|
+
* discovers the install, activates a library template, inspects a connection,
|
|
65
|
+
* builds and validates a flow, then compiles it. Inputs are real-shape and
|
|
66
|
+
* fixed so the measurement is reproducible.
|
|
67
|
+
*/
|
|
68
|
+
export declare const CANONICAL_SEQUENCE: readonly SequenceStep[];
|
|
69
|
+
/** The tool names the canonical sequence exercises, in call order. */
|
|
70
|
+
export declare const CANONICAL_TOOLS: readonly string[];
|
|
71
|
+
/**
|
|
72
|
+
* Canonical fetch responder — routes an upstream URL to its real-shape
|
|
73
|
+
* fixture. Anything unmatched returns an empty-success envelope, which is the
|
|
74
|
+
* benign default for the optional sub-calls inside `apimapper_onboarding`.
|
|
75
|
+
*/
|
|
76
|
+
export declare function canonicalFetchResponder(url: string): CannedResponse;
|
|
77
|
+
/**
|
|
78
|
+
* Strip every embedded structured-meta marker from a text block. What remains
|
|
79
|
+
* is the human/LLM-readable text a marker-aware host (the WootsUp Chat UI)
|
|
80
|
+
* presents after extracting the marker into a Rich Card.
|
|
81
|
+
*/
|
|
82
|
+
export declare function stripStructuredMeta(text: string): string;
|
|
83
|
+
/**
|
|
84
|
+
* Replay the canonical sequence and measure total token output.
|
|
85
|
+
*
|
|
86
|
+
* @param tools the registered apimapper tools map (name → tool)
|
|
87
|
+
* @param fetchResponder maps each upstream URL to a canned REST response
|
|
88
|
+
* @returns per-tool byte tally + `totalBytes` across the whole sequence
|
|
89
|
+
*/
|
|
90
|
+
export declare function runTokenBaseline(tools: Record<string, RegisteredHarnessTool>, fetchResponder: FetchResponder): Promise<TokenBaselineResult>;
|
|
91
|
+
export {};
|