@autocode-cli/autocode 0.1.4 → 0.1.6
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 +28 -24
- package/dist/cli/commands/init.js +1 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +27 -0
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/sync.d.ts +9 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +91 -0
- package/dist/cli/commands/sync.js.map +1 -0
- 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/catalog.d.ts +52 -0
- package/dist/core/catalog.d.ts.map +1 -0
- package/dist/core/catalog.js +101 -0
- package/dist/core/catalog.js.map +1 -0
- package/dist/core/column.d.ts +2 -1
- package/dist/core/column.d.ts.map +1 -1
- package/dist/core/column.js +23 -11
- package/dist/core/column.js.map +1 -1
- package/dist/core/pipeline.d.ts +70 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +199 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/sync.d.ts +41 -0
- package/dist/core/sync.d.ts.map +1 -0
- package/dist/core/sync.js +269 -0
- package/dist/core/sync.js.map +1 -0
- package/dist/server/api.d.ts.map +1 -1
- package/dist/server/api.js +300 -0
- package/dist/server/api.js.map +1 -1
- package/dist/server/dashboard/pages/index.d.ts +1 -0
- package/dist/server/dashboard/pages/index.d.ts.map +1 -1
- package/dist/server/dashboard/pages/index.js +1 -0
- package/dist/server/dashboard/pages/index.js.map +1 -1
- package/dist/server/dashboard/pages/main-dashboard.d.ts.map +1 -1
- package/dist/server/dashboard/pages/main-dashboard.js +2 -1
- package/dist/server/dashboard/pages/main-dashboard.js.map +1 -1
- package/dist/server/dashboard/pages/pipeline-configurator.d.ts +8 -0
- package/dist/server/dashboard/pages/pipeline-configurator.d.ts.map +1 -0
- package/dist/server/dashboard/pages/pipeline-configurator.js +1531 -0
- package/dist/server/dashboard/pages/pipeline-configurator.js.map +1 -0
- package/dist/server/dashboard/pages/water-quality-form.d.ts +10 -0
- package/dist/server/dashboard/pages/water-quality-form.d.ts.map +1 -0
- package/dist/server/dashboard/pages/water-quality-form.js +910 -0
- package/dist/server/dashboard/pages/water-quality-form.js.map +1 -0
- package/dist/server/dashboard/styles/base.d.ts.map +1 -1
- package/dist/server/dashboard/styles/base.js +11 -0
- package/dist/server/dashboard/styles/base.js.map +1 -1
- package/dist/server/dashboard.d.ts +1 -1
- package/dist/server/dashboard.d.ts.map +1 -1
- package/dist/server/dashboard.js +1 -1
- package/dist/server/dashboard.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +67 -1
- package/dist/server/index.js.map +1 -1
- package/dist/services/claude.d.ts +2 -1
- package/dist/services/claude.d.ts.map +1 -1
- package/dist/services/claude.js +8 -1
- package/dist/services/claude.js.map +1 -1
- package/dist/types/index.d.ts +67 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/config.d.ts +28 -20
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +12 -10
- package/dist/utils/config.js.map +1 -1
- package/package.json +2 -2
- package/templates/catalog.yaml +100 -0
- package/templates/{columns/00_backlog.en.md → prompts/backlog.en.md} +1 -1
- package/templates/{columns/00_backlog.fr.md → prompts/backlog.fr.md} +1 -1
- package/templates/prompts/changelog.en.md +31 -0
- package/templates/prompts/changelog.fr.md +31 -0
- package/templates/prompts/deploy-prod.en.md +32 -0
- package/templates/prompts/deploy-prod.fr.md +32 -0
- package/templates/{columns/10_deploy-staging.en.md → prompts/deploy-staging.en.md} +1 -1
- package/templates/{columns/10_deploy-staging.fr.md → prompts/deploy-staging.fr.md} +1 -1
- package/templates/prompts/design.en.md +30 -0
- package/templates/prompts/design.fr.md +30 -0
- package/templates/prompts/dev.en.md +31 -0
- package/templates/prompts/dev.fr.md +31 -0
- package/templates/{columns/12_done.en.md → prompts/done.en.md} +1 -1
- package/templates/{columns/12_done.fr.md → prompts/done.fr.md} +1 -1
- package/templates/prompts/git-commit.en.md +35 -0
- package/templates/prompts/git-commit.fr.md +35 -0
- package/templates/prompts/git-push.en.md +31 -0
- package/templates/prompts/git-push.fr.md +31 -0
- package/templates/prompts/git-tag.en.md +32 -0
- package/templates/prompts/git-tag.fr.md +32 -0
- package/templates/{columns/02_in-progress.en.md → prompts/in-progress.en.md} +1 -1
- package/templates/{columns/02_in-progress.fr.md → prompts/in-progress.fr.md} +1 -1
- package/templates/prompts/qualification.en.md +30 -0
- package/templates/prompts/qualification.fr.md +30 -0
- package/templates/{columns/01_ready.en.md → prompts/ready.en.md} +1 -1
- package/templates/{columns/01_ready.fr.md → prompts/ready.fr.md} +1 -1
- package/templates/prompts/retest-cypress.en.md +29 -0
- package/templates/prompts/retest-cypress.fr.md +29 -0
- package/templates/prompts/retest-playwright.en.md +30 -0
- package/templates/prompts/retest-playwright.fr.md +30 -0
- package/templates/prompts/retest.en.md +31 -0
- package/templates/prompts/retest.fr.md +31 -0
- package/templates/{columns/03_review-best-practices.en.md → prompts/review-best-practices.en.md} +1 -1
- package/templates/{columns/03_review-best-practices.fr.md → prompts/review-best-practices.fr.md} +1 -1
- package/templates/prompts/review-code.en.md +31 -0
- package/templates/prompts/review-code.fr.md +31 -0
- package/templates/{columns/05_review-consistency.en.md → prompts/review-consistency.en.md} +1 -1
- package/templates/{columns/05_review-consistency.fr.md → prompts/review-consistency.fr.md} +1 -1
- package/templates/{columns/04_review-no-duplication.en.md → prompts/review-no-duplication.en.md} +1 -1
- package/templates/{columns/04_review-no-duplication.fr.md → prompts/review-no-duplication.fr.md} +1 -1
- package/templates/{columns/06_review-security.en.md → prompts/review-security.en.md} +1 -1
- package/templates/{columns/06_review-security.fr.md → prompts/review-security.fr.md} +1 -1
- package/templates/prompts/specification.en.md +30 -0
- package/templates/prompts/specification.fr.md +30 -0
- package/templates/{columns/08_testing-cypress.en.md → prompts/testing-cypress.en.md} +1 -1
- package/templates/{columns/08_testing-cypress.fr.md → prompts/testing-cypress.fr.md} +1 -1
- package/templates/prompts/testing-integration.en.md +32 -0
- package/templates/prompts/testing-integration.fr.md +32 -0
- package/templates/{columns/07_testing-playwright.en.md → prompts/testing-playwright.en.md} +1 -1
- package/templates/{columns/07_testing-playwright.fr.md → prompts/testing-playwright.fr.md} +1 -1
- package/templates/prompts/testing-unit.en.md +32 -0
- package/templates/prompts/testing-unit.fr.md +32 -0
- package/templates/{columns/09_update-docs.en.md → prompts/update-docs.en.md} +1 -1
- package/templates/{columns/09_update-docs.fr.md → prompts/update-docs.fr.md} +1 -1
- package/templates/{columns/11_validate-staging.en.md → prompts/validate-staging.en.md} +1 -1
- package/templates/{columns/11_validate-staging.fr.md → prompts/validate-staging.fr.md} +1 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline management
|
|
3
|
+
* Handles loading, saving, and switching pipelines
|
|
4
|
+
*/
|
|
5
|
+
import type { Pipeline, PipelinesConfig, Column } from '../types/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Get the path to the pipeline file
|
|
8
|
+
*/
|
|
9
|
+
export declare function getPipelinePath(): string;
|
|
10
|
+
/**
|
|
11
|
+
* Check if the pipeline file exists
|
|
12
|
+
*/
|
|
13
|
+
export declare function pipelineExists(): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Load the pipelines configuration
|
|
16
|
+
*/
|
|
17
|
+
export declare function loadPipelinesConfig(): PipelinesConfig | null;
|
|
18
|
+
/**
|
|
19
|
+
* Save the pipelines configuration
|
|
20
|
+
*/
|
|
21
|
+
export declare function savePipelinesConfig(config: PipelinesConfig): void;
|
|
22
|
+
/**
|
|
23
|
+
* Get the active pipeline
|
|
24
|
+
*/
|
|
25
|
+
export declare function getActivePipeline(): Pipeline | null;
|
|
26
|
+
/**
|
|
27
|
+
* Get the name of the active pipeline
|
|
28
|
+
*/
|
|
29
|
+
export declare function getActivePipelineName(): string | null;
|
|
30
|
+
/**
|
|
31
|
+
* Set the active pipeline
|
|
32
|
+
*/
|
|
33
|
+
export declare function setActivePipeline(name: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Get all columns from the active pipeline (with index)
|
|
36
|
+
*/
|
|
37
|
+
export declare function getActiveColumns(): Column[];
|
|
38
|
+
/**
|
|
39
|
+
* Get the expected folder slugs from the active pipeline
|
|
40
|
+
*/
|
|
41
|
+
export declare function getExpectedFolderSlugs(): string[];
|
|
42
|
+
/**
|
|
43
|
+
* Create a new pipeline
|
|
44
|
+
*/
|
|
45
|
+
export declare function createPipeline(name: string, pipeline: Pipeline, setActive?: boolean): void;
|
|
46
|
+
/**
|
|
47
|
+
* Update an existing pipeline
|
|
48
|
+
*/
|
|
49
|
+
export declare function updatePipeline(name: string, pipeline: Pipeline): void;
|
|
50
|
+
/**
|
|
51
|
+
* Delete a pipeline
|
|
52
|
+
*/
|
|
53
|
+
export declare function deletePipeline(name: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* List all pipelines
|
|
56
|
+
*/
|
|
57
|
+
export declare function listPipelines(): {
|
|
58
|
+
name: string;
|
|
59
|
+
pipeline: Pipeline;
|
|
60
|
+
isActive: boolean;
|
|
61
|
+
}[];
|
|
62
|
+
/**
|
|
63
|
+
* Create a default pipeline configuration
|
|
64
|
+
*/
|
|
65
|
+
export declare function createDefaultPipelineConfig(): PipelinesConfig;
|
|
66
|
+
/**
|
|
67
|
+
* Reset the pipeline cache
|
|
68
|
+
*/
|
|
69
|
+
export declare function resetPipelineCache(): void;
|
|
70
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/core/pipeline.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAkB,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAM3F;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,GAAG,IAAI,CAa5D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAKjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,QAAQ,GAAG,IAAI,CAKnD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAIrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAUpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAgB3C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,UAAQ,GAChB,IAAI,CAiBN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAUrE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAUjD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,EAAE,CASzF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,eAAe,CAgC7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline management
|
|
3
|
+
* Handles loading, saving, and switching pipelines
|
|
4
|
+
*/
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { readFileSync, writeFileSync, existsSync } from 'node:fs';
|
|
7
|
+
import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
|
|
8
|
+
const PIPELINE_FILENAME = 'pipeline.yml';
|
|
9
|
+
let cachedConfig = null;
|
|
10
|
+
/**
|
|
11
|
+
* Get the path to the pipeline file
|
|
12
|
+
*/
|
|
13
|
+
export function getPipelinePath() {
|
|
14
|
+
return join(process.cwd(), PIPELINE_FILENAME);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Check if the pipeline file exists
|
|
18
|
+
*/
|
|
19
|
+
export function pipelineExists() {
|
|
20
|
+
return existsSync(getPipelinePath());
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Load the pipelines configuration
|
|
24
|
+
*/
|
|
25
|
+
export function loadPipelinesConfig() {
|
|
26
|
+
if (cachedConfig)
|
|
27
|
+
return cachedConfig;
|
|
28
|
+
const pipelinePath = getPipelinePath();
|
|
29
|
+
if (!existsSync(pipelinePath)) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const content = readFileSync(pipelinePath, 'utf-8');
|
|
33
|
+
cachedConfig = parseYaml(content);
|
|
34
|
+
return cachedConfig;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Save the pipelines configuration
|
|
38
|
+
*/
|
|
39
|
+
export function savePipelinesConfig(config) {
|
|
40
|
+
const pipelinePath = getPipelinePath();
|
|
41
|
+
const content = stringifyYaml(config, { indent: 2 });
|
|
42
|
+
writeFileSync(pipelinePath, content, 'utf-8');
|
|
43
|
+
cachedConfig = config;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get the active pipeline
|
|
47
|
+
*/
|
|
48
|
+
export function getActivePipeline() {
|
|
49
|
+
const config = loadPipelinesConfig();
|
|
50
|
+
if (!config)
|
|
51
|
+
return null;
|
|
52
|
+
return config.pipelines[config.active] || null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get the name of the active pipeline
|
|
56
|
+
*/
|
|
57
|
+
export function getActivePipelineName() {
|
|
58
|
+
const config = loadPipelinesConfig();
|
|
59
|
+
if (!config)
|
|
60
|
+
return null;
|
|
61
|
+
return config.active;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Set the active pipeline
|
|
65
|
+
*/
|
|
66
|
+
export function setActivePipeline(name) {
|
|
67
|
+
const config = loadPipelinesConfig();
|
|
68
|
+
if (!config)
|
|
69
|
+
throw new Error('No pipelines configuration found');
|
|
70
|
+
if (!config.pipelines[name]) {
|
|
71
|
+
throw new Error(`Pipeline '${name}' not found`);
|
|
72
|
+
}
|
|
73
|
+
config.active = name;
|
|
74
|
+
savePipelinesConfig(config);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get all columns from the active pipeline (with index)
|
|
78
|
+
*/
|
|
79
|
+
export function getActiveColumns() {
|
|
80
|
+
const pipeline = getActivePipeline();
|
|
81
|
+
if (!pipeline)
|
|
82
|
+
return [];
|
|
83
|
+
const allColumns = [
|
|
84
|
+
...pipeline.definition,
|
|
85
|
+
...pipeline.action,
|
|
86
|
+
...pipeline.finish,
|
|
87
|
+
];
|
|
88
|
+
// Renumber columns
|
|
89
|
+
return allColumns.map((col, index) => ({
|
|
90
|
+
slug: `${String(index).padStart(2, '0')}_${col.slug.replace(/^\d{2}_/, '')}`,
|
|
91
|
+
name: col.name,
|
|
92
|
+
index,
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get the expected folder slugs from the active pipeline
|
|
97
|
+
*/
|
|
98
|
+
export function getExpectedFolderSlugs() {
|
|
99
|
+
return getActiveColumns().map(c => c.slug);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Create a new pipeline
|
|
103
|
+
*/
|
|
104
|
+
export function createPipeline(name, pipeline, setActive = false) {
|
|
105
|
+
let config = loadPipelinesConfig();
|
|
106
|
+
if (!config) {
|
|
107
|
+
config = {
|
|
108
|
+
active: name,
|
|
109
|
+
pipelines: {},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
config.pipelines[name] = pipeline;
|
|
113
|
+
if (setActive) {
|
|
114
|
+
config.active = name;
|
|
115
|
+
}
|
|
116
|
+
savePipelinesConfig(config);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Update an existing pipeline
|
|
120
|
+
*/
|
|
121
|
+
export function updatePipeline(name, pipeline) {
|
|
122
|
+
const config = loadPipelinesConfig();
|
|
123
|
+
if (!config)
|
|
124
|
+
throw new Error('No pipelines configuration found');
|
|
125
|
+
if (!config.pipelines[name]) {
|
|
126
|
+
throw new Error(`Pipeline '${name}' not found`);
|
|
127
|
+
}
|
|
128
|
+
config.pipelines[name] = pipeline;
|
|
129
|
+
savePipelinesConfig(config);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Delete a pipeline
|
|
133
|
+
*/
|
|
134
|
+
export function deletePipeline(name) {
|
|
135
|
+
const config = loadPipelinesConfig();
|
|
136
|
+
if (!config)
|
|
137
|
+
return;
|
|
138
|
+
if (config.active === name) {
|
|
139
|
+
throw new Error('Cannot delete the active pipeline');
|
|
140
|
+
}
|
|
141
|
+
delete config.pipelines[name];
|
|
142
|
+
savePipelinesConfig(config);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* List all pipelines
|
|
146
|
+
*/
|
|
147
|
+
export function listPipelines() {
|
|
148
|
+
const config = loadPipelinesConfig();
|
|
149
|
+
if (!config)
|
|
150
|
+
return [];
|
|
151
|
+
return Object.entries(config.pipelines).map(([name, pipeline]) => ({
|
|
152
|
+
name,
|
|
153
|
+
pipeline,
|
|
154
|
+
isActive: config.active === name,
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Create a default pipeline configuration
|
|
159
|
+
*/
|
|
160
|
+
export function createDefaultPipelineConfig() {
|
|
161
|
+
return {
|
|
162
|
+
active: 'default',
|
|
163
|
+
pipelines: {
|
|
164
|
+
default: {
|
|
165
|
+
name: 'Default Pipeline',
|
|
166
|
+
version: '1.0.0',
|
|
167
|
+
description: 'Standard development pipeline',
|
|
168
|
+
definition: [
|
|
169
|
+
{ slug: '00_backlog', name: 'Backlog' },
|
|
170
|
+
{ slug: '01_ready', name: 'Ready' },
|
|
171
|
+
],
|
|
172
|
+
action: [
|
|
173
|
+
{ slug: '02_in-progress', name: 'In Progress' },
|
|
174
|
+
{ slug: '03_testing-playwright', name: 'Testing Playwright' },
|
|
175
|
+
{ slug: '04_testing-cypress', name: 'Testing Cypress' },
|
|
176
|
+
{ slug: '05_review-best-practices', name: 'Review Best Practices' },
|
|
177
|
+
{ slug: '06_review-no-duplication', name: 'Review No Duplication' },
|
|
178
|
+
{ slug: '07_review-consistency', name: 'Review Consistency' },
|
|
179
|
+
{ slug: '08_review-security', name: 'Review Security' },
|
|
180
|
+
{ slug: '09_retest-playwright', name: 'Retest Playwright' },
|
|
181
|
+
{ slug: '10_retest-cypress', name: 'Retest Cypress' },
|
|
182
|
+
{ slug: '11_update-docs', name: 'Update Docs' },
|
|
183
|
+
],
|
|
184
|
+
finish: [
|
|
185
|
+
{ slug: '12_deploy-staging', name: 'Deploy Staging' },
|
|
186
|
+
{ slug: '13_validate-staging', name: 'Validate Staging' },
|
|
187
|
+
{ slug: '14_done', name: 'Done' },
|
|
188
|
+
],
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Reset the pipeline cache
|
|
195
|
+
*/
|
|
196
|
+
export function resetPipelineCache() {
|
|
197
|
+
cachedConfig = null;
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/core/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline synchronization
|
|
3
|
+
* Handles syncing pipeline configuration with folder structure
|
|
4
|
+
*/
|
|
5
|
+
import type { SyncResult, Ticket } from '../types/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Detect changes between pipeline and folder structure
|
|
8
|
+
*/
|
|
9
|
+
export declare function detectChanges(rootDir: string): SyncResult;
|
|
10
|
+
/**
|
|
11
|
+
* Preview sync changes (dry run)
|
|
12
|
+
*/
|
|
13
|
+
export declare function previewSync(rootDir: string): SyncResult;
|
|
14
|
+
/**
|
|
15
|
+
* Apply synchronization
|
|
16
|
+
*/
|
|
17
|
+
export declare function applySync(rootDir: string): SyncResult;
|
|
18
|
+
/**
|
|
19
|
+
* Check if there are tickets in transition
|
|
20
|
+
*/
|
|
21
|
+
export declare function hasTransitionTickets(rootDir: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Get tickets in transition
|
|
24
|
+
*/
|
|
25
|
+
export declare function getTransitionTickets(rootDir: string): Ticket[];
|
|
26
|
+
/**
|
|
27
|
+
* Resolve a transition ticket by moving it to a target column
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveTransitionTicket(rootDir: string, ticketKey: string, targetSlug: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Resolve multiple transition tickets
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveTransitionTickets(rootDir: string, actions: Record<string, string>): {
|
|
34
|
+
success: string[];
|
|
35
|
+
failed: string[];
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Get the transition slug constant
|
|
39
|
+
*/
|
|
40
|
+
export declare function getTransitionSlug(): string;
|
|
41
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/core/sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAoB5D;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAuDzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAEvD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CA6DrD;AA+DD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAE9D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAoCvG;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAYlI;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline synchronization
|
|
3
|
+
* Handles syncing pipeline configuration with folder structure
|
|
4
|
+
*/
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { existsSync, renameSync, readFileSync, writeFileSync } from 'node:fs';
|
|
7
|
+
import { getActiveColumns } from './pipeline.js';
|
|
8
|
+
import { listTicketsInColumn } from './ticket.js';
|
|
9
|
+
import { ensureDir, listDirs, moveDir } from '../utils/fs.js';
|
|
10
|
+
const TRANSITION_SLUG = '_transition';
|
|
11
|
+
/**
|
|
12
|
+
* List all column directories (with numeric prefix)
|
|
13
|
+
*/
|
|
14
|
+
function listColumnDirs(rootDir) {
|
|
15
|
+
return listDirs(rootDir)
|
|
16
|
+
.filter(d => /^\d{2}_/.test(d))
|
|
17
|
+
.sort();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Extract base slug (without numeric prefix)
|
|
21
|
+
*/
|
|
22
|
+
function extractBaseSlug(slug) {
|
|
23
|
+
return slug.replace(/^\d{2}_/, '');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Detect changes between pipeline and folder structure
|
|
27
|
+
*/
|
|
28
|
+
export function detectChanges(rootDir) {
|
|
29
|
+
const expectedColumns = getActiveColumns();
|
|
30
|
+
const expectedSlugs = new Set(expectedColumns.map(c => c.slug));
|
|
31
|
+
// Existing directories (except _transition and .archive)
|
|
32
|
+
const existingDirs = listColumnDirs(rootDir);
|
|
33
|
+
const result = {
|
|
34
|
+
added: [],
|
|
35
|
+
removed: [],
|
|
36
|
+
renamed: [],
|
|
37
|
+
transitioned: [],
|
|
38
|
+
errors: [],
|
|
39
|
+
};
|
|
40
|
+
// Track which existing dirs are matched
|
|
41
|
+
const matchedDirs = new Set();
|
|
42
|
+
// Check for columns to add or rename
|
|
43
|
+
for (const col of expectedColumns) {
|
|
44
|
+
const colBaseSlug = extractBaseSlug(col.slug);
|
|
45
|
+
// Check if exact match exists
|
|
46
|
+
if (existingDirs.includes(col.slug)) {
|
|
47
|
+
matchedDirs.add(col.slug);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
// Check for rename (same base slug, different prefix)
|
|
51
|
+
const oldDir = existingDirs.find(d => extractBaseSlug(d) === colBaseSlug && d !== col.slug);
|
|
52
|
+
if (oldDir) {
|
|
53
|
+
result.renamed.push({ from: oldDir, to: col.slug });
|
|
54
|
+
matchedDirs.add(oldDir);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
result.added.push(col.slug);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Check for columns to remove
|
|
61
|
+
for (const dir of existingDirs) {
|
|
62
|
+
if (!matchedDirs.has(dir) && !expectedSlugs.has(dir)) {
|
|
63
|
+
result.removed.push(dir);
|
|
64
|
+
// Find tickets that will be orphaned
|
|
65
|
+
const tickets = listTicketsInColumn(rootDir, dir);
|
|
66
|
+
for (const ticket of tickets) {
|
|
67
|
+
result.transitioned.push(ticket.key);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Preview sync changes (dry run)
|
|
75
|
+
*/
|
|
76
|
+
export function previewSync(rootDir) {
|
|
77
|
+
return detectChanges(rootDir);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Apply synchronization
|
|
81
|
+
*/
|
|
82
|
+
export function applySync(rootDir) {
|
|
83
|
+
const changes = detectChanges(rootDir);
|
|
84
|
+
// 1. Create _transition folder if needed
|
|
85
|
+
if (changes.transitioned.length > 0) {
|
|
86
|
+
const transitionDir = join(rootDir, TRANSITION_SLUG);
|
|
87
|
+
const transitionTicketsDir = join(transitionDir, 'tickets');
|
|
88
|
+
ensureDir(transitionDir);
|
|
89
|
+
ensureDir(transitionTicketsDir);
|
|
90
|
+
}
|
|
91
|
+
// 2. Move orphan tickets to _transition
|
|
92
|
+
for (const ticketKey of changes.transitioned) {
|
|
93
|
+
try {
|
|
94
|
+
moveTicketToTransition(rootDir, ticketKey);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
changes.errors.push(`Failed to move ${ticketKey}: ${error}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// 3. Rename folders
|
|
101
|
+
for (const rename of changes.renamed) {
|
|
102
|
+
try {
|
|
103
|
+
const fromPath = join(rootDir, rename.from);
|
|
104
|
+
const toPath = join(rootDir, rename.to);
|
|
105
|
+
if (existsSync(fromPath)) {
|
|
106
|
+
renameSync(fromPath, toPath);
|
|
107
|
+
updateTicketsColumnSlug(rootDir, rename.from, rename.to);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
changes.errors.push(`Failed to rename ${rename.from} to ${rename.to}: ${error}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// 4. Create new folders
|
|
115
|
+
for (const slug of changes.added) {
|
|
116
|
+
try {
|
|
117
|
+
const columnDir = join(rootDir, slug);
|
|
118
|
+
const ticketsDir = join(columnDir, 'tickets');
|
|
119
|
+
ensureDir(columnDir);
|
|
120
|
+
ensureDir(ticketsDir);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
changes.errors.push(`Failed to create ${slug}: ${error}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// 5. Archive removed folders (after moving tickets)
|
|
127
|
+
for (const slug of changes.removed) {
|
|
128
|
+
try {
|
|
129
|
+
const columnDir = join(rootDir, slug);
|
|
130
|
+
if (existsSync(columnDir)) {
|
|
131
|
+
const archiveDir = join(rootDir, '.archive', slug);
|
|
132
|
+
ensureDir(join(rootDir, '.archive'));
|
|
133
|
+
renameSync(columnDir, archiveDir);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
changes.errors.push(`Failed to archive ${slug}: ${error}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return changes;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Move a ticket to _transition
|
|
144
|
+
*/
|
|
145
|
+
function moveTicketToTransition(rootDir, ticketKey) {
|
|
146
|
+
// Find the ticket directory
|
|
147
|
+
const columns = listColumnDirs(rootDir);
|
|
148
|
+
for (const columnSlug of columns) {
|
|
149
|
+
const ticketsDir = join(rootDir, columnSlug, 'tickets');
|
|
150
|
+
if (!existsSync(ticketsDir))
|
|
151
|
+
continue;
|
|
152
|
+
const ticketDirs = listDirs(ticketsDir);
|
|
153
|
+
for (const ticketDirName of ticketDirs) {
|
|
154
|
+
if (ticketDirName.startsWith(`${ticketKey}__`)) {
|
|
155
|
+
const oldPath = join(ticketsDir, ticketDirName);
|
|
156
|
+
const newPath = join(rootDir, TRANSITION_SLUG, 'tickets', ticketDirName);
|
|
157
|
+
ensureDir(join(rootDir, TRANSITION_SLUG, 'tickets'));
|
|
158
|
+
moveDir(oldPath, newPath);
|
|
159
|
+
// Update metadata
|
|
160
|
+
const metadataPath = join(newPath, 'metadata.json');
|
|
161
|
+
if (existsSync(metadataPath)) {
|
|
162
|
+
const metadata = JSON.parse(readFileSync(metadataPath, 'utf-8'));
|
|
163
|
+
metadata.column_slug = TRANSITION_SLUG;
|
|
164
|
+
metadata.updated_at = new Date().toISOString();
|
|
165
|
+
metadata.history = metadata.history || [];
|
|
166
|
+
metadata.history.push({
|
|
167
|
+
at: new Date().toISOString(),
|
|
168
|
+
action: 'moved',
|
|
169
|
+
from: columnSlug,
|
|
170
|
+
to: TRANSITION_SLUG,
|
|
171
|
+
});
|
|
172
|
+
writeFileSync(metadataPath, JSON.stringify(metadata, null, 2), 'utf-8');
|
|
173
|
+
}
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Update column_slug for all tickets in a renamed column
|
|
181
|
+
*/
|
|
182
|
+
function updateTicketsColumnSlug(rootDir, oldSlug, newSlug) {
|
|
183
|
+
const ticketsDir = join(rootDir, newSlug, 'tickets');
|
|
184
|
+
if (!existsSync(ticketsDir))
|
|
185
|
+
return;
|
|
186
|
+
const ticketDirs = listDirs(ticketsDir);
|
|
187
|
+
for (const ticketDirName of ticketDirs) {
|
|
188
|
+
const metadataPath = join(ticketsDir, ticketDirName, 'metadata.json');
|
|
189
|
+
if (existsSync(metadataPath)) {
|
|
190
|
+
const metadata = JSON.parse(readFileSync(metadataPath, 'utf-8'));
|
|
191
|
+
metadata.column_slug = newSlug;
|
|
192
|
+
metadata.updated_at = new Date().toISOString();
|
|
193
|
+
writeFileSync(metadataPath, JSON.stringify(metadata, null, 2), 'utf-8');
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Check if there are tickets in transition
|
|
199
|
+
*/
|
|
200
|
+
export function hasTransitionTickets(rootDir) {
|
|
201
|
+
const transitionDir = join(rootDir, TRANSITION_SLUG, 'tickets');
|
|
202
|
+
if (!existsSync(transitionDir))
|
|
203
|
+
return false;
|
|
204
|
+
const ticketDirs = listDirs(transitionDir);
|
|
205
|
+
return ticketDirs.length > 0;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get tickets in transition
|
|
209
|
+
*/
|
|
210
|
+
export function getTransitionTickets(rootDir) {
|
|
211
|
+
return listTicketsInColumn(rootDir, TRANSITION_SLUG);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Resolve a transition ticket by moving it to a target column
|
|
215
|
+
*/
|
|
216
|
+
export function resolveTransitionTicket(rootDir, ticketKey, targetSlug) {
|
|
217
|
+
const transitionTicketsDir = join(rootDir, TRANSITION_SLUG, 'tickets');
|
|
218
|
+
if (!existsSync(transitionTicketsDir))
|
|
219
|
+
return false;
|
|
220
|
+
const ticketDirs = listDirs(transitionTicketsDir);
|
|
221
|
+
for (const ticketDirName of ticketDirs) {
|
|
222
|
+
if (ticketDirName.startsWith(`${ticketKey}__`)) {
|
|
223
|
+
const oldPath = join(transitionTicketsDir, ticketDirName);
|
|
224
|
+
const targetTicketsDir = join(rootDir, targetSlug, 'tickets');
|
|
225
|
+
ensureDir(targetTicketsDir);
|
|
226
|
+
const newPath = join(targetTicketsDir, ticketDirName);
|
|
227
|
+
moveDir(oldPath, newPath);
|
|
228
|
+
// Update metadata
|
|
229
|
+
const metadataPath = join(newPath, 'metadata.json');
|
|
230
|
+
if (existsSync(metadataPath)) {
|
|
231
|
+
const metadata = JSON.parse(readFileSync(metadataPath, 'utf-8'));
|
|
232
|
+
metadata.column_slug = targetSlug;
|
|
233
|
+
metadata.updated_at = new Date().toISOString();
|
|
234
|
+
metadata.history = metadata.history || [];
|
|
235
|
+
metadata.history.push({
|
|
236
|
+
at: new Date().toISOString(),
|
|
237
|
+
action: 'moved',
|
|
238
|
+
from: TRANSITION_SLUG,
|
|
239
|
+
to: targetSlug,
|
|
240
|
+
});
|
|
241
|
+
writeFileSync(metadataPath, JSON.stringify(metadata, null, 2), 'utf-8');
|
|
242
|
+
}
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Resolve multiple transition tickets
|
|
250
|
+
*/
|
|
251
|
+
export function resolveTransitionTickets(rootDir, actions) {
|
|
252
|
+
const results = { success: [], failed: [] };
|
|
253
|
+
for (const [ticketKey, targetSlug] of Object.entries(actions)) {
|
|
254
|
+
if (resolveTransitionTicket(rootDir, ticketKey, targetSlug)) {
|
|
255
|
+
results.success.push(ticketKey);
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
results.failed.push(ticketKey);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return results;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get the transition slug constant
|
|
265
|
+
*/
|
|
266
|
+
export function getTransitionSlug() {
|
|
267
|
+
return TRANSITION_SLUG;
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/core/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/server/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAqhCjE;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,OAAO,CAAC,CAqClB"}
|