Lucas Winther and Claude Opus 5
5dc609cc7d
docs: add design spec for fuzzy search by default
...
Specifies replacing exact substring matching with token-aware fuzzy
matching as the default across all search tools, plus relevance ranking
and wider content coverage (wiki body text, work package descriptions
and comments, meeting participants and project names).
Key decisions:
- Hand-rolled zero-dependency scorer in src/search/; fuse.js rejected
because its Bitap implementation caps patterns at 32 chars and targets
short fields, not the long-text matching required here.
- matchMode: 'fuzzy' | 'exact' escape hatch, defaulting to fuzzy, with
exact mode preserving current behaviour byte-for-byte.
- Two-phase pipeline: cheap shallow rank, deep-enrich top 25 with
bounded concurrency, recency backfill for deep-only matches.
Also records two known limitations left out of scope: the two-phase
recall ceiling and the wiki cache's ID 1..50 probe window.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected] >
2026-09-17 09:54:30 +02:00
Lucas Winther
7097d1c174
fix: resolve final review findings (wiki cache tenant isolation, meeting search pagination, ambient test)
2026-09-07 03:12:55 +02:00
Lucas Winther
e0aa91e388
docs: record ADR-018 and update documentation for meetings, wikis, and activities tools
2026-09-07 03:06:38 +02:00
Lucas Winther
d4a905d419
test: add live container tests for meetings, wikis, and activities
2026-09-07 03:01:52 +02:00
Lucas Winther
d6e78d8cc3
feat: wire meetings, wikis, and activities tools into server registry (18 tools)
2026-09-07 02:56:00 +02:00
Lucas Winther
2fb25a9604
fix(wikis): refine projectId schema in searchWikiPagesShape
2026-09-07 02:51:46 +02:00
Lucas Winther
16e54614ac
feat: add wikis MCP tools
2026-09-07 02:50:09 +02:00
Lucas Winther
271f15b4e3
feat: add meetings MCP tools
2026-09-07 02:43:04 +02:00
Lucas Winther
190278fcce
feat: add openproject_list_work_package_activities MCP tool
2026-09-07 02:39:01 +02:00
Lucas Winther
6003925bcf
fix: discriminate discovery probe errors and evict cache on refresh
2026-09-07 02:34:35 +02:00
Lucas Winther
1ce61506b2
feat: add wikis domain service with caching discovery search
2026-09-07 02:31:03 +02:00
Lucas Winther
c0125121cc
fix: resolve typecheck errors and improve searchMeetings pagination slicing
2026-09-07 02:26:14 +02:00
Lucas Winther
8c3db68307
feat: add meetings domain service
2026-09-07 02:22:10 +02:00
Lucas Winther
456c90adba
feat: add listWorkPackageActivities domain service
2026-09-07 02:14:18 +02:00
Lucas Winther
324e7fce9c
docs: add implementation plan for meetings, wikis, and activities tools
2026-09-07 02:11:03 +02:00
Lucas Winther
e08eac3a2b
docs: add design spec for meetings, wikis, and activities tools
2026-09-07 02:09:14 +02:00
Lucas Winther
75531eca2d
feat(http): add OpenAPI 3.1.0 specification and REST tool execution endpoint
2026-09-07 01:38:32 +02:00
Lucas Winther
ba1ce2171e
feat(http): support MCP Streamable HTTP transport on /sse, /mcp, and / for Open WebUI
2026-09-07 01:31:04 +02:00
Lucas Winther
2c1ff8f7db
feat(http): allow config.apiKey fallback on server for single-tenant deployments
2026-09-07 01:23:31 +02:00
Lucas Winther
914883957e
docs: ensure consistent PORT and HOST_PORT documentation across codebase and docs
2026-09-07 01:20:29 +02:00
Lucas Winther
c2bb2e0cf7
docs(readme): clarify PORT vs HOST_PORT in docker compose deployment instructions
2026-09-07 01:18:41 +02:00
Lucas Winther
86c7dadb9b
fix(config): support HOST_PORT as fallback for PORT environment variable
2026-09-07 01:16:48 +02:00
Lucas Winther
c9ba15bca0
docs: update ARCHITECTURE.md, README.md, and plan with hosted remote server details
2026-09-07 01:11:07 +02:00
Lucas Winther
d0dc27b2e3
feat(server): wire HTTP transport into CLI, add docker-compose.server.yml, and update docs
2026-09-07 00:14:49 +02:00
Lucas Winther
ec85bf811b
feat(http): implement hosted remote MCP server with HTTP/SSE transport
2026-09-06 23:36:34 +02:00
Lucas Winther
cda83e320f
feat(config): support port and host options for HTTP/SSE transport
2026-09-06 21:22:50 +02:00
Lucas Winther
2fad0036e7
docs(plan): add implementation plan for hosted remote MCP server and multi-tenant credential scoping
2026-09-06 21:13:07 +02:00
Lucas Winther
1f3eae4258
docs(spec): add specification for hosted remote MCP server and multi-tenant credential scoping
2026-09-06 21:12:14 +02:00
Lucas Winther
2fb02257f0
docs: update README with detailed usage instructions, tool reference, and client guides
2026-09-06 21:08:41 +02:00
Lucas Winther
e56bd574e2
fix(tests): skip live container tests when OPENPROJECT_API_KEY is not set
2026-09-06 21:05:36 +02:00
Lucas Winther
03a1f44517
fix: restore strict noUncheckedIndexedAccess and skip redundant docker build in CI
2026-09-06 20:54:12 +02:00
Lucas Winther
a30d913470
docs: record ADR-015, update README with Docker usage, and update TODO.md
2026-09-06 20:48:55 +02:00
Lucas Winther
2b93ebe0a1
fix(ci): lowercase Docker image name in CI workflow and optimize Dockerfile layer creation
2026-09-06 20:48:54 +02:00
Lucas Winther
82138fff61
fix(types): resolve typecheck errors in queries service and tool registration
2026-09-06 20:48:52 +02:00
Lucas Winther
51c92ea927
ci: create GitHub Actions workflow for testing and multi-arch Docker publishing
2026-09-06 20:44:09 +02:00
Lucas Winther
df2bad2f62
feat(docker): add multi-stage Dockerfile and .dockerignore
2026-09-06 20:40:27 +02:00
Lucas Winther
1a32b8a179
docs(plan): add implementation plan for Docker packaging and GitHub Actions CI pipeline
2026-09-06 20:37:44 +02:00
Lucas Winther
7ce86012d0
docs(spec): add specification for Docker packaging and GitHub Actions CI pipeline
2026-09-06 20:36:43 +02:00
Lucas Winther
815741b45b
docs(plan): update progress ledger and mark Task 3 complete
2026-09-06 20:02:16 +02:00
Lucas Winther
191e37252b
test(openapi): add live container tests, update tool count assertions, and update TODO.md
2026-09-06 20:00:02 +02:00
Lucas Winther
eaf6d67a30
docs(plan): update progress ledger and mark Task 2 complete
2026-09-06 19:58:20 +02:00
Lucas Winther
a5f4dcc2ca
feat(tools): add openproject_get_openapi_spec tool definition and registration
2026-09-06 19:56:34 +02:00
Lucas Winther
1039a6aa7a
docs(plan): update progress ledger and mark Task 1 complete
2026-09-06 19:49:31 +02:00
Lucas Winther
69f2a95371
fix(openapi): guard suffix matching and add ambient context test
2026-09-06 19:49:13 +02:00
Lucas Winther
25fc2c9057
feat(services): implement OpenAPI specification service and in-memory caching
2026-09-06 19:40:33 +02:00
Lucas Winther
635ac88f5e
docs(plan): add OpenAPI tool implementation plan
2026-09-06 19:37:56 +02:00
Lucas Winther
6e166e98b8
docs(spec): add OpenAPI tool design specification
2026-09-06 19:37:04 +02:00
Lucas Winther
d9b96862fe
docs: record ADR-013 (stdio hygiene) and ADR-014 (OpenAPI discovery)
2026-09-06 19:31:43 +02:00
Lucas Winther
fd9697b2b7
docs(plan): update progress ledger and mark Task 4 plan steps complete
2026-09-06 19:23:18 +02:00
Lucas Winther
3d4a064593
refactor(server): add shutdown idempotency guard and test teardown blocks
2026-09-06 19:22:46 +02:00
Lucas Winther
f1e84d281a
feat(server): wire CLI entrypoint, live E2E tool calling, and mark Task 4 complete in TODO.md
2026-09-06 19:17:40 +02:00
Lucas Winther
8297f97228
docs(plan): update progress ledger and check off Task 3
2026-09-06 19:16:26 +02:00
Lucas Winther
4994b2c8db
test(server): clean up read-only manifest filter assertions
2026-09-06 19:16:04 +02:00
Lucas Winther
af2a8f3af8
feat(server): add read-only mode enforcement and execution guard tests
2026-09-06 19:14:25 +02:00
Lucas Winther
d49e0fc881
feat(server): implement MCP server factory and transport lifecycle
2026-09-06 19:03:09 +02:00
Lucas Winther
3f618b2cf3
feat(tools): add execution wrapper support to tool registration
2026-09-06 18:52:22 +02:00
Lucas Winther
08eff37db0
docs: add design spec and implementation plan for MCP server assembly
2026-09-06 18:40:47 +02:00
Lucas Winther
6b8045111b
fix(tools): address final code review findings on validation, concurrency, and testing
2026-09-06 18:37:21 +02:00
Lucas Winther
9bfedf8a8b
docs: add OpenAPI support requirement to spec, architecture, and plan
2026-09-06 18:11:58 +02:00
Lucas Winther
ebb47eb659
feat(tools): add live container tests and mark Task 3 complete in TODO.md
2026-09-06 18:10:00 +02:00
Lucas Winther
4eb17c2e5c
feat(tools): add tool registry and barrel export
2026-09-06 18:04:50 +02:00
Lucas Winther
8cdca0fd83
feat(tools): implement metadata tools and registration
2026-09-06 18:01:43 +02:00
Lucas Winther
ff05b48f81
feat(tools): implement query tools and registration
2026-09-06 17:54:42 +02:00
Lucas Winther
e3c956f900
docs: record completion of tasks 1-3 in MCP tools plan and TODO.md
2026-09-06 02:21:45 +02:00
Lucas Winther
3910c5548f
fix(tools): address review finding on heterogeneous tool registration and McpToolResponse index signature
2026-09-06 02:18:47 +02:00
Lucas Winther
d9176a258c
feat(tools): implement work package tools and registration
2026-09-06 01:50:58 +02:00
Lucas Winther
8ccbebe34f
feat(tools): implement project tools and registration
2026-09-06 01:30:17 +02:00
Lucas Winther
43eeee2e04
fix(tools): address review findings on error codes, registerTool assertions, and strict typing
2026-09-06 01:03:40 +02:00
Lucas Winther
bb321bfdbe
feat(tools): add common tool utilities, types, and error formatting
2026-09-06 00:48:25 +02:00
Lucas Winther
290d9a2cc9
refactor(client): expose error hierarchy via src/client/errors.ts and add code property
2026-09-06 00:48:04 +02:00
Lucas Winther
f8f9ae65a2
docs: add design spec and implementation plan for MCP tools
2026-09-06 00:45:30 +02:00
Lucas Winther
a57e8ba7df
fix(services): encode URI in getProject and improve test assertions
2026-09-06 00:23:58 +02:00
Lucas Winther
ca22a0e109
docs: check off tasks 4-6 in domain services implementation plan
2026-09-06 00:22:20 +02:00
Lucas Winther
78ae79372c
feat(services): add live container tests and mark Task 2 complete in TODO.md
2026-09-05 23:12:49 +02:00
Lucas Winther
ed38e5b537
fix(services): resolve project identifier in queries/work packages and use results link
2026-09-05 23:12:46 +02:00
Lucas Winther
a8e4ce9bc4
feat(services): implement metadata domain service and barrel export
2026-09-05 22:57:31 +02:00
Lucas Winther
8db5a92bc5
feat(services): implement queries domain service
2026-09-05 22:49:18 +02:00
Lucas Winther
cbf676007f
docs: track completion of tasks 1-3 in domain services plan and TODO.md
2026-09-05 18:22:12 +02:00
Lucas Winther
b1348dbea8
feat(services): implement work packages domain service
2026-09-05 18:17:24 +02:00
Lucas Winther
6e0d3faa61
feat(services): implement projects domain service
2026-09-05 17:49:52 +02:00
Lucas Winther
c50ab8989c
feat(services): implement shared client resolution helper
2026-09-05 17:45:20 +02:00
Lucas Winther
86e60c9f28
chore: ignore .superpowers/ and .worktrees/ directories
2026-09-05 17:43:16 +02:00
Lucas Winther
25677e867d
docs(plans): add domain services layer implementation plan
2026-09-05 17:41:52 +02:00
Lucas Winther
091791faef
docs(specs): add domain services layer design specification
2026-09-05 17:37:53 +02:00
Lucas Winther
f5bff8a81f
feat(client): implement OpenProject REST API v3 client layer and context scoping
2026-09-05 17:26:43 +02:00
Lucas Winther
5886419b06
docs: specify request-scoped multi-user architecture and ADR-012
...
- Add Section 3 in docs/ARCHITECTURE.md detailing multi-user concurrency and RequestContext
- Add ADR-012 in docs/DECISIONS.md establishing RequestContext pattern over global state
- Update AGENTS.md mandating stateless services and context propagation
- Update docs/TODO.md with src/context.ts implementation task
2026-09-05 16:53:42 +02:00
Lucas Winther
7029ca296a
docs: add read-only mode specification, architecture, and ADR
...
- Specify OPENPROJECT_READ_ONLY and --read-only in docs/ARCHITECTURE.md
- Add ADR-011 in docs/DECISIONS.md for tool manifest filtering and execution guards
- Update docs/TODO.md with read-only implementation tasks
- Update README.md, AGENTS.md, and .env.example with read-only configuration reference
2026-09-05 16:50:53 +02:00
Lucas Winther
11a57c25b7
docs: add docs/TODO.md and enforce check-in policy in AGENTS.md
...
- Track completed work, upcoming Phase 1 tasks, and backlog
- Establish strict agent policy to never proceed automatically without checking in
- Link docs/TODO.md in AGENTS.md and README.md
2026-09-05 16:43:13 +02:00
Lucas Winther
4251c03e42
docs: adapt project guidelines, architecture, and ADRs for Bun
...
- Update AGENTS.md, CLAUDE.md, and GEMINI.md with Bun workflow rules and bun:test
- Update docs/ARCHITECTURE.md with Bun runtime layer and lockfile
- Add ADR-010 in docs/DECISIONS.md superseding ADR-001 with Bun adoption
- Update README.md with Bun prerequisites, installation, and run instructions
2026-09-05 16:36:00 +02:00
Lucas Winther
003737d927
feat: initialize TypeScript MCP project with Bun
...
- Configure package.json and tsconfig.json using Bun bundler settings
- Install @modelcontextprotocol/sdk and zod
- Add src/index.ts entry stub and tests/smoke.test.ts using bun:test
- Update .gitignore to exclude .bun/
2026-09-05 16:35:49 +02:00
Lucas Winther
27c7e9a8b9
docs: update README with quickstart and record OpenProject 17 ADR
...
- Expand README.md with overview, documentation links, docker quickstart, and configuration
- Add ADR-009 in docs/DECISIONS.md documenting decision to target OpenProject 17
2026-09-05 16:32:05 +02:00
Lucas Winther
105a954e54
feat: add OpenProject 17 docker compose stack and test data seeder
...
- Configure OpenProject 17 with PostgreSQL 17 and Memcached
- Add scripts/seed-test-data.rb for test project, work packages, and API key generation
- Add scripts/seed.sh to orchestrate container health check and seed execution
- Add scripts/start.sh and scripts/stop.sh stack lifecycle helpers
- Provide .env.example with defaults
2026-09-05 16:31:15 +02:00
Lucas Winther
e70e329e9d
docs: add agent guidelines, architecture specs, and decision records
...
- Add AGENTS.md defining coding standards, security, and workflows
- Add GEMINI.md and CLAUDE.md referencing AGENTS.md
- Add docs/ARCHITECTURE.md detailing MCP server design and OpenProject API integration
- Add docs/DECISIONS.md with initial ADRs (stack, transport, auth, scoping)
- Add .gitignore for Node.js and secrets protection
2026-09-05 15:39:29 +02:00