{"_id":"@circuitwall/jira-align-langchain","_rev":"2-728ec3ecc482984e0041d19b824e9c99","name":"@circuitwall/jira-align-langchain","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@circuitwall/jira-align-langchain","version":"0.1.0","keywords":["atlassian","jira-align","safe","portfolio","langchain","langgraph","tool","tools","agent","rest"],"author":{"name":"Andrew Ge Wu"},"license":"Apache-2.0","_id":"@circuitwall/jira-align-langchain@0.1.0","maintainers":[{"name":"andrew-ge-wu","email":"andrew.ge.wu@gmail.com"}],"homepage":"https://github.com/CircuitWall/jarela/tree/main/packages/jira-align-langchain#readme","bugs":{"url":"https://github.com/CircuitWall/jarela/issues"},"dist":{"shasum":"ae55ee3b9c9dbe2ac9fcafa72b0556e100abd30f","tarball":"https://registry.npmjs.org/@circuitwall/jira-align-langchain/-/jira-align-langchain-0.1.0.tgz","fileCount":10,"integrity":"sha512-JoB9ngo49fjGMfPfwD7FSNzBoG+SNRA7PvmMb+S17AqpQKlLEzepiUZyFO7C6B6JzsaespH8Cs3neDGACclxDA==","signatures":[{"sig":"MEYCIQCspkCwBXHWtKWVUu/z/7zATcbyihc8i+Vois+XQiFt4wIhANG0B1L10pLiC/+2V3E1laine0IYLfUGtoF0YsBeEJAl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318442},"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":"ee82f514a48880a5ed817c26581e41114abd8b74","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/jira-align-langchain"},"_npmVersion":"11.9.0","description":"LangChain tools for Atlassian Jira Align (portfolio / SAFe agile) — 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/jira-align-langchain_0.1.0_1781348340297_0.08972590552687887","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@circuitwall/jira-align-langchain","version":"1.0.0","description":"LangChain tools for Atlassian Jira Align (portfolio / SAFe agile) — 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/jira-align-langchain#readme","repository":{"type":"git","url":"git+https://github.com/CircuitWall/jarela.git","directory":"packages/jira-align-langchain"},"bugs":{"url":"https://github.com/CircuitWall/jarela/issues"},"keywords":["atlassian","jira-align","safe","portfolio","langchain","langgraph","tool","tools","agent","rest"],"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/jira-align-langchain@1.0.0","_nodeVersion":"22.22.3","_npmVersion":"11.17.0","dist":{"integrity":"sha512-M2VOMu6QK2TkiZHZmkN+IuB2aMFkVSN9CNWWV+HLgwoqEdtUvHXvJdrty3vmxCn0pHcVPJREXtx1CTDsPb0gCw==","shasum":"4e99a5dcb44d6acf40bffdf1d5a86a8e6f7c50a1","tarball":"https://registry.npmjs.org/@circuitwall/jira-align-langchain/-/jira-align-langchain-1.0.0.tgz","fileCount":10,"unpackedSize":314731,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@circuitwall%2fjira-align-langchain@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHOV5iiSsKY94Np/9wY75VTO2w1xz3b8NV3YqF+6ZAyNAiEAlDUi9eYNvVBt9gFH6cyIJHQkB3CdbL1RfFtud7DCmLE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8336800-84b5-4d31-95cd-35ab0cf73fe2"}},"directories":{},"maintainers":[{"name":"andrew-ge-wu","email":"andrew.ge.wu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jira-align-langchain_1.0.0_1781374533601_0.9843037349111912"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-13T10:59:00.132Z","modified":"2026-06-13T18:15:34.032Z","0.1.0":"2026-06-13T10:59:00.449Z","1.0.0":"2026-06-13T18:15:33.736Z"},"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/jira-align-langchain#readme","keywords":["atlassian","jira-align","safe","portfolio","langchain","langgraph","tool","tools","agent","rest"],"repository":{"type":"git","url":"git+https://github.com/CircuitWall/jarela.git","directory":"packages/jira-align-langchain"},"description":"LangChain tools for Atlassian Jira Align (portfolio / SAFe agile) — direct REST calls, no MCP, proxy-aware. Extracted from Jarela.","maintainers":[{"name":"andrew-ge-wu","email":"andrew.ge.wu@gmail.com"}],"readme":"# @circuitwall/jira-align-langchain\n\nLangChain tools for Atlassian Jira Align (portfolio / SAFe agile) — direct REST calls, no MCP, proxy-aware.\n\n> Extracted from [Jarela](https://github.com/CircuitWall/jarela). Works in any\n> Node 20+ LangChain.js / LangGraph project. Inherits whatever HTTP proxy +\n> CA bundle the host runtime configures, so it works on locked-down corp\n> networks where the MCP install path is blocked.\n\n## Install\n\n```bash\nnpm install @circuitwall/jira-align-langchain @langchain/core zod\n```\n\n`@langchain/core` and `zod` are peer dependencies — bring your own version.\n\n## Quick start\n\n```ts\nimport {\n  setAuthResolver,\n  jiraAlignSearchItemsTool,\n  jiraAlignGetItemTool,\n  jiraAlignTools,\n} from \"@circuitwall/jira-align-langchain\";\n\n// Option A: rely on env vars (JIRA_ALIGN_URL, JIRA_ALIGN_TOKEN). Nothing to do.\n\n// Option B: plug in your own credential source (vault, UI form, …).\nsetAuthResolver(() => ({\n  url: \"https://acme.jiraalign.com\",\n  apiToken: process.env.MY_JIRA_ALIGN_TOKEN ?? \"\",\n}));\n\n// Use individual tools …\nconst result = await jiraAlignGetItemTool.invoke({\n  type: \"feature\",\n  item_id: \"12345\",\n});\n\n// … or pass the whole array to a LangGraph agent.\nconst agent = await createReactAgent({ llm, tools: [...jiraAlignTools] });\n```\n\n## What's in the box\n\n22 tools covering Jira Align v2:\n\n### Work items (read)\n- `jira_align_get_item` — fetch a single item\n- `jira_align_search_items` — OData-filterable list per type\n- `jira_align_list_children` — walk the hierarchy by parent_id\n\n### Work items (write)\n- `jira_align_create_item`\n- `jira_align_update_item`\n- `jira_align_delete_item` (confirm-gated)\n- `jira_align_transition_item` — workflow state change\n\n### Comments\n- `jira_align_list_comments`\n- `jira_align_add_comment`\n- `jira_align_update_comment`\n- `jira_align_delete_comment` (confirm-gated)\n\n### Hierarchy entities\n- `jira_align_list_entities` — programs / teams / releases / sprints / portfolios / value streams\n- `jira_align_get_entity`\n- `jira_align_create_entity`\n- `jira_align_update_entity`\n- `jira_align_delete_entity` (confirm-gated)\n\n### Dependencies (cross-item links)\n- `jira_align_list_dependencies`\n- `jira_align_create_dependency`\n- `jira_align_delete_dependency` (confirm-gated)\n\n## Capability groups\n\nFor tool-policy systems that need read / write / execute partitions:\n\n```ts\nimport {\n  jiraAlignReadTools,    // 7 read-only tools\n  jiraAlignWriteTools,   // 14 mutating tools (incl. deletes)\n  jiraAlignExecuteTools, // 1 transition tool\n} from \"@circuitwall/jira-align-langchain\";\n```\n\n## Low-level escape hatch\n\nFor endpoints not yet wrapped as tools:\n\n```ts\nimport { jiraAlignFetch, resolveJiraAlignAuthFromEnv } from \"@circuitwall/jira-align-langchain\";\n\nconst auth = resolveJiraAlignAuthFromEnv();\nif (!(\"error\" in auth)) {\n  const data = await jiraAlignFetch(auth, \"/rest/align/api/2/programs?limit=10\");\n}\n```\n\n## API notes\n\n- **v2 has no `/items` endpoint.** Every tool that touches a work item takes a\n  required `type` arg so the package can route to the right `/<type>s` collection\n  (epic / capability / feature / story / theme / task / defect / objective).\n- **Field shapes vary by instance.** JA exposes custom fields, custom workflow\n  states, and instance-specific portfolio configs. If a tool 4xx's on what\n  looks like a valid call, check your instance's Swagger at\n  `<instance>.jiraalign.com/rest/align/api/docs/`.\n- **Auth is bearer, not basic.** Jira Align uses a single API token (created in\n  Settings → Personal Access Tokens), NOT email + token like Jira Cloud.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}