pm-todos 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 +46 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +475 -151
- package/dist/index.js.map +1 -1
- package/manifest.json +1 -1
- 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
|
+
- Enhance markdown TODO parser + native importer/exporter pipeline ([pm-todos-2e52](https://github.com/unbraind/pm-todos/blob/main/.agents/pm/features/pm-todos-2e52.toon))
|
|
8
|
+
|
|
9
|
+
## 2026.06.01 - 2026-06-01
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Command handlers threw plain Error \(no exitCode\) → runtime double-invocation ([pm-todos-3nch](https://github.com/unbraind/pm-todos/blob/main/.agents/pm/issues/pm-todos-3nch.toon))
|
|
14
|
+
|
|
3
15
|
## 2026.05.29 - 2026-05-29
|
|
4
16
|
|
|
5
17
|
### Added
|
package/README.md
CHANGED
|
@@ -4,6 +4,8 @@ Markdown TODO round-trip for [pm-cli](https://github.com/unbraind/pm-cli).
|
|
|
4
4
|
|
|
5
5
|
Import markdown checkboxes (`- [ ]` and `- [x]`) as pm items and export pm items back to markdown TODO lists.
|
|
6
6
|
|
|
7
|
+
The parser understands **nested/indented sub-tasks**, **section headers** (`## …` mapped to tags), **priority markers** (`(p1)` and `!`/`!!`/`!!!`), and can import **multiple files at once** via a `--glob` pattern.
|
|
8
|
+
|
|
7
9
|
---
|
|
8
10
|
|
|
9
11
|
## Installation
|
|
@@ -39,6 +41,9 @@ Parse a markdown file for `- [ ]` and `- [x]` checkboxes and create pm items.
|
|
|
39
41
|
pm todos import TODO.md
|
|
40
42
|
pm todos import notes.md --dry-run
|
|
41
43
|
pm todos import backlog.md --type Task --priority 2
|
|
44
|
+
pm todos import --glob 'docs/**/*.md'
|
|
45
|
+
pm todos import TODO.md --section Backlog
|
|
46
|
+
pm todos import TODO.md --closed-as canceled
|
|
42
47
|
```
|
|
43
48
|
|
|
44
49
|
**Flags**
|
|
@@ -47,8 +52,19 @@ pm todos import backlog.md --type Task --priority 2
|
|
|
47
52
|
|---|---|---|
|
|
48
53
|
| `--dry-run` | boolean | Preview without writing |
|
|
49
54
|
| `--type <type>` | string | Item type (default: Task) |
|
|
50
|
-
| `--priority <n>` | number | Priority (0–4) |
|
|
51
|
-
| `--tags <tags>` | string | Comma-separated tags |
|
|
55
|
+
| `--priority <n>` | number | Priority (0–4); overrides markers inferred from the text |
|
|
56
|
+
| `--tags <tags>` | string | Comma-separated tags applied to every item |
|
|
57
|
+
| `--glob <pattern>` | string | Import every markdown file matching the glob (e.g. `docs/**/*.md`) instead of a single positional file |
|
|
58
|
+
| `--section <name>` | string | Import only items found under this `##` section heading |
|
|
59
|
+
| `--closed-as <status>` | string | Status assigned to checked (`- [x]`) items (default: `closed`) |
|
|
60
|
+
| `--no-section-tags` | boolean | Do not derive tags from section headings |
|
|
61
|
+
|
|
62
|
+
**Parsing rules**
|
|
63
|
+
|
|
64
|
+
- **Bullets**: `-`, `*` and `+` checkbox bullets are all recognised.
|
|
65
|
+
- **Nested sub-tasks**: indentation is preserved (sub-items are imported as their own items; indent is shown in `--dry-run`).
|
|
66
|
+
- **Section headers**: the nearest preceding `## Heading` is slugged (e.g. `## In Progress` → `in-progress`) and added as a tag, unless `--no-section-tags` is given.
|
|
67
|
+
- **Priority markers**: `(p0)`…`(p4)` set an explicit priority; trailing/leading `!`, `!!`, `!!!` map to priority `2`, `1`, `0`. Markers are stripped from the item title. An explicit `--priority` flag always wins.
|
|
52
68
|
|
|
53
69
|
### `pm todos export`
|
|
54
70
|
|
|
@@ -71,7 +87,34 @@ pm todos export --type Task
|
|
|
71
87
|
|
|
72
88
|
---
|
|
73
89
|
|
|
74
|
-
##
|
|
90
|
+
## Native import/export pipeline
|
|
91
|
+
|
|
92
|
+
pm-todos registers a first-class `todos` importer and exporter, so markdown is a
|
|
93
|
+
native pm import/export format. These power the `pm todos import` / `pm todos
|
|
94
|
+
export` routes above and can also be driven programmatically:
|
|
95
|
+
|
|
96
|
+
```jsonc
|
|
97
|
+
{
|
|
98
|
+
"importers": [
|
|
99
|
+
{
|
|
100
|
+
"name": "todos",
|
|
101
|
+
"config": {
|
|
102
|
+
"glob": "docs/**/*.md", // or "file": "./TODO.md"
|
|
103
|
+
"section": "Backlog", // optional
|
|
104
|
+
"closed-as": "canceled", // optional
|
|
105
|
+
"type": "Task" // optional
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The `todos` exporter accepts `output`, `status` and `type` options and emits the
|
|
113
|
+
same grouped (`## Open` / `## Done`) markdown produced by `pm todos export`.
|
|
114
|
+
|
|
115
|
+
### Legacy importer: `todos-import`
|
|
116
|
+
|
|
117
|
+
The original `todos-import` importer is retained for backward compatibility:
|
|
75
118
|
|
|
76
119
|
```jsonc
|
|
77
120
|
{
|
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":";;;kBAmcgB,GAAG;;AAJnB,wBA2QG"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,41 @@
|
|
|
1
1
|
// pm-todos — Markdown TODO round-trip for pm-cli
|
|
2
|
-
import { readFileSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { resolve } from "node:path";
|
|
2
|
+
import { readFileSync, writeFileSync, readdirSync, statSync } from "node:fs";
|
|
3
|
+
import { resolve, join, relative, sep } from "node:path";
|
|
4
4
|
import { spawnSync } from "node:child_process";
|
|
5
5
|
const defineExtension = ((extension) => extension);
|
|
6
6
|
// ---------------------------------------------------------------------------
|
|
7
|
+
// Error contract
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// pm's extension command runtime only treats a thrown error as a cleanly
|
|
10
|
+
// handled non-zero exit when the error carries a numeric `exitCode` property
|
|
11
|
+
// (see @unbrained/pm-cli runCommandHandler). A plain `Error` makes the runtime
|
|
12
|
+
// fall through to its "unhandled" path, which RE-INVOKES the command handler a
|
|
13
|
+
// second time and exits with a generic code. We mirror the SDK's EXIT_CODE
|
|
14
|
+
// contract here rather than importing it: standalone-installed extensions load
|
|
15
|
+
// only their own `dist/`, so `@unbrained/pm-cli` is not resolvable at runtime.
|
|
16
|
+
const EXIT_CODE = {
|
|
17
|
+
GENERIC_FAILURE: 1,
|
|
18
|
+
USAGE: 2,
|
|
19
|
+
NOT_FOUND: 3,
|
|
20
|
+
};
|
|
21
|
+
class CommandError extends Error {
|
|
22
|
+
exitCode;
|
|
23
|
+
constructor(message, exitCode = EXIT_CODE.GENERIC_FAILURE) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.name = "CommandError";
|
|
26
|
+
this.exitCode = exitCode;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
7
30
|
// Markdown TODO parser
|
|
8
31
|
// ---------------------------------------------------------------------------
|
|
9
|
-
|
|
32
|
+
// A checkbox line: optional leading whitespace, a `-`/`*`/`+` bullet, then the
|
|
33
|
+
// `[ ]` / `[x]` marker, then the text. Indentation is preserved to detect
|
|
34
|
+
// nested sub-tasks.
|
|
35
|
+
const TODO_RE = /^(\s*)[-*+] \[([ xX])\] (.+)$/;
|
|
36
|
+
// A markdown section header (`## Title`, any level). We treat the heading text
|
|
37
|
+
// as a tag for every TODO that follows it (until the next heading).
|
|
38
|
+
const HEADER_RE = /^(#{1,6})\s+(.+?)\s*#*$/;
|
|
10
39
|
/**
|
|
11
40
|
* Read a boolean option honoring both the kebab-case long flag and the
|
|
12
41
|
* camelCase key the runtime normalizes it to (e.g. `--dry-run` -> `dryRun`).
|
|
@@ -19,34 +48,309 @@ function readBoolOption(options, ...keys) {
|
|
|
19
48
|
}
|
|
20
49
|
return false;
|
|
21
50
|
}
|
|
22
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Read the first defined string option among the given keys (handles both the
|
|
53
|
+
* kebab-case and camelCase forms the runtime may use, e.g. `closed-as` /
|
|
54
|
+
* `closedAs`).
|
|
55
|
+
*/
|
|
56
|
+
function readStringOption(options, ...keys) {
|
|
57
|
+
for (const key of keys) {
|
|
58
|
+
const v = options[key];
|
|
59
|
+
if (v !== undefined && v !== null)
|
|
60
|
+
return String(v);
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Strip priority markers from a TODO's text and return the inferred priority.
|
|
66
|
+
*
|
|
67
|
+
* Recognised markers (case-insensitive), anywhere in the text:
|
|
68
|
+
* - `(p0)`..`(p4)` → that numeric priority
|
|
69
|
+
* - trailing/leading `!`, `!!`, `!!!` → 0, 1, 2 (more bangs = higher)
|
|
70
|
+
*
|
|
71
|
+
* Returns the cleaned text plus the inferred priority (undefined if none).
|
|
72
|
+
*/
|
|
73
|
+
function extractPriority(text) {
|
|
74
|
+
let priority;
|
|
75
|
+
let cleaned = text;
|
|
76
|
+
const pMatch = /\(p([0-4])\)/i.exec(cleaned);
|
|
77
|
+
if (pMatch) {
|
|
78
|
+
priority = parseInt(pMatch[1], 10);
|
|
79
|
+
cleaned = cleaned.replace(pMatch[0], "");
|
|
80
|
+
}
|
|
81
|
+
// Bang markers: only count a contiguous run of `!` that is its own token
|
|
82
|
+
// (surrounded by start/space/end) so we don't strip "!" inside words.
|
|
83
|
+
const bangMatch = /(^|\s)(!{1,3})(?=\s|$)/.exec(cleaned);
|
|
84
|
+
if (bangMatch && priority === undefined) {
|
|
85
|
+
priority = Math.max(0, 3 - bangMatch[2].length); // ! -> 2, !! -> 1, !!! -> 0
|
|
86
|
+
cleaned = cleaned.replace(bangMatch[0], bangMatch[1]);
|
|
87
|
+
}
|
|
88
|
+
return { text: cleaned.replace(/\s+/g, " ").trim(), priority };
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Normalise a section heading into a tag-safe slug (lowercase, dashes).
|
|
92
|
+
*/
|
|
93
|
+
function sectionToTag(section) {
|
|
94
|
+
return section
|
|
95
|
+
.toLowerCase()
|
|
96
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
97
|
+
.replace(/^-+|-+$/g, "");
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Parse a markdown string into TODO items.
|
|
101
|
+
*
|
|
102
|
+
* Supports:
|
|
103
|
+
* - `-`/`*`/`+` bullets with `[ ]` / `[x]` checkboxes
|
|
104
|
+
* - nested/indented sub-tasks (indentation captured on `.indent`)
|
|
105
|
+
* - section headers (`## Foo`) attached to every following item as `.section`
|
|
106
|
+
* - priority markers (`(p1)`, `!`/`!!`/`!!!`) parsed out of the text
|
|
107
|
+
*
|
|
108
|
+
* @param file absolute source path recorded on each item (for provenance)
|
|
109
|
+
*/
|
|
110
|
+
function parseMarkdownTodos(md, file) {
|
|
23
111
|
const lines = md.split("\n");
|
|
24
112
|
const todos = [];
|
|
113
|
+
let currentSection;
|
|
25
114
|
for (let i = 0; i < lines.length; i++) {
|
|
26
|
-
const
|
|
115
|
+
const line = lines[i];
|
|
116
|
+
const header = HEADER_RE.exec(line);
|
|
117
|
+
if (header) {
|
|
118
|
+
currentSection = header[2].trim();
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
const match = TODO_RE.exec(line);
|
|
27
122
|
if (match) {
|
|
123
|
+
const raw = match[3].trim();
|
|
124
|
+
const { text, priority } = extractPriority(raw);
|
|
28
125
|
todos.push({
|
|
29
|
-
indent: match[1].length,
|
|
126
|
+
indent: match[1].replace(/\t/g, " ").length,
|
|
30
127
|
checked: match[2] !== " ",
|
|
31
|
-
text
|
|
128
|
+
text,
|
|
129
|
+
priority,
|
|
130
|
+
section: currentSection,
|
|
32
131
|
lineNumber: i + 1,
|
|
132
|
+
file,
|
|
33
133
|
});
|
|
34
134
|
}
|
|
35
135
|
}
|
|
36
136
|
return todos;
|
|
37
137
|
}
|
|
38
|
-
|
|
39
|
-
|
|
138
|
+
/**
|
|
139
|
+
* Filter parsed todos to a single section (matched case-insensitively against
|
|
140
|
+
* the raw heading text).
|
|
141
|
+
*/
|
|
142
|
+
function filterBySection(todos, section) {
|
|
143
|
+
const want = section.trim().toLowerCase();
|
|
144
|
+
return todos.filter((t) => (t.section ?? "").toLowerCase() === want);
|
|
145
|
+
}
|
|
146
|
+
function mapStatusToPm(checked, closedAs) {
|
|
147
|
+
return checked ? closedAs : "open";
|
|
40
148
|
}
|
|
41
149
|
function mapPmStatusToChecked(status) {
|
|
42
150
|
return status === "closed" || status === "canceled";
|
|
43
151
|
}
|
|
44
152
|
// ---------------------------------------------------------------------------
|
|
153
|
+
// File discovery (glob)
|
|
154
|
+
// ---------------------------------------------------------------------------
|
|
155
|
+
/**
|
|
156
|
+
* Convert a simple glob pattern (supporting `*`, `?`, `**`) into a RegExp that
|
|
157
|
+
* matches a path relative to the base directory (with `/` separators).
|
|
158
|
+
*/
|
|
159
|
+
function globToRegExp(glob) {
|
|
160
|
+
let re = "";
|
|
161
|
+
for (let i = 0; i < glob.length; i++) {
|
|
162
|
+
const ch = glob[i];
|
|
163
|
+
if (ch === "*") {
|
|
164
|
+
if (glob[i + 1] === "*") {
|
|
165
|
+
// `**` matches across directory separators
|
|
166
|
+
re += ".*";
|
|
167
|
+
i++;
|
|
168
|
+
if (glob[i + 1] === "/")
|
|
169
|
+
i++; // swallow the trailing slash of `**/`
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
re += "[^/]*";
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else if (ch === "?") {
|
|
176
|
+
re += "[^/]";
|
|
177
|
+
}
|
|
178
|
+
else if (".+^${}()|[]\\".includes(ch)) {
|
|
179
|
+
re += "\\" + ch;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
re += ch;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return new RegExp("^" + re + "$");
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Resolve a `--glob <pattern>` into a sorted list of absolute file paths.
|
|
189
|
+
* Walks the working directory (capped depth) and matches relative paths.
|
|
190
|
+
*/
|
|
191
|
+
function resolveGlob(pattern, cwd) {
|
|
192
|
+
const re = globToRegExp(pattern);
|
|
193
|
+
const out = [];
|
|
194
|
+
const walk = (dir, depth) => {
|
|
195
|
+
if (depth > 12)
|
|
196
|
+
return;
|
|
197
|
+
let entries;
|
|
198
|
+
try {
|
|
199
|
+
entries = readdirSync(dir);
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
for (const entry of entries) {
|
|
205
|
+
if (entry === "node_modules" || entry === ".git" || entry === "dist")
|
|
206
|
+
continue;
|
|
207
|
+
const abs = join(dir, entry);
|
|
208
|
+
let st;
|
|
209
|
+
try {
|
|
210
|
+
st = statSync(abs);
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
if (st.isDirectory()) {
|
|
216
|
+
walk(abs, depth + 1);
|
|
217
|
+
}
|
|
218
|
+
else if (st.isFile()) {
|
|
219
|
+
const rel = relative(cwd, abs).split(sep).join("/");
|
|
220
|
+
if (re.test(rel))
|
|
221
|
+
out.push(abs);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
walk(cwd, 0);
|
|
226
|
+
return out.sort();
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Read, parse and (unless dry-run) create pm items for every TODO found across
|
|
230
|
+
* the given files. Single code path shared by the command and the importer.
|
|
231
|
+
*/
|
|
232
|
+
function runTodoImport(opts) {
|
|
233
|
+
let imported = 0;
|
|
234
|
+
let skipped = 0;
|
|
235
|
+
const previews = [];
|
|
236
|
+
for (const file of opts.files) {
|
|
237
|
+
let md;
|
|
238
|
+
try {
|
|
239
|
+
md = readFileSync(file, "utf-8");
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
243
|
+
const exitCode = /ENOENT|no such file/i.test(msg) ? EXIT_CODE.NOT_FOUND : EXIT_CODE.GENERIC_FAILURE;
|
|
244
|
+
throw new CommandError(`Failed to read file ${file}: ${msg}`, exitCode);
|
|
245
|
+
}
|
|
246
|
+
let todos = parseMarkdownTodos(md, file);
|
|
247
|
+
if (opts.section)
|
|
248
|
+
todos = filterBySection(todos, opts.section);
|
|
249
|
+
for (const todo of todos) {
|
|
250
|
+
const tags = [...opts.extraTags];
|
|
251
|
+
if (opts.sectionTags && todo.section) {
|
|
252
|
+
const tag = sectionToTag(todo.section);
|
|
253
|
+
if (tag && !tags.includes(tag))
|
|
254
|
+
tags.push(tag);
|
|
255
|
+
}
|
|
256
|
+
// CLI --priority wins; otherwise use the priority inferred from markers.
|
|
257
|
+
const priority = opts.priority !== undefined && opts.priority !== ""
|
|
258
|
+
? opts.priority
|
|
259
|
+
: todo.priority !== undefined
|
|
260
|
+
? String(todo.priority)
|
|
261
|
+
: undefined;
|
|
262
|
+
const status = mapStatusToPm(todo.checked, opts.closedAs);
|
|
263
|
+
if (opts.dryRun) {
|
|
264
|
+
previews.push({
|
|
265
|
+
checked: todo.checked,
|
|
266
|
+
title: todo.text,
|
|
267
|
+
status,
|
|
268
|
+
priority,
|
|
269
|
+
tags,
|
|
270
|
+
section: todo.section,
|
|
271
|
+
indent: todo.indent,
|
|
272
|
+
file: todo.file,
|
|
273
|
+
line: todo.lineNumber,
|
|
274
|
+
});
|
|
275
|
+
console.error(` [dry-run] ${todo.checked ? "[x]" : "[ ]"} ${" ".repeat(Math.floor(todo.indent / 2))}${todo.text}` +
|
|
276
|
+
(tags.length ? ` (tags: ${tags.join(",")})` : "") +
|
|
277
|
+
(priority !== undefined ? ` (p${priority})` : ""));
|
|
278
|
+
imported++;
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
try {
|
|
282
|
+
const spawnArgs = [
|
|
283
|
+
"--path", opts.pmRoot,
|
|
284
|
+
"create",
|
|
285
|
+
"--title", todo.text,
|
|
286
|
+
"--type", opts.itemType,
|
|
287
|
+
"--status", status,
|
|
288
|
+
"--description", `Imported from ${todo.file ?? "stdin"} line ${todo.lineNumber}`,
|
|
289
|
+
];
|
|
290
|
+
if (priority !== undefined && priority !== "")
|
|
291
|
+
spawnArgs.push("--priority", priority);
|
|
292
|
+
if (tags.length > 0)
|
|
293
|
+
spawnArgs.push("--tags", tags.join(","));
|
|
294
|
+
const result = spawnSync("pm", spawnArgs, { encoding: "utf-8" });
|
|
295
|
+
if (result.status !== 0) {
|
|
296
|
+
throw new Error(result.stderr || "pm create failed");
|
|
297
|
+
}
|
|
298
|
+
imported++;
|
|
299
|
+
}
|
|
300
|
+
catch (err) {
|
|
301
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
302
|
+
console.error(`${todo.file}:${todo.lineNumber}: create failed — ${msg}`);
|
|
303
|
+
skipped++;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return { imported, skipped, previews: opts.dryRun ? previews : undefined };
|
|
308
|
+
}
|
|
309
|
+
function buildTodoMarkdown(opts) {
|
|
310
|
+
const result = spawnSync("pm", ["--path", opts.pmRoot, "list-all", "--json"], { encoding: "utf-8" });
|
|
311
|
+
if (result.status !== 0) {
|
|
312
|
+
throw new CommandError(result.stderr || "pm list-all failed");
|
|
313
|
+
}
|
|
314
|
+
let items = JSON.parse(result.stdout).items ?? [];
|
|
315
|
+
if (opts.statusFilter)
|
|
316
|
+
items = items.filter((i) => i.status === opts.statusFilter);
|
|
317
|
+
if (opts.typeFilter)
|
|
318
|
+
items = items.filter((i) => i.type === opts.typeFilter);
|
|
319
|
+
if (items.length === 0) {
|
|
320
|
+
return { markdown: "", count: 0 };
|
|
321
|
+
}
|
|
322
|
+
const lines = [
|
|
323
|
+
"# TODO",
|
|
324
|
+
"",
|
|
325
|
+
`<!-- Exported from pm-cli on ${new Date().toISOString()} -->`,
|
|
326
|
+
"",
|
|
327
|
+
];
|
|
328
|
+
const openItems = items.filter((i) => i.status === "open" || i.status === "in_progress" || i.status === "blocked" || i.status === "draft");
|
|
329
|
+
const closedItems = items.filter((i) => i.status === "closed" || i.status === "canceled");
|
|
330
|
+
if (openItems.length > 0) {
|
|
331
|
+
lines.push("## Open", "");
|
|
332
|
+
for (const item of openItems) {
|
|
333
|
+
const check = mapPmStatusToChecked(item.status) ? "x" : " ";
|
|
334
|
+
const typeTag = item.type ? ` [${item.type}]` : "";
|
|
335
|
+
lines.push(`- [${check}] ${item.title}${typeTag} <!-- ${item.id} -->`);
|
|
336
|
+
}
|
|
337
|
+
lines.push("");
|
|
338
|
+
}
|
|
339
|
+
if (closedItems.length > 0) {
|
|
340
|
+
lines.push("## Done", "");
|
|
341
|
+
for (const item of closedItems) {
|
|
342
|
+
lines.push(`- [x] ${item.title} <!-- ${item.id} -->`);
|
|
343
|
+
}
|
|
344
|
+
lines.push("");
|
|
345
|
+
}
|
|
346
|
+
return { markdown: lines.join("\n"), count: items.length };
|
|
347
|
+
}
|
|
348
|
+
// ---------------------------------------------------------------------------
|
|
45
349
|
// Extension
|
|
46
350
|
// ---------------------------------------------------------------------------
|
|
47
351
|
export default defineExtension({
|
|
48
352
|
name: "pm-todos",
|
|
49
|
-
version: "2026.
|
|
353
|
+
version: "2026.6.2",
|
|
50
354
|
activate(api) {
|
|
51
355
|
// -----------------------------------------------------------------------
|
|
52
356
|
// Command: pm todos import <file>
|
|
@@ -54,79 +358,72 @@ export default defineExtension({
|
|
|
54
358
|
api.registerCommand({
|
|
55
359
|
name: "todos import",
|
|
56
360
|
description: "Import markdown TODO items (- [ ] and - [x]) as pm items. " +
|
|
57
|
-
"Each checkbox becomes a pm Task; checked items are closed."
|
|
361
|
+
"Each checkbox becomes a pm Task; checked items are closed. " +
|
|
362
|
+
"Supports nested sub-tasks, multiple files via --glob, section headers " +
|
|
363
|
+
"(## …) mapped to tags, and priority markers ((p1), !).",
|
|
58
364
|
intent: "import markdown checkboxes as pm items",
|
|
59
365
|
examples: [
|
|
60
366
|
"pm todos import TODO.md",
|
|
61
367
|
"pm todos import notes.md --dry-run",
|
|
62
|
-
"pm todos import backlog.md --type Task",
|
|
368
|
+
"pm todos import backlog.md --type Task --priority 2",
|
|
369
|
+
"pm todos import --glob 'docs/**/*.md'",
|
|
370
|
+
"pm todos import TODO.md --section Backlog",
|
|
371
|
+
"pm todos import TODO.md --closed-as canceled",
|
|
63
372
|
],
|
|
64
373
|
flags: [
|
|
65
374
|
{ long: "--dry-run", description: "Preview without writing" },
|
|
66
375
|
{ long: "--type", value_name: "type", description: "Item type for imported items (default: Task)" },
|
|
67
|
-
{ long: "--priority", value_name: "n", description: "Priority for imported items (0-4)" },
|
|
68
|
-
{ long: "--tags", value_name: "tags", description: "Comma-separated tags to apply" },
|
|
376
|
+
{ long: "--priority", value_name: "n", description: "Priority for imported items (0-4); overrides inferred markers" },
|
|
377
|
+
{ long: "--tags", value_name: "tags", description: "Comma-separated tags to apply to all items" },
|
|
378
|
+
{ long: "--glob", value_name: "pattern", description: "Import every markdown file matching this glob (e.g. 'docs/**/*.md')" },
|
|
379
|
+
{ long: "--section", value_name: "name", description: "Import only items under this ## section heading" },
|
|
380
|
+
{ long: "--closed-as", value_name: "status", description: "Status to assign checked items (default: closed)" },
|
|
381
|
+
{ long: "--no-section-tags", description: "Do not derive tags from section headings" },
|
|
69
382
|
],
|
|
70
383
|
async run(ctx) {
|
|
71
|
-
const filePath = ctx.args[0];
|
|
72
|
-
if (!filePath) {
|
|
73
|
-
throw new Error("Usage: pm todos import <file> [--dry-run] [--type Task]");
|
|
74
|
-
}
|
|
75
384
|
const dryRun = readBoolOption(ctx.options, "dry-run", "dryRun");
|
|
76
385
|
const itemType = ctx.options["type"] || "Task";
|
|
77
386
|
const priority = ctx.options["priority"];
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
387
|
+
const tagsOpt = ctx.options["tags"];
|
|
388
|
+
const glob = readStringOption(ctx.options, "glob");
|
|
389
|
+
const section = readStringOption(ctx.options, "section");
|
|
390
|
+
const closedAs = readStringOption(ctx.options, "closed-as", "closedAs") ?? "closed";
|
|
391
|
+
// `--no-section-tags` arrives as sectionTags=false; default on.
|
|
392
|
+
const sectionTags = ctx.options["sectionTags"] !== false && ctx.options["section-tags"] !== false;
|
|
393
|
+
let files;
|
|
394
|
+
if (glob) {
|
|
395
|
+
files = resolveGlob(glob, process.cwd());
|
|
396
|
+
if (files.length === 0) {
|
|
397
|
+
throw new CommandError(`No files matched glob: ${glob}`, EXIT_CODE.NOT_FOUND);
|
|
398
|
+
}
|
|
399
|
+
console.error(`Matched ${files.length} file(s) for glob '${glob}'.`);
|
|
84
400
|
}
|
|
85
|
-
|
|
86
|
-
const
|
|
87
|
-
|
|
401
|
+
else {
|
|
402
|
+
const filePath = ctx.args[0];
|
|
403
|
+
if (!filePath) {
|
|
404
|
+
throw new CommandError("Usage: pm todos import <file> [--glob <pattern>] [--section <name>] [--closed-as <status>] [--dry-run]", EXIT_CODE.USAGE);
|
|
405
|
+
}
|
|
406
|
+
files = [resolve(filePath)];
|
|
88
407
|
}
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
408
|
+
const extraTags = (tagsOpt ?? "").split(",").map((t) => t.trim()).filter(Boolean);
|
|
409
|
+
const { imported, skipped, previews } = runTodoImport({
|
|
410
|
+
files,
|
|
411
|
+
itemType,
|
|
412
|
+
closedAs,
|
|
413
|
+
priority,
|
|
414
|
+
extraTags,
|
|
415
|
+
section,
|
|
416
|
+
sectionTags,
|
|
417
|
+
dryRun,
|
|
418
|
+
pmRoot: ctx.pm_root,
|
|
419
|
+
});
|
|
420
|
+
if (imported === 0 && skipped === 0) {
|
|
421
|
+
console.error("No TODO items found.");
|
|
92
422
|
return { imported: 0, skipped: 0 };
|
|
93
423
|
}
|
|
94
|
-
let imported = 0;
|
|
95
|
-
let skipped = 0;
|
|
96
|
-
for (const todo of todos) {
|
|
97
|
-
if (dryRun) {
|
|
98
|
-
console.error(` [dry-run] ${todo.checked ? "[x]" : "[ ]"} ${todo.text}`);
|
|
99
|
-
imported++;
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
try {
|
|
103
|
-
const spawnArgs = [
|
|
104
|
-
"--path", ctx.pm_root,
|
|
105
|
-
"create",
|
|
106
|
-
"--title", todo.text,
|
|
107
|
-
"--type", itemType,
|
|
108
|
-
"--status", mapStatusToPm(todo.checked),
|
|
109
|
-
"--description", `Imported from ${filePath} line ${todo.lineNumber}`,
|
|
110
|
-
];
|
|
111
|
-
if (priority)
|
|
112
|
-
spawnArgs.push("--priority", priority);
|
|
113
|
-
if (tags)
|
|
114
|
-
spawnArgs.push("--tags", tags);
|
|
115
|
-
const result = spawnSync("pm", spawnArgs, { encoding: "utf-8" });
|
|
116
|
-
if (result.status !== 0) {
|
|
117
|
-
throw new Error(result.stderr || "pm create failed");
|
|
118
|
-
}
|
|
119
|
-
imported++;
|
|
120
|
-
}
|
|
121
|
-
catch (err) {
|
|
122
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
123
|
-
console.error(`Line ${todo.lineNumber}: create failed — ${msg}`);
|
|
124
|
-
skipped++;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
424
|
if (dryRun) {
|
|
128
425
|
console.error(`[dry-run] Would import ${imported} TODO item(s), skip ${skipped}.`);
|
|
129
|
-
return { dryRun: true, wouldImport: imported, wouldSkip: skipped };
|
|
426
|
+
return { dryRun: true, wouldImport: imported, wouldSkip: skipped, previews };
|
|
130
427
|
}
|
|
131
428
|
console.error(`Imported ${imported} TODO item(s), skipped ${skipped}.`);
|
|
132
429
|
return { imported, skipped };
|
|
@@ -153,110 +450,137 @@ export default defineExtension({
|
|
|
153
450
|
],
|
|
154
451
|
async run(ctx) {
|
|
155
452
|
const outputPath = ctx.options["output"];
|
|
156
|
-
const statusFilter = ctx.options["status"];
|
|
157
|
-
const typeFilter = ctx.options["type"];
|
|
158
|
-
const spawnArgs = ["--path", ctx.pm_root, "list-all", "--json"];
|
|
159
453
|
console.error("Fetching pm items…");
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
if (statusFilter) {
|
|
167
|
-
items = items.filter((i) => i.status === statusFilter);
|
|
168
|
-
}
|
|
169
|
-
if (typeFilter) {
|
|
170
|
-
items = items.filter((i) => i.type === typeFilter);
|
|
171
|
-
}
|
|
172
|
-
if (items.length === 0) {
|
|
454
|
+
const { markdown, count } = buildTodoMarkdown({
|
|
455
|
+
statusFilter: ctx.options["status"],
|
|
456
|
+
typeFilter: ctx.options["type"],
|
|
457
|
+
pmRoot: ctx.pm_root,
|
|
458
|
+
});
|
|
459
|
+
if (count === 0) {
|
|
173
460
|
console.error("No items found.");
|
|
174
461
|
return { exported: 0 };
|
|
175
462
|
}
|
|
176
|
-
const lines = [
|
|
177
|
-
"# TODO",
|
|
178
|
-
"",
|
|
179
|
-
`<!-- Exported from pm-cli on ${new Date().toISOString()} -->`,
|
|
180
|
-
"",
|
|
181
|
-
];
|
|
182
|
-
// Group: open first, then in_progress, then closed/canceled
|
|
183
|
-
const openItems = items.filter((i) => i.status === "open" || i.status === "in_progress" || i.status === "blocked" || i.status === "draft");
|
|
184
|
-
const closedItems = items.filter((i) => i.status === "closed" || i.status === "canceled");
|
|
185
|
-
if (openItems.length > 0) {
|
|
186
|
-
lines.push("## Open");
|
|
187
|
-
lines.push("");
|
|
188
|
-
for (const item of openItems) {
|
|
189
|
-
const check = mapPmStatusToChecked(item.status) ? "x" : " ";
|
|
190
|
-
const typeTag = item.type ? ` [${item.type}]` : "";
|
|
191
|
-
lines.push(`- [${check}] ${item.title}${typeTag} <!-- ${item.id} -->`);
|
|
192
|
-
}
|
|
193
|
-
lines.push("");
|
|
194
|
-
}
|
|
195
|
-
if (closedItems.length > 0) {
|
|
196
|
-
lines.push("## Done");
|
|
197
|
-
lines.push("");
|
|
198
|
-
for (const item of closedItems) {
|
|
199
|
-
lines.push(`- [x] ${item.title} <!-- ${item.id} -->`);
|
|
200
|
-
}
|
|
201
|
-
lines.push("");
|
|
202
|
-
}
|
|
203
|
-
const markdown = lines.join("\n");
|
|
204
463
|
if (outputPath) {
|
|
205
464
|
const absolutePath = resolve(outputPath);
|
|
206
465
|
writeFileSync(absolutePath, markdown, "utf-8");
|
|
207
|
-
console.error(`Exported ${
|
|
208
|
-
return { exported:
|
|
466
|
+
console.error(`Exported ${count} item(s) to: ${absolutePath}`);
|
|
467
|
+
return { exported: count, file: absolutePath };
|
|
209
468
|
}
|
|
210
|
-
console.error(`Exported ${
|
|
211
|
-
return { exported:
|
|
469
|
+
console.error(`Exported ${count} item(s).`);
|
|
470
|
+
return { exported: count, markdown };
|
|
212
471
|
},
|
|
213
472
|
});
|
|
214
473
|
// -----------------------------------------------------------------------
|
|
215
|
-
// Importer: todos
|
|
474
|
+
// Importer: todos (native `pm import todos` pipeline)
|
|
475
|
+
//
|
|
476
|
+
// Driven by options (config-driven import). Accepts the same knobs as the
|
|
477
|
+
// command: `file`, `glob`, `section`, `closed-as`, `type`, `priority`,
|
|
478
|
+
// `tags`. Reuses the shared import core so behaviour stays identical.
|
|
216
479
|
// -----------------------------------------------------------------------
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
480
|
+
// NOTE: registering the importer under the name "todos" makes the pm
|
|
481
|
+
// runtime route `pm todos import` through THIS handler (the action contract
|
|
482
|
+
// shadows the like-named registerCommand). So this handler is the single
|
|
483
|
+
// source of truth for `pm todos import` and must accept the positional file
|
|
484
|
+
// argument (`ctx.args[0]`) exactly as the command did — otherwise the
|
|
485
|
+
// existing CLI usage would silently break.
|
|
486
|
+
api.registerImporter("todos", async (ctx) => {
|
|
487
|
+
const dryRun = readBoolOption(ctx.options, "dry-run", "dryRun");
|
|
488
|
+
const glob = readStringOption(ctx.options, "glob");
|
|
489
|
+
const fileArg = (ctx.args && ctx.args[0]);
|
|
490
|
+
const fileOpt = readStringOption(ctx.options, "file");
|
|
491
|
+
let files;
|
|
492
|
+
if (glob) {
|
|
493
|
+
files = resolveGlob(glob, process.cwd());
|
|
494
|
+
if (files.length === 0 && ctx.pm_root) {
|
|
495
|
+
files = resolveGlob(glob, resolve(ctx.pm_root, ".."));
|
|
496
|
+
}
|
|
497
|
+
if (files.length === 0) {
|
|
498
|
+
throw new CommandError(`No files matched glob: ${glob}`, EXIT_CODE.NOT_FOUND);
|
|
499
|
+
}
|
|
500
|
+
console.error(`Matched ${files.length} file(s) for glob '${glob}'.`);
|
|
222
501
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
let md;
|
|
226
|
-
try {
|
|
227
|
-
md = readFileSync(absolutePath, "utf-8");
|
|
502
|
+
else if (fileArg || fileOpt) {
|
|
503
|
+
files = [resolve((fileArg ?? fileOpt))];
|
|
228
504
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
console.error(`todos-import: failed to read — ${msg}`);
|
|
232
|
-
return;
|
|
505
|
+
else {
|
|
506
|
+
throw new CommandError("Usage: pm todos import <file> [--glob <pattern>] [--section <name>] [--closed-as <status>] [--dry-run]", EXIT_CODE.USAGE);
|
|
233
507
|
}
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
508
|
+
const itemType = readStringOption(ctx.options, "type") ?? "Task";
|
|
509
|
+
const closedAs = readStringOption(ctx.options, "closed-as", "closedAs") ?? "closed";
|
|
510
|
+
const priority = readStringOption(ctx.options, "priority");
|
|
511
|
+
const section = readStringOption(ctx.options, "section");
|
|
512
|
+
const extraTags = (readStringOption(ctx.options, "tags") ?? "")
|
|
513
|
+
.split(",").map((t) => t.trim()).filter(Boolean);
|
|
514
|
+
const sectionTags = ctx.options["sectionTags"] !== false && ctx.options["section-tags"] !== false;
|
|
515
|
+
const { imported, skipped, previews } = runTodoImport({
|
|
516
|
+
files,
|
|
517
|
+
itemType,
|
|
518
|
+
closedAs,
|
|
519
|
+
priority,
|
|
520
|
+
extraTags,
|
|
521
|
+
section,
|
|
522
|
+
sectionTags,
|
|
523
|
+
dryRun,
|
|
524
|
+
pmRoot: ctx.pm_root,
|
|
525
|
+
});
|
|
526
|
+
if (imported === 0 && skipped === 0) {
|
|
527
|
+
console.error("No TODO items found.");
|
|
528
|
+
return { imported: 0, skipped: 0 };
|
|
238
529
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
try {
|
|
243
|
-
const spawnArgs = [
|
|
244
|
-
"--path", ctx.pm_root,
|
|
245
|
-
"create",
|
|
246
|
-
"--title", todo.text,
|
|
247
|
-
"--type", "Task",
|
|
248
|
-
"--status", mapStatusToPm(todo.checked),
|
|
249
|
-
];
|
|
250
|
-
const result = spawnSync("pm", spawnArgs, { encoding: "utf-8" });
|
|
251
|
-
if (result.status !== 0) {
|
|
252
|
-
throw new Error(result.stderr || "pm create failed");
|
|
253
|
-
}
|
|
254
|
-
imported++;
|
|
255
|
-
}
|
|
256
|
-
catch (err) {
|
|
257
|
-
skipped++;
|
|
258
|
-
}
|
|
530
|
+
if (dryRun) {
|
|
531
|
+
console.error(`[dry-run] Would import ${imported} TODO item(s), skip ${skipped}.`);
|
|
532
|
+
return { dryRun: true, wouldImport: imported, wouldSkip: skipped, previews };
|
|
259
533
|
}
|
|
534
|
+
console.error(`Imported ${imported} TODO item(s), skipped ${skipped}.`);
|
|
535
|
+
return { imported, skipped };
|
|
536
|
+
});
|
|
537
|
+
// -----------------------------------------------------------------------
|
|
538
|
+
// Exporter: todos (native `pm export todos` pipeline)
|
|
539
|
+
//
|
|
540
|
+
// Mirrors the `todos export` command so markdown is a first-class
|
|
541
|
+
// import/export pair. Writes to `--output` or prints to stdout.
|
|
542
|
+
// -----------------------------------------------------------------------
|
|
543
|
+
api.registerExporter("todos", async (ctx) => {
|
|
544
|
+
const outputPath = readStringOption(ctx.options, "output");
|
|
545
|
+
const { markdown, count } = buildTodoMarkdown({
|
|
546
|
+
statusFilter: readStringOption(ctx.options, "status"),
|
|
547
|
+
typeFilter: readStringOption(ctx.options, "type"),
|
|
548
|
+
pmRoot: ctx.pm_root,
|
|
549
|
+
});
|
|
550
|
+
if (count === 0) {
|
|
551
|
+
console.error("todos: no items found.");
|
|
552
|
+
return { exported: 0 };
|
|
553
|
+
}
|
|
554
|
+
if (outputPath) {
|
|
555
|
+
const absolutePath = resolve(outputPath);
|
|
556
|
+
writeFileSync(absolutePath, markdown, "utf-8");
|
|
557
|
+
console.error(`todos: wrote ${count} item(s) to ${absolutePath}`);
|
|
558
|
+
return { exported: count, file: absolutePath };
|
|
559
|
+
}
|
|
560
|
+
console.log(markdown);
|
|
561
|
+
return { exported: count, markdown };
|
|
562
|
+
});
|
|
563
|
+
// -----------------------------------------------------------------------
|
|
564
|
+
// Importer: todos-import (legacy alias — retained for backward compat)
|
|
565
|
+
// -----------------------------------------------------------------------
|
|
566
|
+
api.registerImporter("todos-import", async (ctx) => {
|
|
567
|
+
const filePath = readStringOption(ctx.options, "file");
|
|
568
|
+
if (!filePath) {
|
|
569
|
+
console.error("todos-import: no 'file' provided — skipping.");
|
|
570
|
+
return;
|
|
571
|
+
}
|
|
572
|
+
const closedAs = readStringOption(ctx.options, "closed-as", "closedAs") ?? "closed";
|
|
573
|
+
const { imported, skipped } = runTodoImport({
|
|
574
|
+
files: [resolve(filePath)],
|
|
575
|
+
itemType: readStringOption(ctx.options, "type") ?? "Task",
|
|
576
|
+
closedAs,
|
|
577
|
+
priority: readStringOption(ctx.options, "priority"),
|
|
578
|
+
extraTags: [],
|
|
579
|
+
section: readStringOption(ctx.options, "section"),
|
|
580
|
+
sectionTags: false,
|
|
581
|
+
dryRun: false,
|
|
582
|
+
pmRoot: ctx.pm_root,
|
|
583
|
+
});
|
|
260
584
|
console.error(`todos-import: done — imported ${imported}, skipped ${skipped}.`);
|
|
261
585
|
});
|
|
262
586
|
},
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pm-todos",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.6.2",
|
|
4
4
|
"description": "Markdown TODO round-trip 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
|
},
|