workflow-ai 1.0.42 → 1.0.44

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "workflow-ai",
3
- "version": "1.0.42",
3
+ "version": "1.0.44",
4
4
  "description": "AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -21,6 +21,12 @@
21
21
  "configs/",
22
22
  "agent-templates/"
23
23
  ],
24
+ "exports": {
25
+ "./lib/find-root.mjs": "./src/lib/find-root.mjs",
26
+ "./lib/utils.mjs": "./src/lib/utils.mjs",
27
+ "./lib/logger.mjs": "./src/lib/logger.mjs",
28
+ "./lib/js-yaml.mjs": "./src/lib/js-yaml.mjs"
29
+ },
24
30
  "engines": {
25
31
  "node": ">=18.0.0"
26
32
  },
package/src/init.mjs CHANGED
@@ -95,13 +95,16 @@ function generateSkillsTable(workflowRoot) {
95
95
  'move-ticket': 'Перемещение тикета',
96
96
  'pick-next-task': 'Выбор следующей задачи',
97
97
  'decompose-gaps': 'Декомпозиция пробелов',
98
- 'review-result': 'Ревью результата'
98
+ 'review-result': 'Ревью результата',
99
+ 'check-relevance': 'Проверка актуальности',
100
+ 'coach': 'Коуч скилов',
101
+ 'deep-research': 'Глубокий ресерч'
99
102
  };
100
103
 
101
104
  let table = '| Задача | Инструкция |\n|--------|------------|\n';
102
105
 
103
106
  const skillDirs = readdirSync(skillsDir, { withFileTypes: true })
104
- .filter(entry => entry.isDirectory())
107
+ .filter(entry => entry.isDirectory() || entry.isSymbolicLink())
105
108
  .map(entry => entry.name);
106
109
 
107
110
  for (const skillDir of skillDirs) {
@@ -234,7 +237,18 @@ function generateQwenMd(workflowRoot, projectRoot, packageRoot) {
234
237
  */
235
238
  function updateGitignore(projectRoot) {
236
239
  const gitignorePath = join(projectRoot, '.gitignore');
237
- const linesToAdd = ['.workflow/logs/'];
240
+ const linesToAdd = [
241
+ '',
242
+ '# Workflow AI specific',
243
+ '.workflow-state/',
244
+ '.cache/',
245
+ '.workflow/',
246
+ '',
247
+ '# AI',
248
+ 'QWEN.md',
249
+ 'CLAUDE.md',
250
+ '.kilocode/',
251
+ ];
238
252
 
239
253
  let currentContent = '';
240
254
  if (existsSync(gitignorePath)) {
@@ -243,10 +257,9 @@ function updateGitignore(projectRoot) {
243
257
 
244
258
  const existingLines = currentContent.split('\n').map(line => line.trim());
245
259
 
246
- for (const line of linesToAdd) {
247
- if (!existingLines.includes(line)) {
248
- appendFileSync(gitignorePath, line + '\n');
249
- }
260
+ const newLines = linesToAdd.filter(line => line === '' || !existingLines.includes(line));
261
+ if (newLines.some(line => line !== '')) {
262
+ appendFileSync(gitignorePath, newLines.join('\n') + '\n');
250
263
  }
251
264
  }
252
265
 
package/src/runner.mjs CHANGED
@@ -622,7 +622,7 @@ class FileGuard {
622
622
  const entries = fs.readdirSync(dir, { withFileTypes: true });
623
623
  for (const entry of entries) {
624
624
  const entryPath = path.join(dir, entry.name).replace(/\\/g, '/');
625
- if (entry.isDirectory()) {
625
+ if (entry.isDirectory() || entry.isSymbolicLink()) {
626
626
  files.push(...this._getAllFiles(entryPath));
627
627
  } else {
628
628
  files.push(entryPath);