ask-ruby-harness 0.3.5 → 0.3.7
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/README.md +1 -0
- data/lib/ask/ruby/harness/tools/dev_url.rb +94 -0
- data/lib/ask/ruby/harness/version.rb +1 -1
- data/lib/ask/ruby/harness.rb +3 -1
- data/lib/ask-ruby-harness.rb +3 -0
- metadata +7 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b8aed042cba86d2de8535475395a3135ae00d00f76ec0165e3a6eec6421191f9
|
|
4
|
+
data.tar.gz: f470f53caf43c81b322b90d6956429b81b3fecb3a36bf44a2e5c88e29a22d4f2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fa1cd1722d3ca0f038cf9b4826658d81947277ef13fdd5fd4e31f40a7eb3db43943a072d882e6e6c714837f057135b79cc8a28137d293207bd8763602e2b2930
|
|
7
|
+
data.tar.gz: aac8c7e02b2cbda67a88fde376d753f23d792213fb80f9741a236783d0d88e15595c3ef37140b1a080120d203f92b1d0270280510dd85194313fd9825dd8053a
|
data/README.md
CHANGED
|
@@ -14,6 +14,7 @@ access for coding agents. The language edition of the ask-rb harness family
|
|
|
14
14
|
| `RunCommand` | Run shell commands in the project root, gated by permission rules |
|
|
15
15
|
| `SchemaGraph` | Full schema introspection: models, tables, columns, associations |
|
|
16
16
|
| `RunTests` | Structured test results with failure reruns (rails test / rspec / rake test) |
|
|
17
|
+
| `DevUrl` | ask-local dev URLs: list active routes, resolve a service name to its stable .localhost URL |
|
|
17
18
|
|
|
18
19
|
Generic file and search capabilities (read, grep, edit) are provided by the
|
|
19
20
|
agent's native tools; the harness focuses on what only an app-aware layer
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Ask
|
|
4
|
+
module Ruby
|
|
5
|
+
module Harness
|
|
6
|
+
module Tools
|
|
7
|
+
# Structured access to ask-local's stable dev URLs: active routes,
|
|
8
|
+
# plus name -> URL resolution that inherits the current directory's
|
|
9
|
+
# variant context. Replaces scraping ports out of logs.
|
|
10
|
+
#
|
|
11
|
+
# ask-local is an optional dependency: the tool degrades to a clear
|
|
12
|
+
# failure result when the gem is absent so harness hosts without it
|
|
13
|
+
# lose nothing.
|
|
14
|
+
class DevUrl < Ask::Ruby::Harness::Tool
|
|
15
|
+
description "List ask-local dev-server routes and resolve stable " \
|
|
16
|
+
".localhost URLs. Use instead of guessing ports: " \
|
|
17
|
+
"'list' shows every active route with its URL and " \
|
|
18
|
+
"backend; 'get' resolves a service name to its URL " \
|
|
19
|
+
"(inheriting the current worktree/variant context)."
|
|
20
|
+
|
|
21
|
+
param :action, type: :string, desc: "list (default) or get", required: false
|
|
22
|
+
param :name, type: :string, desc: "Service name for get (e.g. backend)", required: false
|
|
23
|
+
|
|
24
|
+
def execute(action: "list", name: nil)
|
|
25
|
+
unless defined?(Ask::Local)
|
|
26
|
+
begin
|
|
27
|
+
require "ask-local"
|
|
28
|
+
rescue LoadError
|
|
29
|
+
return Ask::Result.failure(
|
|
30
|
+
"ask-local is not installed. Add `gem \"ask-local\"` to the Gemfile " \
|
|
31
|
+
"for stable .localhost dev URLs."
|
|
32
|
+
)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
case action
|
|
37
|
+
when "get" then get(name)
|
|
38
|
+
when "list" then list
|
|
39
|
+
else Ask::Result.failure("Unknown action #{action.inspect}. Use 'list' or 'get'.")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def list
|
|
46
|
+
store = Ask::Local::RouteStore.new(Ask::Local::Certs.state_dir)
|
|
47
|
+
routes = store.load_routes
|
|
48
|
+
port = Ask::Local::ProxyControl.proxy_port(store)
|
|
49
|
+
tls = Ask::Local::ProxyControl.proxy_tls(store)
|
|
50
|
+
entries = routes.map do |route|
|
|
51
|
+
{
|
|
52
|
+
hostname: route["hostname"],
|
|
53
|
+
url: Ask::Local::Hostname.url(route["hostname"], port: port, tls: tls),
|
|
54
|
+
target: route["target"],
|
|
55
|
+
kind: route["kind"],
|
|
56
|
+
supervised: !route["spec"].nil?,
|
|
57
|
+
pid: route["pid"]
|
|
58
|
+
}
|
|
59
|
+
end
|
|
60
|
+
{ routes: entries, proxy_port: port, count: entries.length }
|
|
61
|
+
rescue Ask::Local::Error => e
|
|
62
|
+
Ask::Result.failure(e.message)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def get(name)
|
|
66
|
+
return Ask::Result.failure("Name is required for action 'get'.") if name.nil? || name.to_s.strip.empty?
|
|
67
|
+
|
|
68
|
+
resolved = Ask::Local::Resolver.resolve(
|
|
69
|
+
app_root.to_s, use_branch: false
|
|
70
|
+
)
|
|
71
|
+
hostnames = Ask::Local::Hostname.build(
|
|
72
|
+
app: Ask::Local::Sanitize.hostname_label(name),
|
|
73
|
+
variant: resolved.variant,
|
|
74
|
+
tlds: resolved.tlds
|
|
75
|
+
)
|
|
76
|
+
store = Ask::Local::RouteStore.new(Ask::Local::Certs.state_dir)
|
|
77
|
+
port = Ask::Local::ProxyControl.proxy_port(store)
|
|
78
|
+
tls = Ask::Local::ProxyControl.proxy_tls(store)
|
|
79
|
+
url = Ask::Local::Hostname.url(hostnames.first, port: port, tls: tls)
|
|
80
|
+
{
|
|
81
|
+
name: name,
|
|
82
|
+
url: url,
|
|
83
|
+
variant: resolved.variant,
|
|
84
|
+
tlds: resolved.tlds,
|
|
85
|
+
registered: !store.find(hostnames.first).nil?
|
|
86
|
+
}
|
|
87
|
+
rescue Ask::Local::Error => e
|
|
88
|
+
Ask::Result.failure(e.message)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
data/lib/ask/ruby/harness.rb
CHANGED
|
@@ -274,10 +274,12 @@ require_relative "harness/tools/read_model"
|
|
|
274
274
|
require_relative "harness/tools/read_log"
|
|
275
275
|
require_relative "harness/tools/schema_graph"
|
|
276
276
|
require_relative "harness/tools/run_tests"
|
|
277
|
+
require_relative "harness/tools/dev_url"
|
|
277
278
|
|
|
278
279
|
# Define after all tool files are loaded so the constants resolve
|
|
279
280
|
Ask::Ruby::Harness::HARNESS_TOOLS = [
|
|
280
281
|
Ask::Ruby::Harness::Tools::RunCommand, Ask::Ruby::Harness::Tools::QueryDatabase,
|
|
281
282
|
Ask::Ruby::Harness::Tools::ReadModel, Ask::Ruby::Harness::Tools::ReadLog,
|
|
282
|
-
Ask::Ruby::Harness::Tools::SchemaGraph, Ask::Ruby::Harness::Tools::RunTests
|
|
283
|
+
Ask::Ruby::Harness::Tools::SchemaGraph, Ask::Ruby::Harness::Tools::RunTests,
|
|
284
|
+
Ask::Ruby::Harness::Tools::DevUrl
|
|
283
285
|
].freeze
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ask-ruby-harness
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kaka Ruto
|
|
@@ -43,28 +43,28 @@ dependencies:
|
|
|
43
43
|
requirements:
|
|
44
44
|
- - ">="
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version:
|
|
46
|
+
version: 0.6.1
|
|
47
47
|
type: :runtime
|
|
48
48
|
prerelease: false
|
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
50
|
requirements:
|
|
51
51
|
- - ">="
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
|
-
version:
|
|
53
|
+
version: 0.6.1
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
55
|
name: ask-agent
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
58
|
- - ">="
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: 0.40.
|
|
60
|
+
version: 0.40.10
|
|
61
61
|
type: :runtime
|
|
62
62
|
prerelease: false
|
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
65
|
- - ">="
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: 0.40.
|
|
67
|
+
version: 0.40.10
|
|
68
68
|
- !ruby/object:Gem::Dependency
|
|
69
69
|
name: sqlite3
|
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -135,12 +135,14 @@ files:
|
|
|
135
135
|
- CHANGELOG.md
|
|
136
136
|
- LICENSE
|
|
137
137
|
- README.md
|
|
138
|
+
- lib/ask-ruby-harness.rb
|
|
138
139
|
- lib/ask/ruby/harness.rb
|
|
139
140
|
- lib/ask/ruby/harness/audit_log.rb
|
|
140
141
|
- lib/ask/ruby/harness/configuration.rb
|
|
141
142
|
- lib/ask/ruby/harness/environment_permissions.rb
|
|
142
143
|
- lib/ask/ruby/harness/minitest_json_reporter.rb
|
|
143
144
|
- lib/ask/ruby/harness/tool.rb
|
|
145
|
+
- lib/ask/ruby/harness/tools/dev_url.rb
|
|
144
146
|
- lib/ask/ruby/harness/tools/query_database.rb
|
|
145
147
|
- lib/ask/ruby/harness/tools/read_log.rb
|
|
146
148
|
- lib/ask/ruby/harness/tools/read_model.rb
|