@knowttl/ado-axi 0.0.0-stage → 0.5.0
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/LICENSE +21 -0
- package/README.md +261 -2
- package/SKILL.md +334 -0
- package/assets/ado-axi-header.png +0 -0
- package/dist/bin/ado-axi.d.ts +3 -0
- package/dist/bin/ado-axi.d.ts.map +1 -0
- package/dist/bin/ado-axi.js +192 -0
- package/dist/bin/ado-axi.js.map +1 -0
- package/dist/commands/agent.d.ts +3 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +26 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/api.d.ts +2 -0
- package/dist/commands/api.d.ts.map +1 -0
- package/dist/commands/api.js +161 -0
- package/dist/commands/api.js.map +1 -0
- package/dist/commands/classification.d.ts +2 -0
- package/dist/commands/classification.d.ts.map +1 -0
- package/dist/commands/classification.js +54 -0
- package/dist/commands/classification.js.map +1 -0
- package/dist/commands/config.d.ts +2 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +109 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +67 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/home.d.ts +2 -0
- package/dist/commands/home.d.ts.map +1 -0
- package/dist/commands/home.js +132 -0
- package/dist/commands/home.js.map +1 -0
- package/dist/commands/pipeline.d.ts +2 -0
- package/dist/commands/pipeline.d.ts.map +1 -0
- package/dist/commands/pipeline.js +572 -0
- package/dist/commands/pipeline.js.map +1 -0
- package/dist/commands/pipelineAdmin.d.ts +3 -0
- package/dist/commands/pipelineAdmin.d.ts.map +1 -0
- package/dist/commands/pipelineAdmin.js +152 -0
- package/dist/commands/pipelineAdmin.js.map +1 -0
- package/dist/commands/pipelineArtifact.d.ts +3 -0
- package/dist/commands/pipelineArtifact.d.ts.map +1 -0
- package/dist/commands/pipelineArtifact.js +68 -0
- package/dist/commands/pipelineArtifact.js.map +1 -0
- package/dist/commands/policy.d.ts +3 -0
- package/dist/commands/policy.d.ts.map +1 -0
- package/dist/commands/policy.js +31 -0
- package/dist/commands/policy.js.map +1 -0
- package/dist/commands/pool.d.ts +3 -0
- package/dist/commands/pool.d.ts.map +1 -0
- package/dist/commands/pool.js +19 -0
- package/dist/commands/pool.js.map +1 -0
- package/dist/commands/pr.d.ts +9 -0
- package/dist/commands/pr.d.ts.map +1 -0
- package/dist/commands/pr.js +1028 -0
- package/dist/commands/pr.js.map +1 -0
- package/dist/commands/query.d.ts +2 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +29 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/queue.d.ts +3 -0
- package/dist/commands/queue.d.ts.map +1 -0
- package/dist/commands/queue.js +21 -0
- package/dist/commands/queue.js.map +1 -0
- package/dist/commands/ref.d.ts +3 -0
- package/dist/commands/ref.d.ts.map +1 -0
- package/dist/commands/ref.js +204 -0
- package/dist/commands/ref.js.map +1 -0
- package/dist/commands/release.d.ts +3 -0
- package/dist/commands/release.d.ts.map +1 -0
- package/dist/commands/release.js +91 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/repo.d.ts +3 -0
- package/dist/commands/repo.d.ts.map +1 -0
- package/dist/commands/repo.js +261 -0
- package/dist/commands/repo.js.map +1 -0
- package/dist/commands/repoAdmin.d.ts +3 -0
- package/dist/commands/repoAdmin.d.ts.map +1 -0
- package/dist/commands/repoAdmin.js +195 -0
- package/dist/commands/repoAdmin.js.map +1 -0
- package/dist/commands/security.d.ts +3 -0
- package/dist/commands/security.d.ts.map +1 -0
- package/dist/commands/security.js +57 -0
- package/dist/commands/security.js.map +1 -0
- package/dist/commands/serviceEndpoint.d.ts +3 -0
- package/dist/commands/serviceEndpoint.d.ts.map +1 -0
- package/dist/commands/serviceEndpoint.js +29 -0
- package/dist/commands/serviceEndpoint.js.map +1 -0
- package/dist/commands/team.d.ts +3 -0
- package/dist/commands/team.d.ts.map +1 -0
- package/dist/commands/team.js +33 -0
- package/dist/commands/team.js.map +1 -0
- package/dist/commands/test.d.ts +2 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +183 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/user.d.ts +3 -0
- package/dist/commands/user.d.ts.map +1 -0
- package/dist/commands/user.js +20 -0
- package/dist/commands/user.js.map +1 -0
- package/dist/commands/variableGroup.d.ts +3 -0
- package/dist/commands/variableGroup.d.ts.map +1 -0
- package/dist/commands/variableGroup.js +23 -0
- package/dist/commands/variableGroup.js.map +1 -0
- package/dist/commands/workItem.d.ts +12 -0
- package/dist/commands/workItem.d.ts.map +1 -0
- package/dist/commands/workItem.js +940 -0
- package/dist/commands/workItem.js.map +1 -0
- package/dist/commands/workItemAttachment.d.ts +3 -0
- package/dist/commands/workItemAttachment.d.ts.map +1 -0
- package/dist/commands/workItemAttachment.js +136 -0
- package/dist/commands/workItemAttachment.js.map +1 -0
- package/dist/help.d.ts +4 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +383 -0
- package/dist/help.js.map +1 -0
- package/dist/lib/adoUrl.d.ts +19 -0
- package/dist/lib/adoUrl.d.ts.map +1 -0
- package/dist/lib/adoUrl.js +104 -0
- package/dist/lib/adoUrl.js.map +1 -0
- package/dist/lib/args.d.ts +14 -0
- package/dist/lib/args.d.ts.map +1 -0
- package/dist/lib/args.js +94 -0
- package/dist/lib/args.js.map +1 -0
- package/dist/lib/argv.d.ts +8 -0
- package/dist/lib/argv.d.ts.map +1 -0
- package/dist/lib/argv.js +35 -0
- package/dist/lib/argv.js.map +1 -0
- package/dist/lib/audit.d.ts +21 -0
- package/dist/lib/audit.d.ts.map +1 -0
- package/dist/lib/audit.js +128 -0
- package/dist/lib/audit.js.map +1 -0
- package/dist/lib/auth.d.ts +8 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +127 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/client.d.ts +32 -0
- package/dist/lib/client.d.ts.map +1 -0
- package/dist/lib/client.js +181 -0
- package/dist/lib/client.js.map +1 -0
- package/dist/lib/config.d.ts +39 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +150 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/context.d.ts +5 -0
- package/dist/lib/context.d.ts.map +1 -0
- package/dist/lib/context.js +20 -0
- package/dist/lib/context.js.map +1 -0
- package/dist/lib/format.d.ts +17 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +65 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/paths.d.ts +3 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +13 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/repositoryPath.d.ts +2 -0
- package/dist/lib/repositoryPath.d.ts.map +1 -0
- package/dist/lib/repositoryPath.js +26 -0
- package/dist/lib/repositoryPath.js.map +1 -0
- package/dist/lib/stdin.d.ts +2 -0
- package/dist/lib/stdin.d.ts.map +1 -0
- package/dist/lib/stdin.js +11 -0
- package/dist/lib/stdin.js.map +1 -0
- package/dist/lib/writes.d.ts +3 -0
- package/dist/lib/writes.d.ts.map +1 -0
- package/dist/lib/writes.js +37 -0
- package/dist/lib/writes.js.map +1 -0
- package/package.json +65 -4
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { assertKnownFlags, flagString, parseArgs } from "../lib/args.js";
|
|
2
|
+
import { request } from "../lib/client.js";
|
|
3
|
+
import { loadConfig, resolveProfile } from "../lib/config.js";
|
|
4
|
+
import { collapseHomeDirectory } from "../lib/paths.js";
|
|
5
|
+
const DOCTOR_FLAGS = ["config"];
|
|
6
|
+
export async function doctorCommand(argv) {
|
|
7
|
+
const args = parseArgs(argv);
|
|
8
|
+
assertKnownFlags(args, DOCTOR_FLAGS, "doctor");
|
|
9
|
+
const explicit = flagString(args, "config");
|
|
10
|
+
const { path, config } = loadConfig(explicit);
|
|
11
|
+
const names = Object.keys(config?.profiles ?? {});
|
|
12
|
+
const targets = [];
|
|
13
|
+
if (names.length > 0) {
|
|
14
|
+
for (const name of names) {
|
|
15
|
+
const entry = config?.profiles[name];
|
|
16
|
+
targets.push({ ...entry, name, source: "config", configPath: path });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
targets.push(resolveProfile({ org: flagString(args, "org"), project: flagString(args, "project") }));
|
|
21
|
+
}
|
|
22
|
+
const checks = await Promise.all(targets.map((profile) => checkProfile(profile)));
|
|
23
|
+
const failing = checks.filter((c) => c.status !== "ok");
|
|
24
|
+
return {
|
|
25
|
+
config: collapseHomeDirectory(path),
|
|
26
|
+
default: config?.defaultProfile ?? (names.length === 1 ? names[0] : "(none)"),
|
|
27
|
+
profiles: checks,
|
|
28
|
+
status: failing.length === 0 ? "all profiles authenticated" : `${failing.length} of ${checks.length} profiles failing`,
|
|
29
|
+
...(failing.length > 0
|
|
30
|
+
? {
|
|
31
|
+
help: failing.flatMap((c) => c.fix ?? []),
|
|
32
|
+
}
|
|
33
|
+
: {}),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async function checkProfile(profile) {
|
|
37
|
+
const base = {
|
|
38
|
+
name: profile.name,
|
|
39
|
+
org: profile.org,
|
|
40
|
+
project: profile.project ?? "",
|
|
41
|
+
auth: profile.auth === "pat" ? `pat ($${profile.patEnv ?? "ADO_AXI_PAT"})` : "az login",
|
|
42
|
+
status: "ok",
|
|
43
|
+
identity: "",
|
|
44
|
+
detail: "",
|
|
45
|
+
};
|
|
46
|
+
try {
|
|
47
|
+
const data = await request(profile, {
|
|
48
|
+
path: "_apis/connectionData",
|
|
49
|
+
apiVersion: "7.1-preview",
|
|
50
|
+
});
|
|
51
|
+
base.identity = data.authenticatedUser?.providerDisplayName ?? "";
|
|
52
|
+
if (profile.project) {
|
|
53
|
+
await request(profile, { path: "_apis/projects", query: { $top: 1 }, project: undefined });
|
|
54
|
+
}
|
|
55
|
+
return base;
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
const error = err;
|
|
59
|
+
return {
|
|
60
|
+
...base,
|
|
61
|
+
status: error.code ?? "ERROR",
|
|
62
|
+
detail: error.message ?? String(err),
|
|
63
|
+
fix: (error.suggestions ?? []).map((s) => `[${profile.name}] ${s}`),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../src/commands/home.ts"],"names":[],"mappings":"AASA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyDlF"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { AxiError } from "axi-sdk-js";
|
|
2
|
+
import { collapseHomeDirectory, homeHeader } from "../lib/paths.js";
|
|
3
|
+
import { parseArgs } from "../lib/args.js";
|
|
4
|
+
import { request } from "../lib/client.js";
|
|
5
|
+
import { loadConfig } from "../lib/config.js";
|
|
6
|
+
import { profileFromArgs } from "../lib/context.js";
|
|
7
|
+
import { personName, shortDate } from "../lib/format.js";
|
|
8
|
+
import { DESCRIPTION } from "../help.js";
|
|
9
|
+
export async function homeCommand(argv) {
|
|
10
|
+
const args = parseArgs(argv);
|
|
11
|
+
const header = homeHeader(DESCRIPTION);
|
|
12
|
+
let profile;
|
|
13
|
+
try {
|
|
14
|
+
profile = profileFromArgs(args);
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
const { path, config } = loadConfig();
|
|
18
|
+
return {
|
|
19
|
+
...header,
|
|
20
|
+
config: collapseHomeDirectory(path),
|
|
21
|
+
profiles: Object.keys(config?.profiles ?? {}).join(", ") || "(none configured)",
|
|
22
|
+
status: err instanceof AxiError ? err.message : String(err),
|
|
23
|
+
help: [
|
|
24
|
+
"Run `ado-axi config init --org <org> --project <project>` to configure a profile",
|
|
25
|
+
"Run `ado-axi config list` to see configured profiles",
|
|
26
|
+
"Run `ado-axi doctor` to check authentication",
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const out = {
|
|
31
|
+
...header,
|
|
32
|
+
org: profile.org,
|
|
33
|
+
project: profile.project ?? "(none — pass --project or set it on the profile)",
|
|
34
|
+
profile: profile.name,
|
|
35
|
+
};
|
|
36
|
+
if (!profile.project) {
|
|
37
|
+
out.help = [
|
|
38
|
+
"Run `ado-axi project list` to see projects in this organization",
|
|
39
|
+
"Run `ado-axi config init --org <org> --project <project>` to set a default project",
|
|
40
|
+
];
|
|
41
|
+
return out;
|
|
42
|
+
}
|
|
43
|
+
const [workItems, prs, runs] = await Promise.allSettled([
|
|
44
|
+
myWorkItems(profile),
|
|
45
|
+
activePullRequests(profile),
|
|
46
|
+
recentRuns(profile),
|
|
47
|
+
]);
|
|
48
|
+
if (workItems.status === "fulfilled")
|
|
49
|
+
out["my-work-items"] = workItems.value;
|
|
50
|
+
else
|
|
51
|
+
out["my-work-items"] = describeFailure(workItems.reason);
|
|
52
|
+
if (prs.status === "fulfilled")
|
|
53
|
+
out["active-pull-requests"] = prs.value;
|
|
54
|
+
else
|
|
55
|
+
out["active-pull-requests"] = describeFailure(prs.reason);
|
|
56
|
+
if (runs.status === "fulfilled")
|
|
57
|
+
out["recent-runs"] = runs.value;
|
|
58
|
+
else
|
|
59
|
+
out["recent-runs"] = describeFailure(runs.reason);
|
|
60
|
+
out.help = [
|
|
61
|
+
"Run `ado-axi work-item list` for all open work items",
|
|
62
|
+
"Run `ado-axi pr list` for all active pull requests",
|
|
63
|
+
"Run `ado-axi pipeline runs` for recent pipeline runs",
|
|
64
|
+
"Run `ado-axi --help` for the full command surface",
|
|
65
|
+
];
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
function describeFailure(reason) {
|
|
69
|
+
return reason instanceof AxiError ? `unavailable: ${reason.message}` : `unavailable: ${String(reason)}`;
|
|
70
|
+
}
|
|
71
|
+
async function myWorkItems(profile) {
|
|
72
|
+
const project = profile.project;
|
|
73
|
+
const wiql = `SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '${project.replace(/'/g, "''")}' AND [System.AssignedTo] = @me AND [System.State] NOT IN ('Closed', 'Removed', 'Done', 'Resolved') ORDER BY [System.ChangedDate] DESC`;
|
|
74
|
+
const result = await request(profile, {
|
|
75
|
+
method: "POST",
|
|
76
|
+
path: "_apis/wit/wiql",
|
|
77
|
+
project,
|
|
78
|
+
query: { $top: 5 },
|
|
79
|
+
body: { query: wiql },
|
|
80
|
+
});
|
|
81
|
+
const ids = (result.workItems ?? []).map((w) => w.id).slice(0, 5);
|
|
82
|
+
if (ids.length === 0)
|
|
83
|
+
return `0 open work items assigned to you in ${project}`;
|
|
84
|
+
const batch = await request(profile, {
|
|
85
|
+
method: "POST",
|
|
86
|
+
path: "_apis/wit/workitemsbatch",
|
|
87
|
+
body: { ids, fields: ["System.WorkItemType", "System.Title", "System.State"] },
|
|
88
|
+
});
|
|
89
|
+
return (batch.value ?? []).map((item) => ({
|
|
90
|
+
id: item.id,
|
|
91
|
+
type: String(item.fields?.["System.WorkItemType"] ?? ""),
|
|
92
|
+
title: String(item.fields?.["System.Title"] ?? ""),
|
|
93
|
+
state: String(item.fields?.["System.State"] ?? ""),
|
|
94
|
+
}));
|
|
95
|
+
}
|
|
96
|
+
async function activePullRequests(profile) {
|
|
97
|
+
const project = profile.project;
|
|
98
|
+
const result = await request(profile, {
|
|
99
|
+
path: "_apis/git/pullrequests",
|
|
100
|
+
project,
|
|
101
|
+
query: { "searchCriteria.status": "active", $top: 5 },
|
|
102
|
+
});
|
|
103
|
+
const prs = result.value ?? [];
|
|
104
|
+
if (prs.length === 0)
|
|
105
|
+
return `0 active pull requests in ${project}`;
|
|
106
|
+
return prs.map((pr) => ({
|
|
107
|
+
id: pr.pullRequestId,
|
|
108
|
+
repo: pr.repository?.name ?? "",
|
|
109
|
+
title: pr.title ?? "",
|
|
110
|
+
author: personName(pr.createdBy),
|
|
111
|
+
status: pr.isDraft ? "draft" : "active",
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
async function recentRuns(profile) {
|
|
115
|
+
const project = profile.project;
|
|
116
|
+
const result = await request(profile, {
|
|
117
|
+
path: "_apis/build/builds",
|
|
118
|
+
project,
|
|
119
|
+
query: { $top: 5, queryOrder: "queueTimeDescending" },
|
|
120
|
+
});
|
|
121
|
+
const builds = result.value ?? [];
|
|
122
|
+
if (builds.length === 0)
|
|
123
|
+
return `0 pipeline runs in ${project}`;
|
|
124
|
+
return builds.map((b) => ({
|
|
125
|
+
id: b.id,
|
|
126
|
+
pipeline: b.definition?.name ?? "",
|
|
127
|
+
status: b.status ?? "",
|
|
128
|
+
result: b.result ?? "",
|
|
129
|
+
queued: shortDate(b.queueTime),
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=home.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"home.js","sourceRoot":"","sources":["../../src/commands/home.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/pipeline.ts"],"names":[],"mappings":"AA2CA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAiDtF"}
|