npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@dual-os/jira-api

v9.0.0

Published

This plugin includes the existing API Actions and Workflow Triggers plus the jira-api/agent-issues Agent Channel. Existing action/trigger IDs, schemas and API authentication methods are unchanged. The additional Channel authentication is listed at plugin

Readme

jira-api: API and Agent Channel

This plugin includes the existing API Actions and Workflow Triggers plus the jira-api/agent-issues Agent Channel. Existing action/trigger IDs, schemas and API authentication methods are unchanged. The additional Channel authentication is listed at plugin level; per-action authentication subsets are intentionally deferred. Use existing API Connections for Actions/Triggers and the Channel credentials below for agent conversations. No migration of unused standalone Channel installations is provided.

Jira bot Channel

Jira Cloud Agent Channel: jira-api/agent-issues. jira-bot names the dedicated customer account that writes comments; it does not imply a Forge/Connect application or alter generated Jira API auth.

Import jiraApiPlugin from the package root or from @dual-os/jira-api/executable. Definition-only composition uses jiraApiPluginBase from @dual-os/jira-api/definition.

Connection method bot-account: siteUrl, email, apiToken, webhookSecret. Use a dedicated Atlassian user or managed service account. For an unscoped user token, siteUrl is an HTTPS *.atlassian.net origin. Scoped tokens, including service-account tokens, use https://api.atlassian.com/ex/jira/<cloudId> instead. Both forms omit a trailing slash. The complete API base is frozen with the bot identity; another cloud ID requires a new activation. No environment credentials or automatic token renewal.

Definition settings: {}. Deployment settings: where (projectKeys, 1–1,000, and optional issueKeys), who (access, restricted recommended, and allowedSenderKeys, Atlassian account IDs) and when (respondTo: mentions or all_messages). Bot identity comes from authenticated /myself. Activation checks the bot credentials; Jira has no setup challenge and webhook configuration must be checked with a real mention after activation. Deactivation never edits the administrator's webhook.

Each issue ID is one group destination; no synthetic threads or reply nesting. Only created issues/comments are input. Real account mentions, or every message with all_messages, trigger responses; unaddressed comments are context, issues outside the chosen projects or issues are ignored, and own comments are ignored. REST reads check issue/comment access as the bot; role/group-restricted comments and service desk projects are excluded so public responses cannot disclose private comment input.

Operations: present_outcome, create_message, update_message, delete_message. Only the bot's own destination-issue comments can be edited/deleted. Delivery is at-most-once: Jira has no comment-create idempotency key, so uncertain completion is terminal rather than silently posting a duplicate. 429 is rate_limited; read/update/delete transport and 5xx failures are unavailable; ambiguous create transport/5xx/invalid-success responses are unknown_completion. No internal HTTP retries or redirects. Text uses ADF paragraphs, with choices appended to questions.

read_context returns the issue summary/description and at most 100 latest unrestricted comments in chronological order, bounded by the requested limit. For large conversations, the newest comments take priority over the opening description. ADF text, account mentions, lists, headings, tables, quotes, code, emoji and cards are decoded by protocol schemas. Mentions in admin webhook wiki text are classified from the corresponding REST ADF, so escaped examples and code do not address the Agent. Unsupported nodes fail closed. No attachments, reactions, activity, plans, nested threads, comment-update input, or JSM internal notes.

Admin webhook signatures are body-only HMAC SHA-256 (X-Hub-Signature). The event timestamp is signed with the body; there is no separate per-delivery signature timestamp, and the Channel enforces no age window. Replay identity uses the creation kind and immutable issue/comment IDs from the signed body; the unsigned X-Atlassian-Webhook-Identifier cannot change it. This deduplicates repeated creations without providing cryptographic freshness. The server owns durable replay receipts; this plugin stores no state. Separate created comments remain distinct even with equal timestamps.