Skip to content

Commit a484340

Browse files
committed
feat: Initial release with CLI and MCP server support
- Complete TypeScript CLI tool for Basecamp integration - MCP server for Codex/Cursor integration - OAuth2 authentication with Basecamp - Fetch todos and convert to LLM-friendly formats - Comprehensive documentation and examples - GitHub Actions for CI/CD - ESLint, Prettier, and Jest setup
0 parents  commit a484340

27 files changed

+9305
-0
lines changed

.eslintrc.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
module.exports = {
2+
parser: '@typescript-eslint/parser',
3+
parserOptions: {
4+
ecmaVersion: 2022,
5+
sourceType: 'module',
6+
},
7+
plugins: ['@typescript-eslint', 'prettier'],
8+
extends: [
9+
'eslint:recommended',
10+
'prettier',
11+
],
12+
rules: {
13+
'prettier/prettier': 'error',
14+
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
15+
'@typescript-eslint/explicit-function-return-type': 'off',
16+
'@typescript-eslint/explicit-module-boundary-types': 'off',
17+
'@typescript-eslint/no-explicit-any': 'warn',
18+
'@typescript-eslint/no-non-null-assertion': 'warn',
19+
'prefer-const': 'error',
20+
'no-var': 'error',
21+
},
22+
env: {
23+
node: true,
24+
es2022: true,
25+
jest: true,
26+
},
27+
ignorePatterns: ['dist/', 'node_modules/', '*.js'],
28+
};
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
name: Bug report
3+
about: Create a report to help us improve
4+
title: ''
5+
labels: 'bug'
6+
assignees: ''
7+
8+
---
9+
10+
**Describe the bug**
11+
A clear and concise description of what the bug is.
12+
13+
**To Reproduce**
14+
Steps to reproduce the behavior:
15+
1. Run command '...'
16+
2. See error
17+
18+
**Expected behavior**
19+
A clear and concise description of what you expected to happen.
20+
21+
**Environment:**
22+
- OS: [e.g. macOS, Windows, Linux]
23+
- Node.js version: [e.g. 18.0.0]
24+
- Package version: [e.g. 1.0.0]
25+
26+
**Additional context**
27+
Add any other context about the problem here, including:
28+
- Environment variables set (without revealing sensitive values)
29+
- Basecamp project configuration
30+
- Any error messages or logs
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: Feature request
3+
about: Suggest an idea for this project
4+
title: ''
5+
labels: 'enhancement'
6+
assignees: ''
7+
8+
---
9+
10+
**Is your feature request related to a problem? Please describe.**
11+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12+
13+
**Describe the solution you'd like**
14+
A clear and concise description of what you want to happen.
15+
16+
**Describe alternatives you've considered**
17+
A clear and concise description of any alternative solutions or features you've considered.
18+
19+
**Additional context**
20+
Add any other context or screenshots about the feature request here.

.github/workflows/publish.yml

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: Build and Publish
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
workflow_dispatch:
8+
9+
jobs:
10+
build-and-publish:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@v4
16+
17+
- name: Setup Node.js
18+
uses: actions/setup-node@v4
19+
with:
20+
node-version: '18'
21+
registry-url: 'https://registry.npmjs.org'
22+
23+
- name: Install dependencies
24+
run: npm ci
25+
26+
- name: Run linting
27+
run: npm run lint
28+
29+
- name: Run tests
30+
run: npm test
31+
32+
- name: Build project
33+
run: npm run build
34+
35+
- name: Publish to npm
36+
run: npm publish --access public
37+
env:
38+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
39+
40+
test:
41+
runs-on: ubuntu-latest
42+
43+
steps:
44+
- name: Checkout code
45+
uses: actions/checkout@v4
46+
47+
- name: Setup Node.js
48+
uses: actions/setup-node@v4
49+
with:
50+
node-version: '18'
51+
52+
- name: Install dependencies
53+
run: npm ci
54+
55+
- name: Run linting
56+
run: npm run lint
57+
58+
- name: Run tests
59+
run: npm test
60+
61+
- name: Build project
62+
run: npm run build
63+
64+
build:
65+
runs-on: ${{ matrix.os }}
66+
strategy:
67+
matrix:
68+
os: [ubuntu-latest, windows-latest, macos-latest]
69+
node-version: [18, 20]
70+
71+
steps:
72+
- name: Checkout code
73+
uses: actions/checkout@v4
74+
75+
- name: Setup Node.js ${{ matrix.node-version }}
76+
uses: actions/setup-node@v4
77+
with:
78+
node-version: ${{ matrix.node-version }}
79+
80+
- name: Install dependencies
81+
run: npm ci
82+
83+
- name: Build project
84+
run: npm run build

.gitignore

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# Dependencies
2+
node_modules/
3+
npm-debug.log*
4+
yarn-debug.log*
5+
yarn-error.log*
6+
7+
# Build outputs
8+
dist/
9+
build/
10+
*.tsbuildinfo
11+
12+
# Environment variables
13+
.env
14+
.env.local
15+
.env.development.local
16+
.env.test.local
17+
.env.production.local
18+
19+
# IDE files
20+
.vscode/
21+
.idea/
22+
*.swp
23+
*.swo
24+
*~
25+
26+
# OS generated files
27+
.DS_Store
28+
.DS_Store?
29+
._*
30+
.Spotlight-V100
31+
.Trashes
32+
ehthumbs.db
33+
Thumbs.db
34+
35+
# Logs
36+
logs
37+
*.log
38+
39+
# Runtime data
40+
pids
41+
*.pid
42+
*.seed
43+
*.pid.lock
44+
45+
# Coverage directory used by tools like istanbul
46+
coverage/
47+
*.lcov
48+
49+
# nyc test coverage
50+
.nyc_output
51+
52+
# Dependency directories
53+
jspm_packages/
54+
55+
# Optional npm cache directory
56+
.npm
57+
58+
# Optional eslint cache
59+
.eslintcache
60+
61+
# Microbundle cache
62+
.rpt2_cache/
63+
.rts2_cache_cjs/
64+
.rts2_cache_es/
65+
.rts2_cache_umd/
66+
67+
# Optional REPL history
68+
.node_repl_history
69+
70+
# Output of 'npm pack'
71+
*.tgz
72+
73+
# Yarn Integrity file
74+
.yarn-integrity
75+
76+
# parcel-bundler cache (https://parceljs.org/)
77+
.cache
78+
.parcel-cache
79+
80+
# next.js build output
81+
.next
82+
83+
# nuxt.js build output
84+
.nuxt
85+
86+
# vuepress build output
87+
.vuepress/dist
88+
89+
# Serverless directories
90+
.serverless/
91+
92+
# FuseBox cache
93+
.fusebox/
94+
95+
# DynamoDB Local files
96+
.dynamodb/
97+
98+
# TernJS port file
99+
.tern-port
100+
101+
# Basecamp token cache
102+
.codex/

.npmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
access=public

.prettierrc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"semi": true,
3+
"trailingComma": "es5",
4+
"singleQuote": true,
5+
"printWidth": 100,
6+
"tabWidth": 2,
7+
"useTabs": false,
8+
"bracketSpacing": true,
9+
"arrowParens": "avoid",
10+
"endOfLine": "lf"
11+
}

0 commit comments

Comments
 (0)