Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
241 changes: 241 additions & 0 deletions .agents/project-tracker/.state.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
{
"files": {
"INDEX.md": {
"baseline": "f66e39cb2ad9b62b5f57bafa8ee2d18cdf86d698",
"changed_fingerprints": {
"README.md": "806935c899e73c6866646f5bf078ae50ecb1e8928cfacefbb555c60803da35ca"
},
"matched_paths": [
".cargo/config.toml",
".github/workflows/ci.yml",
".github/workflows/release.yml",
"Cargo.lock",
"Cargo.toml",
"README.md",
"texpand-cli/Cargo.toml",
"texpand-core/Cargo.toml",
"texpand-vscode/Cargo.toml",
"texpand-vscode/extension/package-lock.json",
"texpand-vscode/extension/package.json"
],
"updated": "2026-06-04T08:59:49Z"
},
"api.md": {
"baseline": "f66e39cb2ad9b62b5f57bafa8ee2d18cdf86d698",
"changed_fingerprints": {
"README.md": "806935c899e73c6866646f5bf078ae50ecb1e8928cfacefbb555c60803da35ca"
},
"matched_paths": [
"README.md",
"texpand-cli/src/config.rs",
"texpand-cli/src/main.rs",
"texpand-vscode/extension/package.json",
"texpand-vscode/extension/src/extension.ts",
"texpand-vscode/extension/src/wasm.ts",
"texpand-vscode/src/main.rs"
],
"updated": "2026-06-04T08:59:49Z"
},
"architecture.md": {
"baseline": "7336614740fff8cd54fb0763af1544da086df7e9",
"changed_fingerprints": {},
"matched_paths": [
".claude/CLAUDE.md",
"Cargo.toml",
"texpand-cli/src/config.rs",
"texpand-cli/src/main.rs",
"texpand-core/src/compressor.rs",
"texpand-core/src/expander.rs",
"texpand-core/src/lib.rs",
"texpand-core/src/parser.rs",
"texpand-core/src/resolver.rs",
"texpand-vscode/extension/src/extension.ts",
"texpand-vscode/extension/src/wasm.ts",
"texpand-vscode/src/main.rs"
],
"updated": "2026-06-04T08:56:57Z"
},
"conventions.md": {
"baseline": "7336614740fff8cd54fb0763af1544da086df7e9",
"changed_fingerprints": {},
"matched_paths": [
".claude/CLAUDE.md",
"Cargo.toml",
"texpand-cli/Cargo.toml",
"texpand-core/Cargo.toml",
"texpand-core/src/compressor.rs",
"texpand-core/src/expander.rs",
"texpand-core/src/lib.rs",
"texpand-core/src/parser.rs",
"texpand-core/src/resolver.rs",
"texpand-vscode/Cargo.toml",
"texpand-vscode/extension/eslint.config.mjs",
"texpand-vscode/extension/src/extension.ts",
"texpand-vscode/extension/src/wasm.ts",
"texpand-vscode/extension/tsconfig.json"
],
"updated": "2026-06-04T08:56:57Z"
},
"data-model.md": {
"baseline": "7336614740fff8cd54fb0763af1544da086df7e9",
"changed_fingerprints": {},
"matched_paths": [
"Cargo.toml",
"texpand-cli/src/config.rs",
"texpand-cli/src/main.rs",
"texpand-core/src/compressor.rs",
"texpand-core/src/expander.rs",
"texpand-core/src/lib.rs",
"texpand-core/src/parser.rs",
"texpand-core/src/resolver.rs",
"texpand-vscode/src/main.rs"
],
"updated": "2026-06-04T08:56:57Z"
},
"deployment.md": {
"baseline": "7336614740fff8cd54fb0763af1544da086df7e9",
"changed_fingerprints": {
"texpand-vscode/extension/package-lock.json": "e44e45de12582c728ddf212f4fc1b69d2e8afcb8ce8e7e8081094a3e788c3978"
},
"matched_paths": [
".github/workflows/release.yml",
"Cargo.toml",
"texpand-cli/Cargo.toml",
"texpand-vscode/Cargo.toml",
"texpand-vscode/extension/package-lock.json",
"texpand-vscode/extension/package.json"
],
"updated": "2026-06-04T08:56:57Z"
},
"implementation.md": {
"baseline": "f66e39cb2ad9b62b5f57bafa8ee2d18cdf86d698",
"changed_fingerprints": {
"README.md": "806935c899e73c6866646f5bf078ae50ecb1e8928cfacefbb555c60803da35ca"
},
"matched_paths": [
"README.md",
"texpand-cli/src/config.rs",
"texpand-cli/src/main.rs",
"texpand-core/src/compressor.rs",
"texpand-core/src/expander.rs",
"texpand-core/src/lib.rs",
"texpand-core/src/parser.rs",
"texpand-core/src/resolver.rs",
"texpand-core/tests/common.rs",
"texpand-core/tests/test_basic_expansion.rs",
"texpand-core/tests/test_circular_dep.rs",
"texpand-core/tests/test_compression.rs",
"texpand-core/tests/test_conditional_includes.rs",
"texpand-core/tests/test_edge_cases.rs",
"texpand-core/tests/test_system_include.rs",
"texpand-vscode/extension/src/extension.ts",
"texpand-vscode/extension/src/wasm.ts",
"texpand-vscode/src/main.rs"
],
"updated": "2026-06-04T08:59:49Z"
},
"modules/cli.md": {
"baseline": "f66e39cb2ad9b62b5f57bafa8ee2d18cdf86d698",
"changed_fingerprints": {
"README.md": "806935c899e73c6866646f5bf078ae50ecb1e8928cfacefbb555c60803da35ca"
},
"matched_paths": [
"README.md",
"texpand-cli/Cargo.toml",
"texpand-cli/src/config.rs",
"texpand-cli/src/main.rs"
],
"updated": "2026-06-04T08:59:49Z"
},
"modules/core.md": {
"baseline": "7336614740fff8cd54fb0763af1544da086df7e9",
"changed_fingerprints": {},
"matched_paths": [
"texpand-core/Cargo.toml",
"texpand-core/src/compressor.rs",
"texpand-core/src/expander.rs",
"texpand-core/src/lib.rs",
"texpand-core/src/parser.rs",
"texpand-core/src/resolver.rs",
"texpand-core/tests/common.rs",
"texpand-core/tests/test_basic_expansion.rs",
"texpand-core/tests/test_circular_dep.rs",
"texpand-core/tests/test_compression.rs",
"texpand-core/tests/test_conditional_includes.rs",
"texpand-core/tests/test_edge_cases.rs",
"texpand-core/tests/test_system_include.rs"
],
"updated": "2026-06-04T08:56:57Z"
},
"modules/vscode.md": {
"baseline": "f66e39cb2ad9b62b5f57bafa8ee2d18cdf86d698",
"changed_fingerprints": {
"texpand-vscode/extension/README.md": "3c04abc8e1a08d3e4d66130bf5fecaa1d26318fe4ff2afcb8a726a45407937d3",
"texpand-vscode/extension/README.zh-CN.md": "401a0fd9075c62d773e709b2944e60f7dedde1b5990b8a1fcbb3422084498eab"
},
"matched_paths": [
"texpand-vscode/Cargo.toml",
"texpand-vscode/extension/README.md",
"texpand-vscode/extension/README.zh-CN.md",
"texpand-vscode/extension/l10n/bundle.l10n.json",
"texpand-vscode/extension/l10n/bundle.l10n.zh-cn.json",
"texpand-vscode/extension/package.json",
"texpand-vscode/extension/package.nls.json",
"texpand-vscode/extension/package.nls.qps-ploc.json",
"texpand-vscode/extension/package.nls.zh-cn.json",
"texpand-vscode/extension/src/extension.ts",
"texpand-vscode/extension/src/wasm.ts",
"texpand-vscode/src/main.rs"
],
"updated": "2026-06-04T08:59:49Z"
},
"progress.md": {
"baseline": "f66e39cb2ad9b62b5f57bafa8ee2d18cdf86d698",
"changed_fingerprints": {
"README.md": "806935c899e73c6866646f5bf078ae50ecb1e8928cfacefbb555c60803da35ca",
"texpand-vscode/extension/README.md": "3c04abc8e1a08d3e4d66130bf5fecaa1d26318fe4ff2afcb8a726a45407937d3",
"texpand-vscode/extension/README.zh-CN.md": "401a0fd9075c62d773e709b2944e60f7dedde1b5990b8a1fcbb3422084498eab"
},
"matched_paths": [],
"updated": "2026-06-04T08:59:49Z"
},
"stack.md": {
"baseline": "7336614740fff8cd54fb0763af1544da086df7e9",
"changed_fingerprints": {
"texpand-vscode/extension/package-lock.json": "e44e45de12582c728ddf212f4fc1b69d2e8afcb8ce8e7e8081094a3e788c3978"
},
"matched_paths": [
".github/workflows/ci.yml",
".github/workflows/release.yml",
"Cargo.lock",
"Cargo.toml",
"texpand-cli/Cargo.toml",
"texpand-core/Cargo.toml",
"texpand-vscode/Cargo.toml",
"texpand-vscode/extension/package-lock.json",
"texpand-vscode/extension/package.json"
],
"updated": "2026-06-04T08:56:57Z"
},
"toolchain.md": {
"baseline": "7336614740fff8cd54fb0763af1544da086df7e9",
"changed_fingerprints": {
"texpand-vscode/extension/package-lock.json": "e44e45de12582c728ddf212f4fc1b69d2e8afcb8ce8e7e8081094a3e788c3978"
},
"matched_paths": [
".cargo/config.toml",
".claude/CLAUDE.md",
".github/workflows/ci.yml",
".github/workflows/release.yml",
"Cargo.lock",
"Cargo.toml",
"texpand-vscode/extension/eslint.config.mjs",
"texpand-vscode/extension/package-lock.json",
"texpand-vscode/extension/package.json",
"texpand-vscode/extension/tsconfig.json"
],
"updated": "2026-06-04T08:56:57Z"
}
},
"version": 1
}
75 changes: 75 additions & 0 deletions .agents/project-tracker/INDEX.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
sources:
- "Cargo.toml"
- "Cargo.lock"
- "README.md"
- ".github/workflows/*.yml"
- ".cargo/config.toml"
- "texpand-*/Cargo.toml"
- "texpand-vscode/extension/package.json"
- "texpand-vscode/extension/package-lock.json"
---

# PROJECT: Template-Expand

Rust monorepo for expanding local C/C++ template headers into a single-file submission, with both CLI and VS Code frontends.

## Table of Contents

- [Stack](stack.md) — Technology choices and dependencies
- [Toolchain](toolchain.md) — Build, test, CI/CD, dev setup
- [Architecture](architecture.md) — Module layout and data flow
- [Conventions](conventions.md) — Coding standards, naming rules, architectural rules
- [Progress](progress.md) — Current status and roadmap
- [Implementation](implementation.md) — Key implementation details
- [Data Model](data-model.md) — Project data/storage model
- [API](api.md) — Public API surface
- [Deployment](deployment.md) — Build and release packaging
- [Modules](modules/core.md), [CLI](modules/cli.md), [VS Code](modules/vscode.md) — Per-component notes

## Tech Stack Summary

| Layer | Technology | Version |
|-------|-----------|---------|
| Language | Rust | Edition 2024 |
| Frontend | TypeScript for VS Code extension | TypeScript 5.9.x |
| Parser | tree-sitter + tree-sitter-cpp | 0.24 / 0.23 |
| Packaging | Cargo + npm + VSCE | lockfile-managed |
| CI/CD | GitHub Actions | — |

- `texpand-core` is intentionally I/O-free and exposes the reusable expansion engine.
- `texpand-cli` provides local filesystem, config, and clipboard integration.
- `texpand-vscode` compiles the Rust frontend to WASI/WASM and wraps it in a VS Code extension.
- Workspace crate manifests, extension package metadata, and extension lockfile are currently aligned on release version `0.2.2`.
- Releases publish native CLI binaries and a `.vsix` extension artifact.

## Quick Reference Commands

```bash
# Build
cargo build --workspace

# Test
cargo test --workspace

# Run
cargo run -p texpand-cli -- fixtures/basic/main.cpp

# Lint
cargo clippy --workspace -- -D warnings
```

## Project Map

- `texpand-core/` — parser, resolver abstraction, recursive expander, and compression logic.
- `texpand-cli/` — command-line interface, config loading, filesystem-backed resolver, clipboard output.
- `texpand-vscode/` — Rust WASI binary plus the TypeScript VS Code extension wrapper.
- `fixtures/` — C/C++ sample trees used for manual and automated verification.
- `.github/workflows/` — CI validation and tagged release automation.

## Tracking Exclusions

- `target/**` -- build outputs and generated docs are not source-of-truth inputs.
- `texpand-vscode/extension/node_modules/**` -- vendored dependencies are reproducible from `package-lock.json`.
- `texpand-vscode/extension/.vscode/**` -- local VS Code workspace settings are development-only and not architecture-tracked.
- `.claude/settings.local.json` -- local harness/editor preferences are intentionally user-specific.
56 changes: 56 additions & 0 deletions .agents/project-tracker/api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
sources:
- "texpand-cli/src/*.rs"
- "texpand-vscode/src/*.rs"
- "texpand-vscode/extension/src/*.ts"
- "texpand-vscode/extension/package.json"
- "README.md"
---

# API Reference

N/A — the repository exposes a CLI and a VS Code command surface, not an HTTP or RPC API.

## Endpoints

| Method | Path | Auth | Description |
|--------|------|------|-------------|
| N/A | N/A | N/A | No network endpoints are implemented |

## Request / Response

### CLI surface

- Input: source file path or `-` for stdin, plus flags for include paths, compression, output file, clipboard, and config.
- Output: expanded C/C++ text to stdout, a file, or the clipboard.

### VS Code WASI process contract

**Request:**

- Environment variables:
- `TEXPAND_ENTRY_PATH`
- `TEXPAND_COMPRESS`
- `TEXPAND_INCLUDE_PATHS`

**Response:**

```json
{
"success": true,
"data": "expanded C/C++ text",
"error": null
}
```

The extension surface remains local-only; the current manifest version is `0.2.2`, but the request/response contract is unchanged by this maintenance update.

## Rate Limiting

| Window | Limit | Behavior |
|--------|-------|----------|
| N/A | N/A | No network service exists |

## Pagination

Not applicable.
Loading
Loading