@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
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
|
|
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
|
|
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. **
|
|
101
|
-
4. **
|
|
102
|
-
5. **Review
|
|
103
|
-
6. **Review
|
|
104
|
-
7. **
|
|
105
|
-
8. **
|
|
106
|
-
9. **
|
|
107
|
-
10. **
|
|
108
|
-
11. **
|
|
109
|
-
12. **
|
|
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
|
-
├──
|
|
125
|
-
├──
|
|
126
|
-
├── 05_review-
|
|
127
|
-
├── 06_review-
|
|
128
|
-
├──
|
|
129
|
-
├──
|
|
130
|
-
├──
|
|
131
|
-
├──
|
|
132
|
-
├──
|
|
133
|
-
|
|
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,
|
|
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;
|
|
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":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|
package/dist/cli/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAiCvC;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzE"}
|
package/dist/cli/parser.js
CHANGED
|
@@ -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')
|
package/dist/cli/parser.js.map
CHANGED
|
@@ -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;
|
|
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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"}
|
package/dist/core/column.d.ts
CHANGED
|
@@ -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
|
|
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;
|
|
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"}
|
package/dist/core/column.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
107
|
-
|
|
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
|
|
114
|
-
for (const column of
|
|
123
|
+
const promptsDir = join(getTemplatesDir(), 'prompts');
|
|
124
|
+
for (const column of getColumns()) {
|
|
115
125
|
const columnDir = join(rootDir, column.slug);
|
|
116
|
-
//
|
|
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(
|
|
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)) {
|
package/dist/core/column.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/core/column.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/core/column.ts"],"names":[],"mappings":"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"}
|