@autocode-cli/autocode 0.1.5 → 0.1.7

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.
Files changed (118) hide show
  1. package/dist/cli/commands/serve.d.ts.map +1 -1
  2. package/dist/cli/commands/serve.js +27 -0
  3. package/dist/cli/commands/serve.js.map +1 -1
  4. package/dist/cli/commands/sync.d.ts +9 -0
  5. package/dist/cli/commands/sync.d.ts.map +1 -0
  6. package/dist/cli/commands/sync.js +91 -0
  7. package/dist/cli/commands/sync.js.map +1 -0
  8. package/dist/cli/parser.d.ts.map +1 -1
  9. package/dist/cli/parser.js +2 -0
  10. package/dist/cli/parser.js.map +1 -1
  11. package/dist/core/catalog.d.ts +52 -0
  12. package/dist/core/catalog.d.ts.map +1 -0
  13. package/dist/core/catalog.js +101 -0
  14. package/dist/core/catalog.js.map +1 -0
  15. package/dist/core/column.d.ts +2 -1
  16. package/dist/core/column.d.ts.map +1 -1
  17. package/dist/core/column.js +23 -11
  18. package/dist/core/column.js.map +1 -1
  19. package/dist/core/pipeline.d.ts +70 -0
  20. package/dist/core/pipeline.d.ts.map +1 -0
  21. package/dist/core/pipeline.js +199 -0
  22. package/dist/core/pipeline.js.map +1 -0
  23. package/dist/core/sync.d.ts +41 -0
  24. package/dist/core/sync.d.ts.map +1 -0
  25. package/dist/core/sync.js +269 -0
  26. package/dist/core/sync.js.map +1 -0
  27. package/dist/server/api.d.ts.map +1 -1
  28. package/dist/server/api.js +330 -6
  29. package/dist/server/api.js.map +1 -1
  30. package/dist/server/dashboard/pages/index.d.ts +1 -0
  31. package/dist/server/dashboard/pages/index.d.ts.map +1 -1
  32. package/dist/server/dashboard/pages/index.js +1 -0
  33. package/dist/server/dashboard/pages/index.js.map +1 -1
  34. package/dist/server/dashboard/pages/main-dashboard.d.ts.map +1 -1
  35. package/dist/server/dashboard/pages/main-dashboard.js +2 -1
  36. package/dist/server/dashboard/pages/main-dashboard.js.map +1 -1
  37. package/dist/server/dashboard/pages/pipeline-configurator.d.ts +8 -0
  38. package/dist/server/dashboard/pages/pipeline-configurator.d.ts.map +1 -0
  39. package/dist/server/dashboard/pages/pipeline-configurator.js +1570 -0
  40. package/dist/server/dashboard/pages/pipeline-configurator.js.map +1 -0
  41. package/dist/server/dashboard/pages/water-quality-form.d.ts +10 -0
  42. package/dist/server/dashboard/pages/water-quality-form.d.ts.map +1 -0
  43. package/dist/server/dashboard/pages/water-quality-form.js +910 -0
  44. package/dist/server/dashboard/pages/water-quality-form.js.map +1 -0
  45. package/dist/server/dashboard/styles/base.d.ts.map +1 -1
  46. package/dist/server/dashboard/styles/base.js +11 -0
  47. package/dist/server/dashboard/styles/base.js.map +1 -1
  48. package/dist/server/dashboard.d.ts +1 -1
  49. package/dist/server/dashboard.d.ts.map +1 -1
  50. package/dist/server/dashboard.js +1 -1
  51. package/dist/server/dashboard.js.map +1 -1
  52. package/dist/server/index.d.ts.map +1 -1
  53. package/dist/server/index.js +16 -1
  54. package/dist/server/index.js.map +1 -1
  55. package/dist/services/claude.d.ts +2 -1
  56. package/dist/services/claude.d.ts.map +1 -1
  57. package/dist/services/claude.js +8 -1
  58. package/dist/services/claude.js.map +1 -1
  59. package/dist/types/index.d.ts +67 -0
  60. package/dist/types/index.d.ts.map +1 -1
  61. package/package.json +2 -2
  62. package/templates/catalog.yaml +99 -0
  63. package/templates/prompts/changelog.en.md +31 -0
  64. package/templates/prompts/changelog.fr.md +31 -0
  65. package/templates/prompts/deploy-prod.en.md +32 -0
  66. package/templates/prompts/deploy-prod.fr.md +32 -0
  67. package/templates/prompts/design.en.md +30 -0
  68. package/templates/prompts/design.fr.md +30 -0
  69. package/templates/prompts/dev.en.md +31 -0
  70. package/templates/prompts/dev.fr.md +31 -0
  71. package/templates/prompts/git-commit.en.md +35 -0
  72. package/templates/prompts/git-commit.fr.md +35 -0
  73. package/templates/prompts/git-push.en.md +31 -0
  74. package/templates/prompts/git-push.fr.md +31 -0
  75. package/templates/prompts/git-tag.en.md +32 -0
  76. package/templates/prompts/git-tag.fr.md +32 -0
  77. package/templates/prompts/qualification.en.md +30 -0
  78. package/templates/prompts/qualification.fr.md +30 -0
  79. package/templates/prompts/retest.en.md +31 -0
  80. package/templates/prompts/retest.fr.md +31 -0
  81. package/templates/prompts/review-code.en.md +31 -0
  82. package/templates/prompts/review-code.fr.md +31 -0
  83. package/templates/prompts/specification.en.md +30 -0
  84. package/templates/prompts/specification.fr.md +30 -0
  85. package/templates/prompts/testing-integration.en.md +32 -0
  86. package/templates/prompts/testing-integration.fr.md +32 -0
  87. package/templates/prompts/testing-unit.en.md +32 -0
  88. package/templates/prompts/testing-unit.fr.md +32 -0
  89. /package/templates/{columns/00_backlog.en.md → prompts/backlog.en.md} +0 -0
  90. /package/templates/{columns/00_backlog.fr.md → prompts/backlog.fr.md} +0 -0
  91. /package/templates/{columns/12_deploy-staging.en.md → prompts/deploy-staging.en.md} +0 -0
  92. /package/templates/{columns/12_deploy-staging.fr.md → prompts/deploy-staging.fr.md} +0 -0
  93. /package/templates/{columns/14_done.en.md → prompts/done.en.md} +0 -0
  94. /package/templates/{columns/14_done.fr.md → prompts/done.fr.md} +0 -0
  95. /package/templates/{columns/02_in-progress.en.md → prompts/in-progress.en.md} +0 -0
  96. /package/templates/{columns/02_in-progress.fr.md → prompts/in-progress.fr.md} +0 -0
  97. /package/templates/{columns/01_ready.en.md → prompts/ready.en.md} +0 -0
  98. /package/templates/{columns/01_ready.fr.md → prompts/ready.fr.md} +0 -0
  99. /package/templates/{columns/10_retest-cypress.en.md → prompts/retest-cypress.en.md} +0 -0
  100. /package/templates/{columns/10_retest-cypress.fr.md → prompts/retest-cypress.fr.md} +0 -0
  101. /package/templates/{columns/09_retest-playwright.en.md → prompts/retest-playwright.en.md} +0 -0
  102. /package/templates/{columns/09_retest-playwright.fr.md → prompts/retest-playwright.fr.md} +0 -0
  103. /package/templates/{columns/05_review-best-practices.en.md → prompts/review-best-practices.en.md} +0 -0
  104. /package/templates/{columns/05_review-best-practices.fr.md → prompts/review-best-practices.fr.md} +0 -0
  105. /package/templates/{columns/07_review-consistency.en.md → prompts/review-consistency.en.md} +0 -0
  106. /package/templates/{columns/07_review-consistency.fr.md → prompts/review-consistency.fr.md} +0 -0
  107. /package/templates/{columns/06_review-no-duplication.en.md → prompts/review-no-duplication.en.md} +0 -0
  108. /package/templates/{columns/06_review-no-duplication.fr.md → prompts/review-no-duplication.fr.md} +0 -0
  109. /package/templates/{columns/08_review-security.en.md → prompts/review-security.en.md} +0 -0
  110. /package/templates/{columns/08_review-security.fr.md → prompts/review-security.fr.md} +0 -0
  111. /package/templates/{columns/04_testing-cypress.en.md → prompts/testing-cypress.en.md} +0 -0
  112. /package/templates/{columns/04_testing-cypress.fr.md → prompts/testing-cypress.fr.md} +0 -0
  113. /package/templates/{columns/03_testing-playwright.en.md → prompts/testing-playwright.en.md} +0 -0
  114. /package/templates/{columns/03_testing-playwright.fr.md → prompts/testing-playwright.fr.md} +0 -0
  115. /package/templates/{columns/11_update-docs.en.md → prompts/update-docs.en.md} +0 -0
  116. /package/templates/{columns/11_update-docs.fr.md → prompts/update-docs.fr.md} +0 -0
  117. /package/templates/{columns/13_validate-staging.en.md → prompts/validate-staging.en.md} +0 -0
  118. /package/templates/{columns/13_validate-staging.fr.md → prompts/validate-staging.fr.md} +0 -0
@@ -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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"}
@@ -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;AAyrBjE;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,OAAO,CAAC,CAqClB"}
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;AAmjCjE;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,OAAO,CAAC,CAqClB"}