{"_id":"@circuitwall/atlassian-langchain","_rev":"2-22ba7ee2b71f2794504a2f56c892eb2b","name":"@circuitwall/atlassian-langchain","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@circuitwall/atlassian-langchain","version":"0.1.0","keywords":["atlassian","jira","confluence","langchain","langgraph","tool","tools","agent","rest","adf"],"author":{"name":"Andrew Ge Wu"},"license":"Apache-2.0","_id":"@circuitwall/atlassian-langchain@0.1.0","maintainers":[{"name":"andrew-ge-wu","email":"andrew.ge.wu@gmail.com"}],"homepage":"https://github.com/CircuitWall/jarela/tree/main/packages/atlassian-langchain#readme","bugs":{"url":"https://github.com/CircuitWall/jarela/issues"},"dist":{"shasum":"8abac623a5d5ad0fe3ebbea74af381bd7e9155d7","tarball":"https://registry.npmjs.org/@circuitwall/atlassian-langchain/-/atlassian-langchain-0.1.0.tgz","fileCount":10,"integrity":"sha512-FZXmMCHtpJIM2wm9s8VK4d3c3dorJQD5VYzvPNl/heWs5U85G75THUtH+ThXIBkKZminif3b04og4VteUHLE+Q==","signatures":[{"sig":"MEQCIBkW9Ip5g00QWfYuLitiP4KkGDy/275x6EE75vCBCIYSAiBLvWjcTqMWp5YpKPevmxRwUHfFZ61ayV8sGFyMP7nM2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1059241},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"dc129620c3305558f2d09528484fce11e4eb82e3","scripts":{"build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"andrew-ge-wu","email":"andrew.ge.wu@gmail.com"},"repository":{"url":"git+https://github.com/CircuitWall/jarela.git","type":"git","directory":"packages/atlassian-langchain"},"_npmVersion":"11.9.0","description":"LangChain tools for Atlassian Jira and Confluence Cloud — direct REST calls, no MCP, proxy-aware. Extracted from Jarela.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.0","tsup":"^8.3.5","rimraf":"^6.0.1","typescript":"^5.7.2","@langchain/core":"^1.1.46"},"peerDependencies":{"zod":">=3.23.0 <5","@langchain/core":">=0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/atlassian-langchain_0.1.0_1781339089011_0.3529339769047317","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@circuitwall/atlassian-langchain","version":"1.0.0","description":"LangChain tools for Atlassian Jira and Confluence Cloud — direct REST calls, no MCP, proxy-aware. Extracted from Jarela.","license":"Apache-2.0","author":{"name":"Andrew Ge Wu"},"homepage":"https://github.com/CircuitWall/jarela/tree/main/packages/atlassian-langchain#readme","repository":{"type":"git","url":"git+https://github.com/CircuitWall/jarela.git","directory":"packages/atlassian-langchain"},"bugs":{"url":"https://github.com/CircuitWall/jarela/issues"},"keywords":["atlassian","jira","confluence","langchain","langgraph","tool","tools","agent","rest","adf"],"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"engines":{"node":">=20"},"scripts":{"build":"tsup","clean":"rimraf dist","test":"vitest run","typecheck":"tsc --noEmit"},"peerDependencies":{"@langchain/core":">=0.3.0","zod":">=3.23.0 <5"},"devDependencies":{"@langchain/core":"^1.1.46","rimraf":"^6.0.1","tsup":"^8.3.5","typescript":"^5.7.2","zod":"^3.25.0"},"gitHead":"874b6462f437c525bed90feb1b21b55a2189f324","_id":"@circuitwall/atlassian-langchain@1.0.0","_nodeVersion":"22.22.3","_npmVersion":"11.17.0","dist":{"integrity":"sha512-nJPPh9tMQ8gycyZCrXdnxodItJLJ7w8zyo+7WDlbLymwHq0cbytrbQut6MVDVHFxlMGz0lRnHMHHNWJWN0Q5fg==","shasum":"dbeeb0d825ae3e7d78819784c187f2a6c1e737f4","tarball":"https://registry.npmjs.org/@circuitwall/atlassian-langchain/-/atlassian-langchain-1.0.0.tgz","fileCount":10,"unpackedSize":1046562,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@circuitwall%2fatlassian-langchain@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCs323h0qOo97uS1fi7ddStQfPVmRQ/6DpED0MNzAUfFwIgG9tVNBwKWfA+caUG8+zxgFf8NrUCDvKrGTGQBhruPpo="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c1013706-4ef1-4a62-8d9d-9f038b78beeb"}},"directories":{},"maintainers":[{"name":"andrew-ge-wu","email":"andrew.ge.wu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/atlassian-langchain_1.0.0_1781374525653_0.6446426812071089"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-13T08:24:48.875Z","modified":"2026-06-13T18:15:26.090Z","0.1.0":"2026-06-13T08:24:49.206Z","1.0.0":"2026-06-13T18:15:25.819Z"},"bugs":{"url":"https://github.com/CircuitWall/jarela/issues"},"author":{"name":"Andrew Ge Wu"},"license":"Apache-2.0","homepage":"https://github.com/CircuitWall/jarela/tree/main/packages/atlassian-langchain#readme","keywords":["atlassian","jira","confluence","langchain","langgraph","tool","tools","agent","rest","adf"],"repository":{"type":"git","url":"git+https://github.com/CircuitWall/jarela.git","directory":"packages/atlassian-langchain"},"description":"LangChain tools for Atlassian Jira and Confluence Cloud — direct REST calls, no MCP, proxy-aware. Extracted from Jarela.","maintainers":[{"name":"andrew-ge-wu","email":"andrew.ge.wu@gmail.com"}],"readme":"# @circuitwall/atlassian-langchain\n\nLangChain tools for **Atlassian Jira** and **Confluence Cloud** — direct REST\ncalls, no MCP server required, works through corporate `HTTPS_PROXY`.\n\nExtracted from [Jarela](https://github.com/CircuitWall/jarela) so any\nLangGraph / LangChain.js agent can give an LLM the same Jira + Confluence\ntoolbelt without running the full Jarela stack.\n\n## Why\n\nThe official `mcp-atlassian` server is great, but on locked-down corporate\nnetworks the npm/PyPI install step is often blocked and the extra process is\noperationally awkward. This package skips MCP entirely: every tool is a tiny\n`fetch()` against the Atlassian REST API, gated by HTTP Basic auth (email +\nAPI token). Same network path your browser already uses.\n\n64 tools, two products, one install.\n\n## Install\n\n```bash\nnpm i @circuitwall/atlassian-langchain @langchain/core zod\n```\n\n`@langchain/core` and `zod` are peer dependencies — bring whichever versions\nyour agent already uses (core ≥ 0.3, zod ≥ 3.23).\n\n## Quick start\n\n```ts\nimport {\n  setAuthResolver,\n  atlassianReadTools,\n  atlassianWriteTools,\n} from \"@circuitwall/atlassian-langchain\";\n\n// Option A — env vars (default). No setup needed if these are set:\n//   ATLASSIAN_URL=https://your-team.atlassian.net\n//   ATLASSIAN_EMAIL=you@example.com\n//   ATLASSIAN_API_TOKEN=...\n\n// Option B — supply your own resolver (e.g. read from a secrets store):\nsetAuthResolver(() => ({\n  url: \"https://your-team.atlassian.net\",\n  email: \"you@example.com\",\n  apiToken: process.env.MY_VAULT_ATLASSIAN_TOKEN!,\n}));\n\n// Hand the tools to your agent:\nimport { createReactAgent } from \"@langchain/langgraph/prebuilt\";\nconst agent = createReactAgent({\n  llm: yourModel,\n  tools: [...atlassianReadTools, ...atlassianWriteTools],\n});\n```\n\nEach tool resolves auth lazily on every call, so it's safe to import the\ntools at module load and configure the resolver later.\n\n## What's included\n\n### Jira (42 tools)\n\n- **Search & read** — `jira_search` (JQL), `jira_get_issue`,\n  `jira_find_user`, `jira_get_comments`, `jira_list_worklogs`,\n  `jira_get_changelog`, `jira_get_attachment_content`.\n- **Issue lifecycle** — `jira_create_issue`, `jira_create_issues_bulk`,\n  `jira_update_issue`, `jira_delete_issue`, `jira_transition_issue`,\n  `jira_add_worklog`.\n- **Comments & attachments** — `jira_add_comment`, `jira_update_comment`,\n  `jira_delete_comment`, `jira_upload_attachment`, `jira_delete_attachment`.\n- **Links** — `jira_link_issues`, `jira_delete_link`,\n  `jira_add_remote_link`.\n- **Agile** — `jira_list_boards`, `jira_get_board`, `jira_list_sprints`,\n  `jira_get_sprint`, `jira_create_sprint`, `jira_update_sprint`,\n  `jira_delete_sprint`, `jira_move_issues_to_sprint`,\n  `jira_move_issues_to_backlog`, `jira_rank_issues`.\n- **Project metadata** — `jira_list_projects`, `jira_get_project`,\n  `jira_list_versions`, `jira_create_version`, `jira_update_version`,\n  `jira_list_components`, `jira_create_component`, `jira_list_meta`.\n\n### Confluence (22 tools)\n\n- **Read** — `confluence_search` (CQL), `confluence_get_page`,\n  `confluence_get_page_by_title`, `confluence_get_page_children`,\n  `confluence_get_page_ancestors`, `confluence_list_spaces`,\n  `confluence_get_comments`, `confluence_list_attachments`,\n  `confluence_get_labels`, `confluence_get_attachment_content`.\n- **Write** — `confluence_create_page`, `confluence_update_page`,\n  `confluence_delete_page`, `confluence_move_page`,\n  `confluence_add_comment`, `confluence_update_comment`,\n  `confluence_delete_comment`, `confluence_upload_attachment`,\n  `confluence_delete_attachment`, `confluence_add_label`,\n  `confluence_remove_label`.\n\n### Capability arrays\n\nFor agents that want to gate by capability:\n\n```ts\nimport {\n  atlassianReadTools,    // 26 read-only tools\n  atlassianWriteTools,   // 37 mutating tools\n  atlassianExecuteTools, // 1 status-change tool (jira_transition_issue)\n} from \"@circuitwall/atlassian-langchain\";\n```\n\n### Pure helpers\n\n- `confluenceTextToStorage(text)` — plain text → Confluence storage XHTML.\n- `parseV2NextCursor(linksNext)` — extract the opaque cursor from a v2\n  `_links.next` URL.\n- `resolveCustomFieldNames(inputs, fields)` — map display names / IDs to\n  Jira field IDs.\n- `extractFieldValue(raw, renderedHTML)` — coerce a Jira field value into\n  something an LLM can read.\n- `validateSprintTransition(currentState, targetState)` — guard against\n  invalid sprint state transitions.\n\n### Low-level escape hatch\n\n```ts\nimport { atlassianFetch } from \"@circuitwall/atlassian-langchain\";\n\nconst data = await atlassianFetch(\n  { url: \"...\", email: \"...\", apiToken: \"...\" },\n  \"/rest/api/3/myself\",\n);\n```\n\nUse this when you need a Jira/Confluence endpoint that isn't wrapped as a\ntool yet. Returns the parsed JSON, or `{ error, url }` on non-2xx.\n\n## Auth tokens\n\nAtlassian Cloud uses HTTP Basic with **email + API token** (NOT password).\nCreate one at <https://id.atlassian.com/manage-profile/security/api-tokens>.\nServer / Data Center editions are not currently supported — open an issue\nif you need them.\n\n## License\n\nApache-2.0. See [LICENSE](./LICENSE).\n","readmeFilename":"README.md"}