@crypto512/jicon-mcp 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.
Files changed (103) hide show
  1. package/.env.example +9 -0
  2. package/.jicon.json.custom +21 -0
  3. package/.jicon.json.example +15 -0
  4. package/.jicon.json.readonly +15 -0
  5. package/CLAUDE.md +596 -0
  6. package/CONTRIBUTING.md +371 -0
  7. package/DEVELOPMENT.md +400 -0
  8. package/LICENSE +21 -0
  9. package/README.md +300 -0
  10. package/TOOL_LIST.md +435 -0
  11. package/dist/config/constants.d.ts +14 -0
  12. package/dist/config/constants.d.ts.map +1 -0
  13. package/dist/config/constants.js +18 -0
  14. package/dist/config/constants.js.map +1 -0
  15. package/dist/config/loader.d.ts +35 -0
  16. package/dist/config/loader.d.ts.map +1 -0
  17. package/dist/config/loader.js +108 -0
  18. package/dist/config/loader.js.map +1 -0
  19. package/dist/config/types.d.ts +130 -0
  20. package/dist/config/types.d.ts.map +1 -0
  21. package/dist/config/types.js +32 -0
  22. package/dist/config/types.js.map +1 -0
  23. package/dist/confluence/client.d.ts +30 -0
  24. package/dist/confluence/client.d.ts.map +1 -0
  25. package/dist/confluence/client.js +176 -0
  26. package/dist/confluence/client.js.map +1 -0
  27. package/dist/confluence/defaults.d.ts +23 -0
  28. package/dist/confluence/defaults.d.ts.map +1 -0
  29. package/dist/confluence/defaults.js +29 -0
  30. package/dist/confluence/defaults.js.map +1 -0
  31. package/dist/confluence/formatters.d.ts +22 -0
  32. package/dist/confluence/formatters.d.ts.map +1 -0
  33. package/dist/confluence/formatters.js +125 -0
  34. package/dist/confluence/formatters.js.map +1 -0
  35. package/dist/confluence/tools.d.ts +266 -0
  36. package/dist/confluence/tools.d.ts.map +1 -0
  37. package/dist/confluence/tools.js +376 -0
  38. package/dist/confluence/tools.js.map +1 -0
  39. package/dist/confluence/types.d.ts +122 -0
  40. package/dist/confluence/types.d.ts.map +1 -0
  41. package/dist/confluence/types.js +5 -0
  42. package/dist/confluence/types.js.map +1 -0
  43. package/dist/index.d.ts +6 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +161 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/jira/client.d.ts +46 -0
  48. package/dist/jira/client.d.ts.map +1 -0
  49. package/dist/jira/client.js +178 -0
  50. package/dist/jira/client.js.map +1 -0
  51. package/dist/jira/defaults.d.ts +19 -0
  52. package/dist/jira/defaults.d.ts.map +1 -0
  53. package/dist/jira/defaults.js +57 -0
  54. package/dist/jira/defaults.js.map +1 -0
  55. package/dist/jira/formatters.d.ts +22 -0
  56. package/dist/jira/formatters.d.ts.map +1 -0
  57. package/dist/jira/formatters.js +128 -0
  58. package/dist/jira/formatters.js.map +1 -0
  59. package/dist/jira/tools.d.ts +334 -0
  60. package/dist/jira/tools.d.ts.map +1 -0
  61. package/dist/jira/tools.js +372 -0
  62. package/dist/jira/tools.js.map +1 -0
  63. package/dist/jira/types.d.ts +110 -0
  64. package/dist/jira/types.d.ts.map +1 -0
  65. package/dist/jira/types.js +5 -0
  66. package/dist/jira/types.js.map +1 -0
  67. package/dist/permissions/filter.d.ts +30 -0
  68. package/dist/permissions/filter.d.ts.map +1 -0
  69. package/dist/permissions/filter.js +89 -0
  70. package/dist/permissions/filter.js.map +1 -0
  71. package/dist/permissions/tool-registry.d.ts +49 -0
  72. package/dist/permissions/tool-registry.d.ts.map +1 -0
  73. package/dist/permissions/tool-registry.js +111 -0
  74. package/dist/permissions/tool-registry.js.map +1 -0
  75. package/dist/tempo/client.d.ts +32 -0
  76. package/dist/tempo/client.d.ts.map +1 -0
  77. package/dist/tempo/client.js +125 -0
  78. package/dist/tempo/client.js.map +1 -0
  79. package/dist/tempo/formatters.d.ts +30 -0
  80. package/dist/tempo/formatters.d.ts.map +1 -0
  81. package/dist/tempo/formatters.js +172 -0
  82. package/dist/tempo/formatters.js.map +1 -0
  83. package/dist/tempo/tools.d.ts +184 -0
  84. package/dist/tempo/tools.d.ts.map +1 -0
  85. package/dist/tempo/tools.js +392 -0
  86. package/dist/tempo/tools.js.map +1 -0
  87. package/dist/tempo/types.d.ts +98 -0
  88. package/dist/tempo/types.d.ts.map +1 -0
  89. package/dist/tempo/types.js +5 -0
  90. package/dist/tempo/types.js.map +1 -0
  91. package/dist/types.d.ts +27 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +6 -0
  94. package/dist/types.js.map +1 -0
  95. package/dist/utils/http-client.d.ts +22 -0
  96. package/dist/utils/http-client.d.ts.map +1 -0
  97. package/dist/utils/http-client.js +137 -0
  98. package/dist/utils/http-client.js.map +1 -0
  99. package/dist/utils/response-formatter.d.ts +8 -0
  100. package/dist/utils/response-formatter.d.ts.map +1 -0
  101. package/dist/utils/response-formatter.js +38 -0
  102. package/dist/utils/response-formatter.js.map +1 -0
  103. package/package.json +50 -0
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Configuration types and schemas
3
+ */
4
+ import { z } from "zod";
5
+ export declare const AuthTypeSchema: z.ZodEnum<["basic", "bearer"]>;
6
+ export type AuthType = z.infer<typeof AuthTypeSchema>;
7
+ export declare const ServiceConfigSchema: z.ZodObject<{
8
+ url: z.ZodString;
9
+ username: z.ZodOptional<z.ZodString>;
10
+ token: z.ZodString;
11
+ authType: z.ZodOptional<z.ZodEnum<["basic", "bearer"]>>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ url: string;
14
+ token: string;
15
+ username?: string | undefined;
16
+ authType?: "basic" | "bearer" | undefined;
17
+ }, {
18
+ url: string;
19
+ token: string;
20
+ username?: string | undefined;
21
+ authType?: "basic" | "bearer" | undefined;
22
+ }>;
23
+ export type ServiceConfig = z.infer<typeof ServiceConfigSchema>;
24
+ export declare const PermissionModeSchema: z.ZodEnum<["full", "readonly", "custom"]>;
25
+ export type PermissionMode = z.infer<typeof PermissionModeSchema>;
26
+ export declare const PermissionsConfigSchema: z.ZodObject<{
27
+ mode: z.ZodDefault<z.ZodEnum<["full", "readonly", "custom"]>>;
28
+ whitelist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
29
+ blacklist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
30
+ }, "strip", z.ZodTypeAny, {
31
+ mode: "full" | "readonly" | "custom";
32
+ whitelist: string[];
33
+ blacklist: string[];
34
+ }, {
35
+ mode?: "full" | "readonly" | "custom" | undefined;
36
+ whitelist?: string[] | undefined;
37
+ blacklist?: string[] | undefined;
38
+ }>;
39
+ export type PermissionsConfig = z.infer<typeof PermissionsConfigSchema>;
40
+ export declare const ConfigSchema: z.ZodObject<{
41
+ jira: z.ZodOptional<z.ZodObject<{
42
+ url: z.ZodString;
43
+ username: z.ZodOptional<z.ZodString>;
44
+ token: z.ZodString;
45
+ authType: z.ZodOptional<z.ZodEnum<["basic", "bearer"]>>;
46
+ }, "strip", z.ZodTypeAny, {
47
+ url: string;
48
+ token: string;
49
+ username?: string | undefined;
50
+ authType?: "basic" | "bearer" | undefined;
51
+ }, {
52
+ url: string;
53
+ token: string;
54
+ username?: string | undefined;
55
+ authType?: "basic" | "bearer" | undefined;
56
+ }>>;
57
+ confluence: z.ZodOptional<z.ZodObject<{
58
+ url: z.ZodString;
59
+ username: z.ZodOptional<z.ZodString>;
60
+ token: z.ZodString;
61
+ authType: z.ZodOptional<z.ZodEnum<["basic", "bearer"]>>;
62
+ }, "strip", z.ZodTypeAny, {
63
+ url: string;
64
+ token: string;
65
+ username?: string | undefined;
66
+ authType?: "basic" | "bearer" | undefined;
67
+ }, {
68
+ url: string;
69
+ token: string;
70
+ username?: string | undefined;
71
+ authType?: "basic" | "bearer" | undefined;
72
+ }>>;
73
+ permissions: z.ZodDefault<z.ZodObject<{
74
+ mode: z.ZodDefault<z.ZodEnum<["full", "readonly", "custom"]>>;
75
+ whitelist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
76
+ blacklist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
77
+ }, "strip", z.ZodTypeAny, {
78
+ mode: "full" | "readonly" | "custom";
79
+ whitelist: string[];
80
+ blacklist: string[];
81
+ }, {
82
+ mode?: "full" | "readonly" | "custom" | undefined;
83
+ whitelist?: string[] | undefined;
84
+ blacklist?: string[] | undefined;
85
+ }>>;
86
+ }, "strip", z.ZodTypeAny, {
87
+ permissions: {
88
+ mode: "full" | "readonly" | "custom";
89
+ whitelist: string[];
90
+ blacklist: string[];
91
+ };
92
+ jira?: {
93
+ url: string;
94
+ token: string;
95
+ username?: string | undefined;
96
+ authType?: "basic" | "bearer" | undefined;
97
+ } | undefined;
98
+ confluence?: {
99
+ url: string;
100
+ token: string;
101
+ username?: string | undefined;
102
+ authType?: "basic" | "bearer" | undefined;
103
+ } | undefined;
104
+ }, {
105
+ jira?: {
106
+ url: string;
107
+ token: string;
108
+ username?: string | undefined;
109
+ authType?: "basic" | "bearer" | undefined;
110
+ } | undefined;
111
+ confluence?: {
112
+ url: string;
113
+ token: string;
114
+ username?: string | undefined;
115
+ authType?: "basic" | "bearer" | undefined;
116
+ } | undefined;
117
+ permissions?: {
118
+ mode?: "full" | "readonly" | "custom" | undefined;
119
+ whitelist?: string[] | undefined;
120
+ blacklist?: string[] | undefined;
121
+ } | undefined;
122
+ }>;
123
+ export type Config = z.infer<typeof ConfigSchema>;
124
+ export interface ApiConfig {
125
+ url: string;
126
+ username?: string;
127
+ token: string;
128
+ authType?: AuthType;
129
+ }
130
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc,gCAA8B,CAAC;AAC1D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAGtD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,oBAAoB,2CAAyC,CAAC;AAC3E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;EAIlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGxE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGlD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Configuration types and schemas
3
+ */
4
+ import { z } from "zod";
5
+ // Authentication type schema
6
+ export const AuthTypeSchema = z.enum(["basic", "bearer"]);
7
+ // Service configuration schema
8
+ export const ServiceConfigSchema = z.object({
9
+ url: z.string().url(),
10
+ username: z.string().optional(),
11
+ token: z.string(),
12
+ authType: AuthTypeSchema.optional(),
13
+ });
14
+ // Permission mode schema
15
+ export const PermissionModeSchema = z.enum(["full", "readonly", "custom"]);
16
+ // Permissions configuration schema
17
+ export const PermissionsConfigSchema = z.object({
18
+ mode: PermissionModeSchema.default("full"),
19
+ whitelist: z.array(z.string()).default([]),
20
+ blacklist: z.array(z.string()).default([]),
21
+ });
22
+ // Main configuration schema
23
+ export const ConfigSchema = z.object({
24
+ jira: ServiceConfigSchema.optional(),
25
+ confluence: ServiceConfigSchema.optional(),
26
+ permissions: PermissionsConfigSchema.default({
27
+ mode: "full",
28
+ whitelist: [],
29
+ blacklist: [],
30
+ }),
31
+ });
32
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG1D,+BAA+B;AAC/B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAIH,yBAAyB;AACzB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG3E,mCAAmC;AACnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAIH,4BAA4B;AAC5B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,uBAAuB,CAAC,OAAO,CAAC;QAC3C,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;KACd,CAAC;CACH,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Confluence API Client
3
+ */
4
+ import type { ApiConfig } from "../types.js";
5
+ import type { ConfluencePage, ConfluenceSearchResult, ConfluenceSpace, ConfluenceComment, ConfluenceAttachment } from "./types.js";
6
+ export declare class ConfluenceClient {
7
+ private http;
8
+ constructor(config: ApiConfig);
9
+ searchContent(cql: string, limit?: number, expand?: string[]): Promise<ConfluenceSearchResult>;
10
+ getPage(pageId: string, expand?: string[]): Promise<ConfluencePage>;
11
+ getPageByTitle(spaceKey: string, title: string, expand?: string[]): Promise<ConfluencePage | null>;
12
+ createPage(pageData: {
13
+ spaceKey: string;
14
+ title: string;
15
+ content: string;
16
+ parentId?: string;
17
+ labels?: string[];
18
+ }): Promise<ConfluencePage>;
19
+ updatePage(pageId: string, version: number, title?: string, content?: string, minorEdit?: boolean): Promise<ConfluencePage>;
20
+ deletePage(pageId: string): Promise<void>;
21
+ listSpaces(limit?: number, type?: "global" | "personal"): Promise<ConfluenceSpace[]>;
22
+ getSpace(spaceKey: string, expand?: string[]): Promise<ConfluenceSpace>;
23
+ getPageChildren(pageId: string, expand?: string[], limit?: number): Promise<ConfluencePage[]>;
24
+ addComment(pageId: string, comment: string): Promise<ConfluenceComment>;
25
+ getComments(pageId: string, limit?: number): Promise<ConfluenceComment[]>;
26
+ uploadAttachment(pageId: string, filePath: string, comment?: string): Promise<ConfluenceAttachment>;
27
+ listAttachments(pageId: string, limit?: number): Promise<ConfluenceAttachment[]>;
28
+ private addLabels;
29
+ }
30
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/confluence/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AASpB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAAa;gBAEb,MAAM,EAAE,SAAS;IAKvB,aAAa,CACjB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,MAA6B,EACpC,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,sBAAsB,CAAC;IAe5B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAanE,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAiB3B,UAAU,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,GAAG,OAAO,CAAC,cAAc,CAAC;IA8BrB,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,cAAc,CAAC;IAqBpB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,UAAU,CACd,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAC3B,OAAO,CAAC,eAAe,EAAE,CAAC;IAkBvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAcvE,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,EAAE,CAAC;IAmBtB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAevE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAgBzE,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAiB1B,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAiBpB,SAAS;CAKxB"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Confluence API Client
3
+ */
4
+ import { HttpClient } from "../utils/http-client.js";
5
+ import { DEFAULT_SEARCH_EXPAND, DEFAULT_PAGE_EXPAND, DEFAULT_SEARCH_LIMIT, } from "./defaults.js";
6
+ import { readFileSync } from "fs";
7
+ import FormData from "form-data";
8
+ export class ConfluenceClient {
9
+ http;
10
+ constructor(config) {
11
+ this.http = new HttpClient(config);
12
+ }
13
+ // Content search
14
+ async searchContent(cql, limit = DEFAULT_SEARCH_LIMIT, expand) {
15
+ const params = new URLSearchParams();
16
+ params.append("cql", cql);
17
+ params.append("limit", String(limit));
18
+ // Use default expand options if none specified to reduce response size
19
+ const expandToUse = expand && expand.length > 0 ? expand : DEFAULT_SEARCH_EXPAND;
20
+ params.append("expand", expandToUse.join(","));
21
+ return this.http.get(`/rest/api/content/search?${params.toString()}`);
22
+ }
23
+ // Page operations
24
+ async getPage(pageId, expand) {
25
+ const params = new URLSearchParams();
26
+ // Use default expand options if none specified to reduce response size
27
+ const expandToUse = expand && expand.length > 0 ? expand : DEFAULT_PAGE_EXPAND;
28
+ params.append("expand", expandToUse.join(","));
29
+ const queryString = params.toString();
30
+ const url = `/rest/api/content/${pageId}${queryString ? `?${queryString}` : ""}`;
31
+ return this.http.get(url);
32
+ }
33
+ async getPageByTitle(spaceKey, title, expand) {
34
+ const params = new URLSearchParams();
35
+ params.append("spaceKey", spaceKey);
36
+ params.append("title", title);
37
+ params.append("type", "page");
38
+ if (expand && expand.length > 0) {
39
+ params.append("expand", expand.join(","));
40
+ }
41
+ const response = await this.http.get(`/rest/api/content?${params.toString()}`);
42
+ return response.results[0] || null;
43
+ }
44
+ async createPage(pageData) {
45
+ const body = {
46
+ type: "page",
47
+ title: pageData.title,
48
+ space: { key: pageData.spaceKey },
49
+ body: {
50
+ storage: {
51
+ value: pageData.content,
52
+ representation: "storage",
53
+ },
54
+ },
55
+ };
56
+ if (pageData.parentId) {
57
+ body.ancestors = [{ id: pageData.parentId }];
58
+ }
59
+ const page = await this.http.post("/rest/api/content", body);
60
+ // Add labels if provided
61
+ if (pageData.labels && pageData.labels.length > 0) {
62
+ await this.addLabels(page.id, pageData.labels);
63
+ }
64
+ return page;
65
+ }
66
+ async updatePage(pageId, version, title, content, minorEdit = false) {
67
+ const currentPage = await this.getPage(pageId);
68
+ const body = {
69
+ version: { number: version + 1, minorEdit },
70
+ title: title || currentPage.title,
71
+ type: "page",
72
+ };
73
+ if (content) {
74
+ body.body = {
75
+ storage: {
76
+ value: content,
77
+ representation: "storage",
78
+ },
79
+ };
80
+ }
81
+ return this.http.put(`/rest/api/content/${pageId}`, body);
82
+ }
83
+ async deletePage(pageId) {
84
+ await this.http.delete(`/rest/api/content/${pageId}`);
85
+ }
86
+ // Space operations
87
+ async listSpaces(limit, type) {
88
+ const params = new URLSearchParams();
89
+ if (limit) {
90
+ params.append("limit", String(limit));
91
+ }
92
+ if (type) {
93
+ params.append("type", type);
94
+ }
95
+ const queryString = params.toString();
96
+ const url = `/rest/api/space${queryString ? `?${queryString}` : ""}`;
97
+ const response = await this.http.get(url);
98
+ return response.results;
99
+ }
100
+ async getSpace(spaceKey, expand) {
101
+ const params = new URLSearchParams();
102
+ if (expand && expand.length > 0) {
103
+ params.append("expand", expand.join(","));
104
+ }
105
+ const queryString = params.toString();
106
+ const url = `/rest/api/space/${spaceKey}${queryString ? `?${queryString}` : ""}`;
107
+ return this.http.get(url);
108
+ }
109
+ // Page hierarchy
110
+ async getPageChildren(pageId, expand, limit) {
111
+ const params = new URLSearchParams();
112
+ if (expand && expand.length > 0) {
113
+ params.append("expand", expand.join(","));
114
+ }
115
+ if (limit) {
116
+ params.append("limit", String(limit));
117
+ }
118
+ const queryString = params.toString();
119
+ const url = `/rest/api/content/${pageId}/child/page${queryString ? `?${queryString}` : ""}`;
120
+ const response = await this.http.get(url);
121
+ return response.results;
122
+ }
123
+ // Comments
124
+ async addComment(pageId, comment) {
125
+ const body = {
126
+ type: "comment",
127
+ container: { id: pageId, type: "page" },
128
+ body: {
129
+ storage: {
130
+ value: comment,
131
+ representation: "storage",
132
+ },
133
+ },
134
+ };
135
+ return this.http.post("/rest/api/content", body);
136
+ }
137
+ async getComments(pageId, limit) {
138
+ const params = new URLSearchParams();
139
+ params.append("expand", "body.storage");
140
+ if (limit) {
141
+ params.append("limit", String(limit));
142
+ }
143
+ const queryString = params.toString();
144
+ const url = `/rest/api/content/${pageId}/child/comment?${queryString}`;
145
+ const response = await this.http.get(url);
146
+ return response.results;
147
+ }
148
+ // Attachments
149
+ async uploadAttachment(pageId, filePath, comment) {
150
+ const fileData = readFileSync(filePath);
151
+ const formData = new FormData();
152
+ formData.append("file", fileData, { filename: filePath.split("/").pop() });
153
+ if (comment) {
154
+ formData.append("comment", comment);
155
+ }
156
+ // Note: This needs special handling for multipart/form-data
157
+ // The implementation here is simplified
158
+ return this.http.post(`/rest/api/content/${pageId}/child/attachment`, formData);
159
+ }
160
+ async listAttachments(pageId, limit) {
161
+ const params = new URLSearchParams();
162
+ if (limit) {
163
+ params.append("limit", String(limit));
164
+ }
165
+ const queryString = params.toString();
166
+ const url = `/rest/api/content/${pageId}/child/attachment${queryString ? `?${queryString}` : ""}`;
167
+ const response = await this.http.get(url);
168
+ return response.results;
169
+ }
170
+ // Labels
171
+ async addLabels(pageId, labels) {
172
+ const labelObjects = labels.map((name) => ({ prefix: "global", name }));
173
+ await this.http.post(`/rest/api/content/${pageId}/label`, labelObjects);
174
+ }
175
+ }
176
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/confluence/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AASrD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAO,gBAAgB;IACnB,IAAI,CAAa;IAEzB,YAAY,MAAiB;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,aAAa,CACjB,GAAW,EACX,QAAgB,oBAAoB,EACpC,MAAiB;QAEjB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtC,uEAAuE;QACvE,MAAM,WAAW,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC;QACjF,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,4BAA4B,MAAM,CAAC,QAAQ,EAAE,EAAE,CAChD,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,MAAiB;QAC7C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAErC,uEAAuE;QACvE,MAAM,WAAW,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/C,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,qBAAqB,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAEjF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,KAAa,EACb,MAAiB;QAEjB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE9B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAClC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,EAAE,CACzC,CAAC;QAEF,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAMhB;QACC,MAAM,IAAI,GAA4B;YACpC,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE;YACjC,IAAI,EAAE;gBACJ,OAAO,EAAE;oBACP,KAAK,EAAE,QAAQ,CAAC,OAAO;oBACvB,cAAc,EAAE,SAAS;iBAC1B;aACF;SACF,CAAC;QAEF,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAC/B,mBAAmB,EACnB,IAAI,CACL,CAAC;QAEF,yBAAyB;QACzB,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,UAAU,CACd,MAAc,EACd,OAAe,EACf,KAAc,EACd,OAAgB,EAChB,YAAqB,KAAK;QAE1B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/C,MAAM,IAAI,GAA4B;YACpC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,SAAS,EAAE;YAC3C,KAAK,EAAE,KAAK,IAAI,WAAW,CAAC,KAAK;YACjC,IAAI,EAAE,MAAM;SACb,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,GAAG;gBACV,OAAO,EAAE;oBACP,KAAK,EAAE,OAAO;oBACd,cAAc,EAAE,SAAS;iBAC1B;aACF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,qBAAqB,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,UAAU,CACd,KAAc,EACd,IAA4B;QAE5B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAErC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,kBAAkB,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAErE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiC,GAAG,CAAC,CAAC;QAC1E,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,MAAiB;QAChD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAErC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,mBAAmB,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAEjF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,MAAiB,EACjB,KAAc;QAEd,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAErC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,qBAAqB,MAAM,cAAc,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAE5F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgC,GAAG,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,WAAW;IACX,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAAe;QAC9C,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;YACvC,IAAI,EAAE;gBACJ,OAAO,EAAE;oBACP,KAAK,EAAE,OAAO;oBACd,cAAc,EAAE,SAAS;iBAC1B;aACF;SACF,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAoB,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,KAAc;QAC9C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAExC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,qBAAqB,MAAM,kBAAkB,WAAW,EAAE,CAAC;QAEvE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmC,GAAG,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,cAAc;IACd,KAAK,CAAC,gBAAgB,CACpB,MAAc,EACd,QAAgB,EAChB,OAAgB;QAEhB,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAE3E,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;QAED,4DAA4D;QAC5D,wCAAwC;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,qBAAqB,MAAM,mBAAmB,EAC9C,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,KAAc;QAEd,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAErC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,qBAAqB,MAAM,oBAAoB,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAElG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAClC,GAAG,CACJ,CAAC;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,SAAS;IACD,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,MAAgB;QACtD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAExE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,MAAM,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC1E,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Default configurations for Confluence API responses
3
+ * These defaults help reduce response size and improve performance
4
+ */
5
+ /**
6
+ * Default expand options for Confluence content search
7
+ * Only includes essential metadata
8
+ */
9
+ export declare const DEFAULT_SEARCH_EXPAND: string[];
10
+ /**
11
+ * Default expand options for getting a single page
12
+ * Includes body content and essential metadata
13
+ */
14
+ export declare const DEFAULT_PAGE_EXPAND: string[];
15
+ /**
16
+ * Default limit for search results
17
+ */
18
+ export declare const DEFAULT_SEARCH_LIMIT = 25;
19
+ /**
20
+ * Default limit for comments
21
+ */
22
+ export declare const DEFAULT_COMMENT_LIMIT = 10;
23
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/confluence/defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB,UAA0C,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,mBAAmB,UAM/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Default configurations for Confluence API responses
3
+ * These defaults help reduce response size and improve performance
4
+ */
5
+ /**
6
+ * Default expand options for Confluence content search
7
+ * Only includes essential metadata
8
+ */
9
+ export const DEFAULT_SEARCH_EXPAND = ["space", "version", "metadata.labels"];
10
+ /**
11
+ * Default expand options for getting a single page
12
+ * Includes body content and essential metadata
13
+ */
14
+ export const DEFAULT_PAGE_EXPAND = [
15
+ "body.storage",
16
+ "version",
17
+ "space",
18
+ "metadata.labels",
19
+ "ancestors",
20
+ ];
21
+ /**
22
+ * Default limit for search results
23
+ */
24
+ export const DEFAULT_SEARCH_LIMIT = 25;
25
+ /**
26
+ * Default limit for comments
27
+ */
28
+ export const DEFAULT_COMMENT_LIMIT = 10;
29
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/confluence/defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAE7E;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,cAAc;IACd,SAAS;IACT,OAAO;IACP,iBAAiB;IACjB,WAAW;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Response formatters for Confluence API responses
3
+ * Converts verbose API responses into concise, readable formats
4
+ */
5
+ import type { ConfluencePage, ConfluenceSearchResult, ConfluenceSpace } from "./types.js";
6
+ /**
7
+ * Format a single Confluence page into a concise, readable string
8
+ */
9
+ export declare function formatPage(page: ConfluencePage): string;
10
+ /**
11
+ * Format search results into a concise list
12
+ */
13
+ export declare function formatSearchResults(result: ConfluenceSearchResult): string;
14
+ /**
15
+ * Format a Confluence space
16
+ */
17
+ export declare function formatSpace(space: ConfluenceSpace): string;
18
+ /**
19
+ * Format a list of spaces
20
+ */
21
+ export declare function formatSpaces(spaces: ConfluenceSpace[]): string;
22
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/confluence/formatters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAuDvD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAmC1E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAyB1D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAoB9D"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Response formatters for Confluence API responses
3
+ * Converts verbose API responses into concise, readable formats
4
+ */
5
+ /**
6
+ * Format a single Confluence page into a concise, readable string
7
+ */
8
+ export function formatPage(page) {
9
+ const lines = [];
10
+ // Header
11
+ lines.push(`# ${page.title}`);
12
+ lines.push("");
13
+ // Basic info
14
+ lines.push("## Details");
15
+ lines.push(`- **Page ID**: ${page.id}`);
16
+ lines.push(`- **Space Key**: ${page.space?.key || "?"} (${page.space?.name || "Unknown"})`);
17
+ lines.push(`- **Type**: ${page.type}`);
18
+ if (page.version) {
19
+ lines.push(`- **Version**: ${page.version.number} (${page.version.when || ""})`);
20
+ if (page.version.by) {
21
+ lines.push(`- **Last Modified By**: ${page.version.by.displayName || "Unknown"}`);
22
+ }
23
+ }
24
+ // Labels
25
+ if (page.metadata?.labels?.results && page.metadata.labels.results.length > 0) {
26
+ lines.push("");
27
+ lines.push("## Labels");
28
+ lines.push(page.metadata.labels.results.map((label) => label.name).join(", "));
29
+ }
30
+ // Ancestors (breadcrumb)
31
+ if (page.ancestors && page.ancestors.length > 0) {
32
+ lines.push("");
33
+ lines.push("## Breadcrumb");
34
+ const breadcrumb = page.ancestors.map((a) => a.title).join(" > ");
35
+ lines.push(`${breadcrumb} > ${page.title}`);
36
+ }
37
+ // Content preview
38
+ if (page.body?.storage?.value) {
39
+ lines.push("");
40
+ lines.push("## Content Preview");
41
+ // Strip HTML tags for preview and limit to 500 characters
42
+ const content = page.body.storage.value
43
+ .replace(/<[^>]*>/g, " ")
44
+ .replace(/\s+/g, " ")
45
+ .trim();
46
+ lines.push(content.length > 500 ? content.substring(0, 500) + "..." : content);
47
+ }
48
+ lines.push("");
49
+ lines.push(`**Full URL**: ${page._links?.webui || "N/A"}`);
50
+ return lines.join("\n");
51
+ }
52
+ /**
53
+ * Format search results into a concise list
54
+ */
55
+ export function formatSearchResults(result) {
56
+ const lines = [];
57
+ lines.push(`# Search Results: ${result.size || result.results?.length || 0} found`);
58
+ lines.push("");
59
+ if (!result.results || result.results.length === 0) {
60
+ lines.push("No pages found.");
61
+ return lines.join("\n");
62
+ }
63
+ lines.push("💡 **Tip**: To view a page, use `confluence_get_page(pageId: \"<ID>\")` with the ID shown below");
64
+ lines.push("");
65
+ result.results.forEach((page) => {
66
+ lines.push(`## ${page.title}`);
67
+ lines.push(` **Page ID**: ${page.id} | **Space Key**: ${page.space?.key || "?"} (${page.space?.name || "?"})`);
68
+ lines.push(` Type: ${page.type}`);
69
+ // Short excerpt if available
70
+ if (page.body?.storage?.value) {
71
+ const preview = page.body.storage.value
72
+ .replace(/<[^>]*>/g, " ")
73
+ .replace(/\s+/g, " ")
74
+ .trim()
75
+ .substring(0, 150);
76
+ lines.push(` Preview: ${preview}...`);
77
+ }
78
+ lines.push("");
79
+ });
80
+ return lines.join("\n");
81
+ }
82
+ /**
83
+ * Format a Confluence space
84
+ */
85
+ export function formatSpace(space) {
86
+ const lines = [];
87
+ lines.push(`# ${space.name}`);
88
+ lines.push("");
89
+ lines.push("## Details");
90
+ lines.push(`- **Key**: ${space.key}`);
91
+ lines.push(`- **Type**: ${space.type}`);
92
+ lines.push(`- **ID**: ${space.id}`);
93
+ if (space.description?.plain?.value) {
94
+ lines.push("");
95
+ lines.push("## Description");
96
+ const desc = space.description.plain.value.length > 300
97
+ ? space.description.plain.value.substring(0, 300) + "..."
98
+ : space.description.plain.value;
99
+ lines.push(desc);
100
+ }
101
+ lines.push("");
102
+ lines.push(`**Homepage**: ${space.homepage?.title || "N/A"}`);
103
+ return lines.join("\n");
104
+ }
105
+ /**
106
+ * Format a list of spaces
107
+ */
108
+ export function formatSpaces(spaces) {
109
+ const lines = [];
110
+ lines.push(`# Confluence Spaces (${spaces.length})`);
111
+ lines.push("");
112
+ spaces.forEach((space) => {
113
+ lines.push(`## ${space.key}: ${space.name}`);
114
+ lines.push(` Type: ${space.type}`);
115
+ if (space.description?.plain?.value) {
116
+ const shortDesc = space.description.plain.value.length > 100
117
+ ? space.description.plain.value.substring(0, 100) + "..."
118
+ : space.description.plain.value;
119
+ lines.push(` ${shortDesc}`);
120
+ }
121
+ lines.push("");
122
+ });
123
+ return lines.join("\n");
124
+ }
125
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/confluence/formatters.ts"],"names":[],"mappings":"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"}