nextmv 1.4.0.dev0__tar.gz → 1.4.1.dev0__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 (398) hide show
  1. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/.gitignore +5 -0
  2. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/PKG-INFO +3 -1
  3. nextmv-1.4.1.dev0/nextmv/__about__.py +1 -0
  4. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/__init__.py +1 -0
  5. nextmv-1.4.1.dev0/nextmv/account.py +51 -0
  6. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/init.py +4 -8
  7. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/main.py +9 -1
  8. nextmv-1.4.1.dev0/nextmv/cli/mcp/__init__.py +38 -0
  9. nextmv-1.4.1.dev0/nextmv/cli/mcp/serve.py +65 -0
  10. nextmv-1.4.1.dev0/nextmv/cli/mcp/server.py +115 -0
  11. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/WORKFLOW.md +373 -0
  12. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/__init__.py +1 -0
  13. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/_helpers.py +329 -0
  14. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/acceptance.py +112 -0
  15. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/account.py +47 -0
  16. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/app.py +148 -0
  17. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/batch.py +110 -0
  18. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/community.py +45 -0
  19. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/ensemble.py +338 -0
  20. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/guide.py +25 -0
  21. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/input_set.py +145 -0
  22. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/instance.py +140 -0
  23. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/local.py +425 -0
  24. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/managed_input.py +108 -0
  25. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/profile.py +89 -0
  26. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/run.py +405 -0
  27. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/scenario.py +227 -0
  28. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/secrets.py +100 -0
  29. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/shadow.py +149 -0
  30. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/sso.py +28 -0
  31. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/switchback.py +159 -0
  32. nextmv-1.4.1.dev0/nextmv/cli/mcp/tools/version.py +113 -0
  33. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/account.py +2 -3
  34. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/_batch_scenario.py +15 -0
  35. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/batch_experiment.py +2 -0
  36. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/package.py +3 -2
  37. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/local/application.py +11 -6
  38. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/manifest.py +6 -2
  39. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/options.py +3 -2
  40. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_json_app.yaml +1 -1
  41. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_json_hello-world/README.md +1 -1
  42. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_json_hello-world/app.yaml +1 -1
  43. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_multi-file_app.yaml +1 -1
  44. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_multi-file_hello-world/README.md +1 -1
  45. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_multi-file_hello-world/app.yaml +1 -1
  46. nextmv-1.4.1.dev0/nextmv/templates/java_json_hello-world/.gitignore +4 -0
  47. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_multi-file_hello-world/.gitignore +1 -0
  48. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_class-assign/app.yaml +0 -13
  49. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_class-assign/main.py +1 -1
  50. {nextmv-1.4.0.dev0/nextmv/templates/python_multi-file_demand-alloc → nextmv-1.4.1.dev0/nextmv/templates/python_json_demand-alloc}/allocation/README.md +0 -1
  51. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/allocation/app.yaml +0 -13
  52. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/allocation/main.py +4 -12
  53. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/workflow/app.yaml +0 -13
  54. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_class-assign/app.yaml +0 -13
  55. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_class-assign/main.py +1 -1
  56. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_demand-alloc/allocation/app.yaml +0 -13
  57. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_demand-alloc/allocation/main.py +4 -12
  58. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/app.yaml +0 -13
  59. nextmv-1.4.1.dev0/nextmv/templates/python_multi-file_hello-world/.gitignore +2 -0
  60. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/pyproject.toml +4 -0
  61. nextmv-1.4.1.dev0/tests/cli/test_mcp.py +2054 -0
  62. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_manifest.py +4 -2
  63. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/uv.lock +570 -277
  64. nextmv-1.4.0.dev0/nextmv/__about__.py +0 -1
  65. nextmv-1.4.0.dev0/nextmv/templates/java_json_hello-world/.gitignore +0 -3
  66. nextmv-1.4.0.dev0/nextmv/templates/python_multi-file_class-assign/.gitignore +0 -1
  67. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/.python-version +0 -0
  68. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/CONTRIBUTING.md +0 -0
  69. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/LICENSE +0 -0
  70. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/README.md +0 -0
  71. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/__entrypoint__.py +0 -0
  72. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/_serialization.py +0 -0
  73. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/base_model.py +0 -0
  74. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/__init__.py +0 -0
  75. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/__init__.py +0 -0
  76. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/acceptance/__init__.py +0 -0
  77. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/acceptance/create.py +0 -0
  78. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/acceptance/delete.py +0 -0
  79. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/acceptance/get.py +0 -0
  80. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/acceptance/list.py +0 -0
  81. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/acceptance/update.py +0 -0
  82. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/account/__init__.py +0 -0
  83. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/account/create.py +0 -0
  84. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/account/delete.py +0 -0
  85. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/account/get.py +0 -0
  86. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/account/update.py +0 -0
  87. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/app/__init__.py +0 -0
  88. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/app/create.py +0 -0
  89. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/app/delete.py +0 -0
  90. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/app/exists.py +0 -0
  91. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/app/get.py +0 -0
  92. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/app/list.py +0 -0
  93. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/app/push.py +0 -0
  94. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/app/update.py +0 -0
  95. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/batch/__init__.py +0 -0
  96. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/batch/create.py +0 -0
  97. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/batch/delete.py +0 -0
  98. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/batch/get.py +0 -0
  99. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/batch/list.py +0 -0
  100. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/batch/metadata.py +0 -0
  101. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/batch/update.py +0 -0
  102. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/data/__init__.py +0 -0
  103. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/data/upload.py +0 -0
  104. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/ensemble/__init__.py +0 -0
  105. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/ensemble/create.py +0 -0
  106. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/ensemble/delete.py +0 -0
  107. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/ensemble/get.py +0 -0
  108. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/ensemble/list.py +0 -0
  109. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/ensemble/update.py +0 -0
  110. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/input_set/__init__.py +0 -0
  111. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/input_set/create.py +0 -0
  112. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/input_set/delete.py +0 -0
  113. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/input_set/get.py +0 -0
  114. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/input_set/list.py +0 -0
  115. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/input_set/update.py +0 -0
  116. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/instance/__init__.py +0 -0
  117. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/instance/create.py +0 -0
  118. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/instance/delete.py +0 -0
  119. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/instance/exists.py +0 -0
  120. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/instance/get.py +0 -0
  121. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/instance/list.py +0 -0
  122. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/instance/update.py +0 -0
  123. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/managed_input/__init__.py +0 -0
  124. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/managed_input/create.py +0 -0
  125. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/managed_input/delete.py +0 -0
  126. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/managed_input/get.py +0 -0
  127. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/managed_input/list.py +0 -0
  128. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/managed_input/update.py +0 -0
  129. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/__init__.py +0 -0
  130. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/app/__init__.py +0 -0
  131. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/app/create.py +0 -0
  132. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/app/get.py +0 -0
  133. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/app/list.py +0 -0
  134. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/app/update.py +0 -0
  135. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/subscription/__init__.py +0 -0
  136. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/subscription/create.py +0 -0
  137. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/subscription/delete.py +0 -0
  138. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/subscription/get.py +0 -0
  139. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/subscription/list.py +0 -0
  140. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/version/__init__.py +0 -0
  141. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/version/create.py +0 -0
  142. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/version/get.py +0 -0
  143. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/version/list.py +0 -0
  144. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/marketplace/version/update.py +0 -0
  145. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/run/__init__.py +0 -0
  146. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/run/cancel.py +0 -0
  147. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/run/create.py +0 -0
  148. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/run/delete.py +0 -0
  149. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/run/get.py +0 -0
  150. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/run/input.py +0 -0
  151. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/run/list.py +0 -0
  152. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/run/logs.py +0 -0
  153. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/run/metadata.py +0 -0
  154. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/run/track.py +0 -0
  155. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/scenario/__init__.py +0 -0
  156. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/scenario/create.py +0 -0
  157. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/scenario/delete.py +0 -0
  158. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/scenario/get.py +0 -0
  159. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/scenario/list.py +0 -0
  160. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/scenario/metadata.py +0 -0
  161. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/scenario/update.py +0 -0
  162. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/secrets/__init__.py +0 -0
  163. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/secrets/create.py +0 -0
  164. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/secrets/delete.py +0 -0
  165. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/secrets/get.py +0 -0
  166. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/secrets/list.py +0 -0
  167. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/secrets/update.py +0 -0
  168. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/shadow/__init__.py +0 -0
  169. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/shadow/create.py +0 -0
  170. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/shadow/delete.py +0 -0
  171. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/shadow/get.py +0 -0
  172. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/shadow/list.py +0 -0
  173. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/shadow/metadata.py +0 -0
  174. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/shadow/start.py +0 -0
  175. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/shadow/stop.py +0 -0
  176. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/shadow/update.py +0 -0
  177. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/sso/__init__.py +0 -0
  178. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/sso/create.py +0 -0
  179. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/sso/delete.py +0 -0
  180. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/sso/disable.py +0 -0
  181. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/sso/domain/__init__.py +0 -0
  182. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/sso/domain/delete.py +0 -0
  183. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/sso/enable.py +0 -0
  184. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/sso/get.py +0 -0
  185. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/sso/update.py +0 -0
  186. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/switchback/__init__.py +0 -0
  187. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/switchback/create.py +0 -0
  188. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/switchback/delete.py +0 -0
  189. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/switchback/get.py +0 -0
  190. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/switchback/list.py +0 -0
  191. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/switchback/metadata.py +0 -0
  192. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/switchback/start.py +0 -0
  193. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/switchback/stop.py +0 -0
  194. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/switchback/update.py +0 -0
  195. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/upload/__init__.py +0 -0
  196. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/upload/create.py +0 -0
  197. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/version/__init__.py +0 -0
  198. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/version/create.py +0 -0
  199. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/version/delete.py +0 -0
  200. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/version/exists.py +0 -0
  201. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/version/get.py +0 -0
  202. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/version/list.py +0 -0
  203. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/cloud/version/update.py +0 -0
  204. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/community/__init__.py +0 -0
  205. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/community/clone.py +0 -0
  206. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/community/list.py +0 -0
  207. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/configuration/__init__.py +0 -0
  208. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/configuration/config.py +0 -0
  209. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/configuration/create.py +0 -0
  210. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/configuration/delete.py +0 -0
  211. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/configuration/list.py +0 -0
  212. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/__init__.py +0 -0
  213. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/app/__init__.py +0 -0
  214. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/app/delete.py +0 -0
  215. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/app/get.py +0 -0
  216. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/app/list.py +0 -0
  217. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/app/register.py +0 -0
  218. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/app/registered.py +0 -0
  219. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/app/sync.py +0 -0
  220. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/app/update.py +0 -0
  221. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/run/__init__.py +0 -0
  222. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/run/create.py +0 -0
  223. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/run/get.py +0 -0
  224. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/run/input.py +0 -0
  225. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/run/list.py +0 -0
  226. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/run/logs.py +0 -0
  227. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/run/metadata.py +0 -0
  228. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/local/run/visuals.py +0 -0
  229. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/manifest/__init__.py +0 -0
  230. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/manifest/init.py +0 -0
  231. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/manifest/validate.py +0 -0
  232. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/message.py +0 -0
  233. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/options.py +0 -0
  234. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cli/version.py +0 -0
  235. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/__init__.py +0 -0
  236. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/acceptance_test.py +0 -0
  237. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/__init__.py +0 -0
  238. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/_acceptance.py +0 -0
  239. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/_ensemble.py +0 -0
  240. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/_input_set.py +0 -0
  241. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/_instance.py +0 -0
  242. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/_managed_input.py +0 -0
  243. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/_run.py +0 -0
  244. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/_secrets.py +0 -0
  245. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/_shadow.py +0 -0
  246. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/_switchback.py +0 -0
  247. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/_utils.py +0 -0
  248. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/application/_version.py +0 -0
  249. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/assets.py +0 -0
  250. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/client.py +0 -0
  251. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/community.py +0 -0
  252. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/ensemble.py +0 -0
  253. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/input_set.py +0 -0
  254. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/instance.py +0 -0
  255. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/integration.py +0 -0
  256. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/marketplace.py +0 -0
  257. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/scenario.py +0 -0
  258. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/secrets.py +0 -0
  259. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/shadow.py +0 -0
  260. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/sso.py +0 -0
  261. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/switchback.py +0 -0
  262. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/url.py +0 -0
  263. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/cloud/version.py +0 -0
  264. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/content_format.py +0 -0
  265. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/default_app/.gitignore +0 -0
  266. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/default_app/README.md +0 -0
  267. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/default_app/app.yaml +0 -0
  268. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/default_app/input.json +0 -0
  269. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/default_app/main.py +0 -0
  270. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/default_app/requirements.txt +0 -0
  271. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/default_app/src/__init__.py +0 -0
  272. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/default_app/src/visuals.py +0 -0
  273. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/deprecated.py +0 -0
  274. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/input.py +0 -0
  275. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/local/__init__.py +0 -0
  276. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/local/executor.py +0 -0
  277. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/local/geojson_handler.py +0 -0
  278. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/local/local.py +0 -0
  279. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/local/plotly_handler.py +0 -0
  280. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/local/registry.py +0 -0
  281. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/local/runner.py +0 -0
  282. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/logger.py +0 -0
  283. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/model.py +0 -0
  284. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/output.py +0 -0
  285. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/polling.py +0 -0
  286. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/run.py +0 -0
  287. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/safe.py +0 -0
  288. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/status.py +0 -0
  289. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/binary_json_app.yaml +0 -0
  290. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/binary_multi-file_app.yaml +0 -0
  291. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_json_hello-world/.gitignore +0 -0
  292. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_json_hello-world/go.mod +0 -0
  293. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_json_hello-world/input.json +0 -0
  294. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_json_hello-world/main.go +0 -0
  295. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_multi-file_hello-world/.gitignore +0 -0
  296. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_multi-file_hello-world/go.mod +0 -0
  297. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_multi-file_hello-world/inputs/input.json +0 -0
  298. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/go_multi-file_hello-world/main.go +0 -0
  299. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_json_app.yaml +0 -0
  300. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_json_hello-world/Main.java +0 -0
  301. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_json_hello-world/README.md +0 -0
  302. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_json_hello-world/app.yaml +0 -0
  303. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_json_hello-world/input.json +0 -0
  304. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_json_hello-world/pom.xml +0 -0
  305. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_multi-file_app.yaml +0 -0
  306. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_multi-file_hello-world/Main.java +0 -0
  307. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_multi-file_hello-world/README.md +0 -0
  308. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_multi-file_hello-world/app.yaml +0 -0
  309. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_multi-file_hello-world/inputs/input.json +0 -0
  310. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/java_multi-file_hello-world/pom.xml +0 -0
  311. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_app.yaml +0 -0
  312. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_class-assign/.gitignore +0 -0
  313. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_class-assign/README.md +0 -0
  314. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_class-assign/input.json +0 -0
  315. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_class-assign/requirements.txt +0 -0
  316. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_class-assign/visualizations.py +0 -0
  317. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/.gitignore +0 -0
  318. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/README.md +0 -0
  319. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/allocation/input.json +0 -0
  320. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/allocation/requirements.txt +0 -0
  321. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/allocation/visuals.py +0 -0
  322. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/workflow/README.md +0 -0
  323. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/workflow/input.json +0 -0
  324. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/workflow/main.py +0 -0
  325. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/workflow/requirements.txt +0 -0
  326. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_demand-alloc/workflow/visuals.py +0 -0
  327. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_hello-world/.gitignore +0 -0
  328. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_hello-world/README.md +0 -0
  329. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_hello-world/app.yaml +0 -0
  330. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_hello-world/input.json +0 -0
  331. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_hello-world/main.py +0 -0
  332. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_json_hello-world/requirements.txt +0 -0
  333. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_app.yaml +0 -0
  334. {nextmv-1.4.0.dev0/nextmv/templates/python_multi-file_demand-alloc/workflow → nextmv-1.4.1.dev0/nextmv/templates/python_multi-file_class-assign}/.gitignore +0 -0
  335. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_class-assign/README.md +0 -0
  336. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_class-assign/inputs/input.json +0 -0
  337. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_class-assign/requirements.txt +0 -0
  338. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_class-assign/visualizations.py +0 -0
  339. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_demand-alloc/README.md +0 -0
  340. {nextmv-1.4.0.dev0/nextmv/templates/python_json_demand-alloc → nextmv-1.4.1.dev0/nextmv/templates/python_multi-file_demand-alloc}/allocation/README.md +0 -0
  341. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_demand-alloc/allocation/input.json +0 -0
  342. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_demand-alloc/allocation/requirements.txt +0 -0
  343. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_demand-alloc/allocation/visuals.py +0 -0
  344. {nextmv-1.4.0.dev0/nextmv/templates/python_multi-file_hello-world → nextmv-1.4.1.dev0/nextmv/templates/python_multi-file_demand-alloc/workflow}/.gitignore +0 -0
  345. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/README.md +0 -0
  346. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/inputs/input.json +0 -0
  347. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/main.py +0 -0
  348. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/requirements.txt +0 -0
  349. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/visuals.py +0 -0
  350. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_hello-world/README.md +0 -0
  351. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_hello-world/app.yaml +0 -0
  352. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_hello-world/inputs/input.json +0 -0
  353. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_hello-world/main.py +0 -0
  354. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/nextmv/templates/python_multi-file_hello-world/requirements.txt +0 -0
  355. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/__init__.py +0 -0
  356. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/cli/__init__.py +0 -0
  357. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/cli/test_configuration.py +0 -0
  358. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/cli/test_main.py +0 -0
  359. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/cli/test_version.py +0 -0
  360. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/cloud/__init__.py +0 -0
  361. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/cloud/app.yaml +0 -0
  362. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/cloud/test_client.py +0 -0
  363. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/cloud/test_instance.py +0 -0
  364. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/cloud/test_package.py +0 -0
  365. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/cloud/test_scenario.py +0 -0
  366. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/integration/__init__.py +0 -0
  367. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/integration/cloud/__init__.py +0 -0
  368. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/integration/cloud/test_integration_cloud.py +0 -0
  369. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/integration/cloud/test_integration_marketplace.py +0 -0
  370. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/local/__init__.py +0 -0
  371. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/local/test_application.py +0 -0
  372. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/local/test_executor.py +0 -0
  373. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/local/test_registry.py +0 -0
  374. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/local/test_runner.py +0 -0
  375. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/scripts/__init__.py +0 -0
  376. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/scripts/options1.py +0 -0
  377. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/scripts/options2.py +0 -0
  378. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/scripts/options3.py +0 -0
  379. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/scripts/options4.py +0 -0
  380. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/scripts/options5.py +0 -0
  381. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/scripts/options6.py +0 -0
  382. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/scripts/options7.py +0 -0
  383. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_base_model.py +0 -0
  384. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_entrypoint/__init__.py +0 -0
  385. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_entrypoint/test_entrypoint.py +0 -0
  386. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_input.py +0 -0
  387. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_inputs/test_data.csv +0 -0
  388. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_inputs/test_data.json +0 -0
  389. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_inputs/test_data.txt +0 -0
  390. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_logger.py +0 -0
  391. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_model.py +0 -0
  392. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_options.py +0 -0
  393. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_output.py +0 -0
  394. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_polling.py +0 -0
  395. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_run.py +0 -0
  396. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_safe.py +0 -0
  397. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_serialization.py +0 -0
  398. {nextmv-1.4.0.dev0 → nextmv-1.4.1.dev0}/tests/test_version.py +0 -0
@@ -161,5 +161,10 @@ cython_debug/
161
161
  # VSCode
162
162
  .vscode/
163
163
 
164
+ # Agents
165
+ .claude
166
+
164
167
  # Documentation stuff
165
168
  site/
169
+
170
+ scratch
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nextmv
3
- Version: 1.4.0.dev0
3
+ Version: 1.4.1.dev0
4
4
  Summary: The all-purpose Python SDK for Nextmv
5
5
  Project-URL: Homepage, https://www.nextmv.io
6
6
  Project-URL: Documentation, https://nextmv-py.docs.nextmv.io/en/latest/nextmv/
@@ -227,6 +227,8 @@ Requires-Dist: questionary>=2.1.1
227
227
  Requires-Dist: requests>=2.31.0
228
228
  Requires-Dist: typer>=0.20.1
229
229
  Requires-Dist: urllib3>=2.1.0
230
+ Provides-Extra: mcp
231
+ Requires-Dist: mcp[cli]>=1.0; extra == 'mcp'
230
232
  Provides-Extra: notebook
231
233
  Requires-Dist: mlflow>=3.9.0; extra == 'notebook'
232
234
  Description-Content-Type: text/markdown
@@ -0,0 +1 @@
1
+ __version__ = "v1.4.1.dev0"
@@ -1,6 +1,7 @@
1
1
  """Nextmv Python SDK."""
2
2
 
3
3
  from .__about__ import __version__
4
+ from .account import AccountMemberRole as AccountMemberRole
4
5
  from .base_model import BaseModel as BaseModel
5
6
  from .base_model import from_dict as from_dict
6
7
  from .content_format import ContentFormat as ContentFormat
@@ -0,0 +1,51 @@
1
+ """
2
+ Provides role enum for Nextmv accounts.
3
+
4
+ This module defines enumerations for representing member roles within
5
+ a Nextmv account.
6
+
7
+ Classes
8
+ -------
9
+ AccountMemberRole
10
+ Represents the role of a member in a Nextmv account.
11
+ """
12
+
13
+ from enum import Enum
14
+
15
+
16
+ class AccountMemberRole(str, Enum):
17
+ """
18
+ The role type of an `AccountMember` represented as a string.
19
+
20
+ You can import the `AccountMemberRole` class directly from `nextmv`:
21
+
22
+ ```python
23
+ from nextmv import AccountMemberRole
24
+ ```
25
+
26
+ This enum specifies the supported roles for users in Nextmv accounts.
27
+
28
+ Attributes
29
+ ----------
30
+ ROOT : str
31
+ The role of the owner of the account
32
+ ADMIN : str
33
+ The role of administrators of the account
34
+ DEVELOPER: str
35
+ The role of developers of the account
36
+ OPERATOR: str
37
+ The role of operators of the account
38
+ VIEWER: str
39
+ The role of viewers of the account
40
+ """
41
+
42
+ ROOT = "root"
43
+ """The role of the owner of the account"""
44
+ ADMIN = "admin"
45
+ """The role of administrators of the account"""
46
+ DEVELOPER = "developer"
47
+ """The role of developers of the account"""
48
+ OPERATOR = "operator"
49
+ """The role of operators of the account"""
50
+ VIEWER = "viewer"
51
+ """The role of viewers of the account"""
@@ -170,11 +170,7 @@ def _manifest_type_question() -> ManifestType:
170
170
  default=ManifestType.PYTHON.value,
171
171
  )
172
172
 
173
- manifest_type = ManifestType(manifest_type)
174
- if manifest_type == ManifestType.BINARY:
175
- manifest_type = ManifestType.GO
176
-
177
- return manifest_type
173
+ return ManifestType(manifest_type)
178
174
 
179
175
 
180
176
  def _template_question(manifest_type: ManifestType) -> str:
@@ -339,12 +335,12 @@ def _handle_files_initialization(
339
335
  )
340
336
 
341
337
  else:
342
- dst = initialize_manifest(manifest_type=manifest_type, content_format=content_format, dirpath=dirpath)
338
+ manifest_path = initialize_manifest(manifest_type=manifest_type, content_format=content_format, dirpath=dirpath)
343
339
  success(
344
340
  f"[magenta]{manifest_type.value}[/magenta], [magenta]{content_format.value}[/magenta] manifest "
345
- f"initialized at [magenta]{dst}[/magenta]."
341
+ f"initialized at [magenta]{manifest_path}[/magenta]."
346
342
  )
347
- local_app = local.Application(src=dst)
343
+ local_app = local.Application(src=os.path.dirname(manifest_path))
348
344
 
349
345
  return local_app
350
346
 
@@ -55,6 +55,14 @@ app.add_typer(local_app, name="local")
55
55
  app.add_typer(manifest_app, name="manifest")
56
56
  app.add_typer(version_app)
57
57
 
58
+ # Register the MCP subcommand only if the mcp extra is installed.
59
+ try:
60
+ from nextmv.cli.mcp import app as mcp_app
61
+
62
+ app.add_typer(mcp_app, name="mcp")
63
+ except ImportError:
64
+ pass
65
+
58
66
 
59
67
  @app.callback()
60
68
  def callback(
@@ -79,7 +87,7 @@ def callback(
79
87
  return
80
88
 
81
89
  # Skip checks for certain commands.
82
- ignored_commands = {"configuration", "local", "init", "manifest", "version"}
90
+ ignored_commands = {"configuration", "mcp", "local", "init", "manifest", "version"}
83
91
  if ctx.invoked_subcommand in ignored_commands:
84
92
  return
85
93
 
@@ -0,0 +1,38 @@
1
+ """MCP (Model Context Protocol) server for the Nextmv CLI.
2
+
3
+ Requires the ``mcp`` optional extra: ``pip install nextmv[mcp]``.
4
+ """
5
+
6
+ # Fail fast at import time so that main.py's try/except can gate the
7
+ # subcommand registration.
8
+ import importlib.util
9
+
10
+ if importlib.util.find_spec("mcp") is None:
11
+ raise ImportError(
12
+ "The mcp extra is not installed. Install it with: pip install nextmv[mcp]"
13
+ )
14
+
15
+ import typer
16
+
17
+ from nextmv.cli.mcp.serve import app as serve_app
18
+
19
+ # Set up subcommand application.
20
+ app = typer.Typer()
21
+ app.add_typer(serve_app)
22
+
23
+
24
+ @app.callback()
25
+ def callback() -> None:
26
+ """
27
+ Model Context Protocol (MCP) server for LLM integrations.
28
+
29
+ Start an MCP server so that any MCP-compatible client (Claude Code,
30
+ Cursor, VS Code, etc.) can interact with Nextmv Cloud through natural
31
+ language.
32
+
33
+ [bold][underline]Quick start[/underline][/bold]
34
+
35
+ - Register with Claude Code.
36
+ $ [dim]claude mcp add nextmv -- nextmv mcp serve[/dim]
37
+ """
38
+ pass
@@ -0,0 +1,65 @@
1
+ """MCP server command for the Nextmv CLI."""
2
+
3
+ from typing import Annotated
4
+
5
+ import typer
6
+
7
+ from nextmv.cli.mcp.server import create_server
8
+ from nextmv.cli.message import error
9
+
10
+ # Set up subcommand application.
11
+ app = typer.Typer()
12
+
13
+
14
+ @app.command()
15
+ def serve(
16
+ port: Annotated[
17
+ int,
18
+ typer.Option(
19
+ "--port",
20
+ help="Port for the HTTP transport.",
21
+ metavar="PORT",
22
+ ),
23
+ ] = 8080,
24
+ transport: Annotated[
25
+ str,
26
+ typer.Option(
27
+ "--transport",
28
+ "-t",
29
+ help="Transport protocol. "
30
+ "Allowed values: [magenta]stdio[/magenta], [magenta]streamable-http[/magenta].",
31
+ metavar="TRANSPORT",
32
+ ),
33
+ ] = "stdio",
34
+ ) -> None:
35
+ """
36
+ Start the Nextmv MCP server.
37
+
38
+ The MCP server exposes Nextmv Cloud functionality as tools that any
39
+ MCP-compatible client can use. The default transport is
40
+ [magenta]stdio[/magenta], which is what Claude Code, Cursor, and most
41
+ local clients expect.
42
+
43
+ [bold][underline]Examples[/underline][/bold]
44
+
45
+ - Start the MCP server with stdio transport (default).
46
+ $ [dim]nextmv mcp serve[/dim]
47
+
48
+ - Start the MCP server with HTTP transport on port 9090.
49
+ $ [dim]nextmv mcp serve --transport streamable-http --port 9090[/dim]
50
+
51
+ - Register with Claude Code.
52
+ $ [dim]claude mcp add nextmv -- nextmv mcp serve[/dim]
53
+ """
54
+
55
+ server = create_server()
56
+
57
+ if transport == "stdio":
58
+ server.run(transport="stdio")
59
+ elif transport in ("http", "streamable-http"):
60
+ server.run(transport="streamable-http", port=port)
61
+ else:
62
+ error(
63
+ f"Unknown transport [magenta]{transport}[/magenta]. "
64
+ "Allowed values are: [magenta]stdio[/magenta], [magenta]streamable-http[/magenta]."
65
+ )
@@ -0,0 +1,115 @@
1
+ """Nextmv MCP server definition.
2
+
3
+ This module is the public entry point for the MCP server. It delegates
4
+ tool registration to domain-specific submodules under ``tools/`` and
5
+ re-exports shared helpers so that existing imports continue to work.
6
+ """
7
+
8
+ from mcp.server.fastmcp import FastMCP
9
+
10
+ # Import tool registration submodules.
11
+ from nextmv.cli.mcp.tools import (
12
+ acceptance,
13
+ account,
14
+ app,
15
+ batch,
16
+ community,
17
+ ensemble,
18
+ guide,
19
+ input_set,
20
+ instance,
21
+ local,
22
+ managed_input,
23
+ profile,
24
+ run,
25
+ scenario,
26
+ secrets,
27
+ shadow,
28
+ sso,
29
+ switchback,
30
+ version,
31
+ )
32
+
33
+ # Re-export helpers for backward compatibility — tests and external code
34
+ # may import these directly from ``nextmv.cli.mcp.server``.
35
+ from nextmv.cli.mcp.tools._helpers import ( # noqa: F401
36
+ _get_app,
37
+ _get_client,
38
+ _get_local_app,
39
+ _mask_key,
40
+ _save_to_file,
41
+ _save_to_json_file,
42
+ session,
43
+ )
44
+
45
+ # Re-export SDK names that tests patch on this module.
46
+ from nextmv.cloud import list_applications # noqa: F401
47
+
48
+
49
+ def create_server() -> FastMCP:
50
+ """Create and return the Nextmv MCP server."""
51
+
52
+ mcp = FastMCP(
53
+ "nextmv",
54
+ json_response=True,
55
+ instructions=(
56
+ "Nextmv is a platform for deploying and managing decision "
57
+ "models (optimization, routing, scheduling, etc.). Use these "
58
+ "tools to interact with Nextmv Cloud apps: list apps, submit "
59
+ "runs, check results, manage versions/instances, run experiments, "
60
+ "and work with local applications.\n\n"
61
+ "IMPORTANT: Always use these MCP tools instead of shelling out "
62
+ "to the `nextmv` CLI binary. Large responses (run results, "
63
+ "inputs, logs) are automatically saved to local temp files to "
64
+ "keep the context window small — the tool will return the file "
65
+ "path so you can selectively read what you need. Large inputs "
66
+ "can be passed directly as tool parameters without concern.\n\n"
67
+ "PROFILES: The server supports multiple profiles from "
68
+ "~/.nextmv/config.yaml. Use cloud_list_profiles to see "
69
+ "available profiles and cloud_set_profile to switch. The "
70
+ "default profile is used unless changed. When the user asks "
71
+ "to use a specific profile (e.g. \"list apps in my dev "
72
+ "profile\"), call cloud_set_profile first. Always state which "
73
+ "profile you are using when calling cloud tools, e.g. "
74
+ "(profile: \"default\").\n\n"
75
+ "CLOUD RUN CACHE: Cloud run data (results, inputs, logs) is "
76
+ "cached locally at ~/.nextmv/runs/{endpoint}/{run_id}/ using "
77
+ "the same directory layout as local runs. The {endpoint} is the "
78
+ "API endpoint (e.g. api.cloud.nextmv.io). If a file already "
79
+ "exists there, it will not be re-downloaded. You can read "
80
+ "cached cloud run data directly from these paths without "
81
+ "calling the cloud tools again.\n\n"
82
+ "WORKFLOW GUIDE: When creating a new app, deploying to Cloud, "
83
+ "or running experiments, call the nextmv_workflow_guide tool "
84
+ "first to get the step-by-step workflow and coding patterns."
85
+ ),
86
+ )
87
+
88
+ # Cloud tools
89
+ profile.register(mcp)
90
+ app.register(mcp)
91
+ run.register(mcp)
92
+ version.register(mcp)
93
+ instance.register(mcp)
94
+ batch.register(mcp)
95
+ input_set.register(mcp)
96
+ acceptance.register(mcp)
97
+ scenario.register(mcp)
98
+ ensemble.register(mcp)
99
+ shadow.register(mcp)
100
+ switchback.register(mcp)
101
+ secrets.register(mcp)
102
+ sso.register(mcp)
103
+ account.register(mcp)
104
+ managed_input.register(mcp)
105
+
106
+ # Community tools
107
+ community.register(mcp)
108
+
109
+ # Local tools
110
+ local.register(mcp)
111
+
112
+ # Workflow guide
113
+ guide.register(mcp)
114
+
115
+ return mcp