@jagadeesh52423/atlassian-mcp-server 1.1.1 → 1.2.1
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/.env.example +6 -1
- package/README.md +26 -14
- package/dist/config.d.ts +2 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +0 -4
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +0 -5
- package/dist/constants.js.map +1 -1
- package/dist/formatters/adf-formatter.d.ts +35 -4
- package/dist/formatters/adf-formatter.d.ts.map +1 -1
- package/dist/formatters/adf-formatter.js +691 -156
- package/dist/formatters/adf-formatter.js.map +1 -1
- package/dist/formatters/adf-to-text.d.ts +9 -0
- package/dist/formatters/adf-to-text.d.ts.map +1 -0
- package/dist/formatters/adf-to-text.js +25 -0
- package/dist/formatters/adf-to-text.js.map +1 -0
- package/dist/formatters/index.d.ts +7 -1
- package/dist/formatters/index.d.ts.map +1 -1
- package/dist/formatters/index.js +7 -1
- package/dist/formatters/index.js.map +1 -1
- package/dist/formatters/markdown-to-adf.d.ts +6 -0
- package/dist/formatters/markdown-to-adf.d.ts.map +1 -0
- package/dist/formatters/markdown-to-adf.js +27 -0
- package/dist/formatters/markdown-to-adf.js.map +1 -0
- package/dist/handlers/base-handler.d.ts +5 -0
- package/dist/handlers/base-handler.d.ts.map +1 -0
- package/dist/handlers/base-handler.js +7 -0
- package/dist/handlers/base-handler.js.map +1 -0
- package/dist/handlers/bitbucket-handlers.d.ts +9 -1
- package/dist/handlers/bitbucket-handlers.d.ts.map +1 -1
- package/dist/handlers/bitbucket-handlers.js +51 -191
- package/dist/handlers/bitbucket-handlers.js.map +1 -1
- package/dist/handlers/confluence-handlers.d.ts +2 -1
- package/dist/handlers/confluence-handlers.d.ts.map +1 -1
- package/dist/handlers/confluence-handlers.js +46 -243
- package/dist/handlers/confluence-handlers.js.map +1 -1
- package/dist/handlers/jira-handlers.d.ts +9 -1
- package/dist/handlers/jira-handlers.d.ts.map +1 -1
- package/dist/handlers/jira-handlers.js +144 -575
- package/dist/handlers/jira-handlers.js.map +1 -1
- package/dist/index.js +123 -194
- package/dist/index.js.map +1 -1
- package/dist/registry/tool-registry.d.ts +11 -0
- package/dist/registry/tool-registry.d.ts.map +1 -0
- package/dist/registry/tool-registry.js +24 -0
- package/dist/registry/tool-registry.js.map +1 -0
- package/dist/services/bitbucket.d.ts +7 -0
- package/dist/services/bitbucket.d.ts.map +1 -1
- package/dist/services/bitbucket.js +36 -74
- package/dist/services/bitbucket.js.map +1 -1
- package/dist/services/confluence.d.ts +52 -10
- package/dist/services/confluence.d.ts.map +1 -1
- package/dist/services/confluence.js +247 -311
- package/dist/services/confluence.js.map +1 -1
- package/dist/services/jira/agile.d.ts +33 -0
- package/dist/services/jira/agile.d.ts.map +1 -0
- package/dist/services/jira/agile.js +118 -0
- package/dist/services/jira/agile.js.map +1 -0
- package/dist/services/jira/attachments.d.ts +7 -0
- package/dist/services/jira/attachments.d.ts.map +1 -0
- package/dist/services/jira/attachments.js +26 -0
- package/dist/services/jira/attachments.js.map +1 -0
- package/dist/services/jira/base.d.ts +8 -0
- package/dist/services/jira/base.d.ts.map +1 -0
- package/dist/services/jira/base.js +10 -0
- package/dist/services/jira/base.js.map +1 -0
- package/dist/services/jira/comments.d.ts +8 -0
- package/dist/services/jira/comments.d.ts.map +1 -0
- package/dist/services/jira/comments.js +33 -0
- package/dist/services/jira/comments.js.map +1 -0
- package/dist/services/jira/issues.d.ts +32 -0
- package/dist/services/jira/issues.d.ts.map +1 -0
- package/dist/services/jira/issues.js +177 -0
- package/dist/services/jira/issues.js.map +1 -0
- package/dist/services/jira/labels.d.ts +7 -0
- package/dist/services/jira/labels.d.ts.map +1 -0
- package/dist/services/jira/labels.js +21 -0
- package/dist/services/jira/labels.js.map +1 -0
- package/dist/services/jira/links.d.ts +9 -0
- package/dist/services/jira/links.d.ts.map +1 -0
- package/dist/services/jira/links.js +55 -0
- package/dist/services/jira/links.js.map +1 -0
- package/dist/services/jira/metadata.d.ts +8 -0
- package/dist/services/jira/metadata.d.ts.map +1 -0
- package/dist/services/jira/metadata.js +32 -0
- package/dist/services/jira/metadata.js.map +1 -0
- package/dist/services/jira/subtasks.d.ts +9 -0
- package/dist/services/jira/subtasks.d.ts.map +1 -0
- package/dist/services/jira/subtasks.js +32 -0
- package/dist/services/jira/subtasks.js.map +1 -0
- package/dist/services/jira/transitions.d.ts +16 -0
- package/dist/services/jira/transitions.d.ts.map +1 -0
- package/dist/services/jira/transitions.js +203 -0
- package/dist/services/jira/transitions.js.map +1 -0
- package/dist/services/jira/versions.d.ts +19 -0
- package/dist/services/jira/versions.d.ts.map +1 -0
- package/dist/services/jira/versions.js +62 -0
- package/dist/services/jira/versions.js.map +1 -0
- package/dist/services/jira/watchers.d.ts +7 -0
- package/dist/services/jira/watchers.d.ts.map +1 -0
- package/dist/services/jira/watchers.js +23 -0
- package/dist/services/jira/watchers.js.map +1 -0
- package/dist/services/jira/worklogs.d.ts +8 -0
- package/dist/services/jira/worklogs.d.ts.map +1 -0
- package/dist/services/jira/worklogs.js +37 -0
- package/dist/services/jira/worklogs.js.map +1 -0
- package/dist/services/jira.d.ts +58 -103
- package/dist/services/jira.d.ts.map +1 -1
- package/dist/services/jira.js +100 -1481
- package/dist/services/jira.js.map +1 -1
- package/dist/snapshot/decorators/bitbucket-snapshots.d.ts +4 -0
- package/dist/snapshot/decorators/bitbucket-snapshots.d.ts.map +1 -0
- package/dist/snapshot/decorators/bitbucket-snapshots.js +65 -0
- package/dist/snapshot/decorators/bitbucket-snapshots.js.map +1 -0
- package/dist/snapshot/decorators/confluence-snapshots.d.ts +4 -0
- package/dist/snapshot/decorators/confluence-snapshots.d.ts.map +1 -0
- package/dist/snapshot/decorators/confluence-snapshots.js +71 -0
- package/dist/snapshot/decorators/confluence-snapshots.js.map +1 -0
- package/dist/snapshot/decorators/jira-snapshots.d.ts +4 -0
- package/dist/snapshot/decorators/jira-snapshots.d.ts.map +1 -0
- package/dist/snapshot/decorators/jira-snapshots.js +171 -0
- package/dist/snapshot/decorators/jira-snapshots.js.map +1 -0
- package/dist/snapshot/index.d.ts +7 -0
- package/dist/snapshot/index.d.ts.map +1 -0
- package/dist/snapshot/index.js +7 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/snapshot/snapshot-decorator.d.ts +4 -0
- package/dist/snapshot/snapshot-decorator.d.ts.map +1 -0
- package/dist/snapshot/snapshot-decorator.js +74 -0
- package/dist/snapshot/snapshot-decorator.js.map +1 -0
- package/dist/snapshot/snapshot-manager.d.ts +9 -0
- package/dist/snapshot/snapshot-manager.d.ts.map +1 -0
- package/dist/snapshot/snapshot-manager.js +56 -0
- package/dist/snapshot/snapshot-manager.js.map +1 -0
- package/dist/snapshot/snapshot-types.d.ts +26 -0
- package/dist/snapshot/snapshot-types.d.ts.map +1 -0
- package/dist/snapshot/snapshot-types.js +2 -0
- package/dist/snapshot/snapshot-types.js.map +1 -0
- package/dist/tools/bitbucket-tools.d.ts.map +1 -1
- package/dist/tools/bitbucket-tools.js +30 -0
- package/dist/tools/bitbucket-tools.js.map +1 -1
- package/dist/tools/confluence-tools.js +12 -12
- package/dist/tools/confluence-tools.js.map +1 -1
- package/dist/tools/jira-tools.d.ts.map +1 -1
- package/dist/tools/jira-tools.js +35 -3
- package/dist/tools/jira-tools.js.map +1 -1
- package/dist/types.d.ts +17 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -2
package/.env.example
CHANGED
|
@@ -23,4 +23,9 @@ ATLASSIAN_DOMAIN=your-domain.atlassian.net
|
|
|
23
23
|
ATLASSIAN_EMAIL=your-email@example.com
|
|
24
24
|
ATLASSIAN_API_TOKEN=your-fallback-api-token
|
|
25
25
|
ATLASSIAN_CLIENT_ID=your-client-id
|
|
26
|
-
ATLASSIAN_CLIENT_SECRET=your-client-secret
|
|
26
|
+
ATLASSIAN_CLIENT_SECRET=your-client-secret
|
|
27
|
+
|
|
28
|
+
# Snapshot Safety Net
|
|
29
|
+
MCP_SNAPSHOTS_ENABLED=true
|
|
30
|
+
MCP_SNAPSHOT_DIR=~/.atlassian-mcp-snapshots
|
|
31
|
+
MCP_SNAPSHOT_RETENTION_DAYS=30
|
package/README.md
CHANGED
|
@@ -5,6 +5,17 @@
|
|
|
5
5
|
|
|
6
6
|
A comprehensive Model Context Protocol (MCP) server that provides AI assistants with access to Atlassian APIs including Jira, Confluence, and Bitbucket. **84 tools** across 3 services — the most complete Atlassian MCP server available.
|
|
7
7
|
|
|
8
|
+
## Confluence content format (v1.2.0+)
|
|
9
|
+
|
|
10
|
+
Confluence input/output uses **ADF (Atlassian Document Format)**, not storage HTML or wiki markup:
|
|
11
|
+
|
|
12
|
+
- **Input** — `confluence_create_page`, `confluence_update_page`, `confluence_add_comment`, `confluence_update_comment` accept **Markdown**. The server converts it to ADF using the official `@atlaskit/editor-markdown-transformer` and submits via the Confluence v2 API.
|
|
13
|
+
- **Output** — `confluence_get_page`, `confluence_get_pages_by_space`, `confluence_get_comments` return the body as a parsed **ADF JSON** document (an object, not a string). `ConfluencePage.content` and `ConfluenceComment.body` are typed `any` to reflect the JSON shape.
|
|
14
|
+
- **CQL search** — `confluence_search_pages` still uses the **v1** REST endpoint (`/wiki/rest/api/search`) because v2 has no CQL equivalent. The `content` field on search hits is opaque legacy storage HTML; fetch the page by id with `confluence_get_page` for the ADF body.
|
|
15
|
+
- **Image embedding** — inline image embedding (`confluence_embed_image`, and `confluence_create_page` with `images: [...]`) is **not supported in v1.2.0** because ADF media nodes require Atlassian Media API tokens. Calling either path returns an explicit error. Use `confluence_add_attachment` to upload files and reference them from the Confluence UI.
|
|
16
|
+
|
|
17
|
+
This is a breaking change from v1.1.x, which returned Confluence storage-format HTML strings. See "Phase 4 cleanup" in `docs/superpowers/specs/2026-05-08-adf-formatter-replacement-design.md`.
|
|
18
|
+
|
|
8
19
|
## Feature Comparison
|
|
9
20
|
|
|
10
21
|
How we stack up against the official Atlassian MCP server and the popular sooperset/mcp-atlassian:
|
|
@@ -20,11 +31,13 @@ How we stack up against the official Atlassian MCP server and the popular sooper
|
|
|
20
31
|
| Get/Add comments | YES | YES | YES |
|
|
21
32
|
| **Update/Delete comment** | **YES** | NO | NO |
|
|
22
33
|
| Get/Add/Delete attachments | YES | NO | YES |
|
|
23
|
-
|
|
|
24
|
-
|
|
|
34
|
+
| Embed image (with positioning) | NO¹ | NO | NO |
|
|
35
|
+
| Create page with inline images | NO¹ | NO | NO |
|
|
25
36
|
| Get/Add/Remove labels | YES | NO | Partial |
|
|
26
37
|
| **Page version history** | YES | NO | YES |
|
|
27
38
|
|
|
39
|
+
¹ Removed in v1.2.0 alongside the Confluence v2 / ADF migration. ADF media nodes need the Atlassian Media API; reinstating inline embedding is tracked as future work. Use `confluence_add_attachment` to upload files.
|
|
40
|
+
|
|
28
41
|
### Jira
|
|
29
42
|
|
|
30
43
|
| Feature | Ours | Official Atlassian | sooperset |
|
|
@@ -62,8 +75,8 @@ How we stack up against the official Atlassian MCP server and the popular sooper
|
|
|
62
75
|
- **Only MCP server covering all 3 Atlassian products** — Confluence + Jira + Bitbucket
|
|
63
76
|
- **Deepest CRUD coverage** — update/delete on comments, worklogs, labels where competitors only do create/read
|
|
64
77
|
- **Smart Field Handling** — AI-driven field suggestions during Jira transitions, unique to this server
|
|
65
|
-
- **Image embedding** — Confluence image embedding with positioning control, unique to this server
|
|
66
78
|
- **84 total tools** vs ~45 (Official) and ~58 (sooperset)
|
|
79
|
+
- **ADF / Confluence v2 native** — pages and comments are stored and returned as ADF, the format Confluence Cloud uses internally; markdown input is converted via the official `@atlaskit/editor-markdown-transformer`
|
|
67
80
|
|
|
68
81
|
## Features
|
|
69
82
|
|
|
@@ -74,10 +87,9 @@ How we stack up against the official Atlassian MCP server and the popular sooper
|
|
|
74
87
|
- **Child Pages**: Get child pages of a parent page
|
|
75
88
|
- **Page History**: View version history of a page
|
|
76
89
|
- **Attachments**: Add, list, and delete attachments
|
|
77
|
-
- **Comments**: Full CRUD operations on page comments
|
|
90
|
+
- **Comments**: Full CRUD operations on page footer comments
|
|
78
91
|
- **Labels**: Get, add, and remove labels on pages
|
|
79
|
-
- **
|
|
80
|
-
- Full support for Confluence storage format
|
|
92
|
+
- **ADF / v2 API**: input is markdown (converted to ADF via official @atlaskit transformers); output is ADF JSON. CQL search stays on v1.
|
|
81
93
|
|
|
82
94
|
### Jira Integration (48 tools)
|
|
83
95
|
- Search issues by text, filters, or JQL query
|
|
@@ -291,10 +303,10 @@ Add the following to your Claude Desktop configuration file:
|
|
|
291
303
|
|
|
292
304
|
| Tool | Description |
|
|
293
305
|
|------|-------------|
|
|
294
|
-
| `confluence_search_pages` | Search pages by text query |
|
|
295
|
-
| `confluence_get_page` | Get specific page by ID |
|
|
296
|
-
| `confluence_create_page` | Create new page
|
|
297
|
-
| `confluence_update_page` | Update existing page |
|
|
306
|
+
| `confluence_search_pages` | Search pages by CQL text query (legacy v1; result `content` is opaque storage HTML) |
|
|
307
|
+
| `confluence_get_page` | Get specific page by ID — returns ADF JSON `content` |
|
|
308
|
+
| `confluence_create_page` | Create new page (markdown → ADF). Inline image embedding not supported in v1.2.0. |
|
|
309
|
+
| `confluence_update_page` | Update existing page (markdown → ADF) |
|
|
298
310
|
| `confluence_delete_page` | Delete a page |
|
|
299
311
|
| `confluence_get_spaces` | List all spaces |
|
|
300
312
|
| `confluence_get_pages_by_space` | Get pages from specific space |
|
|
@@ -303,10 +315,10 @@ Add the following to your Claude Desktop configuration file:
|
|
|
303
315
|
| `confluence_get_attachments` | List attachments on a page |
|
|
304
316
|
| `confluence_add_attachment` | Add attachment to a page |
|
|
305
317
|
| `confluence_delete_attachment` | Delete attachment from a page |
|
|
306
|
-
| `confluence_embed_image` |
|
|
307
|
-
| `confluence_get_comments` | Get comments on a page |
|
|
308
|
-
| `confluence_add_comment` | Add comment
|
|
309
|
-
| `confluence_update_comment` | Update existing comment |
|
|
318
|
+
| `confluence_embed_image` | NOT SUPPORTED in v1.2.0 — returns an error. Use `confluence_add_attachment`. |
|
|
319
|
+
| `confluence_get_comments` | Get footer comments on a page — returns ADF JSON `body` |
|
|
320
|
+
| `confluence_add_comment` | Add footer comment (markdown → ADF) |
|
|
321
|
+
| `confluence_update_comment` | Update existing footer comment (markdown → ADF) |
|
|
310
322
|
| `confluence_delete_comment` | Delete comment from a page |
|
|
311
323
|
| `confluence_get_labels` | Get labels on a page |
|
|
312
324
|
| `confluence_add_labels` | Add labels to a page |
|
package/dist/config.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { ConfluenceConfig, JiraConfig, AtlassianConfig, BitbucketConfig } from './types.js';
|
|
1
|
+
import { ConfluenceConfig, JiraConfig, AtlassianConfig, BitbucketConfig, SnapshotConfig } from './types.js';
|
|
2
2
|
export declare const confluenceConfig: ConfluenceConfig;
|
|
3
3
|
export declare const jiraConfig: JiraConfig;
|
|
4
4
|
export declare const atlassianConfig: AtlassianConfig;
|
|
5
5
|
export declare const bitbucketConfig: BitbucketConfig;
|
|
6
|
+
export declare const snapshotConfig: SnapshotConfig;
|
|
6
7
|
export declare function validateConfig(): void;
|
|
7
8
|
export declare function getConfluenceAuth(): string;
|
|
8
9
|
export declare function getJiraAuth(): string;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5G,eAAO,MAAM,gBAAgB,EAAE,gBAI9B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAMxB,CAAC;AAGF,eAAO,MAAM,eAAe,EAAE,eAM7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAI7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAI5B,CAAC;AAEF,wBAAgB,cAAc,IAAI,IAAI,CAmBrC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAKzC;AAGD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
package/dist/config.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import dotenv from 'dotenv';
|
|
2
|
+
import * as os from 'os';
|
|
3
|
+
import * as path from 'path';
|
|
2
4
|
dotenv.config();
|
|
3
5
|
export const confluenceConfig = {
|
|
4
6
|
domain: process.env.CONFLUENCE_DOMAIN || process.env.ATLASSIAN_DOMAIN || '',
|
|
@@ -25,6 +27,11 @@ export const bitbucketConfig = {
|
|
|
25
27
|
username: process.env.BITBUCKET_USERNAME || '',
|
|
26
28
|
apiToken: process.env.BITBUCKET_API_TOKEN || '',
|
|
27
29
|
};
|
|
30
|
+
export const snapshotConfig = {
|
|
31
|
+
enabled: process.env.MCP_SNAPSHOTS_ENABLED !== 'false',
|
|
32
|
+
dir: process.env.MCP_SNAPSHOT_DIR || path.join(os.homedir(), '.atlassian-mcp-snapshots'),
|
|
33
|
+
retentionDays: parseInt(process.env.MCP_SNAPSHOT_RETENTION_DAYS || '30', 10),
|
|
34
|
+
};
|
|
28
35
|
export function validateConfig() {
|
|
29
36
|
const errors = [];
|
|
30
37
|
// Check if we have at least one service configured
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -30,10 +30,6 @@ export declare const API_ENDPOINTS: {
|
|
|
30
30
|
readonly JIRA_ATTACHMENT: "/rest/api/3/attachment";
|
|
31
31
|
readonly BITBUCKET_BASE_URL: "https://api.bitbucket.org/2.0";
|
|
32
32
|
};
|
|
33
|
-
export declare const CONFLUENCE_EXPAND: {
|
|
34
|
-
readonly PAGE_DEFAULT: readonly ["body.storage", "version", "space"];
|
|
35
|
-
readonly COMMENT_DEFAULT: readonly ["body.storage", "version", "history"];
|
|
36
|
-
};
|
|
37
33
|
export declare const JIRA_FIELDS: {
|
|
38
34
|
readonly SEARCH_FIELDS: "summary,description,status,assignee,created,updated";
|
|
39
35
|
readonly ISSUE_FIELDS: readonly ["summary", "description", "status", "assignee", "created", "updated"];
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAGX,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC;AAGX,eAAO,MAAM,aAAa;;;;;;;;;;;;CAiBhB,CAAC;AAGX,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAGX,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC;AAGX,eAAO,MAAM,aAAa;;;;;;;;;;;;CAiBhB,CAAC;AAGX,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAGX,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAGX,eAAO,MAAM,cAAc;;oCAEF,MAAM;kCACR,MAAM;CACnB,CAAC;AAGX,eAAO,MAAM,KAAK;;;;;;;;;;;;;;CAcR,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -36,11 +36,6 @@ export const API_ENDPOINTS = {
|
|
|
36
36
|
// Bitbucket
|
|
37
37
|
BITBUCKET_BASE_URL: 'https://api.bitbucket.org/2.0',
|
|
38
38
|
};
|
|
39
|
-
// Confluence expand options
|
|
40
|
-
export const CONFLUENCE_EXPAND = {
|
|
41
|
-
PAGE_DEFAULT: ['body.storage', 'version', 'space'],
|
|
42
|
-
COMMENT_DEFAULT: ['body.storage', 'version', 'history'],
|
|
43
|
-
};
|
|
44
39
|
// Jira field defaults
|
|
45
40
|
export const JIRA_FIELDS = {
|
|
46
41
|
SEARCH_FIELDS: 'summary,description,status,assignee,created,updated',
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,sBAAsB;AACtB,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,wBAAwB,EAAE,EAAE;IAC5B,kBAAkB,EAAE,EAAE;IACtB,uBAAuB,EAAE,EAAE;IAC3B,iBAAiB,EAAE,EAAE;CACb,CAAC;AAEX,iBAAiB;AACjB,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,MAAM;IACvB,gBAAgB,EAAE,MAAM;IACxB,oBAAoB,EAAE,KAAK;IAC3B,wBAAwB,EAAE,OAAO;IACjC,kBAAkB,EAAE,MAAM;IAC1B,qBAAqB,EAAE,MAAM;CACrB,CAAC;AAEX,gBAAgB;AAChB,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,aAAa;IACb,kBAAkB,EAAE,wBAAwB;IAC5C,yBAAyB,EAAE,+BAA+B;IAC1D,gBAAgB,EAAE,sBAAsB;IAExC,OAAO;IACP,WAAW,EAAE,wBAAwB;IACrC,UAAU,EAAE,mBAAmB;IAC/B,YAAY,EAAE,qBAAqB;IACnC,gBAAgB,EAAE,yBAAyB;IAC3C,eAAe,EAAE,uBAAuB;IACxC,oBAAoB,EAAE,2BAA2B;IACjD,eAAe,EAAE,wBAAwB;IAEzC,YAAY;IACZ,kBAAkB,EAAE,+BAA+B;CAC3C,CAAC;AAEX,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,sBAAsB;AACtB,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,wBAAwB,EAAE,EAAE;IAC5B,kBAAkB,EAAE,EAAE;IACtB,uBAAuB,EAAE,EAAE;IAC3B,iBAAiB,EAAE,EAAE;CACb,CAAC;AAEX,iBAAiB;AACjB,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,MAAM;IACvB,gBAAgB,EAAE,MAAM;IACxB,oBAAoB,EAAE,KAAK;IAC3B,wBAAwB,EAAE,OAAO;IACjC,kBAAkB,EAAE,MAAM;IAC1B,qBAAqB,EAAE,MAAM;CACrB,CAAC;AAEX,gBAAgB;AAChB,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,aAAa;IACb,kBAAkB,EAAE,wBAAwB;IAC5C,yBAAyB,EAAE,+BAA+B;IAC1D,gBAAgB,EAAE,sBAAsB;IAExC,OAAO;IACP,WAAW,EAAE,wBAAwB;IACrC,UAAU,EAAE,mBAAmB;IAC/B,YAAY,EAAE,qBAAqB;IACnC,gBAAgB,EAAE,yBAAyB;IAC3C,eAAe,EAAE,uBAAuB;IACxC,oBAAoB,EAAE,2BAA2B;IACjD,eAAe,EAAE,wBAAwB;IAEzC,YAAY;IACZ,kBAAkB,EAAE,+BAA+B;CAC3C,CAAC;AAEX,sBAAsB;AACtB,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,aAAa,EAAE,qDAAqD;IACpE,YAAY,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC;CAC5E,CAAC;AAEX,4BAA4B;AAC5B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;CACd,CAAC;AAEX,iBAAiB;AACjB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,kBAAkB,EAAE,iDAAiD;IACrE,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,mBAAmB,IAAI,EAAE;IAC3D,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,iBAAiB,IAAI,EAAE;CAC/C,CAAC;AAEX,wCAAwC;AACxC,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;CACN,CAAC"}
|
|
@@ -3,23 +3,54 @@
|
|
|
3
3
|
* Handles conversion between plain text/markdown and ADF format used by Jira API v3
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Extracts plain text from ADF (Atlassian Document Format) body
|
|
6
|
+
* Extracts plain text from ADF (Atlassian Document Format) body.
|
|
7
|
+
* Follows sooperset's recursive '\n'-joining approach.
|
|
7
8
|
*/
|
|
8
9
|
export declare function extractTextFromADF(body: any): string;
|
|
9
10
|
/**
|
|
10
|
-
* Formats wiki markup to cleaner text
|
|
11
|
+
* Formats wiki markup to cleaner markdown text.
|
|
12
|
+
*
|
|
13
|
+
* Handles (in order):
|
|
14
|
+
* - {code} / {noformat} blocks → fenced code (extracted as placeholders first
|
|
15
|
+
* so their contents are never touched by later transforms)
|
|
16
|
+
* - Wiki tables ||h|| → markdown tables (pre-pass)
|
|
17
|
+
* - {quote} → > blockquote
|
|
18
|
+
* - {note}/{warning}/{info}/{tip}→ labelled blockquote
|
|
19
|
+
* - [text|url] / [~user] / [url] → markdown links / @mention / bare URL
|
|
20
|
+
* - \\ → newline
|
|
21
|
+
* - # item / ## item → 1. / nested ordered list (wiki list syntax)
|
|
22
|
+
* - h1. … h6. → # … ###### (must come AFTER list conversion)
|
|
23
|
+
* - ---- / {panel} / {color} / checkboxes (existing)
|
|
11
24
|
*/
|
|
12
25
|
export declare function formatWikiMarkup(text: string): string;
|
|
13
26
|
/**
|
|
14
27
|
* Parses inline formatting like **bold**, *italic*, `code`, {{code}}
|
|
28
|
+
* When wikiMode is true, single *text* is treated as bold (wiki convention).
|
|
29
|
+
* Also handles [text|url] wiki links and [text](url) markdown links.
|
|
15
30
|
*/
|
|
16
|
-
export declare function parseInlineFormatting(text: string): any[];
|
|
31
|
+
export declare function parseInlineFormatting(text: string, wikiMode?: boolean): any[];
|
|
17
32
|
/**
|
|
18
|
-
* Enhanced description parser that converts text to proper ADF format
|
|
33
|
+
* Enhanced description parser that converts text to proper ADF format.
|
|
34
|
+
* Auto-detects wiki markup vs markdown and adjusts parsing accordingly.
|
|
19
35
|
*/
|
|
20
36
|
export declare function parseDescriptionToADF(description: string): any;
|
|
21
37
|
/**
|
|
22
38
|
* Convert description to wiki markup text format
|
|
23
39
|
*/
|
|
24
40
|
export declare function parseDescriptionToWikiMarkup(description: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Converts LLM-produced markdown to Confluence storage format (XHTML).
|
|
43
|
+
* If the input already looks like storage format it is returned unchanged.
|
|
44
|
+
*
|
|
45
|
+
* Supported elements:
|
|
46
|
+
* - ATX headings (#–######)
|
|
47
|
+
* - Fenced code blocks (``` lang … ```) → ac:structured-macro "code"
|
|
48
|
+
* - Blockquotes (> …)
|
|
49
|
+
* - Unordered lists (- / * / +)
|
|
50
|
+
* - Ordered lists (1. …)
|
|
51
|
+
* - Markdown tables
|
|
52
|
+
* - Horizontal rules (---, ***, ___)
|
|
53
|
+
* - Inline: **bold**, *italic*, ~~strike~~, `code`, [text](url)
|
|
54
|
+
*/
|
|
55
|
+
export declare function markdownToConfluenceStorage(markdown: string): string;
|
|
25
56
|
//# sourceMappingURL=adf-formatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adf-formatter.d.ts","sourceRoot":"","sources":["../../src/formatters/adf-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"adf-formatter.d.ts","sourceRoot":"","sources":["../../src/formatters/adf-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyLH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAKpD;AAqDD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqErD;AAqBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,GAAG,EAAE,CAwKpF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CA0Y9D;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA6HxE;AA0DD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2HpE"}
|