openplanr 1.0.0 → 1.1.0
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 +9 -7
- package/dist/ai/validation/index.d.ts +0 -1
- package/dist/ai/validation/index.d.ts.map +1 -1
- package/dist/ai/validation/index.js +0 -1
- package/dist/ai/validation/index.js.map +1 -1
- package/dist/ai/validation/task-validator.d.ts +3 -3
- package/dist/ai/validation/task-validator.d.ts.map +1 -1
- package/dist/ai/validation/task-validator.js +3 -11
- package/dist/ai/validation/task-validator.js.map +1 -1
- package/dist/cli/commands/checklist.d.ts.map +1 -1
- package/dist/cli/commands/checklist.js +34 -17
- package/dist/cli/commands/checklist.js.map +1 -1
- package/dist/cli/commands/epic.d.ts.map +1 -1
- package/dist/cli/commands/epic.js +3 -0
- package/dist/cli/commands/epic.js.map +1 -1
- package/dist/cli/commands/feature.d.ts.map +1 -1
- package/dist/cli/commands/feature.js +3 -0
- package/dist/cli/commands/feature.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +21 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +123 -0
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/story.d.ts.map +1 -1
- package/dist/cli/commands/story.js +3 -0
- package/dist/cli/commands/story.js.map +1 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +4 -0
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/helpers/task-creation.d.ts.map +1 -1
- package/dist/cli/helpers/task-creation.js +2 -3
- package/dist/cli/helpers/task-creation.js.map +1 -1
- package/dist/cli/index.js +13 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/generators/cursor-generator.js +6 -6
- package/dist/generators/cursor-generator.js.map +1 -1
- package/dist/models/schema.js +1 -1
- package/dist/models/schema.js.map +1 -1
- package/dist/services/checklist-service.d.ts +5 -0
- package/dist/services/checklist-service.d.ts.map +1 -1
- package/dist/services/checklist-service.js +16 -0
- package/dist/services/checklist-service.js.map +1 -1
- package/dist/services/config-service.d.ts +3 -0
- package/dist/services/config-service.d.ts.map +1 -1
- package/dist/services/config-service.js +8 -2
- package/dist/services/config-service.js.map +1 -1
- package/dist/templates/adrs/adr-general.md.hbs +9 -0
- package/dist/templates/backlog/backlog-item.md.hbs +1 -0
- package/dist/templates/checklists/agile-checklist.md.hbs +24 -24
- package/dist/templates/epics/epic.md.hbs +3 -0
- package/dist/templates/export/planning-report.md.hbs +11 -7
- package/dist/templates/features/feature.md.hbs +2 -0
- package/dist/templates/guides/estimation.md.hbs +14 -14
- package/dist/templates/quick/quick-task.md.hbs +1 -0
- package/dist/templates/rules/claude/CLAUDE.md.hbs +11 -0
- package/dist/templates/rules/codex/AGENTS.md.hbs +9 -0
- package/dist/templates/rules/cursor/{2001-agile-create-epic.mdc.hbs → create-epic.mdc.hbs} +6 -0
- package/dist/templates/rules/cursor/{2002-agile-create-features.mdc.hbs → create-features.mdc.hbs} +6 -0
- package/dist/templates/rules/cursor/{2100-create-task-list.mdc.hbs → create-task-list.mdc.hbs} +7 -0
- package/dist/templates/rules/cursor/{2003-agile-create-user-story.mdc.hbs → create-user-story.mdc.hbs} +6 -0
- package/dist/templates/rules/cursor/{2101-implement-task-list.mdc.hbs → implement-task-list.mdc.hbs} +7 -0
- package/dist/templates/sprints/sprint.md.hbs +3 -0
- package/dist/templates/tasks/task-list.md.hbs +3 -0
- package/dist/utils/constants.d.ts +2 -2
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +2 -2
- package/dist/utils/constants.js.map +1 -1
- package/package.json +4 -4
- package/dist/ai/validation/dependency-chains.d.ts +0 -21
- package/dist/ai/validation/dependency-chains.d.ts.map +0 -1
- package/dist/ai/validation/dependency-chains.js +0 -114
- package/dist/ai/validation/dependency-chains.js.map +0 -1
- /package/dist/templates/rules/cursor/{2000-agile-checklist.mdc.hbs → agile-checklist.mdc.hbs} +0 -0
|
@@ -13,6 +13,7 @@ taskIds: [{{#each taskIds}}"{{this}}"{{#unless @last}}, {{/unless}}{{/each}}]
|
|
|
13
13
|
# {{id}}: {{name}}
|
|
14
14
|
|
|
15
15
|
## Sprint Details
|
|
16
|
+
|
|
16
17
|
- **Duration:** {{duration}}
|
|
17
18
|
- **Start:** {{startDate}}
|
|
18
19
|
- **End:** {{endDate}}
|
|
@@ -20,12 +21,14 @@ taskIds: [{{#each taskIds}}"{{this}}"{{#unless @last}}, {{/unless}}{{/each}}]
|
|
|
20
21
|
|
|
21
22
|
{{#if goals}}
|
|
22
23
|
## Goals
|
|
24
|
+
|
|
23
25
|
{{#each goals}}
|
|
24
26
|
- {{this}}
|
|
25
27
|
{{/each}}
|
|
26
28
|
{{/if}}
|
|
27
29
|
|
|
28
30
|
## Tasks
|
|
31
|
+
|
|
29
32
|
{{#if taskIds}}
|
|
30
33
|
{{#each taskIds}}
|
|
31
34
|
- [ ] {{this}}
|
|
@@ -15,6 +15,7 @@ status: "pending"
|
|
|
15
15
|
|
|
16
16
|
{{#if artifactSources}}
|
|
17
17
|
## Artifact Sources
|
|
18
|
+
|
|
18
19
|
{{#each artifactSources}}
|
|
19
20
|
- **{{this.type}}:** `{{this.path}}`
|
|
20
21
|
{{/each}}
|
|
@@ -31,6 +32,7 @@ status: "pending"
|
|
|
31
32
|
|
|
32
33
|
{{#if acceptanceCriteriaMapping}}
|
|
33
34
|
## Acceptance Criteria Mapping
|
|
35
|
+
|
|
34
36
|
{{#each acceptanceCriteriaMapping}}
|
|
35
37
|
- [ ] {{this.criterion}} ({{this.sourceStoryId}}) → Tasks {{join this.taskIds ", "}}
|
|
36
38
|
{{/each}}
|
|
@@ -38,6 +40,7 @@ status: "pending"
|
|
|
38
40
|
|
|
39
41
|
{{#if relevantFiles}}
|
|
40
42
|
## Relevant Files
|
|
43
|
+
|
|
41
44
|
{{#each relevantFiles}}
|
|
42
45
|
- `{{this.path}}` — {{this.reason}}
|
|
43
46
|
{{/each}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare const CONFIG_FILENAME = "planr
|
|
2
|
-
export declare const DEFAULT_AGILE_DIR = "
|
|
1
|
+
export declare const CONFIG_FILENAME = ".planr/config.json";
|
|
2
|
+
export declare const DEFAULT_AGILE_DIR = ".planr";
|
|
3
3
|
export declare const DEFAULT_CURSOR_RULES_DIR = ".cursor/rules";
|
|
4
4
|
export declare const ARTIFACT_DIRS: {
|
|
5
5
|
readonly epics: "epics";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,uBAAuB,CAAC;AAEpD,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAC1C,eAAO,MAAM,wBAAwB,kBAAkB,CAAC;AAExD,eAAO,MAAM,aAAa;;;;;;;;;;CAUhB,CAAC;AAEX,eAAO,MAAM,WAAW;;;;;;;;;CASd,CAAC;AAEX,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
|
package/dist/utils/constants.js
CHANGED
|
@@ -2,8 +2,8 @@ import path from 'node:path';
|
|
|
2
2
|
import { fileURLToPath } from 'node:url';
|
|
3
3
|
const __filename = fileURLToPath(import.meta.url);
|
|
4
4
|
const __dirname = path.dirname(__filename);
|
|
5
|
-
export const CONFIG_FILENAME = 'planr
|
|
6
|
-
export const DEFAULT_AGILE_DIR = '
|
|
5
|
+
export const CONFIG_FILENAME = '.planr/config.json';
|
|
6
|
+
export const DEFAULT_AGILE_DIR = '.planr';
|
|
7
7
|
export const DEFAULT_CURSOR_RULES_DIR = '.cursor/rules';
|
|
8
8
|
export const ARTIFACT_DIRS = {
|
|
9
9
|
epics: 'epics',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,eAAe,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAEpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC;AAExD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;CAChB,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;CACF,CAAC;AAEX,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AACpD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openplanr",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
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",
|
|
@@ -58,11 +58,11 @@
|
|
|
58
58
|
"license": "MIT",
|
|
59
59
|
"repository": {
|
|
60
60
|
"type": "git",
|
|
61
|
-
"url": "git+https://github.com/
|
|
61
|
+
"url": "git+https://github.com/openplanr/OpenPlanr.git"
|
|
62
62
|
},
|
|
63
|
-
"homepage": "https://
|
|
63
|
+
"homepage": "https://openplanr.dev",
|
|
64
64
|
"bugs": {
|
|
65
|
-
"url": "https://github.com/
|
|
65
|
+
"url": "https://github.com/openplanr/OpenPlanr/issues"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
68
|
"@anthropic-ai/sdk": "^0.81.0",
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Detects file dependency chains from architecture files.
|
|
3
|
-
*
|
|
4
|
-
* When one file in a chain is modified, others likely need updating too.
|
|
5
|
-
* Chains are detected via import analysis: if file A imports from file B,
|
|
6
|
-
* they form a dependency hint.
|
|
7
|
-
*/
|
|
8
|
-
export interface DependencyHint {
|
|
9
|
-
/** Files in this chain (relative paths). */
|
|
10
|
-
files: string[];
|
|
11
|
-
/** Human-readable explanation of why these files are linked. */
|
|
12
|
-
reason: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Detect dependency hints by analysing import statements across
|
|
16
|
-
* architecture files. If file A imports from file B, they form a chain.
|
|
17
|
-
*
|
|
18
|
-
* @param architectureFiles - Map of relative path → content from findArchitectureFiles
|
|
19
|
-
*/
|
|
20
|
-
export declare function detectDependencyHints(architectureFiles: Map<string, string>): DependencyHint[];
|
|
21
|
-
//# sourceMappingURL=dependency-chains.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-chains.d.ts","sourceRoot":"","sources":["../../../src/ai/validation/dependency-chains.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,EAAE,CA+D9F"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Detects file dependency chains from architecture files.
|
|
3
|
-
*
|
|
4
|
-
* When one file in a chain is modified, others likely need updating too.
|
|
5
|
-
* Chains are detected via import analysis: if file A imports from file B,
|
|
6
|
-
* they form a dependency hint.
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Detect dependency hints by analysing import statements across
|
|
10
|
-
* architecture files. If file A imports from file B, they form a chain.
|
|
11
|
-
*
|
|
12
|
-
* @param architectureFiles - Map of relative path → content from findArchitectureFiles
|
|
13
|
-
*/
|
|
14
|
-
export function detectDependencyHints(architectureFiles) {
|
|
15
|
-
const archPaths = [...architectureFiles.keys()];
|
|
16
|
-
if (archPaths.length < 2)
|
|
17
|
-
return [];
|
|
18
|
-
// Build a map of which architecture files import which others
|
|
19
|
-
const importGraph = new Map();
|
|
20
|
-
for (const [filePath, content] of architectureFiles) {
|
|
21
|
-
const importedPaths = extractImportPaths(content);
|
|
22
|
-
for (const imp of importedPaths) {
|
|
23
|
-
const resolved = resolveImportToArchFile(imp, filePath, archPaths);
|
|
24
|
-
if (resolved) {
|
|
25
|
-
if (!importGraph.has(filePath))
|
|
26
|
-
importGraph.set(filePath, new Set());
|
|
27
|
-
const deps = importGraph.get(filePath);
|
|
28
|
-
if (deps)
|
|
29
|
-
deps.add(resolved);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
// Find hub files (imported by 3+ others)
|
|
34
|
-
const importCounts = new Map();
|
|
35
|
-
for (const [importer, imports] of importGraph) {
|
|
36
|
-
for (const imported of imports) {
|
|
37
|
-
if (!importCounts.has(imported))
|
|
38
|
-
importCounts.set(imported, []);
|
|
39
|
-
const arr = importCounts.get(imported);
|
|
40
|
-
if (arr)
|
|
41
|
-
arr.push(importer);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const hints = [];
|
|
45
|
-
const seen = new Set();
|
|
46
|
-
// Hub chains: file imported by 3+ architecture files
|
|
47
|
-
for (const [hubFile, importers] of importCounts) {
|
|
48
|
-
if (importers.length >= 3) {
|
|
49
|
-
const chain = [hubFile, ...importers].sort();
|
|
50
|
-
const key = chain.join(',');
|
|
51
|
-
if (!seen.has(key)) {
|
|
52
|
-
seen.add(key);
|
|
53
|
-
hints.push({
|
|
54
|
-
files: chain,
|
|
55
|
-
reason: `${hubFile} is a central module imported by ${importers.join(', ')} — changes may require updates in all`,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// Pair chains: direct import relationships not already covered by hubs
|
|
61
|
-
for (const [importer, imports] of importGraph) {
|
|
62
|
-
for (const imported of imports) {
|
|
63
|
-
const pair = [importer, imported].sort();
|
|
64
|
-
const key = pair.join(',');
|
|
65
|
-
if (!seen.has(key)) {
|
|
66
|
-
seen.add(key);
|
|
67
|
-
hints.push({
|
|
68
|
-
files: pair,
|
|
69
|
-
reason: `${importer} imports from ${imported} — changes to one may require updates in the other`,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return hints;
|
|
75
|
-
}
|
|
76
|
-
// ---------------------------------------------------------------------------
|
|
77
|
-
// Helpers
|
|
78
|
-
// ---------------------------------------------------------------------------
|
|
79
|
-
/** Extract import paths from TypeScript/JavaScript source. */
|
|
80
|
-
function extractImportPaths(content) {
|
|
81
|
-
return [...content.matchAll(/(?:import|from)\s+['"]([^'"]+)['"]/g)].map((m) => m[1]);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Resolve an import path to one of the known architecture file paths.
|
|
85
|
-
* Handles relative imports and extension stripping.
|
|
86
|
-
*/
|
|
87
|
-
function resolveImportToArchFile(importPath, fromFile, archPaths) {
|
|
88
|
-
// Only consider relative imports
|
|
89
|
-
if (!importPath.startsWith('.'))
|
|
90
|
-
return null;
|
|
91
|
-
// Strip .js/.ts extension
|
|
92
|
-
const stripped = importPath.replace(/\.\w+$/, '');
|
|
93
|
-
// Resolve relative to the importing file's directory
|
|
94
|
-
const fromDir = fromFile.split('/').slice(0, -1).join('/');
|
|
95
|
-
const parts = stripped.split('/');
|
|
96
|
-
const resolvedParts = fromDir ? fromDir.split('/') : [];
|
|
97
|
-
for (const part of parts) {
|
|
98
|
-
if (part === '.')
|
|
99
|
-
continue;
|
|
100
|
-
if (part === '..') {
|
|
101
|
-
resolvedParts.pop();
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
resolvedParts.push(part);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
const resolved = resolvedParts.join('/');
|
|
108
|
-
// Match against architecture paths (with or without extension)
|
|
109
|
-
return (archPaths.find((p) => {
|
|
110
|
-
const pBase = p.replace(/\.\w+$/, '');
|
|
111
|
-
return pBase === resolved;
|
|
112
|
-
}) ?? null);
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=dependency-chains.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-chains.js","sourceRoot":"","sources":["../../../src/ai/validation/dependency-chains.ts"],"names":[],"mappings":"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"}
|
/package/dist/templates/rules/cursor/{2000-agile-checklist.mdc.hbs → agile-checklist.mdc.hbs}
RENAMED
|
File without changes
|