onlymcp 0.17.0 → 0.19.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.
Files changed (126) hide show
  1. package/LICENSE +33 -17
  2. package/README.md +1 -1
  3. package/dist/bin/cli.js +46 -583
  4. package/dist/bin/mcp.js +45 -73
  5. package/package.json +6 -10
  6. package/dist/apiBaseUrl.d.ts +0 -12
  7. package/dist/apiBaseUrl.js +0 -28
  8. package/dist/apiBaseUrl.js.map +0 -1
  9. package/dist/apiClient.d.ts +0 -296
  10. package/dist/apiClient.js +0 -224
  11. package/dist/apiClient.js.map +0 -1
  12. package/dist/auth/deviceLogin.d.ts +0 -5
  13. package/dist/auth/deviceLogin.js +0 -40
  14. package/dist/auth/deviceLogin.js.map +0 -1
  15. package/dist/auth/keyring.d.ts +0 -16
  16. package/dist/auth/keyring.js +0 -33
  17. package/dist/auth/keyring.js.map +0 -1
  18. package/dist/bin/cli.d.ts +0 -2
  19. package/dist/bin/cli.js.map +0 -1
  20. package/dist/bin/mcp.d.ts +0 -2
  21. package/dist/bin/mcp.js.map +0 -1
  22. package/dist/cache.d.ts +0 -7
  23. package/dist/cache.js +0 -32
  24. package/dist/cache.js.map +0 -1
  25. package/dist/deviceId.d.ts +0 -2
  26. package/dist/deviceId.js +0 -97
  27. package/dist/deviceId.js.map +0 -1
  28. package/dist/export/unpack.d.ts +0 -33
  29. package/dist/export/unpack.js +0 -54
  30. package/dist/export/unpack.js.map +0 -1
  31. package/dist/identity.d.ts +0 -29
  32. package/dist/identity.js +0 -116
  33. package/dist/identity.js.map +0 -1
  34. package/dist/import/collect.d.ts +0 -25
  35. package/dist/import/collect.js +0 -101
  36. package/dist/import/collect.js.map +0 -1
  37. package/dist/import/frontmatter.d.ts +0 -44
  38. package/dist/import/frontmatter.js +0 -93
  39. package/dist/import/frontmatter.js.map +0 -1
  40. package/dist/import/plan.d.ts +0 -74
  41. package/dist/import/plan.js +0 -190
  42. package/dist/import/plan.js.map +0 -1
  43. package/dist/import/prune.d.ts +0 -46
  44. package/dist/import/prune.js +0 -61
  45. package/dist/import/prune.js.map +0 -1
  46. package/dist/import/secrets.d.ts +0 -7
  47. package/dist/import/secrets.js +0 -77
  48. package/dist/import/secrets.js.map +0 -1
  49. package/dist/import/upload.d.ts +0 -21
  50. package/dist/import/upload.js +0 -99
  51. package/dist/import/upload.js.map +0 -1
  52. package/dist/install.d.ts +0 -81
  53. package/dist/install.js +0 -168
  54. package/dist/install.js.map +0 -1
  55. package/dist/instructions.d.ts +0 -4
  56. package/dist/instructions.js +0 -67
  57. package/dist/instructions.js.map +0 -1
  58. package/dist/memoryPath.d.ts +0 -1
  59. package/dist/memoryPath.js +0 -13
  60. package/dist/memoryPath.js.map +0 -1
  61. package/dist/memorySync.d.ts +0 -28
  62. package/dist/memorySync.js +0 -56
  63. package/dist/memorySync.js.map +0 -1
  64. package/dist/paths.d.ts +0 -18
  65. package/dist/paths.js +0 -62
  66. package/dist/paths.js.map +0 -1
  67. package/dist/registry/caveats.d.ts +0 -17
  68. package/dist/registry/caveats.js +0 -74
  69. package/dist/registry/caveats.js.map +0 -1
  70. package/dist/registry/clients.d.ts +0 -17
  71. package/dist/registry/clients.js +0 -402
  72. package/dist/registry/clients.js.map +0 -1
  73. package/dist/registry/index.d.ts +0 -6
  74. package/dist/registry/index.js +0 -7
  75. package/dist/registry/index.js.map +0 -1
  76. package/dist/registry/serverInfo.d.ts +0 -25
  77. package/dist/registry/serverInfo.js +0 -33
  78. package/dist/registry/serverInfo.js.map +0 -1
  79. package/dist/registry/servers.d.ts +0 -58
  80. package/dist/registry/servers.js +0 -259
  81. package/dist/registry/servers.js.map +0 -1
  82. package/dist/registry/toolHints.d.ts +0 -29
  83. package/dist/registry/toolHints.js +0 -41
  84. package/dist/registry/toolHints.js.map +0 -1
  85. package/dist/registry/types.d.ts +0 -71
  86. package/dist/registry/types.js +0 -6
  87. package/dist/registry/types.js.map +0 -1
  88. package/dist/skillFilePath.d.ts +0 -1
  89. package/dist/skillFilePath.js +0 -29
  90. package/dist/skillFilePath.js.map +0 -1
  91. package/dist/stubIgnore.d.ts +0 -22
  92. package/dist/stubIgnore.js +0 -29
  93. package/dist/stubIgnore.js.map +0 -1
  94. package/dist/stubs.d.ts +0 -12
  95. package/dist/stubs.js +0 -188
  96. package/dist/stubs.js.map +0 -1
  97. package/dist/tools/connections.d.ts +0 -154
  98. package/dist/tools/connections.js +0 -164
  99. package/dist/tools/connections.js.map +0 -1
  100. package/dist/tools/getAgentDefinition.d.ts +0 -26
  101. package/dist/tools/getAgentDefinition.js +0 -29
  102. package/dist/tools/getAgentDefinition.js.map +0 -1
  103. package/dist/tools/getSkill.d.ts +0 -26
  104. package/dist/tools/getSkill.js +0 -26
  105. package/dist/tools/getSkill.js.map +0 -1
  106. package/dist/tools/getSkillFile.d.ts +0 -27
  107. package/dist/tools/getSkillFile.js +0 -39
  108. package/dist/tools/getSkillFile.js.map +0 -1
  109. package/dist/tools/index.d.ts +0 -263
  110. package/dist/tools/index.js +0 -69
  111. package/dist/tools/index.js.map +0 -1
  112. package/dist/tools/lists.d.ts +0 -38
  113. package/dist/tools/lists.js +0 -39
  114. package/dist/tools/lists.js.map +0 -1
  115. package/dist/tools/memoryGraph.d.ts +0 -69
  116. package/dist/tools/memoryGraph.js +0 -128
  117. package/dist/tools/memoryGraph.js.map +0 -1
  118. package/dist/tools/memoryRead.d.ts +0 -25
  119. package/dist/tools/memoryRead.js +0 -33
  120. package/dist/tools/memoryRead.js.map +0 -1
  121. package/dist/tools/memoryWrite.d.ts +0 -27
  122. package/dist/tools/memoryWrite.js +0 -34
  123. package/dist/tools/memoryWrite.js.map +0 -1
  124. package/dist/tools/write.d.ts +0 -166
  125. package/dist/tools/write.js +0 -193
  126. package/dist/tools/write.js.map +0 -1
package/dist/stubs.js DELETED
@@ -1,188 +0,0 @@
1
- import { access, mkdir, readFile, rm, writeFile } from 'node:fs/promises';
2
- import { dirname, join } from 'node:path';
3
- import { headerField, headerOf } from './import/frontmatter.js';
4
- import { ignoreNothing } from './stubIgnore.js';
5
- // Der Client prueft den Pfad, den der Server geschickt hat, unabhaengig davon,
6
- // dass der Server ihn beim Schreiben schon geprueft hat: hier wird aus einem
7
- // Pfad ein echter Schreibvorgang auf einer echten Platte.
8
- import { isSafeSkillFilePath } from './skillFilePath.js';
9
- // Gleiche Positivliste wie server-seitig (packages/api/src/http/names.ts,
10
- // skillName/agentName). Dieses Paket haengt nicht von @onlymcp/api ab, also
11
- // keine gemeinsame Konstante, aber ein Name, der so nie in der Datenbank
12
- // entstehen sollte, darf trotzdem nie als Pfadsegment landen: ein falsch
13
- // konfiguriertes oder kompromittiertes ONLYMCP_API_URL soll niemals Dateien
14
- // ausserhalb von `dir` schreiben koennen, egal was der Server zurueckgibt.
15
- const SAFE_AGENT_NAME = /^[a-z0-9]+(-[a-z0-9]+)*$/;
16
- // Skills duerfen seit Aufgabe 11 einen Namensraum tragen.
17
- const SAFE_SKILL_NAME = /^[a-z0-9]+(-[a-z0-9]+)*(:[a-z0-9]+(-[a-z0-9]+)*)?$/;
18
- /**
19
- * Das Merkmal, an dem `collect` einen Stub wiedererkennt.
20
- *
21
- * Es ist der Grund, warum Stubs ueberhaupt in `~/.claude/skills` liegen
22
- * duerfen: ohne dieses Feld laedt der naechste `onlymcp import` jeden
23
- * Platzhalter als Skill hoch und ersetzt damit den echten Inhalt durch den
24
- * Satz "ruf get_skill auf".
25
- */
26
- const MARKER = 'x-onlymcp-stub';
27
- /**
28
- * Der Ordnername eines Stubs.
29
- *
30
- * Ein Skill kann `superpowers:brainstorming` heissen, ein Ordner auf einer
31
- * Windows-Platte kann keinen Doppelpunkt tragen, und der Scanner eines
32
- * Clients erwartet ohnehin, dass `name:` zum Ordner passt. Der Stub heisst
33
- * deshalb lokal `superpowers-brainstorming` und ruft im Text den echten
34
- * Namen auf. `x-onlymcp-name` haelt fest, welcher das ist - daran erkennt
35
- * der naechste Lauf, ob der Ordner ihm gehoert oder einem anderen Skill.
36
- */
37
- function stubDirName(name) {
38
- return name.replace(/:/g, '-');
39
- }
40
- // Frontmatter ist YAML, aber die Werte (description, model, jeder Tool-Name)
41
- // kommen ungeprueft vom Server. Ein Wert mit Zeilenumbruch koennte sonst aus
42
- // seiner eigenen Zeile ausbrechen und zusaetzliche Frontmatter-Felder
43
- // einschleusen (z.B. ein erfundenes weiteres `tools:`). Zeilenumbrueche
44
- // werden deshalb entfernt, nicht escaped: ein Skill-/Agent-Name oder eine
45
- // Beschreibung braucht nie einen Zeilenumbruch, um sinnvoll zu sein.
46
- function yamlSafe(value) {
47
- return (value ?? '').replace(/[\r\n]+/g, ' ').trim();
48
- }
49
- /**
50
- * Darf an diese Stelle geschrieben werden?
51
- *
52
- * Seit Aufgabe 12 liegen die Stubs in `~/.claude/skills` und `~/.codex/skills`
53
- * - denselben Ordnern, aus denen importiert wird. Eine bestehende Datei, die
54
- * kein Stub ist, ist die echte Arbeit eines Menschen und wird nicht
55
- * ueberschrieben. Gehoert ein vorhandener Stub einem anderen Skill (zwei
56
- * Plugins mit demselben Skill-Namen ergeben denselben Ordnernamen), bleibt
57
- * ebenfalls stehen, was da ist: der erste hat ihn, der zweite wird gemeldet.
58
- */
59
- async function mayWrite(path, owner) {
60
- let existing;
61
- try {
62
- existing = await readFile(path, 'utf8');
63
- }
64
- catch {
65
- return true; // nicht da, also frei
66
- }
67
- const head = headerOf(existing);
68
- if (head === null || headerField(head, MARKER) !== 'true')
69
- return false;
70
- const mine = headerField(head, 'x-onlymcp-name');
71
- return mine === undefined || mine === owner;
72
- }
73
- /** Is there a stub of `owner` at `path`, one this tool wrote and may take back? */
74
- async function isOwnStub(path, owner) {
75
- const there = await access(path).then(() => true, () => false);
76
- return there && (await mayWrite(path, owner));
77
- }
78
- export async function writeStubs(api, dir, opts = {}) {
79
- const ignore = opts.ignore ?? ignoreNothing;
80
- const [{ skills }, { agents }] = await Promise.all([api.listSkills(), api.listAgents()]);
81
- let files = 0;
82
- let written = 0;
83
- /** Was stehen geblieben ist, weil dort schon etwas Echtes lag. */
84
- const kept = [];
85
- /** The names stub-ignore left out, and how many stubs of theirs this run took back. */
86
- const ignored = [];
87
- let removed = 0;
88
- for (const s of skills) {
89
- if (!SAFE_SKILL_NAME.test(s.name))
90
- continue;
91
- const target = join(dir, 'skills', stubDirName(s.name));
92
- const skillMd = join(target, 'SKILL.md');
93
- // By its name or by its folder name, the one a user sees on disk.
94
- if (ignore(s.name) || ignore(stubDirName(s.name))) {
95
- ignored.push(s.name);
96
- // The whole folder: beside the stub it holds only the companion files an
97
- // earlier run copied in, and every run overwrites those anyway.
98
- if (await isOwnStub(skillMd, s.name)) {
99
- await rm(target, { recursive: true, force: true });
100
- removed += 1;
101
- }
102
- continue;
103
- }
104
- if (!(await mayWrite(skillMd, s.name))) {
105
- // Auch die Begleitdateien bleiben aus: sie in einen fremden Skill-Ordner
106
- // zu legen machte aus einer geschonten Datei einen halb ueberschriebenen
107
- // Ordner.
108
- kept.push(`skills/${stubDirName(s.name)}`);
109
- continue;
110
- }
111
- await mkdir(target, { recursive: true });
112
- await writeFile(skillMd, `---
113
- name: ${stubDirName(s.name)}
114
- description: ${yamlSafe(s.description) || 'Synchronisiert ueber OnlyMCP. Inhalt wird bei Bedarf geladen.'}
115
- ${MARKER}: true
116
- x-onlymcp-name: ${s.name}
117
- ---
118
-
119
- Call \`get_skill({ name: "${s.name}" })\` on the OnlyMCP server and follow whatever comes back.
120
- `, 'utf8');
121
- written += 1;
122
- // Die Begleitdateien liegen danach WIRKLICH auf der Platte, nicht hinter
123
- // einem Werkzeug. Genau das macht das Merkmal aus: ein Skill, dessen Text
124
- // "lies references/palette.md" sagt, funktioniert unveraendert, weil die
125
- // Datei da ist. Nur die SKILL.md bleibt ein Stub - sie ist die einzige,
126
- // die jeder Client ohnehin zuerst liest, und der Sparsinn des Verfahrens
127
- // haengt an ihr.
128
- //
129
- // Faellt der Abruf aus, bleibt der Stub trotzdem stehen: ein Client, der
130
- // den Server gerade nicht erreicht, soll wenigstens wissen, dass es den
131
- // Skill gibt.
132
- try {
133
- const detail = await api.getSkill(s.name);
134
- for (const meta of detail.files ?? []) {
135
- if (!isSafeSkillFilePath(meta.path))
136
- continue;
137
- const file = await api.getSkillFile(s.name, meta.path);
138
- const dest = join(target, ...meta.path.split('/'));
139
- await mkdir(dirname(dest), { recursive: true });
140
- if (file.encoding === 'base64') {
141
- await writeFile(dest, Buffer.from(file.content, 'base64'));
142
- }
143
- else {
144
- await writeFile(dest, file.content, 'utf8');
145
- }
146
- files += 1;
147
- }
148
- }
149
- catch {
150
- // absichtlich still, siehe oben
151
- }
152
- }
153
- await mkdir(join(dir, 'agents'), { recursive: true });
154
- let agentsWritten = 0;
155
- for (const a of agents) {
156
- if (!SAFE_AGENT_NAME.test(a.name))
157
- continue;
158
- const dest = join(dir, 'agents', `${a.name}.md`);
159
- if (ignore(a.name)) {
160
- ignored.push(a.name);
161
- if (await isOwnStub(dest, a.name)) {
162
- await rm(dest);
163
- removed += 1;
164
- }
165
- continue;
166
- }
167
- if (!(await mayWrite(dest, a.name))) {
168
- kept.push(`agents/${a.name}.md`);
169
- continue;
170
- }
171
- const description = yamlSafe(a.description);
172
- const model = a.model ? yamlSafe(a.model) : '';
173
- const tools = a.tools.map(yamlSafe).join(', ');
174
- await writeFile(dest, `---
175
- name: ${a.name}
176
- description: ${description}
177
- ${model ? `model: ${model}\n` : ''}tools: ${tools}
178
- ${MARKER}: true
179
- x-onlymcp-name: ${a.name}
180
- ---
181
-
182
- Call \`get_agent_definition({ name: "${a.name}" })\` on the OnlyMCP server and follow whatever comes back.
183
- `, 'utf8');
184
- agentsWritten += 1;
185
- }
186
- return { skills: written, agents: agentsWritten, files, kept, ignored, removed };
187
- }
188
- //# sourceMappingURL=stubs.js.map
package/dist/stubs.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"stubs.js","sourceRoot":"","sources":["../src/stubs.ts"],"names":[],"mappings":"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"}
@@ -1,154 +0,0 @@
1
- import { z } from 'zod';
2
- import type { ApiClient } from '../apiClient.js';
3
- export declare const ListConnectionsInput: z.ZodObject<{}, z.core.$strip>;
4
- export declare function createListConnectionsTool(api: ApiClient): {
5
- name: string;
6
- description: string;
7
- inputSchema: z.ZodObject<{}, z.core.$strip>;
8
- handler: () => Promise<{
9
- content: {
10
- type: "text";
11
- text: string;
12
- }[];
13
- }>;
14
- };
15
- export declare const ConnectionCreateInput: z.ZodObject<{
16
- name: z.ZodString;
17
- slug: z.ZodString;
18
- url: z.ZodString;
19
- transport: z.ZodDefault<z.ZodEnum<{
20
- http: "http";
21
- sse: "sse";
22
- }>>;
23
- authType: z.ZodDefault<z.ZodEnum<{
24
- none: "none";
25
- bearer: "bearer";
26
- header: "header";
27
- }>>;
28
- authHeaderName: z.ZodOptional<z.ZodString>;
29
- secret: z.ZodOptional<z.ZodString>;
30
- teamId: z.ZodOptional<z.ZodString>;
31
- }, z.core.$strip>;
32
- export declare function createConnectionCreateTool(api: ApiClient): {
33
- name: string;
34
- description: string;
35
- inputSchema: z.ZodObject<{
36
- name: z.ZodString;
37
- slug: z.ZodString;
38
- url: z.ZodString;
39
- transport: z.ZodDefault<z.ZodEnum<{
40
- http: "http";
41
- sse: "sse";
42
- }>>;
43
- authType: z.ZodDefault<z.ZodEnum<{
44
- none: "none";
45
- bearer: "bearer";
46
- header: "header";
47
- }>>;
48
- authHeaderName: z.ZodOptional<z.ZodString>;
49
- secret: z.ZodOptional<z.ZodString>;
50
- teamId: z.ZodOptional<z.ZodString>;
51
- }, z.core.$strip>;
52
- handler: (args: z.infer<typeof ConnectionCreateInput>) => Promise<{
53
- content: {
54
- type: "text";
55
- text: string;
56
- }[];
57
- }>;
58
- };
59
- export declare const ConnectionUpdateInput: z.ZodObject<{
60
- slug: z.ZodString;
61
- name: z.ZodOptional<z.ZodString>;
62
- url: z.ZodOptional<z.ZodString>;
63
- transport: z.ZodOptional<z.ZodEnum<{
64
- http: "http";
65
- sse: "sse";
66
- }>>;
67
- authType: z.ZodOptional<z.ZodEnum<{
68
- none: "none";
69
- bearer: "bearer";
70
- header: "header";
71
- }>>;
72
- authHeaderName: z.ZodOptional<z.ZodString>;
73
- secret: z.ZodOptional<z.ZodString>;
74
- enabled: z.ZodOptional<z.ZodBoolean>;
75
- }, z.core.$strip>;
76
- export declare function createConnectionUpdateTool(api: ApiClient): {
77
- name: string;
78
- description: string;
79
- inputSchema: z.ZodObject<{
80
- slug: z.ZodString;
81
- name: z.ZodOptional<z.ZodString>;
82
- url: z.ZodOptional<z.ZodString>;
83
- transport: z.ZodOptional<z.ZodEnum<{
84
- http: "http";
85
- sse: "sse";
86
- }>>;
87
- authType: z.ZodOptional<z.ZodEnum<{
88
- none: "none";
89
- bearer: "bearer";
90
- header: "header";
91
- }>>;
92
- authHeaderName: z.ZodOptional<z.ZodString>;
93
- secret: z.ZodOptional<z.ZodString>;
94
- enabled: z.ZodOptional<z.ZodBoolean>;
95
- }, z.core.$strip>;
96
- handler: (args: z.infer<typeof ConnectionUpdateInput>) => Promise<{
97
- content: {
98
- type: "text";
99
- text: string;
100
- }[];
101
- }>;
102
- };
103
- export declare const ConnectionDeleteInput: z.ZodObject<{
104
- slug: z.ZodString;
105
- }, z.core.$strip>;
106
- export declare function createConnectionDeleteTool(api: ApiClient): {
107
- name: string;
108
- description: string;
109
- inputSchema: z.ZodObject<{
110
- slug: z.ZodString;
111
- }, z.core.$strip>;
112
- handler: (args: z.infer<typeof ConnectionDeleteInput>) => Promise<{
113
- content: {
114
- type: "text";
115
- text: string;
116
- }[];
117
- }>;
118
- };
119
- export declare const ConnectionToolsInput: z.ZodObject<{
120
- slug: z.ZodString;
121
- }, z.core.$strip>;
122
- export declare function createConnectionToolsTool(api: ApiClient): {
123
- name: string;
124
- description: string;
125
- inputSchema: z.ZodObject<{
126
- slug: z.ZodString;
127
- }, z.core.$strip>;
128
- handler: (args: z.infer<typeof ConnectionToolsInput>) => Promise<{
129
- content: {
130
- type: "text";
131
- text: string;
132
- }[];
133
- }>;
134
- };
135
- export declare const ConnectionToolToggleInput: z.ZodObject<{
136
- slug: z.ZodString;
137
- tool: z.ZodString;
138
- enabled: z.ZodBoolean;
139
- }, z.core.$strip>;
140
- export declare function createConnectionToolToggleTool(api: ApiClient): {
141
- name: string;
142
- description: string;
143
- inputSchema: z.ZodObject<{
144
- slug: z.ZodString;
145
- tool: z.ZodString;
146
- enabled: z.ZodBoolean;
147
- }, z.core.$strip>;
148
- handler: (args: z.infer<typeof ConnectionToolToggleInput>) => Promise<{
149
- content: {
150
- type: "text";
151
- text: string;
152
- }[];
153
- }>;
154
- };
@@ -1,164 +0,0 @@
1
- import { z } from 'zod';
2
- import { ApiError } from '../apiClient.js';
3
- /**
4
- * Fremde MCP-Server anbinden, ohne das Dashboard zu oeffnen.
5
- *
6
- * Angesprochen wird ueber den slug und nicht ueber die Kennung: der slug ist
7
- * der Name, unter dem ein Agent die Werkzeuge dieses Servers ohnehin schon
8
- * sieht ("fabbrica__list_customers"), waehrend eine UUID nichts ist, was
9
- * jemand im Gespraech bei sich hat. Die Kennung holt dieses Modul selbst.
10
- *
11
- * Zum Geheimnis: es darf mitgegeben werden, und die Beschreibung sagt, was
12
- * das kostet - ein Schluessel, der als Argument durch einen Agenten laeuft,
13
- * steht in dessen Verlauf. Wer das nicht will, legt die Verbindung ohne an
14
- * und traegt ihn im Dashboard nach.
15
- */
16
- const text = (value) => ({ content: [{ type: 'text', text: value }] });
17
- const bad = (value) => ({ content: [{ type: 'text', text: value }], isError: true });
18
- async function attempt(run) {
19
- try {
20
- return text(await run());
21
- }
22
- catch (e) {
23
- if (e instanceof ApiError) {
24
- const params = Object.keys(e.params).length ? ` ${JSON.stringify(e.params)}` : '';
25
- return bad(`${e.code}${params}`);
26
- }
27
- return bad('errors.UNKNOWN');
28
- }
29
- }
30
- const slug = z
31
- .string()
32
- .min(1)
33
- .max(32)
34
- .regex(/^[a-z0-9]+(-[a-z0-9]+)*$/, 'errors.INVALID_SLUG');
35
- /** Die eigene, private Verbindung gewinnt: privat und Team duerfen denselben slug tragen. */
36
- async function bySlug(api, wanted) {
37
- const { connections } = await api.listConnections();
38
- const hits = connections.filter((c) => c.slug === wanted);
39
- return hits.find((c) => c.scope === 'personal') ?? hits[0] ?? null;
40
- }
41
- function describe(c) {
42
- const auth = c.authType === 'none' ? 'no auth' : `${c.authType}, secret ...${c.secretHint ?? '?'}`;
43
- return `${c.slug} — ${c.name} (${c.scope}, ${c.enabled ? c.status : 'disabled'}, ${auth})\n ${c.url}${c.statusError ? `\n last error: ${c.statusError}` : ''}`;
44
- }
45
- export const ListConnectionsInput = z.object({});
46
- export function createListConnectionsTool(api) {
47
- return {
48
- name: 'list_connections',
49
- description: 'List the MCP servers connected through this OnlyMCP account, with the tool-name prefix each one uses.',
50
- inputSchema: ListConnectionsInput,
51
- handler: () => attempt(async () => {
52
- const { connections } = await api.listConnections();
53
- if (connections.length === 0) {
54
- return 'No MCP servers are connected yet. Add one with connection_create.';
55
- }
56
- return connections.map(describe).join('\n');
57
- }),
58
- };
59
- }
60
- export const ConnectionCreateInput = z.object({
61
- name: z.string().min(1).max(80),
62
- slug,
63
- url: z.string().url().max(2000),
64
- transport: z.enum(['http', 'sse']).default('http'),
65
- authType: z.enum(['none', 'bearer', 'header']).default('none'),
66
- authHeaderName: z.string().max(80).optional(),
67
- secret: z.string().max(4000).optional(),
68
- teamId: z.string().max(64).optional(),
69
- });
70
- export function createConnectionCreateTool(api) {
71
- return {
72
- name: 'connection_create',
73
- description: 'Connect a remote MCP server (http or sse only - a stdio server cannot be started on somebody else\'s behalf). It is probed straight away. Passing a secret here puts it into this conversation; leave it out and set it in the dashboard if that matters.',
74
- inputSchema: ConnectionCreateInput,
75
- handler: (args) => attempt(async () => {
76
- const { connection } = await api.createConnection(args);
77
- return `Connected.\n${describe(connection)}\n\nIts tools are now available as "${connection.slug}__<tool>".`;
78
- }),
79
- };
80
- }
81
- export const ConnectionUpdateInput = z.object({
82
- slug,
83
- name: z.string().min(1).max(80).optional(),
84
- url: z.string().url().max(2000).optional(),
85
- transport: z.enum(['http', 'sse']).optional(),
86
- authType: z.enum(['none', 'bearer', 'header']).optional(),
87
- authHeaderName: z.string().max(80).optional(),
88
- secret: z.string().max(4000).optional(),
89
- enabled: z.boolean().optional(),
90
- });
91
- export function createConnectionUpdateTool(api) {
92
- return {
93
- name: 'connection_update',
94
- description: 'Change a connected MCP server. Only the fields you pass are touched; url, transport, authType and secret trigger a fresh probe.',
95
- inputSchema: ConnectionUpdateInput,
96
- handler: (args) => attempt(async () => {
97
- const found = await bySlug(api, args.slug);
98
- if (!found)
99
- return `Connection not found: ${args.slug}`;
100
- const { slug: _ignored, ...patch } = args;
101
- const { connection } = await api.updateConnection(found.id, patch);
102
- return `Updated.\n${describe(connection)}`;
103
- }),
104
- };
105
- }
106
- export const ConnectionDeleteInput = z.object({ slug });
107
- export function createConnectionDeleteTool(api) {
108
- return {
109
- name: 'connection_delete',
110
- description: 'Disconnect a remote MCP server and forget its stored credential. Its tools disappear from the gateway.',
111
- inputSchema: ConnectionDeleteInput,
112
- handler: (args) => attempt(async () => {
113
- const found = await bySlug(api, args.slug);
114
- if (!found)
115
- return `Connection not found: ${args.slug}`;
116
- await api.deleteConnection(found.id);
117
- return `Disconnected ${args.slug}.`;
118
- }),
119
- };
120
- }
121
- export const ConnectionToolsInput = z.object({ slug });
122
- export function createConnectionToolsTool(api) {
123
- return {
124
- name: 'connection_tools',
125
- description: 'List what one connected server offers, and whether each tool is switched on for the gateway.',
126
- inputSchema: ConnectionToolsInput,
127
- handler: (args) => attempt(async () => {
128
- const found = await bySlug(api, args.slug);
129
- if (!found)
130
- return `Connection not found: ${args.slug}`;
131
- const { capabilities } = await api.listCapabilities(found.id);
132
- if (capabilities.length === 0) {
133
- return `${args.slug} has nothing on record yet. Its status is "${found.status}".`;
134
- }
135
- return capabilities
136
- .map((cap) => `${cap.enabled ? '[on] ' : '[off]'} ${cap.kind} ${cap.name}${cap.exposedAs ? ` -> ${cap.exposedAs}` : ''}${cap.description ? ` — ${cap.description}` : ''}`)
137
- .join('\n');
138
- }),
139
- };
140
- }
141
- export const ConnectionToolToggleInput = z.object({
142
- slug,
143
- tool: z.string().min(1).max(200),
144
- enabled: z.boolean(),
145
- });
146
- export function createConnectionToolToggleTool(api) {
147
- return {
148
- name: 'connection_tool_toggle',
149
- description: 'Switch one tool of a connected server on or off. A tool that is off costs no room in any client\'s tool list.',
150
- inputSchema: ConnectionToolToggleInput,
151
- handler: (args) => attempt(async () => {
152
- const found = await bySlug(api, args.slug);
153
- if (!found)
154
- return `Connection not found: ${args.slug}`;
155
- const { capabilities } = await api.listCapabilities(found.id);
156
- const cap = capabilities.find((x) => x.kind === 'tool' && x.name === args.tool);
157
- if (!cap)
158
- return `${args.slug} offers no tool called ${args.tool}.`;
159
- await api.toggleCapability(found.id, cap.id, args.enabled);
160
- return `${args.slug}__${cap.name} is now ${args.enabled ? 'on' : 'off'}.`;
161
- }),
162
- };
163
- }
164
- //# sourceMappingURL=connections.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connections.js","sourceRoot":"","sources":["../../src/tools/connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;;;GAYG;AAEH,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACxF,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAEtG,KAAK,UAAU,OAAO,CAAC,GAA0B;IAC/C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,QAAQ,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG,CAAC;KACX,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,EAAE,CAAC;KACP,KAAK,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;AAE5D,6FAA6F;AAC7F,KAAK,UAAU,MAAM,CAAC,GAAc,EAAE,MAAc;IAClD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;IACpD,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACrE,CAAC;AAED,SAAS,QAAQ,CAAC,CAAa;IAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,eAAe,CAAC,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;IACnG,OAAO,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,QAAQ,CAAC,CAAC,GAAG,GAClG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EACvD,EAAE,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEjD,MAAM,UAAU,yBAAyB,CAAC,GAAc;IACtD,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,uGAAuG;QACzG,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,GAAG,EAAE,CACZ,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;YACpD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,mEAAmE,CAAC;YAC7E,CAAC;YACD,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC;KACL,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B,IAAI;IACJ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC9D,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAEH,MAAM,UAAU,0BAA0B,CAAC,GAAc;IACvD,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,2PAA2P;QAC7P,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,CAAC,IAA2C,EAAE,EAAE,CACvD,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACxD,OAAO,eAAe,QAAQ,CAAC,UAAU,CAAC,uCAAuC,UAAU,CAAC,IAAI,YAAY,CAAC;QAC/G,CAAC,CAAC;KACL,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI;IACJ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC1C,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7C,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,UAAU,0BAA0B,CAAC,GAAc;IACvD,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,iIAAiI;QACnI,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,CAAC,IAA2C,EAAE,EAAE,CACvD,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK;gBAAE,OAAO,yBAAyB,IAAI,CAAC,IAAI,EAAE,CAAC;YACxD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;YAC1C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACnE,OAAO,aAAa,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,CAAC,CAAC;KACL,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAExD,MAAM,UAAU,0BAA0B,CAAC,GAAc;IACvD,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,wGAAwG;QAC1G,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,CAAC,IAA2C,EAAE,EAAE,CACvD,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK;gBAAE,OAAO,yBAAyB,IAAI,CAAC,IAAI,EAAE,CAAC;YACxD,MAAM,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACrC,OAAO,gBAAgB,IAAI,CAAC,IAAI,GAAG,CAAC;QACtC,CAAC,CAAC;KACL,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAEvD,MAAM,UAAU,yBAAyB,CAAC,GAAc;IACtD,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,8FAA8F;QAChG,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,CAAC,IAA0C,EAAE,EAAE,CACtD,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK;gBAAE,OAAO,yBAAyB,IAAI,CAAC,IAAI,EAAE,CAAC;YACxD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,GAAG,IAAI,CAAC,IAAI,8CAA8C,KAAK,CAAC,MAAM,IAAI,CAAC;YACpF,CAAC;YACD,OAAO,YAAY;iBAChB,GAAG,CACF,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,GACxD,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAC3C,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACtD;iBACA,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;KACL,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,IAAI;IACJ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,UAAU,8BAA8B,CAAC,GAAc;IAC3D,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,+GAA+G;QACjH,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,CAAC,IAA+C,EAAE,EAAE,CAC3D,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK;gBAAE,OAAO,yBAAyB,IAAI,CAAC,IAAI,EAAE,CAAC;YACxD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,IAAI,CAAC,GAAG;gBAAE,OAAO,GAAG,IAAI,CAAC,IAAI,0BAA0B,IAAI,CAAC,IAAI,GAAG,CAAC;YACpE,MAAM,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3D,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,WAAW,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;QAC5E,CAAC,CAAC;KACL,CAAC;AACJ,CAAC"}
@@ -1,26 +0,0 @@
1
- import { z } from 'zod';
2
- import type { ApiClient } from '../apiClient.js';
3
- import type { TtlCache } from '../cache.js';
4
- export declare const GetAgentInput: z.ZodObject<{
5
- name: z.ZodString;
6
- }, z.core.$strip>;
7
- export declare function createGetAgentDefinitionTool(api: ApiClient, cache: TtlCache): {
8
- name: string;
9
- description: string;
10
- inputSchema: z.ZodObject<{
11
- name: z.ZodString;
12
- }, z.core.$strip>;
13
- handler(args: z.infer<typeof GetAgentInput>): Promise<{
14
- content: {
15
- type: "text";
16
- text: string;
17
- }[];
18
- isError?: undefined;
19
- } | {
20
- content: {
21
- type: "text";
22
- text: string;
23
- }[];
24
- isError: boolean;
25
- }>;
26
- };
@@ -1,29 +0,0 @@
1
- import { z } from 'zod';
2
- import { ApiError } from '../apiClient.js';
3
- export const GetAgentInput = z.object({ name: z.string().min(1).max(64) });
4
- export function createGetAgentDefinitionTool(api, cache) {
5
- return {
6
- name: 'get_agent_definition',
7
- description: "Delivers an agent's system prompt from the OnlyMCP cloud.",
8
- inputSchema: GetAgentInput,
9
- async handler(args) {
10
- const key = `agent:${args.name}`;
11
- const cached = await cache.get(key);
12
- if (cached !== null)
13
- return { content: [{ type: 'text', text: cached }] };
14
- try {
15
- // This is the one read that runs the agent, so it asks the server to
16
- // count it. The cache above answers repeat loads without a request: the
17
- // count for this transport is a lower bound.
18
- const a = await api.getAgent(args.name, { use: true });
19
- await cache.set(key, a.body);
20
- return { content: [{ type: 'text', text: a.body }] };
21
- }
22
- catch (e) {
23
- const code = e instanceof ApiError ? e.code : 'errors.UNKNOWN';
24
- return { content: [{ type: 'text', text: code }], isError: true };
25
- }
26
- },
27
- };
28
- }
29
- //# sourceMappingURL=getAgentDefinition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getAgentDefinition.js","sourceRoot":"","sources":["../../src/tools/getAgentDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,UAAU,4BAA4B,CAAC,GAAc,EAAE,KAAe;IAC1E,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,2DAA2D;QACxE,WAAW,EAAE,aAAa;QAC1B,KAAK,CAAC,OAAO,CAAC,IAAmC;YAC/C,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACnF,IAAI,CAAC;gBACH,qEAAqE;gBACrE,wEAAwE;gBACxE,6CAA6C;gBAC7C,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvD,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAChE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,26 +0,0 @@
1
- import { z } from 'zod';
2
- import type { ApiClient } from '../apiClient.js';
3
- import type { TtlCache } from '../cache.js';
4
- export declare const GetSkillInput: z.ZodObject<{
5
- name: z.ZodString;
6
- }, z.core.$strip>;
7
- export declare function createGetSkillTool(api: ApiClient, cache: TtlCache): {
8
- name: string;
9
- description: string;
10
- inputSchema: z.ZodObject<{
11
- name: z.ZodString;
12
- }, z.core.$strip>;
13
- handler(args: z.infer<typeof GetSkillInput>): Promise<{
14
- content: {
15
- type: "text";
16
- text: string;
17
- }[];
18
- isError?: undefined;
19
- } | {
20
- content: {
21
- type: "text";
22
- text: string;
23
- }[];
24
- isError: boolean;
25
- }>;
26
- };
@@ -1,26 +0,0 @@
1
- import { z } from 'zod';
2
- import { ApiError } from '../apiClient.js';
3
- export const GetSkillInput = z.object({ name: z.string().min(1).max(64) });
4
- export function createGetSkillTool(api, cache) {
5
- return {
6
- name: 'get_skill',
7
- description: "Delivers a skill's full content from the OnlyMCP cloud. Called from the stub files.",
8
- inputSchema: GetSkillInput,
9
- async handler(args) {
10
- const key = `skill:${args.name}`;
11
- const cached = await cache.get(key);
12
- if (cached !== null)
13
- return { content: [{ type: 'text', text: cached }] };
14
- try {
15
- const skill = await api.getSkill(args.name);
16
- await cache.set(key, skill.body);
17
- return { content: [{ type: 'text', text: skill.body }] };
18
- }
19
- catch (e) {
20
- const code = e instanceof ApiError ? e.code : 'errors.UNKNOWN';
21
- return { content: [{ type: 'text', text: code }], isError: true };
22
- }
23
- },
24
- };
25
- }
26
- //# sourceMappingURL=getSkill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSkill.js","sourceRoot":"","sources":["../../src/tools/getSkill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,UAAU,kBAAkB,CAAC,GAAc,EAAE,KAAe;IAChE,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,qFAAqF;QACvF,WAAW,EAAE,aAAa;QAC1B,KAAK,CAAC,OAAO,CAAC,IAAmC;YAC/C,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACnF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACpE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}