takt 0.1.7 → 0.2.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 +136 -40
- package/dist/cli.js +11 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/addTask.d.ts +15 -0
- package/dist/commands/addTask.d.ts.map +1 -0
- package/dist/commands/addTask.js +101 -0
- package/dist/commands/addTask.js.map +1 -0
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +16 -5
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/refreshBuiltin.d.ts +11 -0
- package/dist/commands/refreshBuiltin.d.ts.map +1 -0
- package/dist/commands/refreshBuiltin.js +37 -0
- package/dist/commands/refreshBuiltin.js.map +1 -0
- package/dist/commands/taskExecution.d.ts +9 -0
- package/dist/commands/taskExecution.d.ts.map +1 -1
- package/dist/commands/taskExecution.js +30 -2
- package/dist/commands/taskExecution.js.map +1 -1
- package/dist/commands/watchTasks.d.ts +12 -0
- package/dist/commands/watchTasks.d.ts.map +1 -0
- package/dist/commands/watchTasks.js +98 -0
- package/dist/commands/watchTasks.js.map +1 -0
- package/dist/resources/index.d.ts +5 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +33 -9
- package/dist/resources/index.js.map +1 -1
- package/dist/task/display.d.ts.map +1 -1
- package/dist/task/display.js +19 -1
- package/dist/task/display.js.map +1 -1
- package/dist/task/index.d.ts +4 -0
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/index.js +4 -0
- package/dist/task/index.js.map +1 -1
- package/dist/task/parser.d.ts +33 -0
- package/dist/task/parser.d.ts.map +1 -0
- package/dist/task/parser.js +86 -0
- package/dist/task/parser.js.map +1 -0
- package/dist/task/runner.d.ts +6 -0
- package/dist/task/runner.d.ts.map +1 -1
- package/dist/task/runner.js +33 -42
- package/dist/task/runner.js.map +1 -1
- package/dist/task/schema.d.ts +32 -0
- package/dist/task/schema.d.ts.map +1 -0
- package/dist/task/schema.js +31 -0
- package/dist/task/schema.js.map +1 -0
- package/dist/task/watcher.d.ts +33 -0
- package/dist/task/watcher.d.ts.map +1 -0
- package/dist/task/watcher.js +69 -0
- package/dist/task/watcher.js.map +1 -0
- package/dist/task/worktree.d.ts +31 -0
- package/dist/task/worktree.d.ts.map +1 -0
- package/dist/task/worktree.js +112 -0
- package/dist/task/worktree.js.map +1 -0
- package/dist/utils/slug.d.ts +12 -0
- package/dist/utils/slug.d.ts.map +1 -0
- package/dist/utils/slug.js +18 -0
- package/dist/utils/slug.js.map +1 -0
- package/package.json +3 -2
- package/resources/global/ja/agents/default/architect.md +120 -0
- package/resources/global/ja/workflows/default.yaml +12 -0
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { loadWorkflow } from '../config/index.js';
|
|
5
5
|
import { TaskRunner } from '../task/index.js';
|
|
6
|
+
import { createWorktree } from '../task/worktree.js';
|
|
6
7
|
import { header, info, error, success, status, } from '../utils/ui.js';
|
|
7
8
|
import { createLogger } from '../utils/debug.js';
|
|
8
9
|
import { getErrorMessage } from '../utils/error.js';
|
|
@@ -39,7 +40,7 @@ export async function runAllTasks(cwd, workflowName = DEFAULT_WORKFLOW_NAME) {
|
|
|
39
40
|
let task = taskRunner.getNextTask();
|
|
40
41
|
if (!task) {
|
|
41
42
|
info('No pending tasks in .takt/tasks/');
|
|
42
|
-
info('Create task files as .takt/tasks/*.
|
|
43
|
+
info('Create task files as .takt/tasks/*.yaml or use takt /add-task');
|
|
43
44
|
return;
|
|
44
45
|
}
|
|
45
46
|
header('Running tasks');
|
|
@@ -52,7 +53,9 @@ export async function runAllTasks(cwd, workflowName = DEFAULT_WORKFLOW_NAME) {
|
|
|
52
53
|
const startedAt = new Date().toISOString();
|
|
53
54
|
const executionLog = [];
|
|
54
55
|
try {
|
|
55
|
-
|
|
56
|
+
// Resolve execution directory and workflow from task data
|
|
57
|
+
const { execCwd, execWorkflow } = resolveTaskExecution(task, cwd, workflowName);
|
|
58
|
+
const taskSuccess = await executeTask(task.content, execCwd, execWorkflow);
|
|
56
59
|
const completedAt = new Date().toISOString();
|
|
57
60
|
taskRunner.completeTask({
|
|
58
61
|
task,
|
|
@@ -96,4 +99,29 @@ export async function runAllTasks(cwd, workflowName = DEFAULT_WORKFLOW_NAME) {
|
|
|
96
99
|
status('Failed', String(failCount), 'red');
|
|
97
100
|
}
|
|
98
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Resolve execution directory and workflow from task data.
|
|
104
|
+
* If the task has worktree settings, create a worktree and use it as cwd.
|
|
105
|
+
*/
|
|
106
|
+
export function resolveTaskExecution(task, defaultCwd, defaultWorkflow) {
|
|
107
|
+
const data = task.data;
|
|
108
|
+
// No structured data: use defaults
|
|
109
|
+
if (!data) {
|
|
110
|
+
return { execCwd: defaultCwd, execWorkflow: defaultWorkflow };
|
|
111
|
+
}
|
|
112
|
+
let execCwd = defaultCwd;
|
|
113
|
+
// Handle worktree
|
|
114
|
+
if (data.worktree) {
|
|
115
|
+
const result = createWorktree(defaultCwd, {
|
|
116
|
+
worktree: data.worktree,
|
|
117
|
+
branch: data.branch,
|
|
118
|
+
taskSlug: task.name,
|
|
119
|
+
});
|
|
120
|
+
execCwd = result.path;
|
|
121
|
+
info(`Worktree created: ${result.path} (branch: ${result.branch})`);
|
|
122
|
+
}
|
|
123
|
+
// Handle workflow override
|
|
124
|
+
const execWorkflow = data.workflow || defaultWorkflow;
|
|
125
|
+
return { execCwd, execWorkflow };
|
|
126
|
+
}
|
|
99
127
|
//# sourceMappingURL=taskExecution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskExecution.js","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"taskExecution.js","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* /watch command implementation
|
|
3
|
+
*
|
|
4
|
+
* Watches .takt/tasks/ for new task files and executes them automatically.
|
|
5
|
+
* Stays resident until Ctrl+C (SIGINT).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Watch for tasks and execute them as they appear.
|
|
9
|
+
* Runs until Ctrl+C.
|
|
10
|
+
*/
|
|
11
|
+
export declare function watchTasks(cwd: string): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=watchTasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watchTasks.d.ts","sourceRoot":"","sources":["../../src/commands/watchTasks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH;;;GAGG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyF3D"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* /watch command implementation
|
|
3
|
+
*
|
|
4
|
+
* Watches .takt/tasks/ for new task files and executes them automatically.
|
|
5
|
+
* Stays resident until Ctrl+C (SIGINT).
|
|
6
|
+
*/
|
|
7
|
+
import { TaskRunner } from '../task/index.js';
|
|
8
|
+
import { TaskWatcher } from '../task/watcher.js';
|
|
9
|
+
import { getCurrentWorkflow } from '../config/paths.js';
|
|
10
|
+
import { header, info, error, success, status, } from '../utils/ui.js';
|
|
11
|
+
import { getErrorMessage } from '../utils/error.js';
|
|
12
|
+
import { executeTask, resolveTaskExecution } from './taskExecution.js';
|
|
13
|
+
import { DEFAULT_WORKFLOW_NAME } from '../constants.js';
|
|
14
|
+
/**
|
|
15
|
+
* Watch for tasks and execute them as they appear.
|
|
16
|
+
* Runs until Ctrl+C.
|
|
17
|
+
*/
|
|
18
|
+
export async function watchTasks(cwd) {
|
|
19
|
+
const workflowName = getCurrentWorkflow(cwd) || DEFAULT_WORKFLOW_NAME;
|
|
20
|
+
const taskRunner = new TaskRunner(cwd);
|
|
21
|
+
const watcher = new TaskWatcher(cwd);
|
|
22
|
+
let taskCount = 0;
|
|
23
|
+
let successCount = 0;
|
|
24
|
+
let failCount = 0;
|
|
25
|
+
header('TAKT Watch Mode');
|
|
26
|
+
info(`Workflow: ${workflowName}`);
|
|
27
|
+
info(`Watching: ${taskRunner.getTasksDir()}`);
|
|
28
|
+
info('Waiting for tasks... (Ctrl+C to stop)');
|
|
29
|
+
console.log();
|
|
30
|
+
// Graceful shutdown on SIGINT
|
|
31
|
+
const onSigInt = () => {
|
|
32
|
+
console.log();
|
|
33
|
+
info('Stopping watch...');
|
|
34
|
+
watcher.stop();
|
|
35
|
+
};
|
|
36
|
+
process.on('SIGINT', onSigInt);
|
|
37
|
+
try {
|
|
38
|
+
await watcher.watch(async (task) => {
|
|
39
|
+
taskCount++;
|
|
40
|
+
console.log();
|
|
41
|
+
info(`=== Task ${taskCount}: ${task.name} ===`);
|
|
42
|
+
console.log();
|
|
43
|
+
const startedAt = new Date().toISOString();
|
|
44
|
+
const executionLog = [];
|
|
45
|
+
try {
|
|
46
|
+
const { execCwd, execWorkflow } = resolveTaskExecution(task, cwd, workflowName);
|
|
47
|
+
const taskSuccess = await executeTask(task.content, execCwd, execWorkflow);
|
|
48
|
+
const completedAt = new Date().toISOString();
|
|
49
|
+
taskRunner.completeTask({
|
|
50
|
+
task,
|
|
51
|
+
success: taskSuccess,
|
|
52
|
+
response: taskSuccess ? 'Task completed successfully' : 'Task failed',
|
|
53
|
+
executionLog,
|
|
54
|
+
startedAt,
|
|
55
|
+
completedAt,
|
|
56
|
+
});
|
|
57
|
+
if (taskSuccess) {
|
|
58
|
+
successCount++;
|
|
59
|
+
success(`Task "${task.name}" completed`);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
failCount++;
|
|
63
|
+
error(`Task "${task.name}" failed`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
failCount++;
|
|
68
|
+
const completedAt = new Date().toISOString();
|
|
69
|
+
taskRunner.completeTask({
|
|
70
|
+
task,
|
|
71
|
+
success: false,
|
|
72
|
+
response: getErrorMessage(err),
|
|
73
|
+
executionLog,
|
|
74
|
+
startedAt,
|
|
75
|
+
completedAt,
|
|
76
|
+
});
|
|
77
|
+
error(`Task "${task.name}" error: ${getErrorMessage(err)}`);
|
|
78
|
+
}
|
|
79
|
+
console.log();
|
|
80
|
+
info('Waiting for tasks... (Ctrl+C to stop)');
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
process.removeListener('SIGINT', onSigInt);
|
|
85
|
+
}
|
|
86
|
+
// Summary on exit
|
|
87
|
+
if (taskCount > 0) {
|
|
88
|
+
console.log();
|
|
89
|
+
header('Watch Summary');
|
|
90
|
+
status('Total', String(taskCount));
|
|
91
|
+
status('Success', String(successCount), successCount === taskCount ? 'green' : undefined);
|
|
92
|
+
if (failCount > 0) {
|
|
93
|
+
status('Failed', String(failCount), 'red');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
success('Watch stopped.');
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=watchTasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watchTasks.js","sourceRoot":"","sources":["../../src/commands/watchTasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,4 +44,9 @@ export declare function copyProjectResourcesToDir(targetDir: string): void;
|
|
|
44
44
|
* @throws Error if language directory doesn't exist
|
|
45
45
|
*/
|
|
46
46
|
export declare function copyLanguageResourcesToDir(targetDir: string, lang: Language): void;
|
|
47
|
+
/**
|
|
48
|
+
* Force-refresh language-specific resources (agents and workflows) to ~/.takt.
|
|
49
|
+
* Overwrites existing builtin files. Does NOT touch config.yaml.
|
|
50
|
+
*/
|
|
51
|
+
export declare function forceRefreshLanguageResources(targetDir: string, lang: Language): string[];
|
|
47
52
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAIxC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAOhE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAMjE;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CA2BlF"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAIxC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAOhE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAMjE;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CA2BlF;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAwBzF"}
|
package/dist/resources/index.js
CHANGED
|
@@ -48,7 +48,7 @@ export function copyGlobalResourcesToDir(targetDir) {
|
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
50
|
// Skip language directories (they are handled by copyLanguageResourcesToDir)
|
|
51
|
-
copyDirRecursive(resourcesDir, targetDir, ['en', 'ja']);
|
|
51
|
+
copyDirRecursive(resourcesDir, targetDir, { skipDirs: ['en', 'ja'] });
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* Copy project resources directory to .takt in project.
|
|
@@ -93,34 +93,58 @@ export function copyLanguageResourcesToDir(targetDir, lang) {
|
|
|
93
93
|
writeFileSync(targetConfigPath, content);
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Force-refresh language-specific resources (agents and workflows) to ~/.takt.
|
|
98
|
+
* Overwrites existing builtin files. Does NOT touch config.yaml.
|
|
99
|
+
*/
|
|
100
|
+
export function forceRefreshLanguageResources(targetDir, lang) {
|
|
101
|
+
const langDir = getLanguageResourcesDir(lang);
|
|
102
|
+
if (!existsSync(langDir)) {
|
|
103
|
+
throw new Error(`Language resources not found: ${langDir}`);
|
|
104
|
+
}
|
|
105
|
+
const copiedFiles = [];
|
|
106
|
+
const forceOptions = { overwrite: true, copiedFiles };
|
|
107
|
+
// Overwrite agents directory
|
|
108
|
+
const langAgentsDir = join(langDir, 'agents');
|
|
109
|
+
const targetAgentsDir = join(targetDir, 'agents');
|
|
110
|
+
if (existsSync(langAgentsDir)) {
|
|
111
|
+
copyDirRecursive(langAgentsDir, targetAgentsDir, forceOptions);
|
|
112
|
+
}
|
|
113
|
+
// Overwrite workflows directory
|
|
114
|
+
const langWorkflowsDir = join(langDir, 'workflows');
|
|
115
|
+
const targetWorkflowsDir = join(targetDir, 'workflows');
|
|
116
|
+
if (existsSync(langWorkflowsDir)) {
|
|
117
|
+
copyDirRecursive(langWorkflowsDir, targetWorkflowsDir, forceOptions);
|
|
118
|
+
}
|
|
119
|
+
return copiedFiles;
|
|
120
|
+
}
|
|
96
121
|
/** Files to skip during resource copy (OS-generated files) */
|
|
97
122
|
const SKIP_FILES = ['.DS_Store', 'Thumbs.db'];
|
|
98
123
|
/**
|
|
99
124
|
* Recursively copy directory contents.
|
|
100
|
-
*
|
|
101
|
-
*
|
|
125
|
+
* @param overwrite - If false (default), skips files that already exist in target.
|
|
126
|
+
* If true, overwrites existing files.
|
|
102
127
|
*/
|
|
103
|
-
function copyDirRecursive(srcDir, destDir,
|
|
128
|
+
function copyDirRecursive(srcDir, destDir, options = {}) {
|
|
129
|
+
const { skipDirs = [], overwrite = false, copiedFiles } = options;
|
|
104
130
|
if (!existsSync(destDir)) {
|
|
105
131
|
mkdirSync(destDir, { recursive: true });
|
|
106
132
|
}
|
|
107
133
|
for (const entry of readdirSync(srcDir)) {
|
|
108
|
-
// Skip OS-generated files
|
|
109
134
|
if (SKIP_FILES.includes(entry))
|
|
110
135
|
continue;
|
|
111
|
-
// Skip specified directories
|
|
112
136
|
if (skipDirs.includes(entry))
|
|
113
137
|
continue;
|
|
114
138
|
const srcPath = join(srcDir, entry);
|
|
115
139
|
const destPath = join(destDir, entry);
|
|
116
140
|
const stat = statSync(srcPath);
|
|
117
141
|
if (stat.isDirectory()) {
|
|
118
|
-
copyDirRecursive(srcPath, destPath);
|
|
142
|
+
copyDirRecursive(srcPath, destPath, { overwrite, copiedFiles });
|
|
119
143
|
}
|
|
120
|
-
else if (!existsSync(destPath)) {
|
|
121
|
-
// Only copy if file doesn't exist
|
|
144
|
+
else if (overwrite || !existsSync(destPath)) {
|
|
122
145
|
const content = readFileSync(srcPath);
|
|
123
146
|
writeFileSync(destPath, content);
|
|
147
|
+
copiedFiles?.push(destPath);
|
|
124
148
|
}
|
|
125
149
|
}
|
|
126
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC/F,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,mFAAmF;IACnF,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,eAAe,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAc;IACpD,OAAO,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IACD,6EAA6E;IAC7E,gBAAgB,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/task/display.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/task/display.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAqDrD"}
|
package/dist/task/display.js
CHANGED
|
@@ -19,7 +19,8 @@ export function showTaskList(runner) {
|
|
|
19
19
|
if (tasks.length === 0) {
|
|
20
20
|
console.log();
|
|
21
21
|
info('実行待ちのタスクはありません。');
|
|
22
|
-
console.log(chalk.gray(`\n${runner.getTasksDir()}/ にタスクファイル(.md)を配置してください。`));
|
|
22
|
+
console.log(chalk.gray(`\n${runner.getTasksDir()}/ にタスクファイル(.yaml/.md)を配置してください。`));
|
|
23
|
+
console.log(chalk.gray(`または takt /add-task でタスクを追加できます。`));
|
|
23
24
|
return;
|
|
24
25
|
}
|
|
25
26
|
console.log(chalk.green(`\n${tasks.length} 個のタスクがあります:\n`));
|
|
@@ -30,11 +31,28 @@ export function showTaskList(runner) {
|
|
|
30
31
|
const firstLine = task.content.trim().split('\n')[0]?.slice(0, 60) ?? '';
|
|
31
32
|
console.log(chalk.cyan.bold(` [${i + 1}] ${task.name}`));
|
|
32
33
|
console.log(chalk.gray(` ${firstLine}...`));
|
|
34
|
+
// Show worktree/branch info for YAML tasks
|
|
35
|
+
if (task.data) {
|
|
36
|
+
const extras = [];
|
|
37
|
+
if (task.data.worktree) {
|
|
38
|
+
extras.push(`worktree: ${typeof task.data.worktree === 'string' ? task.data.worktree : 'auto'}`);
|
|
39
|
+
}
|
|
40
|
+
if (task.data.branch) {
|
|
41
|
+
extras.push(`branch: ${task.data.branch}`);
|
|
42
|
+
}
|
|
43
|
+
if (task.data.workflow) {
|
|
44
|
+
extras.push(`workflow: ${task.data.workflow}`);
|
|
45
|
+
}
|
|
46
|
+
if (extras.length > 0) {
|
|
47
|
+
console.log(chalk.dim(` [${extras.join(', ')}]`));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
33
50
|
}
|
|
34
51
|
}
|
|
35
52
|
console.log();
|
|
36
53
|
divider('=', 60);
|
|
37
54
|
console.log(chalk.yellow.bold('使用方法:'));
|
|
55
|
+
console.log(chalk.gray(' /add-task タスクを追加'));
|
|
38
56
|
console.log(chalk.gray(' /task run 次のタスクを実行'));
|
|
39
57
|
console.log(chalk.gray(' /task run <name> 指定したタスクを実行'));
|
|
40
58
|
}
|
package/dist/task/display.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/task/display.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGvD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAkB;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAEjC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjB,MAAM,CAAC,YAAY,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEjB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/task/display.ts"],"names":[],"mappings":"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"}
|
package/dist/task/index.d.ts
CHANGED
|
@@ -3,4 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { TaskRunner, type TaskInfo, type TaskResult, } from './runner.js';
|
|
5
5
|
export { showTaskList } from './display.js';
|
|
6
|
+
export { TaskFileSchema, type TaskFileData } from './schema.js';
|
|
7
|
+
export { parseTaskFile, parseTaskFiles, type ParsedTask } from './parser.js';
|
|
8
|
+
export { createWorktree, removeWorktree, type WorktreeOptions, type WorktreeResult } from './worktree.js';
|
|
9
|
+
export { TaskWatcher, type TaskWatcherOptions } from './watcher.js';
|
|
6
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/task/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/task/index.js
CHANGED
|
@@ -3,4 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { TaskRunner, } from './runner.js';
|
|
5
5
|
export { showTaskList } from './display.js';
|
|
6
|
+
export { TaskFileSchema } from './schema.js';
|
|
7
|
+
export { parseTaskFile, parseTaskFiles } from './parser.js';
|
|
8
|
+
export { createWorktree, removeWorktree } from './worktree.js';
|
|
9
|
+
export { TaskWatcher } from './watcher.js';
|
|
6
10
|
//# sourceMappingURL=index.js.map
|
package/dist/task/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,UAAU,GAGX,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,UAAU,GAGX,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAqB,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAmB,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,cAAc,EAA6C,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,WAAW,EAA2B,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task file parser
|
|
3
|
+
*
|
|
4
|
+
* Supports both YAML (.yaml/.yml) and Markdown (.md) task files.
|
|
5
|
+
* YAML files are validated against TaskFileSchema.
|
|
6
|
+
* Markdown files are treated as plain text (backward compatible).
|
|
7
|
+
*/
|
|
8
|
+
import { type TaskFileData } from './schema.js';
|
|
9
|
+
export declare const TASK_EXTENSIONS: string[];
|
|
10
|
+
/** Parsed task with optional structured data */
|
|
11
|
+
export interface ParsedTask {
|
|
12
|
+
filePath: string;
|
|
13
|
+
name: string;
|
|
14
|
+
content: string;
|
|
15
|
+
createdAt: string;
|
|
16
|
+
/** Structured data from YAML files (null for .md files) */
|
|
17
|
+
data: TaskFileData | null;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Check if a file is a supported task file
|
|
21
|
+
*/
|
|
22
|
+
export declare function isTaskFile(filename: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Parse a single task file
|
|
25
|
+
*
|
|
26
|
+
* @throws Error if YAML parsing or validation fails
|
|
27
|
+
*/
|
|
28
|
+
export declare function parseTaskFile(filePath: string): ParsedTask;
|
|
29
|
+
/**
|
|
30
|
+
* List and parse all task files in a directory
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseTaskFiles(tasksDir: string): ParsedTask[];
|
|
33
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/task/parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhE,eAAO,MAAM,eAAe,UAAyC,CAAC;AAEtE,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGpD;AAkBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CA0B1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAiB7D"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task file parser
|
|
3
|
+
*
|
|
4
|
+
* Supports both YAML (.yaml/.yml) and Markdown (.md) task files.
|
|
5
|
+
* YAML files are validated against TaskFileSchema.
|
|
6
|
+
* Markdown files are treated as plain text (backward compatible).
|
|
7
|
+
*/
|
|
8
|
+
import * as fs from 'node:fs';
|
|
9
|
+
import * as path from 'node:path';
|
|
10
|
+
import { parse as parseYaml } from 'yaml';
|
|
11
|
+
import { TaskFileSchema } from './schema.js';
|
|
12
|
+
/** Supported task file extensions */
|
|
13
|
+
const YAML_EXTENSIONS = ['.yaml', '.yml'];
|
|
14
|
+
const MD_EXTENSIONS = ['.md'];
|
|
15
|
+
export const TASK_EXTENSIONS = [...YAML_EXTENSIONS, ...MD_EXTENSIONS];
|
|
16
|
+
/**
|
|
17
|
+
* Check if a file is a supported task file
|
|
18
|
+
*/
|
|
19
|
+
export function isTaskFile(filename) {
|
|
20
|
+
const ext = path.extname(filename).toLowerCase();
|
|
21
|
+
return TASK_EXTENSIONS.includes(ext);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if a file is a YAML task file
|
|
25
|
+
*/
|
|
26
|
+
function isYamlFile(filename) {
|
|
27
|
+
const ext = path.extname(filename).toLowerCase();
|
|
28
|
+
return YAML_EXTENSIONS.includes(ext);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the task name from a filename (without extension)
|
|
32
|
+
*/
|
|
33
|
+
function getTaskName(filename) {
|
|
34
|
+
const ext = path.extname(filename);
|
|
35
|
+
return path.basename(filename, ext);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Parse a single task file
|
|
39
|
+
*
|
|
40
|
+
* @throws Error if YAML parsing or validation fails
|
|
41
|
+
*/
|
|
42
|
+
export function parseTaskFile(filePath) {
|
|
43
|
+
const rawContent = fs.readFileSync(filePath, 'utf-8');
|
|
44
|
+
const stat = fs.statSync(filePath);
|
|
45
|
+
const filename = path.basename(filePath);
|
|
46
|
+
const name = getTaskName(filename);
|
|
47
|
+
if (isYamlFile(filename)) {
|
|
48
|
+
const parsed = parseYaml(rawContent);
|
|
49
|
+
const validated = TaskFileSchema.parse(parsed);
|
|
50
|
+
return {
|
|
51
|
+
filePath,
|
|
52
|
+
name,
|
|
53
|
+
content: validated.task,
|
|
54
|
+
createdAt: stat.birthtime.toISOString(),
|
|
55
|
+
data: validated,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// Markdown file: plain text, no structured data
|
|
59
|
+
return {
|
|
60
|
+
filePath,
|
|
61
|
+
name,
|
|
62
|
+
content: rawContent,
|
|
63
|
+
createdAt: stat.birthtime.toISOString(),
|
|
64
|
+
data: null,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* List and parse all task files in a directory
|
|
69
|
+
*/
|
|
70
|
+
export function parseTaskFiles(tasksDir) {
|
|
71
|
+
const tasks = [];
|
|
72
|
+
const files = fs.readdirSync(tasksDir)
|
|
73
|
+
.filter(isTaskFile)
|
|
74
|
+
.sort();
|
|
75
|
+
for (const file of files) {
|
|
76
|
+
const filePath = path.join(tasksDir, file);
|
|
77
|
+
try {
|
|
78
|
+
tasks.push(parseTaskFile(filePath));
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Skip files that fail to parse
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return tasks;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/task/parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAqB,MAAM,aAAa,CAAC;AAEhE,qCAAqC;AACrC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1C,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,aAAa,CAAC,CAAC;AAYtE;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,QAAgB;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,QAAgB;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAY,CAAC;QAChD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO;YACL,QAAQ;YACR,IAAI;YACJ,OAAO,EAAE,SAAS,CAAC,IAAI;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,gDAAgD;IAChD,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,OAAO,EAAE,UAAU;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;QACvC,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,KAAK,GAAiB,EAAE,CAAC;IAE/B,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;SACnC,MAAM,CAAC,UAAU,CAAC;SAClB,IAAI,EAAE,CAAC;IAEV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/task/runner.d.ts
CHANGED
|
@@ -4,18 +4,23 @@
|
|
|
4
4
|
* .takt/tasks/ ディレクトリ内のタスクファイルを読み込み、
|
|
5
5
|
* 順番に実行してレポートを生成する。
|
|
6
6
|
*
|
|
7
|
+
* Supports both .md (plain text) and .yaml/.yml (structured) task files.
|
|
8
|
+
*
|
|
7
9
|
* 使用方法:
|
|
8
10
|
* /task # タスク一覧を表示
|
|
9
11
|
* /task run # 次のタスクを実行
|
|
10
12
|
* /task run <filename> # 指定したタスクを実行
|
|
11
13
|
* /task list # タスク一覧を表示
|
|
12
14
|
*/
|
|
15
|
+
import type { TaskFileData } from './schema.js';
|
|
13
16
|
/** タスク情報 */
|
|
14
17
|
export interface TaskInfo {
|
|
15
18
|
filePath: string;
|
|
16
19
|
name: string;
|
|
17
20
|
content: string;
|
|
18
21
|
createdAt: string;
|
|
22
|
+
/** Structured data from YAML files (null for .md files) */
|
|
23
|
+
data: TaskFileData | null;
|
|
19
24
|
}
|
|
20
25
|
/** タスク実行結果 */
|
|
21
26
|
export interface TaskResult {
|
|
@@ -45,6 +50,7 @@ export declare class TaskRunner {
|
|
|
45
50
|
listTasks(): TaskInfo[];
|
|
46
51
|
/**
|
|
47
52
|
* 指定した名前のタスクを取得
|
|
53
|
+
* Searches for .yaml, .yml, and .md files in that order.
|
|
48
54
|
*/
|
|
49
55
|
getTask(name: string): TaskInfo | null;
|
|
50
56
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/task/runner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/task/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,YAAY;AACZ,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;CAC3B;AAED,cAAc;AACd,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAS;gBAEjB,UAAU,EAAE,MAAM;IAM9B,kBAAkB;IAClB,UAAU,IAAI,IAAI;IAKlB,sBAAsB;IACtB,WAAW,IAAI,MAAM;IAIrB;;;OAGG;IACH,SAAS,IAAI,QAAQ,EAAE;IAgBvB;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAsBtC;;OAEG;IACH,WAAW,IAAI,QAAQ,GAAG,IAAI;IAK9B;;;;;;;OAOG;IACH,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAsCxC;;OAEG;IACH,OAAO,CAAC,cAAc;CA2BvB"}
|