@rnsk/toolkits 0.0.10 → 0.0.11
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.
- package/README.md +12 -2
- package/dist/index.d.ts +11 -1
- package/dist/index.js +21 -1
- package/dist/toolkits/bitbucket/tools/index.d.ts +5 -5
- package/dist/toolkits/bitbucket/tools/reports.d.ts +5 -5
- package/dist/toolkits/cloudflare/tools/create-list.d.ts +1 -1
- package/dist/toolkits/cloudflare/tools/create-zone.d.ts +1 -1
- package/dist/toolkits/cloudflare/tools/index.d.ts +4 -4
- package/dist/toolkits/cloudflare/tools/list-pools.d.ts +1 -1
- package/dist/toolkits/cloudflare/tools/list-zones.d.ts +1 -1
- package/dist/toolkits/convex/icon.d.ts +5 -0
- package/dist/toolkits/convex/icon.js +10 -0
- package/dist/toolkits/convex/manifest.d.ts +3 -0
- package/dist/toolkits/convex/manifest.js +33 -0
- package/dist/toolkits/convex/tools/client.d.ts +28 -0
- package/dist/toolkits/convex/tools/client.js +85 -0
- package/dist/toolkits/convex/tools/deploy-keys.d.ts +10 -0
- package/dist/toolkits/convex/tools/deploy-keys.js +46 -0
- package/dist/toolkits/convex/tools/deployments.d.ts +35 -0
- package/dist/toolkits/convex/tools/deployments.js +126 -0
- package/dist/toolkits/convex/tools/domains.d.ts +7 -0
- package/dist/toolkits/convex/tools/domains.js +29 -0
- package/dist/toolkits/convex/tools/functions.d.ts +14 -0
- package/dist/toolkits/convex/tools/functions.js +49 -0
- package/dist/toolkits/convex/tools/index.d.ts +176 -0
- package/dist/toolkits/convex/tools/index.js +145 -0
- package/dist/toolkits/convex/tools/logging.d.ts +5 -0
- package/dist/toolkits/convex/tools/logging.js +25 -0
- package/dist/toolkits/convex/tools/projects.d.ts +31 -0
- package/dist/toolkits/convex/tools/projects.js +111 -0
- package/dist/toolkits/convex/tools/teams.d.ts +12 -0
- package/dist/toolkits/convex/tools/teams.js +62 -0
- package/dist/toolkits/datadog/icon.d.ts +5 -0
- package/dist/toolkits/datadog/icon.js +6 -0
- package/dist/toolkits/datadog/manifest.d.ts +3 -0
- package/dist/toolkits/datadog/manifest.js +44 -0
- package/dist/toolkits/datadog/tools/api-keys.d.ts +21 -0
- package/dist/toolkits/datadog/tools/api-keys.js +42 -0
- package/dist/toolkits/datadog/tools/apm.d.ts +51 -0
- package/dist/toolkits/datadog/tools/apm.js +106 -0
- package/dist/toolkits/datadog/tools/client.d.ts +19 -0
- package/dist/toolkits/datadog/tools/client.js +81 -0
- package/dist/toolkits/datadog/tools/dashboards.d.ts +93 -0
- package/dist/toolkits/datadog/tools/dashboards.js +127 -0
- package/dist/toolkits/datadog/tools/events.d.ts +35 -0
- package/dist/toolkits/datadog/tools/events.js +56 -0
- package/dist/toolkits/datadog/tools/hosts.d.ts +49 -0
- package/dist/toolkits/datadog/tools/hosts.js +87 -0
- package/dist/toolkits/datadog/tools/incidents.d.ts +18 -0
- package/dist/toolkits/datadog/tools/incidents.js +34 -0
- package/dist/toolkits/datadog/tools/index.d.ts +999 -0
- package/dist/toolkits/datadog/tools/index.js +450 -0
- package/dist/toolkits/datadog/tools/integrations.d.ts +32 -0
- package/dist/toolkits/datadog/tools/integrations.js +47 -0
- package/dist/toolkits/datadog/tools/logs.d.ts +39 -0
- package/dist/toolkits/datadog/tools/logs.js +121 -0
- package/dist/toolkits/datadog/tools/metrics.d.ts +27 -0
- package/dist/toolkits/datadog/tools/metrics.js +83 -0
- package/dist/toolkits/datadog/tools/monitors.d.ts +95 -0
- package/dist/toolkits/datadog/tools/monitors.js +190 -0
- package/dist/toolkits/datadog/tools/oncall-notifications.d.ts +61 -0
- package/dist/toolkits/datadog/tools/oncall-notifications.js +155 -0
- package/dist/toolkits/datadog/tools/oncall-policies.d.ts +28 -0
- package/dist/toolkits/datadog/tools/oncall-policies.js +72 -0
- package/dist/toolkits/datadog/tools/oncall-schedules.d.ts +31 -0
- package/dist/toolkits/datadog/tools/oncall-schedules.js +87 -0
- package/dist/toolkits/datadog/tools/oncall-teams.d.ts +14 -0
- package/dist/toolkits/datadog/tools/oncall-teams.js +54 -0
- package/dist/toolkits/datadog/tools/slos.d.ts +43 -0
- package/dist/toolkits/datadog/tools/slos.js +62 -0
- package/dist/toolkits/datadog/tools/synthetics.d.ts +58 -0
- package/dist/toolkits/datadog/tools/synthetics.js +90 -0
- package/dist/toolkits/datadog/tools/usage.d.ts +7 -0
- package/dist/toolkits/datadog/tools/usage.js +25 -0
- package/dist/toolkits/datadog/tools/users.d.ts +35 -0
- package/dist/toolkits/datadog/tools/users.js +66 -0
- package/dist/toolkits/dev-to/icon.d.ts +5 -0
- package/dist/toolkits/dev-to/icon.js +10 -0
- package/dist/toolkits/dev-to/manifest.d.ts +3 -0
- package/dist/toolkits/dev-to/manifest.js +34 -0
- package/dist/toolkits/dev-to/tools/articles.d.ts +78 -0
- package/dist/toolkits/dev-to/tools/articles.js +262 -0
- package/dist/toolkits/dev-to/tools/client.d.ts +25 -0
- package/dist/toolkits/dev-to/tools/client.js +65 -0
- package/dist/toolkits/dev-to/tools/community.d.ts +61 -0
- package/dist/toolkits/dev-to/tools/community.js +244 -0
- package/dist/toolkits/dev-to/tools/index.d.ts +202 -0
- package/dist/toolkits/dev-to/tools/index.js +37 -0
- package/dist/toolkits/dev-to/tools/listings.d.ts +26 -0
- package/dist/toolkits/dev-to/tools/listings.js +92 -0
- package/dist/toolkits/discord/tools/applications.d.ts +5 -5
- package/dist/toolkits/discord/tools/index.d.ts +5 -5
- package/dist/toolkits/figma/tools/create-modify-delete-variables.d.ts +1 -1
- package/dist/toolkits/figma/tools/get-file-nodes.d.ts +1 -1
- package/dist/toolkits/figma/tools/index.d.ts +3 -3
- package/dist/toolkits/figma/tools/render-images-of-file-nodes.d.ts +1 -1
- package/dist/toolkits/google-analytics/tools/reports.d.ts +9 -9
- package/dist/toolkits/google-classroom/tools/index.d.ts +7 -7
- package/dist/toolkits/google-classroom/tools/invitations.d.ts +2 -2
- package/dist/toolkits/google-classroom/tools/misc.d.ts +1 -1
- package/dist/toolkits/google-classroom/tools/roster.d.ts +5 -5
- package/dist/toolkits/google-search-console/tools/index.d.ts +2 -2
- package/dist/toolkits/google-search-console/tools/search-analytics-query.d.ts +2 -2
- package/dist/toolkits/hostinger/tools/index.d.ts +1 -1
- package/dist/toolkits/hostinger/tools/whois.d.ts +1 -1
- package/dist/toolkits/hugging-face/tools/datasets-viewer.d.ts +1 -1
- package/dist/toolkits/hugging-face/tools/datasets.d.ts +1 -1
- package/dist/toolkits/hugging-face/tools/index.d.ts +1 -1
- package/dist/toolkits/hugging-face/tools/models.d.ts +1 -1
- package/dist/toolkits/hugging-face/tools/repos.d.ts +1 -1
- package/dist/toolkits/hugging-face/tools/spaces.d.ts +1 -1
- package/dist/toolkits/jira/tools/index.d.ts +4 -4
- package/dist/toolkits/jira/tools/meta.d.ts +2 -2
- package/dist/toolkits/jira/tools/users.d.ts +3 -3
- package/dist/toolkits/kaggle/icon.d.ts +5 -0
- package/dist/toolkits/kaggle/icon.js +6 -0
- package/dist/toolkits/kaggle/manifest.d.ts +3 -0
- package/dist/toolkits/kaggle/manifest.js +32 -0
- package/dist/toolkits/kaggle/tools/client.d.ts +10 -0
- package/dist/toolkits/kaggle/tools/client.js +94 -0
- package/dist/toolkits/kaggle/tools/competitions.d.ts +48 -0
- package/dist/toolkits/kaggle/tools/competitions.js +109 -0
- package/dist/toolkits/kaggle/tools/config.d.ts +110 -0
- package/dist/toolkits/kaggle/tools/config.js +256 -0
- package/dist/toolkits/kaggle/tools/datasets.d.ts +88 -0
- package/dist/toolkits/kaggle/tools/datasets.js +161 -0
- package/dist/toolkits/kaggle/tools/index.d.ts +482 -0
- package/dist/toolkits/kaggle/tools/index.js +53 -0
- package/dist/toolkits/kaggle/tools/kernels.d.ts +62 -0
- package/dist/toolkits/kaggle/tools/kernels.js +121 -0
- package/dist/toolkits/kaggle/tools/model_instance_files.d.ts +11 -0
- package/dist/toolkits/kaggle/tools/model_instance_files.js +23 -0
- package/dist/toolkits/kaggle/tools/model_instances.d.ts +8 -0
- package/dist/toolkits/kaggle/tools/model_instances.js +20 -0
- package/dist/toolkits/kaggle/tools/models.d.ts +14 -0
- package/dist/toolkits/kaggle/tools/models.js +33 -0
- package/dist/toolkits/nasa/icon.d.ts +5 -0
- package/dist/toolkits/nasa/icon.js +56 -0
- package/dist/toolkits/nasa/manifest.d.ts +3 -0
- package/dist/toolkits/nasa/manifest.js +49 -0
- package/dist/toolkits/nasa/tools/agage.d.ts +60 -0
- package/dist/toolkits/nasa/tools/agage.js +176 -0
- package/dist/toolkits/nasa/tools/client.d.ts +95 -0
- package/dist/toolkits/nasa/tools/client.js +337 -0
- package/dist/toolkits/nasa/tools/cmr.d.ts +268 -0
- package/dist/toolkits/nasa/tools/cmr.js +984 -0
- package/dist/toolkits/nasa/tools/donki.d.ts +63 -0
- package/dist/toolkits/nasa/tools/donki.js +301 -0
- package/dist/toolkits/nasa/tools/eonet.d.ts +74 -0
- package/dist/toolkits/nasa/tools/eonet.js +279 -0
- package/dist/toolkits/nasa/tools/icesat2.d.ts +25 -0
- package/dist/toolkits/nasa/tools/icesat2.js +97 -0
- package/dist/toolkits/nasa/tools/imagery.d.ts +36 -0
- package/dist/toolkits/nasa/tools/imagery.js +138 -0
- package/dist/toolkits/nasa/tools/index.d.ts +1063 -0
- package/dist/toolkits/nasa/tools/index.js +865 -0
- package/dist/toolkits/nasa/tools/neo.d.ts +15 -0
- package/dist/toolkits/nasa/tools/neo.js +75 -0
- package/dist/toolkits/nasa/tools/ntrs.d.ts +152 -0
- package/dist/toolkits/nasa/tools/ntrs.js +292 -0
- package/dist/toolkits/nasa/tools/osdr.d.ts +72 -0
- package/dist/toolkits/nasa/tools/osdr.js +290 -0
- package/dist/toolkits/nasa/tools/planetary.d.ts +58 -0
- package/dist/toolkits/nasa/tools/planetary.js +312 -0
- package/dist/toolkits/nasa/tools/power.d.ts +52 -0
- package/dist/toolkits/nasa/tools/power.js +213 -0
- package/dist/toolkits/nasa/tools/ssc.d.ts +44 -0
- package/dist/toolkits/nasa/tools/ssc.js +92 -0
- package/dist/toolkits/nasa/tools/tolnet.d.ts +84 -0
- package/dist/toolkits/nasa/tools/tolnet.js +254 -0
- package/dist/toolkits/neo4j/tools/analytics.d.ts +1 -1
- package/dist/toolkits/neo4j/tools/index.d.ts +3 -3
- package/dist/toolkits/neo4j/tools/instances.d.ts +2 -2
- package/dist/toolkits/neon/tools/auth.d.ts +4 -4
- package/dist/toolkits/neon/tools/dataapi.d.ts +1 -1
- package/dist/toolkits/neon/tools/index.d.ts +7 -7
- package/dist/toolkits/neon/tools/projects.d.ts +2 -2
- package/dist/toolkits/new-relic/icon.d.ts +5 -0
- package/dist/toolkits/new-relic/icon.js +6 -0
- package/dist/toolkits/new-relic/manifest.d.ts +3 -0
- package/dist/toolkits/new-relic/manifest.js +41 -0
- package/dist/toolkits/new-relic/tools/admin.d.ts +310 -0
- package/dist/toolkits/new-relic/tools/admin.js +282 -0
- package/dist/toolkits/new-relic/tools/alert-policies.d.ts +74 -0
- package/dist/toolkits/new-relic/tools/alert-policies.js +136 -0
- package/dist/toolkits/new-relic/tools/apm.d.ts +129 -0
- package/dist/toolkits/new-relic/tools/apm.js +228 -0
- package/dist/toolkits/new-relic/tools/client.d.ts +62 -0
- package/dist/toolkits/new-relic/tools/client.js +167 -0
- package/dist/toolkits/new-relic/tools/conditions.d.ts +190 -0
- package/dist/toolkits/new-relic/tools/conditions.js +265 -0
- package/dist/toolkits/new-relic/tools/config.d.ts +73 -0
- package/dist/toolkits/new-relic/tools/config.js +131 -0
- package/dist/toolkits/new-relic/tools/dashboards.d.ts +204 -0
- package/dist/toolkits/new-relic/tools/dashboards.js +159 -0
- package/dist/toolkits/new-relic/tools/entities.d.ts +160 -0
- package/dist/toolkits/new-relic/tools/entities.js +218 -0
- package/dist/toolkits/new-relic/tools/index.d.ts +23 -0
- package/dist/toolkits/new-relic/tools/index.js +179 -0
- package/dist/toolkits/new-relic/tools/ingest.d.ts +31 -0
- package/dist/toolkits/new-relic/tools/ingest.js +80 -0
- package/dist/toolkits/new-relic/tools/notifications.d.ts +186 -0
- package/dist/toolkits/new-relic/tools/notifications.js +232 -0
- package/dist/toolkits/new-relic/tools/nrql-conditions.d.ts +105 -0
- package/dist/toolkits/new-relic/tools/nrql-conditions.js +136 -0
- package/dist/toolkits/new-relic/tools/nrql.d.ts +38 -0
- package/dist/toolkits/new-relic/tools/nrql.js +99 -0
- package/dist/toolkits/new-relic/tools/synthetics.d.ts +176 -0
- package/dist/toolkits/new-relic/tools/synthetics.js +246 -0
- package/dist/toolkits/notebook-lm/icon.d.ts +5 -0
- package/dist/toolkits/notebook-lm/icon.js +6 -0
- package/dist/toolkits/notebook-lm/manifest.d.ts +3 -0
- package/dist/toolkits/notebook-lm/manifest.js +44 -0
- package/dist/toolkits/notebook-lm/tools/add-text-sources.d.ts +36 -0
- package/dist/toolkits/notebook-lm/tools/add-text-sources.js +51 -0
- package/dist/toolkits/notebook-lm/tools/create-audio-overview.d.ts +47 -0
- package/dist/toolkits/notebook-lm/tools/create-audio-overview.js +55 -0
- package/dist/toolkits/notebook-lm/tools/create-notebook.d.ts +52 -0
- package/dist/toolkits/notebook-lm/tools/create-notebook.js +49 -0
- package/dist/toolkits/notebook-lm/tools/delete-audio-overview.d.ts +33 -0
- package/dist/toolkits/notebook-lm/tools/delete-audio-overview.js +46 -0
- package/dist/toolkits/notebook-lm/tools/delete-notebooks.d.ts +32 -0
- package/dist/toolkits/notebook-lm/tools/delete-notebooks.js +46 -0
- package/dist/toolkits/notebook-lm/tools/delete-sources.d.ts +33 -0
- package/dist/toolkits/notebook-lm/tools/delete-sources.js +47 -0
- package/dist/toolkits/notebook-lm/tools/get-notebook.d.ts +52 -0
- package/dist/toolkits/notebook-lm/tools/get-notebook.js +45 -0
- package/dist/toolkits/notebook-lm/tools/get-source.d.ts +53 -0
- package/dist/toolkits/notebook-lm/tools/get-source.js +47 -0
- package/dist/toolkits/notebook-lm/tools/index.d.ts +516 -0
- package/dist/toolkits/notebook-lm/tools/index.js +93 -0
- package/dist/toolkits/notebook-lm/tools/list-recent-notebooks.d.ts +32 -0
- package/dist/toolkits/notebook-lm/tools/list-recent-notebooks.js +41 -0
- package/dist/toolkits/notebook-lm/tools/share-notebook.d.ts +48 -0
- package/dist/toolkits/notebook-lm/tools/share-notebook.js +57 -0
- package/dist/toolkits/notebook-lm/tools/upload-source-file.d.ts +40 -0
- package/dist/toolkits/notebook-lm/tools/upload-source-file.js +62 -0
- package/dist/toolkits/notebook-lm/tools/utils.d.ts +15 -0
- package/dist/toolkits/notebook-lm/tools/utils.js +46 -0
- package/dist/toolkits/npm/icon.d.ts +5 -0
- package/dist/toolkits/npm/icon.js +11 -0
- package/dist/toolkits/npm/manifest.d.ts +3 -0
- package/dist/toolkits/npm/manifest.js +35 -0
- package/dist/toolkits/npm/tools/client.d.ts +19 -0
- package/dist/toolkits/npm/tools/client.js +64 -0
- package/dist/toolkits/npm/tools/downloads.d.ts +19 -0
- package/dist/toolkits/npm/tools/downloads.js +39 -0
- package/dist/toolkits/npm/tools/index.d.ts +14 -0
- package/dist/toolkits/npm/tools/index.js +24 -0
- package/dist/toolkits/npm/tools/registry.d.ts +24 -0
- package/dist/toolkits/npm/tools/registry.js +58 -0
- package/dist/toolkits/npm/tools/security.d.ts +9 -0
- package/dist/toolkits/npm/tools/security.js +29 -0
- package/dist/toolkits/slack/tools/admin-users.d.ts +1 -1
- package/dist/toolkits/slack/tools/slack-lists.d.ts +3 -3
- package/dist/toolkits/snowflake/icon.d.ts +5 -0
- package/dist/toolkits/snowflake/icon.js +6 -0
- package/dist/toolkits/snowflake/manifest.d.ts +3 -0
- package/dist/toolkits/snowflake/manifest.js +32 -0
- package/dist/toolkits/snowflake/tools/catalog.d.ts +56 -0
- package/dist/toolkits/snowflake/tools/catalog.js +123 -0
- package/dist/toolkits/snowflake/tools/client.d.ts +53 -0
- package/dist/toolkits/snowflake/tools/client.js +145 -0
- package/dist/toolkits/snowflake/tools/index.d.ts +14 -0
- package/dist/toolkits/snowflake/tools/index.js +28 -0
- package/dist/toolkits/snowflake/tools/statements.d.ts +27 -0
- package/dist/toolkits/snowflake/tools/statements.js +84 -0
- package/dist/toolkits/snowflake/tools/status.d.ts +22 -0
- package/dist/toolkits/snowflake/tools/status.js +54 -0
- package/dist/toolkits/telegram/icon.d.ts +5 -0
- package/dist/toolkits/telegram/icon.js +6 -0
- package/dist/toolkits/telegram/manifest.d.ts +3 -0
- package/dist/toolkits/telegram/manifest.js +34 -0
- package/dist/toolkits/telegram/tools/bot.d.ts +13 -0
- package/dist/toolkits/telegram/tools/bot.js +23 -0
- package/dist/toolkits/telegram/tools/chats.d.ts +22 -0
- package/dist/toolkits/telegram/tools/chats.js +46 -0
- package/dist/toolkits/telegram/tools/client.d.ts +12 -0
- package/dist/toolkits/telegram/tools/client.js +46 -0
- package/dist/toolkits/telegram/tools/index.d.ts +15 -0
- package/dist/toolkits/telegram/tools/index.js +31 -0
- package/dist/toolkits/telegram/tools/messages.d.ts +86 -0
- package/dist/toolkits/telegram/tools/messages.js +134 -0
- package/dist/toolkits/telegram/tools/updates.d.ts +23 -0
- package/dist/toolkits/telegram/tools/updates.js +54 -0
- package/dist/toolkits/youtube/tools/get-channel-activities.d.ts +1 -1
- package/dist/toolkits/youtube/tools/index.d.ts +5 -5
- package/dist/toolkits/youtube/tools/list-channel-sections.d.ts +1 -1
- package/dist/toolkits/youtube/tools/post-comment.d.ts +1 -1
- package/dist/toolkits/youtube/tools/subscribe-channel.d.ts +1 -1
- package/dist/toolkits/youtube/tools/unsubscribe-channel.d.ts +1 -1
- package/package.json +2 -3
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { ddApi, toDatadogError } from './client.js';
|
|
5
|
+
const credsField = z.string().describe('Datadog credentials JSON with apiKey and appKey (injected by system)');
|
|
6
|
+
export const datadogCreateEscalationPolicy = tool({
|
|
7
|
+
description: 'Create an On-Call escalation policy with steps (targets, assignment, timeouts), retries, and team links.',
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
datadogCredentials: credsField,
|
|
10
|
+
data: z.record(z.any()).describe("JSON:API data object with type 'policies' and attributes {name, steps, retries?, resolve_page_on_policy_end?}"),
|
|
11
|
+
}),
|
|
12
|
+
execute: async ({ datadogCredentials, data }) => {
|
|
13
|
+
try {
|
|
14
|
+
return await ddApi(datadogCredentials, 'POST', '/api/v2/on-call/escalation-policies', {
|
|
15
|
+
body: { data },
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
return toDatadogError(error, 'Failed to create escalation policy');
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
export const datadogGetEscalationPolicy = tool({
|
|
24
|
+
description: 'Get an On-Call escalation policy by ID with steps and team links.',
|
|
25
|
+
inputSchema: z.object({
|
|
26
|
+
datadogCredentials: credsField,
|
|
27
|
+
policy_id: z.string().describe('Escalation policy ID'),
|
|
28
|
+
}),
|
|
29
|
+
execute: async ({ datadogCredentials, policy_id }) => {
|
|
30
|
+
try {
|
|
31
|
+
return await ddApi(datadogCredentials, 'GET', `/api/v2/on-call/escalation-policies/${policy_id}`);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return toDatadogError(error, 'Failed to get escalation policy');
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
export const datadogUpdateEscalationPolicy = tool({
|
|
39
|
+
description: 'Update an On-Call escalation policy by ID. The data object must include the policy id and full attributes.',
|
|
40
|
+
inputSchema: z.object({
|
|
41
|
+
datadogCredentials: credsField,
|
|
42
|
+
policy_id: z.string().describe('Escalation policy ID to update'),
|
|
43
|
+
data: z.record(z.any()).describe("JSON:API data object with id, type 'policies', and attributes {name, steps, ...}"),
|
|
44
|
+
}),
|
|
45
|
+
execute: async ({ datadogCredentials, policy_id, data }) => {
|
|
46
|
+
try {
|
|
47
|
+
return await ddApi(datadogCredentials, 'PUT', `/api/v2/on-call/escalation-policies/${policy_id}`, {
|
|
48
|
+
body: { data },
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
return toDatadogError(error, 'Failed to update escalation policy');
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
export const datadogDeleteEscalationPolicy = tool({
|
|
57
|
+
description: 'Delete an On-Call escalation policy by ID. Irreversible — confirm with the user first.',
|
|
58
|
+
inputSchema: z.object({
|
|
59
|
+
datadogCredentials: credsField,
|
|
60
|
+
policy_id: z.string().describe('Escalation policy ID to delete'),
|
|
61
|
+
}),
|
|
62
|
+
execute: async ({ datadogCredentials, policy_id }) => {
|
|
63
|
+
try {
|
|
64
|
+
await ddApi(datadogCredentials, 'DELETE', `/api/v2/on-call/escalation-policies/${policy_id}`);
|
|
65
|
+
return { deleted: true, policy_id, status: 204 };
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
return toDatadogError(error, 'Failed to delete escalation policy');
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=oncall-policies.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare const datadogCreateSchedule: import("ai").Tool<{
|
|
2
|
+
data: Record<string, any>;
|
|
3
|
+
datadogCredentials: string;
|
|
4
|
+
}, any>;
|
|
5
|
+
export declare const datadogGetSchedule: import("ai").Tool<{
|
|
6
|
+
datadogCredentials: string;
|
|
7
|
+
schedule_id: string;
|
|
8
|
+
}, any>;
|
|
9
|
+
export declare const datadogUpdateSchedule: import("ai").Tool<{
|
|
10
|
+
data: Record<string, any>;
|
|
11
|
+
datadogCredentials: string;
|
|
12
|
+
schedule_id: string;
|
|
13
|
+
}, any>;
|
|
14
|
+
export declare const datadogDeleteSchedule: import("ai").Tool<{
|
|
15
|
+
datadogCredentials: string;
|
|
16
|
+
schedule_id: string;
|
|
17
|
+
}, {
|
|
18
|
+
error: string;
|
|
19
|
+
message?: undefined;
|
|
20
|
+
} | {
|
|
21
|
+
error: string;
|
|
22
|
+
message: string;
|
|
23
|
+
} | {
|
|
24
|
+
deleted: boolean;
|
|
25
|
+
schedule_id: string;
|
|
26
|
+
}>;
|
|
27
|
+
export declare const datadogGetScheduledOnCallUser: import("ai").Tool<{
|
|
28
|
+
datadogCredentials: string;
|
|
29
|
+
schedule_id: string;
|
|
30
|
+
}, any>;
|
|
31
|
+
//# sourceMappingURL=oncall-schedules.d.ts.map
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { ddApi, toDatadogError } from './client.js';
|
|
5
|
+
const credsField = z.string().describe('Datadog credentials JSON with apiKey and appKey (injected by system)');
|
|
6
|
+
export const datadogCreateSchedule = tool({
|
|
7
|
+
description: 'Create an On-Call schedule with rotation layers (members, intervals, time restrictions) and team links.',
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
datadogCredentials: credsField,
|
|
10
|
+
data: z.record(z.any()).describe("JSON:API data object with type 'schedules' and attributes {name, time_zone, layers}"),
|
|
11
|
+
}),
|
|
12
|
+
execute: async ({ datadogCredentials, data }) => {
|
|
13
|
+
try {
|
|
14
|
+
return await ddApi(datadogCredentials, 'POST', '/api/v2/on-call/schedules', {
|
|
15
|
+
body: { data },
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
return toDatadogError(error, 'Failed to create schedule');
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
export const datadogGetSchedule = tool({
|
|
24
|
+
description: 'Get an On-Call schedule by ID with layers and team links.',
|
|
25
|
+
inputSchema: z.object({
|
|
26
|
+
datadogCredentials: credsField,
|
|
27
|
+
schedule_id: z.string().describe('Schedule ID'),
|
|
28
|
+
}),
|
|
29
|
+
execute: async ({ datadogCredentials, schedule_id }) => {
|
|
30
|
+
try {
|
|
31
|
+
return await ddApi(datadogCredentials, 'GET', `/api/v2/on-call/schedules/${schedule_id}`);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return toDatadogError(error, 'Failed to get schedule');
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
export const datadogUpdateSchedule = tool({
|
|
39
|
+
description: 'Update an On-Call schedule by ID. The data object must include the schedule id and full attributes.',
|
|
40
|
+
inputSchema: z.object({
|
|
41
|
+
datadogCredentials: credsField,
|
|
42
|
+
schedule_id: z.string().describe('Schedule ID to update'),
|
|
43
|
+
data: z.record(z.any()).describe("JSON:API data object with id, type 'schedules', and attributes {name, time_zone, layers}"),
|
|
44
|
+
}),
|
|
45
|
+
execute: async ({ datadogCredentials, schedule_id, data }) => {
|
|
46
|
+
try {
|
|
47
|
+
return await ddApi(datadogCredentials, 'PUT', `/api/v2/on-call/schedules/${schedule_id}`, {
|
|
48
|
+
body: { data },
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
return toDatadogError(error, 'Failed to update schedule');
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
export const datadogDeleteSchedule = tool({
|
|
57
|
+
description: 'Delete an On-Call schedule by ID. Irreversible — confirm with the user first.',
|
|
58
|
+
inputSchema: z.object({
|
|
59
|
+
datadogCredentials: credsField,
|
|
60
|
+
schedule_id: z.string().describe('Schedule ID to delete'),
|
|
61
|
+
}),
|
|
62
|
+
execute: async ({ datadogCredentials, schedule_id }) => {
|
|
63
|
+
try {
|
|
64
|
+
await ddApi(datadogCredentials, 'DELETE', `/api/v2/on-call/schedules/${schedule_id}`);
|
|
65
|
+
return { deleted: true, schedule_id };
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
return toDatadogError(error, 'Failed to delete schedule');
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
export const datadogGetScheduledOnCallUser = tool({
|
|
73
|
+
description: 'Get the currently scheduled on-call user for a schedule. Use during incidents to find who to page.',
|
|
74
|
+
inputSchema: z.object({
|
|
75
|
+
datadogCredentials: credsField,
|
|
76
|
+
schedule_id: z.string().describe('Schedule ID'),
|
|
77
|
+
}),
|
|
78
|
+
execute: async ({ datadogCredentials, schedule_id }) => {
|
|
79
|
+
try {
|
|
80
|
+
return await ddApi(datadogCredentials, 'GET', `/api/v2/on-call/schedules/${schedule_id}/on-call`);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
return toDatadogError(error, 'Failed to get scheduled on-call user');
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=oncall-schedules.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const datadogGetTeamOnCallUsers: import("ai").Tool<{
|
|
2
|
+
team_id: string;
|
|
3
|
+
datadogCredentials: string;
|
|
4
|
+
}, any>;
|
|
5
|
+
export declare const datadogGetTeamRoutingRules: import("ai").Tool<{
|
|
6
|
+
team_id: string;
|
|
7
|
+
datadogCredentials: string;
|
|
8
|
+
}, any>;
|
|
9
|
+
export declare const datadogSetTeamRoutingRules: import("ai").Tool<{
|
|
10
|
+
data: Record<string, any>;
|
|
11
|
+
team_id: string;
|
|
12
|
+
datadogCredentials: string;
|
|
13
|
+
}, any>;
|
|
14
|
+
//# sourceMappingURL=oncall-teams.d.ts.map
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { ddApi, toDatadogError } from './client.js';
|
|
5
|
+
const credsField = z.string().describe('Datadog credentials JSON with apiKey and appKey (injected by system)');
|
|
6
|
+
export const datadogGetTeamOnCallUsers = tool({
|
|
7
|
+
description: 'Get the current on-call users for an On-Call team. Use during incidents to find responders.',
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
datadogCredentials: credsField,
|
|
10
|
+
team_id: z.string().describe('On-Call team ID'),
|
|
11
|
+
}),
|
|
12
|
+
execute: async ({ datadogCredentials, team_id }) => {
|
|
13
|
+
try {
|
|
14
|
+
return await ddApi(datadogCredentials, 'GET', `/api/v2/on-call/teams/${team_id}/on-call`);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
return toDatadogError(error, 'Failed to get team on-call users');
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
export const datadogGetTeamRoutingRules = tool({
|
|
22
|
+
description: 'Get the On-Call routing rules configured for a team.',
|
|
23
|
+
inputSchema: z.object({
|
|
24
|
+
datadogCredentials: credsField,
|
|
25
|
+
team_id: z.string().describe('On-Call team ID'),
|
|
26
|
+
}),
|
|
27
|
+
execute: async ({ datadogCredentials, team_id }) => {
|
|
28
|
+
try {
|
|
29
|
+
return await ddApi(datadogCredentials, 'GET', `/api/v2/on-call/teams/${team_id}/routing-rules`);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return toDatadogError(error, 'Failed to get team routing rules');
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
export const datadogSetTeamRoutingRules = tool({
|
|
37
|
+
description: 'Replace the On-Call routing rules for a team. This overwrites all existing rules — confirm with the user first.',
|
|
38
|
+
inputSchema: z.object({
|
|
39
|
+
datadogCredentials: credsField,
|
|
40
|
+
team_id: z.string().describe('On-Call team ID'),
|
|
41
|
+
data: z.record(z.any()).describe("JSON:API data object with type 'team_routing_rules' and rule attributes"),
|
|
42
|
+
}),
|
|
43
|
+
execute: async ({ datadogCredentials, team_id, data }) => {
|
|
44
|
+
try {
|
|
45
|
+
return await ddApi(datadogCredentials, 'PUT', `/api/v2/on-call/teams/${team_id}/routing-rules`, {
|
|
46
|
+
body: { data },
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return toDatadogError(error, 'Failed to set team routing rules');
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=oncall-teams.js.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export declare const datadogCreateSlo: import("ai").Tool<{
|
|
2
|
+
type: "metric" | "monitor";
|
|
3
|
+
name: string;
|
|
4
|
+
datadogCredentials: string;
|
|
5
|
+
thresholds: {
|
|
6
|
+
target: number;
|
|
7
|
+
timeframe: "7d" | "30d" | "90d";
|
|
8
|
+
warning?: number | undefined;
|
|
9
|
+
}[];
|
|
10
|
+
query?: {
|
|
11
|
+
numerator: string;
|
|
12
|
+
denominator: string;
|
|
13
|
+
} | undefined;
|
|
14
|
+
description?: string | undefined;
|
|
15
|
+
tags?: string[] | undefined;
|
|
16
|
+
monitor_ids?: number[] | undefined;
|
|
17
|
+
groups?: string[] | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
error: string;
|
|
20
|
+
message?: undefined;
|
|
21
|
+
} | {
|
|
22
|
+
error: string;
|
|
23
|
+
message: string;
|
|
24
|
+
} | {
|
|
25
|
+
success: boolean;
|
|
26
|
+
}>;
|
|
27
|
+
export declare const datadogListSlos: import("ai").Tool<{
|
|
28
|
+
limit: number;
|
|
29
|
+
offset: number;
|
|
30
|
+
datadogCredentials: string;
|
|
31
|
+
query?: string | undefined;
|
|
32
|
+
tags?: string | undefined;
|
|
33
|
+
}, {
|
|
34
|
+
error: string;
|
|
35
|
+
message?: undefined;
|
|
36
|
+
} | {
|
|
37
|
+
error: string;
|
|
38
|
+
message: string;
|
|
39
|
+
} | {
|
|
40
|
+
slos: any;
|
|
41
|
+
total_count: any;
|
|
42
|
+
}>;
|
|
43
|
+
//# sourceMappingURL=slos.d.ts.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { ddApi, toDatadogError } from './client.js';
|
|
5
|
+
const credsField = z.string().describe('Datadog credentials JSON with apiKey and appKey (injected by system)');
|
|
6
|
+
const thresholdSchema = z.object({
|
|
7
|
+
target: z.number().min(0).max(100).describe('Target percentage, e.g. 99.9'),
|
|
8
|
+
timeframe: z.enum(['7d', '30d', '90d']).describe('Target timeframe'),
|
|
9
|
+
warning: z.number().min(0).max(100).optional().describe('Warning threshold percentage'),
|
|
10
|
+
});
|
|
11
|
+
export const datadogCreateSlo = tool({
|
|
12
|
+
description: 'Create a metric or monitor SLO with target thresholds. Metric SLOs need numerator/denominator queries; monitor SLOs need monitor IDs.',
|
|
13
|
+
inputSchema: z.object({
|
|
14
|
+
datadogCredentials: credsField,
|
|
15
|
+
name: z.string().min(1).max(100).describe('SLO display name'),
|
|
16
|
+
type: z.enum(['metric', 'monitor']).describe('SLO type'),
|
|
17
|
+
thresholds: z.array(thresholdSchema).min(1).describe('Target thresholds'),
|
|
18
|
+
query: z
|
|
19
|
+
.object({
|
|
20
|
+
numerator: z.string().describe('Good-events metric query'),
|
|
21
|
+
denominator: z.string().describe('Total-events metric query'),
|
|
22
|
+
})
|
|
23
|
+
.optional()
|
|
24
|
+
.describe('Required for metric SLOs'),
|
|
25
|
+
monitor_ids: z.array(z.number()).optional().describe('Required for monitor SLOs'),
|
|
26
|
+
description: z.string().max(500).optional().describe('SLO description'),
|
|
27
|
+
tags: z.array(z.string()).optional().describe("Tags, e.g. ['key:value']"),
|
|
28
|
+
groups: z.array(z.string()).optional().describe('SLO scope groups'),
|
|
29
|
+
}),
|
|
30
|
+
execute: async ({ datadogCredentials, ...body }) => {
|
|
31
|
+
try {
|
|
32
|
+
const data = await ddApi(datadogCredentials, 'POST', '/api/v1/slo', { body });
|
|
33
|
+
return { ...data, success: true };
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
return toDatadogError(error, 'Failed to create SLO');
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
export const datadogListSlos = tool({
|
|
41
|
+
description: 'List SLOs with tag, name/description, and limit/offset filters.',
|
|
42
|
+
inputSchema: z.object({
|
|
43
|
+
datadogCredentials: credsField,
|
|
44
|
+
tags: z.string().optional().describe("Comma-separated tag filter, e.g. 'env:prod,team:backend'"),
|
|
45
|
+
query: z.string().optional().describe('Name/description search'),
|
|
46
|
+
limit: z.number().min(1).max(1000).optional().default(25).describe('Max SLOs (1-1000)'),
|
|
47
|
+
offset: z.number().min(0).optional().default(0).describe('SLOs to skip'),
|
|
48
|
+
}),
|
|
49
|
+
execute: async ({ datadogCredentials, tags, query, limit = 25, offset = 0 }) => {
|
|
50
|
+
try {
|
|
51
|
+
const data = await ddApi(datadogCredentials, 'GET', '/api/v1/slo', {
|
|
52
|
+
query: { tags_query: tags, query, limit, offset },
|
|
53
|
+
});
|
|
54
|
+
const slos = data?.data ?? [];
|
|
55
|
+
return { slos, total_count: data?.meta?.page?.total_count ?? slos.length };
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
return toDatadogError(error, 'Failed to list SLOs');
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=slos.js.map
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export declare const datadogCreateSyntheticApiTest: import("ai").Tool<{
|
|
2
|
+
options: {
|
|
3
|
+
locations: string[];
|
|
4
|
+
tick_every: number;
|
|
5
|
+
device_ids?: string[] | undefined;
|
|
6
|
+
min_location_failed?: number | undefined;
|
|
7
|
+
min_failure_duration?: number | undefined;
|
|
8
|
+
monitor_options?: Record<string, any> | undefined;
|
|
9
|
+
};
|
|
10
|
+
name: string;
|
|
11
|
+
config: {
|
|
12
|
+
request: Record<string, any>;
|
|
13
|
+
assertions: Record<string, any>[];
|
|
14
|
+
variables?: Record<string, any>[] | undefined;
|
|
15
|
+
};
|
|
16
|
+
datadogCredentials: string;
|
|
17
|
+
message?: string | undefined;
|
|
18
|
+
type?: string | undefined;
|
|
19
|
+
status?: "live" | "paused" | undefined;
|
|
20
|
+
tags?: string[] | undefined;
|
|
21
|
+
subtype?: "http" | "ssl" | "tcp" | "dns" | "icmp" | undefined;
|
|
22
|
+
}, {
|
|
23
|
+
error: string;
|
|
24
|
+
message?: undefined;
|
|
25
|
+
} | {
|
|
26
|
+
error: string;
|
|
27
|
+
message: string;
|
|
28
|
+
} | {
|
|
29
|
+
success: boolean;
|
|
30
|
+
}>;
|
|
31
|
+
export declare const datadogListSynthetics: import("ai").Tool<{
|
|
32
|
+
limit: number;
|
|
33
|
+
offset: number;
|
|
34
|
+
datadogCredentials: string;
|
|
35
|
+
tags?: string | undefined;
|
|
36
|
+
locations?: string | undefined;
|
|
37
|
+
}, {
|
|
38
|
+
error: string;
|
|
39
|
+
message?: undefined;
|
|
40
|
+
} | {
|
|
41
|
+
error: string;
|
|
42
|
+
message: string;
|
|
43
|
+
} | {
|
|
44
|
+
tests: any;
|
|
45
|
+
total_count: any;
|
|
46
|
+
}>;
|
|
47
|
+
export declare const datadogGetSyntheticsLocations: import("ai").Tool<{
|
|
48
|
+
datadogCredentials: string;
|
|
49
|
+
}, {
|
|
50
|
+
error: string;
|
|
51
|
+
message?: undefined;
|
|
52
|
+
} | {
|
|
53
|
+
error: string;
|
|
54
|
+
message: string;
|
|
55
|
+
} | {
|
|
56
|
+
locations: any;
|
|
57
|
+
}>;
|
|
58
|
+
//# sourceMappingURL=synthetics.d.ts.map
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { ddApi, toDatadogError } from './client.js';
|
|
5
|
+
const credsField = z.string().describe('Datadog credentials JSON with apiKey and appKey (injected by system)');
|
|
6
|
+
export const datadogCreateSyntheticApiTest = tool({
|
|
7
|
+
description: 'Create a synthetic API test (http/ssl/tcp/dns/icmp) that monitors an endpoint from worldwide locations. Get location IDs from datadogGetSyntheticsLocations first.',
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
datadogCredentials: credsField,
|
|
10
|
+
name: z.string().min(1).max(200).describe('Test name'),
|
|
11
|
+
config: z
|
|
12
|
+
.object({
|
|
13
|
+
request: z.record(z.any()).describe('HTTP request config'),
|
|
14
|
+
assertions: z
|
|
15
|
+
.array(z.record(z.any()))
|
|
16
|
+
.describe("Assertions with type/operator/target, e.g. {type:'statusCode',operator:'is',target:200}"),
|
|
17
|
+
variables: z.array(z.record(z.any())).optional().describe('Test variables'),
|
|
18
|
+
})
|
|
19
|
+
.describe('Request and assertions'),
|
|
20
|
+
options: z
|
|
21
|
+
.object({
|
|
22
|
+
tick_every: z.number().min(60).max(604800).describe('Run frequency in seconds'),
|
|
23
|
+
locations: z.array(z.string()).describe('Location IDs to run from'),
|
|
24
|
+
device_ids: z.array(z.string()).optional().describe('Mobile device IDs'),
|
|
25
|
+
min_location_failed: z.number().optional().describe('Failing locations required to alert'),
|
|
26
|
+
min_failure_duration: z.number().optional().describe('Seconds failing before alerting'),
|
|
27
|
+
monitor_options: z.record(z.any()).optional().describe('Monitor options'),
|
|
28
|
+
})
|
|
29
|
+
.describe('Execution options'),
|
|
30
|
+
type: z.string().optional().describe("Test type (default 'api')"),
|
|
31
|
+
subtype: z.enum(['http', 'ssl', 'tcp', 'dns', 'icmp']).optional().describe('Subtype (default http)'),
|
|
32
|
+
status: z.enum(['live', 'paused']).optional().describe('Status (default live)'),
|
|
33
|
+
message: z.string().optional().describe('Notification message'),
|
|
34
|
+
tags: z.array(z.string()).optional().describe('Test tags'),
|
|
35
|
+
}),
|
|
36
|
+
execute: async ({ datadogCredentials, ...body }) => {
|
|
37
|
+
try {
|
|
38
|
+
const data = await ddApi(datadogCredentials, 'POST', '/api/v1/synthetics/tests/api', { body });
|
|
39
|
+
return { ...data, success: true };
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return toDatadogError(error, 'Failed to create synthetic API test');
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
export const datadogListSynthetics = tool({
|
|
47
|
+
description: 'List synthetic tests with client-side tag/location filtering and limit/offset pagination.',
|
|
48
|
+
inputSchema: z.object({
|
|
49
|
+
datadogCredentials: credsField,
|
|
50
|
+
tags: z.string().optional().describe("Tag filter, e.g. 'env:prod,team:frontend'"),
|
|
51
|
+
locations: z.string().optional().describe('Comma-separated location filter'),
|
|
52
|
+
limit: z.number().min(1).max(200).optional().default(50).describe('Max tests (1-200)'),
|
|
53
|
+
offset: z.number().min(0).optional().default(0).describe('Tests to skip'),
|
|
54
|
+
}),
|
|
55
|
+
execute: async ({ datadogCredentials, tags, locations, limit = 50, offset = 0 }) => {
|
|
56
|
+
try {
|
|
57
|
+
const data = await ddApi(datadogCredentials, 'GET', '/api/v1/synthetics/tests');
|
|
58
|
+
let tests = data?.tests ?? (Array.isArray(data) ? data : []);
|
|
59
|
+
if (tags) {
|
|
60
|
+
const wanted = tags.split(',').map((t) => t.trim());
|
|
61
|
+
tests = tests.filter((t) => wanted.every((w) => (t.tags ?? []).includes(w)));
|
|
62
|
+
}
|
|
63
|
+
if (locations) {
|
|
64
|
+
const wanted = locations.split(',').map((l) => l.trim());
|
|
65
|
+
tests = tests.filter((t) => (t.locations ?? []).some((l) => wanted.includes(l)));
|
|
66
|
+
}
|
|
67
|
+
return { tests: tests.slice(offset, offset + limit), total_count: tests.length };
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
return toDatadogError(error, 'Failed to list synthetics tests');
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
export const datadogGetSyntheticsLocations = tool({
|
|
75
|
+
description: 'List public and private synthetic locations. Use the IDs when creating synthetic tests.',
|
|
76
|
+
inputSchema: z.object({
|
|
77
|
+
datadogCredentials: credsField,
|
|
78
|
+
}),
|
|
79
|
+
execute: async ({ datadogCredentials }) => {
|
|
80
|
+
try {
|
|
81
|
+
const data = await ddApi(datadogCredentials, 'GET', '/api/v1/synthetics/locations');
|
|
82
|
+
const locations = data?.locations ?? (Array.isArray(data) ? data : []);
|
|
83
|
+
return { locations };
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
return toDatadogError(error, 'Failed to get synthetics locations');
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=synthetics.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { ddApi, toDatadogError } from './client.js';
|
|
5
|
+
const credsField = z.string().describe('Datadog credentials JSON with apiKey and appKey (injected by system)');
|
|
6
|
+
export const datadogGetUsageSummary = tool({
|
|
7
|
+
description: 'Get monthly billable usage (hosts, containers, API calls, logs) for cost monitoring. Empty payloads for inactive months are expected, not errors.',
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
datadogCredentials: credsField,
|
|
10
|
+
start_month: z.string().describe("Start month 'YYYY-MM', e.g. '2024-01'"),
|
|
11
|
+
end_month: z.string().optional().describe("End month 'YYYY-MM' (defaults to start_month)"),
|
|
12
|
+
include_org_details: z.boolean().optional().describe('Include organization details'),
|
|
13
|
+
}),
|
|
14
|
+
execute: async ({ datadogCredentials, start_month, end_month, include_org_details }) => {
|
|
15
|
+
try {
|
|
16
|
+
return await ddApi(datadogCredentials, 'GET', '/api/v1/usage/summary', {
|
|
17
|
+
query: { start_month, end_month, include_org_details },
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
return toDatadogError(error, 'Failed to get usage summary');
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare const datadogListUsers: import("ai").Tool<{
|
|
2
|
+
page_size: number;
|
|
3
|
+
datadogCredentials: string;
|
|
4
|
+
sort_dir: string;
|
|
5
|
+
page_number: number;
|
|
6
|
+
sort?: string | undefined;
|
|
7
|
+
filter_status?: string | undefined;
|
|
8
|
+
}, {
|
|
9
|
+
error: string;
|
|
10
|
+
message?: undefined;
|
|
11
|
+
} | {
|
|
12
|
+
error: string;
|
|
13
|
+
message: string;
|
|
14
|
+
} | {
|
|
15
|
+
users: any;
|
|
16
|
+
total_count: any;
|
|
17
|
+
total_filtered_count: any;
|
|
18
|
+
}>;
|
|
19
|
+
export declare const datadogListRoles: import("ai").Tool<{
|
|
20
|
+
page_size: number;
|
|
21
|
+
datadogCredentials: string;
|
|
22
|
+
page_number: number;
|
|
23
|
+
sort?: string | undefined;
|
|
24
|
+
filter_name?: string | undefined;
|
|
25
|
+
}, {
|
|
26
|
+
error: string;
|
|
27
|
+
message?: undefined;
|
|
28
|
+
} | {
|
|
29
|
+
error: string;
|
|
30
|
+
message: string;
|
|
31
|
+
} | {
|
|
32
|
+
roles: any;
|
|
33
|
+
total_count: any;
|
|
34
|
+
}>;
|
|
35
|
+
//# sourceMappingURL=users.d.ts.map
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { ddApi, toDatadogError } from './client.js';
|
|
5
|
+
const credsField = z.string().describe('Datadog credentials JSON with apiKey and appKey (injected by system)');
|
|
6
|
+
export const datadogListUsers = tool({
|
|
7
|
+
description: 'List organization users with roles and access levels. Paginate with page_size/page_number.',
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
datadogCredentials: credsField,
|
|
10
|
+
sort: z.string().optional().describe('Sort field: name, email, status, created_at'),
|
|
11
|
+
sort_dir: z.string().optional().default('asc').describe('Sort direction'),
|
|
12
|
+
page_size: z.number().min(1).max(1000).optional().default(50).describe('Users per page'),
|
|
13
|
+
page_number: z.number().min(0).optional().default(0).describe('Page number'),
|
|
14
|
+
filter_status: z.string().optional().describe('Status filter: Active, Pending, Disabled'),
|
|
15
|
+
}),
|
|
16
|
+
execute: async ({ datadogCredentials, sort, sort_dir = 'asc', page_size = 50, page_number = 0, filter_status }) => {
|
|
17
|
+
try {
|
|
18
|
+
const data = await ddApi(datadogCredentials, 'GET', '/api/v2/users', {
|
|
19
|
+
query: {
|
|
20
|
+
sort,
|
|
21
|
+
sort_dir,
|
|
22
|
+
'page[size]': page_size,
|
|
23
|
+
'page[number]': page_number,
|
|
24
|
+
'filter[status]': filter_status,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
const users = data?.data ?? [];
|
|
28
|
+
return {
|
|
29
|
+
users,
|
|
30
|
+
total_count: data?.meta?.page?.total_count ?? users.length,
|
|
31
|
+
total_filtered_count: data?.meta?.page?.total_filtered_count,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
return toDatadogError(error, 'Failed to list users');
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
export const datadogListRoles = tool({
|
|
40
|
+
description: 'List organization roles (permission sets) with member counts. Filter by partial name match.',
|
|
41
|
+
inputSchema: z.object({
|
|
42
|
+
datadogCredentials: credsField,
|
|
43
|
+
sort: z.string().optional().describe('Sort field: name, created_at, user_count'),
|
|
44
|
+
page_size: z.number().min(1).max(100).optional().default(10).describe('Roles per page'),
|
|
45
|
+
page_number: z.number().min(0).optional().default(0).describe('Page number'),
|
|
46
|
+
filter_name: z.string().optional().describe('Partial name filter'),
|
|
47
|
+
}),
|
|
48
|
+
execute: async ({ datadogCredentials, sort, page_size = 10, page_number = 0, filter_name }) => {
|
|
49
|
+
try {
|
|
50
|
+
const data = await ddApi(datadogCredentials, 'GET', '/api/v2/roles', {
|
|
51
|
+
query: {
|
|
52
|
+
sort,
|
|
53
|
+
'page[size]': page_size,
|
|
54
|
+
'page[number]': page_number,
|
|
55
|
+
filter: filter_name,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
const roles = data?.data ?? [];
|
|
59
|
+
return { roles, total_count: data?.meta?.page?.total_count ?? roles.length };
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
return toDatadogError(error, 'Failed to list roles');
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=users.js.map
|