@octopusdeploy/mcp-server 1.1.0 → 2.1.1
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 +202 -47
- package/dist/helpers/activeToolsetConfig.d.ts +4 -0
- package/dist/helpers/activeToolsetConfig.d.ts.map +1 -0
- package/dist/helpers/activeToolsetConfig.js +18 -0
- package/dist/helpers/activeToolsetConfig.js.map +1 -0
- package/dist/helpers/errorHandling.d.ts +3 -0
- package/dist/helpers/errorHandling.d.ts.map +1 -1
- package/dist/helpers/errorHandling.js +4 -1
- package/dist/helpers/errorHandling.js.map +1 -1
- package/dist/helpers/getClientConfigurationFromEnvironment.d.ts +2 -0
- package/dist/helpers/getClientConfigurationFromEnvironment.d.ts.map +1 -1
- package/dist/helpers/getClientConfigurationFromEnvironment.js +20 -4
- package/dist/helpers/getClientConfigurationFromEnvironment.js.map +1 -1
- package/dist/helpers/grepLines.d.ts +38 -0
- package/dist/helpers/grepLines.d.ts.map +1 -0
- package/dist/helpers/grepLines.js +65 -0
- package/dist/helpers/grepLines.js.map +1 -0
- package/dist/helpers/methodTier.d.ts +15 -0
- package/dist/helpers/methodTier.d.ts.map +1 -0
- package/dist/helpers/methodTier.js +25 -0
- package/dist/helpers/methodTier.js.map +1 -0
- package/dist/helpers/pathAllowlist.d.ts +27 -0
- package/dist/helpers/pathAllowlist.d.ts.map +1 -0
- package/dist/helpers/pathAllowlist.js +177 -0
- package/dist/helpers/pathAllowlist.js.map +1 -0
- package/dist/helpers/pathGlob.d.ts +15 -0
- package/dist/helpers/pathGlob.d.ts.map +1 -0
- package/dist/helpers/pathGlob.js +47 -0
- package/dist/helpers/pathGlob.js.map +1 -0
- package/dist/helpers/requireConfirmation.d.ts +119 -0
- package/dist/helpers/requireConfirmation.d.ts.map +1 -0
- package/dist/helpers/requireConfirmation.js +148 -0
- package/dist/helpers/requireConfirmation.js.map +1 -0
- package/dist/helpers/sensitivePathDenylist.d.ts +32 -0
- package/dist/helpers/sensitivePathDenylist.d.ts.map +1 -0
- package/dist/helpers/sensitivePathDenylist.js +49 -0
- package/dist/helpers/sensitivePathDenylist.js.map +1 -0
- package/dist/helpers/stripLinks.d.ts +15 -0
- package/dist/helpers/stripLinks.d.ts.map +1 -0
- package/dist/helpers/stripLinks.js +19 -0
- package/dist/helpers/stripLinks.js.map +1 -0
- package/dist/helpers/userCache.d.ts +14 -0
- package/dist/helpers/userCache.d.ts.map +1 -0
- package/dist/helpers/userCache.js +16 -0
- package/dist/helpers/userCache.js.map +1 -0
- package/dist/helpers/validateExecutePath.d.ts +29 -0
- package/dist/helpers/validateExecutePath.d.ts.map +1 -0
- package/dist/helpers/validateExecutePath.js +62 -0
- package/dist/helpers/validateExecutePath.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +58 -9
- package/dist/index.js.map +1 -1
- package/dist/resources/catalog/capabilities.d.ts +36 -0
- package/dist/resources/catalog/capabilities.d.ts.map +1 -0
- package/dist/resources/catalog/capabilities.js +89 -0
- package/dist/resources/catalog/capabilities.js.map +1 -0
- package/dist/resources/catalog/llmsTxt.d.ts +8 -0
- package/dist/resources/catalog/llmsTxt.d.ts.map +1 -0
- package/dist/resources/catalog/llmsTxt.js +44 -0
- package/dist/resources/catalog/llmsTxt.js.map +1 -0
- package/dist/resources/dispatch.d.ts +30 -0
- package/dist/resources/dispatch.d.ts.map +1 -0
- package/dist/resources/dispatch.js +81 -0
- package/dist/resources/dispatch.js.map +1 -0
- package/dist/resources/featureToggle.d.ts +2 -0
- package/dist/resources/featureToggle.d.ts.map +1 -0
- package/dist/resources/featureToggle.js +34 -0
- package/dist/resources/featureToggle.js.map +1 -0
- package/dist/resources/index.d.ts +12 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +44 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/interruption.d.ts +2 -0
- package/dist/resources/interruption.d.ts.map +1 -0
- package/dist/resources/interruption.js +34 -0
- package/dist/resources/interruption.js.map +1 -0
- package/dist/resources/release.d.ts +2 -0
- package/dist/resources/release.d.ts.map +1 -0
- package/dist/resources/release.js +33 -0
- package/dist/resources/release.js.map +1 -0
- package/dist/resources/rolloutGroup.d.ts +2 -0
- package/dist/resources/rolloutGroup.d.ts.map +1 -0
- package/dist/resources/rolloutGroup.js +35 -0
- package/dist/resources/rolloutGroup.js.map +1 -0
- package/dist/resources/runbook.d.ts +2 -0
- package/dist/resources/runbook.d.ts.map +1 -0
- package/dist/resources/runbook.js +34 -0
- package/dist/resources/runbook.js.map +1 -0
- package/dist/resources/task.d.ts +2 -0
- package/dist/resources/task.d.ts.map +1 -0
- package/dist/resources/task.js +68 -0
- package/dist/resources/task.js.map +1 -0
- package/dist/tools/createRelease.d.ts.map +1 -1
- package/dist/tools/createRelease.js +93 -50
- package/dist/tools/createRelease.js.map +1 -1
- package/dist/tools/deployRelease.d.ts.map +1 -1
- package/dist/tools/deployRelease.js +117 -97
- package/dist/tools/deployRelease.js.map +1 -1
- package/dist/tools/execute.d.ts +3 -0
- package/dist/tools/execute.d.ts.map +1 -0
- package/dist/tools/execute.js +262 -0
- package/dist/tools/execute.js.map +1 -0
- package/dist/tools/findAccounts.d.ts.map +1 -1
- package/dist/tools/findAccounts.js +15 -12
- package/dist/tools/findAccounts.js.map +1 -1
- package/dist/tools/findCertificates.d.ts.map +1 -1
- package/dist/tools/findCertificates.js +19 -16
- package/dist/tools/findCertificates.js.map +1 -1
- package/dist/tools/findDeploymentTargets.d.ts.map +1 -1
- package/dist/tools/findDeploymentTargets.js +26 -23
- package/dist/tools/findDeploymentTargets.js.map +1 -1
- package/dist/tools/findFeatureToggles.d.ts +37 -0
- package/dist/tools/findFeatureToggles.d.ts.map +1 -0
- package/dist/tools/findFeatureToggles.js +139 -0
- package/dist/tools/findFeatureToggles.js.map +1 -0
- package/dist/tools/findInterruptions.d.ts +79 -0
- package/dist/tools/findInterruptions.d.ts.map +1 -0
- package/dist/tools/findInterruptions.js +273 -0
- package/dist/tools/findInterruptions.js.map +1 -0
- package/dist/tools/findReleases.d.ts.map +1 -1
- package/dist/tools/findReleases.js +90 -48
- package/dist/tools/findReleases.js.map +1 -1
- package/dist/tools/findRunbooks.d.ts +3 -0
- package/dist/tools/findRunbooks.d.ts.map +1 -0
- package/dist/tools/findRunbooks.js +139 -0
- package/dist/tools/findRunbooks.js.map +1 -0
- package/dist/tools/findTenants.d.ts.map +1 -1
- package/dist/tools/findTenants.js +28 -25
- package/dist/tools/findTenants.js.map +1 -1
- package/dist/tools/getBranches.d.ts.map +1 -1
- package/dist/tools/getBranches.js +13 -10
- package/dist/tools/getBranches.js.map +1 -1
- package/dist/tools/getCurrentUser.d.ts.map +1 -1
- package/dist/tools/getCurrentUser.js +7 -4
- package/dist/tools/getCurrentUser.js.map +1 -1
- package/dist/tools/getDeploymentFromUrl.d.ts +8 -3
- package/dist/tools/getDeploymentFromUrl.d.ts.map +1 -1
- package/dist/tools/getDeploymentFromUrl.js +46 -18
- package/dist/tools/getDeploymentFromUrl.js.map +1 -1
- package/dist/tools/getDeploymentProcess.d.ts.map +1 -1
- package/dist/tools/getDeploymentProcess.js +26 -23
- package/dist/tools/getDeploymentProcess.js.map +1 -1
- package/dist/tools/getKubernetesLiveStatus.d.ts.map +1 -1
- package/dist/tools/getKubernetesLiveStatus.js +13 -10
- package/dist/tools/getKubernetesLiveStatus.js.map +1 -1
- package/dist/tools/getMissingTenantVariables.d.ts.map +1 -1
- package/dist/tools/getMissingTenantVariables.js +13 -10
- package/dist/tools/getMissingTenantVariables.js.map +1 -1
- package/dist/tools/getTaskFromUrl.d.ts +2 -3
- package/dist/tools/getTaskFromUrl.d.ts.map +1 -1
- package/dist/tools/getTaskFromUrl.js +33 -33
- package/dist/tools/getTaskFromUrl.js.map +1 -1
- package/dist/tools/getTenantVariables.d.ts.map +1 -1
- package/dist/tools/getTenantVariables.js +13 -10
- package/dist/tools/getTenantVariables.js.map +1 -1
- package/dist/tools/getVariables.d.ts.map +1 -1
- package/dist/tools/getVariables.js +12 -9
- package/dist/tools/getVariables.js.map +1 -1
- package/dist/tools/grepLlmsTxt.d.ts +13 -0
- package/dist/tools/grepLlmsTxt.d.ts.map +1 -0
- package/dist/tools/grepLlmsTxt.js +105 -0
- package/dist/tools/grepLlmsTxt.js.map +1 -0
- package/dist/tools/grepTaskLog.d.ts +30 -0
- package/dist/tools/grepTaskLog.d.ts.map +1 -0
- package/dist/tools/grepTaskLog.js +116 -0
- package/dist/tools/grepTaskLog.js.map +1 -0
- package/dist/tools/index.d.ts +11 -5
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +21 -7
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/listDeployments.d.ts.map +1 -1
- package/dist/tools/listDeployments.js +22 -13
- package/dist/tools/listDeployments.js.map +1 -1
- package/dist/tools/listEnvironments.d.ts.map +1 -1
- package/dist/tools/listEnvironments.js +12 -9
- package/dist/tools/listEnvironments.js.map +1 -1
- package/dist/tools/listProjects.d.ts.map +1 -1
- package/dist/tools/listProjects.js +10 -7
- package/dist/tools/listProjects.js.map +1 -1
- package/dist/tools/listSpaces.d.ts.map +1 -1
- package/dist/tools/listSpaces.js +9 -6
- package/dist/tools/listSpaces.js.map +1 -1
- package/dist/tools/readResource.d.ts +3 -0
- package/dist/tools/readResource.d.ts.map +1 -0
- package/dist/tools/readResource.js +50 -0
- package/dist/tools/readResource.js.map +1 -0
- package/dist/tools/runRunbook.d.ts +3 -0
- package/dist/tools/runRunbook.d.ts.map +1 -0
- package/dist/tools/runRunbook.js +174 -0
- package/dist/tools/runRunbook.js.map +1 -0
- package/dist/tools/updateFeatureToggle.d.ts +94 -0
- package/dist/tools/updateFeatureToggle.d.ts.map +1 -0
- package/dist/tools/updateFeatureToggle.js +308 -0
- package/dist/tools/updateFeatureToggle.js.map +1 -0
- package/dist/types/featureToggleTypes.d.ts +47 -0
- package/dist/types/featureToggleTypes.d.ts.map +1 -0
- package/dist/types/featureToggleTypes.js +10 -0
- package/dist/types/featureToggleTypes.js.map +1 -0
- package/dist/types/resourceConfig.d.ts +17 -0
- package/dist/types/resourceConfig.d.ts.map +1 -0
- package/dist/types/resourceConfig.js +6 -0
- package/dist/types/resourceConfig.js.map +1 -0
- package/dist/types/toolAnnotations.d.ts +8 -0
- package/dist/types/toolAnnotations.d.ts.map +1 -0
- package/dist/types/toolAnnotations.js +28 -0
- package/dist/types/toolAnnotations.js.map +1 -0
- package/dist/types/toolConfig.d.ts +15 -1
- package/dist/types/toolConfig.d.ts.map +1 -1
- package/dist/types/toolConfig.js +4 -1
- package/dist/types/toolConfig.js.map +1 -1
- package/dist/utils/parseConfig.d.ts +1 -1
- package/dist/utils/parseConfig.d.ts.map +1 -1
- package/dist/utils/parseConfig.js +3 -2
- package/dist/utils/parseConfig.js.map +1 -1
- package/package.json +4 -4
- package/dist/tools/getTaskById.d.ts +0 -9
- package/dist/tools/getTaskById.d.ts.map +0 -1
- package/dist/tools/getTaskById.js +0 -51
- package/dist/tools/getTaskById.js.map +0 -1
- package/dist/tools/getTaskDetails.d.ts +0 -9
- package/dist/tools/getTaskDetails.d.ts.map +0 -1
- package/dist/tools/getTaskDetails.js +0 -65
- package/dist/tools/getTaskDetails.js.map +0 -1
- package/dist/tools/getTaskRaw.d.ts +0 -9
- package/dist/tools/getTaskRaw.d.ts.map +0 -1
- package/dist/tools/getTaskRaw.js +0 -50
- package/dist/tools/getTaskRaw.js.map +0 -1
- package/dist/tools/listReleasesForProject.d.ts +0 -3
- package/dist/tools/listReleasesForProject.d.ts.map +0 -1
- package/dist/tools/listReleasesForProject.js +0 -60
- package/dist/tools/listReleasesForProject.js.map +0 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Client, SpaceServerTaskRepository } from "@octopusdeploy/api-client";
|
|
2
|
+
import { registerResourceDescriptor } from "../types/resourceConfig.js";
|
|
3
|
+
import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
|
|
4
|
+
import { validateEntityId, handleOctopusApiError, ENTITY_PREFIXES, } from "../helpers/errorHandling.js";
|
|
5
|
+
import { stripLinks } from "../helpers/stripLinks.js";
|
|
6
|
+
const TASK_HELP_TEXT = "Use find_releases or list_deployments to find tasks via their parent entity, or get_deployment_from_url / get_task_from_url for URL-based lookups.";
|
|
7
|
+
registerResourceDescriptor({
|
|
8
|
+
name: "task",
|
|
9
|
+
uriTemplate: "octopus://spaces/{spaceName}/tasks/{taskId}",
|
|
10
|
+
toolset: "tasks",
|
|
11
|
+
title: "Octopus task summary",
|
|
12
|
+
description: "Lightweight task metadata: state, timing, completion flags, and arguments. Cheap to fetch — use this for polling or status checks. For step timings and embedded log entries use the /details URI; to search the raw activity log call the grep_task_log tool.",
|
|
13
|
+
mimeType: "application/json",
|
|
14
|
+
read: async ({ spaceName, taskId }) => {
|
|
15
|
+
validateEntityId(taskId, "task", ENTITY_PREFIXES.task);
|
|
16
|
+
try {
|
|
17
|
+
const client = await Client.create(getClientConfigurationFromEnvironment());
|
|
18
|
+
const task = await new SpaceServerTaskRepository(client, spaceName).getById(taskId);
|
|
19
|
+
return {
|
|
20
|
+
mimeType: "application/json",
|
|
21
|
+
text: JSON.stringify(stripLinks(task)),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
handleOctopusApiError(error, {
|
|
26
|
+
entityType: "task",
|
|
27
|
+
entityId: taskId,
|
|
28
|
+
spaceName,
|
|
29
|
+
helpText: TASK_HELP_TEXT,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
registerResourceDescriptor({
|
|
35
|
+
name: "task-details",
|
|
36
|
+
uriTemplate: "octopus://spaces/{spaceName}/tasks/{taskId}/details",
|
|
37
|
+
toolset: "tasks",
|
|
38
|
+
title: "Octopus task details (structured activity tree)",
|
|
39
|
+
description: "Full ServerTaskDetails payload: the task summary plus Progress, PhysicalLogSize, and the hierarchical ActivityLogs tree (each step's children, status, and embedded log entries). Heavier than the /task summary — fetch when you need step-by-step timings or programmatic access to log entries.",
|
|
40
|
+
mimeType: "application/json",
|
|
41
|
+
read: async ({ spaceName, taskId }) => {
|
|
42
|
+
validateEntityId(taskId, "task", ENTITY_PREFIXES.task);
|
|
43
|
+
try {
|
|
44
|
+
const client = await Client.create(getClientConfigurationFromEnvironment());
|
|
45
|
+
const details = await new SpaceServerTaskRepository(client, spaceName).getDetails(taskId);
|
|
46
|
+
return {
|
|
47
|
+
mimeType: "application/json",
|
|
48
|
+
text: JSON.stringify(stripLinks(details)),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
handleOctopusApiError(error, {
|
|
53
|
+
entityType: "task",
|
|
54
|
+
entityId: taskId,
|
|
55
|
+
spaceName,
|
|
56
|
+
helpText: TASK_HELP_TEXT,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
// NOTE: There is intentionally no `octopus://spaces/{spaceName}/tasks/{taskId}/log`
|
|
62
|
+
// resource. Activity logs can be multi-megabyte; exposing them as an addressable
|
|
63
|
+
// resource invites agents to fetch the whole body when they only need a few
|
|
64
|
+
// matching lines. Use the `grep_task_log` tool instead — its parameters mirror
|
|
65
|
+
// GNU grep and it returns only matching slices with totalMatches/context.
|
|
66
|
+
// For structured log entries with categories and timestamps, use the /details
|
|
67
|
+
// URI above (it embeds ActivityLogs[] inline).
|
|
68
|
+
//# sourceMappingURL=task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/resources/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,qCAAqC,EAAE,MAAM,qDAAqD,CAAC;AAC5G,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,cAAc,GAClB,oJAAoJ,CAAC;AAEvJ,0BAA0B,CAAC;IACzB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,6CAA6C;IAC1D,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EACT,gQAAgQ;IAClQ,QAAQ,EAAE,kBAAkB;IAC5B,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;QACpC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAChC,qCAAqC,EAAE,CACxC,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,yBAAyB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,OAAO,CACzE,MAAM,CACP,CAAC;YAEF,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACvC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB,CAAC,KAAK,EAAE;gBAC3B,UAAU,EAAE,MAAM;gBAClB,QAAQ,EAAE,MAAM;gBAChB,SAAS;gBACT,QAAQ,EAAE,cAAc;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,0BAA0B,CAAC;IACzB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,qDAAqD;IAClE,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,iDAAiD;IACxD,WAAW,EACT,oSAAoS;IACtS,QAAQ,EAAE,kBAAkB;IAC5B,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;QACpC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAChC,qCAAqC,EAAE,CACxC,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,IAAI,yBAAyB,CACjD,MAAM,EACN,SAAS,CACV,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAErB,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aAC1C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB,CAAC,KAAK,EAAE;gBAC3B,UAAU,EAAE,MAAM;gBAClB,QAAQ,EAAE,MAAM;gBAChB,SAAS;gBACT,QAAQ,EAAE,cAAc;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,oFAAoF;AACpF,iFAAiF;AACjF,4EAA4E;AAC5E,+EAA+E;AAC/E,0EAA0E;AAC1E,8EAA8E;AAC9E,+CAA+C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRelease.d.ts","sourceRoot":"","sources":["../../src/tools/createRelease.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"createRelease.d.ts","sourceRoot":"","sources":["../../src/tools/createRelease.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,QA2K1D"}
|
|
@@ -3,59 +3,73 @@ import { z } from "zod";
|
|
|
3
3
|
import {} from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
4
4
|
import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
|
|
5
5
|
import { registerToolDefinition } from "../types/toolConfig.js";
|
|
6
|
+
import { ADDITIVE_WRITE_TOOL_ANNOTATIONS } from "../types/toolAnnotations.js";
|
|
6
7
|
import { handleOctopusApiError } from "../helpers/errorHandling.js";
|
|
8
|
+
import { requireConfirmation, unconfirmedResponse, } from "../helpers/requireConfirmation.js";
|
|
7
9
|
export function registerCreateReleaseTool(server) {
|
|
8
|
-
server.
|
|
9
|
-
|
|
10
|
-
This tool creates a new release for a project. The space name and project name are required. All other parameters are optional and will use Octopus defaults if not specified.`, {
|
|
11
|
-
spaceName: z.string().describe("The space name"),
|
|
12
|
-
projectName: z.string().describe("The project name"),
|
|
13
|
-
releaseVersion: z
|
|
14
|
-
.string()
|
|
15
|
-
.optional()
|
|
16
|
-
.describe("The version for the release (e.g., '1.0.0'). If not specified, Octopus will auto-generate based on project settings."),
|
|
17
|
-
channelName: z
|
|
18
|
-
.string()
|
|
19
|
-
.optional()
|
|
20
|
-
.describe("The channel name (uses default channel if not specified)"),
|
|
21
|
-
packageVersion: z
|
|
22
|
-
.string()
|
|
23
|
-
.optional()
|
|
24
|
-
.describe("Default package version to use for all packages"),
|
|
25
|
-
packages: z
|
|
26
|
-
.array(z.string())
|
|
27
|
-
.optional()
|
|
28
|
-
.describe("Array of package specifications (format depends on Octopus configuration)"),
|
|
29
|
-
gitCommit: z.string().optional().describe("Git commit hash"),
|
|
30
|
-
gitRef: z.string().optional().describe("Git reference (branch or tag)"),
|
|
31
|
-
releaseNotes: z
|
|
32
|
-
.string()
|
|
33
|
-
.optional()
|
|
34
|
-
.describe("Release notes for this release"),
|
|
35
|
-
ignoreIfAlreadyExists: z
|
|
36
|
-
.boolean()
|
|
37
|
-
.optional()
|
|
38
|
-
.describe("If true, skip creation if release already exists (returns existing release)"),
|
|
39
|
-
ignoreChannelRules: z
|
|
40
|
-
.boolean()
|
|
41
|
-
.optional()
|
|
42
|
-
.describe("If true, ignore channel version rules"),
|
|
43
|
-
packagePrerelease: z
|
|
44
|
-
.string()
|
|
45
|
-
.optional()
|
|
46
|
-
.describe("Package prerelease tag"),
|
|
47
|
-
customFields: z
|
|
48
|
-
.record(z.string())
|
|
49
|
-
.optional()
|
|
50
|
-
.describe("Custom field values as key-value pairs"),
|
|
51
|
-
}, {
|
|
10
|
+
server.registerTool("create_release", {
|
|
52
11
|
title: "Create a new release in Octopus Deploy",
|
|
53
|
-
|
|
54
|
-
|
|
12
|
+
description: `Create a new release for an Octopus Deploy project
|
|
13
|
+
|
|
14
|
+
This tool creates a new release for a project. The space name and project name are required. All other parameters are optional and will use Octopus defaults if not specified.`,
|
|
15
|
+
inputSchema: {
|
|
16
|
+
spaceName: z.string().describe("The space name"),
|
|
17
|
+
projectName: z.string().describe("The project name"),
|
|
18
|
+
releaseVersion: z
|
|
19
|
+
.string()
|
|
20
|
+
.optional()
|
|
21
|
+
.describe("The version for the release (e.g., '1.0.0'). If not specified, Octopus will auto-generate based on project settings."),
|
|
22
|
+
channelName: z
|
|
23
|
+
.string()
|
|
24
|
+
.optional()
|
|
25
|
+
.describe("The channel name (uses default channel if not specified)"),
|
|
26
|
+
packageVersion: z
|
|
27
|
+
.string()
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Default package version to use for all packages"),
|
|
30
|
+
packages: z
|
|
31
|
+
.array(z.string())
|
|
32
|
+
.optional()
|
|
33
|
+
.describe("Array of package specifications (format depends on Octopus configuration)"),
|
|
34
|
+
gitCommit: z.string().optional().describe("Git commit hash"),
|
|
35
|
+
gitRef: z.string().optional().describe("Git reference (branch or tag)"),
|
|
36
|
+
releaseNotes: z
|
|
37
|
+
.string()
|
|
38
|
+
.optional()
|
|
39
|
+
.describe("Release notes for this release"),
|
|
40
|
+
ignoreIfAlreadyExists: z
|
|
41
|
+
.boolean()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("If true, skip creation if release already exists (returns existing release)"),
|
|
44
|
+
ignoreChannelRules: z
|
|
45
|
+
.boolean()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("If true, ignore channel version rules"),
|
|
48
|
+
packagePrerelease: z
|
|
49
|
+
.string()
|
|
50
|
+
.optional()
|
|
51
|
+
.describe("Package prerelease tag"),
|
|
52
|
+
customFields: z
|
|
53
|
+
.record(z.string())
|
|
54
|
+
.optional()
|
|
55
|
+
.describe("Custom field values as key-value pairs"),
|
|
56
|
+
confirm: z
|
|
57
|
+
.boolean()
|
|
58
|
+
.optional()
|
|
59
|
+
.describe("Required only when the MCP client does not support elicitation. Set to true to confirm release creation; otherwise the tool aborts."),
|
|
60
|
+
},
|
|
61
|
+
annotations: ADDITIVE_WRITE_TOOL_ANNOTATIONS,
|
|
62
|
+
}, async ({ spaceName, projectName, releaseVersion, channelName, packageVersion, packages, gitCommit, gitRef, releaseNotes, ignoreIfAlreadyExists, ignoreChannelRules, packagePrerelease, customFields, confirm, }) => {
|
|
55
63
|
try {
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
const summary = [
|
|
65
|
+
`Create release for project ${projectName}`,
|
|
66
|
+
releaseVersion ? `version ${releaseVersion}` : null,
|
|
67
|
+
channelName ? `on channel ${channelName}` : null,
|
|
68
|
+
gitRef ? `from ${gitRef}` : null,
|
|
69
|
+
`in space ${spaceName}`,
|
|
70
|
+
]
|
|
71
|
+
.filter(Boolean)
|
|
72
|
+
.join(" ");
|
|
59
73
|
const command = {
|
|
60
74
|
spaceName: spaceName,
|
|
61
75
|
ProjectName: projectName,
|
|
@@ -75,7 +89,31 @@ This tool creates a new release for a project. The space name and project name a
|
|
|
75
89
|
...(packagePrerelease && { PackagePrerelease: packagePrerelease }),
|
|
76
90
|
...(customFields && { CustomFields: customFields }),
|
|
77
91
|
};
|
|
92
|
+
const confirmation = await requireConfirmation(server, {
|
|
93
|
+
message: `${summary}?`,
|
|
94
|
+
fallbackConfirm: confirm,
|
|
95
|
+
change: { source: {}, target: command },
|
|
96
|
+
});
|
|
97
|
+
if (!confirmation.confirmed) {
|
|
98
|
+
return unconfirmedResponse(confirmation, {
|
|
99
|
+
action: "release creation",
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
const configuration = getClientConfigurationFromEnvironment();
|
|
103
|
+
const client = await Client.create(configuration);
|
|
104
|
+
const releaseRepository = new ReleaseRepository(client, spaceName);
|
|
78
105
|
const response = await releaseRepository.create(command);
|
|
106
|
+
let versionControlReference;
|
|
107
|
+
try {
|
|
108
|
+
const release = await releaseRepository.get(response.ReleaseId);
|
|
109
|
+
versionControlReference = release.VersionControlReference;
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
versionControlReference = undefined;
|
|
113
|
+
}
|
|
114
|
+
const encodedSpace = encodeURIComponent(spaceName);
|
|
115
|
+
const encodedId = encodeURIComponent(response.ReleaseId);
|
|
116
|
+
const resourceUri = `octopus://spaces/${encodedSpace}/releases/${encodedId}`;
|
|
79
117
|
return {
|
|
80
118
|
content: [
|
|
81
119
|
{
|
|
@@ -84,8 +122,10 @@ This tool creates a new release for a project. The space name and project name a
|
|
|
84
122
|
success: true,
|
|
85
123
|
releaseId: response.ReleaseId,
|
|
86
124
|
releaseVersion: response.ReleaseVersion,
|
|
125
|
+
versionControlReference,
|
|
126
|
+
resourceUri,
|
|
87
127
|
message: `Release ${response.ReleaseVersion} created successfully`,
|
|
88
|
-
helpText: "
|
|
128
|
+
helpText: "Read resourceUri for the full release body (includes releaseNotes). Use deploy_release to deploy this release to environments.",
|
|
89
129
|
}, null, 2),
|
|
90
130
|
},
|
|
91
131
|
],
|
|
@@ -104,5 +144,8 @@ registerToolDefinition({
|
|
|
104
144
|
toolName: "create_release",
|
|
105
145
|
config: { toolset: "releases", readOnly: false },
|
|
106
146
|
registerFn: registerCreateReleaseTool,
|
|
147
|
+
// ReleaseRepository.create uses the Executions API (~/api/{space}/releases/create/v1)
|
|
148
|
+
// which the api-client refuses to call against servers older than 2022.3.5512.
|
|
149
|
+
minimumOctopusVersion: "2022.3.5512",
|
|
107
150
|
});
|
|
108
151
|
//# sourceMappingURL=createRelease.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRelease.js","sourceRoot":"","sources":["../../src/tools/createRelease.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,qCAAqC,EAAE,MAAM,qDAAqD,CAAC;AAC5G,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"createRelease.js","sourceRoot":"","sources":["../../src/tools/createRelease.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployRelease.d.ts","sourceRoot":"","sources":["../../src/tools/deployRelease.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"deployRelease.d.ts","sourceRoot":"","sources":["../../src/tools/deployRelease.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,QA4Q1D"}
|
|
@@ -3,83 +3,91 @@ import { z } from "zod";
|
|
|
3
3
|
import {} from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
4
4
|
import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
|
|
5
5
|
import { registerToolDefinition } from "../types/toolConfig.js";
|
|
6
|
+
import { DESTRUCTIVE_WRITE_TOOL_ANNOTATIONS } from "../types/toolAnnotations.js";
|
|
6
7
|
import { handleOctopusApiError } from "../helpers/errorHandling.js";
|
|
8
|
+
import { requireConfirmation, unconfirmedResponse, } from "../helpers/requireConfirmation.js";
|
|
7
9
|
export function registerDeployReleaseTool(server) {
|
|
8
|
-
server.
|
|
10
|
+
server.registerTool("deploy_release", {
|
|
11
|
+
title: "Deploy a release to environments in Octopus Deploy",
|
|
12
|
+
description: `Deploy a release to one or more environments in Octopus Deploy
|
|
9
13
|
|
|
10
14
|
This tool supports both tenanted and untenanted deployments:
|
|
11
15
|
- **Untenanted**: Don't provide tenants or tenantTags. Can deploy to multiple environments at once.
|
|
12
16
|
- **Tenanted**: Provide tenants or tenantTags. Can only deploy to ONE environment, but can target multiple tenants.
|
|
13
17
|
|
|
14
|
-
The tool automatically determines which deployment type to use based on the parameters provided.`,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
18
|
+
The tool automatically determines which deployment type to use based on the parameters provided.`,
|
|
19
|
+
inputSchema: {
|
|
20
|
+
spaceName: z.string().describe("The space name"),
|
|
21
|
+
projectName: z.string().describe("The project name"),
|
|
22
|
+
releaseVersion: z
|
|
23
|
+
.string()
|
|
24
|
+
.describe("The release version to deploy (e.g., '1.0.0')"),
|
|
25
|
+
environmentNames: z
|
|
26
|
+
.array(z.string())
|
|
27
|
+
.describe("Array of environment names. For tenanted deployments, must contain exactly one environment."),
|
|
28
|
+
tenants: z
|
|
29
|
+
.array(z.string())
|
|
30
|
+
.optional()
|
|
31
|
+
.describe("Array of tenant names for tenanted deployment (optional)"),
|
|
32
|
+
tenantTags: z
|
|
33
|
+
.array(z.string())
|
|
34
|
+
.optional()
|
|
35
|
+
.describe("Array of tenant tags for tenanted deployment (e.g., ['Region/US-West', 'Tier/Production'])"),
|
|
36
|
+
forcePackageRedeployment: z
|
|
37
|
+
.boolean()
|
|
38
|
+
.optional()
|
|
39
|
+
.describe("Force redeployment of packages"),
|
|
40
|
+
updateVariableSnapshot: z
|
|
41
|
+
.boolean()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("Update the variable snapshot"),
|
|
44
|
+
forcePackageDownload: z
|
|
45
|
+
.boolean()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("Force package download"),
|
|
48
|
+
specificMachineNames: z
|
|
49
|
+
.array(z.string())
|
|
50
|
+
.optional()
|
|
51
|
+
.describe("Deploy to specific machines only"),
|
|
52
|
+
excludedMachineNames: z
|
|
53
|
+
.array(z.string())
|
|
54
|
+
.optional()
|
|
55
|
+
.describe("Exclude specific machines from deployment"),
|
|
56
|
+
skipStepNames: z
|
|
57
|
+
.array(z.string())
|
|
58
|
+
.optional()
|
|
59
|
+
.describe("Skip specific deployment steps"),
|
|
60
|
+
useGuidedFailure: z
|
|
61
|
+
.boolean()
|
|
62
|
+
.optional()
|
|
63
|
+
.describe("Use guided failure mode"),
|
|
64
|
+
runAt: z
|
|
65
|
+
.string()
|
|
66
|
+
.optional()
|
|
67
|
+
.describe("Schedule deployment for later (ISO 8601 date string)"),
|
|
68
|
+
noRunAfter: z
|
|
69
|
+
.string()
|
|
70
|
+
.optional()
|
|
71
|
+
.describe("Don't run deployment after this time (ISO 8601 date string)"),
|
|
72
|
+
variables: z
|
|
73
|
+
.record(z.string())
|
|
74
|
+
.optional()
|
|
75
|
+
.describe("Prompted variable values as key-value pairs"),
|
|
76
|
+
deploymentFreezeOverrideReason: z
|
|
77
|
+
.string()
|
|
78
|
+
.optional()
|
|
79
|
+
.describe("Reason for overriding deployment freeze"),
|
|
80
|
+
deploymentFreezeNames: z
|
|
81
|
+
.array(z.string())
|
|
82
|
+
.optional()
|
|
83
|
+
.describe("Names of deployment freezes to override"),
|
|
84
|
+
confirm: z
|
|
85
|
+
.boolean()
|
|
86
|
+
.optional()
|
|
87
|
+
.describe("Required only when the MCP client does not support elicitation. Set to true to confirm deployment; otherwise the tool aborts."),
|
|
88
|
+
},
|
|
89
|
+
annotations: DESTRUCTIVE_WRITE_TOOL_ANNOTATIONS,
|
|
90
|
+
}, async ({ spaceName, projectName, releaseVersion, environmentNames, tenants, tenantTags, forcePackageRedeployment, updateVariableSnapshot, forcePackageDownload, specificMachineNames, excludedMachineNames, skipStepNames, useGuidedFailure, runAt, noRunAfter, variables, deploymentFreezeOverrideReason, deploymentFreezeNames, confirm, }) => {
|
|
83
91
|
try {
|
|
84
92
|
// Validate environment names
|
|
85
93
|
if (!environmentNames || environmentNames.length === 0) {
|
|
@@ -93,9 +101,11 @@ The tool automatically determines which deployment type to use based on the para
|
|
|
93
101
|
throw new Error(`Tenanted deployments can only target one environment at a time. You provided ${environmentNames.length} environments. ` +
|
|
94
102
|
`For tenanted deployments, specify exactly one environment in environmentNames, then use tenants or tenantTags to target specific tenants.`);
|
|
95
103
|
}
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
104
|
+
const tenantSummary = isTenanted
|
|
105
|
+
? ` for tenants [${(tenants ?? []).join(", ")}${tenantTags?.length ? `; tags: ${tenantTags.join(", ")}` : ""}]`
|
|
106
|
+
: "";
|
|
107
|
+
const confirmMessage = `Deploy release ${releaseVersion} of ${projectName} to ` +
|
|
108
|
+
`[${environmentNames.join(", ")}]${tenantSummary} in space ${spaceName}?`;
|
|
99
109
|
// Build common parameters
|
|
100
110
|
const commonParams = {
|
|
101
111
|
spaceName: spaceName,
|
|
@@ -129,30 +139,36 @@ The tool automatically determines which deployment type to use based on the para
|
|
|
129
139
|
DeploymentFreezeNames: deploymentFreezeNames,
|
|
130
140
|
}),
|
|
131
141
|
};
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
};
|
|
154
|
-
response = await deploymentRepository.create(command);
|
|
142
|
+
const tenantedCommand = {
|
|
143
|
+
...commonParams,
|
|
144
|
+
ReleaseVersion: releaseVersion,
|
|
145
|
+
EnvironmentName: environmentNames[0],
|
|
146
|
+
Tenants: tenants || [],
|
|
147
|
+
TenantTags: tenantTags || [],
|
|
148
|
+
};
|
|
149
|
+
const untenantedCommand = {
|
|
150
|
+
...commonParams,
|
|
151
|
+
ReleaseVersion: releaseVersion,
|
|
152
|
+
EnvironmentNames: environmentNames,
|
|
153
|
+
};
|
|
154
|
+
const confirmation = await requireConfirmation(server, {
|
|
155
|
+
message: confirmMessage,
|
|
156
|
+
fallbackConfirm: confirm,
|
|
157
|
+
change: {
|
|
158
|
+
source: {},
|
|
159
|
+
target: isTenanted ? tenantedCommand : untenantedCommand,
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
if (!confirmation.confirmed) {
|
|
163
|
+
return unconfirmedResponse(confirmation, { action: "deployment" });
|
|
155
164
|
}
|
|
165
|
+
const configuration = getClientConfigurationFromEnvironment();
|
|
166
|
+
const client = await Client.create(configuration);
|
|
167
|
+
const deploymentRepository = new DeploymentRepository(client, spaceName);
|
|
168
|
+
const deploymentType = isTenanted ? "tenanted" : "untenanted";
|
|
169
|
+
const response = isTenanted
|
|
170
|
+
? await deploymentRepository.createTenanted(tenantedCommand)
|
|
171
|
+
: await deploymentRepository.create(untenantedCommand);
|
|
156
172
|
// Format the response
|
|
157
173
|
const tasks = response.DeploymentServerTasks || [];
|
|
158
174
|
return {
|
|
@@ -168,7 +184,7 @@ The tool automatically determines which deployment type to use based on the para
|
|
|
168
184
|
deploymentId: task.DeploymentId,
|
|
169
185
|
})),
|
|
170
186
|
message: `Successfully created ${tasks.length} deployment(s) for release ${releaseVersion}`,
|
|
171
|
-
helpText: `
|
|
187
|
+
helpText: `Fetch octopus://spaces/{spaceName}/tasks/{taskId} (or /details for the structured activity tree) via resources/read or read_resource to monitor deployment progress. To search the raw log for a specific error or step, call grep_task_log with the taskId. Use list_deployments for high-level deployment listings.`,
|
|
172
188
|
}, null, 2),
|
|
173
189
|
},
|
|
174
190
|
],
|
|
@@ -203,5 +219,9 @@ registerToolDefinition({
|
|
|
203
219
|
toolName: "deploy_release",
|
|
204
220
|
config: { toolset: "deployments", readOnly: false },
|
|
205
221
|
registerFn: registerDeployReleaseTool,
|
|
222
|
+
// DeploymentRepository.create / .createTenanted use the Executions API
|
|
223
|
+
// (~/api/{space}/deployments/create/v1 and /create/tenanted/v1-alpha) which
|
|
224
|
+
// the api-client refuses to call against servers older than 2022.3.5512.
|
|
225
|
+
minimumOctopusVersion: "2022.3.5512",
|
|
206
226
|
});
|
|
207
227
|
//# sourceMappingURL=deployRelease.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployRelease.js","sourceRoot":"","sources":["../../src/tools/deployRelease.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,qCAAqC,EAAE,MAAM,qDAAqD,CAAC;AAC5G,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"deployRelease.js","sourceRoot":"","sources":["../../src/tools/deployRelease.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/tools/execute.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsKzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAmLpD"}
|