castor-mcp 0.6.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 (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +77 -0
  3. package/build/api-catalog.d.ts +27 -0
  4. package/build/api-catalog.js +76 -0
  5. package/build/api-catalog.js.map +1 -0
  6. package/build/confluence-client.d.ts +33 -0
  7. package/build/confluence-client.js +65 -0
  8. package/build/confluence-client.js.map +1 -0
  9. package/build/index.d.ts +2 -0
  10. package/build/index.js +137 -0
  11. package/build/index.js.map +1 -0
  12. package/build/resource-definitions.d.ts +10 -0
  13. package/build/resource-definitions.js +75 -0
  14. package/build/resource-definitions.js.map +1 -0
  15. package/build/tool-definitions.d.ts +19 -0
  16. package/build/tool-definitions.js +1811 -0
  17. package/build/tool-definitions.js.map +1 -0
  18. package/build/tools/admin-users-groups.d.ts +114 -0
  19. package/build/tools/admin-users-groups.js +150 -0
  20. package/build/tools/admin-users-groups.js.map +1 -0
  21. package/build/tools/admin.d.ts +12 -0
  22. package/build/tools/admin.js +30 -0
  23. package/build/tools/admin.js.map +1 -0
  24. package/build/tools/args.d.ts +2 -0
  25. package/build/tools/args.js +12 -0
  26. package/build/tools/args.js.map +1 -0
  27. package/build/tools/attachments.d.ts +138 -0
  28. package/build/tools/attachments.js +170 -0
  29. package/build/tools/attachments.js.map +1 -0
  30. package/build/tools/backup-restore.d.ts +144 -0
  31. package/build/tools/backup-restore.js +223 -0
  32. package/build/tools/backup-restore.js.map +1 -0
  33. package/build/tools/bulk-pages.d.ts +103 -0
  34. package/build/tools/bulk-pages.js +111 -0
  35. package/build/tools/bulk-pages.js.map +1 -0
  36. package/build/tools/color-schemes.d.ts +72 -0
  37. package/build/tools/color-schemes.js +121 -0
  38. package/build/tools/color-schemes.js.map +1 -0
  39. package/build/tools/content-structure.d.ts +164 -0
  40. package/build/tools/content-structure.js +220 -0
  41. package/build/tools/content-structure.js.map +1 -0
  42. package/build/tools/content.d.ts +194 -0
  43. package/build/tools/content.js +246 -0
  44. package/build/tools/content.js.map +1 -0
  45. package/build/tools/errors.d.ts +3 -0
  46. package/build/tools/errors.js +55 -0
  47. package/build/tools/errors.js.map +1 -0
  48. package/build/tools/index-management.d.ts +30 -0
  49. package/build/tools/index-management.js +64 -0
  50. package/build/tools/index-management.js.map +1 -0
  51. package/build/tools/labels.d.ts +108 -0
  52. package/build/tools/labels.js +160 -0
  53. package/build/tools/labels.js.map +1 -0
  54. package/build/tools/permissions.d.ts +554 -0
  55. package/build/tools/permissions.js +194 -0
  56. package/build/tools/permissions.js.map +1 -0
  57. package/build/tools/spaces-admin.d.ts +225 -0
  58. package/build/tools/spaces-admin.js +288 -0
  59. package/build/tools/spaces-admin.js.map +1 -0
  60. package/build/tools/spaces-pages.d.ts +103 -0
  61. package/build/tools/spaces-pages.js +150 -0
  62. package/build/tools/spaces-pages.js.map +1 -0
  63. package/build/tools/system.d.ts +42 -0
  64. package/build/tools/system.js +101 -0
  65. package/build/tools/system.js.map +1 -0
  66. package/build/tools/users-groups.d.ts +216 -0
  67. package/build/tools/users-groups.js +274 -0
  68. package/build/tools/users-groups.js.map +1 -0
  69. package/build/tools/webhooks.d.ts +105 -0
  70. package/build/tools/webhooks.js +124 -0
  71. package/build/tools/webhooks.js.map +1 -0
  72. package/build/version.d.ts +7 -0
  73. package/build/version.js +17 -0
  74. package/build/version.js.map +1 -0
  75. package/docs/api-catalog.yaml +2388 -0
  76. package/package.json +59 -0
  77. package/skills/content.md +85 -0
  78. package/skills/instance-maintenance.md +59 -0
  79. package/skills/permissions.md +47 -0
  80. package/skills/spaces-admin.md +59 -0
  81. package/skills/spaces-pages.md +24 -0
  82. package/skills/system.md +34 -0
  83. package/skills/users-groups.md +55 -0
  84. package/skills/webhooks.md +25 -0
@@ -0,0 +1,160 @@
1
+ import { z } from "zod";
2
+ import { withConfluenceErrorHandling } from "./errors.js";
3
+ import { jsonDetailBlock, MAX_LIST_RESULTS } from "./spaces-pages.js";
4
+ function projectLabel(raw) {
5
+ return { id: raw.id, name: raw.name, prefix: raw.prefix ?? null };
6
+ }
7
+ function projectLabelList(data) {
8
+ return (data.results ?? []).slice(0, MAX_LIST_RESULTS).map(projectLabel);
9
+ }
10
+ export const ListPageLabelsArgsSchema = z.object({ pageId: z.string().min(1) });
11
+ export async function listPageLabels(client, args) {
12
+ return withConfluenceErrorHandling(async () => {
13
+ const response = await client.get(`/rest/api/content/${encodeURIComponent(args.pageId)}/label`);
14
+ const labels = projectLabelList(response.data);
15
+ return {
16
+ content: [
17
+ { type: "text", text: `✅ ${labels.length} label(s) on page ${args.pageId}` },
18
+ jsonDetailBlock(labels),
19
+ ],
20
+ };
21
+ });
22
+ }
23
+ export const AddPageLabelsArgsSchema = z.object({
24
+ pageId: z.string().min(1),
25
+ names: z.array(z.string().min(1)).min(1),
26
+ });
27
+ export async function addPageLabels(client, args) {
28
+ return withConfluenceErrorHandling(async () => {
29
+ const response = await client.post(`/rest/api/content/${encodeURIComponent(args.pageId)}/label`, args.names.map((name) => ({ name })));
30
+ const labels = projectLabelList(response.data);
31
+ return {
32
+ content: [
33
+ { type: "text", text: `✅ Label(s) added to page ${args.pageId}; ${labels.length} label(s) now present` },
34
+ jsonDetailBlock(labels),
35
+ ],
36
+ };
37
+ });
38
+ }
39
+ export const DeletePageLabelArgsSchema = z.object({ pageId: z.string().min(1), label: z.string().min(1) });
40
+ export async function deletePageLabel(client, args) {
41
+ return withConfluenceErrorHandling(async () => {
42
+ await client.delete(`/rest/api/content/${encodeURIComponent(args.pageId)}/label/${encodeURIComponent(args.label)}`);
43
+ return { content: [{ type: "text", text: `✅ Label "${args.label}" removed from page ${args.pageId}` }] };
44
+ });
45
+ }
46
+ export const GetRelatedLabelsArgsSchema = z.object({ labelName: z.string().min(1) });
47
+ export async function getRelatedLabels(client, args) {
48
+ return withConfluenceErrorHandling(async () => {
49
+ const response = await client.get(`/rest/api/label/${encodeURIComponent(args.labelName)}/related`);
50
+ const labels = projectLabelList(response.data);
51
+ return {
52
+ content: [
53
+ { type: "text", text: `✅ ${labels.length} label(s) related to "${args.labelName}"` },
54
+ jsonDetailBlock(labels),
55
+ ],
56
+ };
57
+ });
58
+ }
59
+ export const SearchLabelsArgsSchema = z.object({
60
+ spaceKey: z.string().optional(),
61
+ owner: z.string().optional(),
62
+ namespace: z.string().optional(),
63
+ labelName: z.string().optional(),
64
+ });
65
+ export async function searchLabels(client, args) {
66
+ return withConfluenceErrorHandling(async () => {
67
+ const response = await client.get("/rest/api/label/labels", {
68
+ spaceKey: args.spaceKey,
69
+ owner: args.owner,
70
+ namespace: args.namespace,
71
+ labelName: args.labelName,
72
+ });
73
+ const labels = projectLabelList(response.data);
74
+ return {
75
+ content: [
76
+ { type: "text", text: `✅ ${labels.length} label(s) found` },
77
+ jsonDetailBlock(labels),
78
+ ],
79
+ };
80
+ });
81
+ }
82
+ export const GetPopularLabelsArgsSchema = z.object({});
83
+ export async function getPopularLabels(client, _args) {
84
+ return withConfluenceErrorHandling(async () => {
85
+ const response = await client.get("/rest/api/label/popular");
86
+ const labels = projectLabelList(response.data);
87
+ return {
88
+ content: [
89
+ { type: "text", text: `✅ ${labels.length} popular label(s)` },
90
+ jsonDetailBlock(labels),
91
+ ],
92
+ };
93
+ });
94
+ }
95
+ export const GetRecentLabelsArgsSchema = z.object({});
96
+ export async function getRecentLabels(client, _args) {
97
+ return withConfluenceErrorHandling(async () => {
98
+ const response = await client.get("/rest/api/label/recent");
99
+ const labels = projectLabelList(response.data);
100
+ return {
101
+ content: [
102
+ { type: "text", text: `✅ ${labels.length} recently used label(s)` },
103
+ jsonDetailBlock(labels),
104
+ ],
105
+ };
106
+ });
107
+ }
108
+ export const ListSpaceLabelsArgsSchema = z.object({ spaceKey: z.string().min(1) });
109
+ export async function listSpaceLabels(client, args) {
110
+ return withConfluenceErrorHandling(async () => {
111
+ const response = await client.get(`/rest/api/space/${encodeURIComponent(args.spaceKey)}/labels`);
112
+ const labels = projectLabelList(response.data);
113
+ return {
114
+ content: [
115
+ { type: "text", text: `✅ ${labels.length} label(s) in space ${args.spaceKey}` },
116
+ jsonDetailBlock(labels),
117
+ ],
118
+ };
119
+ });
120
+ }
121
+ export const GetSpaceRelatedLabelsArgsSchema = z.object({ spaceKey: z.string().min(1), labelName: z.string().min(1) });
122
+ export async function getSpaceRelatedLabels(client, args) {
123
+ return withConfluenceErrorHandling(async () => {
124
+ const response = await client.get(`/rest/api/space/${encodeURIComponent(args.spaceKey)}/labels/${encodeURIComponent(args.labelName)}/related`);
125
+ const labels = projectLabelList(response.data);
126
+ return {
127
+ content: [
128
+ { type: "text", text: `✅ ${labels.length} label(s) related to "${args.labelName}" in space ${args.spaceKey}` },
129
+ jsonDetailBlock(labels),
130
+ ],
131
+ };
132
+ });
133
+ }
134
+ export const GetSpacePopularLabelsArgsSchema = z.object({ spaceKey: z.string().min(1) });
135
+ export async function getSpacePopularLabels(client, args) {
136
+ return withConfluenceErrorHandling(async () => {
137
+ const response = await client.get(`/rest/api/space/${encodeURIComponent(args.spaceKey)}/labels/popular`);
138
+ const labels = projectLabelList(response.data);
139
+ return {
140
+ content: [
141
+ { type: "text", text: `✅ ${labels.length} popular label(s) in space ${args.spaceKey}` },
142
+ jsonDetailBlock(labels),
143
+ ],
144
+ };
145
+ });
146
+ }
147
+ export const GetSpaceRecentLabelsArgsSchema = z.object({ spaceKey: z.string().min(1) });
148
+ export async function getSpaceRecentLabels(client, args) {
149
+ return withConfluenceErrorHandling(async () => {
150
+ const response = await client.get(`/rest/api/space/${encodeURIComponent(args.spaceKey)}/labels/recent`);
151
+ const labels = projectLabelList(response.data);
152
+ return {
153
+ content: [
154
+ { type: "text", text: `✅ ${labels.length} recently used label(s) in space ${args.spaceKey}` },
155
+ jsonDetailBlock(labels),
156
+ ],
157
+ };
158
+ });
159
+ }
160
+ //# sourceMappingURL=labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/tools/labels.ts"],"names":[],"mappings":"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"}