devlift-cli 0.1.2__tar.gz → 0.1.3__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 (66) hide show
  1. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/PKG-INFO +1 -1
  2. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/__init__.py +1 -1
  3. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/skill/SKILL.md +68 -13
  4. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/skill/reference/workflows.md +35 -3
  5. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli.egg-info/PKG-INFO +1 -1
  6. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/README.md +0 -0
  7. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/MANUAL.md +0 -0
  8. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/__main__.py +0 -0
  9. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/api/__init__.py +0 -0
  10. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/api/approvals.py +0 -0
  11. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/api/catalog.py +0 -0
  12. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/api/client.py +0 -0
  13. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/api/context.py +0 -0
  14. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/api/deployments.py +0 -0
  15. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/api/infra.py +0 -0
  16. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/api/infra_list.py +0 -0
  17. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/api/kong.py +0 -0
  18. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/api/services.py +0 -0
  19. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/api/vpc.py +0 -0
  20. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/app.py +0 -0
  21. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/auth/__init__.py +0 -0
  22. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/auth/oauth.py +0 -0
  23. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/auth/session.py +0 -0
  24. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/auth/storage.py +0 -0
  25. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/__init__.py +0 -0
  26. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/approval.py +0 -0
  27. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/auth.py +0 -0
  28. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/catalog.py +0 -0
  29. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/clusters.py +0 -0
  30. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/deployment.py +0 -0
  31. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/dynamodb.py +0 -0
  32. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/eks.py +0 -0
  33. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/kong.py +0 -0
  34. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/languages.py +0 -0
  35. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/manual.py +0 -0
  36. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/repositories.py +0 -0
  37. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/request.py +0 -0
  38. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/s3.py +0 -0
  39. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/skill.py +0 -0
  40. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/commands/sqs.py +0 -0
  41. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/config.py +0 -0
  42. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/context.py +0 -0
  43. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/data/placement/vance.json +0 -0
  44. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/errors.py +0 -0
  45. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/ops/__init__.py +0 -0
  46. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/ops/approvals.py +0 -0
  47. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/ops/eks.py +0 -0
  48. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/ops/kong.py +0 -0
  49. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/ops/placement.py +0 -0
  50. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/ops/resources.py +0 -0
  51. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/ops/status.py +0 -0
  52. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/ops/wait.py +0 -0
  53. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/render/__init__.py +0 -0
  54. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/render/output.py +0 -0
  55. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/resolve/__init__.py +0 -0
  56. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/resolve/allowlist.py +0 -0
  57. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/resolve/names.py +0 -0
  58. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/skill/reference/commands.md +0 -0
  59. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli/skill/reference/exit-codes.md +0 -0
  60. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli.egg-info/SOURCES.txt +0 -0
  61. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli.egg-info/dependency_links.txt +0 -0
  62. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli.egg-info/entry_points.txt +0 -0
  63. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli.egg-info/requires.txt +0 -0
  64. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/devlift_cli.egg-info/top_level.txt +0 -0
  65. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/pyproject.toml +0 -0
  66. {devlift_cli-0.1.2 → devlift_cli-0.1.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devlift-cli
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: DevLift command-line tool: create, change, review and deploy DevLift resources from the terminal.
5
5
  License: Proprietary
6
6
  Keywords: devlift,devops,deployment,infrastructure,cli
@@ -1,3 +1,3 @@
1
1
  """DevLift command-line tool."""
2
2
 
3
- __version__ = "0.1.2"
3
+ __version__ = "0.1.3"
@@ -160,19 +160,29 @@ are in `reference/workflows.md`.
160
160
  and prints two tables on stderr: the service (placement, cluster it
161
161
  picked, repository, branches, language) and the Configuration table with
162
162
  a "From" column saying which values came from the language template.
163
- 3. **Show the user those template values as they were printed and ask:**
164
- "These are the standard <language> values. Apply them, or tell me what to
165
- change?" That reply is text and ends the turn no dialog, no tool call,
166
- because a dialog would hide the table they are deciding on. Do not rerun
167
- with `-y` until they answer.
163
+ 3. **Reproduce both tables in your reply, then ask.** Paste them as the
164
+ command printed them, inside a code block, every row, in the same order,
165
+ with the "From" column intact. They are the summary. Do not replace them
166
+ with prose, do not show only the rows you think matter, and do not lead
167
+ with your own commentary: the user is about to approve these exact values
168
+ and cannot approve what they cannot see. Anything you want to point out
169
+ goes AFTER the tables, in a line or two.
170
+
171
+ Then ask: "These are the standard <language> values. Apply them, or tell
172
+ me what to change?" That reply is text and ends the turn — no dialog, no
173
+ tool call, because a dialog would hide the table they are deciding on. Do
174
+ not rerun with `-y` until they answer.
168
175
  4. A change ("port 9000", "1 GiB memory limit", "turn on autoscaling 2 to 4")
169
176
  becomes `--set` flags on the rerun: `--set port=9000`,
170
177
  `--set memory_limit=1`, `--set hpa_enabled=true --set min_replicas=2
171
178
  --set max_replicas=4`. Rerun without `-y` once more only if the change is
172
- large; otherwise rerun with `-y` and report the service, configuration and
173
- queue codes.
174
- 5. Say it is a **draft** and name the next step: `request submit`, then a
175
- reviewer's `approval approve`, then `eks deploy`.
179
+ large; otherwise rerun with `-y`.
180
+ 5. **Report what is now waiting to be reviewed, not the codes it returned.**
181
+ Run `devlift request show <service> --env <env> --no-input -o json` and
182
+ show what it lists: every row in the change set and the fields each one
183
+ changes. Say it is a **draft**, nothing is deployed, and name the next
184
+ step: `request submit`, then a reviewer's `approval approve`, then
185
+ `eks deploy`.
176
186
 
177
187
  The same show-then-ask shape applies to every write: `eks edit` and the
178
188
  update commands print Current | New, `kong route …` prints the route change,
@@ -181,12 +191,57 @@ the approved rows. The summary is printed on every dry run, in json mode too.
181
191
 
182
192
  ## Reporting back to the user
183
193
 
184
- - After a dry run (exit 5) show the summary the command printed and ask for
185
- the go-ahead. After a write, report the codes it returned: resource code and
186
- workflow id for resources; queue code and status for drafts and review
187
- verbs; workflow id for a deploy.
194
+ - **After a dry run (exit 5), paste what the command printed, verbatim, in a
195
+ code block**, then ask for the go-ahead. Every row of every table, in order.
196
+ A summary you wrote yourself is not a substitute: the user is approving the
197
+ values in that output, so replacing it with "two differences worth your
198
+ call" hides the other twenty they are also agreeing to. Commentary is
199
+ welcome after it, never instead of it.
200
+ - **After a draft write, show what will go to review — not the codes.**
201
+ `eks create`, `eks edit` and `kong route …` all save a draft. The service
202
+ code, the configuration code and the queue code are plumbing: they belong in
203
+ your next tool call, not in a sentence a person reads. Run
204
+ `devlift request show <service> --env <env> --no-input -o json` and report
205
+ what it lists: every row in the change set, and for each one the fields it
206
+ changes. A service's settings and its Kong routes are **one change set**, so
207
+ a route added earlier will be submitted by this submit too, and the user has
208
+ to see that before they agree to it. Mention a code only if the user asks,
209
+ or when they need it to run a command themselves.
188
210
  - A draft is not deployed. Say so, and name the next command
189
211
  (`request submit`, then `approval approve`, then `eks deploy`).
212
+ - **After `request submit`, say three things.** That it is submitted and now
213
+ waiting for approval. How many rows moved and which kinds (settings,
214
+ gateway/Kong, variables) — the submit result's `requests[]` gives you both.
215
+ And who approves it next.
216
+ For that last one, do not guess and never write "if you have approval
217
+ rights": run `devlift request show <service> --env <env> --no-input -o json`
218
+ and read `you.can_approve`. If it is true, say plainly that they can approve
219
+ it themselves and offer `devlift approval approve <service> --env <env>`. If
220
+ it is false, say it needs a reviewer on that resource group. The user should
221
+ never have to work out their own permissions.
222
+ - **After `approval approve`, show the approved change in full.** This is the
223
+ last checkpoint before anything reaches a cluster, so a queue code and the
224
+ word "approved" are not enough. Run `devlift request show <service> --env
225
+ <env> --no-input -o json` and show its frozen diff — every row, Field, From,
226
+ To — so the user sees exactly what is now cleared to ship. Then read
227
+ `you.can_deploy` from that same output: if true, say they can deploy it and
228
+ offer `devlift eks deploy <service> --env <env>` (`--wait` follows it to the
229
+ end); if false, say a deployer has to run it. Check, never guess, exactly as
230
+ with approval.
231
+ - **After `eks deploy`, show what is shipping and where it has got to.** Run
232
+ `devlift deployment status <workflow-id> --no-input -o json` and show its
233
+ pipeline stages as the command gives them — each stage with its status and
234
+ timing — so the user can see which step is running rather than reading a
235
+ sentence about it. Say what is being deployed, which is the change that was
236
+ just approved, and keep the workflow id visible because every later check
237
+ needs it. Then name both follow-ups and the difference between them:
238
+ `deployment status <workflow-id> --wait` says when DevLift's own pipeline
239
+ finished, and `eks status <service> --env <env>` also asks ArgoCD whether the
240
+ pod is actually serving, which is the real "is it up" question. A finished
241
+ pipeline is not a running application.
242
+ - Resources behave differently. `s3`, `sqs` and `dynamodb` create and update
243
+ deploy straight away, so there report the resource name and the workflow id,
244
+ which is what `deployment status` needs.
190
245
  - On exit 7 quote the message: it names the conflicting request or the rule
191
246
  (one live request per service, one auth per Kong tag, a name that exists).
192
247
  - On exit 2 stop and tell the user to sign in; on exit 4 say who to ask.
@@ -42,12 +42,18 @@ devlift repositories branches Regobs/orders --no-input -o json | jq -r '.[].name
42
42
  devlift languages list --no-input -o json
43
43
  devlift eks create --name orders --app core --env stage --region mumbai --type api \
44
44
  --repo Regobs/orders --branch main --language go --version 1.24 --no-input -o json 2>&1 # exit 5: two tables (service, configuration with From column) on stderr
45
- # SHOW the Configuration table to the user and ASK: "These are the standard Go values. Apply them, or tell me what to change?"
45
+ # PASTE BOTH TABLES VERBATIM into your reply, in a code block, every row, before anything else you write.
46
+ # They are the summary — a prose rewrite hides the values the user is about to approve. Commentary goes after them.
47
+ # Then ASK: "These are the standard Go values. Apply them, or tell me what to change?"
46
48
  # a change becomes --set on the rerun, e.g. --set cpu_limit=0.5 --set hpa_enabled=true --set min_replicas=1 --set max_replicas=3
47
49
  devlift eks create … --no-input -y -o json
48
50
  # → {service_code, service_config_code, queue_code, queue_status: "draft", config}
51
+ devlift request show orders --env stage --no-input -o json # what now waits for review
49
52
  ```
50
- Then tell the user it is a draft and continue with workflow 6.
53
+ Report what `request show` lists — the rows in the change set and the fields
54
+ each changes. Do NOT report service_code / service_config_code / queue_code:
55
+ they are plumbing for your next call, not something a person reads. Then tell
56
+ the user it is a draft, nothing is deployed, and continue with workflow 6.
51
57
  `--type worker` drops health/service_path/ALB fields (no load balancer).
52
58
 
53
59
  ## 4. Change a running service's settings
@@ -74,22 +80,48 @@ the other auth → exit 7: pick another `--tag`.
74
80
  ## 6. Review lane (settings and routes move together)
75
81
 
76
82
  ```
83
+ devlift request show orders --env stage --no-input -o json # EVERYTHING that submit will send: settings AND Kong routes
77
84
  devlift request list --service orders --env stage --no-input -o json # what exists, statuses, you.can_approve / can_deploy
78
85
  devlift request submit orders --no-input -y -o json # → requests[] all "submit"; exit 7 if another author holds the lane
86
+ devlift request show orders --env stage --no-input -o json # after submit: you.can_approve says whether THIS user may approve it
79
87
  devlift approval list --no-input -o json # reviewer inbox
80
88
  devlift request show orders --no-input -o json # frozen diff for the reviewer
81
89
  devlift approval approve orders --no-input -y -o json # → requests[] all "approved"
90
+ devlift request show orders --env stage --no-input -o json # after approve: the frozen diff to show, and you.can_deploy
82
91
  # alternatives: approval request-changes orders --comment "…" -y ; approval reject orders --comment "…" -y ; approval revoke orders -y ; request withdraw orders -y
83
92
  ```
93
+ Before submitting, show the user what `request show` lists and get their
94
+ go-ahead. Submit moves the WHOLE change set, so a Kong route added earlier
95
+ ships with the settings change; someone who only remembers editing CPU must
96
+ not discover the route at approval time.
97
+
98
+ After submitting, report that it is waiting for approval, how many rows moved
99
+ and of which kinds, and who approves next. Read `you.can_approve` from
100
+ `request show` rather than writing "if you have approval rights" — the CLI
101
+ knows, so the user should not have to.
102
+
103
+ After approving, show the frozen diff in full (every row, Field | From | To):
104
+ approval is the last checkpoint before a cluster, and "approved" on its own
105
+ tells the user nothing about what they just cleared. Then read `you.can_deploy`
106
+ the same way to say whether they can ship it themselves.
107
+
84
108
  Self-approval works only where the resource group's rule allows it (403 → exit 4 otherwise).
85
109
 
86
110
  ## 7. Deploy and verify
87
111
 
88
112
  ```
89
113
  devlift eks deploy orders --env stage --no-input # lists approved rows, exit 5
90
- devlift eks deploy orders --env stage --no-input -y --wait -o json # → {workflow_id, status, state}
114
+ devlift eks deploy orders --env stage --no-input -y -o json # → {workflow_id, requests[]}
115
+ devlift deployment status <workflow_id> --no-input -o json # stages with status + timing, pr_url, resources
91
116
  devlift eks status orders --env stage --no-input -o json # .deployment (stages, pr_url) and .application (ArgoCD state)
92
117
  ```
118
+ After deploying, show the pipeline stages as the command gives them, each with
119
+ its status and timing, plus what is shipping and the workflow id. Do not
120
+ replace the stage list with a sentence: the user wants to see which step is
121
+ running. Name both follow-ups and the difference — `deployment status --wait`
122
+ answers "did DevLift's pipeline finish", `eks status` also asks ArgoCD "is the
123
+ pod serving". A finished pipeline is not a running application.
124
+
93
125
  Production: `--confirm-name orders` in place of relying on `-y`.
94
126
  Read `.application.state`: `up` = healthy pod; `waiting_for_argocd` /
95
127
  `starting` = keep polling (`--wait`); `not_configured` = no ArgoCD for that
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devlift-cli
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: DevLift command-line tool: create, change, review and deploy DevLift resources from the terminal.
5
5
  License: Proprietary
6
6
  Keywords: devlift,devops,deployment,infrastructure,cli
File without changes
File without changes
File without changes