pm-todos 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 +22 -1
- package/README.md +59 -3
- package/dist/index.d.ts +149 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +602 -16
- package/dist/index.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 2026.6.
|
|
3
|
+
## 2026.6.4 - 2026-06-04
|
|
4
|
+
|
|
5
|
+
### Other
|
|
6
|
+
|
|
7
|
+
- todo.txt date + key:value round-trip fidelity, --status import, export --sort ([pm-todos-qyv4](https://github.com/unbraind/pm-todos/blob/main/.agents/pm/tasks/pm-todos-qyv4.toon))
|
|
8
|
+
|
|
9
|
+
## 2026.06.03 - 2026-06-02
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Deepen pm-todos: todo.txt + GH task-list + validate + grouping + full field round-trip ([pm-todos-vqr8](https://github.com/unbraind/pm-todos/blob/main/.agents/pm/features/pm-todos-vqr8.toon))
|
|
14
|
+
|
|
15
|
+
### Other
|
|
16
|
+
|
|
17
|
+
- Full field round-trip in markdown \(type/priority/tags/deadline/status/assignee\) ([pm-todos-i8qd](https://github.com/unbraind/pm-todos/blob/main/.agents/pm/tasks/pm-todos-i8qd.toon))
|
|
18
|
+
- --group-by status\|sprint\|type sectioning on export ([pm-todos-oqcd](https://github.com/unbraind/pm-todos/blob/main/.agents/pm/tasks/pm-todos-oqcd.toon))
|
|
19
|
+
- todos validate <file\> command ([pm-todos-q1v5](https://github.com/unbraind/pm-todos/blob/main/.agents/pm/tasks/pm-todos-q1v5.toon))
|
|
20
|
+
- GitHub-flavored task-list export \(--format tasklist\) ([pm-todos-hiry](https://github.com/unbraind/pm-todos/blob/main/.agents/pm/tasks/pm-todos-hiry.toon))
|
|
21
|
+
- todo.txt format import + export \(--format todotxt\) ([pm-todos-1q04](https://github.com/unbraind/pm-todos/blob/main/.agents/pm/tasks/pm-todos-1q04.toon))
|
|
22
|
+
- Decision: priority-letter<-\>number mapping ([pm-todos-c710](https://github.com/unbraind/pm-todos/blob/main/.agents/pm/tasks/pm-todos-c710.toon))
|
|
23
|
+
|
|
24
|
+
## 2026.06.02 - 2026-06-02
|
|
4
25
|
|
|
5
26
|
### Added
|
|
6
27
|
|
package/README.md
CHANGED
|
@@ -6,6 +6,8 @@ Import markdown checkboxes (`- [ ]` and `- [x]`) as pm items and export pm items
|
|
|
6
6
|
|
|
7
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
8
|
|
|
9
|
+
In addition to markdown, pm-todos round-trips the de-facto [**todo.txt**](https://github.com/todotxt/todo.txt) format and exports **GitHub-flavored task lists**, can **group** exports into sections by status/sprint/type, and can **validate** a TODO file without importing it.
|
|
10
|
+
|
|
9
11
|
---
|
|
10
12
|
|
|
11
13
|
## Installation
|
|
@@ -44,6 +46,8 @@ pm todos import backlog.md --type Task --priority 2
|
|
|
44
46
|
pm todos import --glob 'docs/**/*.md'
|
|
45
47
|
pm todos import TODO.md --section Backlog
|
|
46
48
|
pm todos import TODO.md --closed-as canceled
|
|
49
|
+
pm todos import TODO.md --status in_progress
|
|
50
|
+
pm todos import todo.txt --format todotxt
|
|
47
51
|
```
|
|
48
52
|
|
|
49
53
|
**Flags**
|
|
@@ -51,12 +55,14 @@ pm todos import TODO.md --closed-as canceled
|
|
|
51
55
|
| Flag | Type | Description |
|
|
52
56
|
|---|---|---|
|
|
53
57
|
| `--dry-run` | boolean | Preview without writing |
|
|
58
|
+
| `--format <fmt>` | string | Source format: `markdown` (default) or `todotxt` |
|
|
54
59
|
| `--type <type>` | string | Item type (default: Task) |
|
|
55
60
|
| `--priority <n>` | number | Priority (0–4); overrides markers inferred from the text |
|
|
56
61
|
| `--tags <tags>` | string | Comma-separated tags applied to every item |
|
|
57
62
|
| `--glob <pattern>` | string | Import every markdown file matching the glob (e.g. `docs/**/*.md`) instead of a single positional file |
|
|
58
63
|
| `--section <name>` | string | Import only items found under this `##` section heading |
|
|
59
64
|
| `--closed-as <status>` | string | Status assigned to checked (`- [x]`) items (default: `closed`) |
|
|
65
|
+
| `--status <status>` | string | Status assigned to open (unchecked, `- [ ]`) items (default: `open`) |
|
|
60
66
|
| `--no-section-tags` | boolean | Do not derive tags from section headings |
|
|
61
67
|
|
|
62
68
|
**Parsing rules**
|
|
@@ -66,15 +72,30 @@ pm todos import TODO.md --closed-as canceled
|
|
|
66
72
|
- **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
73
|
- **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.
|
|
68
74
|
|
|
75
|
+
#### todo.txt format (`--format todotxt`)
|
|
76
|
+
|
|
77
|
+
With `--format todotxt`, lines are parsed as [todo.txt](https://github.com/todotxt/todo.txt):
|
|
78
|
+
|
|
79
|
+
- `x` at the start marks completion → status `closed` (an optional completion date is recognised and skipped).
|
|
80
|
+
- `(A)`…`(Z)` priority letter → pm numeric priority (`(A)`→`0`, …, `(E)`→`4`; letters past `E` clamp to `4`). An explicit `--priority` flag still wins.
|
|
81
|
+
- `+project` and `@context` tokens → tags (pm folds tags to lowercase).
|
|
82
|
+
- `due:YYYY-MM-DD` → the item deadline. Other `key:value` pairs are ignored on pm import (pm has no field for them), but are **preserved through a todo.txt round-trip** at the format layer.
|
|
83
|
+
- **Creation and completion dates** (`x <completion> <creation> …` for done items, `(A) <creation> …` for open items) are parsed and **re-emitted on todo.txt export**, so a todo.txt → todo.txt round-trip is lossless on dates and `key:value` metadata.
|
|
84
|
+
|
|
69
85
|
### `pm todos export`
|
|
70
86
|
|
|
71
|
-
Export pm items as a markdown TODO list.
|
|
87
|
+
Export pm items as a markdown TODO list, a todo.txt file, or a GitHub-flavored task list.
|
|
72
88
|
|
|
73
89
|
```bash
|
|
74
90
|
pm todos export
|
|
75
91
|
pm todos export --output TODO.md
|
|
76
92
|
pm todos export --status open --output backlog.md
|
|
77
93
|
pm todos export --type Task
|
|
94
|
+
pm todos export --format todotxt --output todo.txt
|
|
95
|
+
pm todos export --format tasklist --group-by sprint
|
|
96
|
+
pm todos export --group-by type
|
|
97
|
+
pm todos export --sort priority
|
|
98
|
+
pm todos export --sort deadline --status open
|
|
78
99
|
```
|
|
79
100
|
|
|
80
101
|
**Flags**
|
|
@@ -82,9 +103,41 @@ pm todos export --type Task
|
|
|
82
103
|
| Flag | Type | Description |
|
|
83
104
|
|---|---|---|
|
|
84
105
|
| `--output <file>` | string | Write to file instead of stdout |
|
|
106
|
+
| `--format <fmt>` | string | Output format: `markdown` (default), `todotxt`, or `tasklist` (GitHub task list) |
|
|
107
|
+
| `--group-by <field>` | string | Section markdown/tasklist output by `status` (default), `sprint`, or `type` |
|
|
108
|
+
| `--sort <key>` | string | Sort items by `priority` (0 highest first), `deadline` (ascending), or `title` (alphabetical). Unset preserves pm's native order |
|
|
85
109
|
| `--status <status>` | string | Filter by status |
|
|
86
110
|
| `--type <type>` | string | Filter by item type |
|
|
87
111
|
|
|
112
|
+
The default `markdown` export (no `--group-by`, or `--group-by status`) is unchanged: a
|
|
113
|
+
`# TODO` document with `## Open` / `## Done` sections. `--group-by sprint`/`type` emits a
|
|
114
|
+
`## <value>` section per group. The `todotxt` exporter maps priority→letter, tags→`+project`,
|
|
115
|
+
and deadline→`due:`. The `tasklist` exporter emits `- [ ]` / `- [x]` items grouped under
|
|
116
|
+
`## <heading>` sections, each carrying a `<!-- pm-id -->` comment for round-trips.
|
|
117
|
+
|
|
118
|
+
### `pm todos validate <file>`
|
|
119
|
+
|
|
120
|
+
Parse a TODO file and report problems **without importing**. Exits non-zero when structural
|
|
121
|
+
errors (malformed `due:` dates, out-of-range priorities) are found, so it is safe to gate CI on.
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
pm todos validate TODO.md
|
|
125
|
+
pm todos validate todo.txt --format todotxt
|
|
126
|
+
pm todos validate TODO.md --json
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Flags**
|
|
130
|
+
|
|
131
|
+
| Flag | Type | Description |
|
|
132
|
+
|---|---|---|
|
|
133
|
+
| `--format <fmt>` | string | File format: `markdown` (default) or `todotxt` |
|
|
134
|
+
| `--json` | boolean | Return a JSON report (with the full `issues` array) on stdout |
|
|
135
|
+
|
|
136
|
+
Errors (e.g. an invalid `due:` date, a `(p9)` marker out of the `0–4` range) cause a non-zero
|
|
137
|
+
exit; warnings (empty task text, a checkbox-looking line that doesn't parse) do not. A
|
|
138
|
+
human-readable summary is always written to stderr; under `--json` the structured report is
|
|
139
|
+
returned on stdout for valid files.
|
|
140
|
+
|
|
88
141
|
---
|
|
89
142
|
|
|
90
143
|
## Native import/export pipeline
|
|
@@ -109,8 +162,11 @@ export` routes above and can also be driven programmatically:
|
|
|
109
162
|
}
|
|
110
163
|
```
|
|
111
164
|
|
|
112
|
-
The `todos` exporter accepts `output`, `status`
|
|
113
|
-
|
|
165
|
+
The `todos` exporter accepts `output`, `status`, `type`, `format`, `group-by` and
|
|
166
|
+
`sort` options and emits the same output produced by `pm todos export` (default
|
|
167
|
+
markdown, or `todotxt` / `tasklist`). The `todos` importer additionally accepts
|
|
168
|
+
`format` (`markdown` | `todotxt`) and `status` (status for open items, complementing
|
|
169
|
+
`closed-as`).
|
|
114
170
|
|
|
115
171
|
### Legacy importer: `todos-import`
|
|
116
172
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,152 @@
|
|
|
1
|
+
interface PmItem {
|
|
2
|
+
id: string;
|
|
3
|
+
title: string;
|
|
4
|
+
status: string;
|
|
5
|
+
type?: string;
|
|
6
|
+
priority?: number;
|
|
7
|
+
tags?: string[];
|
|
8
|
+
deadline?: string;
|
|
9
|
+
assignee?: string;
|
|
10
|
+
sprint?: string;
|
|
11
|
+
created_at?: string;
|
|
12
|
+
updated_at?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Optional todo.txt creation date (`YYYY-MM-DD`). When present, emitted on
|
|
15
|
+
* todo.txt export. Used to carry a parsed creation date through round-trips.
|
|
16
|
+
*/
|
|
17
|
+
creationDate?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Optional todo.txt completion date (`YYYY-MM-DD`). When present and the item
|
|
20
|
+
* is done, emitted right after the `x` marker on todo.txt export.
|
|
21
|
+
*/
|
|
22
|
+
completionDate?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Arbitrary todo.txt `key:value` metadata (e.g. `rec:1w`, `id:gh-123`)
|
|
25
|
+
* preserved verbatim so it survives a todo.txt round-trip.
|
|
26
|
+
*/
|
|
27
|
+
kv?: Record<string, string>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Return a new, stably-sorted copy of `items` by the requested key:
|
|
31
|
+
* - priority: ascending (0 = highest first); missing priority sorts last
|
|
32
|
+
* - deadline: ascending ISO date; missing deadline sorts last
|
|
33
|
+
* - title: case-insensitive alphabetical
|
|
34
|
+
* Pure (does not mutate the input). Undefined `sort` returns the input as-is.
|
|
35
|
+
*/
|
|
36
|
+
export declare function sortItems(items: PmItem[], sort: "priority" | "deadline" | "title" | undefined): PmItem[];
|
|
37
|
+
/**
|
|
38
|
+
* A parsed todo.txt line. `raw` is the original line; the structured fields are
|
|
39
|
+
* the de-facto todo.txt grammar:
|
|
40
|
+
* - leading `x ` marks completion
|
|
41
|
+
* - `(A)`..`(Z)` is a priority letter
|
|
42
|
+
* - `+project` and `@context` are tags (collected into `projects`/`contexts`)
|
|
43
|
+
* - `key:value` pairs (notably `due:YYYY-MM-DD`) are extra metadata
|
|
44
|
+
* - everything else is the description text
|
|
45
|
+
*/
|
|
46
|
+
interface TodoTxtItem {
|
|
47
|
+
done: boolean;
|
|
48
|
+
/** Priority letter A..Z (uppercase) or undefined. */
|
|
49
|
+
priorityLetter?: string;
|
|
50
|
+
/** Free-text description with projects/contexts/key:value tokens removed. */
|
|
51
|
+
text: string;
|
|
52
|
+
projects: string[];
|
|
53
|
+
contexts: string[];
|
|
54
|
+
/** `due:` value if present (raw, un-validated date string). */
|
|
55
|
+
due?: string;
|
|
56
|
+
/** All other `key:value` pairs preserved verbatim. */
|
|
57
|
+
kv: Record<string, string>;
|
|
58
|
+
/** Completion date (`x 2026-01-02 …`), preserved if present. */
|
|
59
|
+
completionDate?: string;
|
|
60
|
+
/** Creation date, preserved if present. */
|
|
61
|
+
creationDate?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Map a todo.txt priority letter to a pm numeric priority.
|
|
65
|
+
* todo.txt: `(A)` is highest. pm: `0` is highest.
|
|
66
|
+
* `(A)`→0, `(B)`→1, … `(E)`→4. Letters beyond E (F..Z) clamp to 4 (lowest).
|
|
67
|
+
* Returns undefined for an absent/invalid letter.
|
|
68
|
+
*/
|
|
69
|
+
export declare function priorityLetterToPm(letter: string | undefined): number | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Map a pm numeric priority to a todo.txt priority letter.
|
|
72
|
+
* `0`→`A`, `1`→`B`, … `4`→`E`. Out-of-range values clamp into A..E.
|
|
73
|
+
* Returns undefined when priority is undefined.
|
|
74
|
+
*/
|
|
75
|
+
export declare function pmPriorityToLetter(priority: number | undefined): string | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Parse a single todo.txt line into a structured item. Returns null for blank
|
|
78
|
+
* lines (which carry no task).
|
|
79
|
+
*/
|
|
80
|
+
export declare function parseTodoTxtLine(line: string): TodoTxtItem | null;
|
|
81
|
+
/**
|
|
82
|
+
* Parse a whole todo.txt document into structured items (blank lines skipped).
|
|
83
|
+
*/
|
|
84
|
+
export declare function parseTodoTxt(content: string): TodoTxtItem[];
|
|
85
|
+
/**
|
|
86
|
+
* Serialize a single pm item to a todo.txt line. `+project`/`@context` are
|
|
87
|
+
* derived from tags (todo.txt has no separate notion), `due:` from deadline.
|
|
88
|
+
*/
|
|
89
|
+
export declare function serializeTodoTxtLine(item: PmItem): string;
|
|
90
|
+
/**
|
|
91
|
+
* Convert a parsed todo.txt item into the PmItem shape used by the serializer.
|
|
92
|
+
* Preserves the structured fields (priority, projects/contexts as tags, due as
|
|
93
|
+
* deadline, creation/completion dates, and arbitrary key:value metadata) so a
|
|
94
|
+
* `parse → toPm → serialize` cycle is lossless on all captured fields. Used for
|
|
95
|
+
* round-trip fidelity (and testing); not a pm persistence path.
|
|
96
|
+
*/
|
|
97
|
+
export declare function todoTxtItemToPm(item: TodoTxtItem, id?: string): PmItem;
|
|
98
|
+
/**
|
|
99
|
+
* Serialize pm items to a todo.txt document (one line per item, trailing NL).
|
|
100
|
+
*/
|
|
101
|
+
export declare function serializeTodoTxt(items: PmItem[]): string;
|
|
102
|
+
/** A markdown group: a heading and the items beneath it. */
|
|
103
|
+
interface ItemGroup {
|
|
104
|
+
heading: string;
|
|
105
|
+
items: PmItem[];
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Group pm items for sectioned export. `status` (default) splits into Open
|
|
109
|
+
* (open/in_progress/blocked/draft) and Done (closed/canceled), matching the
|
|
110
|
+
* historical markdown layout. `sprint`/`type` group by that field value
|
|
111
|
+
* (items missing the field land in an "(unassigned)" group, sorted last).
|
|
112
|
+
*/
|
|
113
|
+
export declare function groupItems(items: PmItem[], groupBy: string): ItemGroup[];
|
|
114
|
+
/**
|
|
115
|
+
* Render pm items as a GitHub-flavored task list grouped into `## <heading>`
|
|
116
|
+
* sections. Closed/canceled items become `- [x]`, everything else `- [ ]`.
|
|
117
|
+
* A trailing `<!-- id -->` comment preserves the pm id for round-trips.
|
|
118
|
+
*/
|
|
119
|
+
export declare function renderTaskList(items: PmItem[], groupBy: string): string;
|
|
120
|
+
interface ValidationIssue {
|
|
121
|
+
line: number;
|
|
122
|
+
severity: "error" | "warning";
|
|
123
|
+
message: string;
|
|
124
|
+
text: string;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Validate a todo file (markdown or todo.txt) and return structured issues.
|
|
128
|
+
* - errors (structural): bad date in `due:`, priority letter out of A..Z
|
|
129
|
+
* - warnings: lines that look like tasks but don't parse, empty titles
|
|
130
|
+
* `format` selects the grammar; `markdown` validates checkbox lines, `todotxt`
|
|
131
|
+
* validates todo.txt lines.
|
|
132
|
+
*/
|
|
133
|
+
export declare function validateTodoFile(content: string, format: "markdown" | "todotxt"): {
|
|
134
|
+
issues: ValidationIssue[];
|
|
135
|
+
taskCount: number;
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Render the default-markdown TODO export. Kept byte-identical to the original
|
|
139
|
+
* (the `# TODO` header, export-timestamp comment, `## Open`/`## Done` sections,
|
|
140
|
+
* and the `[type]` annotation on open items) so existing behaviour is stable.
|
|
141
|
+
* This is the path used when no `--group-by` (or `--group-by status`) is set.
|
|
142
|
+
*/
|
|
143
|
+
export declare function renderDefaultMarkdown(items: PmItem[], nowIso: string): string;
|
|
144
|
+
/**
|
|
145
|
+
* Render grouped markdown for `--group-by sprint|type` (or an explicit
|
|
146
|
+
* `--group-by status`). Each group is a `## <heading>` section of checkboxes
|
|
147
|
+
* carrying the pm id comment for round-trips.
|
|
148
|
+
*/
|
|
149
|
+
export declare function renderGroupedMarkdown(items: PmItem[], groupBy: string, nowIso: string): string;
|
|
1
150
|
declare const _default: {
|
|
2
151
|
name: string;
|
|
3
152
|
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":"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"}
|
package/dist/index.js
CHANGED
|
@@ -61,6 +61,93 @@ function readStringOption(options, ...keys) {
|
|
|
61
61
|
}
|
|
62
62
|
return undefined;
|
|
63
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Read and validate the import `--format` option (markdown | todotxt).
|
|
66
|
+
* Defaults to markdown (current behaviour). Throws a USAGE CommandError on an
|
|
67
|
+
* unrecognised value so typos fail loudly instead of silently importing nothing.
|
|
68
|
+
*/
|
|
69
|
+
function readImportFormat(options) {
|
|
70
|
+
const raw = readStringOption(options, "format");
|
|
71
|
+
if (raw === undefined)
|
|
72
|
+
return "markdown";
|
|
73
|
+
const v = raw.toLowerCase();
|
|
74
|
+
if (v === "markdown" || v === "md")
|
|
75
|
+
return "markdown";
|
|
76
|
+
if (v === "todotxt" || v === "todo.txt")
|
|
77
|
+
return "todotxt";
|
|
78
|
+
throw new CommandError(`Unknown --format '${raw}' (expected markdown|todotxt)`, EXIT_CODE.USAGE);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Read and validate the export `--format` option (markdown | todotxt | tasklist).
|
|
82
|
+
*/
|
|
83
|
+
function readExportFormat(options) {
|
|
84
|
+
const raw = readStringOption(options, "format");
|
|
85
|
+
if (raw === undefined)
|
|
86
|
+
return "markdown";
|
|
87
|
+
const v = raw.toLowerCase();
|
|
88
|
+
if (v === "markdown" || v === "md")
|
|
89
|
+
return "markdown";
|
|
90
|
+
if (v === "todotxt" || v === "todo.txt")
|
|
91
|
+
return "todotxt";
|
|
92
|
+
if (v === "tasklist" || v === "task-list" || v === "gfm")
|
|
93
|
+
return "tasklist";
|
|
94
|
+
throw new CommandError(`Unknown --format '${raw}' (expected markdown|todotxt|tasklist)`, EXIT_CODE.USAGE);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Read and validate the `--group-by` option (status | sprint | type).
|
|
98
|
+
*/
|
|
99
|
+
function readGroupBy(options) {
|
|
100
|
+
const raw = readStringOption(options, "group-by", "groupBy");
|
|
101
|
+
if (raw === undefined)
|
|
102
|
+
return undefined;
|
|
103
|
+
const v = raw.toLowerCase();
|
|
104
|
+
if (v === "status" || v === "sprint" || v === "type")
|
|
105
|
+
return v;
|
|
106
|
+
throw new CommandError(`Unknown --group-by '${raw}' (expected status|sprint|type)`, EXIT_CODE.USAGE);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Read and validate the export `--sort` option (priority | deadline | title).
|
|
110
|
+
* Returns undefined when absent (preserves pm's native ordering).
|
|
111
|
+
*/
|
|
112
|
+
function readSort(options) {
|
|
113
|
+
const raw = readStringOption(options, "sort");
|
|
114
|
+
if (raw === undefined)
|
|
115
|
+
return undefined;
|
|
116
|
+
const v = raw.toLowerCase();
|
|
117
|
+
if (v === "priority" || v === "deadline" || v === "title")
|
|
118
|
+
return v;
|
|
119
|
+
throw new CommandError(`Unknown --sort '${raw}' (expected priority|deadline|title)`, EXIT_CODE.USAGE);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Return a new, stably-sorted copy of `items` by the requested key:
|
|
123
|
+
* - priority: ascending (0 = highest first); missing priority sorts last
|
|
124
|
+
* - deadline: ascending ISO date; missing deadline sorts last
|
|
125
|
+
* - title: case-insensitive alphabetical
|
|
126
|
+
* Pure (does not mutate the input). Undefined `sort` returns the input as-is.
|
|
127
|
+
*/
|
|
128
|
+
export function sortItems(items, sort) {
|
|
129
|
+
if (!sort)
|
|
130
|
+
return items;
|
|
131
|
+
const copy = [...items];
|
|
132
|
+
if (sort === "priority") {
|
|
133
|
+
copy.sort((a, b) => {
|
|
134
|
+
const pa = a.priority ?? Number.POSITIVE_INFINITY;
|
|
135
|
+
const pb = b.priority ?? Number.POSITIVE_INFINITY;
|
|
136
|
+
return pa - pb;
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
else if (sort === "deadline") {
|
|
140
|
+
copy.sort((a, b) => {
|
|
141
|
+
const da = a.deadline ?? "";
|
|
142
|
+
const db = b.deadline ?? "";
|
|
143
|
+
return da < db ? -1 : da > db ? 1 : 0;
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
copy.sort((a, b) => (a.title ?? "").toLowerCase().localeCompare((b.title ?? "").toLowerCase()));
|
|
148
|
+
}
|
|
149
|
+
return copy;
|
|
150
|
+
}
|
|
64
151
|
/**
|
|
65
152
|
* Strip priority markers from a TODO's text and return the inferred priority.
|
|
66
153
|
*
|
|
@@ -143,12 +230,324 @@ function filterBySection(todos, section) {
|
|
|
143
230
|
const want = section.trim().toLowerCase();
|
|
144
231
|
return todos.filter((t) => (t.section ?? "").toLowerCase() === want);
|
|
145
232
|
}
|
|
146
|
-
function mapStatusToPm(checked, closedAs) {
|
|
147
|
-
return checked ? closedAs :
|
|
233
|
+
function mapStatusToPm(checked, closedAs, openAs = "open") {
|
|
234
|
+
return checked ? closedAs : openAs;
|
|
148
235
|
}
|
|
149
236
|
function mapPmStatusToChecked(status) {
|
|
150
237
|
return status === "closed" || status === "canceled";
|
|
151
238
|
}
|
|
239
|
+
const DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
240
|
+
/**
|
|
241
|
+
* True when `s` is a real ISO calendar date `YYYY-MM-DD` (right shape AND a
|
|
242
|
+
* valid month/day, e.g. rejects `2026-13-99`). Used by validation; the looser
|
|
243
|
+
* `DATE_RE` is fine for serialization where pm already produced the date.
|
|
244
|
+
*/
|
|
245
|
+
function isValidIsoDate(s) {
|
|
246
|
+
if (!DATE_RE.test(s))
|
|
247
|
+
return false;
|
|
248
|
+
const [y, m, d] = s.split("-").map((n) => parseInt(n, 10));
|
|
249
|
+
if (m < 1 || m > 12 || d < 1 || d > 31)
|
|
250
|
+
return false;
|
|
251
|
+
const dt = new Date(Date.UTC(y, m - 1, d));
|
|
252
|
+
return dt.getUTCFullYear() === y && dt.getUTCMonth() === m - 1 && dt.getUTCDate() === d;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Map a todo.txt priority letter to a pm numeric priority.
|
|
256
|
+
* todo.txt: `(A)` is highest. pm: `0` is highest.
|
|
257
|
+
* `(A)`→0, `(B)`→1, … `(E)`→4. Letters beyond E (F..Z) clamp to 4 (lowest).
|
|
258
|
+
* Returns undefined for an absent/invalid letter.
|
|
259
|
+
*/
|
|
260
|
+
export function priorityLetterToPm(letter) {
|
|
261
|
+
if (!letter)
|
|
262
|
+
return undefined;
|
|
263
|
+
const code = letter.toUpperCase().charCodeAt(0);
|
|
264
|
+
if (code < 65 || code > 90)
|
|
265
|
+
return undefined; // not A..Z
|
|
266
|
+
return Math.min(4, code - 65);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Map a pm numeric priority to a todo.txt priority letter.
|
|
270
|
+
* `0`→`A`, `1`→`B`, … `4`→`E`. Out-of-range values clamp into A..E.
|
|
271
|
+
* Returns undefined when priority is undefined.
|
|
272
|
+
*/
|
|
273
|
+
export function pmPriorityToLetter(priority) {
|
|
274
|
+
if (priority === undefined || priority === null || Number.isNaN(priority))
|
|
275
|
+
return undefined;
|
|
276
|
+
const clamped = Math.max(0, Math.min(4, Math.trunc(priority)));
|
|
277
|
+
return String.fromCharCode(65 + clamped);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Parse a single todo.txt line into a structured item. Returns null for blank
|
|
281
|
+
* lines (which carry no task).
|
|
282
|
+
*/
|
|
283
|
+
export function parseTodoTxtLine(line) {
|
|
284
|
+
let rest = line.trim();
|
|
285
|
+
if (rest === "")
|
|
286
|
+
return null;
|
|
287
|
+
let done = false;
|
|
288
|
+
let completionDate;
|
|
289
|
+
// Completed task: leading `x ` then an optional completion date.
|
|
290
|
+
const doneMatch = /^x\s+(.*)$/.exec(rest);
|
|
291
|
+
if (doneMatch) {
|
|
292
|
+
done = true;
|
|
293
|
+
rest = doneMatch[1].trim();
|
|
294
|
+
const dateMatch = /^(\d{4}-\d{2}-\d{2})\s+(.*)$/.exec(rest);
|
|
295
|
+
if (dateMatch) {
|
|
296
|
+
completionDate = dateMatch[1];
|
|
297
|
+
rest = dateMatch[2].trim();
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
let priorityLetter;
|
|
301
|
+
const prioMatch = /^\(([A-Z])\)\s+(.*)$/.exec(rest);
|
|
302
|
+
if (prioMatch) {
|
|
303
|
+
priorityLetter = prioMatch[1];
|
|
304
|
+
rest = prioMatch[2].trim();
|
|
305
|
+
}
|
|
306
|
+
// Optional creation date (a leading bare date after the priority).
|
|
307
|
+
let creationDate;
|
|
308
|
+
const createMatch = /^(\d{4}-\d{2}-\d{2})\s+(.*)$/.exec(rest);
|
|
309
|
+
if (createMatch) {
|
|
310
|
+
creationDate = createMatch[1];
|
|
311
|
+
rest = createMatch[2].trim();
|
|
312
|
+
}
|
|
313
|
+
const projects = [];
|
|
314
|
+
const contexts = [];
|
|
315
|
+
const kv = {};
|
|
316
|
+
let due;
|
|
317
|
+
const words = rest.split(/\s+/);
|
|
318
|
+
const textWords = [];
|
|
319
|
+
for (const w of words) {
|
|
320
|
+
if (w.length > 1 && w[0] === "+") {
|
|
321
|
+
projects.push(w.slice(1));
|
|
322
|
+
}
|
|
323
|
+
else if (w.length > 1 && w[0] === "@") {
|
|
324
|
+
contexts.push(w.slice(1));
|
|
325
|
+
}
|
|
326
|
+
else if (/^[^\s:]+:[^\s:]+$/.test(w)) {
|
|
327
|
+
const idx = w.indexOf(":");
|
|
328
|
+
const key = w.slice(0, idx);
|
|
329
|
+
const val = w.slice(idx + 1);
|
|
330
|
+
if (key === "due")
|
|
331
|
+
due = val;
|
|
332
|
+
else
|
|
333
|
+
kv[key] = val;
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
textWords.push(w);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return {
|
|
340
|
+
done,
|
|
341
|
+
priorityLetter,
|
|
342
|
+
text: textWords.join(" ").trim(),
|
|
343
|
+
projects,
|
|
344
|
+
contexts,
|
|
345
|
+
due,
|
|
346
|
+
kv,
|
|
347
|
+
completionDate,
|
|
348
|
+
creationDate,
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Parse a whole todo.txt document into structured items (blank lines skipped).
|
|
353
|
+
*/
|
|
354
|
+
export function parseTodoTxt(content) {
|
|
355
|
+
const out = [];
|
|
356
|
+
for (const line of content.split("\n")) {
|
|
357
|
+
const item = parseTodoTxtLine(line);
|
|
358
|
+
if (item)
|
|
359
|
+
out.push(item);
|
|
360
|
+
}
|
|
361
|
+
return out;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Serialize a single pm item to a todo.txt line. `+project`/`@context` are
|
|
365
|
+
* derived from tags (todo.txt has no separate notion), `due:` from deadline.
|
|
366
|
+
*/
|
|
367
|
+
export function serializeTodoTxtLine(item) {
|
|
368
|
+
const parts = [];
|
|
369
|
+
const done = mapPmStatusToChecked(item.status);
|
|
370
|
+
if (done)
|
|
371
|
+
parts.push("x");
|
|
372
|
+
// Completion date follows the `x` marker (todo.txt: `x <completion> …`).
|
|
373
|
+
// Only meaningful for done items.
|
|
374
|
+
if (done && item.completionDate && DATE_RE.test(item.completionDate)) {
|
|
375
|
+
parts.push(item.completionDate);
|
|
376
|
+
}
|
|
377
|
+
const letter = pmPriorityToLetter(item.priority);
|
|
378
|
+
if (letter && !done)
|
|
379
|
+
parts.push(`(${letter})`);
|
|
380
|
+
// Creation date sits before the description (after priority on an open item,
|
|
381
|
+
// after the completion date on a done item) — the position the parser reads.
|
|
382
|
+
if (item.creationDate && DATE_RE.test(item.creationDate)) {
|
|
383
|
+
parts.push(item.creationDate);
|
|
384
|
+
}
|
|
385
|
+
parts.push(item.title);
|
|
386
|
+
for (const tag of item.tags ?? []) {
|
|
387
|
+
parts.push(`+${tag}`);
|
|
388
|
+
}
|
|
389
|
+
if (item.deadline) {
|
|
390
|
+
const date = item.deadline.slice(0, 10);
|
|
391
|
+
if (DATE_RE.test(date))
|
|
392
|
+
parts.push(`due:${date}`);
|
|
393
|
+
}
|
|
394
|
+
// Arbitrary key:value metadata preserved verbatim (sorted for stable output).
|
|
395
|
+
if (item.kv) {
|
|
396
|
+
for (const key of Object.keys(item.kv).sort()) {
|
|
397
|
+
const val = item.kv[key];
|
|
398
|
+
if (val !== undefined && val !== "")
|
|
399
|
+
parts.push(`${key}:${val}`);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
return parts.join(" ");
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Convert a parsed todo.txt item into the PmItem shape used by the serializer.
|
|
406
|
+
* Preserves the structured fields (priority, projects/contexts as tags, due as
|
|
407
|
+
* deadline, creation/completion dates, and arbitrary key:value metadata) so a
|
|
408
|
+
* `parse → toPm → serialize` cycle is lossless on all captured fields. Used for
|
|
409
|
+
* round-trip fidelity (and testing); not a pm persistence path.
|
|
410
|
+
*/
|
|
411
|
+
export function todoTxtItemToPm(item, id = "") {
|
|
412
|
+
return {
|
|
413
|
+
id,
|
|
414
|
+
title: item.text,
|
|
415
|
+
status: item.done ? "closed" : "open",
|
|
416
|
+
priority: priorityLetterToPm(item.priorityLetter),
|
|
417
|
+
tags: [...item.projects, ...item.contexts],
|
|
418
|
+
deadline: item.due,
|
|
419
|
+
creationDate: item.creationDate,
|
|
420
|
+
completionDate: item.completionDate,
|
|
421
|
+
kv: Object.keys(item.kv).length > 0 ? { ...item.kv } : undefined,
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Serialize pm items to a todo.txt document (one line per item, trailing NL).
|
|
426
|
+
*/
|
|
427
|
+
export function serializeTodoTxt(items) {
|
|
428
|
+
if (items.length === 0)
|
|
429
|
+
return "";
|
|
430
|
+
return items.map(serializeTodoTxtLine).join("\n") + "\n";
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Group pm items for sectioned export. `status` (default) splits into Open
|
|
434
|
+
* (open/in_progress/blocked/draft) and Done (closed/canceled), matching the
|
|
435
|
+
* historical markdown layout. `sprint`/`type` group by that field value
|
|
436
|
+
* (items missing the field land in an "(unassigned)" group, sorted last).
|
|
437
|
+
*/
|
|
438
|
+
export function groupItems(items, groupBy) {
|
|
439
|
+
if (groupBy === "status") {
|
|
440
|
+
const open = items.filter((i) => i.status === "open" || i.status === "in_progress" || i.status === "blocked" || i.status === "draft");
|
|
441
|
+
const done = items.filter((i) => i.status === "closed" || i.status === "canceled");
|
|
442
|
+
const groups = [];
|
|
443
|
+
if (open.length)
|
|
444
|
+
groups.push({ heading: "Open", items: open });
|
|
445
|
+
if (done.length)
|
|
446
|
+
groups.push({ heading: "Done", items: done });
|
|
447
|
+
return groups;
|
|
448
|
+
}
|
|
449
|
+
const key = (i) => {
|
|
450
|
+
const v = i[groupBy];
|
|
451
|
+
return v === undefined || v === null || v === "" ? "(unassigned)" : String(v);
|
|
452
|
+
};
|
|
453
|
+
const buckets = new Map();
|
|
454
|
+
for (const item of items) {
|
|
455
|
+
const k = key(item);
|
|
456
|
+
if (!buckets.has(k))
|
|
457
|
+
buckets.set(k, []);
|
|
458
|
+
buckets.get(k).push(item);
|
|
459
|
+
}
|
|
460
|
+
const headings = [...buckets.keys()].sort((a, b) => {
|
|
461
|
+
if (a === "(unassigned)")
|
|
462
|
+
return 1;
|
|
463
|
+
if (b === "(unassigned)")
|
|
464
|
+
return -1;
|
|
465
|
+
return a.localeCompare(b);
|
|
466
|
+
});
|
|
467
|
+
return headings.map((h) => ({ heading: h, items: buckets.get(h) }));
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Render pm items as a GitHub-flavored task list grouped into `## <heading>`
|
|
471
|
+
* sections. Closed/canceled items become `- [x]`, everything else `- [ ]`.
|
|
472
|
+
* A trailing `<!-- id -->` comment preserves the pm id for round-trips.
|
|
473
|
+
*/
|
|
474
|
+
export function renderTaskList(items, groupBy) {
|
|
475
|
+
const groups = groupItems(items, groupBy);
|
|
476
|
+
const lines = [];
|
|
477
|
+
for (const group of groups) {
|
|
478
|
+
lines.push(`## ${group.heading}`, "");
|
|
479
|
+
for (const item of group.items) {
|
|
480
|
+
const check = mapPmStatusToChecked(item.status) ? "x" : " ";
|
|
481
|
+
lines.push(`- [${check}] ${item.title} <!-- ${item.id} -->`);
|
|
482
|
+
}
|
|
483
|
+
lines.push("");
|
|
484
|
+
}
|
|
485
|
+
return lines.join("\n").trimEnd() + "\n";
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Validate a todo file (markdown or todo.txt) and return structured issues.
|
|
489
|
+
* - errors (structural): bad date in `due:`, priority letter out of A..Z
|
|
490
|
+
* - warnings: lines that look like tasks but don't parse, empty titles
|
|
491
|
+
* `format` selects the grammar; `markdown` validates checkbox lines, `todotxt`
|
|
492
|
+
* validates todo.txt lines.
|
|
493
|
+
*/
|
|
494
|
+
export function validateTodoFile(content, format) {
|
|
495
|
+
const issues = [];
|
|
496
|
+
let taskCount = 0;
|
|
497
|
+
const lines = content.split("\n");
|
|
498
|
+
if (format === "todotxt") {
|
|
499
|
+
for (let i = 0; i < lines.length; i++) {
|
|
500
|
+
const raw = lines[i];
|
|
501
|
+
if (raw.trim() === "")
|
|
502
|
+
continue;
|
|
503
|
+
const item = parseTodoTxtLine(raw);
|
|
504
|
+
if (!item)
|
|
505
|
+
continue;
|
|
506
|
+
taskCount++;
|
|
507
|
+
if (item.due !== undefined && !isValidIsoDate(item.due)) {
|
|
508
|
+
issues.push({ line: i + 1, severity: "error", message: `Invalid due date '${item.due}' (expected YYYY-MM-DD)`, text: raw.trim() });
|
|
509
|
+
}
|
|
510
|
+
if (item.priorityLetter !== undefined && !/^[A-Z]$/.test(item.priorityLetter)) {
|
|
511
|
+
issues.push({ line: i + 1, severity: "error", message: `Invalid priority '${item.priorityLetter}' (expected A-Z)`, text: raw.trim() });
|
|
512
|
+
}
|
|
513
|
+
if (item.text === "") {
|
|
514
|
+
issues.push({ line: i + 1, severity: "warning", message: "Task has no description text", text: raw.trim() });
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
return { issues, taskCount };
|
|
518
|
+
}
|
|
519
|
+
// markdown
|
|
520
|
+
let sawAnyTask = false;
|
|
521
|
+
for (let i = 0; i < lines.length; i++) {
|
|
522
|
+
const raw = lines[i];
|
|
523
|
+
const match = TODO_RE.exec(raw);
|
|
524
|
+
if (match) {
|
|
525
|
+
sawAnyTask = true;
|
|
526
|
+
taskCount++;
|
|
527
|
+
const { text } = extractPriority(match[3].trim());
|
|
528
|
+
if (text === "") {
|
|
529
|
+
issues.push({ line: i + 1, severity: "warning", message: "Checkbox has no text", text: raw.trim() });
|
|
530
|
+
}
|
|
531
|
+
// The parser only honours `(p0)`..`(p4)`; a `(pN)` with N>4 is therefore
|
|
532
|
+
// silently treated as literal text. Surface it as an error so the typo
|
|
533
|
+
// isn't lost on import.
|
|
534
|
+
const badP = /\(p(\d+)\)/i.exec(match[3]);
|
|
535
|
+
if (badP && parseInt(badP[1], 10) > 4) {
|
|
536
|
+
issues.push({ line: i + 1, severity: "error", message: `Priority marker (p${badP[1]}) out of range (0-4)`, text: raw.trim() });
|
|
537
|
+
}
|
|
538
|
+
continue;
|
|
539
|
+
}
|
|
540
|
+
// A line that looks like a checkbox but has a malformed marker, e.g. `- [y]`
|
|
541
|
+
// or `- []`, is flagged so typos surface before import.
|
|
542
|
+
if (/^\s*[-*+]\s*\[[^ xX]?\]?/.test(raw) && !match) {
|
|
543
|
+
issues.push({ line: i + 1, severity: "warning", message: "Line resembles a checkbox but did not parse (check the `[ ]`/`[x]` marker)", text: raw.trim() });
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
if (!sawAnyTask && issues.length === 0) {
|
|
547
|
+
issues.push({ line: 0, severity: "warning", message: "No checkbox tasks found in file", text: "" });
|
|
548
|
+
}
|
|
549
|
+
return { issues, taskCount };
|
|
550
|
+
}
|
|
152
551
|
// ---------------------------------------------------------------------------
|
|
153
552
|
// File discovery (glob)
|
|
154
553
|
// ---------------------------------------------------------------------------
|
|
@@ -225,6 +624,43 @@ function resolveGlob(pattern, cwd) {
|
|
|
225
624
|
walk(cwd, 0);
|
|
226
625
|
return out.sort();
|
|
227
626
|
}
|
|
627
|
+
/**
|
|
628
|
+
* Read+parse one file into normalized todos for either supported format. For
|
|
629
|
+
* todo.txt, `+project`/`@context` become tags and `due:` becomes the deadline.
|
|
630
|
+
*/
|
|
631
|
+
function parseFileToNormalized(md, file, format) {
|
|
632
|
+
if (format === "todotxt") {
|
|
633
|
+
const lines = md.split("\n");
|
|
634
|
+
const out = [];
|
|
635
|
+
for (let i = 0; i < lines.length; i++) {
|
|
636
|
+
const item = parseTodoTxtLine(lines[i]);
|
|
637
|
+
if (!item)
|
|
638
|
+
continue;
|
|
639
|
+
const tags = [...item.projects, ...item.contexts];
|
|
640
|
+
out.push({
|
|
641
|
+
checked: item.done,
|
|
642
|
+
text: item.text,
|
|
643
|
+
priority: priorityLetterToPm(item.priorityLetter),
|
|
644
|
+
tags,
|
|
645
|
+
deadline: item.due,
|
|
646
|
+
indent: 0,
|
|
647
|
+
lineNumber: i + 1,
|
|
648
|
+
file,
|
|
649
|
+
});
|
|
650
|
+
}
|
|
651
|
+
return out;
|
|
652
|
+
}
|
|
653
|
+
return parseMarkdownTodos(md, file).map((t) => ({
|
|
654
|
+
checked: t.checked,
|
|
655
|
+
text: t.text,
|
|
656
|
+
priority: t.priority,
|
|
657
|
+
tags: [],
|
|
658
|
+
section: t.section,
|
|
659
|
+
indent: t.indent,
|
|
660
|
+
lineNumber: t.lineNumber,
|
|
661
|
+
file: t.file,
|
|
662
|
+
}));
|
|
663
|
+
}
|
|
228
664
|
/**
|
|
229
665
|
* Read, parse and (unless dry-run) create pm items for every TODO found across
|
|
230
666
|
* the given files. Single code path shared by the command and the importer.
|
|
@@ -243,11 +679,18 @@ function runTodoImport(opts) {
|
|
|
243
679
|
const exitCode = /ENOENT|no such file/i.test(msg) ? EXIT_CODE.NOT_FOUND : EXIT_CODE.GENERIC_FAILURE;
|
|
244
680
|
throw new CommandError(`Failed to read file ${file}: ${msg}`, exitCode);
|
|
245
681
|
}
|
|
246
|
-
let todos =
|
|
247
|
-
if (opts.section)
|
|
248
|
-
|
|
682
|
+
let todos = parseFileToNormalized(md, file, opts.format);
|
|
683
|
+
if (opts.section && opts.format === "markdown") {
|
|
684
|
+
const want = opts.section.trim().toLowerCase();
|
|
685
|
+
todos = todos.filter((t) => (t.section ?? "").toLowerCase() === want);
|
|
686
|
+
}
|
|
249
687
|
for (const todo of todos) {
|
|
250
688
|
const tags = [...opts.extraTags];
|
|
689
|
+
// Per-item tags (todo.txt +project/@context) carry through.
|
|
690
|
+
for (const t of todo.tags) {
|
|
691
|
+
if (t && !tags.includes(t))
|
|
692
|
+
tags.push(t);
|
|
693
|
+
}
|
|
251
694
|
if (opts.sectionTags && todo.section) {
|
|
252
695
|
const tag = sectionToTag(todo.section);
|
|
253
696
|
if (tag && !tags.includes(tag))
|
|
@@ -259,7 +702,7 @@ function runTodoImport(opts) {
|
|
|
259
702
|
: todo.priority !== undefined
|
|
260
703
|
? String(todo.priority)
|
|
261
704
|
: undefined;
|
|
262
|
-
const status = mapStatusToPm(todo.checked, opts.closedAs);
|
|
705
|
+
const status = mapStatusToPm(todo.checked, opts.closedAs, opts.openAs ?? "open");
|
|
263
706
|
if (opts.dryRun) {
|
|
264
707
|
previews.push({
|
|
265
708
|
checked: todo.checked,
|
|
@@ -267,6 +710,7 @@ function runTodoImport(opts) {
|
|
|
267
710
|
status,
|
|
268
711
|
priority,
|
|
269
712
|
tags,
|
|
713
|
+
deadline: todo.deadline,
|
|
270
714
|
section: todo.section,
|
|
271
715
|
indent: todo.indent,
|
|
272
716
|
file: todo.file,
|
|
@@ -274,7 +718,8 @@ function runTodoImport(opts) {
|
|
|
274
718
|
});
|
|
275
719
|
console.error(` [dry-run] ${todo.checked ? "[x]" : "[ ]"} ${" ".repeat(Math.floor(todo.indent / 2))}${todo.text}` +
|
|
276
720
|
(tags.length ? ` (tags: ${tags.join(",")})` : "") +
|
|
277
|
-
(priority !== undefined ? ` (p${priority})` : "")
|
|
721
|
+
(priority !== undefined ? ` (p${priority})` : "") +
|
|
722
|
+
(todo.deadline ? ` (due: ${todo.deadline})` : ""));
|
|
278
723
|
imported++;
|
|
279
724
|
continue;
|
|
280
725
|
}
|
|
@@ -291,6 +736,8 @@ function runTodoImport(opts) {
|
|
|
291
736
|
spawnArgs.push("--priority", priority);
|
|
292
737
|
if (tags.length > 0)
|
|
293
738
|
spawnArgs.push("--tags", tags.join(","));
|
|
739
|
+
if (todo.deadline)
|
|
740
|
+
spawnArgs.push("--deadline", todo.deadline);
|
|
294
741
|
const result = spawnSync("pm", spawnArgs, { encoding: "utf-8" });
|
|
295
742
|
if (result.status !== 0) {
|
|
296
743
|
throw new Error(result.stderr || "pm create failed");
|
|
@@ -306,7 +753,8 @@ function runTodoImport(opts) {
|
|
|
306
753
|
}
|
|
307
754
|
return { imported, skipped, previews: opts.dryRun ? previews : undefined };
|
|
308
755
|
}
|
|
309
|
-
|
|
756
|
+
/** Fetch + filter pm items via `pm list-all --json`. */
|
|
757
|
+
function fetchPmItems(opts) {
|
|
310
758
|
const result = spawnSync("pm", ["--path", opts.pmRoot, "list-all", "--json"], { encoding: "utf-8" });
|
|
311
759
|
if (result.status !== 0) {
|
|
312
760
|
throw new CommandError(result.stderr || "pm list-all failed");
|
|
@@ -316,13 +764,21 @@ function buildTodoMarkdown(opts) {
|
|
|
316
764
|
items = items.filter((i) => i.status === opts.statusFilter);
|
|
317
765
|
if (opts.typeFilter)
|
|
318
766
|
items = items.filter((i) => i.type === opts.typeFilter);
|
|
319
|
-
if (
|
|
320
|
-
|
|
321
|
-
|
|
767
|
+
if (opts.sort)
|
|
768
|
+
items = sortItems(items, opts.sort);
|
|
769
|
+
return items;
|
|
770
|
+
}
|
|
771
|
+
/**
|
|
772
|
+
* Render the default-markdown TODO export. Kept byte-identical to the original
|
|
773
|
+
* (the `# TODO` header, export-timestamp comment, `## Open`/`## Done` sections,
|
|
774
|
+
* and the `[type]` annotation on open items) so existing behaviour is stable.
|
|
775
|
+
* This is the path used when no `--group-by` (or `--group-by status`) is set.
|
|
776
|
+
*/
|
|
777
|
+
export function renderDefaultMarkdown(items, nowIso) {
|
|
322
778
|
const lines = [
|
|
323
779
|
"# TODO",
|
|
324
780
|
"",
|
|
325
|
-
`<!-- Exported from pm-cli on ${
|
|
781
|
+
`<!-- Exported from pm-cli on ${nowIso} -->`,
|
|
326
782
|
"",
|
|
327
783
|
];
|
|
328
784
|
const openItems = items.filter((i) => i.status === "open" || i.status === "in_progress" || i.status === "blocked" || i.status === "draft");
|
|
@@ -343,14 +799,58 @@ function buildTodoMarkdown(opts) {
|
|
|
343
799
|
}
|
|
344
800
|
lines.push("");
|
|
345
801
|
}
|
|
346
|
-
return
|
|
802
|
+
return lines.join("\n");
|
|
803
|
+
}
|
|
804
|
+
/**
|
|
805
|
+
* Render grouped markdown for `--group-by sprint|type` (or an explicit
|
|
806
|
+
* `--group-by status`). Each group is a `## <heading>` section of checkboxes
|
|
807
|
+
* carrying the pm id comment for round-trips.
|
|
808
|
+
*/
|
|
809
|
+
export function renderGroupedMarkdown(items, groupBy, nowIso) {
|
|
810
|
+
const lines = [
|
|
811
|
+
"# TODO",
|
|
812
|
+
"",
|
|
813
|
+
`<!-- Exported from pm-cli on ${nowIso} -->`,
|
|
814
|
+
"",
|
|
815
|
+
];
|
|
816
|
+
for (const group of groupItems(items, groupBy)) {
|
|
817
|
+
lines.push(`## ${group.heading}`, "");
|
|
818
|
+
for (const item of group.items) {
|
|
819
|
+
const check = mapPmStatusToChecked(item.status) ? "x" : " ";
|
|
820
|
+
lines.push(`- [${check}] ${item.title} <!-- ${item.id} -->`);
|
|
821
|
+
}
|
|
822
|
+
lines.push("");
|
|
823
|
+
}
|
|
824
|
+
return lines.join("\n");
|
|
825
|
+
}
|
|
826
|
+
/**
|
|
827
|
+
* Build export output for any supported format. Returns `count: 0` (empty
|
|
828
|
+
* string) when there are no items, matching the original contract.
|
|
829
|
+
*/
|
|
830
|
+
function buildTodoMarkdown(opts) {
|
|
831
|
+
const items = fetchPmItems(opts);
|
|
832
|
+
if (items.length === 0)
|
|
833
|
+
return { markdown: "", count: 0 };
|
|
834
|
+
const format = opts.format ?? "markdown";
|
|
835
|
+
const groupBy = opts.groupBy;
|
|
836
|
+
if (format === "todotxt") {
|
|
837
|
+
return { markdown: serializeTodoTxt(items), count: items.length };
|
|
838
|
+
}
|
|
839
|
+
if (format === "tasklist") {
|
|
840
|
+
return { markdown: renderTaskList(items, groupBy ?? "status"), count: items.length };
|
|
841
|
+
}
|
|
842
|
+
// markdown
|
|
843
|
+
if (groupBy && groupBy !== "status") {
|
|
844
|
+
return { markdown: renderGroupedMarkdown(items, groupBy, new Date().toISOString()), count: items.length };
|
|
845
|
+
}
|
|
846
|
+
return { markdown: renderDefaultMarkdown(items, new Date().toISOString()), count: items.length };
|
|
347
847
|
}
|
|
348
848
|
// ---------------------------------------------------------------------------
|
|
349
849
|
// Extension
|
|
350
850
|
// ---------------------------------------------------------------------------
|
|
351
851
|
export default defineExtension({
|
|
352
852
|
name: "pm-todos",
|
|
353
|
-
version: "2026.6.
|
|
853
|
+
version: "2026.6.4",
|
|
354
854
|
activate(api) {
|
|
355
855
|
// -----------------------------------------------------------------------
|
|
356
856
|
// Command: pm todos import <file>
|
|
@@ -369,25 +869,31 @@ export default defineExtension({
|
|
|
369
869
|
"pm todos import --glob 'docs/**/*.md'",
|
|
370
870
|
"pm todos import TODO.md --section Backlog",
|
|
371
871
|
"pm todos import TODO.md --closed-as canceled",
|
|
872
|
+
"pm todos import TODO.md --status in_progress",
|
|
873
|
+
"pm todos import todo.txt --format todotxt",
|
|
372
874
|
],
|
|
373
875
|
flags: [
|
|
374
876
|
{ long: "--dry-run", description: "Preview without writing" },
|
|
877
|
+
{ long: "--format", value_name: "fmt", description: "Source format: markdown (default) | todotxt" },
|
|
375
878
|
{ long: "--type", value_name: "type", description: "Item type for imported items (default: Task)" },
|
|
376
879
|
{ long: "--priority", value_name: "n", description: "Priority for imported items (0-4); overrides inferred markers" },
|
|
377
880
|
{ long: "--tags", value_name: "tags", description: "Comma-separated tags to apply to all items" },
|
|
378
881
|
{ long: "--glob", value_name: "pattern", description: "Import every markdown file matching this glob (e.g. 'docs/**/*.md')" },
|
|
379
882
|
{ long: "--section", value_name: "name", description: "Import only items under this ## section heading" },
|
|
380
883
|
{ long: "--closed-as", value_name: "status", description: "Status to assign checked items (default: closed)" },
|
|
884
|
+
{ long: "--status", value_name: "status", description: "Status to assign open (unchecked) items (default: open)" },
|
|
381
885
|
{ long: "--no-section-tags", description: "Do not derive tags from section headings" },
|
|
382
886
|
],
|
|
383
887
|
async run(ctx) {
|
|
384
888
|
const dryRun = readBoolOption(ctx.options, "dry-run", "dryRun");
|
|
889
|
+
const format = readImportFormat(ctx.options);
|
|
385
890
|
const itemType = ctx.options["type"] || "Task";
|
|
386
891
|
const priority = ctx.options["priority"];
|
|
387
892
|
const tagsOpt = ctx.options["tags"];
|
|
388
893
|
const glob = readStringOption(ctx.options, "glob");
|
|
389
894
|
const section = readStringOption(ctx.options, "section");
|
|
390
895
|
const closedAs = readStringOption(ctx.options, "closed-as", "closedAs") ?? "closed";
|
|
896
|
+
const openAs = readStringOption(ctx.options, "status");
|
|
391
897
|
// `--no-section-tags` arrives as sectionTags=false; default on.
|
|
392
898
|
const sectionTags = ctx.options["sectionTags"] !== false && ctx.options["section-tags"] !== false;
|
|
393
899
|
let files;
|
|
@@ -410,12 +916,14 @@ export default defineExtension({
|
|
|
410
916
|
files,
|
|
411
917
|
itemType,
|
|
412
918
|
closedAs,
|
|
919
|
+
openAs,
|
|
413
920
|
priority,
|
|
414
921
|
extraTags,
|
|
415
922
|
section,
|
|
416
923
|
sectionTags,
|
|
417
924
|
dryRun,
|
|
418
925
|
pmRoot: ctx.pm_root,
|
|
926
|
+
format,
|
|
419
927
|
});
|
|
420
928
|
if (imported === 0 && skipped === 0) {
|
|
421
929
|
console.error("No TODO items found.");
|
|
@@ -434,7 +942,7 @@ export default defineExtension({
|
|
|
434
942
|
// -----------------------------------------------------------------------
|
|
435
943
|
api.registerCommand({
|
|
436
944
|
name: "todos export",
|
|
437
|
-
description: "Export pm items as a markdown TODO list. " +
|
|
945
|
+
description: "Export pm items as a markdown TODO list, todo.txt, or GitHub task list. " +
|
|
438
946
|
"Open items become - [ ], closed/canceled items become - [x].",
|
|
439
947
|
intent: "export pm items to markdown TODO format",
|
|
440
948
|
examples: [
|
|
@@ -442,19 +950,33 @@ export default defineExtension({
|
|
|
442
950
|
"pm todos export --output TODO.md",
|
|
443
951
|
"pm todos export --status open --output backlog.md",
|
|
444
952
|
"pm todos export --type Task",
|
|
953
|
+
"pm todos export --format todotxt --output todo.txt",
|
|
954
|
+
"pm todos export --format tasklist --group-by sprint",
|
|
955
|
+
"pm todos export --group-by type",
|
|
956
|
+
"pm todos export --sort priority",
|
|
957
|
+
"pm todos export --sort deadline --status open",
|
|
445
958
|
],
|
|
446
959
|
flags: [
|
|
447
|
-
{ long: "--output", value_name: "file", description: "Write
|
|
960
|
+
{ long: "--output", value_name: "file", description: "Write output to file (default: stdout)" },
|
|
961
|
+
{ long: "--format", value_name: "fmt", description: "Output format: markdown (default) | todotxt | tasklist" },
|
|
962
|
+
{ long: "--group-by", value_name: "field", description: "Section markdown/tasklist by status (default) | sprint | type" },
|
|
963
|
+
{ long: "--sort", value_name: "key", description: "Sort items by priority | deadline | title (preserves pm order if unset)" },
|
|
448
964
|
{ long: "--status", value_name: "status", description: "Filter by status" },
|
|
449
965
|
{ long: "--type", value_name: "type", description: "Filter by item type" },
|
|
450
966
|
],
|
|
451
967
|
async run(ctx) {
|
|
452
968
|
const outputPath = ctx.options["output"];
|
|
969
|
+
const format = readExportFormat(ctx.options);
|
|
970
|
+
const groupBy = readGroupBy(ctx.options);
|
|
971
|
+
const sort = readSort(ctx.options);
|
|
453
972
|
console.error("Fetching pm items…");
|
|
454
973
|
const { markdown, count } = buildTodoMarkdown({
|
|
455
974
|
statusFilter: ctx.options["status"],
|
|
456
975
|
typeFilter: ctx.options["type"],
|
|
457
976
|
pmRoot: ctx.pm_root,
|
|
977
|
+
format,
|
|
978
|
+
groupBy,
|
|
979
|
+
sort,
|
|
458
980
|
});
|
|
459
981
|
if (count === 0) {
|
|
460
982
|
console.error("No items found.");
|
|
@@ -471,6 +993,62 @@ export default defineExtension({
|
|
|
471
993
|
},
|
|
472
994
|
});
|
|
473
995
|
// -----------------------------------------------------------------------
|
|
996
|
+
// Command: pm todos validate <file>
|
|
997
|
+
// -----------------------------------------------------------------------
|
|
998
|
+
api.registerCommand({
|
|
999
|
+
name: "todos validate",
|
|
1000
|
+
description: "Parse a TODO file and report problems (unparseable checkbox lines, " +
|
|
1001
|
+
"out-of-range priorities, malformed due dates) WITHOUT importing. " +
|
|
1002
|
+
"Exits non-zero when structural errors are found.",
|
|
1003
|
+
intent: "validate a markdown or todo.txt TODO file without importing",
|
|
1004
|
+
examples: [
|
|
1005
|
+
"pm todos validate TODO.md",
|
|
1006
|
+
"pm todos validate todo.txt --format todotxt",
|
|
1007
|
+
"pm todos validate TODO.md --json",
|
|
1008
|
+
],
|
|
1009
|
+
flags: [
|
|
1010
|
+
{ long: "--format", value_name: "fmt", description: "File format: markdown (default) | todotxt" },
|
|
1011
|
+
{ long: "--json", description: "Emit a JSON report" },
|
|
1012
|
+
],
|
|
1013
|
+
async run(ctx) {
|
|
1014
|
+
const format = readImportFormat(ctx.options);
|
|
1015
|
+
const asJson = readBoolOption(ctx.options, "json");
|
|
1016
|
+
const filePath = ctx.args[0];
|
|
1017
|
+
if (!filePath) {
|
|
1018
|
+
throw new CommandError("Usage: pm todos validate <file> [--format markdown|todotxt] [--json]", EXIT_CODE.USAGE);
|
|
1019
|
+
}
|
|
1020
|
+
let content;
|
|
1021
|
+
try {
|
|
1022
|
+
content = readFileSync(resolve(filePath), "utf-8");
|
|
1023
|
+
}
|
|
1024
|
+
catch (err) {
|
|
1025
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
1026
|
+
const exitCode = /ENOENT|no such file/i.test(msg) ? EXIT_CODE.NOT_FOUND : EXIT_CODE.GENERIC_FAILURE;
|
|
1027
|
+
throw new CommandError(`Failed to read file ${filePath}: ${msg}`, exitCode);
|
|
1028
|
+
}
|
|
1029
|
+
const { issues, taskCount } = validateTodoFile(content, format);
|
|
1030
|
+
const errors = issues.filter((i) => i.severity === "error");
|
|
1031
|
+
const warnings = issues.filter((i) => i.severity === "warning");
|
|
1032
|
+
// Always echo a human-readable summary to stderr (stderr survives a
|
|
1033
|
+
// throw, unlike stdout, so this stays visible even when we exit non-zero
|
|
1034
|
+
// on structural errors). Under --json the full report — including the
|
|
1035
|
+
// structured `issues` array — is returned and rendered by the runtime as
|
|
1036
|
+
// JSON on stdout; for the error case the non-zero exit + this stderr
|
|
1037
|
+
// summary signal invalidity (the runtime discards a throwing handler's
|
|
1038
|
+
// stdout, so we deliberately do not duplicate JSON there).
|
|
1039
|
+
for (const issue of issues) {
|
|
1040
|
+
const where = issue.line > 0 ? `line ${issue.line}` : "file";
|
|
1041
|
+
console.error(` [${issue.severity}] ${where}: ${issue.message}` + (issue.text ? ` >> ${issue.text}` : ""));
|
|
1042
|
+
}
|
|
1043
|
+
console.error(`Validated ${taskCount} task(s): ${errors.length} error(s), ${warnings.length} warning(s).`);
|
|
1044
|
+
if (errors.length > 0) {
|
|
1045
|
+
throw new CommandError(`${errors.length} structural error(s) found in ${filePath}`, EXIT_CODE.GENERIC_FAILURE);
|
|
1046
|
+
}
|
|
1047
|
+
const report = { file: resolve(filePath), format, taskCount, errors: errors.length, warnings: warnings.length };
|
|
1048
|
+
return asJson ? { ...report, issues } : report;
|
|
1049
|
+
},
|
|
1050
|
+
});
|
|
1051
|
+
// -----------------------------------------------------------------------
|
|
474
1052
|
// Importer: todos (native `pm import todos` pipeline)
|
|
475
1053
|
//
|
|
476
1054
|
// Driven by options (config-driven import). Accepts the same knobs as the
|
|
@@ -507,21 +1085,25 @@ export default defineExtension({
|
|
|
507
1085
|
}
|
|
508
1086
|
const itemType = readStringOption(ctx.options, "type") ?? "Task";
|
|
509
1087
|
const closedAs = readStringOption(ctx.options, "closed-as", "closedAs") ?? "closed";
|
|
1088
|
+
const openAs = readStringOption(ctx.options, "status");
|
|
510
1089
|
const priority = readStringOption(ctx.options, "priority");
|
|
511
1090
|
const section = readStringOption(ctx.options, "section");
|
|
512
1091
|
const extraTags = (readStringOption(ctx.options, "tags") ?? "")
|
|
513
1092
|
.split(",").map((t) => t.trim()).filter(Boolean);
|
|
514
1093
|
const sectionTags = ctx.options["sectionTags"] !== false && ctx.options["section-tags"] !== false;
|
|
1094
|
+
const format = readImportFormat(ctx.options);
|
|
515
1095
|
const { imported, skipped, previews } = runTodoImport({
|
|
516
1096
|
files,
|
|
517
1097
|
itemType,
|
|
518
1098
|
closedAs,
|
|
1099
|
+
openAs,
|
|
519
1100
|
priority,
|
|
520
1101
|
extraTags,
|
|
521
1102
|
section,
|
|
522
1103
|
sectionTags,
|
|
523
1104
|
dryRun,
|
|
524
1105
|
pmRoot: ctx.pm_root,
|
|
1106
|
+
format,
|
|
525
1107
|
});
|
|
526
1108
|
if (imported === 0 && skipped === 0) {
|
|
527
1109
|
console.error("No TODO items found.");
|
|
@@ -546,6 +1128,9 @@ export default defineExtension({
|
|
|
546
1128
|
statusFilter: readStringOption(ctx.options, "status"),
|
|
547
1129
|
typeFilter: readStringOption(ctx.options, "type"),
|
|
548
1130
|
pmRoot: ctx.pm_root,
|
|
1131
|
+
format: readExportFormat(ctx.options),
|
|
1132
|
+
groupBy: readGroupBy(ctx.options),
|
|
1133
|
+
sort: readSort(ctx.options),
|
|
549
1134
|
});
|
|
550
1135
|
if (count === 0) {
|
|
551
1136
|
console.error("todos: no items found.");
|
|
@@ -580,6 +1165,7 @@ export default defineExtension({
|
|
|
580
1165
|
sectionTags: false,
|
|
581
1166
|
dryRun: false,
|
|
582
1167
|
pmRoot: ctx.pm_root,
|
|
1168
|
+
format: readImportFormat(ctx.options),
|
|
583
1169
|
});
|
|
584
1170
|
console.error(`todos-import: done — imported ${imported}, skipped ${skipped}.`);
|
|
585
1171
|
});
|
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.6.
|
|
3
|
+
"version": "2026.6.4",
|
|
4
4
|
"description": "Markdown TODO round-trip extension for pm-cli",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
"release:check": "npm run typecheck && npm run build && npm run audit:prod && npm run pack:dry-run && npm run changelog:check"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"@unbrained/pm-cli": ">=2026.5.
|
|
37
|
+
"@unbrained/pm-cli": ">=2026.5.31"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^25.9.1",
|
|
41
41
|
"@unbrained/pm-cli": "^2026.5.31",
|
|
42
|
-
"pm-changelog": "^2026.
|
|
42
|
+
"pm-changelog": "^2026.6.2",
|
|
43
43
|
"typescript": "^6.0.3"
|
|
44
44
|
},
|
|
45
45
|
"keywords": [
|