@autocode-cli/autocode 0.1.31 → 0.1.33
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 +33 -3
- package/dist/cli/commands/health.d.ts +9 -0
- package/dist/cli/commands/health.d.ts.map +1 -0
- package/dist/cli/commands/health.js +101 -0
- package/dist/cli/commands/health.js.map +1 -0
- package/dist/cli/commands/init.js +1 -1
- package/dist/cli/commands/move.d.ts.map +1 -1
- package/dist/cli/commands/move.js +14 -7
- package/dist/cli/commands/move.js.map +1 -1
- package/dist/cli/parser.d.ts.map +1 -1
- package/dist/cli/parser.js +2 -0
- package/dist/cli/parser.js.map +1 -1
- package/dist/core/hierarchy.d.ts +24 -0
- package/dist/core/hierarchy.d.ts.map +1 -1
- package/dist/core/hierarchy.js +76 -0
- package/dist/core/hierarchy.js.map +1 -1
- package/dist/core/issue.d.ts.map +1 -1
- package/dist/core/issue.js +11 -3
- package/dist/core/issue.js.map +1 -1
- package/dist/core/loop-detector.d.ts +45 -0
- package/dist/core/loop-detector.d.ts.map +1 -0
- package/dist/core/loop-detector.js +81 -0
- package/dist/core/loop-detector.js.map +1 -0
- package/dist/core/validation.d.ts +26 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +67 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/core/workflow.d.ts.map +1 -1
- package/dist/core/workflow.js +34 -1
- package/dist/core/workflow.js.map +1 -1
- package/dist/server/api.d.ts.map +1 -1
- package/dist/server/api.js +23 -2
- package/dist/server/api.js.map +1 -1
- package/dist/server/dashboard/pages/changelog.js +2 -2
- package/dist/server/dashboard/pages/changelog.js.map +1 -1
- package/dist/server/dashboard/pages/main-dashboard.js +1 -1
- package/dist/server/dashboard/pages/main-dashboard.js.map +1 -1
- package/dist/server/dashboard/pages/new-issue.d.ts.map +1 -1
- package/dist/server/dashboard/pages/new-issue.js +347 -3
- package/dist/server/dashboard/pages/new-issue.js.map +1 -1
- package/dist/server/dashboard/pages/new-issue.test.js +475 -0
- package/dist/server/dashboard/pages/new-issue.test.js.map +1 -1
- package/dist/server/watcher.d.ts +1 -1
- package/dist/server/watcher.js +1 -1
- package/dist/services/issue-io.d.ts +1 -1
- package/dist/services/issue-io.js +1 -1
- package/dist/services/monitoring.d.ts +47 -0
- package/dist/services/monitoring.d.ts.map +1 -0
- package/dist/services/monitoring.js +136 -0
- package/dist/services/monitoring.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/config.js +2 -2
- package/dist/utils/config.js.map +1 -1
- package/package.json +2 -1
- package/templates/prompts/in-progress.en.md +25 -9
- package/templates/prompts/in-progress.fr.md +25 -9
package/README.md
CHANGED
|
@@ -53,6 +53,36 @@ All data is stored as files (Markdown + YAML) - no database required, Git-friend
|
|
|
53
53
|
| **REST API** | Full API for integrations and automations |
|
|
54
54
|
| **Multi-language** | Supports English and French |
|
|
55
55
|
| **Issue Hierarchy** | Parent-child relationships between issues |
|
|
56
|
+
| **Speech-to-Text** | Voice dictation for issue creation with autocomplete |
|
|
57
|
+
|
|
58
|
+
## Speech-to-Text Feature
|
|
59
|
+
|
|
60
|
+
The dashboard includes voice dictation for quick issue creation:
|
|
61
|
+
|
|
62
|
+
### How it works
|
|
63
|
+
|
|
64
|
+
1. **Click the microphone button** next to the title field on the New Issue page
|
|
65
|
+
2. **Speak your issue title** - the text is transcribed in real-time
|
|
66
|
+
3. **Autocomplete triggers** - after you stop speaking, a 3-second countdown starts
|
|
67
|
+
4. **AI fills the form** - Claude suggests description, priority, labels, and acceptance criteria
|
|
68
|
+
|
|
69
|
+
### Supported browsers
|
|
70
|
+
|
|
71
|
+
| Browser | Support |
|
|
72
|
+
|---------|---------|
|
|
73
|
+
| Chrome | Full support |
|
|
74
|
+
| Edge | Full support |
|
|
75
|
+
| Safari | Full support (webkit) |
|
|
76
|
+
| Firefox | Not supported (button disabled) |
|
|
77
|
+
|
|
78
|
+
### Language support
|
|
79
|
+
|
|
80
|
+
- **French** (fr-FR) - Select "FR" in the language switcher
|
|
81
|
+
- **English** (en-US) - Select "EN" in the language switcher
|
|
82
|
+
|
|
83
|
+
### Fallback behavior
|
|
84
|
+
|
|
85
|
+
On unsupported browsers, the microphone button is automatically disabled with a tooltip explaining the limitation. A notification appears if the user attempts to click it.
|
|
56
86
|
|
|
57
87
|
## Installation
|
|
58
88
|
|
|
@@ -98,7 +128,7 @@ autocode serve
|
|
|
98
128
|
## Options
|
|
99
129
|
|
|
100
130
|
### init
|
|
101
|
-
- `-d, --dir <path>` - Root directory (default:
|
|
131
|
+
- `-d, --dir <path>` - Root directory (default: autocode)
|
|
102
132
|
- `-l, --lang <lang>` - Language (en/fr)
|
|
103
133
|
|
|
104
134
|
### new
|
|
@@ -149,7 +179,7 @@ The default workflow includes a customizable pipeline. Here's an example TDD app
|
|
|
149
179
|
## Project Structure
|
|
150
180
|
|
|
151
181
|
```
|
|
152
|
-
|
|
182
|
+
autocode/
|
|
153
183
|
├── .autocode/
|
|
154
184
|
│ └── .seq # Issue sequence counter
|
|
155
185
|
├── 00_backlog/
|
|
@@ -238,7 +268,7 @@ When running `autocode serve`:
|
|
|
238
268
|
|
|
239
269
|
| Variable | Description | Default |
|
|
240
270
|
|----------|-------------|---------|
|
|
241
|
-
| `AUTOCODE_ROOT` | Root directory for issues | `
|
|
271
|
+
| `AUTOCODE_ROOT` | Root directory for issues | `autocode` |
|
|
242
272
|
| `AUTOCODE_LANG` | Language (en/fr) | `fr` |
|
|
243
273
|
| `AUTOCODE_PORT` | Dashboard port | `3333` |
|
|
244
274
|
| `AUTOCODE_CLAUDE` | Enable Claude integration | `true` |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/health.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAqFvC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* health command - Check workflow health and detect stuck issues
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { generateMonitoringReport } from '../../services/monitoring.js';
|
|
6
|
+
import { getConfig } from '../../utils/config.js';
|
|
7
|
+
import { logger } from '../../utils/logger.js';
|
|
8
|
+
/**
|
|
9
|
+
* Create the health command
|
|
10
|
+
*/
|
|
11
|
+
export function healthCommand() {
|
|
12
|
+
const cmd = new Command('health');
|
|
13
|
+
cmd
|
|
14
|
+
.description('Check workflow health and detect stuck issues')
|
|
15
|
+
.option('--json', 'Output as JSON')
|
|
16
|
+
.option('-v, --verbose', 'Show detailed information')
|
|
17
|
+
.action((options) => {
|
|
18
|
+
const config = getConfig();
|
|
19
|
+
const report = generateMonitoringReport(config.root);
|
|
20
|
+
// JSON output
|
|
21
|
+
if (options.json) {
|
|
22
|
+
console.log(JSON.stringify(report, null, 2));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// Quick status
|
|
26
|
+
if (report.healthy) {
|
|
27
|
+
logger.success('All issues healthy');
|
|
28
|
+
logger.row('Total issues', String(report.summary.totalIssues));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Show problems
|
|
32
|
+
const errorCount = report.stuckIssues.filter(s => s.severity === 'error').length;
|
|
33
|
+
const warningCount = report.stuckIssues.filter(s => s.severity === 'warning').length;
|
|
34
|
+
if (errorCount > 0) {
|
|
35
|
+
logger.error(`${errorCount} issue(s) need attention`);
|
|
36
|
+
}
|
|
37
|
+
if (warningCount > 0) {
|
|
38
|
+
logger.warn(`${warningCount} warning(s)`);
|
|
39
|
+
}
|
|
40
|
+
logger.separator();
|
|
41
|
+
// Group by reason
|
|
42
|
+
const byReason = new Map();
|
|
43
|
+
for (const stuck of report.stuckIssues) {
|
|
44
|
+
const list = byReason.get(stuck.reason) || [];
|
|
45
|
+
list.push(stuck);
|
|
46
|
+
byReason.set(stuck.reason, list);
|
|
47
|
+
}
|
|
48
|
+
// Display each category
|
|
49
|
+
for (const [reason, issues] of byReason) {
|
|
50
|
+
const label = getReasonLabel(reason);
|
|
51
|
+
console.log();
|
|
52
|
+
logger.info(`${label} (${issues.length})`);
|
|
53
|
+
for (const stuck of issues) {
|
|
54
|
+
const severity = stuck.severity === 'error' ? logger.red('!') : logger.yellow('?');
|
|
55
|
+
const key = logger.cyan(stuck.key);
|
|
56
|
+
const details = logger.dim(stuck.details);
|
|
57
|
+
console.log(` ${severity} ${key} ${details}`);
|
|
58
|
+
if (options.verbose) {
|
|
59
|
+
console.log(` Column: ${stuck.column}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Recommendations
|
|
64
|
+
if (report.recommendations.length > 0) {
|
|
65
|
+
console.log();
|
|
66
|
+
logger.info('Recommendations:');
|
|
67
|
+
for (const rec of report.recommendations) {
|
|
68
|
+
console.log(` - ${rec}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Summary
|
|
72
|
+
if (options.verbose) {
|
|
73
|
+
console.log();
|
|
74
|
+
logger.info('Summary:');
|
|
75
|
+
logger.row('Total issues', String(report.summary.totalIssues));
|
|
76
|
+
logger.row('Without criteria', String(report.summary.issuesWithoutCriteria));
|
|
77
|
+
logger.row('Looping', String(report.summary.loopingIssues));
|
|
78
|
+
logger.row('Hierarchy conflicts', String(report.summary.hierarchyConflicts));
|
|
79
|
+
logger.row('Stale', String(report.summary.staleIssues));
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
return cmd;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get human-readable label for reason
|
|
86
|
+
*/
|
|
87
|
+
function getReasonLabel(reason) {
|
|
88
|
+
switch (reason) {
|
|
89
|
+
case 'no_criteria':
|
|
90
|
+
return 'Missing Acceptance Criteria';
|
|
91
|
+
case 'loop_detected':
|
|
92
|
+
return 'Loop Detected';
|
|
93
|
+
case 'stale':
|
|
94
|
+
return 'Stale Issues';
|
|
95
|
+
case 'hierarchy_conflict':
|
|
96
|
+
return 'Hierarchy Conflicts';
|
|
97
|
+
default:
|
|
98
|
+
return reason;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/cli/commands/health.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { DEFAULT_ROOT } from '../../utils/config.js';
|
|
|
8
8
|
import { ensureDir, pathExists, writeFileSafe, readFileSafe } from '../../utils/fs.js';
|
|
9
9
|
import { logger } from '../../utils/logger.js';
|
|
10
10
|
/**
|
|
11
|
-
* Setup gitignore for
|
|
11
|
+
* Setup gitignore for autocode temporary files
|
|
12
12
|
*/
|
|
13
13
|
function setupGitignore(rootDir) {
|
|
14
14
|
const gitignorePath = join(process.cwd(), '.gitignore');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/move.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"move.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/move.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CA2DrC"}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* move command - Move issue to a different column
|
|
3
3
|
*/
|
|
4
4
|
import { Command } from 'commander';
|
|
5
|
-
import {
|
|
5
|
+
import { getIssue } from '../../core/issue.js';
|
|
6
6
|
import { getColumnBySlug, getColumns } from '../../core/column.js';
|
|
7
7
|
import { validateTransition } from '../../core/workflow.js';
|
|
8
|
+
import { moveAndProcessIssue } from '../../services/claude.js';
|
|
8
9
|
import { getConfig } from '../../utils/config.js';
|
|
9
10
|
import { logger } from '../../utils/logger.js';
|
|
10
11
|
/**
|
|
@@ -17,7 +18,7 @@ export function moveCommand() {
|
|
|
17
18
|
.argument('<issue-key>', 'Issue key (e.g., AC-000001)')
|
|
18
19
|
.argument('<column-slug>', 'Target column (name or slug)')
|
|
19
20
|
.option('-f, --force', 'Force move (skip validation)')
|
|
20
|
-
.action((key, column, options) => {
|
|
21
|
+
.action(async (key, column, options) => {
|
|
21
22
|
const config = getConfig();
|
|
22
23
|
// Get current issue
|
|
23
24
|
const issue = getIssue(config.root, key);
|
|
@@ -44,15 +45,21 @@ export function moveCommand() {
|
|
|
44
45
|
process.exit(1);
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
|
-
// Perform move
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
// Perform move and execute Claude action
|
|
49
|
+
const result = await moveAndProcessIssue(key, targetColumn.slug, {
|
|
50
|
+
force: options.force,
|
|
51
|
+
lang: config.lang,
|
|
52
|
+
});
|
|
53
|
+
if (!result.success) {
|
|
54
|
+
logger.error(result.error || `Failed to move issue '${key}'`);
|
|
51
55
|
process.exit(1);
|
|
52
56
|
}
|
|
53
57
|
logger.success(`Moved ${logger.bold(key)} to ${logger.cyan(targetColumn.name)}`);
|
|
54
58
|
logger.row('From', issue.status);
|
|
55
|
-
logger.row('To',
|
|
59
|
+
logger.row('To', result.issue?.status || targetColumn.name);
|
|
60
|
+
if (result.actionExecuted) {
|
|
61
|
+
logger.row('Action', 'Claude executed');
|
|
62
|
+
}
|
|
56
63
|
});
|
|
57
64
|
return cmd;
|
|
58
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move.js","sourceRoot":"","sources":["../../../src/cli/commands/move.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"move.js","sourceRoot":"","sources":["../../../src/cli/commands/move.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAsCvC;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzE"}
|
package/dist/cli/parser.js
CHANGED
|
@@ -15,6 +15,7 @@ import { statsCommand } from './commands/stats.js';
|
|
|
15
15
|
import { parentCommand } from './commands/parent.js';
|
|
16
16
|
import { pipelineCommand } from './commands/pipeline.js';
|
|
17
17
|
import { tunnelCommand } from './commands/tunnel.js';
|
|
18
|
+
import { healthCommand } from './commands/health.js';
|
|
18
19
|
import { getCurrentVersion, checkAndNotify } from '../utils/version-check.js';
|
|
19
20
|
/**
|
|
20
21
|
* Create and configure the CLI program
|
|
@@ -39,6 +40,7 @@ export function createProgram() {
|
|
|
39
40
|
program.addCommand(parentCommand());
|
|
40
41
|
program.addCommand(pipelineCommand());
|
|
41
42
|
program.addCommand(tunnelCommand());
|
|
43
|
+
program.addCommand(healthCommand());
|
|
42
44
|
// Shortcut: autocode AC-000001 => show
|
|
43
45
|
program
|
|
44
46
|
.argument('[key]', 'Issue key to show details')
|
package/dist/cli/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/core/hierarchy.d.ts
CHANGED
|
@@ -66,6 +66,22 @@ export declare function canDeleteIssue(rootDir: string, key: string): {
|
|
|
66
66
|
canDelete: boolean;
|
|
67
67
|
reason?: string;
|
|
68
68
|
};
|
|
69
|
+
/**
|
|
70
|
+
* Validate parent-child consistency for workflow transitions
|
|
71
|
+
*/
|
|
72
|
+
export declare function validateParentChildConsistency(rootDir: string, key: string, targetColumn: Column): {
|
|
73
|
+
valid: boolean;
|
|
74
|
+
error?: string;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Find hierarchy inconsistencies in the issue database
|
|
78
|
+
*/
|
|
79
|
+
export interface HierarchyInconsistency {
|
|
80
|
+
parentKey: string;
|
|
81
|
+
problem: string;
|
|
82
|
+
childKeys: string[];
|
|
83
|
+
}
|
|
84
|
+
export declare function findHierarchyInconsistencies(rootDir: string): HierarchyInconsistency[];
|
|
69
85
|
/**
|
|
70
86
|
* Get all issues in the active scope
|
|
71
87
|
* Active scope = issues in progress + all their descendants
|
|
@@ -75,6 +91,14 @@ export declare function getActiveScope(rootDir: string): Issue[];
|
|
|
75
91
|
* Check if issue is in active scope
|
|
76
92
|
*/
|
|
77
93
|
export declare function isInActiveScope(rootDir: string, key: string): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Check if there is at least one issue in work columns (WIP limit check)
|
|
96
|
+
*/
|
|
97
|
+
export declare function hasIssueInWorkColumns(rootDir: string): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Get all issues currently in work columns
|
|
100
|
+
*/
|
|
101
|
+
export declare function getIssuesInWorkColumns(rootDir: string): Issue[];
|
|
78
102
|
/**
|
|
79
103
|
* Set parent for an issue (with validation)
|
|
80
104
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../../src/core/hierarchy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAY,MAAM,mBAAmB,CAAC;AAgBjE;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpD;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGtD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGvD;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,CAGvE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAahE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAelE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7D;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAOjG;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAU/G;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CASpG;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,CAevD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAGrE;AAMD;;GAEG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA2BtC;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CA2D9E"}
|
|
1
|
+
{"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../../src/core/hierarchy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAY,MAAM,mBAAmB,CAAC;AAgBjE;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpD;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGtD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGvD;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,CAGvE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAahE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAelE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7D;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAOjG;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAU/G;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CASpG;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA+BpC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,EAAE,CAiCtF;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,CAevD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAGrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,CAG/D;AAMD;;GAEG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA2BtC;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CA2D9E"}
|
package/dist/core/hierarchy.js
CHANGED
|
@@ -150,6 +150,68 @@ export function canDeleteIssue(rootDir, key) {
|
|
|
150
150
|
}
|
|
151
151
|
return { canDelete: true };
|
|
152
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Validate parent-child consistency for workflow transitions
|
|
155
|
+
*/
|
|
156
|
+
export function validateParentChildConsistency(rootDir, key, targetColumn) {
|
|
157
|
+
const issue = getIssue(rootDir, key);
|
|
158
|
+
if (!issue) {
|
|
159
|
+
return { valid: false, error: 'Issue not found' };
|
|
160
|
+
}
|
|
161
|
+
// Rule 1: Can't move parent to done if children aren't done
|
|
162
|
+
if (isDoneColumn(targetColumn)) {
|
|
163
|
+
const { eligible, blockers } = isEligibleForCompletion(rootDir, key);
|
|
164
|
+
if (!eligible) {
|
|
165
|
+
const blockerList = blockers.slice(0, 3).join(', ');
|
|
166
|
+
const more = blockers.length > 3 ? ` (+${blockers.length - 3} more)` : '';
|
|
167
|
+
return {
|
|
168
|
+
valid: false,
|
|
169
|
+
error: `Children not complete: ${blockerList}${more}`,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Rule 2: Can't create child if parent already done
|
|
174
|
+
if (issue.parent_key) {
|
|
175
|
+
const parent = getIssue(rootDir, issue.parent_key);
|
|
176
|
+
if (parent && isIssueDone(parent)) {
|
|
177
|
+
return {
|
|
178
|
+
valid: false,
|
|
179
|
+
error: `Parent ${issue.parent_key} is already done`,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return { valid: true };
|
|
184
|
+
}
|
|
185
|
+
export function findHierarchyInconsistencies(rootDir) {
|
|
186
|
+
const issues = listIssues(rootDir);
|
|
187
|
+
const inconsistencies = [];
|
|
188
|
+
for (const issue of issues) {
|
|
189
|
+
// Check: parent done but children not done
|
|
190
|
+
if (isIssueDone(issue)) {
|
|
191
|
+
const children = getChildren(rootDir, issue.key);
|
|
192
|
+
const incompleteChildren = children.filter(c => !isIssueDone(c));
|
|
193
|
+
if (incompleteChildren.length > 0) {
|
|
194
|
+
inconsistencies.push({
|
|
195
|
+
parentKey: issue.key,
|
|
196
|
+
problem: 'Parent done but children incomplete',
|
|
197
|
+
childKeys: incompleteChildren.map(c => c.key),
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// Check: orphaned parent reference
|
|
202
|
+
if (issue.parent_key) {
|
|
203
|
+
const parent = getIssue(rootDir, issue.parent_key);
|
|
204
|
+
if (!parent) {
|
|
205
|
+
inconsistencies.push({
|
|
206
|
+
parentKey: issue.parent_key,
|
|
207
|
+
problem: 'Parent not found (orphaned reference)',
|
|
208
|
+
childKeys: [issue.key],
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return inconsistencies;
|
|
214
|
+
}
|
|
153
215
|
// ============================================
|
|
154
216
|
// ACTIVE SCOPE
|
|
155
217
|
// ============================================
|
|
@@ -177,6 +239,20 @@ export function isInActiveScope(rootDir, key) {
|
|
|
177
239
|
const activeScope = getActiveScope(rootDir);
|
|
178
240
|
return activeScope.some(t => t.key === key);
|
|
179
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Check if there is at least one issue in work columns (WIP limit check)
|
|
244
|
+
*/
|
|
245
|
+
export function hasIssueInWorkColumns(rootDir) {
|
|
246
|
+
const allIssues = listIssues(rootDir);
|
|
247
|
+
return allIssues.some(isIssueInProgress);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Get all issues currently in work columns
|
|
251
|
+
*/
|
|
252
|
+
export function getIssuesInWorkColumns(rootDir) {
|
|
253
|
+
const allIssues = listIssues(rootDir);
|
|
254
|
+
return allIssues.filter(isIssueInProgress);
|
|
255
|
+
}
|
|
180
256
|
// ============================================
|
|
181
257
|
// MODIFICATION
|
|
182
258
|
// ============================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/core/hierarchy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/core/hierarchy.ts"],"names":[],"mappings":"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"}
|
package/dist/core/issue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../src/core/issue.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyBH,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAY,MAAM,mBAAmB,CAAC;AAE7F;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBxE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIzE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAKnE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../src/core/issue.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyBH,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAY,MAAM,mBAAmB,CAAC;AAE7F;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBxE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIzE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAKnE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAqD3E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,KAAK,GAAG,IAAI,CA0BjG;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,QAAiB,GAAG,KAAK,GAAG,IAAI,CAWxI;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,KAAK,UAAQ,GACZ,KAAK,GAAG,IAAI,CA8Bd;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAWpE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,CAoBnD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,EAAE,CAiB/E;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAEjE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAa9F"}
|
package/dist/core/issue.js
CHANGED
|
@@ -5,7 +5,7 @@ import { join, dirname, basename } from 'node:path';
|
|
|
5
5
|
import { ensureDir, listDirs, pathExists, generateIssueKey, slugify, getTimestamp, moveDir, } from '../utils/fs.js';
|
|
6
6
|
import { loadIssue, updateMetadata, updateDescription, addCommentFile, addHistoryEntry, createIssueStructure, } from '../services/issue-io.js';
|
|
7
7
|
import { getColumns, getColumnBySlug } from './column.js';
|
|
8
|
-
import { findActionableIssueWithHierarchy, canDeleteIssue } from './hierarchy.js';
|
|
8
|
+
import { findActionableIssueWithHierarchy, canDeleteIssue, hasIssueInWorkColumns, isWorkColumn } from './hierarchy.js';
|
|
9
9
|
import { removeDir } from '../utils/fs.js';
|
|
10
10
|
/**
|
|
11
11
|
* Find an issue directory by its key
|
|
@@ -56,11 +56,19 @@ export function createIssue(rootDir, input) {
|
|
|
56
56
|
throw new Error(`Parent issue '${input.parent_key}' not found`);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
+
// Determine target column (default to backlog)
|
|
60
|
+
const targetSlug = input.column_slug || '00_backlog';
|
|
61
|
+
const column = getColumnBySlug(targetSlug);
|
|
62
|
+
if (!column) {
|
|
63
|
+
throw new Error(`Column '${targetSlug}' not found`);
|
|
64
|
+
}
|
|
65
|
+
// Check WIP limit when creating in work columns
|
|
66
|
+
if (isWorkColumn(column) && hasIssueInWorkColumns(rootDir)) {
|
|
67
|
+
throw new Error(`WIP limit reached: 1 issue already in progress. Complete or archive it first.`);
|
|
68
|
+
}
|
|
59
69
|
const key = generateIssueKey(rootDir);
|
|
60
70
|
const timestamp = getTimestamp();
|
|
61
71
|
const titleSlug = slugify(input.title);
|
|
62
|
-
// Default to backlog
|
|
63
|
-
const column = getColumnBySlug('00_backlog');
|
|
64
72
|
// Issues are stored in column/issues/ subfolder
|
|
65
73
|
const issueDir = join(rootDir, column.slug, 'issues', `${key}__${titleSlug}`);
|
|
66
74
|
const metadata = {
|
package/dist/core/issue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../src/core/issue.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,OAAO,GACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,SAAS,EAET,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,oBAAoB,GAErB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,gCAAgC,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../src/core/issue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loop detection and circuit breaker
|
|
3
|
+
* Detects when issues are stuck in back-and-forth cycles between columns
|
|
4
|
+
*/
|
|
5
|
+
import type { HistoryEntry } from '../types/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Maximum number of round-trips between columns before circuit breaker activates
|
|
8
|
+
*/
|
|
9
|
+
export declare const LOOP_THRESHOLD = 3;
|
|
10
|
+
/**
|
|
11
|
+
* Warning threshold - show warning but don't block
|
|
12
|
+
*/
|
|
13
|
+
export declare const LOOP_WARNING_THRESHOLD = 2;
|
|
14
|
+
/**
|
|
15
|
+
* Loop analysis result
|
|
16
|
+
*/
|
|
17
|
+
export interface LoopAnalysis {
|
|
18
|
+
/** Whether a blocking loop was detected */
|
|
19
|
+
hasLoop: boolean;
|
|
20
|
+
/** Number of back-and-forth cycles detected */
|
|
21
|
+
loopCount: number;
|
|
22
|
+
/** The columns involved in the loop */
|
|
23
|
+
loopPath: [string, string] | null;
|
|
24
|
+
/** Threshold used for detection */
|
|
25
|
+
threshold: number;
|
|
26
|
+
/** Whether the circuit breaker should halt processing */
|
|
27
|
+
shouldHalt: boolean;
|
|
28
|
+
/** Whether a warning should be shown (below threshold but concerning) */
|
|
29
|
+
shouldWarn: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Detect loops in issue history
|
|
33
|
+
*
|
|
34
|
+
* A loop is defined as repeated back-and-forth transitions between the same two columns.
|
|
35
|
+
* For example: A -> B -> A -> B -> A counts as 2 complete loops.
|
|
36
|
+
*
|
|
37
|
+
* @param history - Issue history entries
|
|
38
|
+
* @returns Loop analysis with count and recommendation
|
|
39
|
+
*/
|
|
40
|
+
export declare function detectLoop(history: HistoryEntry[]): LoopAnalysis;
|
|
41
|
+
/**
|
|
42
|
+
* Get a human-readable description of the loop
|
|
43
|
+
*/
|
|
44
|
+
export declare function describeLoop(analysis: LoopAnalysis): string;
|
|
45
|
+
//# sourceMappingURL=loop-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop-detector.d.ts","sourceRoot":"","sources":["../../src/core/loop-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAClC,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,UAAU,EAAE,OAAO,CAAC;IACpB,yEAAyE;IACzE,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,CAoDhE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAY3D"}
|