@weiyentan/opencode-plugin-awx 0.2.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.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +262 -0
  3. package/dist/auth.d.ts +112 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +180 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/client.d.ts +148 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +334 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/contracts/job-detail.d.ts +141 -0
  12. package/dist/contracts/job-detail.d.ts.map +1 -0
  13. package/dist/contracts/job-detail.js +98 -0
  14. package/dist/contracts/job-detail.js.map +1 -0
  15. package/dist/contracts/sync-project.d.ts +31 -0
  16. package/dist/contracts/sync-project.d.ts.map +1 -0
  17. package/dist/contracts/sync-project.js +30 -0
  18. package/dist/contracts/sync-project.js.map +1 -0
  19. package/dist/index.d.ts +16 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +754 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/job-status.d.ts +116 -0
  24. package/dist/job-status.d.ts.map +1 -0
  25. package/dist/job-status.js +168 -0
  26. package/dist/job-status.js.map +1 -0
  27. package/dist/launch.d.ts +76 -0
  28. package/dist/launch.d.ts.map +1 -0
  29. package/dist/launch.js +133 -0
  30. package/dist/launch.js.map +1 -0
  31. package/dist/list-projects.d.ts +63 -0
  32. package/dist/list-projects.d.ts.map +1 -0
  33. package/dist/list-projects.js +84 -0
  34. package/dist/list-projects.js.map +1 -0
  35. package/dist/list-templates.d.ts +60 -0
  36. package/dist/list-templates.d.ts.map +1 -0
  37. package/dist/list-templates.js +120 -0
  38. package/dist/list-templates.js.map +1 -0
  39. package/dist/metrics.d.ts +174 -0
  40. package/dist/metrics.d.ts.map +1 -0
  41. package/dist/metrics.js +275 -0
  42. package/dist/metrics.js.map +1 -0
  43. package/dist/transforms.d.ts +52 -0
  44. package/dist/transforms.d.ts.map +1 -0
  45. package/dist/transforms.js +108 -0
  46. package/dist/transforms.js.map +1 -0
  47. package/package.json +56 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * job-status.ts — AWX Job Status Mapping
3
+ *
4
+ * Transforms raw AWX API job responses into the canonical
5
+ * JobDetailOutput v1.0 contract format.
6
+ *
7
+ * ## Key Transformations
8
+ *
9
+ * - **related**: Extracts resolved names from AWX `summary_fields`
10
+ * (inventory, project, job_template, instance_group, created_by,
11
+ * credentials, labels) rather than returning raw URLs.
12
+ *
13
+ * - **host_status_counts**: Maps from `host_summary` (AWX key
14
+ * "failures" → contract key "failed").
15
+ *
16
+ * - **derived**: Computes booleans (is_successful, is_failed,
17
+ * has_unreachable_hosts) from job status and host counts.
18
+ *
19
+ * - **warnings / errors**: Populated from job status context.
20
+ *
21
+ * ## Usage
22
+ *
23
+ * ```ts
24
+ * const response = await fetch(client, "GET", "/api/v2/jobs/142/");
25
+ * const awxJob = await response.json();
26
+ * const output = mapAwxJobToContract(awxJob);
27
+ * ```
28
+ */
29
+ import type { AwxClient } from "./client.js";
30
+ import type { JobDetailOutput } from "./contracts/job-detail.js";
31
+ /**
32
+ * Raw AWX API job response shape (the subset we care about).
33
+ * We use a broad type since we're accessing dynamic properties.
34
+ */
35
+ export interface RawAwxJob {
36
+ id: number;
37
+ name: string;
38
+ status: string;
39
+ failed: boolean;
40
+ job_type: string;
41
+ playbook: string;
42
+ created: string;
43
+ started: string | null;
44
+ finished: string | null;
45
+ elapsed: number | null;
46
+ execution_node: string;
47
+ controller_node: string;
48
+ scm_branch: string;
49
+ verbosity: number;
50
+ forks: number | null;
51
+ limit: string;
52
+ summary_fields?: {
53
+ inventory?: {
54
+ id?: number;
55
+ name?: string;
56
+ };
57
+ project?: {
58
+ id?: number;
59
+ name?: string;
60
+ };
61
+ job_template?: {
62
+ id?: number;
63
+ name?: string;
64
+ };
65
+ instance_group?: {
66
+ id?: number;
67
+ name?: string;
68
+ };
69
+ created_by?: {
70
+ id?: number;
71
+ username?: string;
72
+ };
73
+ credentials?: Array<{
74
+ id?: number;
75
+ name?: string;
76
+ }>;
77
+ labels?: {
78
+ results?: Array<{
79
+ id?: number;
80
+ name?: string;
81
+ }>;
82
+ };
83
+ };
84
+ host_summary?: {
85
+ ok?: number;
86
+ failures?: number;
87
+ changed?: number;
88
+ unreachable?: number;
89
+ skipped?: number;
90
+ };
91
+ }
92
+ /**
93
+ * Transform a raw AWX API job response into the JobDetailOutput v1.0 contract.
94
+ *
95
+ * Pure function — no side effects, no HTTP calls.
96
+ *
97
+ * @param awxJob Raw JSON-decoded AWX API response from /api/v2/jobs/<id>/
98
+ * @returns A JobDetailOutput matching the v1.0 contract
99
+ */
100
+ export declare function mapAwxJobToContract(awxJob: RawAwxJob, stdout?: string): JobDetailOutput;
101
+ /**
102
+ * Fetch job status from AWX and return formatted JobDetailOutput.
103
+ *
104
+ * Makes HTTP requests via the AwxClient:
105
+ * 1. GET /api/v2/jobs/<jobId>/
106
+ * 2. Optionally GET /api/v2/jobs/<jobId>/stdout/?format=txt
107
+ *
108
+ * @param client The AWX HTTP client
109
+ * @param jobId Numeric job ID
110
+ * @param includeStdout Whether to fetch and include stdout
111
+ * @param abortSignal Optional abort signal
112
+ * @param toolName Optional tool name for metrics attribution (default: "awx-job-status")
113
+ * @returns Formatted JobDetailOutput
114
+ */
115
+ export declare function fetchJobStatus(client: AwxClient, jobId: number, includeStdout?: boolean, abortSignal?: AbortSignal, toolName?: string): Promise<JobDetailOutput>;
116
+ //# sourceMappingURL=job-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-status.d.ts","sourceRoot":"","sources":["../src/job-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAKV,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAInC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE;YAAE,EAAE,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3C,OAAO,CAAC,EAAE;YAAE,EAAE,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,YAAY,CAAC,EAAE;YAAE,EAAE,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,cAAc,CAAC,EAAE;YAAE,EAAE,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAChD,UAAU,CAAC,EAAE;YAAE,EAAE,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAChD,WAAW,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACpD,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,KAAK,CAAC;gBAAE,EAAE,CAAC,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC;KAC9D,CAAC;IACF,YAAY,CAAC,EAAE;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAuFD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,eAAe,CAmCjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,OAAO,EACvB,WAAW,CAAC,EAAE,WAAW,EACzB,QAAQ,SAAmB,GAC1B,OAAO,CAAC,eAAe,CAAC,CAkC1B"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * job-status.ts — AWX Job Status Mapping
3
+ *
4
+ * Transforms raw AWX API job responses into the canonical
5
+ * JobDetailOutput v1.0 contract format.
6
+ *
7
+ * ## Key Transformations
8
+ *
9
+ * - **related**: Extracts resolved names from AWX `summary_fields`
10
+ * (inventory, project, job_template, instance_group, created_by,
11
+ * credentials, labels) rather than returning raw URLs.
12
+ *
13
+ * - **host_status_counts**: Maps from `host_summary` (AWX key
14
+ * "failures" → contract key "failed").
15
+ *
16
+ * - **derived**: Computes booleans (is_successful, is_failed,
17
+ * has_unreachable_hosts) from job status and host counts.
18
+ *
19
+ * - **warnings / errors**: Populated from job status context.
20
+ *
21
+ * ## Usage
22
+ *
23
+ * ```ts
24
+ * const response = await fetch(client, "GET", "/api/v2/jobs/142/");
25
+ * const awxJob = await response.json();
26
+ * const output = mapAwxJobToContract(awxJob);
27
+ * ```
28
+ */
29
+ // ─── Mapping Functions ─────────────────────────────────────────
30
+ /**
31
+ * Resolve the related resource names from AWX summary_fields.
32
+ */
33
+ function mapRelated(awxJob) {
34
+ const sf = awxJob.summary_fields ?? {};
35
+ return {
36
+ inventory_name: sf.inventory?.name ?? "",
37
+ project_name: sf.project?.name ?? "",
38
+ job_template_name: sf.job_template?.name ?? "",
39
+ instance_group_name: sf.instance_group?.name ?? "",
40
+ created_by: sf.created_by?.username ?? "",
41
+ credential_names: sf.credentials?.map((c) => c.name ?? "").filter(Boolean) ?? [],
42
+ label_names: sf.labels?.results?.map((l) => l.name ?? "").filter(Boolean) ?? [],
43
+ };
44
+ }
45
+ /**
46
+ * Map host_summary from the AWX API to host_status_counts.
47
+ * Note: AWX uses the key "failures", but the contract uses "failed".
48
+ */
49
+ function mapHostStatusCounts(awxJob) {
50
+ const hs = awxJob.host_summary ?? {};
51
+ return {
52
+ ok: hs.ok ?? 0,
53
+ failed: hs.failures ?? 0,
54
+ skipped: hs.skipped ?? 0,
55
+ changed: hs.changed ?? 0,
56
+ unreachable: hs.unreachable ?? 0,
57
+ };
58
+ }
59
+ /**
60
+ * Compute derived booleans from job status and host counts.
61
+ */
62
+ function mapDerived(awxJob) {
63
+ const failed = awxJob.failed;
64
+ const unreachable = awxJob.host_summary?.unreachable ?? 0;
65
+ return {
66
+ is_successful: !failed,
67
+ is_failed: failed,
68
+ has_unreachable_hosts: unreachable > 0,
69
+ };
70
+ }
71
+ /**
72
+ * Extract user-facing error messages from a job.
73
+ */
74
+ function mapErrors(awxJob) {
75
+ const hostFailed = awxJob.host_summary?.failures ?? 0;
76
+ const unreachable = awxJob.host_summary?.unreachable ?? 0;
77
+ const errors = [];
78
+ if (awxJob.failed && hostFailed > 0) {
79
+ errors.push(`Job failed: ${hostFailed} host(s) reported failure(s).`);
80
+ }
81
+ if (unreachable > 0) {
82
+ errors.push(`${unreachable} host(s) were unreachable during job execution.`);
83
+ }
84
+ return errors;
85
+ }
86
+ /**
87
+ * Extract user-facing warning messages.
88
+ */
89
+ function mapWarnings(_awxJob) {
90
+ // Initial implementation: no warnings inferred from job detail alone.
91
+ // Future enhancement: parse stdout for deprecation warnings.
92
+ return [];
93
+ }
94
+ // ─── Public API ────────────────────────────────────────────────
95
+ /**
96
+ * Transform a raw AWX API job response into the JobDetailOutput v1.0 contract.
97
+ *
98
+ * Pure function — no side effects, no HTTP calls.
99
+ *
100
+ * @param awxJob Raw JSON-decoded AWX API response from /api/v2/jobs/<id>/
101
+ * @returns A JobDetailOutput matching the v1.0 contract
102
+ */
103
+ export function mapAwxJobToContract(awxJob, stdout) {
104
+ const job = {
105
+ id: awxJob.id,
106
+ name: awxJob.name,
107
+ status: awxJob.status,
108
+ failed: awxJob.failed,
109
+ job_type: awxJob.job_type,
110
+ playbook: awxJob.playbook,
111
+ created: awxJob.created,
112
+ started: awxJob.started,
113
+ finished: awxJob.finished,
114
+ elapsed: awxJob.elapsed,
115
+ execution_node: awxJob.execution_node,
116
+ controller_node: awxJob.controller_node,
117
+ scm_branch: awxJob.scm_branch,
118
+ verbosity: awxJob.verbosity,
119
+ forks: awxJob.forks,
120
+ limit: awxJob.limit,
121
+ };
122
+ const output = {
123
+ schema_version: "1.0",
124
+ job,
125
+ related: mapRelated(awxJob),
126
+ host_status_counts: mapHostStatusCounts(awxJob),
127
+ derived: mapDerived(awxJob),
128
+ warnings: mapWarnings(awxJob),
129
+ errors: mapErrors(awxJob),
130
+ };
131
+ if (stdout !== undefined) {
132
+ output.stdout = stdout;
133
+ }
134
+ return output;
135
+ }
136
+ /**
137
+ * Fetch job status from AWX and return formatted JobDetailOutput.
138
+ *
139
+ * Makes HTTP requests via the AwxClient:
140
+ * 1. GET /api/v2/jobs/<jobId>/
141
+ * 2. Optionally GET /api/v2/jobs/<jobId>/stdout/?format=txt
142
+ *
143
+ * @param client The AWX HTTP client
144
+ * @param jobId Numeric job ID
145
+ * @param includeStdout Whether to fetch and include stdout
146
+ * @param abortSignal Optional abort signal
147
+ * @param toolName Optional tool name for metrics attribution (default: "awx-job-status")
148
+ * @returns Formatted JobDetailOutput
149
+ */
150
+ export async function fetchJobStatus(client, jobId, includeStdout, abortSignal, toolName = "awx-job-status") {
151
+ // Fetch job detail
152
+ const jobResponse = await client.request(toolName, `/api/v2/jobs/${jobId}/`, undefined, abortSignal);
153
+ if (!jobResponse.ok) {
154
+ const errorBody = await jobResponse.text().catch(() => "");
155
+ throw new Error(`AWX API error (${jobResponse.status}): ${errorBody || jobResponse.statusText}`);
156
+ }
157
+ const awxJob = (await jobResponse.json());
158
+ // Optionally fetch stdout
159
+ let stdout;
160
+ if (includeStdout) {
161
+ const stdoutResponse = await client.request(toolName, `/api/v2/jobs/${jobId}/stdout/?format=txt`, undefined, abortSignal);
162
+ if (stdoutResponse.ok) {
163
+ stdout = await stdoutResponse.text();
164
+ }
165
+ }
166
+ return mapAwxJobToContract(awxJob, stdout);
167
+ }
168
+ //# sourceMappingURL=job-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-status.js","sourceRoot":"","sources":["../src/job-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import type { AwxClient } from "./client.js";
2
+ /** Options for the transforms pipeline */
3
+ export interface PipelineOptions {
4
+ /**
5
+ * Key in extra_vars containing the SCM URL to normalize (default: "scm_url")
6
+ */
7
+ scmUrlKey?: string;
8
+ /**
9
+ * Key in extra_vars containing the SCM branch ref to infer (default: "scm_branch")
10
+ */
11
+ scmBranchKey?: string;
12
+ /**
13
+ * List of required variable names. Variables whose value is null,
14
+ * undefined, or an empty string are considered missing.
15
+ * (default: ["inventory", "scm_url", "scm_branch"])
16
+ */
17
+ requiredVars?: string[];
18
+ /**
19
+ * Abort signal to cancel the request (forwarded to the HTTP client).
20
+ */
21
+ abortSignal?: AbortSignal;
22
+ }
23
+ /** Result of the transforms pipeline */
24
+ export interface PipelineResult {
25
+ /** Transformed extra_vars (shallow copy, only mutated fields change) */
26
+ extraVars: Record<string, unknown>;
27
+ /** Non-fatal warnings (e.g., URLs were transformed) */
28
+ warnings: string[];
29
+ /** Fatal errors (e.g., missing required vars) — launch MUST abort if non-empty */
30
+ errors: string[];
31
+ }
32
+ /** Result of a successful job launch */
33
+ export interface LaunchJobResult {
34
+ /** The AWX job ID */
35
+ jobId: number;
36
+ /** The AWX job status (e.g., "pending", "running") */
37
+ jobStatus: string;
38
+ /** Non-fatal warnings from the transforms pipeline */
39
+ warnings: string[];
40
+ /** Fatal errors from the transforms pipeline */
41
+ errors: string[];
42
+ }
43
+ /**
44
+ * Run the extra-vars transforms pipeline.
45
+ *
46
+ * Pipeline order:
47
+ * 1. Normalize SCM URL (SSH → HTTPS)
48
+ * 2. Infer git branch (refs/heads/ → short name)
49
+ * 3. Validate required vars
50
+ *
51
+ * Each step produces warnings or errors.
52
+ *
53
+ * @param extraVars - Raw extra vars from the caller (may be undefined)
54
+ * @param options - Optional pipeline configuration
55
+ * @returns PipelineResult with transformed vars, warnings, and errors
56
+ */
57
+ export declare function runTransformsPipeline(extraVars: Record<string, unknown> | undefined, options?: PipelineOptions): PipelineResult;
58
+ /**
59
+ * Execute the launch job workflow.
60
+ *
61
+ * 1. Run the transforms pipeline on extra_vars
62
+ * 2. If pipeline produces errors, return them without launching
63
+ * 3. Call POST /api/v2/job_templates/<id>/launch/ with transformed vars
64
+ * 4. Return job ID, status, warnings, and errors
65
+ *
66
+ * @param client - The AWX HTTP client
67
+ * @param templateId - The job template ID to launch
68
+ * @param extraVars - Raw extra vars (may be undefined)
69
+ * @param options - Optional pipeline configuration
70
+ * @returns LaunchJobResult with job ID and metadata
71
+ * @throws Error if the AWX API returns an unexpected error
72
+ */
73
+ export declare function launchJob(client: AwxClient, templateId: number, extraVars: Record<string, unknown> | undefined, options?: PipelineOptions & {
74
+ abortSignal?: AbortSignal;
75
+ }): Promise<LaunchJobResult>;
76
+ //# sourceMappingURL=launch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,0CAA0C;AAC1C,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,uDAAuD;IACvD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kFAAkF;IAClF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gDAAgD;IAChD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAcD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC9C,OAAO,CAAC,EAAE,eAAe,GACxB,cAAc,CAwChB;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC9C,OAAO,CAAC,EAAE,eAAe,GAAG;IAAE,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,GACxD,OAAO,CAAC,eAAe,CAAC,CA+D1B"}
package/dist/launch.js ADDED
@@ -0,0 +1,133 @@
1
+ /**
2
+ * launch.ts — Launch AWX jobs with a transforms pipeline.
3
+ *
4
+ * Orchestrates the extra-vars transforms pipeline (normalizeScmUrl →
5
+ * inferGitBranch → validateRequiredVars) before calling the AWX
6
+ * launch API. If any transform step fails, the launch is aborted.
7
+ */
8
+ import { normalizeScmUrl, inferGitBranch, validateRequiredVars, } from "./transforms.js";
9
+ // ---------------------------------------------------------------------------
10
+ // Constants
11
+ // ---------------------------------------------------------------------------
12
+ const DEFAULT_SCM_URL_KEY = "scm_url";
13
+ const DEFAULT_SCM_BRANCH_KEY = "scm_branch";
14
+ const DEFAULT_REQUIRED_VARS = ["inventory", "scm_url", "scm_branch"];
15
+ // ---------------------------------------------------------------------------
16
+ // runTransformsPipeline
17
+ // ---------------------------------------------------------------------------
18
+ /**
19
+ * Run the extra-vars transforms pipeline.
20
+ *
21
+ * Pipeline order:
22
+ * 1. Normalize SCM URL (SSH → HTTPS)
23
+ * 2. Infer git branch (refs/heads/ → short name)
24
+ * 3. Validate required vars
25
+ *
26
+ * Each step produces warnings or errors.
27
+ *
28
+ * @param extraVars - Raw extra vars from the caller (may be undefined)
29
+ * @param options - Optional pipeline configuration
30
+ * @returns PipelineResult with transformed vars, warnings, and errors
31
+ */
32
+ export function runTransformsPipeline(extraVars, options) {
33
+ const scmUrlKey = options?.scmUrlKey ?? DEFAULT_SCM_URL_KEY;
34
+ const scmBranchKey = options?.scmBranchKey ?? DEFAULT_SCM_BRANCH_KEY;
35
+ const requiredVars = options?.requiredVars ?? DEFAULT_REQUIRED_VARS;
36
+ const vars = extraVars ? { ...extraVars } : {};
37
+ const warnings = [];
38
+ const errors = [];
39
+ // ── Step 1: Normalize SCM URL ────────────────────────────────────
40
+ const rawUrl = vars[scmUrlKey];
41
+ if (rawUrl !== undefined && rawUrl !== null) {
42
+ const normalized = normalizeScmUrl(String(rawUrl));
43
+ if (normalized !== String(rawUrl)) {
44
+ warnings.push(`SCM URL transformed: "${String(rawUrl)}" → "${normalized}"`);
45
+ }
46
+ vars[scmUrlKey] = normalized;
47
+ }
48
+ // ── Step 2: Infer git branch ─────────────────────────────────────
49
+ const rawBranch = vars[scmBranchKey];
50
+ if (rawBranch !== undefined && rawBranch !== null) {
51
+ const inferred = inferGitBranch(String(rawBranch));
52
+ if (inferred !== String(rawBranch)) {
53
+ warnings.push(`Git branch inferred: "${String(rawBranch)}" → "${inferred}"`);
54
+ }
55
+ vars[scmBranchKey] = inferred;
56
+ }
57
+ // ── Step 3: Validate required vars ───────────────────────────────
58
+ const missing = validateRequiredVars(vars, requiredVars);
59
+ for (const name of missing) {
60
+ errors.push(`Missing required variable: "${name}"`);
61
+ }
62
+ return { extraVars: vars, warnings, errors };
63
+ }
64
+ // ---------------------------------------------------------------------------
65
+ // launchJob
66
+ // ---------------------------------------------------------------------------
67
+ /**
68
+ * Execute the launch job workflow.
69
+ *
70
+ * 1. Run the transforms pipeline on extra_vars
71
+ * 2. If pipeline produces errors, return them without launching
72
+ * 3. Call POST /api/v2/job_templates/<id>/launch/ with transformed vars
73
+ * 4. Return job ID, status, warnings, and errors
74
+ *
75
+ * @param client - The AWX HTTP client
76
+ * @param templateId - The job template ID to launch
77
+ * @param extraVars - Raw extra vars (may be undefined)
78
+ * @param options - Optional pipeline configuration
79
+ * @returns LaunchJobResult with job ID and metadata
80
+ * @throws Error if the AWX API returns an unexpected error
81
+ */
82
+ export async function launchJob(client, templateId, extraVars, options) {
83
+ // ── Step 1: Run transforms pipeline ─────────────────────────────
84
+ const pipeline = runTransformsPipeline(extraVars, options);
85
+ // ── Step 2: If pipeline errors, abort launch ────────────────────
86
+ if (pipeline.errors.length > 0) {
87
+ return {
88
+ jobId: 0,
89
+ jobStatus: "failed",
90
+ warnings: pipeline.warnings,
91
+ errors: pipeline.errors,
92
+ };
93
+ }
94
+ // ── Step 3: Call AWX launch API ─────────────────────────────────
95
+ const body = {};
96
+ // Only include extra_vars in the request body if there are any
97
+ const hasExtraVars = Object.keys(pipeline.extraVars).length > 0;
98
+ if (hasExtraVars) {
99
+ body.extra_vars = pipeline.extraVars;
100
+ }
101
+ const response = await client.request("awx-launch-job", `/api/v2/job_templates/${templateId}/launch/`, {
102
+ method: "POST",
103
+ headers: { "Content-Type": "application/json" },
104
+ body: JSON.stringify(body),
105
+ }, options?.abortSignal);
106
+ // ── Step 4: Parse response body (text-first to handle non-JSON) ──
107
+ const text = await response.text();
108
+ let responseBody;
109
+ try {
110
+ responseBody = text ? JSON.parse(text) : undefined;
111
+ }
112
+ catch {
113
+ responseBody = undefined;
114
+ }
115
+ // ── Handle error responses ──────────────────────────────────────
116
+ if (!response.ok) {
117
+ const detail = typeof responseBody === "object" && responseBody && "detail" in responseBody
118
+ ? String(responseBody.detail)
119
+ : text || response.statusText;
120
+ throw new Error(`AWX launch failed: HTTP ${response.status}: ${detail}`);
121
+ }
122
+ // ── Step 5: Parse success response ──────────────────────────────
123
+ const safeBody = responseBody ?? {};
124
+ const jobId = Number(safeBody.id);
125
+ const jobStatus = String(safeBody.status ?? "unknown");
126
+ return {
127
+ jobId,
128
+ jobStatus,
129
+ warnings: pipeline.warnings,
130
+ errors: pipeline.errors,
131
+ };
132
+ }
133
+ //# sourceMappingURL=launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * list-projects.ts — Paginated project listing for the AWX plugin.
3
+ *
4
+ * Handles pagination loop, per-page timeout budget, page cap enforcement,
5
+ * and name sorting for the `awx-list-projects` tool.
6
+ */
7
+ import type { AwxClient } from "./client.js";
8
+ /** A single AWX project (relevant subset of fields) */
9
+ export interface Project {
10
+ id: number;
11
+ name: string;
12
+ type: string;
13
+ url: string;
14
+ summary_fields: Record<string, unknown>;
15
+ created: string;
16
+ modified: string;
17
+ description: string;
18
+ scm_type: string;
19
+ status: string;
20
+ [key: string]: unknown;
21
+ }
22
+ /** AWX paginated response shape for /api/v2/projects/ */
23
+ export interface PaginatedResponse {
24
+ count: number;
25
+ next: string | null;
26
+ previous: string | null;
27
+ results: Project[];
28
+ }
29
+ /** Structured output of the list-projects tool */
30
+ export interface ListProjectsOutput {
31
+ count: number;
32
+ results: Project[];
33
+ warning?: string;
34
+ }
35
+ /** Options for listProjects */
36
+ export interface ListProjectsOptions {
37
+ maxPages?: number;
38
+ pageSize?: number;
39
+ timeout?: number;
40
+ abortSignal?: AbortSignal;
41
+ }
42
+ /**
43
+ * Calculate per-page timeout budget.
44
+ *
45
+ * Formula: totalTimeout / (maxPages + 1)
46
+ * The +1 accounts for any overhead/rounding and ensures we never
47
+ * exceed the total tool timeout even if all pages are fetched.
48
+ *
49
+ * @param totalTimeout Total tool timeout in milliseconds
50
+ * @param maxPages Maximum number of pages to fetch
51
+ * @returns Per-page budget in milliseconds (rounded down)
52
+ */
53
+ export declare function calcPageBudget(totalTimeout: number, maxPages: number): number;
54
+ /**
55
+ * Fetch paginated projects from the AWX API, consolidate results,
56
+ * and return them sorted by name.
57
+ *
58
+ * @param client The AWX HTTP client
59
+ * @param options Pagination and timeout options
60
+ * @returns Consolidated, sorted list of projects
61
+ */
62
+ export declare function listProjects(client: AwxClient, options?: ListProjectsOptions): Promise<ListProjectsOutput>;
63
+ //# sourceMappingURL=list-projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-projects.d.ts","sourceRoot":"","sources":["../src/list-projects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,uDAAuD;AACvD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,kDAAkD;AAClD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,+BAA+B;AAC/B,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7E;AAID;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAgF7B"}