deployangel 0.1.26 → 0.1.28
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/lib/deployangel/cli.rb +22 -8
- data/lib/deployangel/doctor.rb +15 -2
- data/lib/deployangel/mcp.rb +4 -0
- data/lib/deployangel/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fde8310f8129827b4b759369146c2346542a776ab13ac91fe7001617e93a7ebb
|
|
4
|
+
data.tar.gz: 15a216435704ea45fce03e0a1433d615dc28f6c07fdd6e33c90bebed23361779
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e6e7ae24a04e3999af5865e2cf5be14054cdfc92b5644b1a4f5d8bd56c407faf874b122db23508bbcb3b268e461a89d68a16a3a235e166cf457e10e063a4c3f9
|
|
7
|
+
data.tar.gz: 3e2bb9e11c4d8b35134fdb9088beabcaf0ba5b99b484c9e4b0e2dfc3b710aa544507b55f6a3a222c0446d4b6edbec0f935f0049f03e2039cc19e253767560530
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.28 (2026-10-12)
|
|
4
|
+
|
|
5
|
+
- Clearer setup for coding agents, from a first-day rehearsal: `setup` says
|
|
6
|
+
the running app reads its token only from `DEPLOYANGEL_TOKEN` and points to
|
|
7
|
+
the per-host steps instead of printing Fly and Heroku examples; `install
|
|
8
|
+
agents` says the saved token is used here once `setup` has run; `doctor`'s
|
|
9
|
+
fix for an agent that hasn't reported says how to pass a saved app token;
|
|
10
|
+
and the help says `release` defaults to the current commit and when
|
|
11
|
+
`--format` defaults to json.
|
|
12
|
+
|
|
13
|
+
## 0.1.27 (2026-10-12)
|
|
14
|
+
|
|
15
|
+
- The MCP server's instructions, and the ones `deployangel install agents`
|
|
16
|
+
writes, tell coding agents that a medium-confidence clearance is a full
|
|
17
|
+
clearance and to report warnings as "watching closely" with the verdict's
|
|
18
|
+
new `watching_closely` list, rather than calling a release "suspicious" or
|
|
19
|
+
its confidence "only medium".
|
|
20
|
+
|
|
3
21
|
## 0.1.26 (2026-10-11)
|
|
4
22
|
|
|
5
23
|
- `deployangel setup --code=CODE` redeems a one-time code from "Set up with
|
data/lib/deployangel/cli.rb
CHANGED
|
@@ -49,7 +49,8 @@ module DeployAngel
|
|
|
49
49
|
into a host's or CI's secrets
|
|
50
50
|
mcp Run the MCP server over stdio (for coding agents)
|
|
51
51
|
|
|
52
|
-
With no target, verify, plan, and check use the current git HEAD commit.
|
|
52
|
+
With no target, release, verify, plan, and check use the current git HEAD commit.
|
|
53
|
+
--format defaults to text in a terminal and json otherwise, such as in a pipe or an agent.
|
|
53
54
|
In GitHub Actions, GitLab CI, CircleCI, and Buildkite, release fills in the
|
|
54
55
|
commit, a build label (e.g. run-123), and a link to the run automatically.
|
|
55
56
|
In a Kamal hook, it registers Kamal's release (KAMAL_VERSION).
|
|
@@ -116,13 +117,26 @@ module DeployAngel
|
|
|
116
117
|
plan's read-only requests and records them on the release. Offer to
|
|
117
118
|
exercise what it skips: routes that change data only with a test account
|
|
118
119
|
or after asking. If the status is "warm_up", nothing run can clear it.
|
|
120
|
+
- Confidence `medium` clears a release just as `high` does (high also needs 80%
|
|
121
|
+
coverage and a full baseline), so don't call a medium clearance weak.
|
|
122
|
+
Warnings (`suspicious: true`) aren't failures: report them as "watching
|
|
123
|
+
closely:" and the `watching_closely` items, never as "suspicious".
|
|
119
124
|
#{AGENTS_END}
|
|
120
125
|
MARKDOWN
|
|
121
126
|
|
|
127
|
+
# After `deployangel setup`, the MCP server and CLI here use its saved token.
|
|
128
|
+
AGENTS_SAVED_TOKEN_HELP = <<~HELP.chomp
|
|
129
|
+
Here, the MCP server and CLI use the token `deployangel setup` saved in .deployangel/.
|
|
130
|
+
Teammates redeem their own setup code, or set DEPLOYANGEL_API_TOKEN to a
|
|
131
|
+
"CLI & coding agents" token from the app's Settings, for example in an .envrc
|
|
132
|
+
with direnv. These files hold no token and are meant to be committed.
|
|
133
|
+
Codex reads .codex/config.toml only in projects you've marked as trusted.
|
|
134
|
+
HELP
|
|
122
135
|
AGENTS_TOKEN_HELP = <<~HELP.chomp
|
|
123
136
|
The MCP server and CLI need DEPLOYANGEL_API_TOKEN, a "CLI & coding agents" token
|
|
124
137
|
from the app's Settings, in the environment your agent runs in (for example in
|
|
125
|
-
an .envrc with direnv)
|
|
138
|
+
an .envrc with direnv), or a token saved here by `deployangel setup`.
|
|
139
|
+
Never put it in these files: they're meant to be committed.
|
|
126
140
|
Codex reads .codex/config.toml only in projects you've marked as trusted.
|
|
127
141
|
HELP
|
|
128
142
|
|
|
@@ -410,7 +424,7 @@ module DeployAngel
|
|
|
410
424
|
install_codex_mcp(command),
|
|
411
425
|
*install_agent_instructions
|
|
412
426
|
]
|
|
413
|
-
@stdout.puts(*lines, "", AGENTS_TOKEN_HELP)
|
|
427
|
+
@stdout.puts(*lines, "", Credentials.find(@root) ? AGENTS_SAVED_TOKEN_HELP : AGENTS_TOKEN_HELP)
|
|
414
428
|
0
|
|
415
429
|
end
|
|
416
430
|
|
|
@@ -617,11 +631,11 @@ module DeployAngel
|
|
|
617
631
|
Set up DeployAngel for #{app["name"]} (#{app["environment"]}). Saved its app token and a "CI deploys" token to
|
|
618
632
|
#{relative}, kept out of git and not shown here. The deployangel command and MCP server here use them.
|
|
619
633
|
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
634
|
+
The running app reads its token only from DEPLOYANGEL_TOKEN in its environment, so give it the app
|
|
635
|
+
token without printing it: $(#{command_name} token app) in the command that starts it or sets your
|
|
636
|
+
host's secrets, or #{command_name} token app | <a command that reads a secret>. The same goes for CI and
|
|
637
|
+
the "CI deploys" token (#{command_name} token api). Steps for each host:
|
|
638
|
+
https://www.deployangel.com/setup-for-agents.md
|
|
625
639
|
TEXT
|
|
626
640
|
0
|
|
627
641
|
end
|
data/lib/deployangel/doctor.rb
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require "time"
|
|
4
4
|
require_relative "configuration"
|
|
5
|
+
require_relative "credentials"
|
|
5
6
|
require_relative "metadata"
|
|
6
7
|
require_relative "rails/metadata"
|
|
7
8
|
require_relative "core/release"
|
|
@@ -99,8 +100,20 @@ module DeployAngel
|
|
|
99
100
|
Check.new(status: :warn, message: "The agent last reported #{time(agent["last_received_at"])}, and nothing since",
|
|
100
101
|
fix: "Check the app is running, and that DEPLOYANGEL_TOKEN is still set on its processes.")
|
|
101
102
|
else
|
|
102
|
-
Check.new(status: :warn, message: "The agent hasn't reported yet",
|
|
103
|
-
|
|
103
|
+
Check.new(status: :warn, message: "The agent hasn't reported yet", fix: token_fix)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# The running app reads its token only from DEPLOYANGEL_TOKEN in its
|
|
108
|
+
# environment, never from the file `deployangel setup` saves.
|
|
109
|
+
def token_fix
|
|
110
|
+
if Credentials.find(@root)
|
|
111
|
+
command = File.exist?(File.join(@root, "Gemfile")) ? "bundle exec deployangel" : "deployangel"
|
|
112
|
+
"Start or deploy the app with DEPLOYANGEL_TOKEN in its processes' environment. The app token is saved here, " \
|
|
113
|
+
"so pass it without printing it: $(#{command} token app) in the start command or your host's secrets command."
|
|
114
|
+
else
|
|
115
|
+
"Start or deploy the app with DEPLOYANGEL_TOKEN in its processes' environment, set to its app token " \
|
|
116
|
+
"(\"Deployed application\" in the app's Settings, under API tokens)."
|
|
104
117
|
end
|
|
105
118
|
end
|
|
106
119
|
|
data/lib/deployangel/mcp.rb
CHANGED
|
@@ -19,6 +19,10 @@ module DeployAngel
|
|
|
19
19
|
with until "initial" (about 15 minutes) or "verdict". Verdicts: verified means cleared, so you may
|
|
20
20
|
report the release as successful. inconclusive means NOT verified: never report it as success.
|
|
21
21
|
failed means production regressed: read the findings and exceptions and investigate.
|
|
22
|
+
Confidence medium clears a release just as high does (high also needs 80% coverage and a full
|
|
23
|
+
baseline): never call a medium clearance weak. suspicious true means warnings DeployAngel is
|
|
24
|
+
watching closely, not a failure: report them as "watching closely:" and the watching_closely items,
|
|
25
|
+
never as "suspicious".
|
|
22
26
|
Findings are deterministic evidence; any "investigation" field is AI inference. These tools cannot
|
|
23
27
|
change production. Do not roll back or change production without explicit approval.
|
|
24
28
|
If a release isn't cleared yet, get_exercise_plan says what to exercise against production so it
|
data/lib/deployangel/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: deployangel
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.28
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jordan Owens
|
|
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
86
86
|
- !ruby/object:Gem::Version
|
|
87
87
|
version: '0'
|
|
88
88
|
requirements: []
|
|
89
|
-
rubygems_version:
|
|
89
|
+
rubygems_version: 3.6.9
|
|
90
90
|
specification_version: 4
|
|
91
91
|
summary: 'DeployAngel agent for Rails: production verification for every deployment.'
|
|
92
92
|
test_files: []
|