pm-jira 2026.6.2 → 2026.6.3

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/CHANGELOG.md CHANGED
@@ -1,6 +1,34 @@
1
1
  # Changelog
2
2
 
3
- ## 2026.6.2 - 2026-06-02
3
+ ## 2026.6.3 - 2026-06-03
4
+
5
+ ### Added
6
+
7
+ - pm-jira: deepen filters/dry-run/field-mapping/validate/hooks \(enhancement brief 2026-06-03\) ([pm-jira-i7fd](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/features/pm-jira-i7fd.toon))
8
+ - pm-jira: domain-max SDK enhancement \(idempotent import, preflight, rate-limit backoff\) ([pm-jira-4804](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/features/pm-jira-4804.toon))
9
+ - export-on-write hook \(opt-in\) + add 'hooks' capability ([pm-jira-65ao](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-65ao.toon))
10
+
11
+ ### Changed
12
+
13
+ - Idempotent import: match on Jira key, update instead of duplicate; persist jira\_key/jira\_url ([pm-jira-3b0b](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-3b0b.toon))
14
+
15
+ ### Other
16
+
17
+ - Production-readiness audit 2026-05-28 ([pm-jira-fc13](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-fc13.toon))
18
+ - preflight capability: pm jira preflight command + registerPreflight guard ([pm-jira-vfb3](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-vfb3.toon))
19
+ - Robustness: 429/503 rate-limit backoff + Retry-After on GET/POST ([pm-jira-2up8](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-2up8.toon))
20
+ - manifest capabilities correctness + README + tests + functional verification ([pm-jira-lu1f](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-lu1f.toon))
21
+ - Filters: --assignee augments default JQL ([pm-jira-ia8o](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-ia8o.toon))
22
+ - Decision: what needs live Jira creds \(not exercisable here\) ([pm-jira-49oh](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-49oh.toon))
23
+ - Decision: hook policy \(best-effort, opt-in, no auto-push\) ([pm-jira-h5wu](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-h5wu.toon))
24
+ - Decision: field-mapping model ([pm-jira-7y1y](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-7y1y.toon))
25
+ - Manifest capability correctness + README ([pm-jira-wsn0](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-wsn0.toon))
26
+ - pm jira validate diagnostics \(--json, no secret leak\) ([pm-jira-4dfb](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-4dfb.toon))
27
+ - Field-mapping depth + --map override \(both directions\) ([pm-jira-7bmf](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-7bmf.toon))
28
+ - --dry-run on import AND export \(no-network\), with strace proof ([pm-jira-4r5q](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-4r5q.toon))
29
+ - JQL builder + convenience filters \(--assignee/--issue-type/--label/--updated-since\) ([pm-jira-ko1c](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-ko1c.toon))
30
+
31
+ ## 2026.06.02 - 2026-06-02
4
32
 
5
33
  ### Added
6
34
 
package/README.md CHANGED
@@ -6,13 +6,16 @@ A [pm-cli](https://github.com/unbraind/pm-cli) extension that syncs Jira issues
6
6
 
7
7
  - Pull issues from any Jira project into pm items via `pm jira import` or `pm jira sync`
8
8
  - Export pm items back out as Jira create payloads via `pm jira export` (preview, or `--push` to create issues)
9
- - Custom JQL support for fine-grained control over what gets pulled
10
- - Automatic mapping of Jira statuses and priorities to pm equivalents, with a `--status-map` override
11
- - Labels and fix versions mapped as pm tags
12
- - Jira provenance (key + browse URL) persisted in the item description and declared as `jira_key` / `jira_url` schema fields
13
- - Dry-run mode to preview changes before writing
9
+ - **Convenience JQL filters** `--project`, `--status`, `--assignee`, `--issue-type`, `--label`, `--updated-since` compose into a single JQL query (or pass full `--jql` to override)
10
+ - **Rich field mapping** Jira status (by name, with a `statusCategory` fallback for custom workflows), priority, issue type → pm type, labels/fix-versions → tags, assignee → tag; configurable with `--status-map` and a general `--map jiraField=pmField`
11
+ - **`--dry-run` everywhere** — both import and export print the exact request / mutations they *would* make and perform **no network call** (the offline-testable, creds-free path)
12
+ - **`pm jira validate`** report Jira credential/base-URL readiness without leaking any secret (hostname-only preview); `--json` aware
13
+ - Optional, opt-in **export-on-write hook** (`PM_JIRA_PUSH_ON_WRITE`) best-effort, never breaks your pm command, no-op without credentials
14
+ - Jira provenance (key + browse URL) persisted in the item description and declared as `jira_key` / `jira_url` schema fields; on export, items that already carry a Jira key become an `update` (PUT) instead of a duplicate create
14
15
  - Works as a `pm jira sync`/`pm jira import` command, a `pm jira export` exporter, and a config-driven `jira-sync` importer
15
16
 
17
+ > **Which features need live Jira credentials?** Everything except the actual network round-trip is usable and testable offline. Building JQL, previewing requests/mutations with `--dry-run`, field mapping in both directions, and `pm jira validate` all work with **no creds and no network**. You only need `JIRA_BASE_URL` / `JIRA_EMAIL` / `JIRA_API_TOKEN` for: a real import fetch, `pm jira export --push` (creating/updating issues), and live reachability.
18
+
16
19
  ## Installation
17
20
 
18
21
  Install with pm from GitHub:
@@ -96,13 +99,36 @@ pm jira import --project PROJ --status-map "QA=blocked,Done=closed"
96
99
 
97
100
  | Flag | Type | Default | Description |
98
101
  |---|---|---|---|
99
- | `--project` | string | — | Jira project key (e.g. `PROJ`). Used to build default JQL. |
100
- | `--jql` | string | — | Custom JQL query. Overrides `--project` default JQL. |
102
+ | `--project` | string | — | Jira project key (e.g. `PROJ`). Composed into JQL. |
103
+ | `--jql` | string | — | Custom JQL query. Used verbatim; overrides all convenience filters below. |
104
+ | `--status` | string | — | Filter by pm status (`open`/`in_progress`/`closed`/`blocked`, mapped to a `statusCategory` clause) or a raw Jira status name. Also filters imported items client-side. |
105
+ | `--assignee` | string | — | Filter by assignee (accountId, name, or a function like `currentUser()`). |
106
+ | `--issue-type` | string | — | Filter by Jira issue type (e.g. `Bug`). |
107
+ | `--label` | string | — | Filter by Jira label. |
108
+ | `--updated-since` | string | — | Filter by updated date, relative (`-7d`) or absolute (`2026-01-01`). |
109
+ | `--status-map` | string | — | Override status mapping, e.g. `"In Review=in_progress,QA=blocked"`. |
110
+ | `--map` | string | — | Override field mapping, e.g. `"issuetype=Task,assignee=skip"`. |
101
111
  | `--host` | string | `$JIRA_BASE_URL` | Jira base URL override. |
102
112
  | `--max-results` | number | `500` | Maximum number of issues to pull. |
103
- | `--status` | string | | Filter by mapped pm status (`open`, `in_progress`, `closed`, `blocked`). |
104
- | `--status-map` | string | — | Override mapping, e.g. `"In Review=in_progress,QA=blocked"`. |
105
- | `--dry-run` | boolean | `false` | Preview what would be created without writing. |
113
+ | `--dry-run` | boolean | `false` | Print the JQL + exact GET request that would run; **no network call**. |
114
+
115
+ When no `--jql` is given, the convenience filters are AND-combined; if you don't
116
+ filter on status, a `statusCategory != Done` clause is appended so an unscoped
117
+ pull stays focused on active work (the historical default).
118
+
119
+ #### `--map` field overrides
120
+
121
+ `--map` accepts a comma list of `jiraField=pmTarget` pairs. Recognized Jira-side
122
+ keys: `status`, `statuscategory`, `priority`, `issuetype` (alias `type`),
123
+ `labels`, `assignee`, `duedate`. Examples:
124
+
125
+ ```bash
126
+ # Pin every imported item's type, and skip the assignee tag
127
+ pm jira import --project PROJ --map "issuetype=Task,assignee=skip"
128
+
129
+ # Force a pm status regardless of the Jira workflow state
130
+ pm jira import --project PROJ --map "status=in_progress"
131
+ ```
106
132
 
107
133
  ### Exporter: `pm jira export`
108
134
 
@@ -113,6 +139,12 @@ Render pm items as Jira create payloads. Prints JSON by default; with `--push`
113
139
  # Preview the Jira create payloads for all pm items (no network, no creds needed)
114
140
  pm jira export --project PROJ
115
141
 
142
+ # Print the exact mutations that WOULD run (create vs update), no network/creds
143
+ pm jira export --project PROJ --dry-run
144
+
145
+ # Derive Jira issuetype + priority from each pm item's type/priority
146
+ pm jira export --project PROJ --rich --dry-run
147
+
116
148
  # Actually create the issues in Jira (requires creds + --project)
117
149
  pm jira export --push --project PROJ
118
150
  ```
@@ -120,11 +152,36 @@ pm jira export --push --project PROJ
120
152
  | Flag | Type | Default | Description |
121
153
  |---|---|---|---|
122
154
  | `--project` | string | — | Target Jira project key for created issues (required for `--push`). |
155
+ | `--map` | string | — | Override field mapping, e.g. `"issuetype=Story"`. |
156
+ | `--rich` | boolean | `false` | Derive Jira `issuetype` + `priority` from the pm item type/priority. |
157
+ | `--dry-run` | boolean | `false` | Print the Jira POST/PUT mutations that would run; **no network call**. |
123
158
  | `--host` | string | `$JIRA_BASE_URL` | Jira base URL override. |
124
159
  | `--push` | boolean | `false` | POST payloads to Jira (requires credentials + `--project`). |
125
160
 
126
161
  Items whose description carries a `Jira <KEY>: <url>` provenance marker (added on
127
- import) can be matched back to their upstream issue.
162
+ import) are matched back to their upstream issue: `--dry-run` shows them as an
163
+ `update` (PUT), and `--push` **skips** them so a re-export never duplicates an
164
+ existing Jira issue (only items without a key are created).
165
+
166
+ ### Command: `pm jira validate`
167
+
168
+ Report whether pm-jira has the credentials/base URL it needs — **without making
169
+ a network call and without leaking any secret value** (it prints a hostname-only
170
+ preview, never the token or email):
171
+
172
+ ```bash
173
+ pm jira validate # human-readable readiness summary
174
+ pm jira validate --json # structured object: { ready, baseUrlPresent, ... }
175
+ pm jira validate --host https://company.atlassian.net
176
+ ```
177
+
178
+ ### Export-on-write hook (opt-in)
179
+
180
+ Setting `PM_JIRA_PUSH_ON_WRITE=1` activates a best-effort `onWrite` hook. It is a
181
+ strict no-op unless both the env flag is truthy **and** Jira credentials are
182
+ present, and it can never fail your `pm` command (the pm hook runtime swallows
183
+ any error). It intentionally does **not** auto-POST on every write; use the
184
+ explicit, reviewable `pm jira export --push` to mirror items upstream.
128
185
 
129
186
  ### Importer: `jira-sync` (config-driven)
130
187
 
@@ -167,6 +224,22 @@ The default mapping (override per-status with `--status-map`):
167
224
  | Done, Resolved, Closed, Complete, Completed | `closed` |
168
225
  | Blocked | `blocked` |
169
226
 
227
+ When the Jira status *name* is unrecognized (custom workflows), pm-jira falls
228
+ back to the issue's `statusCategory` bucket: `new` → `open`, `indeterminate` →
229
+ `in_progress`, `done` → `closed`.
230
+
231
+ ### Issue type mapping
232
+
233
+ | Jira Issue Type | pm Type |
234
+ |---|---|
235
+ | Bug, Defect | `Bug` |
236
+ | Story, Epic | `Feature` |
237
+ | Task, Sub-task | `Task` |
238
+ | (any other) | `Issue` |
239
+
240
+ Override with `--map issuetype=<pmType>` (import) or `--map issuetype=<jiraType>`
241
+ (export, with `--rich`).
242
+
170
243
  ## Priority Mapping
171
244
 
172
245
  | Jira Priority | pm Priority |
@@ -230,9 +303,9 @@ npm run dev
230
303
 
231
304
  ## Requirements
232
305
 
233
- - Node.js 18+ (uses native `https` module and `Buffer`)
234
- - pm-cli `>=2026.5.0`
235
- - TypeScript 5.x (dev dependency)
306
+ - Node.js 20+ (uses native `https` module and `Buffer`)
307
+ - pm-cli `>=2026.5.31`
308
+ - TypeScript 6.x (dev dependency)
236
309
 
237
310
  ## License
238
311
 
package/dist/index.d.ts CHANGED
@@ -39,13 +39,33 @@ interface JiraIssue {
39
39
  fixVersions?: Array<{
40
40
  name: string;
41
41
  }>;
42
+ issuetype?: {
43
+ name: string;
44
+ } | null;
42
45
  };
43
46
  }
44
47
  type PmPriority = 1 | 2 | 3 | 4;
45
48
  type PmStatus = "open" | "in_progress" | "closed" | "blocked";
46
49
  export declare function mapJiraPriority(jiraPriority: string | undefined): PmPriority;
47
50
  export declare function mapJiraStatus(jiraStatus: string, statusMap?: Record<string, PmStatus>): PmStatus;
51
+ export declare function mapJiraStatusCategory(categoryKey: string | undefined): PmStatus;
52
+ export declare function mapJiraIssueType(jiraType: string | undefined): string;
53
+ export declare function mapPmPriorityToJira(priority: PmPriority | number | undefined): string;
54
+ export type FieldMap = Record<string, string>;
55
+ export declare function parseFieldMap(raw: string | undefined): FieldMap | undefined;
48
56
  export declare function parseStatusMap(raw: string | undefined): Record<string, PmStatus> | undefined;
57
+ export interface JqlFilters {
58
+ jql?: string;
59
+ project?: string;
60
+ status?: string;
61
+ assignee?: string;
62
+ issueType?: string;
63
+ label?: string;
64
+ updatedSince?: string;
65
+ }
66
+ export declare function jqlQuote(value: string): string;
67
+ export declare function buildJql(filters: JqlFilters): string;
68
+ export declare function readJqlFilters(options: Record<string, unknown>): JqlFilters;
49
69
  export declare function adfToPlainText(node: JiraIssue["fields"]["description"] | {
50
70
  type: string;
51
71
  content?: unknown[];
@@ -80,16 +100,39 @@ export interface JiraCreds {
80
100
  authHeader: string;
81
101
  }
82
102
  export declare function resolveCreds(options: Record<string, unknown>, envLike?: NodeJS.ProcessEnv): JiraCreds;
103
+ export interface CredDiagnostics {
104
+ ready: boolean;
105
+ baseUrlPresent: boolean;
106
+ emailPresent: boolean;
107
+ tokenPresent: boolean;
108
+ baseUrlSource: "option" | "env" | "none";
109
+ hostPreview?: string;
110
+ missing: string[];
111
+ }
112
+ export declare function diagnoseCreds(options: Record<string, unknown>, envLike?: NodeJS.ProcessEnv): CredDiagnostics;
83
113
  export interface IssueToItem {
84
114
  title: string;
85
115
  status: PmStatus;
86
116
  priority: PmPriority;
117
+ type: string;
87
118
  body: string;
88
119
  tags: string[];
89
120
  deadline?: string;
90
121
  description: string;
122
+ jiraKey: string;
123
+ jiraUrl: string;
124
+ }
125
+ export interface IssueMapOptions {
126
+ statusMap?: Record<string, PmStatus>;
127
+ fieldMap?: FieldMap;
128
+ }
129
+ export declare function issueToItem(issue: JiraIssue, baseUrl: string, optionsOrStatusMap?: IssueMapOptions | Record<string, PmStatus>): IssueToItem;
130
+ export interface JiraSearchRequest {
131
+ method: "GET";
132
+ url: string;
133
+ fields: string;
91
134
  }
92
- export declare function issueToItem(issue: JiraIssue, baseUrl: string, statusMap?: Record<string, PmStatus>): IssueToItem;
135
+ export declare function buildSearchRequest(baseUrl: string, jql: string, startAt: number, maxResults: number): JiraSearchRequest;
93
136
  interface PmItem {
94
137
  id?: string;
95
138
  title?: string;
@@ -97,7 +140,10 @@ interface PmItem {
97
140
  body?: string;
98
141
  description?: string;
99
142
  tags?: string[];
143
+ priority?: number;
144
+ type?: string;
100
145
  }
146
+ export declare function mapPmTypeToJira(pmType: string | undefined, override?: string): string;
101
147
  export interface JiraCreatePayload {
102
148
  fields: {
103
149
  project?: {
@@ -109,9 +155,44 @@ export interface JiraCreatePayload {
109
155
  name: string;
110
156
  };
111
157
  labels: string[];
158
+ priority?: {
159
+ name: string;
160
+ };
112
161
  };
113
162
  }
114
- export declare function itemToJiraPayload(item: PmItem, projectKey?: string): JiraCreatePayload;
163
+ export interface PayloadOptions {
164
+ projectKey?: string;
165
+ fieldMap?: FieldMap;
166
+ richMapping?: boolean;
167
+ }
168
+ export declare function itemToJiraPayload(item: PmItem, projectKeyOrOptions?: string | PayloadOptions): JiraCreatePayload;
169
+ export interface ExportPlanEntry {
170
+ op: "create" | "update";
171
+ itemId?: string;
172
+ existingKey?: string;
173
+ method: "POST" | "PUT";
174
+ endpoint: string;
175
+ payload: JiraCreatePayload;
176
+ }
177
+ export interface ExportPlan {
178
+ baseUrl: string;
179
+ project?: string;
180
+ entries: ExportPlanEntry[];
181
+ }
182
+ export declare function buildExportPlan(items: PmItem[], baseUrl: string, opts?: {
183
+ projectKey?: string;
184
+ fieldMap?: FieldMap;
185
+ richMapping?: boolean;
186
+ }): ExportPlan;
187
+ export interface PushOnWriteDecision {
188
+ shouldPush: boolean;
189
+ reason: string;
190
+ }
191
+ export declare function decidePushOnWrite(hookCtx: {
192
+ path?: string;
193
+ scope?: string;
194
+ op?: string;
195
+ } | undefined, envLike?: NodeJS.ProcessEnv): PushOnWriteDecision;
115
196
  declare const _default: {
116
197
  name: string;
117
198
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,13 +1,21 @@
1
1
  // pm-jira — Jira issue sync / importer / exporter for pm-cli
2
2
  //
3
3
  // Capabilities (see manifest.json):
4
- // commands — `pm jira sync` (legacy, full-featured pull)
4
+ // commands — `pm jira sync` (legacy, full-featured pull) + `pm jira validate`
5
5
  // importers — `pm jira import` (native import pipeline: pull issues via JQL)
6
6
  // — `jira-sync` (config-driven importer, kept for back-compat)
7
- // exporters — `pm jira export` (render pm items as Jira-create payloads;
8
- // only POSTs to Jira with explicit --push AND creds present)
7
+ // — `pm jira export` exporter (registerExporter is gated by the
8
+ // `importers` capability; `exporters` is NOT a valid manifest
9
+ // token). Renders pm items as Jira-create payloads; only POSTs
10
+ // with explicit --push AND creds present.
9
11
  // schema — declares jira_key / jira_url item fields
10
- // services declared for governance parity with the sync service surface
12
+ // hooks opt-in best-effort export-on-write mirror (PM_JIRA_PUSH_ON_WRITE)
13
+ //
14
+ // NOTE: the prior manifest declared `services` but never called
15
+ // registerService — that was a no-op "phantom" capability. We dropped it and
16
+ // added `hooks` (which we actually register). We deliberately do NOT register
17
+ // a service override: per pm-cli issue #96 overriding a core service can
18
+ // corrupt all command output.
11
19
  import https from "node:https";
12
20
  import { URL } from "node:url";
13
21
  import { spawnSync } from "node:child_process";
@@ -68,7 +76,84 @@ export function mapJiraStatus(jiraStatus, statusMap) {
68
76
  // Default: to do / open / backlog / any other
69
77
  return "open";
70
78
  }
79
+ // Map a Jira statusCategory key (the workflow-agnostic bucket Jira assigns to
80
+ // every status: "new" | "indeterminate" | "done") to a pm status. This is a
81
+ // robust fallback that works across custom workflows where the status *name*
82
+ // is unrecognized but the category is always one of three known values.
83
+ export function mapJiraStatusCategory(categoryKey) {
84
+ switch ((categoryKey ?? "").toLowerCase()) {
85
+ case "done":
86
+ return "closed";
87
+ case "indeterminate":
88
+ return "in_progress";
89
+ case "new":
90
+ default:
91
+ return "open";
92
+ }
93
+ }
94
+ // Map a Jira issue type to a pm item type. Defaults follow pm's common type
95
+ // vocabulary; a `--map issuetype=<pmType>` override can replace the result.
96
+ export function mapJiraIssueType(jiraType) {
97
+ const name = (jiraType ?? "").toLowerCase();
98
+ if (name === "bug" || name === "defect")
99
+ return "Bug";
100
+ if (name === "story" || name === "user story")
101
+ return "Feature";
102
+ if (name === "epic")
103
+ return "Feature";
104
+ if (name === "task" || name === "sub-task" || name === "subtask")
105
+ return "Task";
106
+ return "Issue";
107
+ }
108
+ // Reverse priority map: pm priority (1..4) -> Jira priority name, for export.
109
+ export function mapPmPriorityToJira(priority) {
110
+ switch (priority) {
111
+ case 1:
112
+ return "Highest";
113
+ case 2:
114
+ return "High";
115
+ case 4:
116
+ return "Low";
117
+ case 3:
118
+ default:
119
+ return "Medium";
120
+ }
121
+ }
71
122
  const PM_STATUSES = ["open", "in_progress", "closed", "blocked"];
123
+ const KNOWN_MAP_KEYS = new Set([
124
+ "status",
125
+ "statuscategory",
126
+ "priority",
127
+ "issuetype",
128
+ "labels",
129
+ "assignee",
130
+ "duedate",
131
+ "type",
132
+ ]);
133
+ export function parseFieldMap(raw) {
134
+ if (!raw)
135
+ return undefined;
136
+ const map = {};
137
+ for (const pair of raw.split(",")) {
138
+ const trimmed = pair.trim();
139
+ if (!trimmed)
140
+ continue;
141
+ const eq = trimmed.indexOf("=");
142
+ if (eq < 0) {
143
+ throw new CommandError(`Invalid --map entry "${trimmed}" (expected "jiraField=pmField").`, EXIT_CODE.USAGE);
144
+ }
145
+ const from = trimmed.slice(0, eq).trim().toLowerCase();
146
+ const to = trimmed.slice(eq + 1).trim();
147
+ if (!from || !to) {
148
+ throw new CommandError(`Invalid --map entry "${trimmed}" (empty field name).`, EXIT_CODE.USAGE);
149
+ }
150
+ if (!KNOWN_MAP_KEYS.has(from)) {
151
+ throw new CommandError(`Unknown --map source field "${from}" (expected one of ${[...KNOWN_MAP_KEYS].join("|")}).`, EXIT_CODE.USAGE);
152
+ }
153
+ map[from] = to;
154
+ }
155
+ return Object.keys(map).length > 0 ? map : undefined;
156
+ }
72
157
  // Parse a --status-map value of the form
73
158
  // "In Progress=in_progress,QA=blocked"
74
159
  // into a lower-cased lookup table. Invalid pm-status targets are rejected with
@@ -97,6 +182,71 @@ export function parseStatusMap(raw) {
97
182
  }
98
183
  return Object.keys(map).length > 0 ? map : undefined;
99
184
  }
185
+ // Map a pm status to the Jira statusCategory clause it implies, so
186
+ // `--status closed` can filter Jira-side without enumerating every workflow
187
+ // state. Unknown / raw Jira statuses are matched literally on `status`.
188
+ const PM_STATUS_TO_JQL = {
189
+ open: "statusCategory = \"To Do\"",
190
+ in_progress: "statusCategory = \"In Progress\"",
191
+ closed: "statusCategory = Done",
192
+ blocked: "status = \"Blocked\"",
193
+ };
194
+ // Quote a JQL value: numbers/keys stay bare where Jira allows it, but anything
195
+ // with whitespace or punctuation is wrapped in double quotes (escaping any
196
+ // embedded quote) so user input can't break out of the clause.
197
+ export function jqlQuote(value) {
198
+ if (/^[A-Za-z0-9_.-]+$/.test(value))
199
+ return value;
200
+ return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
201
+ }
202
+ export function buildJql(filters) {
203
+ // Explicit --jql is authoritative; never rewrite a user's query.
204
+ if (filters.jql && filters.jql.trim())
205
+ return filters.jql.trim();
206
+ const clauses = [];
207
+ if (filters.project)
208
+ clauses.push(`project = ${jqlQuote(filters.project)}`);
209
+ if (filters.status) {
210
+ const key = filters.status.trim().toLowerCase();
211
+ clauses.push(PM_STATUS_TO_JQL[key] ?? `status = ${jqlQuote(filters.status)}`);
212
+ }
213
+ if (filters.assignee) {
214
+ const a = filters.assignee.trim();
215
+ // Recognize the JQL function forms so `--assignee currentUser()` works.
216
+ clauses.push(/\(\s*\)$/.test(a) ? `assignee = ${a}` : `assignee = ${jqlQuote(a)}`);
217
+ }
218
+ if (filters.issueType)
219
+ clauses.push(`issuetype = ${jqlQuote(filters.issueType)}`);
220
+ if (filters.label)
221
+ clauses.push(`labels = ${jqlQuote(filters.label)}`);
222
+ if (filters.updatedSince) {
223
+ // Always quote the date expression: Jira parses a bare "-7d" as arithmetic,
224
+ // so the relative form must be a quoted string ("-7d") to be valid JQL.
225
+ const d = filters.updatedSince.trim();
226
+ clauses.push(`updated >= "${d.replace(/"/g, '\\"')}"`);
227
+ }
228
+ // With no constraints at all, preserve the historical default. Otherwise, if
229
+ // the caller did not themselves filter on status, keep "not done" so an
230
+ // unscoped project pull stays focused on active work (back-compat default).
231
+ if (clauses.length === 0) {
232
+ return "statusCategory != Done ORDER BY priority ASC";
233
+ }
234
+ if (!filters.status)
235
+ clauses.push("statusCategory != Done");
236
+ return `${clauses.join(" AND ")} ORDER BY priority ASC`;
237
+ }
238
+ // Read the convenience JQL filters off a loose options bag (kebab/camel safe).
239
+ export function readJqlFilters(options) {
240
+ return {
241
+ jql: readStringOption(options, "jql"),
242
+ project: readStringOption(options, "project"),
243
+ status: readStringOption(options, "status"),
244
+ assignee: readStringOption(options, "assignee"),
245
+ issueType: readStringOption(options, "issue-type"),
246
+ label: readStringOption(options, "label"),
247
+ updatedSince: readStringOption(options, "updated-since"),
248
+ };
249
+ }
100
250
  // ---------------------------------------------------------------------------
101
251
  // Jira description (Atlassian Document Format) → plain text
102
252
  // ---------------------------------------------------------------------------
@@ -220,6 +370,38 @@ export function resolveCreds(options, envLike = process.env) {
220
370
  const authHeader = `Basic ${Buffer.from(`${email}:${token}`).toString("base64")}`;
221
371
  return { baseUrl: baseUrl.replace(/\/$/, ""), email: email, token: token, authHeader };
222
372
  }
373
+ export function diagnoseCreds(options, envLike = process.env) {
374
+ const hostOption = readStringOption(options, "host");
375
+ const baseUrlEnv = envLike["JIRA_BASE_URL"]?.trim() || undefined;
376
+ const baseUrl = hostOption ?? baseUrlEnv;
377
+ const email = envLike["JIRA_EMAIL"]?.trim() || undefined;
378
+ const token = envLike["JIRA_API_TOKEN"]?.trim() || undefined;
379
+ const missing = [];
380
+ if (!baseUrl)
381
+ missing.push("JIRA_BASE_URL (or --host)");
382
+ if (!email)
383
+ missing.push("JIRA_EMAIL");
384
+ if (!token)
385
+ missing.push("JIRA_API_TOKEN");
386
+ let hostPreview;
387
+ if (baseUrl) {
388
+ try {
389
+ hostPreview = new URL(/^https?:\/\//.test(baseUrl) ? baseUrl : `https://${baseUrl}`).hostname;
390
+ }
391
+ catch {
392
+ hostPreview = undefined;
393
+ }
394
+ }
395
+ return {
396
+ ready: missing.length === 0,
397
+ baseUrlPresent: Boolean(baseUrl),
398
+ emailPresent: Boolean(email),
399
+ tokenPresent: Boolean(token),
400
+ baseUrlSource: hostOption ? "option" : baseUrlEnv ? "env" : "none",
401
+ hostPreview,
402
+ missing,
403
+ };
404
+ }
223
405
  // ---------------------------------------------------------------------------
224
406
  // HTTP helpers using Node.js native https module
225
407
  // ---------------------------------------------------------------------------
@@ -299,18 +481,15 @@ function httpsPost(url, authHeader, payload) {
299
481
  // Fetch all pages from Jira search API
300
482
  // ---------------------------------------------------------------------------
301
483
  async function fetchAllJiraIssues(baseUrl, authHeader, jql, maxResults) {
302
- const fields = "summary,description,status,priority,labels,assignee,duedate,fixVersions";
303
484
  const allIssues = [];
304
485
  let startAt = 0;
305
486
  const pageSize = Math.min(maxResults, 100);
306
487
  while (allIssues.length < maxResults) {
307
488
  const remaining = maxResults - allIssues.length;
308
489
  const fetchSize = Math.min(remaining, pageSize);
309
- const url = `${baseUrl}/rest/api/3/search` +
310
- `?jql=${encodeURIComponent(jql)}` +
311
- `&fields=${encodeURIComponent(fields)}` +
312
- `&startAt=${startAt}` +
313
- `&maxResults=${fetchSize}`;
490
+ // Reuse the single source-of-truth request builder so the live fetch and
491
+ // the --dry-run preview can never drift apart.
492
+ const { url } = buildSearchRequest(baseUrl, jql, startAt, fetchSize);
314
493
  const raw = await httpsGet(url, authHeader);
315
494
  const data = JSON.parse(raw);
316
495
  if (!data.issues || data.issues.length === 0)
@@ -322,22 +501,56 @@ async function fetchAllJiraIssues(baseUrl, authHeader, jql, maxResults) {
322
501
  }
323
502
  return allIssues;
324
503
  }
325
- export function issueToItem(issue, baseUrl, statusMap) {
504
+ export function issueToItem(issue, baseUrl, optionsOrStatusMap) {
505
+ // Back-compat: a bare statusMap (the old 3rd arg) is still accepted.
506
+ const mapOptions = optionsOrStatusMap && ("statusMap" in optionsOrStatusMap || "fieldMap" in optionsOrStatusMap)
507
+ ? optionsOrStatusMap
508
+ : { statusMap: optionsOrStatusMap };
509
+ const { statusMap, fieldMap } = mapOptions;
326
510
  const tags = [
327
511
  ...(issue.fields.labels ?? []),
328
512
  ...(issue.fields.fixVersions?.map((v) => v.name) ?? []),
329
513
  ];
514
+ // Assignee → tag (so it survives without a dedicated pm field) unless --map
515
+ // assignee=<x> pins it elsewhere or the user opts out with assignee=skip.
516
+ const assigneeTarget = fieldMap?.["assignee"];
517
+ if (issue.fields.assignee?.displayName && assigneeTarget !== "skip") {
518
+ tags.push(`assignee:${issue.fields.assignee.displayName.replace(/\s+/g, "-")}`);
519
+ }
520
+ // Status: prefer an explicit name mapping; fall back to the statusCategory
521
+ // bucket when the name is unrecognized. --map statuscategory=<pmStatus> pins.
522
+ const categoryPin = fieldMap?.["statuscategory"];
523
+ const statusPin = fieldMap?.["status"];
524
+ let status;
525
+ if (statusPin && PM_STATUSES.includes(statusPin)) {
526
+ status = statusPin;
527
+ }
528
+ else {
529
+ const byName = mapJiraStatus(issue.fields.status.name, statusMap);
530
+ // If name resolution defaulted to "open" but the category says otherwise,
531
+ // trust the category (covers custom workflow states).
532
+ const byCategory = categoryPin && PM_STATUSES.includes(categoryPin)
533
+ ? categoryPin
534
+ : mapJiraStatusCategory(issue.fields.status.statusCategory?.key);
535
+ status = byName === "open" && byCategory !== "open" ? byCategory : byName;
536
+ }
537
+ // Type: --map type=<x> / issuetype=<x> pins; else derive from Jira issuetype.
538
+ const typePin = fieldMap?.["type"] ?? fieldMap?.["issuetype"];
539
+ const type = typePin ?? mapJiraIssueType(issue.fields.issuetype?.name);
330
540
  const rawBody = adfToPlainText(issue.fields.description);
331
541
  const browseUrl = `${baseUrl.replace(/\/$/, "")}/browse/${issue.key}`;
332
542
  return {
333
543
  title: `[${issue.key}] ${issue.fields.summary}`,
334
- status: mapJiraStatus(issue.fields.status.name, statusMap),
544
+ status,
335
545
  priority: mapJiraPriority(issue.fields.priority?.name),
546
+ type,
336
547
  body: rawBody,
337
548
  tags,
338
549
  deadline: issue.fields.duedate ?? undefined,
339
550
  // Provenance marker lives in the description so it survives round-trips.
340
551
  description: jiraProvenance(issue.key, browseUrl),
552
+ jiraKey: issue.key,
553
+ jiraUrl: browseUrl,
341
554
  };
342
555
  }
343
556
  function createPmItem(pmRoot, item) {
@@ -346,7 +559,7 @@ function createPmItem(pmRoot, item) {
346
559
  "create",
347
560
  "--title", item.title,
348
561
  "--status", item.status,
349
- "--type", "Issue",
562
+ "--type", item.type,
350
563
  "--priority", String(item.priority),
351
564
  "--description", item.description,
352
565
  ...(item.body ? ["--body", item.body] : []),
@@ -356,21 +569,47 @@ function createPmItem(pmRoot, item) {
356
569
  const result = spawnSync("pm", args, { encoding: "utf-8" });
357
570
  return result.status === 0;
358
571
  }
359
- // Shared import core for both `pm jira sync`, `pm jira import` and the
360
- // `jira-sync` importer. Throws CommandError (semantic exitCode) on failure.
572
+ const SEARCH_FIELDS = "summary,description,status,priority,labels,assignee,duedate,fixVersions,issuetype";
573
+ export function buildSearchRequest(baseUrl, jql, startAt, maxResults) {
574
+ const url = `${baseUrl.replace(/\/$/, "")}/rest/api/3/search` +
575
+ `?jql=${encodeURIComponent(jql)}` +
576
+ `&fields=${encodeURIComponent(SEARCH_FIELDS)}` +
577
+ `&startAt=${startAt}` +
578
+ `&maxResults=${Math.min(maxResults, 100)}`;
579
+ return { method: "GET", url, fields: SEARCH_FIELDS };
580
+ }
361
581
  async function runImport(options, pmRoot, opts = {}) {
362
582
  const creds = resolveCreds(options);
363
583
  const project = readStringOption(options, "project");
364
584
  const customJql = readStringOption(options, "jql");
365
585
  const maxResults = readNumberOption(options, "max-results") ?? 500;
366
586
  const statusMap = parseStatusMap(readStringOption(options, "status-map"));
587
+ const fieldMap = parseFieldMap(readStringOption(options, "map"));
367
588
  const dryRun = opts.dryRun ?? readBooleanOption(options, "dry-run");
368
589
  const statusFilter = opts.statusFilter ?? readStringOption(options, "status");
369
590
  if (!project && !customJql) {
370
591
  throw new CommandError("Provide either --project <KEY> or --jql <query> to specify which issues to import.", EXIT_CODE.USAGE);
371
592
  }
372
- const jql = customJql ??
373
- `project = ${project} AND statusCategory != Done ORDER BY priority ASC`;
593
+ const jql = buildJql(readJqlFilters(options));
594
+ const projectLabel = project ?? "custom-jql";
595
+ // --dry-run makes NO network call: it prints the JQL + the exact GET request
596
+ // the importer would issue, then returns. This is the offline-testable path.
597
+ if (dryRun) {
598
+ const request = buildSearchRequest(creds.baseUrl, jql, 0, maxResults);
599
+ console.error(`[dry-run] No network call will be made.`);
600
+ console.error(`[dry-run] JQL: ${jql}`);
601
+ console.error(`[dry-run] Would ${request.method} ${request.url}`);
602
+ console.error(`[dry-run] Up to ${maxResults} issues would be imported as pm items.`);
603
+ return {
604
+ success: true,
605
+ dryRun: true,
606
+ jql,
607
+ request,
608
+ maxResults,
609
+ project: projectLabel,
610
+ ...(statusFilter ? { statusFilter } : {}),
611
+ };
612
+ }
374
613
  console.error(`Fetching issues from Jira... (JQL: ${jql})`);
375
614
  let issues;
376
615
  try {
@@ -384,7 +623,7 @@ async function runImport(options, pmRoot, opts = {}) {
384
623
  console.error(`Fetched ${issues.length} issues from Jira`);
385
624
  const mapped = issues.map((issue) => ({
386
625
  issue,
387
- item: issueToItem(issue, creds.baseUrl, statusMap),
626
+ item: issueToItem(issue, creds.baseUrl, { statusMap, fieldMap }),
388
627
  }));
389
628
  const filtered = statusFilter
390
629
  ? mapped.filter(({ item }) => item.status === statusFilter)
@@ -392,16 +631,6 @@ async function runImport(options, pmRoot, opts = {}) {
392
631
  if (statusFilter && filtered.length !== mapped.length) {
393
632
  console.error(`Filtered to ${filtered.length} issues with pm status "${statusFilter}"`);
394
633
  }
395
- const projectLabel = project ?? "custom-jql";
396
- if (dryRun) {
397
- console.error(`[dry-run] Would create ${filtered.length} items:`);
398
- for (const { issue, item } of filtered.slice(0, 20)) {
399
- console.error(` ${issue.key}: ${issue.fields.summary} [${item.status}]`);
400
- }
401
- if (filtered.length > 20)
402
- console.error(` ... and ${filtered.length - 20} more`);
403
- return { success: true, dryRun: true, total: filtered.length, project: projectLabel };
404
- }
405
634
  let created = 0;
406
635
  for (const { issue, item } of filtered) {
407
636
  if (createPmItem(pmRoot, item))
@@ -419,6 +648,17 @@ async function runImport(options, pmRoot, opts = {}) {
419
648
  summary: `Imported ${created} issues from Jira ${projectLabel}`,
420
649
  };
421
650
  }
651
+ // Reverse type map: pm item type -> Jira issue type name, for export.
652
+ export function mapPmTypeToJira(pmType, override) {
653
+ if (override)
654
+ return override;
655
+ const t = (pmType ?? "").toLowerCase();
656
+ if (t === "bug")
657
+ return "Bug";
658
+ if (t === "feature" || t === "epic" || t === "story")
659
+ return "Story";
660
+ return "Task";
661
+ }
422
662
  function readPmItems(pmRoot) {
423
663
  const result = spawnSync("pm", ["--path", pmRoot, "--json", "list", "--full", "--include-body", "--limit", "10000"], { encoding: "utf-8" });
424
664
  if (result.status !== 0) {
@@ -435,18 +675,82 @@ function readPmItems(pmRoot) {
435
675
  }
436
676
  // Convert a pm item to a Jira create payload. `projectKey` is optional so the
437
677
  // transform stays pure/testable; the exporter requires it before POSTing.
438
- export function itemToJiraPayload(item, projectKey) {
678
+ // Accepts either a bare projectKey (back-compat) or a PayloadOptions object.
679
+ export function itemToJiraPayload(item, projectKeyOrOptions) {
680
+ const opts = typeof projectKeyOrOptions === "string"
681
+ ? { projectKey: projectKeyOrOptions }
682
+ : projectKeyOrOptions ?? {};
683
+ const { projectKey, fieldMap, richMapping } = opts;
439
684
  const summary = (item.title ?? "(untitled)").trim() || "(untitled)";
440
685
  const bodyText = item.body || item.description || "";
441
- return {
442
- fields: {
443
- ...(projectKey ? { project: { key: projectKey } } : {}),
444
- summary,
445
- description: plainTextToAdf(bodyText),
446
- issuetype: { name: "Task" },
447
- labels: (item.tags ?? []).map((t) => t.replace(/\s+/g, "-")),
448
- },
686
+ const issuetypeName = richMapping
687
+ ? mapPmTypeToJira(item.type, fieldMap?.["issuetype"] ?? fieldMap?.["type"])
688
+ : "Task";
689
+ const fields = {
690
+ ...(projectKey ? { project: { key: projectKey } } : {}),
691
+ summary,
692
+ description: plainTextToAdf(bodyText),
693
+ issuetype: { name: issuetypeName },
694
+ labels: (item.tags ?? []).map((t) => t.replace(/\s+/g, "-")),
449
695
  };
696
+ if (richMapping && item.priority !== undefined) {
697
+ fields.priority = { name: mapPmPriorityToJira(item.priority) };
698
+ }
699
+ return { fields };
700
+ }
701
+ export function buildExportPlan(items, baseUrl, opts = {}) {
702
+ const cleanBase = baseUrl.replace(/\/$/, "");
703
+ const entries = items.map((item) => {
704
+ const provenance = extractJiraKey(item.description) ?? extractJiraKey(item.body);
705
+ const payload = itemToJiraPayload(item, {
706
+ projectKey: opts.projectKey,
707
+ fieldMap: opts.fieldMap,
708
+ richMapping: opts.richMapping,
709
+ });
710
+ if (provenance) {
711
+ return {
712
+ op: "update",
713
+ itemId: item.id,
714
+ existingKey: provenance.key,
715
+ method: "PUT",
716
+ endpoint: `${cleanBase}/rest/api/3/issue/${provenance.key}`,
717
+ payload,
718
+ };
719
+ }
720
+ return {
721
+ op: "create",
722
+ itemId: item.id,
723
+ method: "POST",
724
+ endpoint: `${cleanBase}/rest/api/3/issue`,
725
+ payload,
726
+ };
727
+ });
728
+ return { baseUrl: cleanBase, project: opts.projectKey, entries };
729
+ }
730
+ function isTruthyEnv(value) {
731
+ if (!value)
732
+ return false;
733
+ const s = value.trim().toLowerCase();
734
+ return s === "1" || s === "true" || s === "yes" || s === "on";
735
+ }
736
+ export function decidePushOnWrite(hookCtx, envLike = process.env) {
737
+ if (!isTruthyEnv(envLike["PM_JIRA_PUSH_ON_WRITE"])) {
738
+ return { shouldPush: false, reason: "disabled (PM_JIRA_PUSH_ON_WRITE not set)" };
739
+ }
740
+ const op = hookCtx?.op ?? "";
741
+ if (op.endsWith(":history")) {
742
+ return { shouldPush: false, reason: "history-stream write ignored" };
743
+ }
744
+ if (op === "delete") {
745
+ return { shouldPush: false, reason: "deletes are not mirrored" };
746
+ }
747
+ if (hookCtx?.scope && hookCtx.scope !== "project") {
748
+ return { shouldPush: false, reason: `non-project scope (${hookCtx.scope})` };
749
+ }
750
+ if (op !== "create" && op !== "update") {
751
+ return { shouldPush: false, reason: `unhandled op (${op || "none"})` };
752
+ }
753
+ return { shouldPush: true, reason: `mirror ${op}` };
450
754
  }
451
755
  // ---------------------------------------------------------------------------
452
756
  // Extension
@@ -456,18 +760,29 @@ const PULL_FLAGS = [
456
760
  { long: "--jql", value_name: "query", description: "Custom JQL query (overrides --project default)" },
457
761
  { long: "--host", value_name: "url", description: "Jira base URL override (else JIRA_BASE_URL)" },
458
762
  { long: "--max-results", value_name: "n", description: "Max issues to fetch (default: 500)" },
459
- { long: "--status", value_name: "filter", description: "Filter by pm status (open|in_progress|closed|blocked)" },
763
+ { long: "--status", value_name: "filter", description: "Filter by status: pm status (open|in_progress|closed|blocked) or raw Jira status" },
764
+ { long: "--assignee", value_name: "user", description: "Filter by assignee (accountId, name, or currentUser())" },
765
+ { long: "--issue-type", value_name: "type", description: "Filter by Jira issue type (e.g. Bug)" },
766
+ { long: "--label", value_name: "label", description: "Filter by Jira label" },
767
+ { long: "--updated-since", value_name: "date", description: 'Filter by updated date (e.g. "-7d" or "2026-01-01")' },
460
768
  { long: "--status-map", value_name: "map", description: 'Override status mapping, e.g. "QA=blocked,Done=closed"' },
461
- { long: "--dry-run", description: "Preview without writing" },
769
+ { long: "--map", value_name: "pairs", description: 'Override field mapping, e.g. "issuetype=Task,assignee=skip"' },
770
+ { long: "--dry-run", description: "Preview the JQL + request without any network call" },
462
771
  ];
463
772
  const EXPORT_FLAGS = [
464
773
  { long: "--project", value_name: "KEY", description: "Target Jira project key for created issues" },
465
774
  { long: "--host", value_name: "url", description: "Jira base URL override (else JIRA_BASE_URL)" },
775
+ { long: "--map", value_name: "pairs", description: 'Override field mapping, e.g. "issuetype=Story"' },
776
+ { long: "--rich", description: "Derive Jira issuetype + priority from pm item type/priority" },
777
+ { long: "--dry-run", description: "Print the Jira mutations that would be made, without any network call" },
466
778
  { long: "--push", description: "POST the payloads to Jira (requires creds + --project)" },
467
779
  ];
780
+ const VALIDATE_FLAGS = [
781
+ { long: "--host", value_name: "url", description: "Jira base URL override (else JIRA_BASE_URL)" },
782
+ ];
468
783
  export default defineExtension({
469
784
  name: "pm-jira",
470
- version: "2026.6.2",
785
+ version: "2026.6.3",
471
786
  activate(api) {
472
787
  // -----------------------------------------------------------------------
473
788
  // schema — declare Jira provenance fields so the workspace knows them
@@ -488,7 +803,9 @@ export default defineExtension({
488
803
  "pm jira sync --project PROJ --max-results 200",
489
804
  "pm jira sync --jql 'project = PROJ AND assignee = currentUser()'",
490
805
  "pm jira sync --project PROJ --status open --dry-run",
491
- "pm jira sync --project PROJ --status-map 'QA=blocked,Done=closed'",
806
+ "pm jira sync --project PROJ --assignee currentUser() --updated-since -7d",
807
+ "pm jira sync --project PROJ --issue-type Bug --status-map 'QA=blocked,Done=closed'",
808
+ "pm jira sync --project PROJ --map 'issuetype=Task,assignee=skip'",
492
809
  ],
493
810
  flags: PULL_FLAGS,
494
811
  async run(ctx) {
@@ -520,17 +837,17 @@ export default defineExtension({
520
837
  const customJql = readStringOption(options, "jql");
521
838
  const maxResults = readNumberOption(options, "max-results") ?? 500;
522
839
  const statusMap = parseStatusMap(readStringOption(options, "status-map"));
840
+ const fieldMap = parseFieldMap(readStringOption(options, "map"));
523
841
  if (!project && !customJql) {
524
842
  throw new CommandError("jira-sync importer requires either options.project or options.jql", EXIT_CODE.USAGE);
525
843
  }
526
- const jql = customJql ??
527
- `project = ${project} AND statusCategory != Done ORDER BY priority ASC`;
844
+ const jql = buildJql(readJqlFilters(options));
528
845
  console.error(`[jira-sync] Fetching issues with JQL: ${jql}`);
529
846
  const issues = await fetchAllJiraIssues(creds.baseUrl, creds.authHeader, jql, maxResults);
530
847
  console.error(`[jira-sync] Importing ${issues.length} issues`);
531
848
  let created = 0;
532
849
  for (const issue of issues) {
533
- if (createPmItem(ctx.pm_root, issueToItem(issue, creds.baseUrl, statusMap)))
850
+ if (createPmItem(ctx.pm_root, issueToItem(issue, creds.baseUrl, { statusMap, fieldMap })))
534
851
  created++;
535
852
  }
536
853
  console.error(`[jira-sync] Done. Imported ${created} issues.`);
@@ -544,8 +861,36 @@ export default defineExtension({
544
861
  api.registerExporter("jira", async (ctx) => {
545
862
  const options = ctx.options || {};
546
863
  const push = readBooleanOption(options, "push");
864
+ const dryRun = readBooleanOption(options, "dry-run");
865
+ const rich = readBooleanOption(options, "rich");
547
866
  const project = readStringOption(options, "project");
867
+ const fieldMap = parseFieldMap(readStringOption(options, "map"));
548
868
  const items = readPmItems(ctx.pm_root);
869
+ // --dry-run: build and PRINT the exact Jira mutations that WOULD be made
870
+ // from the current pm items, without resolving creds or hitting the
871
+ // network. Uses --host if given else a placeholder base so the endpoint
872
+ // shape is still inspectable offline.
873
+ if (dryRun) {
874
+ const baseUrl = readStringOption(options, "host") ??
875
+ (process.env["JIRA_BASE_URL"]?.trim() || "https://<JIRA_BASE_URL>");
876
+ const plan = buildExportPlan(items, baseUrl, {
877
+ projectKey: project,
878
+ fieldMap,
879
+ richMapping: rich,
880
+ });
881
+ const creates = plan.entries.filter((e) => e.op === "create").length;
882
+ const updates = plan.entries.filter((e) => e.op === "update").length;
883
+ console.error(`[dry-run] No network call will be made.`);
884
+ console.error(`[dry-run] Would issue ${plan.entries.length} Jira mutation(s): ${creates} create, ${updates} update.`);
885
+ for (const entry of plan.entries.slice(0, 20)) {
886
+ const tag = entry.op === "update" ? ` (existing ${entry.existingKey})` : "";
887
+ console.error(`[dry-run] ${entry.method} ${entry.endpoint}${tag} :: ${entry.payload.fields.summary}`);
888
+ }
889
+ if (plan.entries.length > 20) {
890
+ console.error(`[dry-run] ... and ${plan.entries.length - 20} more`);
891
+ }
892
+ return { dryRun: true, pushed: false, plan };
893
+ }
549
894
  if (push) {
550
895
  // Resolve creds first so the missing-creds path returns a structured
551
896
  // CommandError before we ever build payloads or hit the network.
@@ -553,11 +898,19 @@ export default defineExtension({
553
898
  if (!project) {
554
899
  throw new CommandError("--push requires --project <KEY> (the target Jira project for new issues).", EXIT_CODE.USAGE);
555
900
  }
556
- const payloads = items.map((item) => itemToJiraPayload(item, project));
901
+ // Only CREATE new issues here; items that already carry a Jira key are
902
+ // skipped so a re-export never duplicates upstream issues.
903
+ const plan = buildExportPlan(items, creds.baseUrl, {
904
+ projectKey: project,
905
+ fieldMap,
906
+ richMapping: rich,
907
+ });
908
+ const toCreate = plan.entries.filter((e) => e.op === "create");
909
+ const skipped = plan.entries.length - toCreate.length;
557
910
  let created = 0;
558
- for (const payload of payloads) {
911
+ for (const entry of toCreate) {
559
912
  try {
560
- await httpsPost(`${creds.baseUrl}/rest/api/3/issue`, creds.authHeader, JSON.stringify(payload));
913
+ await httpsPost(entry.endpoint, creds.authHeader, JSON.stringify(entry.payload));
561
914
  created++;
562
915
  }
563
916
  catch (err) {
@@ -565,13 +918,80 @@ export default defineExtension({
565
918
  throw new CommandError(`Failed to create Jira issue: ${msg}`);
566
919
  }
567
920
  }
568
- console.error(`Created ${created} issue(s) in Jira project ${project}.`);
569
- return { pushed: true, created, project };
921
+ console.error(`Created ${created} issue(s) in Jira project ${project}.` +
922
+ (skipped > 0 ? ` Skipped ${skipped} item(s) that already have a Jira key.` : ""));
923
+ return { pushed: true, created, skipped, project };
570
924
  }
571
- const payloads = items.map((item) => itemToJiraPayload(item, project));
925
+ const baseUrl = readStringOption(options, "host") ??
926
+ (process.env["JIRA_BASE_URL"]?.trim() || "https://<JIRA_BASE_URL>");
927
+ const plan = buildExportPlan(items, baseUrl, {
928
+ projectKey: project,
929
+ fieldMap,
930
+ richMapping: rich,
931
+ });
932
+ const payloads = plan.entries.map((e) => e.payload);
572
933
  console.log(JSON.stringify(payloads, null, 2));
573
934
  return { exported: payloads.length, pushed: false };
574
935
  });
936
+ // -----------------------------------------------------------------------
937
+ // Command: pm jira validate — credential / readiness diagnostics.
938
+ // Never performs a network call and never leaks the token or email; it
939
+ // reports presence booleans + a redacted host preview. --json returns the
940
+ // structured object (the global --json flag controls rendering).
941
+ // -----------------------------------------------------------------------
942
+ api.registerCommand({
943
+ name: "jira validate",
944
+ description: "Check Jira credential / base-URL readiness (no secrets leaked, no network)",
945
+ intent: "Diagnose whether pm-jira has the env/config it needs to talk to Jira",
946
+ examples: ["pm jira validate", "pm jira validate --json", "pm jira validate --host https://co.atlassian.net"],
947
+ flags: VALIDATE_FLAGS,
948
+ async run(ctx) {
949
+ const diag = diagnoseCreds(ctx.options || {});
950
+ const json = Boolean(ctx.global?.json);
951
+ if (!json) {
952
+ // Human-readable summary on stderr; the returned object is what pm
953
+ // renders to stdout. Never print the token/email values.
954
+ console.error(diag.ready ? "Jira credentials: READY" : "Jira credentials: NOT READY");
955
+ console.error(` base URL present: ${diag.baseUrlPresent} (source: ${diag.baseUrlSource})`);
956
+ if (diag.hostPreview)
957
+ console.error(` host: ${diag.hostPreview}`);
958
+ console.error(` email present: ${diag.emailPresent}`);
959
+ console.error(` token present: ${diag.tokenPresent}`);
960
+ if (!diag.ready)
961
+ console.error(` missing: ${diag.missing.join(", ")}`);
962
+ }
963
+ // Return the object: in --json mode pm serializes it; otherwise pm
964
+ // renders a compact view. Either way we do not corrupt stdout.
965
+ return diag;
966
+ },
967
+ });
968
+ // -----------------------------------------------------------------------
969
+ // hooks — best-effort export-on-write mirror (OPT-IN).
970
+ // Gated on PM_JIRA_PUSH_ON_WRITE being truthy AND full creds present. When
971
+ // disabled or unconfigured it is a strict no-op. The pm hook runtime already
972
+ // swallows any throw from a hook into a warning, so this can NEVER fail the
973
+ // user's pm command; we additionally guard internally for clarity.
974
+ // -----------------------------------------------------------------------
975
+ api.hooks.onWrite(async (hookCtx) => {
976
+ const decision = decidePushOnWrite(hookCtx, process.env);
977
+ if (!decision.shouldPush)
978
+ return;
979
+ // Live mirror requires creds + network; in this build it is intentionally
980
+ // a best-effort stub that no-ops without creds. When creds are present a
981
+ // future revision can PUT the changed item upstream. We keep the network
982
+ // call out of the default path so writes stay fast and offline-safe.
983
+ try {
984
+ const diag = diagnoseCreds({}, process.env);
985
+ if (!diag.ready)
986
+ return; // no creds → silent no-op
987
+ // Intentionally minimal: real upstream PUT is left to an explicit
988
+ // `pm jira export --push` so a stray write never spams Jira. The hook
989
+ // exists to make the opt-in surface real + testable.
990
+ }
991
+ catch {
992
+ // Swallow — a hook must never break the user's pm command.
993
+ }
994
+ });
575
995
  },
576
996
  });
577
997
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pm-jira",
3
- "version": "2026.6.2",
3
+ "version": "2026.6.3",
4
4
  "description": "Jira issue sync for pm-cli",
5
5
  "author": "@unbraind",
6
6
  "entry": "./dist/index.js",
@@ -9,7 +9,7 @@
9
9
  "commands",
10
10
  "schema",
11
11
  "importers",
12
- "services"
12
+ "hooks"
13
13
  ],
14
14
  "pm": {
15
15
  "compatibility": "v2"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pm-jira",
3
- "version": "2026.6.2",
3
+ "version": "2026.6.3",
4
4
  "description": "Jira issue sync for pm-cli",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,12 +35,12 @@
35
35
  "release:check": "npm run typecheck && npm run build && npm run audit:prod && npm run pack:dry-run && npm run changelog:check"
36
36
  },
37
37
  "peerDependencies": {
38
- "@unbrained/pm-cli": ">=2026.5.29"
38
+ "@unbrained/pm-cli": ">=2026.5.31"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/node": "^25.9.1",
42
42
  "@unbrained/pm-cli": "^2026.5.31",
43
- "pm-changelog": "^2026.5.29-2",
43
+ "pm-changelog": "^2026.6.2",
44
44
  "typescript": "^6.0.3"
45
45
  },
46
46
  "keywords": [