Skip to content

Latest commit

 

History

History
90 lines (64 loc) · 2.57 KB

File metadata and controls

90 lines (64 loc) · 2.57 KB

Contributing to TowerForge

Thanks for your interest in contributing! TowerForge is an AI-powered telecom construction toolkit — contributions that improve accuracy, add carrier standards, or expand the equipment catalog are especially welcome.

Development setup

Prerequisites

  • Node.js 20+
  • npm

Setup

git clone https://github.com/optimizedwf/towerforge.git
cd towerforge
npm install

Build

npm run build      # Compile TypeScript
npm run lint       # Type-check without emitting

Project structure

sdk/src/
├── tools/         # Public API functions (7 tools)
├── engine/        # Structured output builders
├── profiles/      # Carrier + OEM profiles
├── schemas/       # Zod schemas + material index
├── data/          # Data loaders (CSV, PDF, XLSX)
├── validation/    # BOM rules, part number enforcement
├── compiler/      # Structured → markdown
└── utils/         # Tags, hashing, normalization

Code standards

  • TypeScript: Strict mode enabled. All public APIs have Zod validation.
  • Imports: Named exports preferred. No default exports for tools/engines.
  • Tool functions: Every tool must have Zod-validated input and output types.
  • Tests: All new tools need acceptance tests. Existing tests must pass.

Adding a new carrier profile

  1. Add profile data to sdk/src/profiles/carrierProfiles.ts
  2. Add standards reference to docs/carrier-standards.md
  3. Update prompt in skills/telecom-construction/prompt.ts
  4. Add acceptance test in sdk/tests/acceptance/profiles.test.ts

Adding equipment to the catalog

Add entries to both:

  • sdk/src/schemas/materialIndex.ts — SDK-level catalog
  • skills/telecom-construction/tools.ts — AI skill tool catalog

Include: part number, description, manufacturer, and category.

Testing

npm test                 # All tests
npm run test:acceptance  # Acceptance tests

Tests use ts-jest. Keep tests focused on tool behavior and validation rules.

Pull request process

  1. Fork the repo and create a feature branch
  2. Write or update tests for your changes
  3. Ensure npm run lint and npm test pass
  4. Update CHANGELOG.md under [Unreleased]
  5. Submit a PR with a clear description of what changed and why

Reporting bugs

Use the bug report template. Include:

  • TowerForge version
  • Node.js version
  • Steps to reproduce
  • Expected vs actual behavior

Questions?

Open a discussion or email adam@adamn.info.