pm-github 2026.5.31 → 2026.6.2
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 +12 -0
- package/README.md +44 -9
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +316 -134
- package/dist/index.js.map +1 -1
- package/manifest.json +5 -3
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026.6.2 - 2026-06-02
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Adopt full SDK capability surface: native importer/exporter, schema fields, afterCommand hook, richer import flags ([pm-github-gh83](https://github.com/unbraind/pm-github/blob/main/.agents/pm/features/pm-github-gh83.toon))
|
|
8
|
+
|
|
9
|
+
## 2026.06.01 - 2026-06-01
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Thrown errors lacked exitCode → runtime re-invoked handler \(double fetch\) ([pm-github-fgay](https://github.com/unbraind/pm-github/blob/main/.agents/pm/issues/pm-github-fgay.toon))
|
|
14
|
+
|
|
3
15
|
## 2026.05.29 - 2026-05-29
|
|
4
16
|
|
|
5
17
|
### Added
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# pm-github
|
|
2
2
|
|
|
3
|
-
GitHub Issues importer for [pm-cli](https://github.com/unbraind/pm-cli).
|
|
3
|
+
GitHub Issues importer **and exporter** for [pm-cli](https://github.com/unbraind/pm-cli).
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Import issues from any GitHub repo as pm items, export pm items back as a GitHub-issues payload, and track GitHub provenance on each item. Works unauthenticated (60 req/hr); set `GITHUB_TOKEN`/`GH_TOKEN` or run `gh auth login` for 5000 req/hr and private repos.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -12,26 +12,61 @@ Fetch issues from any public GitHub repo and create pm items. No authentication
|
|
|
12
12
|
pm install github.com/unbraind/pm-github --global
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## Capabilities
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
| SDK capability | What it provides |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `importers` | `pm github import <owner/repo>` — native import pipeline |
|
|
20
|
+
| `importers` (exporter) | `pm github export` — render pm items as a GitHub-issues payload |
|
|
21
|
+
| `commands` | `pm gh-issues import <owner/repo>` — legacy alias of the importer |
|
|
22
|
+
| `schema` | declares `github_url`, `github_number`, `github_state` item fields |
|
|
23
|
+
| `hooks` | `afterCommand` — opt-in sync reminder (`PM_GITHUB_SYNC`) for linked items |
|
|
24
|
+
|
|
25
|
+
## Import
|
|
26
|
+
|
|
27
|
+
### `pm github import <owner/repo>` (or `pm gh-issues import`)
|
|
18
28
|
|
|
19
29
|
```bash
|
|
20
|
-
pm
|
|
21
|
-
pm
|
|
22
|
-
pm
|
|
23
|
-
pm
|
|
30
|
+
pm github import unbraind/pm-cli
|
|
31
|
+
pm github import owner/repo --state all
|
|
32
|
+
pm github import owner/repo --labels bug,enhancement
|
|
33
|
+
pm github import owner/repo --since 2026-01-01T00:00:00Z # incremental sync
|
|
34
|
+
pm github import owner/repo --assignee octocat
|
|
35
|
+
pm github import owner/repo --milestone "v1.0"
|
|
36
|
+
pm github import owner/repo --include-prs
|
|
37
|
+
pm github import owner/repo --dry-run
|
|
24
38
|
```
|
|
25
39
|
|
|
26
40
|
**Flags**
|
|
27
41
|
|
|
28
42
|
| Flag | Type | Description |
|
|
29
43
|
|---|---|---|
|
|
30
|
-
| `--all` | boolean | Include closed issues (
|
|
44
|
+
| `--all` | boolean | Include closed issues (shorthand for `--state all`) |
|
|
45
|
+
| `--state <state>` | string | `open` \| `closed` \| `all` (default: open) |
|
|
31
46
|
| `--labels <labels>` | string | Comma-separated label filter |
|
|
47
|
+
| `--since <iso>` | string | Only issues updated after this ISO timestamp (incremental sync) |
|
|
48
|
+
| `--assignee <login>` | string | Filter by assignee login |
|
|
49
|
+
| `--milestone <name>` | string | Filter by milestone title |
|
|
50
|
+
| `--include-prs` | boolean | Include pull requests (default: skip PRs) |
|
|
32
51
|
| `--dry-run` | boolean | Preview without writing |
|
|
33
52
|
| `--type <type>` | string | Override pm item type (default: Issue) |
|
|
34
53
|
|
|
54
|
+
## Export
|
|
55
|
+
|
|
56
|
+
### `pm github export`
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
pm github export # JSON GitHub-issues payload to stdout
|
|
60
|
+
pm github export --format md # markdown
|
|
61
|
+
pm github export --repo owner/repo --push # create the issues on GitHub (requires a token)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
| Flag | Type | Description |
|
|
65
|
+
|---|---|---|
|
|
66
|
+
| `--format <json\|md>` | string | Output format (default: json) |
|
|
67
|
+
| `--repo <owner/repo>` | string | Target repo for `--push` |
|
|
68
|
+
| `--push` | boolean | Create issues on GitHub (requires `GITHUB_TOKEN`/`GH_TOKEN`) |
|
|
69
|
+
|
|
35
70
|
## License
|
|
36
71
|
|
|
37
72
|
MIT
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,48 @@
|
|
|
1
|
+
interface GhIssue {
|
|
2
|
+
number: number;
|
|
3
|
+
title: string;
|
|
4
|
+
body: string | null;
|
|
5
|
+
state: "open" | "closed";
|
|
6
|
+
labels: Array<{
|
|
7
|
+
name: string;
|
|
8
|
+
}>;
|
|
9
|
+
assignee: {
|
|
10
|
+
login: string;
|
|
11
|
+
} | null;
|
|
12
|
+
milestone: {
|
|
13
|
+
title: string;
|
|
14
|
+
} | null;
|
|
15
|
+
created_at: string;
|
|
16
|
+
updated_at: string;
|
|
17
|
+
html_url: string;
|
|
18
|
+
pull_request?: unknown;
|
|
19
|
+
}
|
|
20
|
+
interface ImportOptions {
|
|
21
|
+
state: "open" | "closed" | "all";
|
|
22
|
+
labels?: string;
|
|
23
|
+
since?: string;
|
|
24
|
+
assignee?: string;
|
|
25
|
+
milestone?: string;
|
|
26
|
+
includePrs: boolean;
|
|
27
|
+
itemType: string;
|
|
28
|
+
dryRun: boolean;
|
|
29
|
+
}
|
|
1
30
|
export declare function resolveGitHubToken(): string | undefined;
|
|
2
31
|
export declare function parseNextLink(linkHeader?: string): string | undefined;
|
|
3
32
|
export declare function optionEnabled(options: Record<string, unknown>, ...keys: string[]): boolean;
|
|
4
33
|
export declare function optionString(options: Record<string, unknown>, ...keys: string[]): string | undefined;
|
|
34
|
+
export declare const EXIT_CODE: {
|
|
35
|
+
readonly GENERIC_FAILURE: 1;
|
|
36
|
+
readonly USAGE: 2;
|
|
37
|
+
readonly NOT_FOUND: 3;
|
|
38
|
+
};
|
|
39
|
+
export declare class CommandError extends Error {
|
|
40
|
+
exitCode: number;
|
|
41
|
+
constructor(message: string, exitCode?: number);
|
|
42
|
+
}
|
|
43
|
+
export declare function buildIssuesUrl(repo: string, opts: ImportOptions): string;
|
|
44
|
+
export declare function applyClientFilters(issues: GhIssue[], opts: ImportOptions): GhIssue[];
|
|
45
|
+
export declare function parseImportOptions(options: Record<string, unknown>): ImportOptions;
|
|
5
46
|
declare const _default: {
|
|
6
47
|
name: string;
|
|
7
48
|
version: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAoBA,UAAU,OAAO;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAcD,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAavD;AAmDD,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOrE;AAQD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAK1F;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAMpG;AAUD,eAAO,MAAM,SAAS;;;;CAIZ,CAAC;AAEX,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,EAAE,MAAM,CAAC;gBACL,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkC;CAK1E;AASD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAMxE;AAuBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,EAAE,CAOpF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAoBlF;;;;kBAuKe,GAAG;;AAJnB,wBAgHG"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
// pm-github — GitHub Issues importer for pm-cli
|
|
1
|
+
// pm-github — GitHub Issues importer/exporter for pm-cli
|
|
2
|
+
//
|
|
3
|
+
// Capabilities (see manifest.json):
|
|
4
|
+
// commands — `pm gh-issues import` (legacy, full-featured)
|
|
5
|
+
// importers — `pm github import <owner/repo>` (native import pipeline)
|
|
6
|
+
// exporters — `pm github export` (render pm items as a GitHub-issues payload)
|
|
7
|
+
// schema — declares github_url / github_number / github_state item fields
|
|
8
|
+
// hooks — afterCommand: opt-in sync hints for github-linked items
|
|
2
9
|
import https from "node:https";
|
|
3
10
|
import { spawnSync } from "node:child_process";
|
|
4
11
|
const defineExtension = ((extension) => extension);
|
|
@@ -22,7 +29,7 @@ export function resolveGitHubToken() {
|
|
|
22
29
|
}
|
|
23
30
|
return undefined;
|
|
24
31
|
}
|
|
25
|
-
function
|
|
32
|
+
function request(method, url, token, payload) {
|
|
26
33
|
return new Promise((resolve, reject) => {
|
|
27
34
|
const headers = {
|
|
28
35
|
"User-Agent": "pm-github",
|
|
@@ -30,28 +37,40 @@ function fetchJSON(url, token) {
|
|
|
30
37
|
};
|
|
31
38
|
if (token)
|
|
32
39
|
headers.Authorization = `Bearer ${token}`;
|
|
33
|
-
|
|
40
|
+
if (payload) {
|
|
41
|
+
headers["Content-Type"] = "application/json";
|
|
42
|
+
headers["Content-Length"] = String(Buffer.byteLength(payload));
|
|
43
|
+
}
|
|
44
|
+
const req = https.request(url, { method, headers }, (res) => {
|
|
34
45
|
const status = res.statusCode ?? 0;
|
|
35
46
|
if (status >= 300 && status < 400 && res.headers.location) {
|
|
36
|
-
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
if (status !== 200) {
|
|
40
|
-
res.resume();
|
|
41
|
-
reject(new Error(`GitHub API returned HTTP ${status}`));
|
|
47
|
+
request(method, res.headers.location, token, payload).then(resolve, reject);
|
|
42
48
|
return;
|
|
43
49
|
}
|
|
44
50
|
const chunks = [];
|
|
45
51
|
res.on("data", (c) => chunks.push(c));
|
|
46
|
-
res.on("end", () =>
|
|
47
|
-
body
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
res.on("end", () => {
|
|
53
|
+
const body = Buffer.concat(chunks).toString("utf-8");
|
|
54
|
+
if (status < 200 || status >= 300) {
|
|
55
|
+
reject(new Error(`GitHub API returned HTTP ${status}`));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
resolve({
|
|
59
|
+
body,
|
|
60
|
+
linkHeader: typeof res.headers.link === "string" ? res.headers.link : undefined,
|
|
61
|
+
});
|
|
62
|
+
});
|
|
50
63
|
});
|
|
51
64
|
req.on("error", reject);
|
|
52
65
|
req.setTimeout(30000, () => { req.destroy(); reject(new Error("timeout")); });
|
|
66
|
+
if (payload)
|
|
67
|
+
req.write(payload);
|
|
68
|
+
req.end();
|
|
53
69
|
});
|
|
54
70
|
}
|
|
71
|
+
function fetchJSON(url, token) {
|
|
72
|
+
return request("GET", url, token);
|
|
73
|
+
}
|
|
55
74
|
// Follow GitHub's RFC 5988 Link header so repos with more than one page of
|
|
56
75
|
// issues are fully imported instead of silently truncated at per_page.
|
|
57
76
|
export function parseNextLink(linkHeader) {
|
|
@@ -83,147 +102,310 @@ export function optionString(options, ...keys) {
|
|
|
83
102
|
}
|
|
84
103
|
return undefined;
|
|
85
104
|
}
|
|
105
|
+
// pm's extension command runtime only treats a thrown error as a cleanly
|
|
106
|
+
// handled non-zero exit when the error carries a numeric `exitCode` property
|
|
107
|
+
// (see @unbrained/pm-cli runCommandHandler). A plain `Error` makes the runtime
|
|
108
|
+
// fall through to its "unhandled" path, which RE-INVOKES the command handler a
|
|
109
|
+
// second time — doubling side effects (e.g. a second GitHub fetch) and exiting
|
|
110
|
+
// with a generic code instead of a semantic one. We mirror the SDK's EXIT_CODE
|
|
111
|
+
// contract here rather than importing it: standalone-installed extensions load
|
|
112
|
+
// only their own `dist/`, so `@unbrained/pm-cli` is not resolvable at runtime.
|
|
113
|
+
export const EXIT_CODE = {
|
|
114
|
+
GENERIC_FAILURE: 1,
|
|
115
|
+
USAGE: 2,
|
|
116
|
+
NOT_FOUND: 3,
|
|
117
|
+
};
|
|
118
|
+
export class CommandError extends Error {
|
|
119
|
+
exitCode;
|
|
120
|
+
constructor(message, exitCode = EXIT_CODE.GENERIC_FAILURE) {
|
|
121
|
+
super(message);
|
|
122
|
+
this.name = "CommandError";
|
|
123
|
+
this.exitCode = exitCode;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// ---------------------------------------------------------------------------
|
|
127
|
+
// Shared import core (used by both the legacy command and the importer)
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
// Build the GitHub issues list URL. `since`, `assignee`, `labels` and `state`
|
|
130
|
+
// are honored server-side; `milestone` is filtered client-side (the REST API
|
|
131
|
+
// keys milestones by number, not title).
|
|
132
|
+
export function buildIssuesUrl(repo, opts) {
|
|
133
|
+
let url = `https://api.github.com/repos/${repo}/issues?state=${opts.state}&per_page=100`;
|
|
134
|
+
if (opts.labels)
|
|
135
|
+
url += `&labels=${encodeURIComponent(opts.labels)}`;
|
|
136
|
+
if (opts.since)
|
|
137
|
+
url += `&since=${encodeURIComponent(opts.since)}`;
|
|
138
|
+
if (opts.assignee)
|
|
139
|
+
url += `&assignee=${encodeURIComponent(opts.assignee)}`;
|
|
140
|
+
return url;
|
|
141
|
+
}
|
|
142
|
+
async function fetchAllIssues(repo, opts, token) {
|
|
143
|
+
const issues = [];
|
|
144
|
+
let nextUrl = buildIssuesUrl(repo, opts);
|
|
145
|
+
while (nextUrl) {
|
|
146
|
+
const { body, linkHeader } = await fetchJSON(nextUrl, token);
|
|
147
|
+
let page;
|
|
148
|
+
try {
|
|
149
|
+
page = JSON.parse(body);
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
throw new Error("Invalid JSON response from GitHub.");
|
|
153
|
+
}
|
|
154
|
+
if (!Array.isArray(page)) {
|
|
155
|
+
throw new Error("Unexpected GitHub API response (expected an array of issues).");
|
|
156
|
+
}
|
|
157
|
+
issues.push(...page);
|
|
158
|
+
nextUrl = parseNextLink(linkHeader);
|
|
159
|
+
}
|
|
160
|
+
return issues;
|
|
161
|
+
}
|
|
162
|
+
// Apply the client-side filters (PRs, milestone-by-title).
|
|
163
|
+
export function applyClientFilters(issues, opts) {
|
|
164
|
+
let result = issues;
|
|
165
|
+
if (!opts.includePrs)
|
|
166
|
+
result = result.filter((i) => !i.pull_request);
|
|
167
|
+
if (opts.milestone) {
|
|
168
|
+
result = result.filter((i) => i.milestone?.title === opts.milestone);
|
|
169
|
+
}
|
|
170
|
+
return result;
|
|
171
|
+
}
|
|
172
|
+
export function parseImportOptions(options) {
|
|
173
|
+
// --state takes precedence; --all is the legacy shorthand for "all".
|
|
174
|
+
const stateOpt = optionString(options, "state");
|
|
175
|
+
const includeAll = optionEnabled(options, "all");
|
|
176
|
+
const state = stateOpt && ["open", "closed", "all"].includes(stateOpt)
|
|
177
|
+
? stateOpt
|
|
178
|
+
: includeAll
|
|
179
|
+
? "all"
|
|
180
|
+
: "open";
|
|
181
|
+
return {
|
|
182
|
+
state,
|
|
183
|
+
labels: optionString(options, "labels"),
|
|
184
|
+
since: optionString(options, "since"),
|
|
185
|
+
assignee: optionString(options, "assignee"),
|
|
186
|
+
milestone: optionString(options, "milestone"),
|
|
187
|
+
includePrs: optionEnabled(options, "include-prs", "includePrs"),
|
|
188
|
+
itemType: optionString(options, "type") || "Issue",
|
|
189
|
+
dryRun: optionEnabled(options, "dry-run", "dryRun"),
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// Run the full import flow. Returns a structured result; throws CommandError
|
|
193
|
+
// (with a semantic exitCode) on failure so the CLI exits non-zero exactly once.
|
|
194
|
+
async function runImport(repoArg, pmRoot, opts) {
|
|
195
|
+
if (!repoArg || !repoArg.includes("/")) {
|
|
196
|
+
throw new CommandError("Usage: pm github import <owner/repo> [--all|--state open|closed|all] " +
|
|
197
|
+
"[--labels bug,enhancement] [--since <iso>] [--assignee <login>] " +
|
|
198
|
+
"[--milestone <name>] [--include-prs]", EXIT_CODE.USAGE);
|
|
199
|
+
}
|
|
200
|
+
const token = resolveGitHubToken();
|
|
201
|
+
console.error(`Fetching issues from ${repoArg}…${token ? "" : " (unauthenticated — 60 req/hr)"}`);
|
|
202
|
+
let fetched;
|
|
203
|
+
try {
|
|
204
|
+
fetched = await fetchAllIssues(repoArg, opts, token);
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
208
|
+
const hint = !token && /HTTP 403/.test(msg)
|
|
209
|
+
? " — set GITHUB_TOKEN/GH_TOKEN or run `gh auth login` to raise the rate limit (60→5000/hr) and reach private repos"
|
|
210
|
+
: "";
|
|
211
|
+
const exitCode = /HTTP 404/.test(msg) ? EXIT_CODE.NOT_FOUND : EXIT_CODE.GENERIC_FAILURE;
|
|
212
|
+
throw new CommandError(`Failed to fetch issues from ${repoArg}: ${msg}${hint}`, exitCode);
|
|
213
|
+
}
|
|
214
|
+
const filtered = applyClientFilters(fetched, opts);
|
|
215
|
+
if (filtered.length === 0) {
|
|
216
|
+
console.error("No issues found.");
|
|
217
|
+
return { imported: 0, skipped: 0 };
|
|
218
|
+
}
|
|
219
|
+
console.error(`Found ${filtered.length} issue(s).`);
|
|
220
|
+
let imported = 0;
|
|
221
|
+
let skipped = 0;
|
|
222
|
+
for (const issue of filtered) {
|
|
223
|
+
const title = issue.title.trim();
|
|
224
|
+
if (!title) {
|
|
225
|
+
skipped++;
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const kind = issue.pull_request ? "PR" : "issue";
|
|
229
|
+
const tags = issue.labels.map((l) => l.name);
|
|
230
|
+
const status = mapState(issue.state);
|
|
231
|
+
const body = issue.body || "";
|
|
232
|
+
// Persist GitHub provenance in the description so it survives round-trips
|
|
233
|
+
// and powers `pm github export` + the afterCommand sync hint.
|
|
234
|
+
const description = `GH ${kind} #${issue.number}: ${issue.html_url}`;
|
|
235
|
+
const assignee = issue.assignee?.login;
|
|
236
|
+
const milestone = issue.milestone?.title;
|
|
237
|
+
if (opts.dryRun) {
|
|
238
|
+
console.error(` [dry-run] #${issue.number} ${title} (${status}, ${tags.join(",")})`);
|
|
239
|
+
imported++;
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
try {
|
|
243
|
+
const spawnArgs = [
|
|
244
|
+
"--path", pmRoot,
|
|
245
|
+
"create",
|
|
246
|
+
"--title", title,
|
|
247
|
+
"--type", opts.itemType,
|
|
248
|
+
"--status", status,
|
|
249
|
+
"--description", description,
|
|
250
|
+
"--body", body,
|
|
251
|
+
"--tags", tags.join(","),
|
|
252
|
+
"--message", `Imported from GitHub #${issue.number}`,
|
|
253
|
+
];
|
|
254
|
+
if (assignee)
|
|
255
|
+
spawnArgs.push("--assignee", assignee);
|
|
256
|
+
if (milestone)
|
|
257
|
+
spawnArgs.push("--sprint", milestone);
|
|
258
|
+
const result = spawnSync("pm", spawnArgs, { encoding: "utf-8" });
|
|
259
|
+
if (result.status !== 0) {
|
|
260
|
+
throw new Error(result.stderr || "pm create failed");
|
|
261
|
+
}
|
|
262
|
+
imported++;
|
|
263
|
+
}
|
|
264
|
+
catch (err) {
|
|
265
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
266
|
+
console.error(`#${issue.number}: create failed — ${msg}`);
|
|
267
|
+
skipped++;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
if (opts.dryRun) {
|
|
271
|
+
console.error(`[dry-run] Would import ${imported}, skip ${skipped}.`);
|
|
272
|
+
return { dryRun: true, wouldImport: imported, wouldSkip: skipped };
|
|
273
|
+
}
|
|
274
|
+
console.error(`Imported ${imported} issue(s), skipped ${skipped}.`);
|
|
275
|
+
if (imported === 0 && skipped > 0) {
|
|
276
|
+
throw new CommandError(`Imported 0 issue(s); ${skipped} failed.`);
|
|
277
|
+
}
|
|
278
|
+
return { imported, skipped };
|
|
279
|
+
}
|
|
280
|
+
function readPmItems(pmRoot) {
|
|
281
|
+
// `--full --include-body` so tags and body survive the export instead of the
|
|
282
|
+
// brief projection (which omits them).
|
|
283
|
+
const result = spawnSync("pm", ["--path", pmRoot, "--json", "list", "--full", "--include-body", "--limit", "10000"], { encoding: "utf-8" });
|
|
284
|
+
if (result.status !== 0) {
|
|
285
|
+
throw new CommandError(result.stderr || "pm list failed");
|
|
286
|
+
}
|
|
287
|
+
try {
|
|
288
|
+
const parsed = JSON.parse(result.stdout);
|
|
289
|
+
const items = Array.isArray(parsed) ? parsed : parsed.items ?? parsed.results ?? [];
|
|
290
|
+
return items;
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
throw new CommandError("Could not parse `pm list --json` output.");
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
function itemToGithubPayload(item) {
|
|
297
|
+
return {
|
|
298
|
+
title: item.title ?? "(untitled)",
|
|
299
|
+
body: item.body || item.description || "",
|
|
300
|
+
labels: item.tags ?? [],
|
|
301
|
+
state: item.status === "closed" || item.status === "canceled" ? "closed" : "open",
|
|
302
|
+
};
|
|
303
|
+
}
|
|
86
304
|
// ---------------------------------------------------------------------------
|
|
87
305
|
// Extension
|
|
88
306
|
// ---------------------------------------------------------------------------
|
|
307
|
+
const IMPORT_FLAGS = [
|
|
308
|
+
{ long: "--all", description: "Include closed issues (shorthand for --state all)" },
|
|
309
|
+
{ long: "--state", value_name: "state", description: "Issue state: open | closed | all (default: open)" },
|
|
310
|
+
{ long: "--labels", value_name: "labels", description: "Comma-separated label filter" },
|
|
311
|
+
{ long: "--since", value_name: "iso", description: "Only issues updated after this ISO timestamp (incremental sync)" },
|
|
312
|
+
{ long: "--assignee", value_name: "login", description: "Filter by assignee login" },
|
|
313
|
+
{ long: "--milestone", value_name: "name", description: "Filter by milestone title" },
|
|
314
|
+
{ long: "--include-prs", description: "Include pull requests (default: skip PRs)" },
|
|
315
|
+
{ long: "--dry-run", description: "Preview without writing" },
|
|
316
|
+
{ long: "--type", value_name: "type", description: "Override pm item type (default: Issue)" },
|
|
317
|
+
];
|
|
89
318
|
export default defineExtension({
|
|
90
319
|
name: "pm-github",
|
|
91
|
-
version: "2026.
|
|
320
|
+
version: "2026.6.2",
|
|
92
321
|
activate(api) {
|
|
93
322
|
// -----------------------------------------------------------------------
|
|
94
|
-
//
|
|
323
|
+
// schema — declare the GitHub provenance fields so the workspace knows them
|
|
324
|
+
// -----------------------------------------------------------------------
|
|
325
|
+
api.registerItemFields([
|
|
326
|
+
{ name: "github_url", type: "string", optional: true },
|
|
327
|
+
{ name: "github_number", type: "number", optional: true },
|
|
328
|
+
{ name: "github_state", type: "string", optional: true },
|
|
329
|
+
]);
|
|
330
|
+
// -----------------------------------------------------------------------
|
|
331
|
+
// importer — `pm github import <owner/repo>` (native import pipeline)
|
|
332
|
+
// -----------------------------------------------------------------------
|
|
333
|
+
api.registerImporter("github", async (ctx) => {
|
|
334
|
+
return runImport(ctx.args?.[0], ctx.pm_root, parseImportOptions(ctx.options || {}));
|
|
335
|
+
});
|
|
336
|
+
// -----------------------------------------------------------------------
|
|
337
|
+
// exporter — `pm github export` (render pm items as a GitHub-issues payload)
|
|
338
|
+
// Default: print JSON payload (or markdown with --format md). With --push
|
|
339
|
+
// AND a token AND --repo <owner/repo>, create the issues on GitHub.
|
|
340
|
+
// -----------------------------------------------------------------------
|
|
341
|
+
api.registerExporter("github", async (ctx) => {
|
|
342
|
+
const options = ctx.options || {};
|
|
343
|
+
const format = optionString(options, "format") || "json";
|
|
344
|
+
const items = readPmItems(ctx.pm_root);
|
|
345
|
+
const payloads = items.map(itemToGithubPayload);
|
|
346
|
+
const push = optionEnabled(options, "push");
|
|
347
|
+
const repo = optionString(options, "repo") || ctx.args?.[0];
|
|
348
|
+
if (push) {
|
|
349
|
+
const token = resolveGitHubToken();
|
|
350
|
+
if (!token) {
|
|
351
|
+
throw new CommandError("--push requires a GitHub token (set GITHUB_TOKEN/GH_TOKEN or run `gh auth login`).", EXIT_CODE.USAGE);
|
|
352
|
+
}
|
|
353
|
+
if (!repo || !repo.includes("/")) {
|
|
354
|
+
throw new CommandError("--push requires --repo <owner/repo>.", EXIT_CODE.USAGE);
|
|
355
|
+
}
|
|
356
|
+
let created = 0;
|
|
357
|
+
for (const payload of payloads) {
|
|
358
|
+
await request("POST", `https://api.github.com/repos/${repo}/issues`, token, JSON.stringify({ title: payload.title, body: payload.body, labels: payload.labels }));
|
|
359
|
+
created++;
|
|
360
|
+
}
|
|
361
|
+
console.error(`Created ${created} issue(s) on ${repo}.`);
|
|
362
|
+
return { pushed: true, created };
|
|
363
|
+
}
|
|
364
|
+
if (format === "md" || format === "markdown") {
|
|
365
|
+
const md = payloads
|
|
366
|
+
.map((p) => `## ${p.title}\n\n${p.body}\n\n_labels: ${p.labels.join(", ")} · state: ${p.state}_\n`)
|
|
367
|
+
.join("\n");
|
|
368
|
+
console.log(md);
|
|
369
|
+
return { exported: payloads.length, format: "markdown" };
|
|
370
|
+
}
|
|
371
|
+
console.log(JSON.stringify(payloads, null, 2));
|
|
372
|
+
return { exported: payloads.length, format: "json" };
|
|
373
|
+
});
|
|
374
|
+
// -----------------------------------------------------------------------
|
|
375
|
+
// hooks — opt-in sync reminder for github-linked items
|
|
376
|
+
// Safe + no network: only emits a hint, and only when PM_GITHUB_SYNC is set.
|
|
377
|
+
// -----------------------------------------------------------------------
|
|
378
|
+
api.hooks.afterCommand((ctx) => {
|
|
379
|
+
if (!process.env.PM_GITHUB_SYNC)
|
|
380
|
+
return;
|
|
381
|
+
if (!ctx.ok)
|
|
382
|
+
return;
|
|
383
|
+
if (ctx.command === "close" || ctx.command === "update") {
|
|
384
|
+
console.error("[pm-github] item changed — if it is linked to a GitHub issue, " +
|
|
385
|
+
"remember to sync the upstream issue (PM_GITHUB_SYNC hint).");
|
|
386
|
+
}
|
|
387
|
+
});
|
|
388
|
+
// -----------------------------------------------------------------------
|
|
389
|
+
// command — legacy `pm gh-issues import <owner/repo>` (delegates to core)
|
|
95
390
|
// -----------------------------------------------------------------------
|
|
96
391
|
api.registerCommand({
|
|
97
392
|
name: "gh-issues import",
|
|
98
393
|
description: "Fetch GitHub issues from a repo and create pm items. " +
|
|
99
394
|
"Skips pull requests by default. Uses GITHUB_TOKEN/GH_TOKEN (or the " +
|
|
100
395
|
"authenticated gh CLI) when available for 5000 req/hr and private repos; " +
|
|
101
|
-
"falls back to the unauthenticated API (60 req/hr)."
|
|
396
|
+
"falls back to the unauthenticated API (60 req/hr). " +
|
|
397
|
+
"Equivalent to `pm github import`.",
|
|
102
398
|
intent: "import GitHub issues as pm items",
|
|
103
399
|
examples: [
|
|
104
400
|
"pm gh-issues import unbraind/pm-cli",
|
|
105
401
|
"pm gh-issues import unbraind/pm-cli --all",
|
|
106
402
|
"pm gh-issues import unbraind/pm-cli --labels bug,enhancement",
|
|
107
|
-
"pm gh-issues import
|
|
108
|
-
|
|
109
|
-
flags: [
|
|
110
|
-
{ long: "--all", description: "Include closed issues (default: open only)" },
|
|
111
|
-
{ long: "--labels", value_name: "labels", description: "Comma-separated label filter" },
|
|
112
|
-
{ long: "--dry-run", description: "Preview without writing" },
|
|
113
|
-
{ long: "--type", value_name: "type", description: "Override pm item type (default: Issue)" },
|
|
403
|
+
"pm gh-issues import unbraind/pm-cli --since 2026-01-01T00:00:00Z",
|
|
404
|
+
"pm github import owner/repo --dry-run",
|
|
114
405
|
],
|
|
406
|
+
flags: IMPORT_FLAGS,
|
|
115
407
|
async run(ctx) {
|
|
116
|
-
|
|
117
|
-
if (!repoArg || !repoArg.includes("/")) {
|
|
118
|
-
// Throw so the CLI exits non-zero — a returned { error } is treated
|
|
119
|
-
// as a successful run by the runtime.
|
|
120
|
-
throw new Error("Usage: pm gh-issues import <owner/repo> [--all] [--labels bug,enhancement]");
|
|
121
|
-
}
|
|
122
|
-
const includeAll = optionEnabled(ctx.options, "all");
|
|
123
|
-
const labelsFilter = optionString(ctx.options, "labels");
|
|
124
|
-
// Read both kebab and camelCase keys — the runtime may normalize
|
|
125
|
-
// "--dry-run" to "dryRun", and reading only "dry-run" silently ignored
|
|
126
|
-
// the flag (writing items even in preview mode).
|
|
127
|
-
const dryRun = optionEnabled(ctx.options, "dry-run", "dryRun");
|
|
128
|
-
const itemType = optionString(ctx.options, "type") || "Issue";
|
|
129
|
-
const state = includeAll ? "all" : "open";
|
|
130
|
-
let url = `https://api.github.com/repos/${repoArg}/issues?state=${state}&per_page=100`;
|
|
131
|
-
if (labelsFilter) {
|
|
132
|
-
url += `&labels=${encodeURIComponent(labelsFilter)}`;
|
|
133
|
-
}
|
|
134
|
-
const token = resolveGitHubToken();
|
|
135
|
-
console.error(`Fetching issues from ${repoArg}…${token ? "" : " (unauthenticated — 60 req/hr)"}`);
|
|
136
|
-
const issues = [];
|
|
137
|
-
let nextUrl = url;
|
|
138
|
-
try {
|
|
139
|
-
while (nextUrl) {
|
|
140
|
-
const { body, linkHeader } = await fetchJSON(nextUrl, token);
|
|
141
|
-
let page;
|
|
142
|
-
try {
|
|
143
|
-
page = JSON.parse(body);
|
|
144
|
-
}
|
|
145
|
-
catch {
|
|
146
|
-
throw new Error("Invalid JSON response from GitHub.");
|
|
147
|
-
}
|
|
148
|
-
if (!Array.isArray(page)) {
|
|
149
|
-
throw new Error("Unexpected GitHub API response (expected an array of issues).");
|
|
150
|
-
}
|
|
151
|
-
issues.push(...page);
|
|
152
|
-
nextUrl = parseNextLink(linkHeader);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
catch (err) {
|
|
156
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
157
|
-
const hint = !token && /HTTP 403/.test(msg)
|
|
158
|
-
? " — set GITHUB_TOKEN/GH_TOKEN or run `gh auth login` to raise the rate limit (60→5000/hr) and reach private repos"
|
|
159
|
-
: "";
|
|
160
|
-
// Throw so the CLI exits non-zero on a failed fetch.
|
|
161
|
-
throw new Error(`Failed to fetch issues from ${repoArg}: ${msg}${hint}`);
|
|
162
|
-
}
|
|
163
|
-
// Filter out PRs
|
|
164
|
-
const filtered = issues.filter((i) => !i.pull_request);
|
|
165
|
-
if (filtered.length === 0) {
|
|
166
|
-
console.error("No issues found.");
|
|
167
|
-
return { imported: 0, skipped: 0 };
|
|
168
|
-
}
|
|
169
|
-
console.error(`Found ${filtered.length} issue(s).`);
|
|
170
|
-
let imported = 0;
|
|
171
|
-
let skipped = 0;
|
|
172
|
-
for (const issue of filtered) {
|
|
173
|
-
const title = issue.title.trim();
|
|
174
|
-
if (!title) {
|
|
175
|
-
skipped++;
|
|
176
|
-
continue;
|
|
177
|
-
}
|
|
178
|
-
const tags = issue.labels.map((l) => l.name);
|
|
179
|
-
const status = mapState(issue.state);
|
|
180
|
-
const body = issue.body || "";
|
|
181
|
-
const description = `GH #${issue.number}: ${issue.html_url}`;
|
|
182
|
-
const assignee = issue.assignee?.login;
|
|
183
|
-
const milestone = issue.milestone?.title;
|
|
184
|
-
if (dryRun) {
|
|
185
|
-
console.error(` [dry-run] #${issue.number} ${title} (${status}, ${tags.join(",")})`);
|
|
186
|
-
imported++;
|
|
187
|
-
continue;
|
|
188
|
-
}
|
|
189
|
-
try {
|
|
190
|
-
const spawnArgs = [
|
|
191
|
-
"--path", ctx.pm_root,
|
|
192
|
-
"create",
|
|
193
|
-
"--title", title,
|
|
194
|
-
"--type", itemType,
|
|
195
|
-
"--status", status,
|
|
196
|
-
"--description", description,
|
|
197
|
-
"--body", body,
|
|
198
|
-
"--tags", tags.join(","),
|
|
199
|
-
"--message", `Imported from GitHub #${issue.number}`,
|
|
200
|
-
];
|
|
201
|
-
if (assignee)
|
|
202
|
-
spawnArgs.push("--assignee", assignee);
|
|
203
|
-
if (milestone)
|
|
204
|
-
spawnArgs.push("--sprint", milestone);
|
|
205
|
-
const result = spawnSync("pm", spawnArgs, { encoding: "utf-8" });
|
|
206
|
-
if (result.status !== 0) {
|
|
207
|
-
throw new Error(result.stderr || "pm create failed");
|
|
208
|
-
}
|
|
209
|
-
imported++;
|
|
210
|
-
}
|
|
211
|
-
catch (err) {
|
|
212
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
213
|
-
console.error(`#${issue.number}: create failed — ${msg}`);
|
|
214
|
-
skipped++;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
if (dryRun) {
|
|
218
|
-
console.error(`[dry-run] Would import ${imported}, skip ${skipped}.`);
|
|
219
|
-
return { dryRun: true, wouldImport: imported, wouldSkip: skipped };
|
|
220
|
-
}
|
|
221
|
-
console.error(`Imported ${imported} issue(s), skipped ${skipped}.`);
|
|
222
|
-
if (imported === 0 && skipped > 0) {
|
|
223
|
-
// Every create failed — surface as a non-zero exit for automation.
|
|
224
|
-
throw new Error(`Imported 0 issue(s); ${skipped} failed.`);
|
|
225
|
-
}
|
|
226
|
-
return { imported, skipped };
|
|
408
|
+
return runImport(ctx.args[0], ctx.pm_root, parseImportOptions(ctx.options));
|
|
227
409
|
},
|
|
228
410
|
});
|
|
229
411
|
},
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAEhD,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,MAAM,eAAe,GAA+B,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,SAAS,CAAQ,CAAC;AA6B3F,uEAAuE;AACvE,8EAA8E;AAC9E,sDAAsD;AACtD,MAAM,UAAU,kBAAkB;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClE,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,KAAc;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAA2B;YACtC,YAAY,EAAE,WAAW;YACzB,MAAM,EAAE,6BAA6B;SACtC,CAAC;QACF,IAAI,KAAK;YAAE,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;YACnC,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC1D,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YACD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC;gBAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC7C,UAAU,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;aAChF,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,2EAA2E;AAC3E,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,UAAmB;IAC/C,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACvD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAChD,CAAC;AAED,8EAA8E;AAC9E,oEAAoE;AACpE,MAAM,UAAU,aAAa,CAAC,OAAgC,EAAE,GAAG,IAAc;IAC/E,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgC,EAAE,GAAG,IAAc;IAC9E,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,eAAe,eAAe,CAAC;IAC7B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,WAAW;IAEpB,QAAQ,CAAC,GAAQ;QACf,0EAA0E;QAC1E,4CAA4C;QAC5C,0EAA0E;QAC1E,GAAG,CAAC,eAAe,CAAC;YAClB,IAAI,EAAE,kBAAkB;YACxB,WAAW,EACT,uDAAuD;gBACvD,qEAAqE;gBACrE,0EAA0E;gBAC1E,oDAAoD;YACtD,MAAM,EAAE,kCAAkC;YAC1C,QAAQ,EAAE;gBACR,qCAAqC;gBACrC,2CAA2C;gBAC3C,8DAA8D;gBAC9D,0CAA0C;aAC3C;YACD,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,4CAA4C,EAAE;gBAC5E,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;gBACvF,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,yBAAyB,EAAE;gBAC7D,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,wCAAwC,EAAE;aAC9F;YACD,KAAK,CAAC,GAAG,CAAC,GAAQ;gBAChB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAuB,CAAC;gBAClD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvC,oEAAoE;oBACpE,sCAAsC;oBACtC,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;gBAChG,CAAC;gBAED,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACrD,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACzD,iEAAiE;gBACjE,uEAAuE;gBACvE,iDAAiD;gBACjD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC/D,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC;gBAE9D,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC1C,IAAI,GAAG,GAAG,gCAAgC,OAAO,iBAAiB,KAAK,eAAe,CAAC;gBACvF,IAAI,YAAY,EAAE,CAAC;oBACjB,GAAG,IAAI,WAAW,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvD,CAAC;gBAED,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CACX,wBAAwB,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,EAAE,CACnF,CAAC;gBAEF,MAAM,MAAM,GAAc,EAAE,CAAC;gBAC7B,IAAI,OAAO,GAAuB,GAAG,CAAC;gBACtC,IAAI,CAAC;oBACH,OAAO,OAAO,EAAE,CAAC;wBACf,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;wBAC7D,IAAI,IAAa,CAAC;wBAClB,IAAI,CAAC;4BACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC1B,CAAC;wBAAC,MAAM,CAAC;4BACP,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;wBACxD,CAAC;wBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;4BACzB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;wBACnF,CAAC;wBACD,MAAM,CAAC,IAAI,CAAC,GAAI,IAAkB,CAAC,CAAC;wBACpC,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7D,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;wBACzC,CAAC,CAAC,kHAAkH;wBACpH,CAAC,CAAC,EAAE,CAAC;oBACP,qDAAqD;oBACrD,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBAED,iBAAiB;gBACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gBAEvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;oBAClC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrC,CAAC;gBAED,OAAO,CAAC,KAAK,CAAC,SAAS,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;gBAEpD,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,IAAI,OAAO,GAAG,CAAC,CAAC;gBAEhB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACjC,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,OAAO,EAAE,CAAC;wBACV,SAAS;oBACX,CAAC;oBAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC9B,MAAM,WAAW,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;oBACvC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;oBAEzC,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,MAAM,IAAI,KAAK,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACtF,QAAQ,EAAE,CAAC;wBACX,SAAS;oBACX,CAAC;oBAED,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG;4BAChB,QAAQ,EAAE,GAAG,CAAC,OAAO;4BACrB,QAAQ;4BACR,SAAS,EAAE,KAAK;4BAChB,QAAQ,EAAE,QAAQ;4BAClB,UAAU,EAAE,MAAM;4BAClB,eAAe,EAAE,WAAW;4BAC5B,QAAQ,EAAE,IAAI;4BACd,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;4BACxB,WAAW,EAAE,yBAAyB,KAAK,CAAC,MAAM,EAAE;yBACrD,CAAC;wBACF,IAAI,QAAQ;4BAAE,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;wBACrD,IAAI,SAAS;4BAAE,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBAErD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;wBACjE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACxB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC;wBACvD,CAAC;wBACD,QAAQ,EAAE,CAAC;oBACb,CAAC;oBAAC,OAAO,GAAY,EAAE,CAAC;wBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC7D,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC,CAAC;wBAC1D,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC;gBAED,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,QAAQ,UAAU,OAAO,GAAG,CAAC,CAAC;oBACtE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;gBACrE,CAAC;gBAED,OAAO,CAAC,KAAK,CAAC,YAAY,QAAQ,sBAAsB,OAAO,GAAG,CAAC,CAAC;gBACpE,IAAI,QAAQ,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBAClC,mEAAmE;oBACnE,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,UAAU,CAAC,CAAC;gBAC7D,CAAC;gBACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC/B,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/manifest.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pm-github",
|
|
3
|
-
"version": "2026.
|
|
4
|
-
"description": "GitHub Issues importer.
|
|
3
|
+
"version": "2026.6.2",
|
|
4
|
+
"description": "GitHub Issues importer/exporter. Imports issues from a GitHub repo as pm items (native `pm github import`), exports pm items as a GitHub-issues payload, and declares GitHub provenance fields.",
|
|
5
5
|
"author": "@unbraind",
|
|
6
6
|
"entry": "./dist/index.js",
|
|
7
7
|
"priority": 50,
|
|
8
8
|
"capabilities": [
|
|
9
9
|
"commands",
|
|
10
|
-
"
|
|
10
|
+
"importers",
|
|
11
|
+
"schema",
|
|
12
|
+
"hooks"
|
|
11
13
|
],
|
|
12
14
|
"pm": {
|
|
13
15
|
"compatibility": "v2"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pm-github",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.6.2",
|
|
4
4
|
"description": "GitHub Issues importer extension for pm-cli",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^25.9.1",
|
|
41
|
-
"@unbrained/pm-cli": "^2026.5.
|
|
41
|
+
"@unbrained/pm-cli": "^2026.5.31",
|
|
42
42
|
"pm-changelog": "^2026.5.29-2",
|
|
43
43
|
"typescript": "^6.0.3"
|
|
44
44
|
},
|