Class: Luciq::Commands::Query
- Inherits:
-
Object
- Object
- Luciq::Commands::Query
show all
- Includes:
- QueryArguments
- Defined in:
- lib/luciq/commands/query.rb
Overview
Read/query commands. Each public method maps one-to-one to an MCP tool:
it builds that tool's arguments from typed CLI flags (see QueryArguments)
and proxies to the MCP server's CLI endpoint.
Constant Summary
Luciq::Commands::QueryArguments::BUG_PRIORITY_IDS, Luciq::Commands::QueryArguments::BUG_STATUS_IDS, Luciq::Commands::QueryArguments::CRASH_STATUS_IDS
Instance Method Summary
collapse
Constructor Details
#initialize(options = {}) ⇒ Query
Returns a new instance of Query.
16
17
18
19
|
# File 'lib/luciq/commands/query.rb', line 16
def initialize(options = {})
@options = options
@client = API::Client.new
end
|
Instance Method Details
#alert_create ⇒ Object
175
176
177
|
# File 'lib/luciq/commands/query.rb', line 175
def alert_create
execute('write_alerts') { alert_payload.merge(base_args).merge(action: 'create') }
end
|
#alert_delete(ulid) ⇒ Object
183
184
185
|
# File 'lib/luciq/commands/query.rb', line 183
def alert_delete(ulid)
execute('write_alerts') { base_args.merge(action: 'delete', ulid: ulid) }
end
|
#alert_show(ulid) ⇒ Object
167
168
169
|
# File 'lib/luciq/commands/query.rb', line 167
def alert_show(ulid)
execute('read_alerts') { base_args.merge(action: 'details', ulid: ulid) }
end
|
#alert_update(ulid) ⇒ Object
179
180
181
|
# File 'lib/luciq/commands/query.rb', line 179
def alert_update(ulid)
execute('write_alerts') { alert_payload.merge(base_args).merge(action: 'update', ulid: ulid) }
end
|
#alerts_init ⇒ Object
171
172
173
|
# File 'lib/luciq/commands/query.rb', line 171
def alerts_init
execute('read_alerts') { base_args.merge(action: 'init') }
end
|
#alerts_list ⇒ Object
--- Alerts (rules) ----------------------------------------------------
163
164
165
|
# File 'lib/luciq/commands/query.rb', line 163
def alerts_list
execute('read_alerts') { base_args.merge(action: 'list').merge(sort_dir_args) }
end
|
#apm_funnel_create ⇒ Object
101
102
103
104
105
|
# File 'lib/luciq/commands/query.rb', line 101
def apm_funnel_create
execute('apm_funnel_write') do
base_args.merge(operation: 'create', name: @options[:name]).merge(json_arg(:events, @options[:events]))
end
end
|
#apm_funnel_delete ⇒ Object
114
115
116
|
# File 'lib/luciq/commands/query.rb', line 114
def apm_funnel_delete
execute('apm_funnel_write') { base_args.merge(operation: 'delete', ulid: @options[:ulid]) }
end
|
#apm_funnel_events ⇒ Object
96
97
98
99
|
# File 'lib/luciq/commands/query.rb', line 96
def apm_funnel_events
params = { event_type: @options[:event_type], q: @options[:q], limit: @options[:limit] }.compact
execute('apm_funnel_events') { base_args.merge(params) }
end
|
#apm_funnel_update ⇒ Object
107
108
109
110
111
112
|
# File 'lib/luciq/commands/query.rb', line 107
def apm_funnel_update
changes = { ulid: @options[:ulid], name: @options[:name] }.compact
execute('apm_funnel_write') do
base_args.merge(operation: 'update').merge(changes, json_arg(:events, @options[:events]))
end
end
|
#apm_group ⇒ Object
78
79
80
81
82
83
84
85
|
# File 'lib/luciq/commands/query.rb', line 78
def apm_group
group = { metric: @options[:metric], group_uuid: @options[:group_uuid],
group_url: @options[:group_url], method: @options[:method] }.compact
views = @options[:views] ? json_arg(:views, @options[:views]) : { views: ['summary'] }
execute('apm_group_view') do
base_args.merge(group).merge(views, filters_arg(raw_filters))
end
end
|
#apm_groups ⇒ Object
--- APM ---------------------------------------------------------------
71
72
73
74
75
76
|
# File 'lib/luciq/commands/query.rb', line 71
def apm_groups
execute('apm_list_groups') do
base_args.merge({ metric: @options[:metric] }.compact, page_args)
.merge(apm_sort_arg, filters_arg(raw_filters))
end
end
|
#apm_occurrence ⇒ Object
87
88
89
90
91
92
93
94
|
# File 'lib/luciq/commands/query.rb', line 87
def apm_occurrence
selector = { metric: @options[:metric], selector: @options[:selector],
group_uuid: @options[:group_uuid], group_url: @options[:group_url],
method: @options[:method], token: @options[:token],
current_token: @options[:current_token],
direction: @options[:direction], limit: @options[:limit] }.compact
execute('apm_occurrence') { base_args.merge(selector).merge(filters_arg(raw_filters)) }
end
|
#app_hangs ⇒ Object
42
43
44
|
# File 'lib/luciq/commands/query.rb', line 42
def app_hangs
execute('list_app_hangs') { base_args.merge(page_args, sort_args, filters_arg(hang_filters)) }
end
|
#apps_list ⇒ Object
--- Applications & health --------------------------------------------
136
137
138
|
# File 'lib/luciq/commands/query.rb', line 136
def apps_list
execute('list_applications') { page_args.merge({ platform: @options[:platform] }.compact) }
end
|
#bug_show(number) ⇒ Object
62
63
64
|
# File 'lib/luciq/commands/query.rb', line 62
def bug_show(number)
execute('bug_details') { base_args.merge(number: number) }
end
|
#bug_update(number) ⇒ Object
66
67
68
|
# File 'lib/luciq/commands/query.rb', line 66
def bug_update(number)
execute('update_bug') { base_args.merge(number: number).merge(bug_update_changes) }
end
|
#bugs_list ⇒ Object
--- Bugs --------------------------------------------------------------
58
59
60
|
# File 'lib/luciq/commands/query.rb', line 58
def bugs_list
execute('list_bugs') { base_args.merge(page_args, sort_args, filters_arg(bug_filters)) }
end
|
#crash_diagnostics(number) ⇒ Object
38
39
40
|
# File 'lib/luciq/commands/query.rb', line 38
def crash_diagnostics(number)
execute('crash_diagnostics') { base_args.merge(number: number) }
end
|
#crash_patterns(number) ⇒ Object
30
31
32
33
34
35
36
|
# File 'lib/luciq/commands/query.rb', line 30
def crash_patterns(number)
pattern = { pattern_key: @options[:pattern_key], sort_by: @options[:sort_by],
direction: @options[:direction] }.compact
execute('crash_patterns') do
base_args.merge(number: number).merge(pattern).merge(filters_arg(raw_filters))
end
end
|
#crash_show(number) ⇒ Object
26
27
28
|
# File 'lib/luciq/commands/query.rb', line 26
def crash_show(number)
execute('crash_details') { base_args.merge(number: number) }
end
|
#crashes_list ⇒ Object
--- Crashes -----------------------------------------------------------
22
23
24
|
# File 'lib/luciq/commands/query.rb', line 22
def crashes_list
execute('list_crashes') { base_args.merge(page_args, sort_args, filters_arg(crash_filters)) }
end
|
#incident_reopen(ulid) ⇒ Object
202
203
204
|
# File 'lib/luciq/commands/query.rb', line 202
def incident_reopen(ulid)
execute('write_incidents') { base_args.merge(action: 'reopen', ulid: ulid) }
end
|
#incident_resolve(ulid) ⇒ Object
198
199
200
|
# File 'lib/luciq/commands/query.rb', line 198
def incident_resolve(ulid)
execute('write_incidents') { base_args.merge(action: 'resolve', ulid: ulid) }
end
|
#incident_show(ulid) ⇒ Object
194
195
196
|
# File 'lib/luciq/commands/query.rb', line 194
def incident_show(ulid)
execute('read_incidents') { base_args.merge(action: 'details', ulid: ulid) }
end
|
#incidents_list ⇒ Object
--- Incidents (triggered alerts) --------------------------------------
188
189
190
191
192
|
# File 'lib/luciq/commands/query.rb', line 188
def incidents_list
execute('read_incidents') do
base_args.merge(action: 'list').merge(page_args, sort_dir_args, filters_arg(incident_filters))
end
end
|
#insights ⇒ Object
140
141
142
|
# File 'lib/luciq/commands/query.rb', line 140
def insights
execute('app_insights') { base_args.merge(filters_arg(raw_filters)) }
end
|
#issues_list ⇒ Object
--- Issues ------------------------------------------------------------
145
146
147
148
149
150
151
|
# File 'lib/luciq/commands/query.rb', line 145
def issues_list
top = { top_issues: @options[:top_issues] }.compact
execute('list_issues') do
base_args.merge({ limit: @options[:limit] }.compact, sort_dir_args, top)
.merge(json_arg(:pagination, @options[:pagination]), filters_arg(raw_filters))
end
end
|
#occurrence_details(number, ulid) ⇒ Object
53
54
55
|
# File 'lib/luciq/commands/query.rb', line 53
def occurrence_details(number, ulid)
execute('get_occurrence_details') { base_args.merge(number: number, ulid: ulid) }
end
|
#occurrence_tokens(number) ⇒ Object
46
47
48
49
50
51
|
# File 'lib/luciq/commands/query.rb', line 46
def occurrence_tokens(number)
cursor = { current_token: @options[:current_token], direction: @options[:direction] }.compact
execute('list_occurrences_tokens') do
base_args.merge(number: number).merge(cursor).merge(filters_arg(raw_filters))
end
end
|
#opportunities_list ⇒ Object
--- Opportunities -----------------------------------------------------
154
155
156
|
# File 'lib/luciq/commands/query.rb', line 154
def opportunities_list
execute('list_opportunities') { base_args.merge(page_args, filters_arg(opportunity_filters)) }
end
|
#opportunity_show(id) ⇒ Object
158
159
160
|
# File 'lib/luciq/commands/query.rb', line 158
def opportunity_show(id)
execute('opportunity_details') { base_args.merge(id: id) }
end
|
#reviews_list ⇒ Object
--- Reviews -----------------------------------------------------------
119
120
121
122
123
|
# File 'lib/luciq/commands/query.rb', line 119
def reviews_list
execute('list_reviews') do
base_args.merge(page_args, sort_dir_args).merge(filters_arg(review_filters))
end
end
|
#survey_show(id) ⇒ Object
130
131
132
133
|
# File 'lib/luciq/commands/query.rb', line 130
def survey_show(id)
page = { page: @options[:page] }.compact
execute('survey_details') { base_args.merge(id: id).merge(page, filters_arg(raw_filters)) }
end
|
#surveys_list ⇒ Object
--- Surveys -----------------------------------------------------------
126
127
128
|
# File 'lib/luciq/commands/query.rb', line 126
def surveys_list
execute('list_surveys') { base_args.merge(page_args, filters_arg(survey_filters)) }
end
|