@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.
Files changed (125) hide show
  1. package/README.md +28 -24
  2. package/dist/cli/commands/init.js +1 -1
  3. package/dist/cli/commands/init.js.map +1 -1
  4. package/dist/cli/commands/serve.d.ts.map +1 -1
  5. package/dist/cli/commands/serve.js +27 -0
  6. package/dist/cli/commands/serve.js.map +1 -1
  7. package/dist/cli/commands/sync.d.ts +9 -0
  8. package/dist/cli/commands/sync.d.ts.map +1 -0
  9. package/dist/cli/commands/sync.js +91 -0
  10. package/dist/cli/commands/sync.js.map +1 -0
  11. package/dist/cli/parser.d.ts.map +1 -1
  12. package/dist/cli/parser.js +2 -0
  13. package/dist/cli/parser.js.map +1 -1
  14. package/dist/core/catalog.d.ts +52 -0
  15. package/dist/core/catalog.d.ts.map +1 -0
  16. package/dist/core/catalog.js +101 -0
  17. package/dist/core/catalog.js.map +1 -0
  18. package/dist/core/column.d.ts +2 -1
  19. package/dist/core/column.d.ts.map +1 -1
  20. package/dist/core/column.js +23 -11
  21. package/dist/core/column.js.map +1 -1
  22. package/dist/core/pipeline.d.ts +70 -0
  23. package/dist/core/pipeline.d.ts.map +1 -0
  24. package/dist/core/pipeline.js +199 -0
  25. package/dist/core/pipeline.js.map +1 -0
  26. package/dist/core/sync.d.ts +41 -0
  27. package/dist/core/sync.d.ts.map +1 -0
  28. package/dist/core/sync.js +269 -0
  29. package/dist/core/sync.js.map +1 -0
  30. package/dist/server/api.d.ts.map +1 -1
  31. package/dist/server/api.js +300 -0
  32. package/dist/server/api.js.map +1 -1
  33. package/dist/server/dashboard/pages/index.d.ts +1 -0
  34. package/dist/server/dashboard/pages/index.d.ts.map +1 -1
  35. package/dist/server/dashboard/pages/index.js +1 -0
  36. package/dist/server/dashboard/pages/index.js.map +1 -1
  37. package/dist/server/dashboard/pages/main-dashboard.d.ts.map +1 -1
  38. package/dist/server/dashboard/pages/main-dashboard.js +2 -1
  39. package/dist/server/dashboard/pages/main-dashboard.js.map +1 -1
  40. package/dist/server/dashboard/pages/pipeline-configurator.d.ts +8 -0
  41. package/dist/server/dashboard/pages/pipeline-configurator.d.ts.map +1 -0
  42. package/dist/server/dashboard/pages/pipeline-configurator.js +1531 -0
  43. package/dist/server/dashboard/pages/pipeline-configurator.js.map +1 -0
  44. package/dist/server/dashboard/pages/water-quality-form.d.ts +10 -0
  45. package/dist/server/dashboard/pages/water-quality-form.d.ts.map +1 -0
  46. package/dist/server/dashboard/pages/water-quality-form.js +910 -0
  47. package/dist/server/dashboard/pages/water-quality-form.js.map +1 -0
  48. package/dist/server/dashboard/styles/base.d.ts.map +1 -1
  49. package/dist/server/dashboard/styles/base.js +11 -0
  50. package/dist/server/dashboard/styles/base.js.map +1 -1
  51. package/dist/server/dashboard.d.ts +1 -1
  52. package/dist/server/dashboard.d.ts.map +1 -1
  53. package/dist/server/dashboard.js +1 -1
  54. package/dist/server/dashboard.js.map +1 -1
  55. package/dist/server/index.d.ts.map +1 -1
  56. package/dist/server/index.js +67 -1
  57. package/dist/server/index.js.map +1 -1
  58. package/dist/services/claude.d.ts +2 -1
  59. package/dist/services/claude.d.ts.map +1 -1
  60. package/dist/services/claude.js +8 -1
  61. package/dist/services/claude.js.map +1 -1
  62. package/dist/types/index.d.ts +67 -0
  63. package/dist/types/index.d.ts.map +1 -1
  64. package/dist/utils/config.d.ts +28 -20
  65. package/dist/utils/config.d.ts.map +1 -1
  66. package/dist/utils/config.js +12 -10
  67. package/dist/utils/config.js.map +1 -1
  68. package/package.json +2 -2
  69. package/templates/catalog.yaml +100 -0
  70. package/templates/{columns/00_backlog.en.md → prompts/backlog.en.md} +1 -1
  71. package/templates/{columns/00_backlog.fr.md → prompts/backlog.fr.md} +1 -1
  72. package/templates/prompts/changelog.en.md +31 -0
  73. package/templates/prompts/changelog.fr.md +31 -0
  74. package/templates/prompts/deploy-prod.en.md +32 -0
  75. package/templates/prompts/deploy-prod.fr.md +32 -0
  76. package/templates/{columns/10_deploy-staging.en.md → prompts/deploy-staging.en.md} +1 -1
  77. package/templates/{columns/10_deploy-staging.fr.md → prompts/deploy-staging.fr.md} +1 -1
  78. package/templates/prompts/design.en.md +30 -0
  79. package/templates/prompts/design.fr.md +30 -0
  80. package/templates/prompts/dev.en.md +31 -0
  81. package/templates/prompts/dev.fr.md +31 -0
  82. package/templates/{columns/12_done.en.md → prompts/done.en.md} +1 -1
  83. package/templates/{columns/12_done.fr.md → prompts/done.fr.md} +1 -1
  84. package/templates/prompts/git-commit.en.md +35 -0
  85. package/templates/prompts/git-commit.fr.md +35 -0
  86. package/templates/prompts/git-push.en.md +31 -0
  87. package/templates/prompts/git-push.fr.md +31 -0
  88. package/templates/prompts/git-tag.en.md +32 -0
  89. package/templates/prompts/git-tag.fr.md +32 -0
  90. package/templates/{columns/02_in-progress.en.md → prompts/in-progress.en.md} +1 -1
  91. package/templates/{columns/02_in-progress.fr.md → prompts/in-progress.fr.md} +1 -1
  92. package/templates/prompts/qualification.en.md +30 -0
  93. package/templates/prompts/qualification.fr.md +30 -0
  94. package/templates/{columns/01_ready.en.md → prompts/ready.en.md} +1 -1
  95. package/templates/{columns/01_ready.fr.md → prompts/ready.fr.md} +1 -1
  96. package/templates/prompts/retest-cypress.en.md +29 -0
  97. package/templates/prompts/retest-cypress.fr.md +29 -0
  98. package/templates/prompts/retest-playwright.en.md +30 -0
  99. package/templates/prompts/retest-playwright.fr.md +30 -0
  100. package/templates/prompts/retest.en.md +31 -0
  101. package/templates/prompts/retest.fr.md +31 -0
  102. package/templates/{columns/03_review-best-practices.en.md → prompts/review-best-practices.en.md} +1 -1
  103. package/templates/{columns/03_review-best-practices.fr.md → prompts/review-best-practices.fr.md} +1 -1
  104. package/templates/prompts/review-code.en.md +31 -0
  105. package/templates/prompts/review-code.fr.md +31 -0
  106. package/templates/{columns/05_review-consistency.en.md → prompts/review-consistency.en.md} +1 -1
  107. package/templates/{columns/05_review-consistency.fr.md → prompts/review-consistency.fr.md} +1 -1
  108. package/templates/{columns/04_review-no-duplication.en.md → prompts/review-no-duplication.en.md} +1 -1
  109. package/templates/{columns/04_review-no-duplication.fr.md → prompts/review-no-duplication.fr.md} +1 -1
  110. package/templates/{columns/06_review-security.en.md → prompts/review-security.en.md} +1 -1
  111. package/templates/{columns/06_review-security.fr.md → prompts/review-security.fr.md} +1 -1
  112. package/templates/prompts/specification.en.md +30 -0
  113. package/templates/prompts/specification.fr.md +30 -0
  114. package/templates/{columns/08_testing-cypress.en.md → prompts/testing-cypress.en.md} +1 -1
  115. package/templates/{columns/08_testing-cypress.fr.md → prompts/testing-cypress.fr.md} +1 -1
  116. package/templates/prompts/testing-integration.en.md +32 -0
  117. package/templates/prompts/testing-integration.fr.md +32 -0
  118. package/templates/{columns/07_testing-playwright.en.md → prompts/testing-playwright.en.md} +1 -1
  119. package/templates/{columns/07_testing-playwright.fr.md → prompts/testing-playwright.fr.md} +1 -1
  120. package/templates/prompts/testing-unit.en.md +32 -0
  121. package/templates/prompts/testing-unit.fr.md +32 -0
  122. package/templates/{columns/09_update-docs.en.md → prompts/update-docs.en.md} +1 -1
  123. package/templates/{columns/09_update-docs.fr.md → prompts/update-docs.fr.md} +1 -1
  124. package/templates/{columns/11_validate-staging.en.md → prompts/validate-staging.en.md} +1 -1
  125. package/templates/{columns/11_validate-staging.fr.md → prompts/validate-staging.fr.md} +1 -1
package/README.md CHANGED
@@ -30,8 +30,8 @@ npm install -g @autocode-cli/autocode
30
30
  # Initialize project structure
31
31
  autocode init
32
32
 
33
- # Create a new ticket
34
- autocode new "Implement user authentication" -p P1
33
+ # Create a new ticket (with all options)
34
+ autocode new "Implement user authentication" "OAuth2 login with Google and GitHub" -p P1 -l "feature,auth" -a "Login button visible,OAuth flow works,Token stored" -s minor
35
35
 
36
36
  # List all tickets
37
37
  autocode list
@@ -51,7 +51,7 @@ autocode serve
51
51
  | Command | Description |
52
52
  |---------|-------------|
53
53
  | `init` | Initialize autocode project structure |
54
- | `new <title>` | Create a new ticket |
54
+ | `new <title> [description] [-p P0-P3] [-l labels] [-a criteria] [-s semver]` | Create a new ticket |
55
55
  | `list` | List all tickets |
56
56
  | `show <key>` | Show ticket details |
57
57
  | `move <key> <column>` | Move ticket to specific column |
@@ -92,21 +92,23 @@ autocode serve
92
92
 
93
93
  ## Workflow Columns
94
94
 
95
- The default workflow includes 13 columns:
95
+ The default workflow includes 15 columns following a TDD approach (test before AND after refactoring):
96
96
 
97
97
  0. **Backlog** - New tickets waiting to be prioritized
98
98
  1. **Ready** - Tickets ready to start
99
99
  2. **In Progress** - Currently being worked on
100
- 3. **Review Best Practices** - Code review for best practices
101
- 4. **Review No Duplication** - Check for code duplication
102
- 5. **Review Consistency** - Consistency review
103
- 6. **Review Security** - Security review
104
- 7. **Testing Playwright** - Playwright E2E tests
105
- 8. **Testing Cypress** - Cypress E2E tests
106
- 9. **Update Docs** - Documentation updates
107
- 10. **Deploy Staging** - Deployed to staging
108
- 11. **Validate Staging** - Staging validation
109
- 12. **Done** - Completed
100
+ 3. **Testing Playwright** - Manual testing before refactoring
101
+ 4. **Testing Cypress** - E2E tests before refactoring
102
+ 5. **Review Best Practices** - Code review for best practices
103
+ 6. **Review No Duplication** - Check for code duplication
104
+ 7. **Review Consistency** - Consistency review
105
+ 8. **Review Security** - Security review
106
+ 9. **Retest Playwright** - Manual testing after refactoring
107
+ 10. **Retest Cypress** - E2E tests after refactoring
108
+ 11. **Update Docs** - Documentation updates
109
+ 12. **Deploy Staging** - Deployed to staging
110
+ 13. **Validate Staging** - Staging validation
111
+ 14. **Done** - Completed
110
112
 
111
113
  ## Project Structure
112
114
 
@@ -121,16 +123,18 @@ autodoc/
121
123
  │ └── issue.md # Ticket content
122
124
  ├── 01_ready/
123
125
  ├── 02_in-progress/
124
- ├── 03_review-best-practices/
125
- ├── 04_review-no-duplication/
126
- ├── 05_review-consistency/
127
- ├── 06_review-security/
128
- ├── 07_testing-playwright/
129
- ├── 08_testing-cypress/
130
- ├── 09_update-docs/
131
- ├── 10_deploy-staging/
132
- ├── 11_validate-staging/
133
- └── 12_done/
126
+ ├── 03_testing-playwright/
127
+ ├── 04_testing-cypress/
128
+ ├── 05_review-best-practices/
129
+ ├── 06_review-no-duplication/
130
+ ├── 07_review-consistency/
131
+ ├── 08_review-security/
132
+ ├── 09_retest-playwright/
133
+ ├── 10_retest-cypress/
134
+ ├── 11_update-docs/
135
+ ├── 12_deploy-staging/
136
+ ├── 13_validate-staging/
137
+ └── 14_done/
134
138
  ```
135
139
 
136
140
  ## Ticket Format
@@ -56,7 +56,7 @@ export function initCommand() {
56
56
  // Setup gitignore
57
57
  setupGitignore(rootDir);
58
58
  logger.success(`Autocode initialized in ${rootDir}`);
59
- logger.info('Run `autocode new "Your ticket title"` to create your first ticket');
59
+ logger.info('Run `autocode new "Your ticket title" "Description" -p P1 -l "labels" -a "criteria" -s minor` to create your first ticket');
60
60
  });
61
61
  return cmd;
62
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAa,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,OAAO,wBAAwB,CAAC;IAEpD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,qBAAqB;QAC/B,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE;QAC/B,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,mCAAmC,OAAO,IAAI;QACjE,CAAC,CAAC,+BAA+B,OAAO,IAAI,CAAC;IAE/C,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhC,GAAG;SACA,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,IAAI,CAAC;SACrD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;QAE5B,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,cAAc,OAAO,kBAAkB,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,KAAK,CAAC,CAAC;QAEtD,wBAAwB;QACxB,SAAS,CAAC,OAAO,CAAC,CAAC;QAEnB,0BAA0B;QAC1B,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAE/B,mBAAmB;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,2CAA2C;QAC3C,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAgB,CAAC,CAAC;QAEvD,kBAAkB;QAClB,cAAc,CAAC,OAAO,CAAC,CAAC;QAExB,MAAM,CAAC,OAAO,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAa,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,OAAO,wBAAwB,CAAC;IAEpD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,qBAAqB;QAC/B,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE;QAC/B,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,mCAAmC,OAAO,IAAI;QACjE,CAAC,CAAC,+BAA+B,OAAO,IAAI,CAAC;IAE/C,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhC,GAAG;SACA,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,IAAI,CAAC;SACrD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;QAE5B,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,cAAc,OAAO,kBAAkB,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,KAAK,CAAC,CAAC;QAEtD,wBAAwB;QACxB,SAAS,CAAC,OAAO,CAAC,CAAC;QAEnB,0BAA0B;QAC1B,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAE/B,mBAAmB;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,2CAA2C;QAC3C,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAgB,CAAC,CAAC;QAEvD,kBAAkB;QAClB,cAAc,CAAC,OAAO,CAAC,CAAC;QAExB,MAAM,CAAC,OAAO,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,2HAA2H,CAAC,CAAC;IAC3I,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAqDtC"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CA8EtC"}
@@ -8,6 +8,8 @@ import { ensureColumnStructure, copyActionTemplates } from '../../core/column.js
8
8
  import { ensureDir, pathExists, writeFileSafe } from '../../utils/fs.js';
9
9
  import { join } from 'node:path';
10
10
  import { logger } from '../../utils/logger.js';
11
+ import { pipelineExists } from '../../core/pipeline.js';
12
+ import { hasTransitionTickets, getTransitionTickets, applySync, previewSync } from '../../core/sync.js';
11
13
  /**
12
14
  * Kill any process using the specified port
13
15
  */
@@ -62,6 +64,31 @@ export function serveCommand() {
62
64
  }
63
65
  // Kill any existing process on the port
64
66
  killPortProcess(port);
67
+ // If pipeline.yml exists, check for sync and transition tickets
68
+ if (pipelineExists()) {
69
+ // Check for needed sync
70
+ const changes = previewSync(config.root);
71
+ const needsSync = changes.added.length > 0 || changes.removed.length > 0 || changes.renamed.length > 0;
72
+ if (needsSync) {
73
+ logger.warn('Pipeline sync needed. Applying changes...');
74
+ const result = applySync(config.root);
75
+ if (result.added.length > 0)
76
+ logger.info(` → Created ${result.added.length} folder(s)`);
77
+ if (result.removed.length > 0)
78
+ logger.info(` → Archived ${result.removed.length} folder(s)`);
79
+ if (result.renamed.length > 0)
80
+ logger.info(` → Renamed ${result.renamed.length} folder(s)`);
81
+ }
82
+ // Check for transition tickets
83
+ if (hasTransitionTickets(config.root)) {
84
+ const transitionTickets = getTransitionTickets(config.root);
85
+ logger.warn('');
86
+ logger.warn(`⚠️ ${transitionTickets.length} ticket(s) in _transition!`);
87
+ logger.warn(' These tickets need to be reassigned to a column.');
88
+ logger.warn(' Go to /settings/pipeline/configurator to resolve them.');
89
+ logger.warn('');
90
+ }
91
+ }
65
92
  logger.info(`Starting dashboard server...`);
66
93
  logger.info(` → Port: ${port}`);
67
94
  logger.info(` → Root: ${config.root}`);
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * sync command - Synchronize pipeline with folder structure
3
+ */
4
+ import { Command } from 'commander';
5
+ /**
6
+ * Create the sync command
7
+ */
8
+ export declare function syncCommand(): Command;
9
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAmGrC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * sync command - Synchronize pipeline with folder structure
3
+ */
4
+ import { Command } from 'commander';
5
+ import { getConfig } from '../../utils/config.js';
6
+ import { pipelineExists } from '../../core/pipeline.js';
7
+ import { previewSync, applySync } from '../../core/sync.js';
8
+ import { logger } from '../../utils/logger.js';
9
+ /**
10
+ * Create the sync command
11
+ */
12
+ export function syncCommand() {
13
+ const cmd = new Command('sync');
14
+ cmd
15
+ .description('Synchronize folder structure with pipeline.yml')
16
+ .option('-p, --preview', 'Preview changes without applying them')
17
+ .option('-f, --force', 'Apply changes without confirmation')
18
+ .action((options) => {
19
+ const config = getConfig();
20
+ // Check if pipeline.yml exists
21
+ if (!pipelineExists()) {
22
+ logger.error('No pipeline.yml found. Run `autocode serve` to configure your pipeline.');
23
+ process.exit(1);
24
+ }
25
+ // Preview changes
26
+ const changes = previewSync(config.root);
27
+ // Check if there are any changes
28
+ const hasChanges = changes.added.length > 0 ||
29
+ changes.removed.length > 0 ||
30
+ changes.renamed.length > 0;
31
+ if (!hasChanges) {
32
+ logger.success('Folder structure is already in sync with pipeline.yml');
33
+ return;
34
+ }
35
+ // Display changes
36
+ logger.info('Changes detected:');
37
+ if (changes.added.length > 0) {
38
+ logger.info(` + Folders to create: ${changes.added.join(', ')}`);
39
+ }
40
+ if (changes.removed.length > 0) {
41
+ logger.warn(` - Folders to archive: ${changes.removed.join(', ')}`);
42
+ }
43
+ if (changes.renamed.length > 0) {
44
+ logger.info(` ~ Folders to rename:`);
45
+ for (const r of changes.renamed) {
46
+ logger.info(` ${r.from} → ${r.to}`);
47
+ }
48
+ }
49
+ if (changes.transitioned.length > 0) {
50
+ logger.warn(` ⚠ Tickets to move to _transition: ${changes.transitioned.join(', ')}`);
51
+ }
52
+ // If preview only, stop here
53
+ if (options.preview) {
54
+ logger.info('');
55
+ logger.info('Run without --preview to apply these changes.');
56
+ return;
57
+ }
58
+ // Apply changes
59
+ if (!options.force) {
60
+ logger.info('');
61
+ logger.warn('Use --force to apply changes, or review them first with --preview');
62
+ return;
63
+ }
64
+ logger.info('');
65
+ logger.info('Applying changes...');
66
+ const result = applySync(config.root);
67
+ // Report results
68
+ if (result.errors.length > 0) {
69
+ logger.error('Some errors occurred:');
70
+ for (const error of result.errors) {
71
+ logger.error(` ${error}`);
72
+ }
73
+ }
74
+ if (result.added.length > 0) {
75
+ logger.success(`Created ${result.added.length} folder(s)`);
76
+ }
77
+ if (result.removed.length > 0) {
78
+ logger.success(`Archived ${result.removed.length} folder(s)`);
79
+ }
80
+ if (result.renamed.length > 0) {
81
+ logger.success(`Renamed ${result.renamed.length} folder(s)`);
82
+ }
83
+ if (result.transitioned.length > 0) {
84
+ logger.warn(`Moved ${result.transitioned.length} ticket(s) to _transition`);
85
+ logger.info('Use the web dashboard to resolve these tickets.');
86
+ }
87
+ logger.success('Sync complete!');
88
+ });
89
+ return cmd;
90
+ }
91
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -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;AAWpC;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAgCvC;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzE"}
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;AAYpC;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAiCvC;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzE"}
@@ -10,6 +10,7 @@ import { moveCommand } from './commands/move.js';
10
10
  import { nextCommand } from './commands/next.js';
11
11
  import { commentCommand } from './commands/comment.js';
12
12
  import { serveCommand } from './commands/serve.js';
13
+ import { syncCommand } from './commands/sync.js';
13
14
  import { getCurrentVersion, checkAndNotify } from '../utils/version-check.js';
14
15
  /**
15
16
  * Create and configure the CLI program
@@ -29,6 +30,7 @@ export function createProgram() {
29
30
  program.addCommand(nextCommand());
30
31
  program.addCommand(commentCommand());
31
32
  program.addCommand(serveCommand());
33
+ program.addCommand(syncCommand());
32
34
  // Shortcut: autocode AC-000001 => show
33
35
  program
34
36
  .argument('[key]', 'Ticket key to show details')
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE9E;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,mDAAmD,CAAC;SAChE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEhC,oBAAoB;IACpB,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAEnC,uCAAuC;IACvC,OAAO;SACJ,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;SAC/C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACd,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,+BAA+B;YAC/B,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,GAAG,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAiB,OAAO,CAAC,IAAI;IACxD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE9E;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,mDAAmD,CAAC;SAChE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEhC,oBAAoB;IACpB,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAElC,uCAAuC;IACvC,OAAO;SACJ,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;SAC/C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACd,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,+BAA+B;YAC/B,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,GAAG,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAiB,OAAO,CAAC,IAAI;IACxD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Catalog management
3
+ * Handles loading and querying the column catalog
4
+ */
5
+ import type { Catalog, CatalogColumn, PipelineSegment } from '../types/index.js';
6
+ /**
7
+ * Get the path to the catalog file
8
+ */
9
+ export declare function getCatalogPath(): string;
10
+ /**
11
+ * Load the column catalog
12
+ */
13
+ export declare function loadCatalog(): Catalog;
14
+ /**
15
+ * Get available columns for a segment
16
+ */
17
+ export declare function getColumnsForSegment(segment: PipelineSegment): CatalogColumn[];
18
+ /**
19
+ * Get all available columns from all segments
20
+ */
21
+ export declare function getAllCatalogColumns(): {
22
+ segment: PipelineSegment;
23
+ columns: CatalogColumn[];
24
+ }[];
25
+ /**
26
+ * Check if a slug is valid for a segment
27
+ */
28
+ export declare function isValidColumnForSegment(slug: string, segment: PipelineSegment): boolean;
29
+ /**
30
+ * Find a column in the catalog by slug
31
+ */
32
+ export declare function findCatalogColumn(slug: string): {
33
+ column: CatalogColumn;
34
+ segment: PipelineSegment;
35
+ } | null;
36
+ /**
37
+ * Get segment description
38
+ */
39
+ export declare function getSegmentDescription(segment: PipelineSegment): string;
40
+ /**
41
+ * Reset the catalog cache
42
+ */
43
+ export declare function resetCatalog(): void;
44
+ /**
45
+ * Get the path to a prompt file for a column
46
+ */
47
+ export declare function getPromptPath(slug: string, lang: 'en' | 'fr'): string;
48
+ /**
49
+ * Get prompt content for a column
50
+ */
51
+ export declare function getPromptContent(slug: string, lang: 'en' | 'fr'): string | null;
52
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/core/catalog.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMjF;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAarC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,EAAE,CAG9E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,EAAE,CAO/F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAKvF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAY1G;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAGtE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAGrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAK/E"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Catalog management
3
+ * Handles loading and querying the column catalog
4
+ */
5
+ import { join } from 'node:path';
6
+ import { readFileSync, existsSync } from 'node:fs';
7
+ import { parse as parseYaml } from 'yaml';
8
+ import { getTemplatesDir } from '../utils/config.js';
9
+ const CATALOG_FILENAME = 'catalog.yaml';
10
+ let cachedCatalog = null;
11
+ /**
12
+ * Get the path to the catalog file
13
+ */
14
+ export function getCatalogPath() {
15
+ return join(getTemplatesDir(), CATALOG_FILENAME);
16
+ }
17
+ /**
18
+ * Load the column catalog
19
+ */
20
+ export function loadCatalog() {
21
+ if (cachedCatalog)
22
+ return cachedCatalog;
23
+ const catalogPath = getCatalogPath();
24
+ if (!existsSync(catalogPath)) {
25
+ throw new Error(`Catalog not found: ${catalogPath}`);
26
+ }
27
+ const content = readFileSync(catalogPath, 'utf-8');
28
+ cachedCatalog = parseYaml(content);
29
+ return cachedCatalog;
30
+ }
31
+ /**
32
+ * Get available columns for a segment
33
+ */
34
+ export function getColumnsForSegment(segment) {
35
+ const catalog = loadCatalog();
36
+ return catalog.segments[segment].columns;
37
+ }
38
+ /**
39
+ * Get all available columns from all segments
40
+ */
41
+ export function getAllCatalogColumns() {
42
+ const catalog = loadCatalog();
43
+ return [
44
+ { segment: 'definition', columns: catalog.segments.definition.columns },
45
+ { segment: 'action', columns: catalog.segments.action.columns },
46
+ { segment: 'finish', columns: catalog.segments.finish.columns },
47
+ ];
48
+ }
49
+ /**
50
+ * Check if a slug is valid for a segment
51
+ */
52
+ export function isValidColumnForSegment(slug, segment) {
53
+ const columns = getColumnsForSegment(segment);
54
+ // Remove numeric prefix for comparison
55
+ const baseSlug = slug.replace(/^\d{2}_/, '');
56
+ return columns.some(c => c.slug === baseSlug);
57
+ }
58
+ /**
59
+ * Find a column in the catalog by slug
60
+ */
61
+ export function findCatalogColumn(slug) {
62
+ const baseSlug = slug.replace(/^\d{2}_/, '');
63
+ const catalog = loadCatalog();
64
+ for (const segment of ['definition', 'action', 'finish']) {
65
+ const column = catalog.segments[segment].columns.find(c => c.slug === baseSlug);
66
+ if (column) {
67
+ return { column, segment };
68
+ }
69
+ }
70
+ return null;
71
+ }
72
+ /**
73
+ * Get segment description
74
+ */
75
+ export function getSegmentDescription(segment) {
76
+ const catalog = loadCatalog();
77
+ return catalog.segments[segment].description;
78
+ }
79
+ /**
80
+ * Reset the catalog cache
81
+ */
82
+ export function resetCatalog() {
83
+ cachedCatalog = null;
84
+ }
85
+ /**
86
+ * Get the path to a prompt file for a column
87
+ */
88
+ export function getPromptPath(slug, lang) {
89
+ const baseSlug = slug.replace(/^\d{2}_/, ''); // Remove numeric prefix
90
+ return join(getTemplatesDir(), 'prompts', `${baseSlug}.${lang}.md`);
91
+ }
92
+ /**
93
+ * Get prompt content for a column
94
+ */
95
+ export function getPromptContent(slug, lang) {
96
+ const promptPath = getPromptPath(slug, lang);
97
+ if (!existsSync(promptPath))
98
+ return null;
99
+ return readFileSync(promptPath, 'utf-8');
100
+ }
101
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/core/catalog.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  import type { Column, Language } from '../types/index.js';
5
5
  /**
6
6
  * Get all column definitions
7
+ * Uses pipeline if available, otherwise falls back to hardcoded COLUMNS
7
8
  */
8
9
  export declare function getColumns(): Column[];
9
10
  /**
@@ -43,7 +44,7 @@ export declare function ensureColumnStructure(rootDir: string): void;
43
44
  */
44
45
  export declare function scanColumns(rootDir: string, lang?: Language): Column[];
45
46
  /**
46
- * Check if column is actionable (not backlog or done)
47
+ * Check if column is actionable (not first or last column)
47
48
  */
48
49
  export declare function isActionableColumn(slug: string): boolean;
49
50
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../src/core/column.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKrE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAU1F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,QAAe,GAAG,MAAM,CAapG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQ3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,QAAe,GAAG,MAAM,EAAE,CAQ5E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,QAAe,GAAG,IAAI,CAkBhF"}
1
+ {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../src/core/column.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAQrC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKrE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAU1F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,QAAe,GAAG,MAAM,CAapG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQ3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,QAAe,GAAG,MAAM,EAAE,CAQ5E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,QAAe,GAAG,IAAI,CAoBhF"}
@@ -4,29 +4,37 @@
4
4
  import { join } from 'node:path';
5
5
  import { COLUMNS, getTemplatesDir } from '../utils/config.js';
6
6
  import { ensureDir, readFileSafe, pathExists, listDirs, copyFile } from '../utils/fs.js';
7
+ import { pipelineExists, getActiveColumns } from './pipeline.js';
7
8
  /**
8
9
  * Get all column definitions
10
+ * Uses pipeline if available, otherwise falls back to hardcoded COLUMNS
9
11
  */
10
12
  export function getColumns() {
13
+ if (pipelineExists()) {
14
+ const pipelineColumns = getActiveColumns();
15
+ if (pipelineColumns.length > 0) {
16
+ return pipelineColumns;
17
+ }
18
+ }
11
19
  return [...COLUMNS];
12
20
  }
13
21
  /**
14
22
  * Get a column by its slug
15
23
  */
16
24
  export function getColumnBySlug(slug) {
17
- return COLUMNS.find(c => c.slug === slug);
25
+ return getColumns().find(c => c.slug === slug);
18
26
  }
19
27
  /**
20
28
  * Get a column by its name
21
29
  */
22
30
  export function getColumnByName(name) {
23
- return COLUMNS.find(c => c.name.toLowerCase() === name.toLowerCase());
31
+ return getColumns().find(c => c.name.toLowerCase() === name.toLowerCase());
24
32
  }
25
33
  /**
26
34
  * Get a column by its index
27
35
  */
28
36
  export function getColumnByIndex(index) {
29
- return COLUMNS.find(c => c.index === index);
37
+ return getColumns().find(c => c.index === index);
30
38
  }
31
39
  /**
32
40
  * Get the next column in the workflow
@@ -78,7 +86,7 @@ export function getColumnNameFromAction(rootDir, slug, lang = 'en') {
78
86
  * Ensure all column directories exist
79
87
  */
80
88
  export function ensureColumnStructure(rootDir) {
81
- for (const column of COLUMNS) {
89
+ for (const column of getColumns()) {
82
90
  const columnDir = join(rootDir, column.slug);
83
91
  const ticketsDir = join(columnDir, 'tickets');
84
92
  ensureDir(columnDir);
@@ -97,26 +105,30 @@ export function scanColumns(rootDir, lang = 'en') {
97
105
  }));
98
106
  }
99
107
  /**
100
- * Check if column is actionable (not backlog or done)
108
+ * Check if column is actionable (not first or last column)
101
109
  */
102
110
  export function isActionableColumn(slug) {
111
+ const columns = getColumns();
103
112
  const col = getColumnBySlug(slug);
104
113
  if (!col)
105
114
  return false;
106
- // Skip backlog (0) and done (12)
107
- return col.index > 0 && col.index < 12;
115
+ // Skip first column (backlog) and last column (done)
116
+ const maxIndex = columns.length - 1;
117
+ return col.index > 0 && col.index < maxIndex;
108
118
  }
109
119
  /**
110
120
  * Copy ACTION.md templates for all columns
111
121
  */
112
122
  export function copyActionTemplates(rootDir, lang = 'en') {
113
- const templatesDir = join(getTemplatesDir(), 'columns');
114
- for (const column of COLUMNS) {
123
+ const promptsDir = join(getTemplatesDir(), 'prompts');
124
+ for (const column of getColumns()) {
115
125
  const columnDir = join(rootDir, column.slug);
116
- // Copy both EN and FR templates (or just the requested language)
126
+ // Remove numeric prefix (e.g., 02_in-progress -> in-progress)
127
+ const baseSlug = column.slug.replace(/^\d{2}_/, '');
128
+ // Copy both EN and FR templates
117
129
  const languages = ['en', 'fr'];
118
130
  for (const l of languages) {
119
- const templateFile = join(templatesDir, `${column.slug}.${l}.md`);
131
+ const templateFile = join(promptsDir, `${baseSlug}.${l}.md`);
120
132
  const targetFile = join(columnDir, `ACTION.${l}.md`);
121
133
  // Only copy if template exists and target doesn't
122
134
  if (pathExists(templateFile) && !pathExists(targetFile)) {
@@ -1 +1 @@
1
- {"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/core/column.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/core/column.ts"],"names":[],"mappings":"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"}