pm-github 2026.6.2 → 2026.6.4

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,45 @@
1
1
  # Changelog
2
2
 
3
- ## 2026.6.2 - 2026-06-02
3
+ ## 2026.6.4 - 2026-06-04
4
+
5
+ ### Added
6
+
7
+ - Import GitHub author + timestamps, rate-limit visibility, --skip-drafts ([pm-github-v0c3](https://github.com/unbraind/pm-github/blob/main/.agents/pm/features/pm-github-v0c3.toon))
8
+
9
+ ## 2026.06.03 - 2026-06-03
10
+
11
+ ### Added
12
+
13
+ - Domain-max SDK enhancement: idempotent import, sync, preflight, renderer ([pm-github-mdlp](https://github.com/unbraind/pm-github/blob/main/.agents/pm/features/pm-github-mdlp.toon))
14
+
15
+ ### Changed
16
+
17
+ - Idempotent import: match by github\_number, update not duplicate; populate schema fields ([pm-github-fhiv](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-fhiv.toon))
18
+
19
+ ### Fixed
20
+
21
+ - True round-trip GitHub sync: search provider, validate diagnostics, safe-by-default export, fix activation ([pm-github-9dqy](https://github.com/unbraind/pm-github/blob/main/.agents/pm/features/pm-github-9dqy.toon))
22
+ - True round-trip GitHub sync: search provider, validate diagnostics, safe-by-default export, fix activation ([pm-github-4elt](https://github.com/unbraind/pm-github/blob/main/.agents/pm/features/pm-github-4elt.toon))
23
+ - FIX: add 'preflight' to manifest capabilities \(activation-breaking bug\) ([pm-github-qndb](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-qndb.toon))
24
+
25
+ ### Other
26
+
27
+ - Provenance scheme: gh:owner/repo\#N tag \(lowercased\), reused as-is ([pm-github-ggt3](https://github.com/unbraind/pm-github/blob/main/.agents/pm/decisions/pm-github-ggt3.toon))
28
+ - Export defaults to dry-run; real writes need --apply AND --repo ([pm-github-epdt](https://github.com/unbraind/pm-github/blob/main/.agents/pm/decisions/pm-github-epdt.toon))
29
+ - Search provider maps remote matches to LOCAL items only ([pm-github-o7jl](https://github.com/unbraind/pm-github/blob/main/.agents/pm/decisions/pm-github-o7jl.toon))
30
+ - Unit tests + functional verification + README + decisions ([pm-github-f3xf](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-f3xf.toon))
31
+ - Export: dry-run default + upsert existing issues by provenance ([pm-github-fv0x](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-fv0x.toon))
32
+ - github search provider \(search capability\) ([pm-github-5sbx](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-5sbx.toon))
33
+ - github validate diagnostics command ([pm-github-rroh](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-rroh.toon))
34
+ - preflight capability: validate token/gh auth + repo reachability before mutating github commands ([pm-github-jget](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-jget.toon))
35
+ - pm github sync: push pm status -\> GitHub close/reopen, guarded by token+--repo+--dry-run ([pm-github-yted](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-yted.toon))
36
+ - renderers capability: register 'github' output format \(pm items as GitHub-issue markdown\) ([pm-github-vvov](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-vvov.toon))
37
+ - Rate-limit/backoff handling \(Retry-After / X-RateLimit-Reset\) + useful afterCommand hook ([pm-github-rx1q](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-rx1q.toon))
38
+ - Import issue comments via --with-comments \(append to item body\) ([pm-github-kvl1](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-kvl1.toon))
39
+ - Tests + functional verification against real public repo \(idempotent re-import\) ([pm-github-2u0d](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-2u0d.toon))
40
+ - Production-readiness audit 2026-05-28 ([pm-github-0y40](https://github.com/unbraind/pm-github/blob/main/.agents/pm/tasks/pm-github-0y40.toon))
41
+
42
+ ## 2026.06.02 - 2026-06-02
4
43
 
5
44
  ### Added
6
45
 
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # pm-github
2
2
 
3
- GitHub Issues importer **and exporter** for [pm-cli](https://github.com/unbraind/pm-cli).
3
+ A true **round-trip** GitHub Issues integration for [pm-cli](https://github.com/unbraind/pm-cli): import, export, status-sync, search, and validate.
4
4
 
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.
5
+ Import issues from any GitHub repo as pm items, export pm items back to GitHub (safely, dry-run by default), push status changes upstream, reach GitHub from `pm search`, 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
 
@@ -16,11 +16,13 @@ pm install github.com/unbraind/pm-github --global
16
16
 
17
17
  | SDK capability | What it provides |
18
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 |
19
+ | `importers` | `pm github import <owner/repo>` — idempotent native import pipeline |
20
+ | `importers` (exporter) | `pm github export` — pm items → GitHub issues (dry-run by default; upsert) |
21
+ | `commands` | `pm gh-issues import` (legacy import alias), `pm github sync` (push status), `pm github validate` (diagnostics) |
22
+ | `schema` | declares `github_url`, `github_number`, `github_state`, `github_author`, `github_created_at`, `github_updated_at` item fields |
23
23
  | `hooks` | `afterCommand` — opt-in sync reminder (`PM_GITHUB_SYNC`) for linked items |
24
+ | `preflight` | early warning when a mutating github command lacks a token |
25
+ | `search` | `github` search provider — `pm search` reaches GitHub for imported items |
24
26
 
25
27
  ## Import
26
28
 
@@ -48,24 +50,69 @@ pm github import owner/repo --dry-run
48
50
  | `--assignee <login>` | string | Filter by assignee login |
49
51
  | `--milestone <name>` | string | Filter by milestone title |
50
52
  | `--include-prs` | boolean | Include pull requests (default: skip PRs) |
53
+ | `--skip-drafts` | boolean | Exclude draft pull requests (only meaningful with `--include-prs`) |
54
+ | `--with-comments` | boolean | Fetch issue comments and append them to the item body |
51
55
  | `--dry-run` | boolean | Preview without writing |
52
56
  | `--type <type>` | string | Override pm item type (default: Issue) |
53
57
 
54
- ## Export
58
+ Each imported item records GitHub provenance: the `gh:owner/repo#N` idempotency tag, a `github_author:<login>` tag, and an enriched description (`author @<login> · created <iso> · updated <iso>`). The integration declares the `github_url`, `github_number`, `github_state`, `github_author`, `github_created_at`, and `github_updated_at` schema fields.
59
+
60
+ ## Export (pm → GitHub)
55
61
 
56
62
  ### `pm github export`
57
63
 
64
+ **Safe by default.** Export previews the create/update plan and writes *nothing* unless you explicitly opt in with `--apply` **and** name a `--repo`. With a `--repo`, items already linked to an issue in that repo (via the `gh:owner/repo#N` provenance tag) are **updated** (upsert) instead of duplicated.
65
+
58
66
  ```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)
67
+ pm github export --repo owner/repo # DRY-RUN: print the create/update plan, write nothing
68
+ pm github export --repo owner/repo --format md
69
+ pm --json github export --repo owner/repo # return the plan as JSON
70
+ pm github export --repo owner/repo --apply # actually create/update issues (requires a token)
62
71
  ```
63
72
 
64
73
  | Flag | Type | Description |
65
74
  |---|---|---|
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`) |
75
+ | `--repo <owner/repo>` | string | Target repo; decides create-vs-update and is required for `--apply` |
76
+ | `--format <json\|md>` | string | Dry-run output format (default: json) |
77
+ | `--apply` | boolean | Perform real GitHub writes (alias: `--no-dry-run`, legacy `--push`). Requires a token + `--repo` |
78
+ | `--dry-run` | boolean | Force preview even alongside `--apply` (dry-run always wins) |
79
+
80
+ ## Status sync (pm → GitHub state)
81
+
82
+ ### `pm github sync`
83
+
84
+ Push pm status changes back to GitHub: close/reopen the linked issue to match the pm item's status. Requires a token and explicit `--repo`.
85
+
86
+ ```bash
87
+ pm github sync --repo owner/repo --dry-run # preview the close/reopen plan
88
+ pm github sync --repo owner/repo # push the changes
89
+ ```
90
+
91
+ ## Search (pm search → GitHub)
92
+
93
+ ### `github` search provider
94
+
95
+ Registers a `github` search provider so `pm search ... --semantic` can reach GitHub. It asks GitHub which issues in the target repo match your query, then returns hits for the **pm items you've already imported** from those issues (matched by the `gh:owner/repo#N` provenance tag).
96
+
97
+ ```bash
98
+ pm config project set ... # set search.provider = "github" in .agents/pm/settings.json
99
+ export PM_GITHUB_REPO=owner/repo # or pass the repo another way
100
+ pm search "uppercase dashes" --semantic # hits = imported items whose upstream issue matches
101
+ ```
102
+
103
+ Enable it by setting `search.provider` to `"github"` in `.agents/pm/settings.json` and pointing it at a repo via the `PM_GITHUB_REPO` env var.
104
+
105
+ ## Validate / diagnostics
106
+
107
+ ### `pm github validate`
108
+
109
+ Read-only check of the integration: `gh` CLI presence, token resolvability (and source), and—with `--repo`—repo accessibility. When `--repo` is given it also surfaces the remaining GitHub API quota (`X-RateLimit-Remaining`/`Limit`/`Reset`) and warns when the quota is running low. Never mutates anything.
110
+
111
+ ```bash
112
+ pm github validate
113
+ pm github validate --repo owner/repo
114
+ pm --json github validate --repo owner/repo
115
+ ```
69
116
 
70
117
  ## License
71
118
 
package/dist/index.d.ts CHANGED
@@ -6,6 +6,9 @@ interface GhIssue {
6
6
  labels: Array<{
7
7
  name: string;
8
8
  }>;
9
+ user?: {
10
+ login: string;
11
+ } | null;
9
12
  assignee: {
10
13
  login: string;
11
14
  } | null;
@@ -15,7 +18,17 @@ interface GhIssue {
15
18
  created_at: string;
16
19
  updated_at: string;
17
20
  html_url: string;
21
+ comments?: number;
22
+ comments_url?: string;
18
23
  pull_request?: unknown;
24
+ draft?: boolean;
25
+ }
26
+ interface GhComment {
27
+ user: {
28
+ login: string;
29
+ } | null;
30
+ created_at: string;
31
+ body: string | null;
19
32
  }
20
33
  interface ImportOptions {
21
34
  state: "open" | "closed" | "all";
@@ -24,10 +37,22 @@ interface ImportOptions {
24
37
  assignee?: string;
25
38
  milestone?: string;
26
39
  includePrs: boolean;
40
+ skipDrafts: boolean;
41
+ withComments: boolean;
27
42
  itemType: string;
28
43
  dryRun: boolean;
29
44
  }
30
45
  export declare function resolveGitHubToken(): string | undefined;
46
+ export declare function computeBackoffMs(headers: Record<string, string | string[] | undefined>, attempt: number, nowMs?: number): number;
47
+ export interface RateLimitInfo {
48
+ remaining?: number;
49
+ limit?: number;
50
+ reset?: number;
51
+ /** True when the remaining quota is at/under the low-water mark. */
52
+ low: boolean;
53
+ }
54
+ export declare function parseRateLimit(headers: Record<string, string | string[] | undefined>, lowThreshold?: number): RateLimitInfo;
55
+ export declare function formatRateLimit(info: RateLimitInfo): string | undefined;
31
56
  export declare function parseNextLink(linkHeader?: string): string | undefined;
32
57
  export declare function optionEnabled(options: Record<string, unknown>, ...keys: string[]): boolean;
33
58
  export declare function optionString(options: Record<string, unknown>, ...keys: string[]): string | undefined;
@@ -40,9 +65,70 @@ export declare class CommandError extends Error {
40
65
  exitCode: number;
41
66
  constructor(message: string, exitCode?: number);
42
67
  }
68
+ export declare function provenanceTag(repo: string, issueNumber: number): string;
69
+ export declare function parseProvenanceTag(tag: string): {
70
+ repo: string;
71
+ number: number;
72
+ } | undefined;
73
+ export declare function authorTag(issue: GhIssue): string | undefined;
74
+ interface PmItem {
75
+ id?: string;
76
+ title?: string;
77
+ status?: string;
78
+ body?: string;
79
+ description?: string;
80
+ tags?: string[];
81
+ }
82
+ export declare function indexByProvenance(items: PmItem[]): Map<string, PmItem>;
43
83
  export declare function buildIssuesUrl(repo: string, opts: ImportOptions): string;
84
+ export declare function composeBody(issue: GhIssue, comments: GhComment[]): string;
85
+ export declare function isDraftPr(issue: GhIssue): boolean;
44
86
  export declare function applyClientFilters(issues: GhIssue[], opts: ImportOptions): GhIssue[];
45
87
  export declare function parseImportOptions(options: Record<string, unknown>): ImportOptions;
88
+ export interface SyncPlanEntry {
89
+ id: string;
90
+ number: number;
91
+ title: string;
92
+ from: "open" | "closed";
93
+ to: "open" | "closed";
94
+ }
95
+ export declare function planSync(items: PmItem[], repo: string): SyncPlanEntry[];
96
+ export interface GithubExportPayload {
97
+ title: string;
98
+ body: string;
99
+ labels: string[];
100
+ state: "open" | "closed";
101
+ }
102
+ export interface ExportPlanEntry {
103
+ id?: string;
104
+ action: "create" | "update";
105
+ number?: number;
106
+ payload: GithubExportPayload;
107
+ }
108
+ export declare function buildExportPlan(items: PmItem[], repo: string | undefined): ExportPlanEntry[];
109
+ export declare function exportWillApply(options: Record<string, unknown>): boolean;
110
+ export declare function buildSearchUrl(repo: string, query: string): string;
111
+ export declare function mapSearchHits(matchedNumbers: number[], repo: string, itemsByProvenance: Map<string, PmItem>): Array<{
112
+ id: string;
113
+ score: number;
114
+ matched_fields: string[];
115
+ }>;
116
+ export declare function resolveSearchRepo(options: Record<string, unknown>): string | undefined;
117
+ export interface ValidateReport {
118
+ ok: boolean;
119
+ gh_cli: boolean;
120
+ token: boolean;
121
+ token_source: "env" | "gh" | "none";
122
+ repo?: string;
123
+ repo_accessible?: boolean;
124
+ repo_status?: number;
125
+ rate_limit_remaining?: number;
126
+ rate_limit_limit?: number;
127
+ rate_limit_reset?: number;
128
+ rate_limit_low?: boolean;
129
+ messages: string[];
130
+ }
131
+ export declare function isMutatingGithubCommand(command: string, options: Record<string, unknown>): boolean;
46
132
  declare const _default: {
47
133
  name: string;
48
134
  version: string;
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}