@luckydraw/cumulus 0.18.2 → 0.19.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/dist/gateway/adapters/discord.d.ts.map +1 -1
- package/dist/gateway/adapters/discord.js +3 -3
- package/dist/gateway/adapters/discord.js.map +1 -1
- package/dist/gateway/adapters/slack.d.ts.map +1 -1
- package/dist/gateway/adapters/slack.js +2 -2
- package/dist/gateway/adapters/slack.js.map +1 -1
- package/dist/gateway/adapters/webchat.d.ts +3 -0
- package/dist/gateway/adapters/webchat.d.ts.map +1 -1
- package/dist/gateway/adapters/webchat.js +66 -10
- package/dist/gateway/adapters/webchat.js.map +1 -1
- package/dist/gateway/cli.js +1 -1
- package/dist/gateway/cli.js.map +1 -1
- package/dist/gateway/config.d.ts +13 -0
- package/dist/gateway/config.d.ts.map +1 -1
- package/dist/gateway/config.js +17 -1
- package/dist/gateway/config.js.map +1 -1
- package/dist/gateway/daemon.d.ts.map +1 -1
- package/dist/gateway/daemon.js +11 -11
- package/dist/gateway/daemon.js.map +1 -1
- package/dist/gateway/logger.js +1 -1
- package/dist/gateway/logger.js.map +1 -1
- package/dist/gateway/server.d.ts +2 -0
- package/dist/gateway/server.d.ts.map +1 -1
- package/dist/gateway/server.js +155 -12
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/static/widget.js +520 -89
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/gateway.d.ts +1 -1
- package/dist/lib/gateway.d.ts.map +1 -1
- package/dist/lib/gateway.js +48 -30
- package/dist/lib/gateway.js.map +1 -1
- package/dist/lib/projects.d.ts +67 -0
- package/dist/lib/projects.d.ts.map +1 -0
- package/dist/lib/projects.js +229 -0
- package/dist/lib/projects.js.map +1 -0
- package/dist/lib/retriever.d.ts.map +1 -1
- package/dist/lib/retriever.js +1 -3
- package/dist/lib/retriever.js.map +1 -1
- package/dist/lib/segments.d.ts.map +1 -1
- package/dist/lib/segments.js.map +1 -1
- package/dist/lib/summaries.d.ts.map +1 -1
- package/dist/lib/summaries.js +7 -10
- package/dist/lib/summaries.js.map +1 -1
- package/dist/lib/templates.d.ts +25 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +102 -0
- package/dist/lib/templates.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template system for project scaffolding.
|
|
3
|
+
* Creates standard directory structure and initial files from configurable templates.
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import * as os from 'os';
|
|
8
|
+
const CUMULUS_DIR = path.join(os.homedir(), '.cumulus');
|
|
9
|
+
const TEMPLATES_DIR = path.join(CUMULUS_DIR, 'templates');
|
|
10
|
+
// ─── Default templates ───────────────────────────────────────────────────────
|
|
11
|
+
const DEFAULT_TEMPLATES = {
|
|
12
|
+
default: {
|
|
13
|
+
scaffold: ['Tasks.md', 'docs/tasks/', 'docs/decisions/'],
|
|
14
|
+
alwaysInclude: ['Tasks.md'],
|
|
15
|
+
initialTasks: [],
|
|
16
|
+
},
|
|
17
|
+
'web-app': {
|
|
18
|
+
scaffold: ['Tasks.md', 'docs/tasks/', 'docs/decisions/', 'src/', 'public/'],
|
|
19
|
+
alwaysInclude: ['Tasks.md', 'README.md'],
|
|
20
|
+
initialTasks: [],
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
// ─── Default file contents ───────────────────────────────────────────────────
|
|
24
|
+
function defaultTasksMd(projectName) {
|
|
25
|
+
return `# ${projectName} Tasks\n\n\n`;
|
|
26
|
+
}
|
|
27
|
+
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
28
|
+
/**
|
|
29
|
+
* List available templates (merged from config + defaults).
|
|
30
|
+
*/
|
|
31
|
+
export function listTemplates(configTemplates) {
|
|
32
|
+
return { ...DEFAULT_TEMPLATES, ...configTemplates };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Scaffold a project directory from a template.
|
|
36
|
+
*/
|
|
37
|
+
export async function scaffoldFromTemplate(projectPath, templateName, projectName, configTemplates) {
|
|
38
|
+
const templates = listTemplates(configTemplates);
|
|
39
|
+
const template = templates[templateName];
|
|
40
|
+
if (!template) {
|
|
41
|
+
throw new Error(`Unknown template: "${templateName}". Available: ${Object.keys(templates).join(', ')}`);
|
|
42
|
+
}
|
|
43
|
+
// Create directories and files from scaffold list
|
|
44
|
+
for (const entry of template.scaffold) {
|
|
45
|
+
const fullPath = path.join(projectPath, entry);
|
|
46
|
+
if (entry.endsWith('/')) {
|
|
47
|
+
// Directory
|
|
48
|
+
fs.mkdirSync(fullPath, { recursive: true });
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// File — create with default content if it doesn't exist
|
|
52
|
+
const dir = path.dirname(fullPath);
|
|
53
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
54
|
+
if (!fs.existsSync(fullPath)) {
|
|
55
|
+
const content = getDefaultFileContent(entry, projectName);
|
|
56
|
+
fs.writeFileSync(fullPath, content);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Copy initial task files from templates dir
|
|
61
|
+
if (template.initialTasks && template.initialTasks.length > 0) {
|
|
62
|
+
const tasksDir = path.join(projectPath, 'docs', 'tasks');
|
|
63
|
+
fs.mkdirSync(tasksDir, { recursive: true });
|
|
64
|
+
for (const taskId of template.initialTasks) {
|
|
65
|
+
// Look in ~/.cumulus/templates/tasks/ first, then bundled
|
|
66
|
+
const sourceFile = findTaskTemplate(taskId);
|
|
67
|
+
if (sourceFile) {
|
|
68
|
+
const destFile = path.join(tasksDir, `${taskId}.md`);
|
|
69
|
+
if (!fs.existsSync(destFile)) {
|
|
70
|
+
fs.copyFileSync(sourceFile, destFile);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get alwaysInclude paths for a template.
|
|
78
|
+
*/
|
|
79
|
+
export function getTemplateAlwaysInclude(templateName, configTemplates) {
|
|
80
|
+
const templates = listTemplates(configTemplates);
|
|
81
|
+
return templates[templateName]?.alwaysInclude ?? ['Tasks.md'];
|
|
82
|
+
}
|
|
83
|
+
// ─── Internal helpers ────────────────────────────────────────────────────────
|
|
84
|
+
function getDefaultFileContent(filename, projectName) {
|
|
85
|
+
if (filename === 'Tasks.md')
|
|
86
|
+
return defaultTasksMd(projectName);
|
|
87
|
+
if (filename === 'README.md')
|
|
88
|
+
return `# ${projectName}\n`;
|
|
89
|
+
return '';
|
|
90
|
+
}
|
|
91
|
+
function findTaskTemplate(taskId) {
|
|
92
|
+
// Check user templates dir
|
|
93
|
+
const userPath = path.join(TEMPLATES_DIR, 'tasks', `${taskId}.md`);
|
|
94
|
+
if (fs.existsSync(userPath))
|
|
95
|
+
return userPath;
|
|
96
|
+
// Check global templates (macOS convention)
|
|
97
|
+
const globalPath = path.join(os.homedir(), 'Documents', '_Projects', '_Global', 'docs', 'tasks', `${taskId}.md`);
|
|
98
|
+
if (fs.existsSync(globalPath))
|
|
99
|
+
return globalPath;
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"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"}
|