takt 0.1.7 → 0.2.1
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 +179 -43
- package/dist/agents/runner.d.ts +3 -1
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +15 -0
- package/dist/agents/runner.js.map +1 -1
- package/dist/claude/client.d.ts +3 -1
- package/dist/claude/client.d.ts.map +1 -1
- package/dist/claude/client.js +17 -0
- package/dist/claude/client.js.map +1 -1
- package/dist/cli.d.ts +9 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +73 -18
- 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 +119 -0
- package/dist/commands/addTask.js.map +1 -0
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +18 -5
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +4 -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/reviewTasks.d.ts +32 -0
- package/dist/commands/reviewTasks.d.ts.map +1 -0
- package/dist/commands/reviewTasks.js +198 -0
- package/dist/commands/reviewTasks.js.map +1 -0
- package/dist/commands/taskExecution.d.ts +24 -1
- package/dist/commands/taskExecution.d.ts.map +1 -1
- package/dist/commands/taskExecution.js +100 -36
- 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 +68 -0
- package/dist/commands/watchTasks.js.map +1 -0
- package/dist/commands/workflowExecution.d.ts +5 -1
- package/dist/commands/workflowExecution.d.ts.map +1 -1
- package/dist/commands/workflowExecution.js +35 -12
- package/dist/commands/workflowExecution.js.map +1 -1
- package/dist/config/initialization.d.ts +2 -0
- package/dist/config/initialization.d.ts.map +1 -1
- package/dist/config/initialization.js +12 -2
- package/dist/config/initialization.js.map +1 -1
- package/dist/config/paths.d.ts +1 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +1 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/sessionStore.d.ts +5 -0
- package/dist/config/sessionStore.d.ts.map +1 -1
- package/dist/config/sessionStore.js +1 -1
- package/dist/config/sessionStore.js.map +1 -1
- package/dist/config/workflowLoader.d.ts.map +1 -1
- package/dist/config/workflowLoader.js +1 -0
- package/dist/config/workflowLoader.js.map +1 -1
- package/dist/models/schemas.d.ts +22 -0
- package/dist/models/schemas.d.ts.map +1 -1
- package/dist/models/schemas.js +8 -0
- package/dist/models/schemas.js.map +1 -1
- package/dist/models/types.d.ts +8 -2
- package/dist/models/types.d.ts.map +1 -1
- package/dist/prompt/index.d.ts +60 -11
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +246 -72
- package/dist/prompt/index.js.map +1 -1
- package/dist/providers/claude.d.ts.map +1 -1
- package/dist/providers/claude.js +2 -0
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/index.d.ts +3 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- 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/autoCommit.d.ts +28 -0
- package/dist/task/autoCommit.d.ts.map +1 -0
- package/dist/task/autoCommit.js +68 -0
- package/dist/task/autoCommit.js.map +1 -0
- 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 +5 -0
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/index.js +5 -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 +70 -0
- package/dist/task/worktree.d.ts.map +1 -0
- package/dist/task/worktree.js +221 -0
- package/dist/task/worktree.js.map +1 -0
- package/dist/utils/debug.d.ts +6 -1
- package/dist/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +30 -24
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/session.d.ts +20 -0
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +32 -3
- package/dist/utils/session.js.map +1 -1
- 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/dist/utils/text.d.ts +22 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +54 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/workflow/engine.d.ts +5 -6
- package/dist/workflow/engine.d.ts.map +1 -1
- package/dist/workflow/engine.js +32 -12
- package/dist/workflow/engine.js.map +1 -1
- package/dist/workflow/index.d.ts +2 -2
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +2 -2
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/instruction-builder.d.ts +31 -2
- package/dist/workflow/instruction-builder.d.ts.map +1 -1
- package/dist/workflow/instruction-builder.js +69 -1
- package/dist/workflow/instruction-builder.js.map +1 -1
- package/dist/workflow/transitions.d.ts.map +1 -1
- package/dist/workflow/transitions.js +1 -0
- package/dist/workflow/transitions.js.map +1 -1
- package/dist/workflow/types.d.ts +5 -1
- package/dist/workflow/types.d.ts.map +1 -1
- package/package.json +3 -2
- package/resources/global/en/workflows/default.yaml +22 -1
- package/resources/global/en/workflows/simple.yaml +18 -1
- package/resources/global/ja/agents/default/ai-reviewer.md +24 -1
- package/resources/global/ja/agents/default/architect.md +157 -4
- package/resources/global/ja/agents/default/coder.md +1 -0
- package/resources/global/ja/workflows/default.yaml +38 -1
- package/resources/global/ja/workflows/expert-review.yaml +169 -10
- package/resources/global/ja/workflows/simple.yaml +18 -1
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":"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,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACzD,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IACD,gBAAgB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,SAAiB,EAAE,IAAc;IAC1E,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,wBAAwB;IACxB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IACnD,CAAC;IAED,2BAA2B;IAC3B,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,gBAAgB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;IACzD,CAAC;IAED,6BAA6B;IAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAC7C,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,SAAiB,EAAE,IAAc;IAC7E,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAEtD,6BAA6B;IAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,gBAAgB,CAAC,aAAa,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;IAED,gCAAgC;IAChC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,gBAAgB,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAW9C;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAc,EAAE,OAAe,EAAE,UAAuB,EAAE;IAClF,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,SAAS,GAAG,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAElE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QACzC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE/B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACtC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-commit for worktree tasks
|
|
3
|
+
*
|
|
4
|
+
* After a successful workflow completion in a worktree,
|
|
5
|
+
* automatically stages all changes and creates a commit.
|
|
6
|
+
* No co-author trailer is added.
|
|
7
|
+
*/
|
|
8
|
+
export interface AutoCommitResult {
|
|
9
|
+
/** Whether the commit was created successfully */
|
|
10
|
+
success: boolean;
|
|
11
|
+
/** The short commit hash (if committed) */
|
|
12
|
+
commitHash?: string;
|
|
13
|
+
/** Human-readable message */
|
|
14
|
+
message: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Auto-commit all changes in a worktree directory.
|
|
18
|
+
*
|
|
19
|
+
* Steps:
|
|
20
|
+
* 1. Stage all changes (git add -A)
|
|
21
|
+
* 2. Check if there are staged changes (git status --porcelain)
|
|
22
|
+
* 3. If changes exist, create a commit with "takt: {taskName}"
|
|
23
|
+
*
|
|
24
|
+
* @param worktreeCwd - The worktree directory
|
|
25
|
+
* @param taskName - Task name used in commit message
|
|
26
|
+
*/
|
|
27
|
+
export declare function autoCommitWorktree(worktreeCwd: string, taskName: string): AutoCommitResult;
|
|
28
|
+
//# sourceMappingURL=autoCommit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoCommit.d.ts","sourceRoot":"","sources":["../../src/task/autoCommit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAoD1F"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-commit for worktree tasks
|
|
3
|
+
*
|
|
4
|
+
* After a successful workflow completion in a worktree,
|
|
5
|
+
* automatically stages all changes and creates a commit.
|
|
6
|
+
* No co-author trailer is added.
|
|
7
|
+
*/
|
|
8
|
+
import { execFileSync } from 'node:child_process';
|
|
9
|
+
import { createLogger } from '../utils/debug.js';
|
|
10
|
+
const log = createLogger('autoCommit');
|
|
11
|
+
/**
|
|
12
|
+
* Auto-commit all changes in a worktree directory.
|
|
13
|
+
*
|
|
14
|
+
* Steps:
|
|
15
|
+
* 1. Stage all changes (git add -A)
|
|
16
|
+
* 2. Check if there are staged changes (git status --porcelain)
|
|
17
|
+
* 3. If changes exist, create a commit with "takt: {taskName}"
|
|
18
|
+
*
|
|
19
|
+
* @param worktreeCwd - The worktree directory
|
|
20
|
+
* @param taskName - Task name used in commit message
|
|
21
|
+
*/
|
|
22
|
+
export function autoCommitWorktree(worktreeCwd, taskName) {
|
|
23
|
+
log.info('Auto-commit starting', { cwd: worktreeCwd, taskName });
|
|
24
|
+
try {
|
|
25
|
+
// Stage all changes
|
|
26
|
+
execFileSync('git', ['add', '-A'], {
|
|
27
|
+
cwd: worktreeCwd,
|
|
28
|
+
stdio: 'pipe',
|
|
29
|
+
});
|
|
30
|
+
// Check if there are staged changes
|
|
31
|
+
const statusOutput = execFileSync('git', ['status', '--porcelain'], {
|
|
32
|
+
cwd: worktreeCwd,
|
|
33
|
+
stdio: 'pipe',
|
|
34
|
+
encoding: 'utf-8',
|
|
35
|
+
});
|
|
36
|
+
if (!statusOutput.trim()) {
|
|
37
|
+
log.info('No changes to commit');
|
|
38
|
+
return { success: true, message: 'No changes to commit' };
|
|
39
|
+
}
|
|
40
|
+
// Create commit (no co-author)
|
|
41
|
+
const commitMessage = `takt: ${taskName}`;
|
|
42
|
+
execFileSync('git', ['commit', '-m', commitMessage], {
|
|
43
|
+
cwd: worktreeCwd,
|
|
44
|
+
stdio: 'pipe',
|
|
45
|
+
});
|
|
46
|
+
// Get the short commit hash
|
|
47
|
+
const commitHash = execFileSync('git', ['rev-parse', '--short', 'HEAD'], {
|
|
48
|
+
cwd: worktreeCwd,
|
|
49
|
+
stdio: 'pipe',
|
|
50
|
+
encoding: 'utf-8',
|
|
51
|
+
}).trim();
|
|
52
|
+
log.info('Auto-commit created', { commitHash, message: commitMessage });
|
|
53
|
+
return {
|
|
54
|
+
success: true,
|
|
55
|
+
commitHash,
|
|
56
|
+
message: `Committed: ${commitHash} - ${commitMessage}`,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
61
|
+
log.error('Auto-commit failed', { error: errorMessage });
|
|
62
|
+
return {
|
|
63
|
+
success: false,
|
|
64
|
+
message: `Auto-commit failed: ${errorMessage}`,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=autoCommit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoCommit.js","sourceRoot":"","sources":["../../src/task/autoCommit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAWvC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB,EAAE,QAAgB;IACtE,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEjE,IAAI,CAAC;QACH,oBAAoB;QACpB,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;YACjC,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,oCAAoC;QACpC,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE;YAClE,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAC5D,CAAC;QAED,+BAA+B;QAC/B,MAAM,aAAa,GAAG,SAAS,QAAQ,EAAE,CAAC;QAC1C,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE;YACnD,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;YACvE,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QAExE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,UAAU;YACV,OAAO,EAAE,cAAc,UAAU,MAAM,aAAa,EAAE;SACvD,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtE,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAEzD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,uBAAuB,YAAY,EAAE;SAC/C,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -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,9 @@
|
|
|
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, detectDefaultBranch, parseTaktWorktrees, listTaktWorktrees, getFilesChanged, extractTaskSlug, buildReviewItems, type WorktreeOptions, type WorktreeResult, type WorktreeInfo, type WorktreeReviewItem, } from './worktree.js';
|
|
9
|
+
export { autoCommitWorktree, type AutoCommitResult } from './autoCommit.js';
|
|
10
|
+
export { TaskWatcher, type TaskWatcherOptions } from './watcher.js';
|
|
6
11
|
//# 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,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/task/index.js
CHANGED
|
@@ -3,4 +3,9 @@
|
|
|
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, detectDefaultBranch, parseTaktWorktrees, listTaktWorktrees, getFilesChanged, extractTaskSlug, buildReviewItems, } from './worktree.js';
|
|
9
|
+
export { autoCommitWorktree } from './autoCommit.js';
|
|
10
|
+
export { TaskWatcher } from './watcher.js';
|
|
6
11
|
//# 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,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,GAKjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAyB,MAAM,iBAAiB,CAAC;AAC5E,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"}
|
package/dist/task/runner.js
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
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 # 次のタスクを実行
|
|
@@ -12,6 +14,7 @@
|
|
|
12
14
|
*/
|
|
13
15
|
import * as fs from 'node:fs';
|
|
14
16
|
import * as path from 'node:path';
|
|
17
|
+
import { parseTaskFiles, parseTaskFile } from './parser.js';
|
|
15
18
|
/**
|
|
16
19
|
* タスク実行管理クラス
|
|
17
20
|
*/
|
|
@@ -39,27 +42,9 @@ export class TaskRunner {
|
|
|
39
42
|
*/
|
|
40
43
|
listTasks() {
|
|
41
44
|
this.ensureDirs();
|
|
42
|
-
const tasks = [];
|
|
43
45
|
try {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
.sort();
|
|
47
|
-
for (const file of files) {
|
|
48
|
-
const filePath = path.join(this.tasksDir, file);
|
|
49
|
-
try {
|
|
50
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
51
|
-
const stat = fs.statSync(filePath);
|
|
52
|
-
tasks.push({
|
|
53
|
-
filePath,
|
|
54
|
-
name: path.basename(file, '.md'),
|
|
55
|
-
content,
|
|
56
|
-
createdAt: stat.birthtime.toISOString(),
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
// ファイル読み込みエラーはスキップ
|
|
61
|
-
}
|
|
62
|
-
}
|
|
46
|
+
const parsed = parseTaskFiles(this.tasksDir);
|
|
47
|
+
return parsed.map(toTaskInfo);
|
|
63
48
|
}
|
|
64
49
|
catch (err) {
|
|
65
50
|
const nodeErr = err;
|
|
@@ -67,35 +52,30 @@ export class TaskRunner {
|
|
|
67
52
|
throw err; // 予期しないエラーは再スロー
|
|
68
53
|
}
|
|
69
54
|
// ENOENT は許容(ディレクトリ未作成)
|
|
55
|
+
return [];
|
|
70
56
|
}
|
|
71
|
-
return tasks;
|
|
72
57
|
}
|
|
73
58
|
/**
|
|
74
59
|
* 指定した名前のタスクを取得
|
|
60
|
+
* Searches for .yaml, .yml, and .md files in that order.
|
|
75
61
|
*/
|
|
76
62
|
getTask(name) {
|
|
77
63
|
this.ensureDirs();
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
catch (err) {
|
|
93
|
-
const nodeErr = err;
|
|
94
|
-
if (nodeErr.code !== 'ENOENT') {
|
|
95
|
-
throw err; // 予期しないエラーは再スロー
|
|
64
|
+
const extensions = ['.yaml', '.yml', '.md'];
|
|
65
|
+
for (const ext of extensions) {
|
|
66
|
+
const filePath = path.join(this.tasksDir, `${name}${ext}`);
|
|
67
|
+
if (!fs.existsSync(filePath)) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const parsed = parseTaskFile(filePath);
|
|
72
|
+
return toTaskInfo(parsed);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Parse error: skip this extension
|
|
96
76
|
}
|
|
97
|
-
return null;
|
|
98
77
|
}
|
|
78
|
+
return null;
|
|
99
79
|
}
|
|
100
80
|
/**
|
|
101
81
|
* 次に実行すべきタスクを取得(最初のタスク)
|
|
@@ -119,8 +99,9 @@ export class TaskRunner {
|
|
|
119
99
|
// 完了ディレクトリにサブディレクトリを作成
|
|
120
100
|
const taskCompletedDir = path.join(this.completedDir, `${timestamp}_${result.task.name}`);
|
|
121
101
|
fs.mkdirSync(taskCompletedDir, { recursive: true });
|
|
122
|
-
//
|
|
123
|
-
const
|
|
102
|
+
// 元のタスクファイルを移動(元の拡張子を保持)
|
|
103
|
+
const originalExt = path.extname(result.task.filePath);
|
|
104
|
+
const completedTaskFile = path.join(taskCompletedDir, `${result.task.name}${originalExt}`);
|
|
124
105
|
fs.renameSync(result.task.filePath, completedTaskFile);
|
|
125
106
|
// レポートを生成
|
|
126
107
|
const reportFile = path.join(taskCompletedDir, 'report.md');
|
|
@@ -169,4 +150,14 @@ ${result.response}
|
|
|
169
150
|
`;
|
|
170
151
|
}
|
|
171
152
|
}
|
|
153
|
+
/** Convert ParsedTask to TaskInfo */
|
|
154
|
+
function toTaskInfo(parsed) {
|
|
155
|
+
return {
|
|
156
|
+
filePath: parsed.filePath,
|
|
157
|
+
name: parsed.name,
|
|
158
|
+
content: parsed.content,
|
|
159
|
+
createdAt: parsed.createdAt,
|
|
160
|
+
data: parsed.data,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
172
163
|
//# sourceMappingURL=runner.js.map
|
package/dist/task/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/task/runner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/task/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task YAML schema definition
|
|
3
|
+
*
|
|
4
|
+
* Zod schema for structured task files (.yaml/.yml)
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod/v4';
|
|
7
|
+
/**
|
|
8
|
+
* YAML task file schema
|
|
9
|
+
*
|
|
10
|
+
* Examples:
|
|
11
|
+
* task: "認証機能を追加する"
|
|
12
|
+
* worktree: true # .takt/worktrees/{timestamp}-{task-slug}/ に作成
|
|
13
|
+
* branch: "feat/add-auth" # オプション(省略時は自動生成)
|
|
14
|
+
* workflow: "default" # オプション(省略時はcurrent workflow)
|
|
15
|
+
*
|
|
16
|
+
* worktree patterns:
|
|
17
|
+
* - true: create at .takt/worktrees/{timestamp}-{task-slug}/
|
|
18
|
+
* - "/path/to/dir": create at specified path
|
|
19
|
+
* - omitted: no worktree (run in cwd)
|
|
20
|
+
*
|
|
21
|
+
* branch patterns:
|
|
22
|
+
* - "feat/xxx": use specified branch name
|
|
23
|
+
* - omitted: auto-generate as takt/{timestamp}-{task-slug}
|
|
24
|
+
*/
|
|
25
|
+
export declare const TaskFileSchema: z.ZodObject<{
|
|
26
|
+
task: z.ZodString;
|
|
27
|
+
worktree: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
|
|
28
|
+
branch: z.ZodOptional<z.ZodString>;
|
|
29
|
+
workflow: z.ZodOptional<z.ZodString>;
|
|
30
|
+
}, z.core.$strip>;
|
|
31
|
+
export type TaskFileData = z.infer<typeof TaskFileSchema>;
|
|
32
|
+
//# sourceMappingURL=schema.d.ts.map
|