planpilot 2.1.0__tar.gz → 2.3.0__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.
- {planpilot-2.1.0 → planpilot-2.3.0}/PKG-INFO +25 -2
- {planpilot-2.1.0 → planpilot-2.3.0}/README.md +24 -1
- {planpilot-2.1.0 → planpilot-2.3.0}/pyproject.toml +2 -2
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/__init__.py +4 -2
- planpilot-2.3.0/src/planpilot/cli.py +764 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/sync.py +16 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/engine/engine.py +62 -9
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/__init__.py +22 -17
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/client.py +12 -0
- planpilot-2.3.0/src/planpilot/providers/github/github_gql/delete_issue.py +19 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/exceptions.py +1 -1
- planpilot-2.3.0/src/planpilot/providers/github/github_gql/input_types.py +9 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/operations.py +9 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/item.py +12 -0
- planpilot-2.3.0/src/planpilot/providers/github/operations/delete_issue.graphql +5 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/provider.py +30 -2
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/renderers/markdown.py +2 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/scaffold.py +28 -9
- planpilot-2.3.0/src/planpilot/sdk.py +630 -0
- planpilot-2.1.0/src/planpilot/cli.py +0 -350
- planpilot-2.1.0/src/planpilot/providers/github/github_gql/input_types.py +0 -4
- planpilot-2.1.0/src/planpilot/sdk.py +0 -190
- {planpilot-2.1.0 → planpilot-2.3.0}/LICENSE +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/AGENTS.md +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/__main__.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/__init__.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/base.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/factory.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/resolvers/__init__.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/resolvers/env.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/resolvers/gh_cli.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/resolvers/static.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/__init__.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/config.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/exceptions.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/item.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/plan.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/provider.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/renderer.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/engine/__init__.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/engine/progress.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/engine/utils.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/plan/__init__.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/plan/hasher.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/plan/loader.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/plan/validator.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/progress.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/AGENTS.md +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/__init__.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/base.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/dry_run.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/factory.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/AGENTS.md +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/__init__.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/_retrying_transport.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/add_blocked_by.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/add_labels.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/add_project_item.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/add_sub_issue.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/async_base_client.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/base_model.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/close_issue.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/create_issue.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/create_label.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/enums.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fetch_org_project.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fetch_project_fields.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fetch_project_items.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fetch_relations.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fetch_repo.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fetch_user_project.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/find_labels.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fragments.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/get_issue.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/remove_blocked_by.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/remove_labels.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/remove_sub_issue.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/search_issues.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/update_issue.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/update_project_field.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/mapper.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/models.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/add_blocked_by.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/add_labels.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/add_project_item.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/add_sub_issue.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/close_issue.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/create_issue.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/create_label.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fetch_org_project.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fetch_project_fields.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fetch_project_items.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fetch_relations.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fetch_repo.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fetch_user_project.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/find_labels.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fragments.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/get_issue.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/remove_blocked_by.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/remove_labels.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/remove_sub_issue.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/search_issues.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/update_issue.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/update_project_field.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/schema.graphql +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/py.typed +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/renderers/__init__.py +0 -0
- {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/renderers/factory.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: planpilot
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: Sync roadmap plans (epics, stories, tasks) to GitHub Issues and Projects v2
|
|
5
5
|
License: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -216,11 +216,34 @@ planpilot sync --config ./planpilot.json --apply
|
|
|
216
216
|
|
|
217
217
|
| Flag | Default | Description |
|
|
218
218
|
|------|---------|-------------|
|
|
219
|
-
| `--config` |
|
|
219
|
+
| `--config` | `./planpilot.json` | Path to `planpilot.json` |
|
|
220
220
|
| `--dry-run` | — | Preview mode (no provider mutations) |
|
|
221
221
|
| `--apply` | — | Apply mode |
|
|
222
222
|
| `--verbose` | off | Enable verbose logging |
|
|
223
223
|
|
|
224
|
+
### `planpilot clean`
|
|
225
|
+
|
|
226
|
+
| Flag | Default | Description |
|
|
227
|
+
|------|---------|-------------|
|
|
228
|
+
| `--config` | `./planpilot.json` | Path to `planpilot.json` |
|
|
229
|
+
| `--dry-run` | — | Preview which issues would be deleted |
|
|
230
|
+
| `--apply` | — | Execute deletions |
|
|
231
|
+
| `--all` | off | Delete all planpilot-managed issues by label, regardless of current plan hash |
|
|
232
|
+
| `--verbose` | off | Enable verbose logging |
|
|
233
|
+
|
|
234
|
+
### `planpilot map sync`
|
|
235
|
+
|
|
236
|
+
| Flag | Default | Description |
|
|
237
|
+
|------|---------|-------------|
|
|
238
|
+
| `--config` | `./planpilot.json` | Path to `planpilot.json` |
|
|
239
|
+
| `--dry-run` | — | Preview local sync-map reconciliation |
|
|
240
|
+
| `--apply` | — | Persist reconciled local sync-map |
|
|
241
|
+
| `--plan-id` | auto | Explicit remote plan ID to reconcile |
|
|
242
|
+
| `--verbose` | off | Enable verbose logging |
|
|
243
|
+
|
|
244
|
+
`map sync` reconciles local artifacts from provider metadata only; it does not mutate provider items.
|
|
245
|
+
In apply mode it writes both the local sync-map and local plan files.
|
|
246
|
+
|
|
224
247
|
Full CLI reference: [docs/modules/cli.md](docs/modules/cli.md)
|
|
225
248
|
|
|
226
249
|
## Plan file schemas
|
|
@@ -182,11 +182,34 @@ planpilot sync --config ./planpilot.json --apply
|
|
|
182
182
|
|
|
183
183
|
| Flag | Default | Description |
|
|
184
184
|
|------|---------|-------------|
|
|
185
|
-
| `--config` |
|
|
185
|
+
| `--config` | `./planpilot.json` | Path to `planpilot.json` |
|
|
186
186
|
| `--dry-run` | — | Preview mode (no provider mutations) |
|
|
187
187
|
| `--apply` | — | Apply mode |
|
|
188
188
|
| `--verbose` | off | Enable verbose logging |
|
|
189
189
|
|
|
190
|
+
### `planpilot clean`
|
|
191
|
+
|
|
192
|
+
| Flag | Default | Description |
|
|
193
|
+
|------|---------|-------------|
|
|
194
|
+
| `--config` | `./planpilot.json` | Path to `planpilot.json` |
|
|
195
|
+
| `--dry-run` | — | Preview which issues would be deleted |
|
|
196
|
+
| `--apply` | — | Execute deletions |
|
|
197
|
+
| `--all` | off | Delete all planpilot-managed issues by label, regardless of current plan hash |
|
|
198
|
+
| `--verbose` | off | Enable verbose logging |
|
|
199
|
+
|
|
200
|
+
### `planpilot map sync`
|
|
201
|
+
|
|
202
|
+
| Flag | Default | Description |
|
|
203
|
+
|------|---------|-------------|
|
|
204
|
+
| `--config` | `./planpilot.json` | Path to `planpilot.json` |
|
|
205
|
+
| `--dry-run` | — | Preview local sync-map reconciliation |
|
|
206
|
+
| `--apply` | — | Persist reconciled local sync-map |
|
|
207
|
+
| `--plan-id` | auto | Explicit remote plan ID to reconcile |
|
|
208
|
+
| `--verbose` | off | Enable verbose logging |
|
|
209
|
+
|
|
210
|
+
`map sync` reconciles local artifacts from provider metadata only; it does not mutate provider items.
|
|
211
|
+
In apply mode it writes both the local sync-map and local plan files.
|
|
212
|
+
|
|
190
213
|
Full CLI reference: [docs/modules/cli.md](docs/modules/cli.md)
|
|
191
214
|
|
|
192
215
|
## Plan file schemas
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "planpilot"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.3.0"
|
|
4
4
|
description = "Sync roadmap plans (epics, stories, tasks) to GitHub Issues and Projects v2"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -69,7 +69,7 @@ test-e2e = "pytest -v tests/e2e/test_cli_e2e.py"
|
|
|
69
69
|
coverage = "pytest -v --cov-report=html:.coverage/html"
|
|
70
70
|
coverage-e2e = "pytest -v tests/e2e/test_cli_e2e.py --cov-report=term-missing --cov-report=xml:.coverage/coverage-e2e.xml"
|
|
71
71
|
typecheck = "mypy src/planpilot"
|
|
72
|
-
check = ["lint", "format-check", "test"]
|
|
72
|
+
check = ["lint", "format-check", "typecheck", "test"]
|
|
73
73
|
|
|
74
74
|
[tool.poe.tasks.gen-schema]
|
|
75
75
|
help = "Introspect GitHub GraphQL API and download schema"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Public API surface for PlanPilot."""
|
|
2
2
|
|
|
3
|
-
__version__ = "2.
|
|
3
|
+
__version__ = "2.3.0"
|
|
4
4
|
|
|
5
5
|
from planpilot.auth import create_token_resolver
|
|
6
6
|
from planpilot.contracts.config import FieldConfig, PlanPaths, PlanPilotConfig
|
|
@@ -16,7 +16,7 @@ from planpilot.contracts.exceptions import (
|
|
|
16
16
|
from planpilot.contracts.plan import Plan, PlanItem, PlanItemType
|
|
17
17
|
from planpilot.contracts.provider import Provider
|
|
18
18
|
from planpilot.contracts.renderer import BodyRenderer, RenderContext
|
|
19
|
-
from planpilot.contracts.sync import SyncEntry, SyncMap, SyncResult
|
|
19
|
+
from planpilot.contracts.sync import CleanResult, MapSyncResult, SyncEntry, SyncMap, SyncResult
|
|
20
20
|
from planpilot.providers import create_provider
|
|
21
21
|
from planpilot.renderers import create_renderer
|
|
22
22
|
from planpilot.scaffold import create_plan_stubs, detect_plan_paths, detect_target, scaffold_config, write_config
|
|
@@ -25,8 +25,10 @@ from planpilot.sdk import PlanPilot, load_config, load_plan
|
|
|
25
25
|
__all__ = [
|
|
26
26
|
"AuthenticationError",
|
|
27
27
|
"BodyRenderer",
|
|
28
|
+
"CleanResult",
|
|
28
29
|
"ConfigError",
|
|
29
30
|
"FieldConfig",
|
|
31
|
+
"MapSyncResult",
|
|
30
32
|
"Plan",
|
|
31
33
|
"PlanItem",
|
|
32
34
|
"PlanItemType",
|