openplanr 1.2.5 → 1.2.7
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/README.md +20 -0
- package/dist/cli/commands/context.d.ts +6 -0
- package/dist/cli/commands/context.d.ts.map +1 -0
- package/dist/cli/commands/context.js +45 -0
- package/dist/cli/commands/context.js.map +1 -0
- package/dist/cli/commands/export.d.ts.map +1 -1
- package/dist/cli/commands/export.js +8 -0
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/report-linter.d.ts +6 -0
- package/dist/cli/commands/report-linter.d.ts.map +1 -0
- package/dist/cli/commands/report-linter.js +61 -0
- package/dist/cli/commands/report-linter.js.map +1 -0
- package/dist/cli/commands/report.d.ts +6 -0
- package/dist/cli/commands/report.d.ts.map +1 -0
- package/dist/cli/commands/report.js +150 -0
- package/dist/cli/commands/report.js.map +1 -0
- package/dist/cli/commands/story.d.ts.map +1 -1
- package/dist/cli/commands/story.js +31 -0
- package/dist/cli/commands/story.js.map +1 -1
- package/dist/cli/commands/voice.d.ts +6 -0
- package/dist/cli/commands/voice.d.ts.map +1 -0
- package/dist/cli/commands/voice.js +64 -0
- package/dist/cli/commands/voice.js.map +1 -0
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/models/schema.d.ts +63 -0
- package/dist/models/schema.d.ts.map +1 -1
- package/dist/models/schema.js +31 -0
- package/dist/models/schema.js.map +1 -1
- package/dist/models/types.d.ts +160 -0
- package/dist/models/types.d.ts.map +1 -1
- package/dist/services/context-pack-service.d.ts +12 -0
- package/dist/services/context-pack-service.d.ts.map +1 -0
- package/dist/services/context-pack-service.js +155 -0
- package/dist/services/context-pack-service.js.map +1 -0
- package/dist/services/distribution-service.d.ts +18 -0
- package/dist/services/distribution-service.d.ts.map +1 -0
- package/dist/services/distribution-service.js +104 -0
- package/dist/services/distribution-service.js.map +1 -0
- package/dist/services/evidence-service.d.ts +17 -0
- package/dist/services/evidence-service.d.ts.map +1 -0
- package/dist/services/evidence-service.js +85 -0
- package/dist/services/evidence-service.js.map +1 -0
- package/dist/services/github-service.d.ts +28 -1
- package/dist/services/github-service.d.ts.map +1 -1
- package/dist/services/github-service.js +95 -0
- package/dist/services/github-service.js.map +1 -1
- package/dist/services/report-linter-service.d.ts +10 -0
- package/dist/services/report-linter-service.d.ts.map +1 -0
- package/dist/services/report-linter-service.js +95 -0
- package/dist/services/report-linter-service.js.map +1 -0
- package/dist/services/report-service.d.ts +37 -0
- package/dist/services/report-service.d.ts.map +1 -0
- package/dist/services/report-service.js +173 -0
- package/dist/services/report-service.js.map +1 -0
- package/dist/services/standup-parser.d.ts +21 -0
- package/dist/services/standup-parser.d.ts.map +1 -0
- package/dist/services/standup-parser.js +104 -0
- package/dist/services/standup-parser.js.map +1 -0
- package/dist/services/story-standup-service.d.ts +7 -0
- package/dist/services/story-standup-service.d.ts.map +1 -0
- package/dist/services/story-standup-service.js +27 -0
- package/dist/services/story-standup-service.js.map +1 -0
- package/dist/services/template-service.d.ts.map +1 -1
- package/dist/services/template-service.js +1 -0
- package/dist/services/template-service.js.map +1 -1
- package/dist/services/voice-service.d.ts +12 -0
- package/dist/services/voice-service.d.ts.map +1 -0
- package/dist/services/voice-service.js +42 -0
- package/dist/services/voice-service.js.map +1 -0
- package/dist/templates/export/planning-report.html.hbs +10 -0
- package/dist/templates/export/planning-report.md.hbs +11 -0
- package/dist/templates/linter/linter-config.json.hbs +13 -0
- package/dist/templates/reports/executive.md.hbs +28 -0
- package/dist/templates/reports/release-notes.md.hbs +37 -0
- package/dist/templates/reports/retrospective.md.hbs +36 -0
- package/dist/templates/reports/sprint.md.hbs +91 -0
- package/dist/templates/reports/standup.md.hbs +27 -0
- package/dist/templates/reports/weekly.md.hbs +42 -0
- package/dist/templates/voice/standup.md.hbs +20 -0
- package/dist/utils/markdown.d.ts.map +1 -1
- package/dist/utils/markdown.js +11 -5
- package/dist/utils/markdown.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Sprint report — {{projectName}}
|
|
2
|
+
|
|
3
|
+
> Generated {{generatedAt}} · Type: **{{reportType}}** · Lookback: **{{daysLookback}}** days
|
|
4
|
+
|
|
5
|
+
{{#if branding.orgName}}
|
|
6
|
+
_Organization: {{branding.orgName}}_
|
|
7
|
+
{{/if}}
|
|
8
|
+
|
|
9
|
+
{{#if placeholders.noSprint}}
|
|
10
|
+
> **Note:** No sprint was selected (`--sprint`). Add `--sprint SPRINT-001` for sprint-scoped sections.
|
|
11
|
+
{{/if}}
|
|
12
|
+
|
|
13
|
+
## Sprint snapshot
|
|
14
|
+
|
|
15
|
+
{{#if sprint}}
|
|
16
|
+
| Field | Value |
|
|
17
|
+
|-------|-------|
|
|
18
|
+
| Sprint | {{sprint.sprintId}} |
|
|
19
|
+
| Name | {{sprint.name}} |
|
|
20
|
+
| Status | {{sprint.status}} |
|
|
21
|
+
| Window | {{sprint.startDate}} → {{sprint.endDate}} |
|
|
22
|
+
|
|
23
|
+
{{#if sprint.goals.length}}
|
|
24
|
+
**Goals**
|
|
25
|
+
{{#each sprint.goals}}
|
|
26
|
+
- {{this}}
|
|
27
|
+
{{/each}}
|
|
28
|
+
{{/if}}
|
|
29
|
+
|
|
30
|
+
**Tasks in sprint:** {{#if sprint.taskIds.length}}{{join sprint.taskIds ", "}}{{else}}_none linked in frontmatter_{{/if}}
|
|
31
|
+
|
|
32
|
+
{{else}}
|
|
33
|
+
_No sprint context._
|
|
34
|
+
{{/if}}
|
|
35
|
+
|
|
36
|
+
## Planning artifacts (summary)
|
|
37
|
+
|
|
38
|
+
- **Epics:** {{length artifacts.epics}}
|
|
39
|
+
- **Features:** {{length artifacts.features}}
|
|
40
|
+
- **Stories:** {{length artifacts.stories}}
|
|
41
|
+
- **Task lists:** {{length artifacts.tasks}}
|
|
42
|
+
|
|
43
|
+
**Stories**
|
|
44
|
+
|
|
45
|
+
{{#each artifacts.stories}}
|
|
46
|
+
- `{{this.id}}` — {{this.title}} — _{{this.status}}_
|
|
47
|
+
{{/each}}
|
|
48
|
+
|
|
49
|
+
## GitHub activity
|
|
50
|
+
|
|
51
|
+
{{#if placeholders.noGitHub}}
|
|
52
|
+
_No GitHub data (disabled or unavailable)._
|
|
53
|
+
{{else}}
|
|
54
|
+
{{#if github.warning}}
|
|
55
|
+
> **Warning:** {{github.warning}}
|
|
56
|
+
{{/if}}
|
|
57
|
+
|
|
58
|
+
### Recent commits
|
|
59
|
+
|
|
60
|
+
{{#if github.commits.length}}
|
|
61
|
+
{{#each github.commits}}
|
|
62
|
+
- [{{this.shortSha}}]({{this.url}}) — {{this.message}} — _{{this.authorLogin}}_
|
|
63
|
+
{{/each}}
|
|
64
|
+
{{else}}
|
|
65
|
+
_No commits in window._
|
|
66
|
+
{{/if}}
|
|
67
|
+
|
|
68
|
+
### Pull requests
|
|
69
|
+
|
|
70
|
+
{{#if github.pullRequests.length}}
|
|
71
|
+
{{#each github.pullRequests}}
|
|
72
|
+
- [PR #{{this.number}}]({{this.url}}) — {{this.title}} — _{{this.state}} · {{this.authorLogin}}_
|
|
73
|
+
{{/each}}
|
|
74
|
+
{{else}}
|
|
75
|
+
_No pull requests in window._
|
|
76
|
+
{{/if}}
|
|
77
|
+
{{/if}}
|
|
78
|
+
|
|
79
|
+
## Evidence appendix
|
|
80
|
+
|
|
81
|
+
{{#each evidence}}
|
|
82
|
+
- **{{this.kind}}** — {{this.label}}{{#if this.url}} — {{this.url}}{{/if}}{{#if this.detail}} — _{{this.detail}}_{{/if}}
|
|
83
|
+
{{/each}}
|
|
84
|
+
|
|
85
|
+
{{#if branding.customSections}}
|
|
86
|
+
{{#each branding.customSections}}
|
|
87
|
+
## {{@key}}
|
|
88
|
+
|
|
89
|
+
{{{this}}}
|
|
90
|
+
{{/each}}
|
|
91
|
+
{{/if}}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Standup — {{projectName}}
|
|
2
|
+
|
|
3
|
+
> {{generatedAt}}
|
|
4
|
+
|
|
5
|
+
## Yesterday
|
|
6
|
+
|
|
7
|
+
{{#if github.commits.length}}
|
|
8
|
+
{{#each github.commits}}
|
|
9
|
+
- [{{this.shortSha}}]({{this.url}}) {{this.message}}
|
|
10
|
+
{{/each}}
|
|
11
|
+
{{else}}
|
|
12
|
+
- _No commits in lookback — describe what you finished manually._
|
|
13
|
+
{{/if}}
|
|
14
|
+
|
|
15
|
+
## Today
|
|
16
|
+
|
|
17
|
+
- _Planned work — link tasks `TASK-___` or stories `US-___`._
|
|
18
|
+
|
|
19
|
+
## Blockers
|
|
20
|
+
|
|
21
|
+
- _None / list with owner_
|
|
22
|
+
|
|
23
|
+
## Evidence
|
|
24
|
+
|
|
25
|
+
{{#each evidence}}
|
|
26
|
+
- **{{this.kind}}** — {{this.label}}{{#if this.url}} — {{this.url}}{{/if}}
|
|
27
|
+
{{/each}}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Weekly stakeholder update — {{projectName}}
|
|
2
|
+
|
|
3
|
+
> {{generatedAt}} · lookback {{daysLookback}}d
|
|
4
|
+
|
|
5
|
+
{{#if branding.logoUrl}}
|
|
6
|
+

|
|
7
|
+
{{/if}}
|
|
8
|
+
|
|
9
|
+
## Wins
|
|
10
|
+
|
|
11
|
+
_Edit bullets — each should link to a PR, issue, or artifact._
|
|
12
|
+
|
|
13
|
+
{{#if github.commits.length}}
|
|
14
|
+
- Shipped commits: {{length github.commits}} in the last {{daysLookback}} days (see Evidence).
|
|
15
|
+
{{else}}
|
|
16
|
+
- _No commit data — add links manually._
|
|
17
|
+
{{/if}}
|
|
18
|
+
|
|
19
|
+
## Risks
|
|
20
|
+
|
|
21
|
+
{{#if placeholders.noStoriesCompleted}}
|
|
22
|
+
- **Planning:** No stories marked done — confirm whether delivery is blocked or statuses need updating.
|
|
23
|
+
{{/if}}
|
|
24
|
+
- _Add concrete risks with owners and dates._
|
|
25
|
+
|
|
26
|
+
## Ask
|
|
27
|
+
|
|
28
|
+
- _One clear request to leadership (resource, decision, or scope)._
|
|
29
|
+
|
|
30
|
+
## Evidence
|
|
31
|
+
|
|
32
|
+
{{#each evidence}}
|
|
33
|
+
- **{{this.kind}}** — {{this.label}}{{#if this.url}} — [link]({{this.url}}){{/if}}
|
|
34
|
+
{{/each}}
|
|
35
|
+
|
|
36
|
+
{{#if branding.customSections}}
|
|
37
|
+
{{#each branding.customSections}}
|
|
38
|
+
## {{@key}}
|
|
39
|
+
|
|
40
|
+
{{{this}}}
|
|
41
|
+
{{/each}}
|
|
42
|
+
{{/if}}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Voice standup workflow — {{projectName}}
|
|
2
|
+
|
|
3
|
+
**Date:** {{date}}
|
|
4
|
+
|
|
5
|
+
## Suggested commands
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Transcript file → markdown on stdout
|
|
9
|
+
planr voice standup --file ./transcript.txt
|
|
10
|
+
|
|
11
|
+
# Save, lint, and attach to a story
|
|
12
|
+
planr voice standup --file ./transcript.txt --write .planr/last-standup.md --lint --append-story US-028
|
|
13
|
+
|
|
14
|
+
# Same as above via story command
|
|
15
|
+
planr story standup --story US-028 --file ./transcript.txt --lint
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Microphone capture
|
|
19
|
+
|
|
20
|
+
Live mic capture is not bundled yet. Use OS dictation, Whisper, or another STT tool, then pass the text file with `--file` or pipe stdin.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAWzD;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG5F"}
|
package/dist/utils/markdown.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import YAML from 'yaml';
|
|
2
|
+
const FRONTMATTER_REGEX = /^---[^\S\r\n]*\r?\n([\s\S]*?)\r?\n---[^\S\r\n]*\r?\n?([\s\S]*)$/;
|
|
2
3
|
export function parseMarkdown(raw) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const match = FRONTMATTER_REGEX.exec(raw);
|
|
5
|
+
if (!match) {
|
|
6
|
+
return { data: {}, content: raw };
|
|
7
|
+
}
|
|
8
|
+
const yamlStr = match[1];
|
|
9
|
+
const content = match[2];
|
|
10
|
+
const data = YAML.parse(yamlStr) ?? {};
|
|
6
11
|
return { data: data, content };
|
|
7
12
|
}
|
|
8
13
|
export function toMarkdownWithFrontmatter(data, content) {
|
|
9
|
-
|
|
14
|
+
const yamlStr = YAML.stringify(data).trimEnd();
|
|
15
|
+
return `---\n${yamlStr}\n---\n${content}`;
|
|
10
16
|
}
|
|
11
17
|
//# sourceMappingURL=markdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB,MAAM,iBAAiB,GAAG,iEAAiE,CAAC;AAE5F,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,EAAyB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,EAAE,IAAI,EAAE,IAA2B,EAAE,OAAO,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAyB,EAAE,OAAe;IAClF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/C,OAAO,QAAQ,OAAO,UAAU,OAAO,EAAE,CAAC;AAC5C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openplanr",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.7",
|
|
4
4
|
"description": "AI-powered planning CLI — backlog, sprints, task templates, estimation, GitHub sync, and AI agent rules for Cursor, Claude Code, and Codex",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cli/index.js",
|
|
@@ -76,9 +76,9 @@
|
|
|
76
76
|
"@napi-rs/keyring": "^1.2.0",
|
|
77
77
|
"chalk": "^5.3.0",
|
|
78
78
|
"commander": "^14.0.3",
|
|
79
|
-
"gray-matter": "^4.0.3",
|
|
80
79
|
"handlebars": "^4.7.9",
|
|
81
80
|
"openai": "^6.33.0",
|
|
81
|
+
"yaml": "^2.8.3",
|
|
82
82
|
"zod": "^4.3.6"
|
|
83
83
|
},
|
|
84
84
|
"devDependencies": {
|