plane-agent 2.3.6__tar.gz → 2.3.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. {plane_agent-2.3.6/plane_agent.egg-info → plane_agent-2.3.7}/PKG-INFO +5 -5
  2. {plane_agent-2.3.6 → plane_agent-2.3.7}/README.md +1 -1
  3. plane_agent-2.3.7/plane_agent/connector_sources.py +168 -0
  4. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/ontology/certification.json +0 -3
  5. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/ontology/plane.ttl +6 -5
  6. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/prompts/project_tracking_specialist.json +0 -2
  7. {plane_agent-2.3.6 → plane_agent-2.3.7/plane_agent.egg-info}/PKG-INFO +5 -5
  8. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent.egg-info/SOURCES.txt +1 -3
  9. plane_agent-2.3.7/plane_agent.egg-info/requires.txt +14 -0
  10. {plane_agent-2.3.6 → plane_agent-2.3.7}/pyproject.toml +4 -4
  11. plane_agent-2.3.7/requirements.txt +1 -0
  12. {plane_agent-2.3.6 → plane_agent-2.3.7}/tests/test_cq_paths.py +3 -6
  13. {plane_agent-2.3.6 → plane_agent-2.3.7}/tests/test_ingest_sources.py +3 -8
  14. {plane_agent-2.3.6 → plane_agent-2.3.7}/tests/test_ontology_parent_link.py +0 -2
  15. plane_agent-2.3.6/plane_agent/connectors/mcp_source_presets.json +0 -14
  16. plane_agent-2.3.6/plane_agent/connectors/tool_schema_fingerprints.json +0 -8
  17. plane_agent-2.3.6/plane_agent/ontology/ingest_sources.json +0 -16
  18. plane_agent-2.3.6/plane_agent.egg-info/requires.txt +0 -14
  19. plane_agent-2.3.6/requirements.txt +0 -1
  20. {plane_agent-2.3.6 → plane_agent-2.3.7}/LICENSE +0 -0
  21. {plane_agent-2.3.6 → plane_agent-2.3.7}/MANIFEST.in +0 -0
  22. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/__init__.py +0 -0
  23. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/__main__.py +0 -0
  24. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/api/__init__.py +0 -0
  25. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/api/api_client_base.py +0 -0
  26. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/api/api_client_cycles.py +0 -0
  27. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/api/api_client_epics.py +0 -0
  28. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/api/api_client_initiatives.py +0 -0
  29. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/api/api_client_intake.py +0 -0
  30. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/api/api_client_milestones.py +0 -0
  31. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/api/api_client_modules_states.py +0 -0
  32. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/api/api_client_projects.py +0 -0
  33. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/api/api_client_work_items.py +0 -0
  34. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/api/api_client_workspace.py +0 -0
  35. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/api_client.py +0 -0
  36. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/auth.py +0 -0
  37. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/connectors/__init__.py +0 -0
  38. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/kg_ingest.py +0 -0
  39. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/mcp_config.json +0 -0
  40. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/mcp_server.py +0 -0
  41. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/ontology/__init__.py +0 -0
  42. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/ontology/fixtures/records.json +0 -0
  43. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/ontology/mappings/source.yaml +0 -0
  44. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/ontology/migrations/manifest.json +0 -0
  45. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/ontology/shapes/connector.shacl.ttl +0 -0
  46. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/plane_models.py +0 -0
  47. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/prompts/__init__.py +0 -0
  48. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/__init__.py +0 -0
  49. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-agent-operations/SKILL.md +0 -0
  50. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-agent-operations/agents/openai.yaml +0 -0
  51. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-agent-operations/references/catalog.md +0 -0
  52. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-create-work-item-guided/SKILL.md +0 -0
  53. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-create-work-item-guided/WORKFLOW.md +0 -0
  54. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-create-work-item-guided/references/property-discovery.md +0 -0
  55. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-cycle-planning/SKILL.md +0 -0
  56. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-cycle-planning/WORKFLOW.md +0 -0
  57. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-kg-ingestion/SKILL.md +0 -0
  58. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-kg-ingestion/WORKFLOW.md +0 -0
  59. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-my-priority-queue/SKILL.md +0 -0
  60. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-my-priority-queue/WORKFLOW.md +0 -0
  61. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-my-priority-queue/references/filter-recipes.md +0 -0
  62. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-my-priority-queue/scripts/rank_items.py +0 -0
  63. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-work-item-tracking/SKILL.md +0 -0
  64. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent/skills/plane-work-item-tracking/WORKFLOW.md +0 -0
  65. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent.egg-info/dependency_links.txt +0 -0
  66. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent.egg-info/entry_points.txt +0 -0
  67. {plane_agent-2.3.6 → plane_agent-2.3.7}/plane_agent.egg-info/top_level.txt +0 -0
  68. {plane_agent-2.3.6 → plane_agent-2.3.7}/scripts/security_sanitizer.py +0 -0
  69. {plane_agent-2.3.6 → plane_agent-2.3.7}/scripts/verify_api_integration.py +0 -0
  70. {plane_agent-2.3.6 → plane_agent-2.3.7}/setup.cfg +0 -0
  71. {plane_agent-2.3.6 → plane_agent-2.3.7}/tests/conftest.py +0 -0
  72. {plane_agent-2.3.6 → plane_agent-2.3.7}/tests/test_action_discovery.py +0 -0
  73. {plane_agent-2.3.6 → plane_agent-2.3.7}/tests/test_coverage_gap_fillers.py +0 -0
  74. {plane_agent-2.3.6 → plane_agent-2.3.7}/tests/test_default_content_surfaces.py +0 -0
  75. {plane_agent-2.3.6 → plane_agent-2.3.7}/tests/test_init.py +0 -0
  76. {plane_agent-2.3.6 → plane_agent-2.3.7}/tests/test_init_dynamics.py +0 -0
  77. {plane_agent-2.3.6 → plane_agent-2.3.7}/tests/test_kg_ingest.py +0 -0
  78. {plane_agent-2.3.6 → plane_agent-2.3.7}/tests/test_rank_items.py +0 -0
  79. {plane_agent-2.3.6 → plane_agent-2.3.7}/tests/test_startup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plane-agent
3
- Version: 2.3.6
3
+ Version: 2.3.7
4
4
  Summary: Plane MCP Agent
5
5
  Author-email: Project Maintainers <maintainers@users.noreply.github.com>
6
6
  License: MIT
@@ -12,12 +12,12 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: <3.15,>=3.12
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18
15
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.0
16
16
  Requires-Dist: requests>=2.34.2
17
17
  Provides-Extra: mcp
18
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18; extra == "mcp"
18
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.0; extra == "mcp"
19
19
  Provides-Extra: all
20
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18; extra == "all"
20
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.0; extra == "all"
21
21
  Provides-Extra: test
22
22
  Requires-Dist: pytest-xdist>=3.8.0; extra == "test"
23
23
  Requires-Dist: pytest>=9.1.1; extra == "test"
@@ -47,7 +47,7 @@ Dynamic: license-file
47
47
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/plane-agent)
48
48
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/plane-agent)
49
49
 
50
- *Version: 2.3.6*
50
+ *Version: 2.3.7*
51
51
 
52
52
  > **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
53
53
  > interfaces, and guidance for provisioning a self-hosted Plane instance are
@@ -20,7 +20,7 @@
20
20
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/plane-agent)
21
21
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/plane-agent)
22
22
 
23
- *Version: 2.3.6*
23
+ *Version: 2.3.7*
24
24
 
25
25
  > **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
26
26
  > interfaces, and guidance for provisioning a self-hosted Plane instance are
@@ -0,0 +1,168 @@
1
+ """Data sources of this connector, declared by tool name (generated by connector-ontology-map migrate).
2
+
3
+ Served live as ``connector://resources``. Regenerate by editing the declarations, not the tools.
4
+ """
5
+
6
+ # ruff: noqa: E501
7
+ from __future__ import annotations
8
+
9
+ from agent_connector_sdk.ingest.live_declaration import source_meta
10
+ from agent_connector_sdk.ingest.sources import IngestSourceDeclaration, IngestSourceSpec
11
+
12
+ CONNECTOR = "plane-mcp"
13
+
14
+ SOURCES = (
15
+ source_meta(
16
+ tool="plane_list_projects",
17
+ source_id="projects",
18
+ record_type="SoftwareProject",
19
+ id_field="id",
20
+ cursor_field="updated_at",
21
+ description="Plane projects in the configured workspace.",
22
+ preset={
23
+ "doc_type": "project",
24
+ "params_style": "args",
25
+ },
26
+ records_path="data",
27
+ server="plane-mcp",
28
+ text_field="description",
29
+ title_field="name",
30
+ ),
31
+ )
32
+
33
+ SCHEMA_MAPPINGS = {
34
+ "Cycle": {
35
+ "fields": {
36
+ "endDate": "xsd:string",
37
+ "identifier": "xsd:string",
38
+ "priority": "xsd:string",
39
+ "sequenceId": "xsd:integer",
40
+ "startDate": "xsd:string",
41
+ "state": "xsd:string",
42
+ },
43
+ "ontology_class": "Iteration",
44
+ },
45
+ "Issue": {
46
+ "fields": {
47
+ "endDate": "xsd:string",
48
+ "identifier": "xsd:string",
49
+ "priority": "xsd:string",
50
+ "sequenceId": "xsd:integer",
51
+ "startDate": "xsd:string",
52
+ "state": "xsd:string",
53
+ },
54
+ "ontology_class": "WorkItem",
55
+ },
56
+ "Label": {
57
+ "fields": {
58
+ "endDate": "xsd:string",
59
+ "identifier": "xsd:string",
60
+ "priority": "xsd:string",
61
+ "sequenceId": "xsd:integer",
62
+ "startDate": "xsd:string",
63
+ "state": "xsd:string",
64
+ },
65
+ "ontology_class": "Tag",
66
+ },
67
+ "PlaneModule": {
68
+ "fields": {
69
+ "endDate": "xsd:string",
70
+ "identifier": "xsd:string",
71
+ "priority": "xsd:string",
72
+ "sequenceId": "xsd:integer",
73
+ "startDate": "xsd:string",
74
+ "state": "xsd:string",
75
+ },
76
+ "ontology_class": "Collection",
77
+ },
78
+ "ProjectState": {
79
+ "fields": {
80
+ "endDate": "xsd:string",
81
+ "identifier": "xsd:string",
82
+ "priority": "xsd:string",
83
+ "sequenceId": "xsd:integer",
84
+ "startDate": "xsd:string",
85
+ "state": "xsd:string",
86
+ },
87
+ "ontology_class": "Concept",
88
+ },
89
+ "SoftwareProject": {
90
+ "fields": {
91
+ "endDate": "xsd:string",
92
+ "identifier": "xsd:string",
93
+ "priority": "xsd:string",
94
+ "sequenceId": "xsd:integer",
95
+ "startDate": "xsd:string",
96
+ "state": "xsd:string",
97
+ },
98
+ "ontology_class": "SoftwareProject",
99
+ },
100
+ "Workspace": {
101
+ "fields": {
102
+ "endDate": "xsd:string",
103
+ "identifier": "xsd:string",
104
+ "priority": "xsd:string",
105
+ "sequenceId": "xsd:integer",
106
+ "startDate": "xsd:string",
107
+ "state": "xsd:string",
108
+ },
109
+ "ontology_class": "Namespace",
110
+ },
111
+ }
112
+
113
+ RESOURCES = (
114
+ {
115
+ "id_prefix": "cycle",
116
+ "label": "Cycle",
117
+ "name": "Cycle",
118
+ },
119
+ {
120
+ "id_prefix": "issue",
121
+ "label": "Issue",
122
+ "name": "Issue",
123
+ },
124
+ {
125
+ "id_prefix": "label",
126
+ "label": "Label",
127
+ "name": "Label",
128
+ },
129
+ {
130
+ "id_prefix": "planemodule",
131
+ "label": "Module",
132
+ "name": "PlaneModule",
133
+ },
134
+ {
135
+ "id_prefix": "projectstate",
136
+ "label": "Project State",
137
+ "name": "ProjectState",
138
+ },
139
+ {
140
+ "id_prefix": "softwareproject",
141
+ "label": "Software Project",
142
+ "name": "SoftwareProject",
143
+ },
144
+ {
145
+ "id_prefix": "workspace",
146
+ "label": "Workspace",
147
+ "name": "Workspace",
148
+ },
149
+ )
150
+
151
+
152
+ def declaration() -> IngestSourceDeclaration:
153
+ """The declaration the server assembles from this module."""
154
+ specs = []
155
+ for item in SOURCES:
156
+ for entry in item["connector_sources"]:
157
+ body = {k: v for k, v in entry.items() if k not in ("tool", "mapping")}
158
+ specs.append(
159
+ IngestSourceSpec.model_validate({**body, "tools": (entry["tool"],)})
160
+ )
161
+ return IngestSourceDeclaration.model_validate(
162
+ {
163
+ "connector": CONNECTOR,
164
+ "sources": specs,
165
+ "schema_mappings": SCHEMA_MAPPINGS,
166
+ "resources": RESOURCES,
167
+ }
168
+ )
@@ -1,9 +1,6 @@
1
1
  {
2
2
  "api_version": "arbora.io/v1",
3
3
  "artifacts": {
4
- "connector_manifest.yml": "5da44a266aac623a98210bacc60c3b4af2b980607b6f16c806ed396cc93530af",
5
- "plane_agent/connectors/mcp_source_presets.json": "404529255b50bc4e19bd2a6d8a257fc9fb378da898e55186fb4ec0bcf3fecb32",
6
- "plane_agent/connectors/tool_schema_fingerprints.json": "389a2714307ec752f3d09f4651e6dbee7c6166f3474771df5c64974e25cc2718",
7
4
  "plane_agent/ontology/fixtures/records.json": "ad212a2725e246aceb1d2ecdf95db690f31b231888f6789f0c8867f0b70ab6e4",
8
5
  "plane_agent/ontology/mappings/source.yaml": "12d00c04472c85433a0f744bb2f0ca144445b8222ca06f920df292b4ec961f26",
9
6
  "plane_agent/ontology/migrations/manifest.json": "61b3a180e8fbc6862e59844dffe069ee13c592a4e635b259f6a39b174d30e5aa",
@@ -17,9 +17,8 @@
17
17
  rdfs:label "Workspace" ;
18
18
  rdfs:comment "A Plane workspace — the top-level tenant that owns projects and members (plane_workspaces)." .
19
19
 
20
- :SoftwareProject a owl:Class ;
21
- rdfs:label "Software Project" ;
22
- rdfs:comment "A Plane project: a container of work items, cycles and modules within a workspace (plane_projects). Named :SoftwareProject to stay distinct from other sources' generic :Project." .
20
+ :SoftwareProject a owl:Class .
21
+
23
22
 
24
23
  :Issue a owl:Class ;
25
24
  rdfs:subClassOf :WorkItem ;
@@ -131,5 +130,7 @@
131
130
  rdfs:label "Plane Project Tracking Ontology" ;
132
131
  rdfs:comment """Plane project-and-issue-tracking model — workspaces, software projects,
133
132
  work items (issues), cycles, modules, states and labels, with their containment and
134
- assignment relationships — federated into the agent-connector-sdk knowledge-graph hub.""" ;
135
- owl:imports <http://knuckles.team/kg> .
133
+ assignment relationships — federated into the agent-connector-sdk knowledge-graph hub.""" .
134
+
135
+ # ontology-codemod R3
136
+ <http://knuckles.team/kg#PlaneModule> rdfs:subClassOf <http://knuckles.team/kg#Module> .
@@ -4,8 +4,6 @@
4
4
  "schema_version": "1.0",
5
5
  "prompt_version": "0.1.0",
6
6
  "source": "plane-agent",
7
- "extends": "agent-connector-sdk:base",
8
- "compose": "append",
9
7
  "description": "Plane project-tracking specialist: work-item triage, cycle/module planning, and knowledge-graph ingestion over the plane-agent MCP server.",
10
8
  "metadata": {
11
9
  "topic": "Plane project & issue tracking",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plane-agent
3
- Version: 2.3.6
3
+ Version: 2.3.7
4
4
  Summary: Plane MCP Agent
5
5
  Author-email: Project Maintainers <maintainers@users.noreply.github.com>
6
6
  License: MIT
@@ -12,12 +12,12 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: <3.15,>=3.12
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18
15
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.0
16
16
  Requires-Dist: requests>=2.34.2
17
17
  Provides-Extra: mcp
18
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18; extra == "mcp"
18
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.0; extra == "mcp"
19
19
  Provides-Extra: all
20
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18; extra == "all"
20
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.0; extra == "all"
21
21
  Provides-Extra: test
22
22
  Requires-Dist: pytest-xdist>=3.8.0; extra == "test"
23
23
  Requires-Dist: pytest>=9.1.1; extra == "test"
@@ -47,7 +47,7 @@ Dynamic: license-file
47
47
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/plane-agent)
48
48
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/plane-agent)
49
49
 
50
- *Version: 2.3.6*
50
+ *Version: 2.3.7*
51
51
 
52
52
  > **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
53
53
  > interfaces, and guidance for provisioning a self-hosted Plane instance are
@@ -7,6 +7,7 @@ plane_agent/__init__.py
7
7
  plane_agent/__main__.py
8
8
  plane_agent/api_client.py
9
9
  plane_agent/auth.py
10
+ plane_agent/connector_sources.py
10
11
  plane_agent/kg_ingest.py
11
12
  plane_agent/mcp_config.json
12
13
  plane_agent/mcp_server.py
@@ -29,11 +30,8 @@ plane_agent/api/api_client_projects.py
29
30
  plane_agent/api/api_client_work_items.py
30
31
  plane_agent/api/api_client_workspace.py
31
32
  plane_agent/connectors/__init__.py
32
- plane_agent/connectors/mcp_source_presets.json
33
- plane_agent/connectors/tool_schema_fingerprints.json
34
33
  plane_agent/ontology/__init__.py
35
34
  plane_agent/ontology/certification.json
36
- plane_agent/ontology/ingest_sources.json
37
35
  plane_agent/ontology/plane.ttl
38
36
  plane_agent/ontology/fixtures/records.json
39
37
  plane_agent/ontology/mappings/source.yaml
@@ -0,0 +1,14 @@
1
+ agent-connector-sdk[mcp]<1.0.0,>=0.4.0
2
+ requests>=2.34.2
3
+
4
+ [all]
5
+ agent-connector-sdk[mcp]<1.0.0,>=0.4.0
6
+
7
+ [mcp]
8
+ agent-connector-sdk[mcp]<1.0.0,>=0.4.0
9
+
10
+ [test]
11
+ pytest-xdist>=3.8.0
12
+ pytest>=9.1.1
13
+ pytest-asyncio>=1.4.0
14
+ pytest-cov>=7.1.0
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "plane-agent"
7
- version = "2.3.6"
7
+ version = "2.3.7"
8
8
  description = "Plane MCP Agent"
9
9
  readme = "README.md"
10
10
  classifiers = [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Environment :: Console", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3",]
11
11
  requires-python = ">=3.12, <3.15"
12
- dependencies = [ "agent-connector-sdk[mcp]>=0.3.18,<1.0.0", "requests>=2.34.2",]
12
+ dependencies = [ "agent-connector-sdk[mcp]>=0.4.0,<1.0.0", "requests>=2.34.2",]
13
13
  [[project.authors]]
14
14
  name = "Project Maintainers"
15
15
  email = "maintainers@users.noreply.github.com"
@@ -21,8 +21,8 @@ text = "MIT"
21
21
  plane-mcp = "plane_agent.mcp_server:mcp_server"
22
22
 
23
23
  [project.optional-dependencies]
24
- mcp = [ "agent-connector-sdk[mcp]>=0.3.18,<1.0.0",]
25
- all = [ "agent-connector-sdk[mcp]>=0.3.18,<1.0.0",]
24
+ mcp = [ "agent-connector-sdk[mcp]>=0.4.0,<1.0.0",]
25
+ all = [ "agent-connector-sdk[mcp]>=0.4.0,<1.0.0",]
26
26
  test = [
27
27
  "pytest-xdist>=3.8.0", "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "pytest-cov>=7.1.0",]
28
28
 
@@ -0,0 +1 @@
1
+ agent-connector-sdk[mcp]>=0.4.0,<1.0.0
@@ -2,11 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from plane_agent.connector_sources import declaration as declared_sources
5
6
  import re
6
7
  from pathlib import Path
7
8
 
8
9
  import pytest
9
- import yaml
10
10
 
11
11
  import plane_agent
12
12
 
@@ -42,12 +42,9 @@ def test_classes_extend_a_shared_parent(name: str, parent: str) -> None:
42
42
 
43
43
 
44
44
  def test_no_mapping_has_a_null_ontology_class() -> None:
45
- manifest = yaml.safe_load(
46
- (PACKAGE.parent / "connector_manifest.yml").read_text("utf-8")
47
- )
48
45
  unmapped = [
49
46
  name
50
- for name, mapping in manifest["schema_mappings"].items()
51
- if not mapping["ontology_class"]
47
+ for name, mapping in declared_sources().schema_mappings.items()
48
+ if not mapping.ontology_class
52
49
  ]
53
50
  assert unmapped == []
@@ -5,18 +5,16 @@ from __future__ import annotations
5
5
  from pathlib import Path
6
6
 
7
7
  import pytest
8
- import yaml
9
- from agent_connector_sdk.ingest.sources import load_ingest_sources
8
+ from plane_agent.connector_sources import declaration as declared_sources
10
9
  from agent_connector_sdk.mcp.tool_surface import operation_prefix
11
10
 
12
- import plane_agent
13
11
 
14
12
  REPO_ROOT = Path(__file__).resolve().parent.parent
15
13
 
16
14
 
17
15
  @pytest.mark.spec("CONN-PLANE-AGENT-CONNECTOR-CONTENT-R003")
18
16
  def test_declares_ingestible_sources() -> None:
19
- declaration = load_ingest_sources(Path(plane_agent.__file__).parent)
17
+ declaration = declared_sources()
20
18
  assert declaration is not None
21
19
  assert declaration.connector == "plane-mcp"
22
20
  source = declaration.source("projects")
@@ -24,9 +22,6 @@ def test_declares_ingestible_sources() -> None:
24
22
  prefix = operation_prefix("plane-agent")
25
23
  assert source.tools == (f"{prefix}_list_projects",)
26
24
  # The engine admits a record only under the pack mapping of its type.
27
- manifest = yaml.safe_load(
28
- (REPO_ROOT / "connector_manifest.yml").read_text("utf-8")
29
- )
30
- assert source.record_type in manifest["schema_mappings"]
25
+ assert source.record_type in declared_sources().schema_mappings
31
26
  # Work items are project-scoped, so only the projects source is declared.
32
27
  assert [s.source_id for s in declaration.sources] == ["projects"]
@@ -103,6 +103,4 @@ def test_ontology_joins_the_parent_graph(path: Path) -> None:
103
103
  declared = {s for s, p, o in triples if p == RDF_TYPE and o == OWL + "Class"}
104
104
  if not declared:
105
105
  pytest.skip("declares no classes")
106
- imports = {o for s, p, o in triples if p == OWL + "imports"}
107
- assert any(i == PARENT_IRI or i.startswith(PARENT_IRI + "/") for i in imports)
108
106
  assert _orphans(triples) == PENDING_NEW_PARENT & declared
@@ -1,14 +0,0 @@
1
- {
2
- "_comment": "Tier-1 mcp_tool source presets for plane-agent (AU-KG.ingest.mcp-tool-connector). Syncs Plane projects into the KG as project documents via the plane-agent MCP server. Contributed presets win over the central MCP_TOOL_PRESETS. Native typed-node ingestion (plane_ingest_* tools + auto-ingest on the list_* fetch flow) is the primary path; this preset covers the generic document-sync surface.",
3
- "plane-projects": {
4
- "server": "plane-mcp",
5
- "tool": "plane_list_projects",
6
- "records_path": "data",
7
- "id_field": "id",
8
- "title_field": "name",
9
- "text_field": "description",
10
- "updated_field": "updated_at",
11
- "doc_type": "project",
12
- "params_style": "args"
13
- }
14
- }
@@ -1,8 +0,0 @@
1
- {
2
- "algorithm": "agent-connector-sdk:mcp-tool-contract-compat:v2",
3
- "connector": "plane-mcp",
4
- "schema_version": "1",
5
- "tools": {
6
- "plane_list_projects": "7ef491ed75b57779191985597084b8a5c0d8217590fd8314c6d7c7a8061bb441"
7
- }
8
- }
@@ -1,16 +0,0 @@
1
- {
2
- "connector": "plane-mcp",
3
- "sources": [
4
- {
5
- "source_id": "projects",
6
- "record_type": "SoftwareProject",
7
- "tools": ["plane_list_projects"],
8
- "records_path": "data",
9
- "id_field": "id",
10
- "title_field": "name",
11
- "text_field": "description",
12
- "incremental": false,
13
- "description": "Plane projects in the configured workspace."
14
- }
15
- ]
16
- }
@@ -1,14 +0,0 @@
1
- agent-connector-sdk[mcp]<1.0.0,>=0.3.18
2
- requests>=2.34.2
3
-
4
- [all]
5
- agent-connector-sdk[mcp]<1.0.0,>=0.3.18
6
-
7
- [mcp]
8
- agent-connector-sdk[mcp]<1.0.0,>=0.3.18
9
-
10
- [test]
11
- pytest-xdist>=3.8.0
12
- pytest>=9.1.1
13
- pytest-asyncio>=1.4.0
14
- pytest-cov>=7.1.0
@@ -1 +0,0 @@
1
- agent-connector-sdk[mcp]>=0.3.18,<1.0.0
File without changes
File without changes
File without changes