You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(elasticsearch): per-service Cloud ID ports, date math, and three declared-shape defects
Cloud ID: every component of a decoded Cloud ID may carry its own port, and the
ES UUID's port overrides the parent DN's. We used parts[1] raw, so a Cloud ID
of that form produced https://uuid:9244.host:9243 -- an invalid URL that fetch
rejects with no actionable message. Elastic's own beats fixtures pin all three
directions, including that Kibana's port never affects the ES origin.
get_index: the target accepts wildcards and comma-separated lists, returning
one key per resolved index. Keeping Object.keys(data)[0] silently discarded
every other index. Now also emits the full keyed map and a matched count, so
data_stream and lifecycle survive too.
index names: rejecting a slash broke Elastic's documented date-math form
<logstash-{now/d}>. An index name cannot contain a literal slash, so the
rejection protected nothing -- and an encoded slash is inert, because the URL
parser does not treat %2F as a separator, unlike %2e which it decodes and
removes. A local helper drops only the separator check; documentId stays on the
strict shared guard.
esTimeout: the unit coercion lived only in the block, and Copilot calls
executeAppTool without ever running tools.config.params -- so a model sending
"30" hit ES with a unitless duration and got a 400. Normalization now lives in
the tool and the block calls the same helper.
aggregations was declared as an output on both tool and block but no aggs param
exists, so it could never be populated. Removed, and the size:0 rationale
corrected -- it asks for hits.total without materializing documents, which is
not the aggregations idiom.
@@ -616,12 +618,12 @@ Return ONLY valid JSON - no explanations, no markdown code blocks.`,
616
618
result: {
617
619
type: 'string',
618
620
description:
619
-
'Operation result (created, updated, deleted, or noop). A missing document fails the call with a 404 error rather than returning "not_found".',
621
+
'Operation result (created, updated, deleted, or noop). On the single-document operations a missing document fails the call with a 404 rather than returning "not_found"; Bulk Operations instead reports a per-item "not_found" inside a successful response, under items.',
620
622
},
621
623
found: {
622
624
type: 'boolean',
623
625
description:
624
-
'Always true. A missing document fails the call with a 404 error rather than returning found: false.',
626
+
'Always true on Get Document — a missing document fails the call with a 404 rather than returning found: false.',
625
627
},
626
628
// Bulk outputs
627
629
errors: {type: 'boolean',description: 'Whether any errors occurred'},
@@ -631,14 +633,22 @@ Return ONLY valid JSON - no explanations, no markdown code blocks.`,
631
633
// Index outputs
632
634
acknowledged: {type: 'boolean',description: 'Whether operation was acknowledged'},
'Every index the operation returned: the array of index rows from List Indices, the per-index map from Get Index (each entry carrying its aliases, mappings, settings, and any data_stream or lifecycle), or the cluster index statistics from Cluster Stats.',
'Elasticsearch wait timeout as a duration string (e.g., 30s, 1m). Named esTimeout because the executor reserves "timeout" for the transport deadline in milliseconds.',
68
+
'Elasticsearch wait timeout as a duration string (e.g., 30s, 1m). A bare number is read as seconds. Named esTimeout because the executor reserves "timeout" for the transport deadline in milliseconds.',
description: 'Retrieve index information including settings, mappings, and aliases.',
13
+
description:
14
+
'Retrieve index information including settings, mappings, and aliases. Accepts a comma-separated list of indices, data streams, and aliases, and supports wildcards.',
'Every matched index keyed by its resolved name, each with its aliases, mappings, settings, and any data_stream or lifecycle. Populated for single- and multi-target requests alike.',
130
+
},
131
+
matchedCount: {
132
+
type: 'number',
133
+
description: 'How many indices, data streams, or aliases the target matched',
0 commit comments