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