Lucas Winther and Claude Opus 5
cbd8992b11
docs: add fuzzy search implementation plan and correct spec tool gap
...
Adds an 11-task TDD implementation plan covering the pure search unit
(tokenize, score, rank, snippet, pipeline), per-service integration for
meetings, wikis, work packages and activities, a recall acceptance
suite, and documentation.
Corrects two errors found while writing the plan:
- The spec's behaviour table named an openproject_search_work_packages
tool that does not exist. searchWorkPackages is a service helper that
only tests call, so ranked work package search would have been
unreachable by any LLM. The plan now registers the tool (18 -> 19) and
leaves openproject_list_work_packages as a pure server-side filter.
- Plan Task 6 originally identified matching agenda items by substring
searching the meeting-level snippet, which cannot work because
snippets are trimmed and ellipsized. Agenda items are now ranked
directly.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected] >
2026-09-17 10:06:56 +02:00
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