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.
Files changed (108) hide show
  1. {planpilot-2.1.0 → planpilot-2.3.0}/PKG-INFO +25 -2
  2. {planpilot-2.1.0 → planpilot-2.3.0}/README.md +24 -1
  3. {planpilot-2.1.0 → planpilot-2.3.0}/pyproject.toml +2 -2
  4. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/__init__.py +4 -2
  5. planpilot-2.3.0/src/planpilot/cli.py +764 -0
  6. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/sync.py +16 -0
  7. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/engine/engine.py +62 -9
  8. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/__init__.py +22 -17
  9. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/client.py +12 -0
  10. planpilot-2.3.0/src/planpilot/providers/github/github_gql/delete_issue.py +19 -0
  11. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/exceptions.py +1 -1
  12. planpilot-2.3.0/src/planpilot/providers/github/github_gql/input_types.py +9 -0
  13. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/operations.py +9 -0
  14. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/item.py +12 -0
  15. planpilot-2.3.0/src/planpilot/providers/github/operations/delete_issue.graphql +5 -0
  16. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/provider.py +30 -2
  17. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/renderers/markdown.py +2 -0
  18. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/scaffold.py +28 -9
  19. planpilot-2.3.0/src/planpilot/sdk.py +630 -0
  20. planpilot-2.1.0/src/planpilot/cli.py +0 -350
  21. planpilot-2.1.0/src/planpilot/providers/github/github_gql/input_types.py +0 -4
  22. planpilot-2.1.0/src/planpilot/sdk.py +0 -190
  23. {planpilot-2.1.0 → planpilot-2.3.0}/LICENSE +0 -0
  24. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/AGENTS.md +0 -0
  25. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/__main__.py +0 -0
  26. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/__init__.py +0 -0
  27. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/base.py +0 -0
  28. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/factory.py +0 -0
  29. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/resolvers/__init__.py +0 -0
  30. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/resolvers/env.py +0 -0
  31. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/resolvers/gh_cli.py +0 -0
  32. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/auth/resolvers/static.py +0 -0
  33. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/__init__.py +0 -0
  34. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/config.py +0 -0
  35. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/exceptions.py +0 -0
  36. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/item.py +0 -0
  37. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/plan.py +0 -0
  38. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/provider.py +0 -0
  39. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/contracts/renderer.py +0 -0
  40. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/engine/__init__.py +0 -0
  41. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/engine/progress.py +0 -0
  42. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/engine/utils.py +0 -0
  43. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/plan/__init__.py +0 -0
  44. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/plan/hasher.py +0 -0
  45. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/plan/loader.py +0 -0
  46. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/plan/validator.py +0 -0
  47. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/progress.py +0 -0
  48. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/AGENTS.md +0 -0
  49. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/__init__.py +0 -0
  50. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/base.py +0 -0
  51. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/dry_run.py +0 -0
  52. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/factory.py +0 -0
  53. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/AGENTS.md +0 -0
  54. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/__init__.py +0 -0
  55. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/_retrying_transport.py +0 -0
  56. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/add_blocked_by.py +0 -0
  57. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/add_labels.py +0 -0
  58. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/add_project_item.py +0 -0
  59. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/add_sub_issue.py +0 -0
  60. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/async_base_client.py +0 -0
  61. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/base_model.py +0 -0
  62. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/close_issue.py +0 -0
  63. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/create_issue.py +0 -0
  64. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/create_label.py +0 -0
  65. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/enums.py +0 -0
  66. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fetch_org_project.py +0 -0
  67. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fetch_project_fields.py +0 -0
  68. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fetch_project_items.py +0 -0
  69. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fetch_relations.py +0 -0
  70. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fetch_repo.py +0 -0
  71. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fetch_user_project.py +0 -0
  72. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/find_labels.py +0 -0
  73. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/fragments.py +0 -0
  74. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/get_issue.py +0 -0
  75. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/remove_blocked_by.py +0 -0
  76. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/remove_labels.py +0 -0
  77. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/remove_sub_issue.py +0 -0
  78. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/search_issues.py +0 -0
  79. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/update_issue.py +0 -0
  80. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/github_gql/update_project_field.py +0 -0
  81. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/mapper.py +0 -0
  82. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/models.py +0 -0
  83. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/add_blocked_by.graphql +0 -0
  84. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/add_labels.graphql +0 -0
  85. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/add_project_item.graphql +0 -0
  86. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/add_sub_issue.graphql +0 -0
  87. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/close_issue.graphql +0 -0
  88. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/create_issue.graphql +0 -0
  89. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/create_label.graphql +0 -0
  90. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fetch_org_project.graphql +0 -0
  91. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fetch_project_fields.graphql +0 -0
  92. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fetch_project_items.graphql +0 -0
  93. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fetch_relations.graphql +0 -0
  94. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fetch_repo.graphql +0 -0
  95. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fetch_user_project.graphql +0 -0
  96. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/find_labels.graphql +0 -0
  97. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/fragments.graphql +0 -0
  98. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/get_issue.graphql +0 -0
  99. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/remove_blocked_by.graphql +0 -0
  100. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/remove_labels.graphql +0 -0
  101. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/remove_sub_issue.graphql +0 -0
  102. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/search_issues.graphql +0 -0
  103. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/update_issue.graphql +0 -0
  104. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/operations/update_project_field.graphql +0 -0
  105. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/providers/github/schema.graphql +0 -0
  106. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/py.typed +0 -0
  107. {planpilot-2.1.0 → planpilot-2.3.0}/src/planpilot/renderers/__init__.py +0 -0
  108. {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.1.0
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` | | Path to `planpilot.json` |
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` | | Path to `planpilot.json` |
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.1.0"
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.1.0"
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",