@rlarua/agentteams-cli 0.0.9 → 0.0.11

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/API-CLI-WORKFLOW.md +418 -0
  2. package/LICENSE +201 -0
  3. package/README.md +220 -128
  4. package/dist/api/comment.d.ts +11 -0
  5. package/dist/api/comment.d.ts.map +1 -0
  6. package/dist/api/comment.js +33 -0
  7. package/dist/api/comment.js.map +1 -0
  8. package/dist/api/plan.d.ts +13 -0
  9. package/dist/api/plan.d.ts.map +1 -0
  10. package/dist/api/plan.js +43 -0
  11. package/dist/api/plan.js.map +1 -0
  12. package/dist/api/postmortem.d.ts +6 -0
  13. package/dist/api/postmortem.d.ts.map +1 -0
  14. package/dist/api/postmortem.js +33 -0
  15. package/dist/api/postmortem.js.map +1 -0
  16. package/dist/api/report.d.ts +6 -0
  17. package/dist/api/report.d.ts.map +1 -0
  18. package/dist/api/report.js +33 -0
  19. package/dist/api/report.js.map +1 -0
  20. package/dist/api/status.d.ts +12 -0
  21. package/dist/api/status.d.ts.map +1 -0
  22. package/dist/api/status.js +33 -0
  23. package/dist/api/status.js.map +1 -0
  24. package/dist/commands/agentConfig.d.ts.map +1 -1
  25. package/dist/commands/agentConfig.js +10 -3
  26. package/dist/commands/agentConfig.js.map +1 -1
  27. package/dist/commands/agentConfigCommand.d.ts +2 -0
  28. package/dist/commands/agentConfigCommand.d.ts.map +1 -0
  29. package/dist/commands/agentConfigCommand.js +20 -0
  30. package/dist/commands/agentConfigCommand.js.map +1 -0
  31. package/dist/commands/comment.d.ts +2 -0
  32. package/dist/commands/comment.d.ts.map +1 -0
  33. package/dist/commands/comment.js +55 -0
  34. package/dist/commands/comment.js.map +1 -0
  35. package/dist/commands/config.d.ts +2 -0
  36. package/dist/commands/config.d.ts.map +1 -0
  37. package/dist/commands/config.js +30 -0
  38. package/dist/commands/config.js.map +1 -0
  39. package/dist/commands/convention.d.ts +25 -0
  40. package/dist/commands/convention.d.ts.map +1 -1
  41. package/dist/commands/convention.js +492 -43
  42. package/dist/commands/convention.js.map +1 -1
  43. package/dist/commands/conventionRouter.d.ts +3 -0
  44. package/dist/commands/conventionRouter.d.ts.map +1 -0
  45. package/dist/commands/conventionRouter.js +46 -0
  46. package/dist/commands/conventionRouter.js.map +1 -0
  47. package/dist/commands/dependency.d.ts.map +1 -1
  48. package/dist/commands/dependency.js +2 -1
  49. package/dist/commands/dependency.js.map +1 -1
  50. package/dist/commands/dependencyCommand.d.ts +2 -0
  51. package/dist/commands/dependencyCommand.d.ts.map +1 -0
  52. package/dist/commands/dependencyCommand.js +27 -0
  53. package/dist/commands/dependencyCommand.js.map +1 -0
  54. package/dist/commands/index.d.ts.map +1 -1
  55. package/dist/commands/index.js +13 -485
  56. package/dist/commands/index.js.map +1 -1
  57. package/dist/commands/init.d.ts.map +1 -1
  58. package/dist/commands/init.js +3 -2
  59. package/dist/commands/init.js.map +1 -1
  60. package/dist/commands/plan.d.ts +11 -0
  61. package/dist/commands/plan.d.ts.map +1 -0
  62. package/dist/commands/plan.js +370 -0
  63. package/dist/commands/plan.js.map +1 -0
  64. package/dist/commands/postmortem.d.ts +2 -0
  65. package/dist/commands/postmortem.d.ts.map +1 -0
  66. package/dist/commands/postmortem.js +114 -0
  67. package/dist/commands/postmortem.js.map +1 -0
  68. package/dist/commands/report.d.ts +2 -0
  69. package/dist/commands/report.d.ts.map +1 -0
  70. package/dist/commands/report.js +221 -0
  71. package/dist/commands/report.js.map +1 -0
  72. package/dist/commands/status.d.ts +2 -0
  73. package/dist/commands/status.d.ts.map +1 -0
  74. package/dist/commands/status.js +60 -0
  75. package/dist/commands/status.js.map +1 -0
  76. package/dist/index.js +214 -34
  77. package/dist/index.js.map +1 -1
  78. package/dist/types/index.d.ts +11 -6
  79. package/dist/types/index.d.ts.map +1 -1
  80. package/dist/utils/errors.d.ts.map +1 -1
  81. package/dist/utils/errors.js +60 -6
  82. package/dist/utils/errors.js.map +1 -1
  83. package/dist/utils/formatter.js +11 -1
  84. package/dist/utils/formatter.js.map +1 -1
  85. package/dist/utils/git.d.ts +19 -0
  86. package/dist/utils/git.d.ts.map +1 -0
  87. package/dist/utils/git.js +41 -0
  88. package/dist/utils/git.js.map +1 -0
  89. package/dist/utils/httpHeaders.d.ts +3 -0
  90. package/dist/utils/httpHeaders.d.ts.map +1 -0
  91. package/dist/utils/httpHeaders.js +11 -0
  92. package/dist/utils/httpHeaders.js.map +1 -0
  93. package/dist/utils/initOutput.d.ts +3 -0
  94. package/dist/utils/initOutput.d.ts.map +1 -0
  95. package/dist/utils/initOutput.js +34 -0
  96. package/dist/utils/initOutput.js.map +1 -0
  97. package/dist/utils/legacyCompat.d.ts +3 -0
  98. package/dist/utils/legacyCompat.d.ts.map +1 -0
  99. package/dist/utils/legacyCompat.js +20 -0
  100. package/dist/utils/legacyCompat.js.map +1 -0
  101. package/dist/utils/outputPolicy.d.ts +12 -0
  102. package/dist/utils/outputPolicy.d.ts.map +1 -0
  103. package/dist/utils/outputPolicy.js +132 -0
  104. package/dist/utils/outputPolicy.js.map +1 -0
  105. package/dist/utils/parsers.d.ts +7 -0
  106. package/dist/utils/parsers.d.ts.map +1 -0
  107. package/dist/utils/parsers.js +52 -0
  108. package/dist/utils/parsers.js.map +1 -0
  109. package/dist/utils/planFormat.d.ts +17 -0
  110. package/dist/utils/planFormat.d.ts.map +1 -0
  111. package/dist/utils/planFormat.js +80 -0
  112. package/dist/utils/planFormat.js.map +1 -0
  113. package/dist/utils/spinner.d.ts +6 -0
  114. package/dist/utils/spinner.d.ts.map +1 -0
  115. package/dist/utils/spinner.js +34 -0
  116. package/dist/utils/spinner.js.map +1 -0
  117. package/package.json +8 -3
  118. package/DEVELOPMENT.md +0 -234
@@ -0,0 +1,80 @@
1
+ export function normalizeDependencies(raw) {
2
+ if (!raw || typeof raw !== 'object') {
3
+ return { blocking: [], dependents: [] };
4
+ }
5
+ const root = raw;
6
+ const data = (root.data && typeof root.data === 'object' && !Array.isArray(root.data))
7
+ ? root.data
8
+ : root;
9
+ const blocking = Array.isArray(data.blocking) ? data.blocking : [];
10
+ const dependents = Array.isArray(data.dependents) ? data.dependents : [];
11
+ return { blocking, dependents };
12
+ }
13
+ export function mergePlanWithDependencies(rawPlanResponse, dependencies) {
14
+ const fallback = {
15
+ dependencies,
16
+ };
17
+ if (!rawPlanResponse || typeof rawPlanResponse !== 'object') {
18
+ return { data: fallback };
19
+ }
20
+ const root = rawPlanResponse;
21
+ const rawData = root.data;
22
+ const planData = rawData && typeof rawData === 'object' && !Array.isArray(rawData)
23
+ ? { ...rawData }
24
+ : {};
25
+ planData.dependencies = dependencies;
26
+ return {
27
+ ...root,
28
+ data: planData,
29
+ };
30
+ }
31
+ export function formatPlanWithDependenciesText(planData, dependencies) {
32
+ const lines = [];
33
+ appendLineIfExists(lines, 'id', planData.id);
34
+ appendLineIfExists(lines, 'title', planData.title);
35
+ appendLineIfExists(lines, 'status', planData.status);
36
+ appendLineIfExists(lines, 'priority', planData.priority);
37
+ appendLineIfExists(lines, 'updatedAt', planData.updatedAt);
38
+ appendLineIfExists(lines, 'createdAt', planData.createdAt);
39
+ const ignoredKeys = new Set(['id', 'title', 'status', 'priority', 'updatedAt', 'createdAt', 'dependencies']);
40
+ for (const [key, value] of Object.entries(planData)) {
41
+ if (ignoredKeys.has(key) || value === null || value === undefined) {
42
+ continue;
43
+ }
44
+ lines.push(`${key}: ${String(value)}`);
45
+ }
46
+ lines.push('---');
47
+ lines.push('## Dependencies');
48
+ const rendered = [
49
+ ...dependencies.blocking.map((plan) => renderDependencyLine('BLOCKING', plan)),
50
+ ...dependencies.dependents.map((plan) => renderDependencyLine('DEPENDENT', plan)),
51
+ ];
52
+ if (rendered.length === 0) {
53
+ lines.push('No dependencies.');
54
+ }
55
+ else {
56
+ lines.push(...rendered);
57
+ }
58
+ return lines.join('\n');
59
+ }
60
+ export function appendLineIfExists(lines, key, value) {
61
+ if (value === null || value === undefined) {
62
+ return;
63
+ }
64
+ const normalized = String(value).trim();
65
+ if (normalized.length === 0) {
66
+ return;
67
+ }
68
+ lines.push(`${key}: ${normalized}`);
69
+ }
70
+ export function renderDependencyLine(label, plan) {
71
+ if (!plan || typeof plan !== 'object') {
72
+ return `- [${label}] unknown`;
73
+ }
74
+ const target = plan;
75
+ const id = typeof target.id === 'string' && target.id.length > 0 ? target.id : 'unknown-id';
76
+ const title = typeof target.title === 'string' && target.title.length > 0 ? target.title : '(no title)';
77
+ const status = typeof target.status === 'string' && target.status.length > 0 ? target.status : 'UNKNOWN';
78
+ return `- [${label}] ${id}: ${title} (${status})`;
79
+ }
80
+ //# sourceMappingURL=planFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planFormat.js","sourceRoot":"","sources":["../../src/utils/planFormat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type Ora } from 'ora';
2
+ export declare function withSpinner<T>(text: string, fn: () => Promise<T>, successText?: string): Promise<T>;
3
+ export declare function createSpinner(text: string): Ora | null;
4
+ export declare function formatFileInfo(filePath: string, content: string): string;
5
+ export declare function printFileInfo(filePath: string, content: string): void;
6
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAKpC,wBAAsB,WAAW,CAAC,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,CAAC,CAYZ;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAGtD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGrE"}
@@ -0,0 +1,34 @@
1
+ import ora from 'ora';
2
+ import chalk from 'chalk';
3
+ const isInteractive = process.stderr.isTTY === true;
4
+ export async function withSpinner(text, fn, successText) {
5
+ if (!isInteractive)
6
+ return fn();
7
+ const spinner = ora({ text, stream: process.stderr }).start();
8
+ try {
9
+ const result = await fn();
10
+ spinner.succeed(successText);
11
+ return result;
12
+ }
13
+ catch (error) {
14
+ spinner.fail();
15
+ throw error;
16
+ }
17
+ }
18
+ export function createSpinner(text) {
19
+ if (!isInteractive)
20
+ return null;
21
+ return ora({ text, stream: process.stderr }).start();
22
+ }
23
+ export function formatFileInfo(filePath, content) {
24
+ const bytes = Buffer.byteLength(content, 'utf-8');
25
+ const lines = content.split('\n').length;
26
+ const size = bytes < 1024 ? `${bytes} B` : `${(bytes / 1024).toFixed(1)} KB`;
27
+ return `${chalk.cyan(filePath)} ${chalk.dim(`(${size}, ${lines} lines)`)}`;
28
+ }
29
+ export function printFileInfo(filePath, content) {
30
+ if (!isInteractive)
31
+ return;
32
+ process.stderr.write(` ${formatFileInfo(filePath, content)}\n`);
33
+ }
34
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,GAAiB,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,EAAoB,EACpB,WAAoB;IAEpB,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,OAAe;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7E,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC7D,IAAI,CAAC,aAAa;QAAE,OAAO;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rlarua/agentteams-cli",
3
- "version": "0.0.9",
3
+ "version": "0.0.11",
4
4
  "description": "CLI tool for AgentTeams API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,11 +22,16 @@
22
22
  "api"
23
23
  ],
24
24
  "author": "",
25
- "license": "MIT",
25
+ "license": "Apache-2.0",
26
26
  "dependencies": {
27
+ "@agentteams/markdown-tiptap": "file:../packages/markdown-tiptap",
27
28
  "axios": "^1.7.9",
29
+ "chalk": "^5.6.2",
28
30
  "commander": "^12.1.0",
29
- "open": "^10.1.0"
31
+ "diff": "^8.0.2",
32
+ "gray-matter": "^4.0.3",
33
+ "open": "^10.1.0",
34
+ "ora": "^9.3.0"
30
35
  },
31
36
  "devDependencies": {
32
37
  "@types/jest": "^29.5.14",
package/DEVELOPMENT.md DELETED
@@ -1,234 +0,0 @@
1
- # AgentTeams CLI - Development Guide
2
-
3
- This guide is for contributors and developers who want to work on the CLI itself.
4
-
5
- ## Prerequisites
6
-
7
- - Node.js 24+
8
- - npm 10+
9
- - Local API server running (see [../api/README.md](../api/README.md))
10
-
11
- ## Local Setup
12
-
13
- ### 1. Start Local API Server
14
-
15
- ```bash
16
- # From project root
17
- cd api
18
- docker-compose up
19
- ```
20
-
21
- API will be available at `http://localhost:3001`
22
-
23
- ### 2. Install CLI Dependencies
24
-
25
- ```bash
26
- cd cli
27
- npm install
28
- ```
29
-
30
- ### 3. Set Local Environment
31
-
32
- Create a `.env` file or export environment variables:
33
-
34
- ```bash
35
- export AGENTTEAMS_API_URL="http://localhost:3001"
36
- export AGENTTEAMS_WEB_URL="http://localhost:3000" # For OAuth init flow
37
- export AGENTTEAMS_API_KEY="dev-test-key" # Optional for testing
38
- ```
39
-
40
- Or create `cli/.env`:
41
- ```env
42
- AGENTTEAMS_API_URL=http://localhost:3001
43
- AGENTTEAMS_WEB_URL=http://localhost:3000
44
- ```
45
-
46
- ### 4. Build and Run
47
-
48
- ```bash
49
- # Build TypeScript
50
- npm run build
51
-
52
- # Run locally
53
- node dist/index.js --help
54
-
55
- # Or link for global testing
56
- npm link
57
- agentteams --help
58
- ```
59
-
60
- ## Development Workflow
61
-
62
- ### Running Tests
63
-
64
- ```bash
65
- npm test
66
- ```
67
-
68
- ### Type Checking
69
-
70
- ```bash
71
- npm run build # TypeScript will check types during build
72
- ```
73
-
74
- ### Testing Commands
75
-
76
- ```bash
77
- # Test init command
78
- node dist/index.js init
79
-
80
- # Test with local config
81
- node dist/index.js status list --format text
82
-
83
- # Test with environment variable override
84
- AGENTTEAMS_API_URL=http://localhost:3001 node dist/index.js config whoami
85
- ```
86
-
87
- ## Configuration Priority (Development)
88
-
89
- When developing, you can override config with environment variables:
90
-
91
- 1. **CLI options** (command-line arguments)
92
- 2. **Environment variables** (`AGENTTEAMS_*`) ← Use this for local testing
93
- 3. **Project config** (`.agentteams/config.json`)
94
- 4. **Global config** (`~/.agentteams/config.json`)
95
-
96
- ### Example: Testing with Different API URLs
97
-
98
- ```bash
99
- # Test against local server
100
- AGENTTEAMS_API_URL=http://localhost:3001 \
101
- AGENTTEAMS_WEB_URL=http://localhost:3000 \
102
- node dist/index.js status list
103
-
104
- # Test init with local web
105
- AGENTTEAMS_WEB_URL=http://localhost:3000 node dist/index.js init
106
-
107
- # Test against production
108
- AGENTTEAMS_API_URL=https://agent-api.justin-mk.me \
109
- AGENTTEAMS_WEB_URL=https://agent-web.justin-mk.me \
110
- node dist/index.js status list
111
- ```
112
-
113
- ## Project Structure
114
-
115
- ```
116
- cli/
117
- ├── src/
118
- │ ├── commands/ # Command implementations
119
- │ │ ├── init.ts
120
- │ │ ├── convention.ts
121
- │ │ ├── agentConfig.ts
122
- │ │ └── index.ts # Command router
123
- │ ├── types/ # TypeScript type definitions
124
- │ ├── utils/ # Utilities
125
- │ │ ├── config.ts # Config loading/merging
126
- │ │ ├── authServer.ts # OAuth local server
127
- │ │ └── errors.ts # Error handling
128
- │ └── index.ts # CLI entry point
129
- ├── test/ # Integration tests
130
- ├── dist/ # Compiled JavaScript (gitignored)
131
- ├── package.json
132
- ├── tsconfig.json
133
- ├── README.md # User-facing documentation (for npm)
134
- └── DEVELOPMENT.md # This file (for contributors)
135
- ```
136
-
137
- ## Common Development Tasks
138
-
139
- ### Adding a New Command
140
-
141
- 1. Create command file in `src/commands/`:
142
- ```typescript
143
- // src/commands/myCommand.ts
144
- export async function myCommand(config: Config) {
145
- // Implementation
146
- }
147
- ```
148
-
149
- 2. Add route in `src/commands/index.ts`
150
- 3. Register in `src/index.ts`:
151
- ```typescript
152
- program
153
- .command('my-command')
154
- .description('...')
155
- .action(async () => {
156
- // ...
157
- });
158
- ```
159
-
160
- ### Debugging API Calls
161
-
162
- Enable verbose logging:
163
- ```bash
164
- # Add console.log in src/commands/index.ts or use a debugger
165
- node --inspect dist/index.js status list
166
- ```
167
-
168
- ### Testing OAuth Flow
169
-
170
- OAuth `init` command requires:
171
- - Local API server running at `http://localhost:3001`
172
- - Available port for OAuth callback (default: 7777)
173
-
174
- ```bash
175
- node dist/index.js init
176
- # Browser will open for authentication
177
- ```
178
-
179
- ## Publishing (Maintainers Only)
180
-
181
- See [Publishing Guide](../README.md#publishing) in the main README.
182
-
183
- For development testing, use `npm link` instead of publishing:
184
-
185
- ```bash
186
- npm link
187
- agentteams --version # Should show current version from package.json
188
- ```
189
-
190
- ## Troubleshooting
191
-
192
- ### "Cannot connect to server"
193
-
194
- Check if local API is running:
195
- ```bash
196
- curl http://localhost:3001/api/health
197
- # Expected: {"status":"ok"}
198
- ```
199
-
200
- ### "Config not found"
201
-
202
- The CLI looks for config in this order:
203
- 1. `.agentteams/config.json` (current dir or parent dirs)
204
- 2. `~/.agentteams/config.json` (global)
205
- 3. Environment variables
206
-
207
- For development, use environment variables:
208
- ```bash
209
- export AGENTTEAMS_API_URL=http://localhost:3001
210
- export AGENTTEAMS_API_KEY=test-key
211
- ```
212
-
213
- ### TypeScript errors after changes
214
-
215
- Rebuild:
216
- ```bash
217
- npm run build
218
- ```
219
-
220
- ## Contributing
221
-
222
- 1. Create a feature branch
223
- 2. Make changes
224
- 3. Run tests: `npm test`
225
- 4. Build: `npm run build`
226
- 5. Test manually with `node dist/index.js`
227
- 6. Commit with conventional commit messages
228
- 7. Open a pull request
229
-
230
- ## Questions?
231
-
232
- - Check [../README.md](../README.md) for overall project documentation
233
- - Check [../api/README.md](../api/README.md) for API server setup
234
- - Open an issue on GitHub