planpilot 2.0.1__tar.gz → 2.2.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.0.1 → planpilot-2.2.0}/PKG-INFO +16 -2
- {planpilot-2.0.1 → planpilot-2.2.0}/README.md +14 -1
- {planpilot-2.0.1 → planpilot-2.2.0}/pyproject.toml +2 -1
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/__init__.py +3 -2
- planpilot-2.2.0/src/planpilot/cli.py +639 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/contracts/sync.py +10 -0
- planpilot-2.2.0/src/planpilot/engine/__init__.py +6 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/engine/engine.py +73 -39
- planpilot-2.2.0/src/planpilot/engine/progress.py +54 -0
- planpilot-2.2.0/src/planpilot/progress.py +90 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/scaffold.py +28 -9
- planpilot-2.2.0/src/planpilot/sdk.py +404 -0
- planpilot-2.0.1/src/planpilot/cli.py +0 -341
- planpilot-2.0.1/src/planpilot/engine/__init__.py +0 -5
- planpilot-2.0.1/src/planpilot/sdk.py +0 -181
- {planpilot-2.0.1 → planpilot-2.2.0}/LICENSE +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/AGENTS.md +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/__main__.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/auth/__init__.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/auth/base.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/auth/factory.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/auth/resolvers/__init__.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/auth/resolvers/env.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/auth/resolvers/gh_cli.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/auth/resolvers/static.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/contracts/__init__.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/contracts/config.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/contracts/exceptions.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/contracts/item.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/contracts/plan.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/contracts/provider.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/contracts/renderer.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/engine/utils.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/plan/__init__.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/plan/hasher.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/plan/loader.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/plan/validator.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/AGENTS.md +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/__init__.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/base.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/dry_run.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/factory.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/AGENTS.md +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/__init__.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/_retrying_transport.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/__init__.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/add_blocked_by.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/add_labels.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/add_project_item.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/add_sub_issue.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/async_base_client.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/base_model.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/client.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/close_issue.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/create_issue.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/create_label.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/enums.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/exceptions.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/fetch_org_project.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/fetch_project_fields.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/fetch_project_items.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/fetch_relations.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/fetch_repo.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/fetch_user_project.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/find_labels.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/fragments.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/get_issue.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/input_types.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/operations.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/remove_blocked_by.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/remove_labels.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/remove_sub_issue.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/search_issues.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/update_issue.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/github_gql/update_project_field.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/item.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/mapper.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/models.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/add_blocked_by.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/add_labels.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/add_project_item.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/add_sub_issue.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/close_issue.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/create_issue.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/create_label.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/fetch_org_project.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/fetch_project_fields.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/fetch_project_items.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/fetch_relations.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/fetch_repo.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/fetch_user_project.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/find_labels.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/fragments.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/get_issue.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/remove_blocked_by.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/remove_labels.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/remove_sub_issue.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/search_issues.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/update_issue.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/operations/update_project_field.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/provider.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/providers/github/schema.graphql +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/py.typed +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/renderers/__init__.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/renderers/factory.py +0 -0
- {planpilot-2.0.1 → planpilot-2.2.0}/src/planpilot/renderers/markdown.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: planpilot
|
|
3
|
-
Version: 2.0
|
|
3
|
+
Version: 2.2.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
|
|
@@ -24,6 +24,7 @@ Classifier: Typing :: Typed
|
|
|
24
24
|
Requires-Dist: httpx (>=0.28,<0.29)
|
|
25
25
|
Requires-Dist: pydantic (>=2.12.5,<3.0.0)
|
|
26
26
|
Requires-Dist: questionary (>=2.1,<3.0)
|
|
27
|
+
Requires-Dist: rich (>=14.3.2,<15.0.0)
|
|
27
28
|
Project-URL: Bug Tracker, https://github.com/aryeko/planpilot/issues
|
|
28
29
|
Project-URL: Changelog, https://github.com/aryeko/planpilot/blob/main/CHANGELOG.md
|
|
29
30
|
Project-URL: Documentation, https://github.com/aryeko/planpilot/tree/main/docs
|
|
@@ -215,11 +216,24 @@ planpilot sync --config ./planpilot.json --apply
|
|
|
215
216
|
|
|
216
217
|
| Flag | Default | Description |
|
|
217
218
|
|------|---------|-------------|
|
|
218
|
-
| `--config` |
|
|
219
|
+
| `--config` | `./planpilot.json` | Path to `planpilot.json` |
|
|
219
220
|
| `--dry-run` | — | Preview mode (no provider mutations) |
|
|
220
221
|
| `--apply` | — | Apply mode |
|
|
221
222
|
| `--verbose` | off | Enable verbose logging |
|
|
222
223
|
|
|
224
|
+
### `planpilot map sync`
|
|
225
|
+
|
|
226
|
+
| Flag | Default | Description |
|
|
227
|
+
|------|---------|-------------|
|
|
228
|
+
| `--config` | `./planpilot.json` | Path to `planpilot.json` |
|
|
229
|
+
| `--dry-run` | — | Preview local sync-map reconciliation |
|
|
230
|
+
| `--apply` | — | Persist reconciled local sync-map |
|
|
231
|
+
| `--plan-id` | auto | Explicit remote plan ID to reconcile |
|
|
232
|
+
| `--verbose` | off | Enable verbose logging |
|
|
233
|
+
|
|
234
|
+
`map sync` reconciles local artifacts from provider metadata only; it does not mutate provider items.
|
|
235
|
+
In apply mode it writes both the local sync-map and local plan files.
|
|
236
|
+
|
|
223
237
|
Full CLI reference: [docs/modules/cli.md](docs/modules/cli.md)
|
|
224
238
|
|
|
225
239
|
## Plan file schemas
|
|
@@ -182,11 +182,24 @@ 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 map sync`
|
|
191
|
+
|
|
192
|
+
| Flag | Default | Description |
|
|
193
|
+
|------|---------|-------------|
|
|
194
|
+
| `--config` | `./planpilot.json` | Path to `planpilot.json` |
|
|
195
|
+
| `--dry-run` | — | Preview local sync-map reconciliation |
|
|
196
|
+
| `--apply` | — | Persist reconciled local sync-map |
|
|
197
|
+
| `--plan-id` | auto | Explicit remote plan ID to reconcile |
|
|
198
|
+
| `--verbose` | off | Enable verbose logging |
|
|
199
|
+
|
|
200
|
+
`map sync` reconciles local artifacts from provider metadata only; it does not mutate provider items.
|
|
201
|
+
In apply mode it writes both the local sync-map and local plan files.
|
|
202
|
+
|
|
190
203
|
Full CLI reference: [docs/modules/cli.md](docs/modules/cli.md)
|
|
191
204
|
|
|
192
205
|
## Plan file schemas
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "planpilot"
|
|
3
|
-
version = "2.0
|
|
3
|
+
version = "2.2.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"
|
|
@@ -42,6 +42,7 @@ python = ">=3.11"
|
|
|
42
42
|
pydantic = "^2.12.5"
|
|
43
43
|
httpx = "^0.28"
|
|
44
44
|
questionary = "^2.1"
|
|
45
|
+
rich = "^14.3.2"
|
|
45
46
|
|
|
46
47
|
[tool.poetry.group.dev.dependencies]
|
|
47
48
|
pytest = ">=7.0"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Public API surface for PlanPilot."""
|
|
2
2
|
|
|
3
|
-
__version__ = "2.0
|
|
3
|
+
__version__ = "2.2.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 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
|
|
@@ -27,6 +27,7 @@ __all__ = [
|
|
|
27
27
|
"BodyRenderer",
|
|
28
28
|
"ConfigError",
|
|
29
29
|
"FieldConfig",
|
|
30
|
+
"MapSyncResult",
|
|
30
31
|
"Plan",
|
|
31
32
|
"PlanItem",
|
|
32
33
|
"PlanItemType",
|