plane-agent 2.3.5__tar.gz → 2.3.6__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.
- {plane_agent-2.3.5/plane_agent.egg-info → plane_agent-2.3.6}/PKG-INFO +2 -2
- {plane_agent-2.3.5 → plane_agent-2.3.6}/README.md +1 -1
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/ontology/plane.ttl +12 -2
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/ontology/shapes/connector.shacl.ttl +2 -2
- {plane_agent-2.3.5 → plane_agent-2.3.6/plane_agent.egg-info}/PKG-INFO +2 -2
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent.egg-info/SOURCES.txt +1 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/pyproject.toml +1 -1
- plane_agent-2.3.6/tests/test_cq_paths.py +53 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/tests/test_ontology_parent_link.py +5 -7
- {plane_agent-2.3.5 → plane_agent-2.3.6}/LICENSE +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/MANIFEST.in +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/__init__.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/__main__.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/api/__init__.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/api/api_client_base.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/api/api_client_cycles.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/api/api_client_epics.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/api/api_client_initiatives.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/api/api_client_intake.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/api/api_client_milestones.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/api/api_client_modules_states.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/api/api_client_projects.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/api/api_client_work_items.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/api/api_client_workspace.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/api_client.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/auth.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/connectors/__init__.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/connectors/mcp_source_presets.json +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/connectors/tool_schema_fingerprints.json +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/kg_ingest.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/mcp_config.json +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/mcp_server.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/ontology/__init__.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/ontology/certification.json +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/ontology/fixtures/records.json +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/ontology/ingest_sources.json +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/ontology/mappings/source.yaml +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/ontology/migrations/manifest.json +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/plane_models.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/prompts/__init__.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/prompts/project_tracking_specialist.json +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/__init__.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-agent-operations/SKILL.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-agent-operations/agents/openai.yaml +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-agent-operations/references/catalog.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-create-work-item-guided/SKILL.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-create-work-item-guided/WORKFLOW.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-create-work-item-guided/references/property-discovery.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-cycle-planning/SKILL.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-cycle-planning/WORKFLOW.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-kg-ingestion/SKILL.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-kg-ingestion/WORKFLOW.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-my-priority-queue/SKILL.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-my-priority-queue/WORKFLOW.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-my-priority-queue/references/filter-recipes.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-my-priority-queue/scripts/rank_items.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-work-item-tracking/SKILL.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-work-item-tracking/WORKFLOW.md +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent.egg-info/dependency_links.txt +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent.egg-info/entry_points.txt +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent.egg-info/requires.txt +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent.egg-info/top_level.txt +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/requirements.txt +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/scripts/security_sanitizer.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/scripts/verify_api_integration.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/setup.cfg +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/tests/conftest.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/tests/test_action_discovery.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/tests/test_coverage_gap_fillers.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/tests/test_default_content_surfaces.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/tests/test_ingest_sources.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/tests/test_init.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/tests/test_init_dynamics.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/tests/test_kg_ingest.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/tests/test_rank_items.py +0 -0
- {plane_agent-2.3.5 → plane_agent-2.3.6}/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.
|
|
3
|
+
Version: 2.3.6
|
|
4
4
|
Summary: Plane MCP Agent
|
|
5
5
|
Author-email: Project Maintainers <maintainers@users.noreply.github.com>
|
|
6
6
|
License: MIT
|
|
@@ -47,7 +47,7 @@ Dynamic: license-file
|
|
|
47
47
|

|
|
48
48
|

|
|
49
49
|
|
|
50
|
-
*Version: 2.3.
|
|
50
|
+
*Version: 2.3.6*
|
|
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
|

|
|
21
21
|

|
|
22
22
|
|
|
23
|
-
*Version: 2.3.
|
|
23
|
+
*Version: 2.3.6*
|
|
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
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# plane_modules / plane_states / …). The shared :Person class is REUSED, never redefined.
|
|
14
14
|
|
|
15
15
|
:Workspace a owl:Class ;
|
|
16
|
+
rdfs:subClassOf :Namespace ;
|
|
16
17
|
rdfs:label "Workspace" ;
|
|
17
18
|
rdfs:comment "A Plane workspace — the top-level tenant that owns projects and members (plane_workspaces)." .
|
|
18
19
|
|
|
@@ -26,14 +27,17 @@
|
|
|
26
27
|
rdfs:comment "A Plane work item / issue — the unit of tracked work with a state, priority and assignees (plane_work_items)." .
|
|
27
28
|
|
|
28
29
|
:Cycle a owl:Class ;
|
|
30
|
+
rdfs:subClassOf :Iteration ;
|
|
29
31
|
rdfs:label "Cycle" ;
|
|
30
32
|
rdfs:comment "A time-boxed cycle (sprint) grouping work items over a start/end window (plane_cycles)." .
|
|
31
33
|
|
|
32
|
-
:
|
|
34
|
+
:PlaneModule a owl:Class ;
|
|
35
|
+
rdfs:subClassOf :Collection ;
|
|
33
36
|
rdfs:label "Module" ;
|
|
34
37
|
rdfs:comment "A feature grouping of work items within a project (plane_modules)." .
|
|
35
38
|
|
|
36
39
|
:ProjectState a owl:Class ;
|
|
40
|
+
rdfs:subClassOf :Concept ;
|
|
37
41
|
rdfs:label "Project State" ;
|
|
38
42
|
rdfs:comment "A workflow state a work item can occupy (e.g. Backlog, Todo, In Progress, Done) within a project (plane_states)." .
|
|
39
43
|
|
|
@@ -65,7 +69,7 @@
|
|
|
65
69
|
rdfs:label "in module" ;
|
|
66
70
|
rdfs:comment "Links an Issue to the Module it is grouped under." ;
|
|
67
71
|
rdfs:domain :Issue ;
|
|
68
|
-
rdfs:range :
|
|
72
|
+
rdfs:range :PlaneModule .
|
|
69
73
|
|
|
70
74
|
:hasState a owl:ObjectProperty ;
|
|
71
75
|
rdfs:label "has state" ;
|
|
@@ -93,6 +97,12 @@
|
|
|
93
97
|
rdfs:domain :Issue ;
|
|
94
98
|
rdfs:range xsd:integer .
|
|
95
99
|
|
|
100
|
+
:state a owl:DatatypeProperty ;
|
|
101
|
+
rdfs:label "state" ;
|
|
102
|
+
rdfs:comment "Workflow state name of a work item (Backlog, Todo, In Progress, Done, Cancelled)." ;
|
|
103
|
+
rdfs:domain :Issue ;
|
|
104
|
+
rdfs:range xsd:string .
|
|
105
|
+
|
|
96
106
|
:priority a owl:DatatypeProperty ;
|
|
97
107
|
rdfs:label "priority" ;
|
|
98
108
|
rdfs:comment "Priority of a work item (urgent, high, medium, low, none)." ;
|
|
@@ -63,8 +63,8 @@ shape:LabelGovernanceShape a sh:NodeShape ;
|
|
|
63
63
|
sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string
|
|
64
64
|
] .
|
|
65
65
|
|
|
66
|
-
shape:
|
|
67
|
-
sh:targetClass :
|
|
66
|
+
shape:PlaneModuleGovernanceShape a sh:NodeShape ;
|
|
67
|
+
sh:targetClass :PlaneModule ;
|
|
68
68
|
sh:closed false ;
|
|
69
69
|
sh:property [
|
|
70
70
|
sh:path :sourceRecordRef ;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plane-agent
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.6
|
|
4
4
|
Summary: Plane MCP Agent
|
|
5
5
|
Author-email: Project Maintainers <maintainers@users.noreply.github.com>
|
|
6
6
|
License: MIT
|
|
@@ -47,7 +47,7 @@ Dynamic: license-file
|
|
|
47
47
|

|
|
48
48
|

|
|
49
49
|
|
|
50
|
-
*Version: 2.3.
|
|
50
|
+
*Version: 2.3.6*
|
|
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
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "plane-agent"
|
|
7
|
-
version = "2.3.
|
|
7
|
+
version = "2.3.6"
|
|
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",]
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""Competency-question paths of the Plane pack (CONN-PLANE-AGENT-CONNECTOR-CONTENT-R004)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import re
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
import pytest
|
|
9
|
+
import yaml
|
|
10
|
+
|
|
11
|
+
import plane_agent
|
|
12
|
+
|
|
13
|
+
pytestmark = pytest.mark.spec("CONN-PLANE-AGENT-CONNECTOR-CONTENT-R004")
|
|
14
|
+
|
|
15
|
+
PACKAGE = Path(plane_agent.__file__).parent
|
|
16
|
+
TTL = (PACKAGE / "ontology" / "plane.ttl").read_text("utf-8")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _block(name: str) -> str:
|
|
20
|
+
match = re.search(rf"^:{name} a [^\n]*\n(?:[^\n]+\n)*", TTL, flags=re.M)
|
|
21
|
+
assert match, name
|
|
22
|
+
return match.group(0)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_issue_carries_state_and_priority() -> None:
|
|
26
|
+
for prop in ("state", "priority"):
|
|
27
|
+
assert "rdfs:domain :Issue" in _block(prop), prop
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@pytest.mark.parametrize(
|
|
31
|
+
("name", "parent"),
|
|
32
|
+
(
|
|
33
|
+
("Workspace", "Namespace"),
|
|
34
|
+
("Cycle", "Iteration"),
|
|
35
|
+
("PlaneModule", "Collection"),
|
|
36
|
+
("ProjectState", "Concept"),
|
|
37
|
+
),
|
|
38
|
+
)
|
|
39
|
+
def test_classes_extend_a_shared_parent(name: str, parent: str) -> None:
|
|
40
|
+
assert f"rdfs:subClassOf :{parent}" in _block(name)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
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
|
+
unmapped = [
|
|
49
|
+
name
|
|
50
|
+
for name, mapping in manifest["schema_mappings"].items()
|
|
51
|
+
if not mapping["ontology_class"]
|
|
52
|
+
]
|
|
53
|
+
assert unmapped == []
|
|
@@ -19,6 +19,10 @@ SUBCLASS = "http://www.w3.org/2000/01/rdf-schema#subClassOf"
|
|
|
19
19
|
# Parent classes of the epistemic-graph ontology that this connector links to or redeclares.
|
|
20
20
|
PARENT_CLASSES = frozenset(
|
|
21
21
|
(
|
|
22
|
+
"http://knuckles.team/kg#Namespace",
|
|
23
|
+
"http://knuckles.team/kg#Iteration",
|
|
24
|
+
"http://knuckles.team/kg#Collection",
|
|
25
|
+
"http://knuckles.team/kg#Concept",
|
|
22
26
|
"http://knuckles.team/kg#Module",
|
|
23
27
|
"http://knuckles.team/kg#Person",
|
|
24
28
|
"http://knuckles.team/kg#SoftwareProject",
|
|
@@ -28,13 +32,7 @@ PARENT_CLASSES = frozenset(
|
|
|
28
32
|
)
|
|
29
33
|
# Classes for which the parent ontology has no fitting class yet. Each is a candidate for a new
|
|
30
34
|
# parent class (see the orphan mapping report); a class leaves this set when it gains a parent.
|
|
31
|
-
PENDING_NEW_PARENT: frozenset[str] = frozenset(
|
|
32
|
-
(
|
|
33
|
-
"http://knuckles.team/kg#Cycle",
|
|
34
|
-
"http://knuckles.team/kg#ProjectState",
|
|
35
|
-
"http://knuckles.team/kg#Workspace",
|
|
36
|
-
)
|
|
37
|
-
)
|
|
35
|
+
PENDING_NEW_PARENT: frozenset[str] = frozenset()
|
|
38
36
|
|
|
39
37
|
_STRING = re.compile(r'"""(?:.|\n)*?"""|"(?:[^"\\\n]|\\.)*"')
|
|
40
38
|
_IRI = re.compile(r"<([^<>\s]*)>")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/connectors/tool_schema_fingerprints.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/prompts/project_tracking_specialist.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-agent-operations/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-create-work-item-guided/SKILL.md
RENAMED
|
File without changes
|
{plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-create-work-item-guided/WORKFLOW.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-my-priority-queue/WORKFLOW.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-work-item-tracking/SKILL.md
RENAMED
|
File without changes
|
{plane_agent-2.3.5 → plane_agent-2.3.6}/plane_agent/skills/plane-work-item-tracking/WORKFLOW.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|