pm-presets 2026.5.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/LICENSE +21 -0
- package/README.md +163 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/presets/bug-triage/index.d.ts +40 -0
- package/dist/presets/bug-triage/index.d.ts.map +1 -0
- package/dist/presets/bug-triage/index.js +172 -0
- package/dist/presets/bug-triage/index.js.map +1 -0
- package/dist/presets/indie-dev/index.d.ts +24 -0
- package/dist/presets/indie-dev/index.d.ts.map +1 -0
- package/dist/presets/indie-dev/index.js +113 -0
- package/dist/presets/indie-dev/index.js.map +1 -0
- package/dist/presets/open-source/index.d.ts +43 -0
- package/dist/presets/open-source/index.d.ts.map +1 -0
- package/dist/presets/open-source/index.js +147 -0
- package/dist/presets/open-source/index.js.map +1 -0
- package/dist/presets/software-sprint/index.d.ts +24 -0
- package/dist/presets/software-sprint/index.d.ts.map +1 -0
- package/dist/presets/software-sprint/index.js +165 -0
- package/dist/presets/software-sprint/index.js.map +1 -0
- package/dist/presets/startup-roadmap/index.d.ts +43 -0
- package/dist/presets/startup-roadmap/index.d.ts.map +1 -0
- package/dist/presets/startup-roadmap/index.js +172 -0
- package/dist/presets/startup-roadmap/index.js.map +1 -0
- package/dist/registry.d.ts +29 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +59 -0
- package/dist/registry.js.map +1 -0
- package/manifest.json +62 -0
- package/package.json +112 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
// ─── Settings ────────────────────────────────────────────────────────────────
|
|
4
|
+
export const SETTINGS = {
|
|
5
|
+
id_prefix: "indie-",
|
|
6
|
+
governance: {
|
|
7
|
+
preset: "minimal",
|
|
8
|
+
ownership_enforcement: "off",
|
|
9
|
+
create_mode_default: "progressive",
|
|
10
|
+
close_validation_default: "off",
|
|
11
|
+
metadata_profile: "core",
|
|
12
|
+
},
|
|
13
|
+
validation: {
|
|
14
|
+
sprint_release_format: "off",
|
|
15
|
+
parent_reference: "off",
|
|
16
|
+
},
|
|
17
|
+
testing: {
|
|
18
|
+
record_results_to_items: false,
|
|
19
|
+
},
|
|
20
|
+
telemetry: {
|
|
21
|
+
enabled: false,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
// ─── Templates ───────────────────────────────────────────────────────────────
|
|
25
|
+
export const TEMPLATES = {
|
|
26
|
+
"idea.json": {
|
|
27
|
+
type: "Decision",
|
|
28
|
+
priority: "low",
|
|
29
|
+
tags: ["idea"],
|
|
30
|
+
meta: {
|
|
31
|
+
hypothesis: "",
|
|
32
|
+
motivation: "",
|
|
33
|
+
effort_estimate: "small",
|
|
34
|
+
decision: "",
|
|
35
|
+
outcome: "",
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
"task.json": {
|
|
39
|
+
type: "Task",
|
|
40
|
+
priority: "medium",
|
|
41
|
+
tags: [],
|
|
42
|
+
meta: {
|
|
43
|
+
notes: "",
|
|
44
|
+
due_date: "",
|
|
45
|
+
project: "",
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
// ─── Command Handler ──────────────────────────────────────────────────────────
|
|
50
|
+
export async function runIndieDevSetup(context) {
|
|
51
|
+
const { options, pm_root } = context;
|
|
52
|
+
const force = Boolean(options["force"]);
|
|
53
|
+
const dryRun = Boolean(options["dry-run"]);
|
|
54
|
+
const prefixOverride = options["prefix"] || "";
|
|
55
|
+
const cwd = pm_root ?? process.cwd();
|
|
56
|
+
const pmDir = path.resolve(cwd, ".agents/pm");
|
|
57
|
+
const settingsPath = path.join(pmDir, "settings.json");
|
|
58
|
+
const templatesDir = path.join(pmDir, "templates");
|
|
59
|
+
// 1. Verify .agents/pm/ exists
|
|
60
|
+
if (!fs.existsSync(pmDir)) {
|
|
61
|
+
console.error(`pm workspace not found. Expected directory: ${pmDir}\n` +
|
|
62
|
+
`Run \`pm init\` first to initialise a pm workspace in this project.`);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// 2. Build settings (apply prefix override if provided)
|
|
66
|
+
const settings = {
|
|
67
|
+
...SETTINGS,
|
|
68
|
+
id_prefix: prefixOverride || SETTINGS.id_prefix,
|
|
69
|
+
};
|
|
70
|
+
// 3. Write settings.json
|
|
71
|
+
const settingsJson = JSON.stringify(settings, null, 2);
|
|
72
|
+
if (fs.existsSync(settingsPath) && !force) {
|
|
73
|
+
console.log(`warn: ${settingsPath} already exists. ` +
|
|
74
|
+
`Pass --force to overwrite.`);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
if (dryRun) {
|
|
78
|
+
console.log(`[dry-run] Would write ${settingsPath}:`);
|
|
79
|
+
console.log(settingsJson);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
fs.writeFileSync(settingsPath, settingsJson + "\n", "utf8");
|
|
83
|
+
console.log(`wrote ${settingsPath}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// 4. Create templates directory and write template files
|
|
87
|
+
if (dryRun) {
|
|
88
|
+
console.log(`[dry-run] Would create directory: ${templatesDir}`);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
fs.mkdirSync(templatesDir, { recursive: true });
|
|
92
|
+
}
|
|
93
|
+
for (const [filename, template] of Object.entries(TEMPLATES)) {
|
|
94
|
+
const templatePath = path.join(templatesDir, filename);
|
|
95
|
+
const templateJson = JSON.stringify(template, null, 2);
|
|
96
|
+
if (dryRun) {
|
|
97
|
+
console.log(`[dry-run] Would write ${templatePath}:`);
|
|
98
|
+
console.log(templateJson);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
fs.writeFileSync(templatePath, templateJson + "\n", "utf8");
|
|
102
|
+
console.log(`wrote ${templatePath}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// 5. Print next-steps
|
|
106
|
+
console.log(``);
|
|
107
|
+
console.log(`Indie-dev preset applied. Next steps:`);
|
|
108
|
+
console.log(` pm create --template idea`);
|
|
109
|
+
console.log(` pm create --template task`);
|
|
110
|
+
console.log(``);
|
|
111
|
+
console.log(`Tip: edit ${settingsPath} at any time to adjust your workspace settings.`);
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/presets/indie-dev/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { CommandHandlerContext } from "@unbrained/pm-cli/sdk";
|
|
2
|
+
export declare const SETTINGS: {
|
|
3
|
+
readonly id_prefix: "oss-";
|
|
4
|
+
readonly governance: {
|
|
5
|
+
readonly preset: "default";
|
|
6
|
+
readonly ownership_enforcement: "off";
|
|
7
|
+
readonly create_mode_default: "progressive";
|
|
8
|
+
readonly close_validation_default: "warn";
|
|
9
|
+
readonly metadata_profile: "core";
|
|
10
|
+
};
|
|
11
|
+
readonly validation: {
|
|
12
|
+
readonly sprint_release_format: "off";
|
|
13
|
+
readonly parent_reference: "warn";
|
|
14
|
+
};
|
|
15
|
+
readonly item_types: {
|
|
16
|
+
readonly definitions: readonly [{
|
|
17
|
+
readonly name: "Epic";
|
|
18
|
+
readonly description: "A major feature or milestone release";
|
|
19
|
+
}, {
|
|
20
|
+
readonly name: "Feature";
|
|
21
|
+
readonly description: "A user-facing improvement or addition";
|
|
22
|
+
}, {
|
|
23
|
+
readonly name: "Issue";
|
|
24
|
+
readonly description: "A bug or regression report";
|
|
25
|
+
}, {
|
|
26
|
+
readonly name: "Task";
|
|
27
|
+
readonly description: "A contributor task or good-first-issue";
|
|
28
|
+
}];
|
|
29
|
+
};
|
|
30
|
+
readonly search: {
|
|
31
|
+
readonly mode: "keyword";
|
|
32
|
+
};
|
|
33
|
+
readonly calendar: {
|
|
34
|
+
readonly default_view: "month";
|
|
35
|
+
readonly first_day_of_week: 1;
|
|
36
|
+
};
|
|
37
|
+
readonly telemetry: {
|
|
38
|
+
readonly enabled: false;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export declare const TEMPLATES: Record<string, unknown>;
|
|
42
|
+
export declare function runOpenSourceSetup(context: CommandHandlerContext): Promise<void>;
|
|
43
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presets/open-source/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAMnE,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwBX,CAAC;AAgDX,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAI7C,CAAC;AAIF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiGtF"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
// ─── Settings ────────────────────────────────────────────────────────────────
|
|
4
|
+
export const SETTINGS = {
|
|
5
|
+
id_prefix: "oss-",
|
|
6
|
+
governance: {
|
|
7
|
+
preset: "default",
|
|
8
|
+
ownership_enforcement: "off",
|
|
9
|
+
create_mode_default: "progressive",
|
|
10
|
+
close_validation_default: "warn",
|
|
11
|
+
metadata_profile: "core",
|
|
12
|
+
},
|
|
13
|
+
validation: {
|
|
14
|
+
sprint_release_format: "off",
|
|
15
|
+
parent_reference: "warn",
|
|
16
|
+
},
|
|
17
|
+
item_types: {
|
|
18
|
+
definitions: [
|
|
19
|
+
{ name: "Epic", description: "A major feature or milestone release" },
|
|
20
|
+
{ name: "Feature", description: "A user-facing improvement or addition" },
|
|
21
|
+
{ name: "Issue", description: "A bug or regression report" },
|
|
22
|
+
{ name: "Task", description: "A contributor task or good-first-issue" },
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
search: { mode: "keyword" },
|
|
26
|
+
calendar: { default_view: "month", first_day_of_week: 1 },
|
|
27
|
+
telemetry: { enabled: false },
|
|
28
|
+
};
|
|
29
|
+
// ─── Templates ───────────────────────────────────────────────────────────────
|
|
30
|
+
const TEMPLATE_BUG_REPORT = {
|
|
31
|
+
type: "Issue",
|
|
32
|
+
priority: "medium",
|
|
33
|
+
tags: ["bug", "community"],
|
|
34
|
+
meta: {
|
|
35
|
+
reported_by: "",
|
|
36
|
+
version: "",
|
|
37
|
+
os_platform: "",
|
|
38
|
+
steps_to_reproduce: "",
|
|
39
|
+
expected_behavior: "",
|
|
40
|
+
actual_behavior: "",
|
|
41
|
+
logs_or_screenshots: "",
|
|
42
|
+
upstream_issue_url: "",
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
const TEMPLATE_FEATURE_REQUEST = {
|
|
46
|
+
type: "Feature",
|
|
47
|
+
priority: "medium",
|
|
48
|
+
tags: ["feature-request", "community"],
|
|
49
|
+
meta: {
|
|
50
|
+
requested_by: "",
|
|
51
|
+
use_case: "",
|
|
52
|
+
proposed_solution: "",
|
|
53
|
+
alternatives_considered: "",
|
|
54
|
+
upstream_issue_url: "",
|
|
55
|
+
milestone: "",
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
const TEMPLATE_GOOD_FIRST_ISSUE = {
|
|
59
|
+
type: "Task",
|
|
60
|
+
priority: "low",
|
|
61
|
+
tags: ["good-first-issue", "help-wanted", "contributor-friendly"],
|
|
62
|
+
meta: {
|
|
63
|
+
skill_level: "beginner",
|
|
64
|
+
estimated_hours: "",
|
|
65
|
+
relevant_files: "",
|
|
66
|
+
mentorship_contact: "",
|
|
67
|
+
related_docs_url: "",
|
|
68
|
+
pr_checklist: "tests passing, docs updated if needed, changelog entry",
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
export const TEMPLATES = {
|
|
72
|
+
"bug-report.json": TEMPLATE_BUG_REPORT,
|
|
73
|
+
"feature-request.json": TEMPLATE_FEATURE_REQUEST,
|
|
74
|
+
"good-first-issue.json": TEMPLATE_GOOD_FIRST_ISSUE,
|
|
75
|
+
};
|
|
76
|
+
// ─── Command Handler ──────────────────────────────────────────────────────────
|
|
77
|
+
export async function runOpenSourceSetup(context) {
|
|
78
|
+
const { options, pm_root } = context;
|
|
79
|
+
const force = Boolean(options["force"]);
|
|
80
|
+
const dryRun = Boolean(options["dry-run"]);
|
|
81
|
+
const prefix = options["prefix"] || "oss-";
|
|
82
|
+
const cwd = pm_root ?? process.cwd();
|
|
83
|
+
const pmDir = path.resolve(cwd, ".agents", "pm");
|
|
84
|
+
const settingsPath = path.join(pmDir, "settings.json");
|
|
85
|
+
const templatesDir = path.join(pmDir, "templates");
|
|
86
|
+
// 1. Verify .agents/pm/ exists
|
|
87
|
+
if (!fs.existsSync(pmDir)) {
|
|
88
|
+
console.error(`pm workspace not found at ${pmDir}.\n` +
|
|
89
|
+
`Run 'pm init' first to initialise the workspace, then re-run 'pm oss-setup'.`);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
// 2. Write settings.json
|
|
93
|
+
const effectiveSettings = {
|
|
94
|
+
...SETTINGS,
|
|
95
|
+
id_prefix: prefix,
|
|
96
|
+
};
|
|
97
|
+
const settingsExists = fs.existsSync(settingsPath);
|
|
98
|
+
if (settingsExists && !force) {
|
|
99
|
+
console.warn(`settings.json already exists at ${settingsPath}.\n` +
|
|
100
|
+
`Use --force to overwrite it.`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
if (dryRun) {
|
|
104
|
+
console.log(`[dry-run] Would write settings.json to ${settingsPath}`);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
if (settingsExists && force) {
|
|
108
|
+
console.warn(`Overwriting existing settings.json (--force).`);
|
|
109
|
+
}
|
|
110
|
+
fs.writeFileSync(settingsPath, JSON.stringify(effectiveSettings, null, 2) + "\n", "utf8");
|
|
111
|
+
console.log(`Wrote settings.json to ${settingsPath}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// 3. Create templates/ directory and write template files
|
|
115
|
+
if (dryRun) {
|
|
116
|
+
console.log(`[dry-run] Would create templates directory at ${templatesDir}`);
|
|
117
|
+
for (const filename of Object.keys(TEMPLATES)) {
|
|
118
|
+
console.log(`[dry-run] Would write template ${filename} to ${path.join(templatesDir, filename)}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
fs.mkdirSync(templatesDir, { recursive: true });
|
|
123
|
+
console.log(`Created templates directory at ${templatesDir}`);
|
|
124
|
+
for (const [filename, template] of Object.entries(TEMPLATES)) {
|
|
125
|
+
const templatePath = path.join(templatesDir, filename);
|
|
126
|
+
fs.writeFileSync(templatePath, JSON.stringify(template, null, 2) + "\n", "utf8");
|
|
127
|
+
console.log(`Wrote template: ${filename}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// 4. Print next steps
|
|
131
|
+
console.log(dryRun
|
|
132
|
+
? "Dry-run complete — no files were written."
|
|
133
|
+
: "Open-source preset applied successfully!");
|
|
134
|
+
console.log([
|
|
135
|
+
"",
|
|
136
|
+
"Next steps:",
|
|
137
|
+
" Create a bug report: pm create --template bug-report",
|
|
138
|
+
" Request a feature: pm create --template feature-request",
|
|
139
|
+
" Add a good-first-issue: pm create --template good-first-issue",
|
|
140
|
+
" List all items: pm list",
|
|
141
|
+
" Open the board: pm board",
|
|
142
|
+
"",
|
|
143
|
+
"Tip: tag your next milestone Epic with a target date and run",
|
|
144
|
+
" 'pm board --group milestone' for a milestone-oriented view.",
|
|
145
|
+
].join("\n"));
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/presets/open-source/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { CommandHandlerContext } from "@unbrained/pm-cli/sdk";
|
|
2
|
+
export declare const SETTINGS: {
|
|
3
|
+
readonly id_prefix: "sprint-";
|
|
4
|
+
readonly governance: {
|
|
5
|
+
readonly preset: "default";
|
|
6
|
+
readonly ownership_enforcement: "warn";
|
|
7
|
+
readonly create_mode_default: "progressive";
|
|
8
|
+
readonly close_validation_default: "warn";
|
|
9
|
+
readonly metadata_profile: "core";
|
|
10
|
+
};
|
|
11
|
+
readonly search: {
|
|
12
|
+
readonly mode: "keyword";
|
|
13
|
+
};
|
|
14
|
+
readonly calendar: {
|
|
15
|
+
readonly default_view: "week";
|
|
16
|
+
readonly first_day_of_week: 1;
|
|
17
|
+
};
|
|
18
|
+
readonly telemetry: {
|
|
19
|
+
readonly enabled: false;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export declare const TEMPLATES: Record<string, object>;
|
|
23
|
+
export declare function runSoftwareSprintSetup(context: CommandHandlerContext): Promise<void>;
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presets/software-sprint/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAMnE,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;CAYX,CAAC;AA+DX,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK5C,CAAC;AAeF,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2F1F"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
// ─── Settings ────────────────────────────────────────────────────────────────
|
|
4
|
+
export const SETTINGS = {
|
|
5
|
+
id_prefix: "sprint-",
|
|
6
|
+
governance: {
|
|
7
|
+
preset: "default",
|
|
8
|
+
ownership_enforcement: "warn",
|
|
9
|
+
create_mode_default: "progressive",
|
|
10
|
+
close_validation_default: "warn",
|
|
11
|
+
metadata_profile: "core",
|
|
12
|
+
},
|
|
13
|
+
search: { mode: "keyword" },
|
|
14
|
+
calendar: { default_view: "week", first_day_of_week: 1 },
|
|
15
|
+
telemetry: { enabled: false },
|
|
16
|
+
};
|
|
17
|
+
// ─── Templates ───────────────────────────────────────────────────────────────
|
|
18
|
+
const TEMPLATE_BUG = {
|
|
19
|
+
name: "bug",
|
|
20
|
+
type: "Issue",
|
|
21
|
+
priority: "high",
|
|
22
|
+
tags: ["bug"],
|
|
23
|
+
meta: {
|
|
24
|
+
sprint: "",
|
|
25
|
+
severity: "",
|
|
26
|
+
environment: "",
|
|
27
|
+
steps_to_reproduce: "",
|
|
28
|
+
expected_behavior: "",
|
|
29
|
+
actual_behavior: "",
|
|
30
|
+
assignee: "",
|
|
31
|
+
pr_link: "",
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
const TEMPLATE_EPIC = {
|
|
35
|
+
name: "epic",
|
|
36
|
+
type: "Epic",
|
|
37
|
+
priority: "medium",
|
|
38
|
+
tags: ["epic"],
|
|
39
|
+
meta: {
|
|
40
|
+
objective: "",
|
|
41
|
+
success_criteria: "",
|
|
42
|
+
target_quarter: "",
|
|
43
|
+
stakeholder: "",
|
|
44
|
+
estimated_sprints: "",
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
const TEMPLATE_FEATURE = {
|
|
48
|
+
name: "feature",
|
|
49
|
+
type: "Feature",
|
|
50
|
+
priority: "medium",
|
|
51
|
+
tags: ["feature"],
|
|
52
|
+
meta: {
|
|
53
|
+
sprint: "",
|
|
54
|
+
acceptance_criteria: "",
|
|
55
|
+
design_link: "",
|
|
56
|
+
story_points: "",
|
|
57
|
+
reviewer: "",
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
const TEMPLATE_TASK = {
|
|
61
|
+
name: "task",
|
|
62
|
+
type: "Task",
|
|
63
|
+
priority: "medium",
|
|
64
|
+
tags: ["task"],
|
|
65
|
+
meta: {
|
|
66
|
+
sprint: "",
|
|
67
|
+
estimate_hours: "",
|
|
68
|
+
assignee: "",
|
|
69
|
+
pr_link: "",
|
|
70
|
+
blocked_by: "",
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
export const TEMPLATES = {
|
|
74
|
+
"bug.json": TEMPLATE_BUG,
|
|
75
|
+
"epic.json": TEMPLATE_EPIC,
|
|
76
|
+
"feature.json": TEMPLATE_FEATURE,
|
|
77
|
+
"task.json": TEMPLATE_TASK,
|
|
78
|
+
};
|
|
79
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
80
|
+
function writeJsonFile(filePath, data, dryRun) {
|
|
81
|
+
if (dryRun) {
|
|
82
|
+
console.log(` [dry-run] Would write: ${filePath}`);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
86
|
+
fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n", "utf8");
|
|
87
|
+
}
|
|
88
|
+
// ─── Command Handler ──────────────────────────────────────────────────────────
|
|
89
|
+
export async function runSoftwareSprintSetup(context) {
|
|
90
|
+
const { options, pm_root } = context;
|
|
91
|
+
const force = Boolean(options["force"]);
|
|
92
|
+
const dryRun = Boolean(options["dry-run"]);
|
|
93
|
+
const prefixOverride = options["prefix"];
|
|
94
|
+
const cwd = pm_root ?? process.cwd();
|
|
95
|
+
const pmDir = path.join(cwd, ".agents", "pm");
|
|
96
|
+
const settingsPath = path.join(pmDir, "settings.json");
|
|
97
|
+
const templatesDir = path.join(pmDir, "templates");
|
|
98
|
+
// Step 1: verify pm workspace exists
|
|
99
|
+
if (!fs.existsSync(pmDir)) {
|
|
100
|
+
console.error("Error: .agents/pm/ directory not found.\n" +
|
|
101
|
+
"Run `pm init` first to initialise a pm workspace, then re-run `pm sprint-setup`.");
|
|
102
|
+
process.exitCode = 1;
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
console.log(dryRun
|
|
106
|
+
? "Dry-run mode — no files will be written.\n"
|
|
107
|
+
: "Applying software-sprint preset...\n");
|
|
108
|
+
// Step 2: write settings.json
|
|
109
|
+
if (fs.existsSync(settingsPath) && !force) {
|
|
110
|
+
console.warn(`Warning: ${settingsPath} already exists. Use --force to overwrite.`);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
const settings = {
|
|
114
|
+
...SETTINGS,
|
|
115
|
+
...(prefixOverride !== undefined
|
|
116
|
+
? { id_prefix: prefixOverride }
|
|
117
|
+
: {}),
|
|
118
|
+
};
|
|
119
|
+
writeJsonFile(settingsPath, settings, dryRun);
|
|
120
|
+
if (!dryRun) {
|
|
121
|
+
console.log(` Wrote settings.json (id_prefix: "${settings.id_prefix}")`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Step 3: write templates
|
|
125
|
+
for (const [filename, template] of Object.entries(TEMPLATES)) {
|
|
126
|
+
const templatePath = path.join(templatesDir, filename);
|
|
127
|
+
if (fs.existsSync(templatePath) && !force) {
|
|
128
|
+
console.warn(`Warning: ${templatePath} already exists. Use --force to overwrite.`);
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
writeJsonFile(templatePath, template, dryRun);
|
|
132
|
+
if (!dryRun) {
|
|
133
|
+
console.log(` Wrote templates/${filename}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Step 4: next-steps
|
|
137
|
+
if (!dryRun) {
|
|
138
|
+
console.log(`
|
|
139
|
+
Setup complete!
|
|
140
|
+
|
|
141
|
+
Next steps:
|
|
142
|
+
- Create your first bug: pm create --template bug
|
|
143
|
+
- Create a feature: pm create --template feature
|
|
144
|
+
- Create a sprint epic: pm create --template epic
|
|
145
|
+
- Create a task: pm create --template task
|
|
146
|
+
- View your workspace: pm ls
|
|
147
|
+
- Open the calendar: pm calendar
|
|
148
|
+
|
|
149
|
+
Tip: items created with this preset use the "${prefixOverride ?? SETTINGS.id_prefix}" id prefix.
|
|
150
|
+
`);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
console.log(`
|
|
154
|
+
[dry-run] The following would be written:
|
|
155
|
+
${settingsPath}
|
|
156
|
+
${path.join(templatesDir, "bug.json")}
|
|
157
|
+
${path.join(templatesDir, "epic.json")}
|
|
158
|
+
${path.join(templatesDir, "feature.json")}
|
|
159
|
+
${path.join(templatesDir, "task.json")}
|
|
160
|
+
|
|
161
|
+
Re-run without --dry-run to apply.
|
|
162
|
+
`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/presets/software-sprint/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { CommandHandlerContext } from "@unbrained/pm-cli/sdk";
|
|
2
|
+
export declare const SETTINGS: {
|
|
3
|
+
readonly id_prefix: "road-";
|
|
4
|
+
readonly governance: {
|
|
5
|
+
readonly preset: "default";
|
|
6
|
+
readonly ownership_enforcement: "warn";
|
|
7
|
+
readonly create_mode_default: "progressive";
|
|
8
|
+
readonly close_validation_default: "warn";
|
|
9
|
+
readonly metadata_profile: "strict";
|
|
10
|
+
};
|
|
11
|
+
readonly validation: {
|
|
12
|
+
readonly sprint_release_format: "warn";
|
|
13
|
+
readonly parent_reference: "warn";
|
|
14
|
+
};
|
|
15
|
+
readonly item_types: {
|
|
16
|
+
readonly definitions: readonly [{
|
|
17
|
+
readonly name: "Epic";
|
|
18
|
+
readonly description: "A top-level strategic initiative on the roadmap";
|
|
19
|
+
}, {
|
|
20
|
+
readonly name: "Feature";
|
|
21
|
+
readonly description: "A product feature tied to a milestone";
|
|
22
|
+
}, {
|
|
23
|
+
readonly name: "Task";
|
|
24
|
+
readonly description: "Execution-level work item";
|
|
25
|
+
}];
|
|
26
|
+
};
|
|
27
|
+
readonly testing: {
|
|
28
|
+
readonly record_results_to_items: false;
|
|
29
|
+
};
|
|
30
|
+
readonly search: {
|
|
31
|
+
readonly mode: "keyword";
|
|
32
|
+
};
|
|
33
|
+
readonly calendar: {
|
|
34
|
+
readonly default_view: "month";
|
|
35
|
+
readonly first_day_of_week: 1;
|
|
36
|
+
};
|
|
37
|
+
readonly telemetry: {
|
|
38
|
+
readonly enabled: false;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export declare const TEMPLATES: Record<string, unknown>;
|
|
42
|
+
export declare function runStartupRoadmapSetup(context: CommandHandlerContext): Promise<void>;
|
|
43
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presets/startup-roadmap/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAMnE,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CX,CAAC;AAuDX,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAI7C,CAAC;AAoBF,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF1F"}
|