pm-context 2026.6.7-1
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/LICENSE +22 -0
- package/README.md +65 -0
- package/dist/index.d.ts +127 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +471 -0
- package/dist/index.js.map +1 -0
- package/manifest.json +14 -0
- package/package.json +67 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 2026.6.7 - 2026-06-06
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Build initial context pack command ([pm-context-0gyf](https://github.com/unbraind/pm-context/blob/main/.agents/pm/features/pm-context-0gyf.toon))
|
|
8
|
+
- Add agent handoff digest mode to context packs ([pm-context-opzn](https://github.com/unbraind/pm-context/blob/main/.agents/pm/features/pm-context-opzn.toon))
|
|
9
|
+
|
|
10
|
+
### Other
|
|
11
|
+
|
|
12
|
+
- Run tests during release readiness ([pm-context-cqmc](https://github.com/unbraind/pm-context/blob/main/.agents/pm/chores/pm-context-cqmc.toon))
|
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 unbraind
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# pm-context
|
|
2
|
+
|
|
3
|
+
`pm-context` generates deterministic context packs from a pm workspace so
|
|
4
|
+
handoffs, reviews, and agent sessions start from the same project state.
|
|
5
|
+
|
|
6
|
+
It complements the core `pm context` command by writing durable markdown or JSON
|
|
7
|
+
packs for selected items and their dependency neighborhood.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pm install github.com/unbraind/pm-context --project
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pm context-pack --id pm-1234 --include-body --output context.md
|
|
19
|
+
pm context-pack --id pm-1234 --format agent
|
|
20
|
+
pm context-pack --status in_progress --tag release --format json
|
|
21
|
+
pm context-pack --type Feature --include-closed --limit 20
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The command is read-only. It shells out to the active `pm` binary for
|
|
25
|
+
workspace data, so generated packs reflect the installed CLI and package
|
|
26
|
+
runtime rather than a stale parser.
|
|
27
|
+
|
|
28
|
+
## Output
|
|
29
|
+
|
|
30
|
+
Markdown packs include:
|
|
31
|
+
|
|
32
|
+
- a summary with selected item counts by status and type
|
|
33
|
+
- focus items sorted by priority and update time
|
|
34
|
+
- dependency and dependent context for selected items
|
|
35
|
+
- linked docs and files when item metadata exposes them
|
|
36
|
+
- optional item bodies
|
|
37
|
+
|
|
38
|
+
JSON packs expose the same data in a stable shape for automation.
|
|
39
|
+
|
|
40
|
+
Agent handoff packs (`--format agent`) are intentionally compact. They focus on
|
|
41
|
+
the current work, visible blockers, next actions, linked files/docs, and the
|
|
42
|
+
exact refresh command another agent should run before continuing.
|
|
43
|
+
|
|
44
|
+
## Command
|
|
45
|
+
|
|
46
|
+
`pm context-pack`
|
|
47
|
+
|
|
48
|
+
Options:
|
|
49
|
+
|
|
50
|
+
- `--id <id>` repeatable item ids to focus
|
|
51
|
+
- `--status <status>` filter by status
|
|
52
|
+
- `--type <type>` filter by type
|
|
53
|
+
- `--tag <tag>` filter by tag
|
|
54
|
+
- `--limit <n>` maximum focus item count
|
|
55
|
+
- `--format <markdown|json|agent>` output format
|
|
56
|
+
- `--output <file>` write the pack to a file
|
|
57
|
+
- `--include-body` include item bodies
|
|
58
|
+
- `--include-closed` include closed/canceled items in filtered packs
|
|
59
|
+
- `--without-neighborhood` omit dependency/dependent neighbors
|
|
60
|
+
|
|
61
|
+
## Philosophy
|
|
62
|
+
|
|
63
|
+
Project management is context management. `pm-context` makes that concrete by
|
|
64
|
+
turning pm's source-of-truth items into portable context that can be reviewed,
|
|
65
|
+
sent to another agent, or attached to a pull request.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
export declare const EXIT_CODE: {
|
|
2
|
+
readonly GENERIC_FAILURE: 1;
|
|
3
|
+
readonly USAGE: 2;
|
|
4
|
+
};
|
|
5
|
+
export declare class CommandError extends Error {
|
|
6
|
+
exitCode: number;
|
|
7
|
+
constructor(message: string, exitCode?: number);
|
|
8
|
+
}
|
|
9
|
+
export interface PmItem {
|
|
10
|
+
id: string;
|
|
11
|
+
title?: string;
|
|
12
|
+
type?: string;
|
|
13
|
+
status?: string;
|
|
14
|
+
priority?: number;
|
|
15
|
+
tags?: string[];
|
|
16
|
+
body?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
parent?: string;
|
|
19
|
+
assignee?: string;
|
|
20
|
+
sprint?: string;
|
|
21
|
+
release?: string;
|
|
22
|
+
deadline?: string;
|
|
23
|
+
created_at?: string;
|
|
24
|
+
updated_at?: string;
|
|
25
|
+
docs?: unknown;
|
|
26
|
+
files?: unknown;
|
|
27
|
+
deps?: unknown;
|
|
28
|
+
dependencies?: unknown;
|
|
29
|
+
blocked_by?: unknown;
|
|
30
|
+
blockedBy?: unknown;
|
|
31
|
+
[key: string]: unknown;
|
|
32
|
+
}
|
|
33
|
+
export interface ContextPackOptions {
|
|
34
|
+
ids?: string[];
|
|
35
|
+
status?: string;
|
|
36
|
+
type?: string;
|
|
37
|
+
tag?: string;
|
|
38
|
+
limit?: number;
|
|
39
|
+
includeBody?: boolean;
|
|
40
|
+
includeClosed?: boolean;
|
|
41
|
+
neighborhood?: boolean;
|
|
42
|
+
generatedAt?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface ContextPack {
|
|
45
|
+
generatedAt: string;
|
|
46
|
+
filters: {
|
|
47
|
+
ids: string[];
|
|
48
|
+
status?: string;
|
|
49
|
+
type?: string;
|
|
50
|
+
tag?: string;
|
|
51
|
+
includeClosed: boolean;
|
|
52
|
+
neighborhood: boolean;
|
|
53
|
+
};
|
|
54
|
+
summary: {
|
|
55
|
+
totalItems: number;
|
|
56
|
+
selectedItems: number;
|
|
57
|
+
neighborItems: number;
|
|
58
|
+
byStatus: Record<string, number>;
|
|
59
|
+
byType: Record<string, number>;
|
|
60
|
+
};
|
|
61
|
+
items: PmItem[];
|
|
62
|
+
neighbors: PmItem[];
|
|
63
|
+
links: Array<{
|
|
64
|
+
itemId: string;
|
|
65
|
+
kind: "doc" | "file";
|
|
66
|
+
value: string;
|
|
67
|
+
}>;
|
|
68
|
+
relationships: Array<{
|
|
69
|
+
from: string;
|
|
70
|
+
to: string;
|
|
71
|
+
kind: string;
|
|
72
|
+
}>;
|
|
73
|
+
}
|
|
74
|
+
export interface AgentHandoff {
|
|
75
|
+
generatedAt: string;
|
|
76
|
+
counts: {
|
|
77
|
+
focus: number;
|
|
78
|
+
neighbors: number;
|
|
79
|
+
blockers: number;
|
|
80
|
+
links: number;
|
|
81
|
+
};
|
|
82
|
+
focus: Array<{
|
|
83
|
+
id: string;
|
|
84
|
+
title: string;
|
|
85
|
+
status: string;
|
|
86
|
+
type: string;
|
|
87
|
+
priority?: number;
|
|
88
|
+
deadline?: string;
|
|
89
|
+
}>;
|
|
90
|
+
blockers: Array<{
|
|
91
|
+
itemId: string;
|
|
92
|
+
blockedBy: string;
|
|
93
|
+
kind: string;
|
|
94
|
+
title?: string;
|
|
95
|
+
status?: string;
|
|
96
|
+
}>;
|
|
97
|
+
nextActions: Array<{
|
|
98
|
+
id: string;
|
|
99
|
+
title: string;
|
|
100
|
+
reason: string;
|
|
101
|
+
}>;
|
|
102
|
+
links: Array<{
|
|
103
|
+
itemId: string;
|
|
104
|
+
kind: "doc" | "file";
|
|
105
|
+
value: string;
|
|
106
|
+
}>;
|
|
107
|
+
suggestedCommand: string;
|
|
108
|
+
}
|
|
109
|
+
export declare function sortContextItems(items: PmItem[]): PmItem[];
|
|
110
|
+
export declare function extractRelationships(item: PmItem): Array<{
|
|
111
|
+
from: string;
|
|
112
|
+
to: string;
|
|
113
|
+
kind: string;
|
|
114
|
+
}>;
|
|
115
|
+
export declare function buildContextPack(allItems: PmItem[], options?: ContextPackOptions): ContextPack;
|
|
116
|
+
export declare function renderMarkdown(pack: ContextPack): string;
|
|
117
|
+
export declare function buildAgentHandoff(pack: ContextPack): AgentHandoff;
|
|
118
|
+
export declare function renderAgentHandoff(pack: ContextPack): string;
|
|
119
|
+
export declare function readPmItems(pmRoot: string): PmItem[];
|
|
120
|
+
declare const _default: {
|
|
121
|
+
name: string;
|
|
122
|
+
version: string;
|
|
123
|
+
description: string;
|
|
124
|
+
activate(api: any): void;
|
|
125
|
+
};
|
|
126
|
+
export default _default;
|
|
127
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { writeFileSync } from "node:fs";
|
|
3
|
+
const defineExtension = ((extension) => extension);
|
|
4
|
+
export const EXIT_CODE = {
|
|
5
|
+
GENERIC_FAILURE: 1,
|
|
6
|
+
USAGE: 2,
|
|
7
|
+
};
|
|
8
|
+
export class CommandError extends Error {
|
|
9
|
+
exitCode;
|
|
10
|
+
constructor(message, exitCode = EXIT_CODE.GENERIC_FAILURE) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = "CommandError";
|
|
13
|
+
this.exitCode = exitCode;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function asArray(value) {
|
|
17
|
+
if (Array.isArray(value))
|
|
18
|
+
return value.flatMap(asArray);
|
|
19
|
+
if (typeof value !== "string")
|
|
20
|
+
return [];
|
|
21
|
+
return value
|
|
22
|
+
.split(",")
|
|
23
|
+
.map((entry) => entry.trim())
|
|
24
|
+
.filter(Boolean);
|
|
25
|
+
}
|
|
26
|
+
function boolOption(options, ...keys) {
|
|
27
|
+
return keys.some((key) => {
|
|
28
|
+
const value = options[key];
|
|
29
|
+
return value === true || value === "true" || value === "1";
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function stringOption(options, ...keys) {
|
|
33
|
+
for (const key of keys) {
|
|
34
|
+
const value = options[key];
|
|
35
|
+
if (typeof value === "string" && value.trim())
|
|
36
|
+
return value.trim();
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
function intOption(options, key, fallback) {
|
|
41
|
+
const raw = options[key];
|
|
42
|
+
if (raw === undefined || raw === null || raw === "")
|
|
43
|
+
return fallback;
|
|
44
|
+
const parsed = Number.parseInt(String(raw), 10);
|
|
45
|
+
if (!Number.isFinite(parsed) || parsed < 1) {
|
|
46
|
+
throw new CommandError(`--${key} must be a positive integer`, EXIT_CODE.USAGE);
|
|
47
|
+
}
|
|
48
|
+
return parsed;
|
|
49
|
+
}
|
|
50
|
+
function normalizeText(value) {
|
|
51
|
+
return typeof value === "string" ? value.trim() : "";
|
|
52
|
+
}
|
|
53
|
+
function normalizeTags(value) {
|
|
54
|
+
return asArray(value).map((tag) => tag.toLowerCase());
|
|
55
|
+
}
|
|
56
|
+
function itemStatus(item) {
|
|
57
|
+
return normalizeText(item.status) || "unknown";
|
|
58
|
+
}
|
|
59
|
+
function itemType(item) {
|
|
60
|
+
return normalizeText(item.type) || "Item";
|
|
61
|
+
}
|
|
62
|
+
function isClosedStatus(status) {
|
|
63
|
+
const normalized = status.toLowerCase();
|
|
64
|
+
return normalized === "closed" || normalized === "done" || normalized === "canceled" || normalized === "cancelled";
|
|
65
|
+
}
|
|
66
|
+
function itemUpdatedAt(item) {
|
|
67
|
+
return normalizeText(item.updated_at) || normalizeText(item.created_at);
|
|
68
|
+
}
|
|
69
|
+
export function sortContextItems(items) {
|
|
70
|
+
return [...items].sort((a, b) => {
|
|
71
|
+
const priorityA = typeof a.priority === "number" ? a.priority : Number.MAX_SAFE_INTEGER;
|
|
72
|
+
const priorityB = typeof b.priority === "number" ? b.priority : Number.MAX_SAFE_INTEGER;
|
|
73
|
+
if (priorityA !== priorityB)
|
|
74
|
+
return priorityA - priorityB;
|
|
75
|
+
return itemUpdatedAt(b).localeCompare(itemUpdatedAt(a)) || a.id.localeCompare(b.id);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function parseRelationshipValue(value, fallbackKind) {
|
|
79
|
+
if (!value)
|
|
80
|
+
return [];
|
|
81
|
+
if (typeof value === "string") {
|
|
82
|
+
return asArray(value).map((to) => ({ to, kind: fallbackKind }));
|
|
83
|
+
}
|
|
84
|
+
if (Array.isArray(value)) {
|
|
85
|
+
return value.flatMap((entry) => parseRelationshipValue(entry, fallbackKind));
|
|
86
|
+
}
|
|
87
|
+
if (typeof value === "object") {
|
|
88
|
+
const record = value;
|
|
89
|
+
const to = normalizeText(record.id) || normalizeText(record.to) || normalizeText(record.target) ||
|
|
90
|
+
normalizeText(record.target_id) || normalizeText(record.item) || normalizeText(record.item_id);
|
|
91
|
+
if (!to)
|
|
92
|
+
return [];
|
|
93
|
+
const kind = normalizeText(record.kind) || normalizeText(record.type) || fallbackKind;
|
|
94
|
+
return [{ to, kind }];
|
|
95
|
+
}
|
|
96
|
+
return [];
|
|
97
|
+
}
|
|
98
|
+
export function extractRelationships(item) {
|
|
99
|
+
const rels = [
|
|
100
|
+
...parseRelationshipValue(item.deps, "depends_on"),
|
|
101
|
+
...parseRelationshipValue(item.dependencies, "depends_on"),
|
|
102
|
+
...parseRelationshipValue(item.blocked_by, "blocked_by"),
|
|
103
|
+
...parseRelationshipValue(item.blockedBy, "blocked_by"),
|
|
104
|
+
];
|
|
105
|
+
const seen = new Set();
|
|
106
|
+
return rels
|
|
107
|
+
.filter((rel) => rel.to && rel.to !== item.id)
|
|
108
|
+
.map((rel) => ({ from: item.id, to: rel.to, kind: rel.kind }))
|
|
109
|
+
.filter((rel) => {
|
|
110
|
+
const key = `${rel.from}\0${rel.kind}\0${rel.to}`;
|
|
111
|
+
if (seen.has(key))
|
|
112
|
+
return false;
|
|
113
|
+
seen.add(key);
|
|
114
|
+
return true;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function extractLinkValues(value) {
|
|
118
|
+
if (!value)
|
|
119
|
+
return [];
|
|
120
|
+
if (typeof value === "string")
|
|
121
|
+
return asArray(value);
|
|
122
|
+
if (Array.isArray(value))
|
|
123
|
+
return value.flatMap(extractLinkValues);
|
|
124
|
+
if (typeof value === "object") {
|
|
125
|
+
const record = value;
|
|
126
|
+
return [
|
|
127
|
+
normalizeText(record.path),
|
|
128
|
+
normalizeText(record.url),
|
|
129
|
+
normalizeText(record.href),
|
|
130
|
+
normalizeText(record.file),
|
|
131
|
+
normalizeText(record.doc),
|
|
132
|
+
normalizeText(record.value),
|
|
133
|
+
].filter(Boolean);
|
|
134
|
+
}
|
|
135
|
+
return [];
|
|
136
|
+
}
|
|
137
|
+
function buildLinks(items) {
|
|
138
|
+
const links = [];
|
|
139
|
+
for (const item of items) {
|
|
140
|
+
for (const value of extractLinkValues(item.docs))
|
|
141
|
+
links.push({ itemId: item.id, kind: "doc", value });
|
|
142
|
+
for (const value of extractLinkValues(item.files))
|
|
143
|
+
links.push({ itemId: item.id, kind: "file", value });
|
|
144
|
+
}
|
|
145
|
+
return links;
|
|
146
|
+
}
|
|
147
|
+
function matchesFilters(item, options) {
|
|
148
|
+
if (!options.includeClosed && isClosedStatus(itemStatus(item)))
|
|
149
|
+
return false;
|
|
150
|
+
if (options.status && itemStatus(item).toLowerCase() !== options.status.toLowerCase())
|
|
151
|
+
return false;
|
|
152
|
+
if (options.type && itemType(item).toLowerCase() !== options.type.toLowerCase())
|
|
153
|
+
return false;
|
|
154
|
+
if (options.tag && !normalizeTags(item.tags).includes(options.tag.toLowerCase()))
|
|
155
|
+
return false;
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
export function buildContextPack(allItems, options = {}) {
|
|
159
|
+
const ids = Array.from(new Set((options.ids ?? []).map((id) => id.trim()).filter(Boolean)));
|
|
160
|
+
const byId = new Map(allItems.map((item) => [item.id, item]));
|
|
161
|
+
const allRelationships = allItems.flatMap(extractRelationships);
|
|
162
|
+
const selected = ids.length > 0
|
|
163
|
+
? ids.map((id) => byId.get(id)).filter((item) => Boolean(item))
|
|
164
|
+
: allItems.filter((item) => matchesFilters(item, options));
|
|
165
|
+
const limited = sortContextItems(selected).slice(0, options.limit ?? 25);
|
|
166
|
+
const selectedIds = new Set(limited.map((item) => item.id));
|
|
167
|
+
const neighborIds = new Set();
|
|
168
|
+
if (options.neighborhood !== false) {
|
|
169
|
+
for (const rel of allRelationships) {
|
|
170
|
+
if (selectedIds.has(rel.from))
|
|
171
|
+
neighborIds.add(rel.to);
|
|
172
|
+
if (selectedIds.has(rel.to))
|
|
173
|
+
neighborIds.add(rel.from);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
for (const id of selectedIds)
|
|
177
|
+
neighborIds.delete(id);
|
|
178
|
+
const neighbors = sortContextItems([...neighborIds].map((id) => byId.get(id)).filter((item) => Boolean(item)));
|
|
179
|
+
const packItems = limited.map((item) => options.includeBody ? item : { ...item, body: undefined, description: undefined });
|
|
180
|
+
const packNeighbors = neighbors.map((item) => options.includeBody ? item : { ...item, body: undefined, description: undefined });
|
|
181
|
+
const selectedAndNeighbors = [...packItems, ...packNeighbors];
|
|
182
|
+
const byStatus = {};
|
|
183
|
+
const byType = {};
|
|
184
|
+
for (const item of packItems) {
|
|
185
|
+
byStatus[itemStatus(item)] = (byStatus[itemStatus(item)] ?? 0) + 1;
|
|
186
|
+
byType[itemType(item)] = (byType[itemType(item)] ?? 0) + 1;
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
generatedAt: options.generatedAt ?? new Date().toISOString(),
|
|
190
|
+
filters: {
|
|
191
|
+
ids,
|
|
192
|
+
status: options.status,
|
|
193
|
+
type: options.type,
|
|
194
|
+
tag: options.tag,
|
|
195
|
+
includeClosed: options.includeClosed === true,
|
|
196
|
+
neighborhood: options.neighborhood !== false,
|
|
197
|
+
},
|
|
198
|
+
summary: {
|
|
199
|
+
totalItems: allItems.length,
|
|
200
|
+
selectedItems: packItems.length,
|
|
201
|
+
neighborItems: packNeighbors.length,
|
|
202
|
+
byStatus,
|
|
203
|
+
byType,
|
|
204
|
+
},
|
|
205
|
+
items: packItems,
|
|
206
|
+
neighbors: packNeighbors,
|
|
207
|
+
links: buildLinks(selectedAndNeighbors),
|
|
208
|
+
relationships: allRelationships.filter((rel) => selectedIds.has(rel.from) || selectedIds.has(rel.to)),
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
function markdownEscape(value) {
|
|
212
|
+
return String(value ?? "").replace(/\r?\n/g, " ").trim();
|
|
213
|
+
}
|
|
214
|
+
function renderItemList(items, includeBody) {
|
|
215
|
+
if (items.length === 0)
|
|
216
|
+
return ["_None._"];
|
|
217
|
+
const lines = [];
|
|
218
|
+
for (const item of items) {
|
|
219
|
+
const meta = [
|
|
220
|
+
itemType(item),
|
|
221
|
+
itemStatus(item),
|
|
222
|
+
typeof item.priority === "number" ? `p${item.priority}` : "",
|
|
223
|
+
item.assignee ? `@${item.assignee}` : "",
|
|
224
|
+
item.deadline ? `due ${item.deadline}` : "",
|
|
225
|
+
].filter(Boolean).join(" | ");
|
|
226
|
+
lines.push(`- **${item.id}** ${markdownEscape(item.title || "(untitled)")} (${meta})`);
|
|
227
|
+
const tags = normalizeTags(item.tags);
|
|
228
|
+
if (tags.length > 0)
|
|
229
|
+
lines.push(` - tags: ${tags.join(", ")}`);
|
|
230
|
+
if (includeBody) {
|
|
231
|
+
const body = normalizeText(item.body) || normalizeText(item.description);
|
|
232
|
+
if (body)
|
|
233
|
+
lines.push(` - context: ${markdownEscape(body).slice(0, 700)}`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return lines;
|
|
237
|
+
}
|
|
238
|
+
export function renderMarkdown(pack) {
|
|
239
|
+
const lines = [
|
|
240
|
+
"# pm context pack",
|
|
241
|
+
"",
|
|
242
|
+
`Generated: ${pack.generatedAt}`,
|
|
243
|
+
"",
|
|
244
|
+
"## Summary",
|
|
245
|
+
"",
|
|
246
|
+
`- Total workspace items: ${pack.summary.totalItems}`,
|
|
247
|
+
`- Focus items: ${pack.summary.selectedItems}`,
|
|
248
|
+
`- Neighbor items: ${pack.summary.neighborItems}`,
|
|
249
|
+
`- Statuses: ${Object.entries(pack.summary.byStatus).map(([k, v]) => `${k}=${v}`).join(", ") || "none"}`,
|
|
250
|
+
`- Types: ${Object.entries(pack.summary.byType).map(([k, v]) => `${k}=${v}`).join(", ") || "none"}`,
|
|
251
|
+
"",
|
|
252
|
+
"## Focus Items",
|
|
253
|
+
"",
|
|
254
|
+
...renderItemList(pack.items, pack.items.some((item) => Boolean(item.body || item.description))),
|
|
255
|
+
"",
|
|
256
|
+
"## Dependency Neighborhood",
|
|
257
|
+
"",
|
|
258
|
+
];
|
|
259
|
+
if (pack.relationships.length === 0) {
|
|
260
|
+
lines.push("_No dependency relationships in focus._");
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
for (const rel of pack.relationships)
|
|
264
|
+
lines.push(`- ${rel.from} --${rel.kind}--> ${rel.to}`);
|
|
265
|
+
}
|
|
266
|
+
lines.push("", "## Neighbor Items", "", ...renderItemList(pack.neighbors, false), "", "## Linked Context", "");
|
|
267
|
+
if (pack.links.length === 0) {
|
|
268
|
+
lines.push("_No docs or files linked in selected context._");
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
for (const link of pack.links)
|
|
272
|
+
lines.push(`- ${link.itemId} ${link.kind}: ${link.value}`);
|
|
273
|
+
}
|
|
274
|
+
lines.push("");
|
|
275
|
+
return `${lines.join("\n")}\n`;
|
|
276
|
+
}
|
|
277
|
+
function titleFor(items, id) {
|
|
278
|
+
return items.find((item) => item.id === id)?.title;
|
|
279
|
+
}
|
|
280
|
+
function statusFor(items, id) {
|
|
281
|
+
return items.find((item) => item.id === id)?.status;
|
|
282
|
+
}
|
|
283
|
+
export function buildAgentHandoff(pack) {
|
|
284
|
+
const allVisible = [...pack.items, ...pack.neighbors];
|
|
285
|
+
const focusIds = new Set(pack.items.map((item) => item.id));
|
|
286
|
+
const blockers = pack.relationships
|
|
287
|
+
.filter((rel) => focusIds.has(rel.from) && (rel.kind === "blocked_by" || rel.kind === "depends_on"))
|
|
288
|
+
.map((rel) => ({
|
|
289
|
+
itemId: rel.from,
|
|
290
|
+
blockedBy: rel.to,
|
|
291
|
+
kind: rel.kind,
|
|
292
|
+
title: titleFor(allVisible, rel.to),
|
|
293
|
+
status: statusFor(allVisible, rel.to),
|
|
294
|
+
}));
|
|
295
|
+
const blockedFocusIds = new Set(blockers.map((blocker) => blocker.itemId));
|
|
296
|
+
const nextActions = pack.items
|
|
297
|
+
.filter((item) => !isClosedStatus(itemStatus(item)))
|
|
298
|
+
.slice(0, 8)
|
|
299
|
+
.map((item) => ({
|
|
300
|
+
id: item.id,
|
|
301
|
+
title: normalizeText(item.title) || "(untitled)",
|
|
302
|
+
reason: blockedFocusIds.has(item.id)
|
|
303
|
+
? "resolve blocker first"
|
|
304
|
+
: typeof item.priority === "number"
|
|
305
|
+
? `priority ${item.priority}`
|
|
306
|
+
: "selected focus item",
|
|
307
|
+
}));
|
|
308
|
+
const ids = pack.items.map((item) => item.id).join(",");
|
|
309
|
+
const suggestedCommand = ids
|
|
310
|
+
? `pm context-pack --id ${ids} --format agent`
|
|
311
|
+
: "pm context-pack --status in_progress --format agent";
|
|
312
|
+
return {
|
|
313
|
+
generatedAt: pack.generatedAt,
|
|
314
|
+
counts: {
|
|
315
|
+
focus: pack.summary.selectedItems,
|
|
316
|
+
neighbors: pack.summary.neighborItems,
|
|
317
|
+
blockers: blockers.length,
|
|
318
|
+
links: pack.links.length,
|
|
319
|
+
},
|
|
320
|
+
focus: pack.items.map((item) => ({
|
|
321
|
+
id: item.id,
|
|
322
|
+
title: normalizeText(item.title) || "(untitled)",
|
|
323
|
+
status: itemStatus(item),
|
|
324
|
+
type: itemType(item),
|
|
325
|
+
priority: typeof item.priority === "number" ? item.priority : undefined,
|
|
326
|
+
deadline: normalizeText(item.deadline) || undefined,
|
|
327
|
+
})),
|
|
328
|
+
blockers,
|
|
329
|
+
nextActions,
|
|
330
|
+
links: pack.links.slice(0, 12),
|
|
331
|
+
suggestedCommand,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
export function renderAgentHandoff(pack) {
|
|
335
|
+
const handoff = buildAgentHandoff(pack);
|
|
336
|
+
const lines = [
|
|
337
|
+
"# pm agent handoff",
|
|
338
|
+
"",
|
|
339
|
+
`Generated: ${handoff.generatedAt}`,
|
|
340
|
+
`Focus: ${handoff.counts.focus} | Neighbors: ${handoff.counts.neighbors} | Blockers: ${handoff.counts.blockers} | Links: ${handoff.counts.links}`,
|
|
341
|
+
"",
|
|
342
|
+
"## Focus",
|
|
343
|
+
"",
|
|
344
|
+
];
|
|
345
|
+
if (handoff.focus.length === 0) {
|
|
346
|
+
lines.push("_No focus items._");
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
for (const item of handoff.focus) {
|
|
350
|
+
const meta = [
|
|
351
|
+
item.type,
|
|
352
|
+
item.status,
|
|
353
|
+
item.priority === undefined ? "" : `p${item.priority}`,
|
|
354
|
+
item.deadline ? `due ${item.deadline}` : "",
|
|
355
|
+
].filter(Boolean).join(" | ");
|
|
356
|
+
lines.push(`- ${item.id}: ${markdownEscape(item.title)} (${meta})`);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
lines.push("", "## Blockers", "");
|
|
360
|
+
if (handoff.blockers.length === 0) {
|
|
361
|
+
lines.push("_No visible blockers._");
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
for (const blocker of handoff.blockers) {
|
|
365
|
+
const label = blocker.title ? `${blocker.blockedBy} ${markdownEscape(blocker.title)}` : blocker.blockedBy;
|
|
366
|
+
const status = blocker.status ? ` (${blocker.status})` : "";
|
|
367
|
+
lines.push(`- ${blocker.itemId} ${blocker.kind} ${label}${status}`);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
lines.push("", "## Next Actions", "");
|
|
371
|
+
if (handoff.nextActions.length === 0) {
|
|
372
|
+
lines.push("_No open focus items._");
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
for (const action of handoff.nextActions) {
|
|
376
|
+
lines.push(`- ${action.id}: ${markdownEscape(action.title)} - ${action.reason}`);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
lines.push("", "## Linked Context", "");
|
|
380
|
+
if (handoff.links.length === 0) {
|
|
381
|
+
lines.push("_No linked files or docs._");
|
|
382
|
+
}
|
|
383
|
+
else {
|
|
384
|
+
for (const link of handoff.links) {
|
|
385
|
+
lines.push(`- ${link.itemId} ${link.kind}: ${link.value}`);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
lines.push("", "## Refresh", "", `\`${handoff.suggestedCommand}\``, "");
|
|
389
|
+
return `${lines.join("\n")}\n`;
|
|
390
|
+
}
|
|
391
|
+
export function readPmItems(pmRoot) {
|
|
392
|
+
const result = spawnSync("pm", ["--path", pmRoot, "list-all", "--json", "--include-body"], {
|
|
393
|
+
encoding: "utf-8",
|
|
394
|
+
maxBuffer: 64 * 1024 * 1024,
|
|
395
|
+
});
|
|
396
|
+
if (result.status !== 0) {
|
|
397
|
+
throw new CommandError(result.stderr.trim() || "`pm list-all --json --include-body` failed");
|
|
398
|
+
}
|
|
399
|
+
try {
|
|
400
|
+
const parsed = JSON.parse(result.stdout);
|
|
401
|
+
const items = Array.isArray(parsed) ? parsed : parsed.items ?? parsed.results ?? [];
|
|
402
|
+
return items.filter((item) => Boolean(item) && typeof item === "object" && typeof item.id === "string");
|
|
403
|
+
}
|
|
404
|
+
catch (err) {
|
|
405
|
+
throw new CommandError(`Could not parse pm item JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
function setupCommands(api) {
|
|
409
|
+
api.registerCommand({
|
|
410
|
+
name: "context-pack",
|
|
411
|
+
description: "Generate a durable pm context pack for handoffs and reviews.",
|
|
412
|
+
intent: "turn selected pm work into portable context",
|
|
413
|
+
examples: [
|
|
414
|
+
"pm context-pack --id pm-1234 --include-body --output context.md",
|
|
415
|
+
"pm context-pack --id pm-1234 --format agent",
|
|
416
|
+
"pm context-pack --status in_progress --tag release --format json",
|
|
417
|
+
],
|
|
418
|
+
flags: [
|
|
419
|
+
{ long: "--id", value_name: "id", description: "Focus item id (repeatable or comma-separated)", type: "string" },
|
|
420
|
+
{ long: "--status", value_name: "status", description: "Filter focus items by status", type: "string" },
|
|
421
|
+
{ long: "--type", value_name: "type", description: "Filter focus items by type", type: "string" },
|
|
422
|
+
{ long: "--tag", value_name: "tag", description: "Filter focus items by tag", type: "string" },
|
|
423
|
+
{ long: "--limit", value_name: "n", description: "Maximum focus item count (default: 25)", type: "string" },
|
|
424
|
+
{ long: "--format", value_name: "format", description: "Output format: markdown, json, or agent", type: "string" },
|
|
425
|
+
{ long: "--output", value_name: "file", description: "Write context pack to a file", type: "string" },
|
|
426
|
+
{ long: "--include-body", description: "Include body/description text", type: "boolean" },
|
|
427
|
+
{ long: "--include-closed", description: "Include closed/canceled items in filtered packs", type: "boolean" },
|
|
428
|
+
{ long: "--without-neighborhood", description: "Omit dependency/dependent neighbors", type: "boolean" },
|
|
429
|
+
],
|
|
430
|
+
async run(ctx) {
|
|
431
|
+
const options = ctx.options;
|
|
432
|
+
const format = (stringOption(options, "format") ?? "markdown").toLowerCase();
|
|
433
|
+
if (format !== "markdown" && format !== "json" && format !== "agent") {
|
|
434
|
+
throw new CommandError("--format must be markdown, json, or agent", EXIT_CODE.USAGE);
|
|
435
|
+
}
|
|
436
|
+
const pack = buildContextPack(readPmItems(ctx.pm_root), {
|
|
437
|
+
ids: asArray(options.id),
|
|
438
|
+
status: stringOption(options, "status"),
|
|
439
|
+
type: stringOption(options, "type"),
|
|
440
|
+
tag: stringOption(options, "tag"),
|
|
441
|
+
limit: intOption(options, "limit", 25),
|
|
442
|
+
includeBody: boolOption(options, "include-body", "includeBody"),
|
|
443
|
+
includeClosed: boolOption(options, "include-closed", "includeClosed"),
|
|
444
|
+
neighborhood: !boolOption(options, "without-neighborhood", "withoutNeighborhood"),
|
|
445
|
+
});
|
|
446
|
+
const output = format === "json"
|
|
447
|
+
? `${JSON.stringify(pack, null, 2)}\n`
|
|
448
|
+
: format === "agent"
|
|
449
|
+
? renderAgentHandoff(pack)
|
|
450
|
+
: renderMarkdown(pack);
|
|
451
|
+
const outputPath = stringOption(options, "output");
|
|
452
|
+
if (outputPath) {
|
|
453
|
+
writeFileSync(outputPath, output, "utf-8");
|
|
454
|
+
console.error(`context pack written to ${outputPath}`);
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
console.error(output.trimEnd());
|
|
458
|
+
}
|
|
459
|
+
return format === "json" ? pack : { ok: true, format, selected: pack.summary.selectedItems, neighbors: pack.summary.neighborItems };
|
|
460
|
+
},
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
export default defineExtension({
|
|
464
|
+
name: "pm-context",
|
|
465
|
+
version: "2026.6.7-1",
|
|
466
|
+
description: "Generate deterministic pm context packs for agent handoffs, reviews, and status briefs",
|
|
467
|
+
activate(api) {
|
|
468
|
+
setupCommands(api);
|
|
469
|
+
},
|
|
470
|
+
});
|
|
471
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/manifest.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pm-context",
|
|
3
|
+
"version": "2026.6.7-1",
|
|
4
|
+
"description": "Generate deterministic pm context packs for agent handoffs, reviews, and status briefs",
|
|
5
|
+
"author": "@unbraind",
|
|
6
|
+
"entry": "dist/index.js",
|
|
7
|
+
"capabilities": [
|
|
8
|
+
"commands",
|
|
9
|
+
"schema"
|
|
10
|
+
],
|
|
11
|
+
"compatibility": {
|
|
12
|
+
"pm": ">=2026.6.6"
|
|
13
|
+
}
|
|
14
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pm-context",
|
|
3
|
+
"version": "2026.6.7-1",
|
|
4
|
+
"description": "Generate deterministic pm context packs for agent handoffs, reviews, and status briefs",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"manifest.json",
|
|
11
|
+
"README.md",
|
|
12
|
+
"LICENSE",
|
|
13
|
+
"CHANGELOG.md"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"build:test": "tsc -p tsconfig.test.json",
|
|
18
|
+
"test": "npm run build && npm run build:test && node --test dist-test/*.js",
|
|
19
|
+
"prepack": "npm run build",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"check": "npm run typecheck",
|
|
22
|
+
"audit:prod": "npm audit --omit=dev",
|
|
23
|
+
"pack:dry-run": "npm pack --dry-run",
|
|
24
|
+
"changelog": "pm-changelog --pm-root .agents/pm --mode prepend --output CHANGELOG.md --release-version-from-package --since-previous-tag --until-release-tag --item-url-base https://github.com/unbraind/pm-context/blob/main/.agents/pm",
|
|
25
|
+
"changelog:full": "pm-changelog --pm-root .agents/pm --mode replace --output CHANGELOG.md --all-release-tags --release-version-from-package --item-url-base https://github.com/unbraind/pm-context/blob/main/.agents/pm",
|
|
26
|
+
"changelog:check": "pm-changelog --pm-root .agents/pm --mode prepend --output CHANGELOG.md --since-previous-tag --until-release-tag --release-version-from-package --item-url-base https://github.com/unbraind/pm-context/blob/main/.agents/pm --check",
|
|
27
|
+
"release:notes": "pm-changelog --pm-root .agents/pm --stdout --since-previous-tag --until-release-tag --release-version-from-package --item-url-base https://github.com/unbraind/pm-context/blob/main/.agents/pm --pm-bin ./node_modules/.bin/pm --github-step-summary",
|
|
28
|
+
"release:check": "npm run typecheck && npm run build && npm test && npm run audit:prod && npm run pack:dry-run && npm run changelog:check"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"pm-cli",
|
|
32
|
+
"pm-package",
|
|
33
|
+
"context",
|
|
34
|
+
"handoff",
|
|
35
|
+
"project-management"
|
|
36
|
+
],
|
|
37
|
+
"author": "@unbraind",
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"repository": {
|
|
40
|
+
"type": "git",
|
|
41
|
+
"url": "git+https://github.com/unbraind/pm-context.git"
|
|
42
|
+
},
|
|
43
|
+
"homepage": "https://github.com/unbraind/pm-context#readme",
|
|
44
|
+
"bugs": {
|
|
45
|
+
"url": "https://github.com/unbraind/pm-context/issues"
|
|
46
|
+
},
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"@unbrained/pm-cli": ">=2026.6.6"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/node": "^25.9.2",
|
|
52
|
+
"@unbrained/pm-cli": "^2026.6.6",
|
|
53
|
+
"pm-changelog": "^2026.6.6",
|
|
54
|
+
"typescript": "^6.0.3"
|
|
55
|
+
},
|
|
56
|
+
"pmPackage": {
|
|
57
|
+
"name": "pm-context",
|
|
58
|
+
"displayName": "pm-context",
|
|
59
|
+
"description": "Generate deterministic pm context packs for agent handoffs, reviews, and status briefs",
|
|
60
|
+
"repository": "github.com/unbraind/pm-context",
|
|
61
|
+
"install": "pm install github.com/unbraind/pm-context --project",
|
|
62
|
+
"capabilities": [
|
|
63
|
+
"commands",
|
|
64
|
+
"schema"
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
}
|