Commit Graph

16479 Commits

Author SHA1 Message Date
Eric Schubert 887ded5714 [#71358] fixed version read model usage
- improved description of API spec
2026-02-12 13:13:11 +01:00
Eric Schubert db6aaaa984 [#71358] add search version tool
- https://community.openproject.org/work_packages/71358
- add tool
- add specs for the tool
- slightly improve version model for the api
2026-02-11 16:34:04 +01:00
Jan Sandbrink 16fb55fedf Merge pull request #21939 from opf/mcp-portfolios
Add separate tools to search portfolios and programs
2026-02-11 11:23:49 +01:00
Jan Sandbrink 780d880eb1 Merge pull request #21904 from opf/project-api-schema
Only return projects from search_projects MCP tool
2026-02-11 11:18:33 +01:00
Dombi Attila bc64a491e0 Merge pull request #21933 from opf/bug/71379-project-initiation-request-cannot-be-finished-with-default-setting
[#71379] Project initiation request cannot be finished with default setting
2026-02-10 17:58:22 +02:00
Dombi Attila 92d26c6260 Add back specs that are still valid 2026-02-10 17:57:23 +02:00
Dombi Attila 8ff1ecd550 Update error messages. 2026-02-10 17:37:42 +02:00
Oliver Günther 80e6aa4657 Do not update the attachment on initial journals
https://community.openproject.org/work_packages/71403
2026-02-10 14:39:23 +01:00
Dombi Attila 05754e0607 Add Create Artifact WorkPackage Service journal notes spec when assignee is not set 2026-02-10 15:24:41 +02:00
Dombi Attila 017591cfb7 Fix specs 2026-02-10 14:48:05 +02:00
as-op 1b89cd7d3d fix specs with changed expectations for page break positions 2026-02-10 13:14:32 +01:00
Dombi Attila 096904006a Prevent wizard activation when type or status is missing. 2026-02-10 13:46:12 +02:00
Dombi Attila 623bd162b0 Fix CreateArtifact::WorkPackageContract specs
One test case was removed. It is not possible to have an empty work
package type while having a work package status, because the
work package type always has a default value, even if it's unset.
2026-02-10 12:29:00 +02:00
Jan Sandbrink 1279c0dc2c Add separate tools to search portfolios and programs
We separated projects from portfolios and programs conceptually.
While older APIs can return mixed results for backwards-compatibility
purposes, the MCP API already purely returns projects from the search_projects
tool, thus we need additional tools for results of other types.
2026-02-10 10:16:54 +01:00
Jan Sandbrink 40b4dc407e Limit search_projects to actual Projects
This means we are excluding Portfolios and Programs from it.
Those will need their own tools.
2026-02-10 10:05:58 +01:00
Dombi Attila cbe4a5930d [#71379] Project initiation request cannot be finished with default setting
https://community.openproject.org/work_packages/71379
2026-02-09 18:52:41 +02:00
Jan Sandbrink f80d55fb9c Merge pull request #21899 from opf/mcp-users
MCP: Add tools and resources around users
2026-02-09 15:59:47 +01:00
Oliver Günther 57b69c26f5 Allow groups to be assigned to PIRs 2026-02-09 14:37:23 +01:00
Jan Sandbrink 953ab1a6a8 Fix API::Errors::InternalError class
This class got broken during what seems to be a
drive-by style-improvement in fbe1215365. That change:

* made it incompatible with frozen strings as error messages
* broke the intended hiding of messages if they came from the
  wrong class

All of this went by unnoticed, because there were no specs
for the InternalError class.

Specs have now been added and the previous version of the code
mostly restored. Since there were some callers that always created the
exception with known safe error messages, I added a new class just for these
cases, because they were intended to "just show the message". So we can
keep using the original implementation for rescue_from handling.
2026-02-09 11:04:57 +01:00
Jan Sandbrink 8ca3c9eb66 Test portfolio and program schema against representer
Both are rendered through the ProjectRepresenter (because they are technically
implemented as Projects), but haven't been tested against it yet.

This also means that they still included required properties that were already
removed from the project schema (this was an error in the schema).
2026-02-06 15:50:27 +01:00
Tobias Dillmann 1aa3f73f36 Merge pull request #21632 from opf/bug/70315-user-is-not-informed-of-pir-project-attributes-misconfiguration-which-leads-to-a-500-error
Bug/70315 user is not informed of pir project attributes misconfiguration which leads to a 500 error
2026-02-06 11:32:10 +01:00
Jan Sandbrink 9d362cc032 Add tools and resources around users
Allowing to search for users, e.g. to allow queries like
"find work packages assigned to Maria".
Allowing to find the current user, to enable classic use cases
like "find work packages assigned to me".
2026-02-06 11:14:22 +01:00
Eric Schubert be855f85c9 [#71101] move pagination logic to tools base class
- https://community.openproject.org/work_packages/71101
- set default page to 1
- add method in base class to be called in tool's `call` method
2026-02-06 09:59:54 +01:00
Tobias Dillmann 050572066f [#70315] Merge release/17.1 2026-02-06 09:43:00 +01:00
Jan Sandbrink c1ffc6b740 Merge pull request #21861 from opf/list-resource-tools
MCP: Tools for list resources
2026-02-05 17:10:55 +01:00
Oliver Günther 1b3d104516 Merge pull request #21872 from opf/fix/hashed-token-pepper
Use a settings-based hashed token pepper that is not bound to secret_key_base
2026-02-05 15:04:32 +01:00
Oliver Günther 99d2263cf6 Raise error when default is nil, add more specs 2026-02-05 14:38:10 +01:00
ulferts 4ea2f619f5 increase spec coverage to ensure that pdf is generated 2026-02-05 09:34:48 +01:00
Oliver Günther 9ac8ec7ad1 Add persist_on_first_read: true option to settings to lazy-save default 2026-02-05 09:33:41 +01:00
Jan Sandbrink e9bea80dab Merge pull request #21883 from opf/mcp-api-token
Allow to use regular API Keys for MCP requests
2026-02-05 09:26:45 +01:00
Jan Sandbrink 0e7a19b54c Add tools that return the content of certain resources
They are useful for clients that don't support resources,
or ignore them, even if they could support them.
2026-02-05 08:44:30 +01:00
Jan Sandbrink abe1cffd75 Merge pull request #21867 from opf/mcp-project-pluralization
MCP: Pluralize name of search_project tool
2026-02-05 08:43:26 +01:00
Jan Sandbrink 3859268167 Allow to use regular API Keys for MCP requests
Some clients, such as Claude code require dynamic client registration
for their regular workflow. However, they allow to fallback to
static HTTP headers for authentication.

This approach allows to construct the corresponding header for Basic authentication
and add it to Claude.
2026-02-05 08:33:06 +01:00
Dombi Attila 867ab8b5da Merge pull request #21843 from opf/bug/71093-form_configuration-status-422-unable-to-change-custom-fields-in-work-packages-without-enterprise-plan
[#71093] "form_configuration-status=422" Unable to Change Custom fields in Work Packages without Enterprise Plan
2026-02-04 17:20:28 +02:00
Oliver Günther 492c900bae Use stable hashed token pepper, fallback to key base 2026-02-04 15:16:09 +01:00
Eric Schubert 05a7843fd9 Merge branch 'release/17.1' into mcp-project-pluralization 2026-02-04 13:52:02 +01:00
Eric Schubert dd1ed25c48 Merge pull request #21860 from opf/implementation/71101-paginate-search-project-results
[#71101] add simple pagination to search projects
2026-02-04 13:24:12 +01:00
Eric Schubert 7a7cfdbbcd [#71101] remove unwanted changes to warden.rb
- improve test contexts
2026-02-04 10:19:04 +01:00
Jan Sandbrink beec674117 Pluralize name of search_project tool
This tool returns multiple results, so it should
consistently be called search_projects.
2026-02-04 09:23:26 +01:00
Jan Sandbrink c1ed698528 Merge pull request #21847 from opf/mcp-work-packages-tool
MCP: search_work_packages tool
2026-02-04 08:48:44 +01:00
Jan Sandbrink 5ab26e3b41 Add search_work_packages MCP tool 2026-02-03 16:06:33 +01:00
Jan Sandbrink 2c6c60bb03 Fix calling tools without parameters
I am not quite sure how this failed on a syntactic level,
but the previous definition of the parameters accepted by
our tools:

* skipped/ignored the server_context parameter
* didn't work properly for no args being passed to the tool call

We now properly pass along the server_context, allowing to use the
current user determined by our MCP endpoint, instead of repeating usage
of User.current.

This also fixes calls to tools without parameters
2026-02-03 16:06:33 +01:00
Eric Schubert 7d6431ad4a [#71101] satisfy rubocop 2026-02-03 15:58:20 +01:00
Eric Schubert 951cb4742c [#71101] add simple pagination to search projects
- https://community.openproject.org/work_packages/71101
- enable page parameter in the input schema
- use page with 1 or higher to get results with an offset
2026-02-03 15:21:04 +01:00
Oliver Günther 6c2b98c449 Merge pull request #21844 from opf/fix/external-link-capture
Use stimulus controller for external link capture
2026-02-03 14:41:17 +01:00
Henriette Darge 73654936c1 Merge pull request #21834 from opf/feature/65411-redesign-the-my-account-access-token-page-using-primer-2
Harmonize capitilisation on Access tokens page
2026-02-03 13:59:34 +01:00
Dombi Attila 42b9e52fee [#71093] "form_configuration-status=422" Unable to Change Custom fields in Work Packages without Enterprise Plan
https://community.openproject.org/work_packages/71093
2026-02-03 12:58:54 +02:00
Oliver Günther 1857f25b58 Primerize static link helper and use that for external links consistently 2026-02-03 11:41:43 +01:00
Oliver Günther 3426a5e845 add allowExternalLink dataset to skip link capture 2026-02-03 11:11:40 +01:00
Oliver Günther 3f328ff735 Use the external-links.controller for link capture 2026-02-03 11:00:27 +01:00