deployangel 0.1.30 → 0.1.32
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 +14 -0
- data/lib/deployangel/cli.rb +21 -3
- data/lib/deployangel/mcp.rb +6 -1
- data/lib/deployangel/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dc0a725bbc0873d53b333299c0c32268c446967c0b6a96ae75ccd1f2776e212b
|
|
4
|
+
data.tar.gz: 50b6bac465113797a4071eaae246a654e10d58e2d635cd0ad65b7c23ad1aafb3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9f5fa19a8047154de5c567a974c2066209c00946b9bc070a400903f33c8c69f182242bdc8f226ddcf140ab07e5a96c7a947346c65d3d2e047986225bdc3ab857
|
|
7
|
+
data.tar.gz: 17b73eb7db55b615df009cd4632bbf2f7833f5713096896d4a15505837acd3038ede32297eb5f8da40b1a72e6f140d38850db32bdece8d9d87d94ef6aa55c679
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.32 (2026-10-21)
|
|
4
|
+
|
|
5
|
+
- `deployangel mcp` starts without an API token. Each tool then answers with
|
|
6
|
+
how to set `DEPLOYANGEL_API_TOKEN` (or run `deployangel setup`), instead of
|
|
7
|
+
the server failing to start, which many coding agents only report as
|
|
8
|
+
"failed to start".
|
|
9
|
+
|
|
10
|
+
## 0.1.31 (2026-10-21)
|
|
11
|
+
|
|
12
|
+
- The instructions `deployangel install agents` writes to `AGENTS.md` now tell
|
|
13
|
+
coding agents to check recent releases and late regressions at the start
|
|
14
|
+
of a session, and to read `fix_check` in the verdict after deploying a fix
|
|
15
|
+
for a failed release. Run it again to update them.
|
|
16
|
+
|
|
3
17
|
## 0.1.30 (2026-10-16)
|
|
4
18
|
|
|
5
19
|
- Hanami 2.2 or later: `require "deployangel/hanami"` and
|
data/lib/deployangel/cli.rb
CHANGED
|
@@ -121,6 +121,13 @@ module DeployAngel
|
|
|
121
121
|
coverage and a full baseline), so don't call a medium clearance weak.
|
|
122
122
|
Warnings (`suspicious: true`) aren't failures: report them as "watching
|
|
123
123
|
closely:" and the `watching_closely` items, never as "suspicious".
|
|
124
|
+
- After deploying a fix for a failed release, read `fix_check` in the verdict
|
|
125
|
+
(`--format=json` with the CLI): `fixed` means every earlier problem is
|
|
126
|
+
healthy again. Otherwise report what's still happening or not confirmed yet.
|
|
127
|
+
- At the start of a session, before changing code: call `list_deployments`
|
|
128
|
+
and `list_late_regressions` (or run `bundle exec deployangel status`). If a
|
|
129
|
+
recent release failed, isn't cleared yet, or has a late regression, mention
|
|
130
|
+
it before other work.
|
|
124
131
|
#{AGENTS_END}
|
|
125
132
|
MARKDOWN
|
|
126
133
|
|
|
@@ -548,10 +555,18 @@ module DeployAngel
|
|
|
548
555
|
lines.join
|
|
549
556
|
end
|
|
550
557
|
|
|
558
|
+
# Without a token the server still starts, and each tool says how to set
|
|
559
|
+
# one: many agents only report a server that won't start as "failed to
|
|
560
|
+
# start", with no reason.
|
|
551
561
|
def mcp
|
|
552
562
|
require_relative "mcp"
|
|
563
|
+
token_missing = @client.nil? && api_token.to_s.empty?
|
|
564
|
+
if token_missing
|
|
565
|
+
@stderr.puts("deployangel mcp: no API token yet; each tool will say how to set one.")
|
|
566
|
+
@client = Client.new(token: nil, endpoint: endpoint, require_token: false)
|
|
567
|
+
end
|
|
553
568
|
MCP::Server.new(client: client, input: @stdin, output: @stdout, error_output: @stderr,
|
|
554
|
-
sleeper: @sleeper, clock: @clock, git_head: method(:git_head)).run
|
|
569
|
+
sleeper: @sleeper, clock: @clock, git_head: method(:git_head), token_missing: token_missing).run
|
|
555
570
|
0
|
|
556
571
|
end
|
|
557
572
|
|
|
@@ -601,8 +616,11 @@ module DeployAngel
|
|
|
601
616
|
|
|
602
617
|
# DEPLOYANGEL_API_TOKEN, else the token `deployangel setup` saved here.
|
|
603
618
|
def client
|
|
604
|
-
|
|
605
|
-
|
|
619
|
+
@client ||= Client.new(token: api_token, endpoint: endpoint)
|
|
620
|
+
end
|
|
621
|
+
|
|
622
|
+
def api_token
|
|
623
|
+
@env["DEPLOYANGEL_API_TOKEN"].to_s.empty? ? saved_credentials["api_token"] : @env["DEPLOYANGEL_API_TOKEN"]
|
|
606
624
|
end
|
|
607
625
|
|
|
608
626
|
def endpoint
|
data/lib/deployangel/mcp.rb
CHANGED
|
@@ -39,11 +39,14 @@ module DeployAngel
|
|
|
39
39
|
"latest" => { "type" => "boolean", "description" => "Use the most recent deployment." }
|
|
40
40
|
}.freeze
|
|
41
41
|
|
|
42
|
+
MISSING_TOKEN = "DeployAngel has no API token yet. Set DEPLOYANGEL_API_TOKEN to a \"CLI & coding agents\" token " \
|
|
43
|
+
"from your app's Settings in DeployAngel, or run `deployangel setup` in the project, then restart this MCP server."
|
|
42
44
|
ERROR_CODES = { parse: -32_700, invalid: -32_600, method: -32_601, params: -32_602, internal: -32_603 }.freeze
|
|
43
45
|
|
|
44
46
|
def initialize(client:, input: $stdin, output: $stdout, error_output: $stderr,
|
|
45
|
-
sleeper: ->(seconds) { sleep(seconds) }, clock: -> { Time.now }, git_head: -> {})
|
|
47
|
+
sleeper: ->(seconds) { sleep(seconds) }, clock: -> { Time.now }, git_head: -> {}, token_missing: false)
|
|
46
48
|
@client = client
|
|
49
|
+
@token_missing = token_missing
|
|
47
50
|
@input = input
|
|
48
51
|
@output = output
|
|
49
52
|
@error_output = error_output
|
|
@@ -138,6 +141,8 @@ module DeployAngel
|
|
|
138
141
|
end
|
|
139
142
|
|
|
140
143
|
def call_tool(name, arguments)
|
|
144
|
+
return { "content" => [ { "type" => "text", "text" => MISSING_TOKEN } ], "isError" => true } if @token_missing
|
|
145
|
+
|
|
141
146
|
content =
|
|
142
147
|
case name
|
|
143
148
|
when "get_verification" then waiter.wait(target(arguments), wait: false).then { |o| verification_content(o) }
|
data/lib/deployangel/version.rb
CHANGED