Commit Graph
47 Commits
Author SHA1 Message Date
Lucas WintherandClaude Opus 5 7b07241367 docs: fix unnarrowable type predicate in plan Task 5 pipeline
mapWithConcurrency's callback return was inferred as a union of two object
literal types rather than one type with deep: TDeep | undefined, so the
'entry is Pair' predicate was rejected: a type predicate's type must be
assignable to its parameter's type. Added an explicit EnrichedCandidate
annotation on the call. Tests passed but tsc did not, so this was only
visible via typecheck.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-09-18 07:28:20 +02:00
Lucas WintherandClaude Opus 5 c4e303c8b7 docs: fix unreachable shared-prefix test cases in plan Task 2
The guard tests used 3-char query tokens whose field tokens were literal
continuations ('car'/'carpet'), so the startsWith rule returned 0.9 before
the shared-prefix rule was reached. With MIN_SHARED_PREFIX=4 the rule is
unreachable for any 3-char token, making the assertion impossible to
satisfy. Swapped in cases where neither token is a true prefix of the
other, which actually exercise the guard.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-09-17 10:26:54 +02:00
Lucas WintherandClaude Opus 5 582295c960 docs: correct scoring design defects found in preflight scan
Hand-computing the plan's own test expectations against its own formula
showed four assertions could not pass:

- Body-only matches maxed at 1.0*1/3 = 0.333, below minScore 0.35, so no
  low-weight field could ever return a result. The gate now uses the raw
  field score; the weighted score only orders.
- The phrase bonus was dead code whenever every token matched, since the
  base already saturated at 1.0. Base is now scaled by 0.85.
- Natural-language queries tanked the coverage multiplier; query tokens
  are now stopword-filtered.
- 'decide' vs 'decision' is 4 edits apart and unmatchable; scoreToken
  gains a shared-prefix rule.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-09-17 10:13:10 +02:00
Lucas WintherandClaude 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 WintherandClaude 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 e0aa91e388 docs: record ADR-018 and update documentation for meetings, wikis, and activities tools 2026-09-07 03:06:38 +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 914883957e docs: ensure consistent PORT and HOST_PORT documentation across codebase and docs 2026-09-07 01:20:29 +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 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 a30d913470 docs: record ADR-015, update README with Docker usage, and update TODO.md 2026-09-06 20:48:55 +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 1039a6aa7a docs(plan): update progress ledger and mark Task 1 complete 2026-09-06 19:49:31 +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 08eff37db0 docs: add design spec and implementation plan for MCP server assembly 2026-09-06 18:40:47 +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 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 f8f9ae65a2 docs: add design spec and implementation plan for MCP tools 2026-09-06 00:45:30 +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 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 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 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 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