@weiyentan/opencode-plugin-awx 0.2.0 → 0.3.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 (56) hide show
  1. package/README.md +122 -9
  2. package/dist/auth.d.ts +2 -2
  3. package/dist/auth.js +4 -4
  4. package/dist/auth.js.map +1 -1
  5. package/dist/client.d.ts.map +1 -1
  6. package/dist/client.js +2 -1
  7. package/dist/client.js.map +1 -1
  8. package/dist/contracts/inventory-detail.d.ts +46 -0
  9. package/dist/contracts/inventory-detail.d.ts.map +1 -0
  10. package/dist/contracts/inventory-detail.js +22 -0
  11. package/dist/contracts/inventory-detail.js.map +1 -0
  12. package/dist/contracts/job-detail.d.ts +50 -116
  13. package/dist/contracts/job-detail.d.ts.map +1 -1
  14. package/dist/contracts/job-detail.js +1 -73
  15. package/dist/contracts/job-detail.js.map +1 -1
  16. package/dist/contracts/project-detail.d.ts +58 -0
  17. package/dist/contracts/project-detail.d.ts.map +1 -0
  18. package/dist/contracts/project-detail.js +23 -0
  19. package/dist/contracts/project-detail.js.map +1 -0
  20. package/dist/contracts/sync-project.d.ts +9 -14
  21. package/dist/contracts/sync-project.d.ts.map +1 -1
  22. package/dist/contracts/sync-project.js +1 -14
  23. package/dist/contracts/sync-project.js.map +1 -1
  24. package/dist/contracts/template-detail.d.ts +55 -0
  25. package/dist/contracts/template-detail.d.ts.map +1 -0
  26. package/dist/contracts/template-detail.js +22 -0
  27. package/dist/contracts/template-detail.js.map +1 -0
  28. package/dist/get-resource.d.ts +49 -0
  29. package/dist/get-resource.d.ts.map +1 -0
  30. package/dist/get-resource.js +49 -0
  31. package/dist/get-resource.js.map +1 -0
  32. package/dist/index.d.ts +12 -13
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +276 -78
  35. package/dist/index.js.map +1 -1
  36. package/dist/list-projects.d.ts +8 -1
  37. package/dist/list-projects.d.ts.map +1 -1
  38. package/dist/list-projects.js +22 -3
  39. package/dist/list-projects.js.map +1 -1
  40. package/dist/list-templates.d.ts +8 -1
  41. package/dist/list-templates.d.ts.map +1 -1
  42. package/dist/list-templates.js +22 -5
  43. package/dist/list-templates.js.map +1 -1
  44. package/dist/mappers/map-inventory.d.ts +34 -0
  45. package/dist/mappers/map-inventory.d.ts.map +1 -0
  46. package/dist/mappers/map-inventory.js +35 -0
  47. package/dist/mappers/map-inventory.js.map +1 -0
  48. package/dist/mappers/map-project.d.ts +35 -0
  49. package/dist/mappers/map-project.d.ts.map +1 -0
  50. package/dist/mappers/map-project.js +42 -0
  51. package/dist/mappers/map-project.js.map +1 -0
  52. package/dist/mappers/map-template.d.ts +34 -0
  53. package/dist/mappers/map-template.d.ts.map +1 -0
  54. package/dist/mappers/map-template.js +45 -0
  55. package/dist/mappers/map-template.js.map +1 -0
  56. package/package.json +2 -3
package/README.md CHANGED
@@ -12,16 +12,32 @@ The AWX plugin delivers these modules:
12
12
 
13
13
  | Module | File | Purpose |
14
14
  |--------|------|---------|
15
- | **Plugin entry** | `src/index.ts` | Registers all AWX tools (awx-list-templates, awx-list-projects, awx-launch-job, awx-job-status, awx-wait-job, awx-get-job-events, awx-sync-project) + hello-world scaffold; wires HTTP client, metrics lifecycle, and dispose hook |
15
+ | **Plugin entry** | `src/index.ts` | Registers all AWX tools (awx-list-templates, awx-list-projects, awx-launch-job, awx-job-status, awx-wait-job, awx-get-job-events, awx-sync-project, awx-get-resource, awx-debug-env) + hello-world scaffold; wires HTTP client, metrics lifecycle, and dispose hook |
16
16
  | **Auth hook** | `src/auth.ts` | Bearer token / PAT authentication via OpenCode's `type: "api"` auth hook with init-time validation |
17
- | **Output contract** | `src/contracts/job-detail.ts` | Zod schemas and TypeScript types (`JobDetailOutput`) matching `awx_job_detail.py` v1.0 |
17
+ | **Output contract** | `src/contracts/job-detail.ts` | TypeScript types (`JobDetailOutput`) matching `awx_job_detail.py` v1.0 |
18
18
  | **Transforms** | `src/transforms.ts` | Pure functions: SSH→HTTPS URL conversion, git branch inference, required-var validation |
19
19
  | **Client middleware** | `src/client.ts` | HTTP middleware pipeline: circuit breaker, retry/backoff, timeout via native `fetch` |
20
20
  | **Metrics** | `src/metrics.ts` | Per-tool counters with file-backed durability for operational visibility |
21
21
  | **Node shim** | `src/node-shim.d.ts` | Minimal Node.js built-in declarations (avoids `@types/node` dependency) |
22
22
  | **Snapshot generator** | `scripts/generate-snapshots.py` | Python script that regenerates contract snapshots from fixture data |
23
23
 
24
- Tool implementation (Phase 2) is complete — all 7 AWX tools are implemented and tested. See the [issue tracker](https://github.com/weiyentan/opencode-plugins/issues) for upcoming enhancements.
24
+ Tool implementation (Phase 2) is complete — all 9 AWX tools are implemented and tested. See the [issue tracker](https://github.com/weiyentan/opencode-plugins/issues) for upcoming enhancements.
25
+
26
+ ### Tool Output Formats
27
+
28
+ | Tool | Output Format | Filter Support |
29
+ |------|--------------|----------------|
30
+ | `awx-list-templates` | Pipe-delimited Markdown table (ID / Name / Description) | `--filter` (e.g., `name__icontains=workspace`) |
31
+ | `awx-list-projects` | Pipe-delimited Markdown table (ID / Name / Description / SCM) | `--filter` (e.g., `name__icontains=workspace`) |
32
+ | `awx-sync-project` | Plain text message + structured metadata | — |
33
+ | `awx-launch-job` | Plain text message + structured metadata | — |
34
+ | `awx-job-status` | Plain text message + `JobDetailOutput` v1.0 metadata | — |
35
+ | `awx-wait-job` | Plain text message + `JobDetailOutput` v1.0 metadata | — |
36
+ | `awx-get-job-events` | Plain text message + structured metadata | — |
37
+ | `awx-debug-env` | JSON string | — |
38
+ | `awx-get-resource` | Plain text structured summary + metadata with `{ schema_version, resource_type, id, data }` envelope | `type` (template\|project\|inventory) + `id` |
39
+
40
+ Both `awx-list-templates` and `awx-list-projects` accept `--timeout` (total tool timeout in ms, default 30000).
25
41
 
26
42
  ## Prerequisites
27
43
 
@@ -43,6 +59,66 @@ npm install
43
59
 
44
60
  This package is consumed by the OpenCode plugin server as a dependency — no standalone runtime is needed.
45
61
 
62
+ ## Connecting to AWX
63
+
64
+ Before using the AWX tools, the plugin needs to know where your AWX instance is and how to authenticate.
65
+
66
+ ### 1. Set the instance URL
67
+
68
+ The plugin reads `AWX_BASE_URL` from the environment. Set it to the base URL of your AWX or Ansible Automation Platform instance:
69
+
70
+ ```bash
71
+ # Linux/macOS
72
+ export AWX_BASE_URL="https://awx.example.com"
73
+
74
+ # Windows PowerShell
75
+ $env:AWX_BASE_URL = "https://awx.example.com"
76
+ ```
77
+
78
+ This variable is **required** — the plugin will fail to load without it.
79
+
80
+ ### 2. Authenticate
81
+
82
+ The plugin needs a Personal Access Token (PAT) to call the AWX API. Generate one in AWX:
83
+
84
+ 1. Go to your **user profile** → **Tokens** → **Add token**
85
+ 2. Set the scope (Write scope is needed for launch/update operations; Read scope is sufficient for listing and status checks)
86
+ 3. Copy the generated token
87
+
88
+ There are two ways to provide the token:
89
+
90
+ **Option A — Auth hook (recommended):** Launch OpenCode and the plugin will prompt you to enter your PAT on first use. The token is stored securely by OpenCode's auth system.
91
+
92
+ **Option B — Environment variable:** Set `AWX_PAT` in your environment:
93
+
94
+ ```bash
95
+ # Linux/macOS
96
+ export AWX_PAT="your-personal-access-token-here"
97
+
98
+ # Windows PowerShell
99
+ $env:AWX_PAT = "your-personal-access-token-here"
100
+ ```
101
+
102
+ The plugin checks the auth hook first, then falls back to `AWX_PAT` if no token is stored.
103
+
104
+ ### 3. Verify the connection
105
+
106
+ Once OpenCode is running, call the `awx-debug-env` tool to confirm the plugin is connected:
107
+
108
+ ```
109
+ awx-debug-env
110
+ ```
111
+
112
+ It will report whether `AWX_BASE_URL` is set and what its value is. You can also call `hello` from the plugin to confirm it loaded correctly.
113
+
114
+ To test a live API call:
115
+
116
+ ```
117
+ awx-list-projects
118
+ ```
119
+
120
+ This lists all AWX projects your token has access to. If you see project data, the connection is working.
121
+
46
122
  ## Scripts
47
123
 
48
124
  | Command | Description |
@@ -79,11 +155,20 @@ The suite `tests/integration/job-lifecycle.test.ts` covers the full AWX job life
79
155
  - `awx-wait-job` → non-blocking status check (no polling)
80
156
  - `awx-get-job-events` → retrieves job events
81
157
 
82
- #### Prerequisites
158
+ #### Environment Variables
159
+
160
+ The plugin reads configuration from these environment variables:
83
161
 
84
162
  | Env Var | Default | Required | Description |
85
163
  |---------|---------|----------|-------------|
86
- | `AWX_TOKEN` | — | **Yes** | Valid AAP Personal Access Token (PAT) |
164
+ | `AWX_BASE_URL` | — | **Yes** | Base URL of the AAP/AWX instance (e.g. `https://example.com`) |
165
+ | `AWX_PAT` | — | No | Personal Access Token fallback (primary: auth hook / `getSecret`). Used when no token is stored in the auth hook. |
166
+
167
+ #### Test Prerequisites
168
+
169
+ | Env Var | Default | Required | Description |
170
+ |---------|---------|----------|-------------|
171
+ | `AWX_TOKEN` | — | **Yes** | Valid AAP Personal Access Token (PAT) for integration tests |
87
172
  | `AAP_BASE_URL` | `https://example.com` | No | Base URL of the AAP instance |
88
173
  | `JOB_TEMPLATE_ID` | `10` | No | Non-production AWX job template ID to launch |
89
174
  | `EXTRA_VARS_INVENTORY` | `"test"` | No | Inventory name for extra_vars |
@@ -163,7 +248,19 @@ Hot-reload verification is performed structurally (the `tsc --noEmit` / `vitest
163
248
 
164
249
  The `package.json` `main`, `types`, and `exports` fields point to the compiled `dist/` output. This is the production-safe configuration — consumers import the compiled JavaScript with type declarations.
165
250
 
166
- For local development, the OpenCode plugin server can consume TypeScript source directly by overriding the entry point (e.g., changing `main` to `./src/index.ts`). The server watches source files and reloads automatically on change — no server restart required.
251
+ #### Local Development (`opencode-plugin-dev/plugins/`)
252
+
253
+ For local testing without publishing, a re-export wrapper is set up at `opencode-plugin-dev/plugins/awx-plugin.js` which re-exports `AwxPlugin` from the compiled `dist/` output. The directory is named without a leading dot to prevent OpenCode from auto-discovering it at startup, keeping development artifacts isolated from the live plugin system.
254
+
255
+ After making changes:
256
+
257
+ ```bash
258
+ cd packages/awx
259
+ npm run build # Recompile to dist/
260
+ # Restart OpenCode server to pick up the new build
261
+ ```
262
+
263
+ Build outputs are gitignored (`opencode-plugin-dev/` is in `.gitignore`), so the wrapper is local-only and never committed.
167
264
 
168
265
  ## CI Requirements
169
266
 
@@ -211,23 +308,39 @@ packages/awx/
211
308
  │ ├── index.ts # Plugin entry point — Hooks (auth + tools + dispose); client wiring & metrics lifecycle
212
309
  │ ├── auth.ts # Bearer token auth hook (type: "api")
213
310
  │ ├── client.ts # HTTP middleware pipeline (circuit breaker, retry, timeout)
311
+ │ ├── get-resource.ts # Shared resource detail orchestrator — type→endpoint registry, fetch, map dispatch
214
312
  │ ├── metrics.ts # Per-tool counters with file-backed durability
215
313
  │ ├── node-shim.d.ts # Minimal Node.js declarations (fs/promises, path)
216
- └── contracts/
217
- └── job-detail.ts # JobDetailOutput v1.0 TypeScript interface
314
+ ├── contracts/
315
+ │ ├── job-detail.ts # JobDetailOutput v1.0 TypeScript interface
316
+ │ │ ├── template-detail.ts # TemplateDetailOutput contract (schema_version, resource_type, id, data)
317
+ │ │ ├── project-detail.ts # ProjectDetailOutput contract
318
+ │ │ └── inventory-detail.ts # InventoryDetailOutput contract
319
+ │ └── mappers/
320
+ │ ├── map-template.ts # Raw AWX API response → TemplateDetailOutput
321
+ │ ├── map-project.ts # Raw AWX API response → ProjectDetailOutput
322
+ │ └── map-inventory.ts # Raw AWX API response → InventoryDetailOutput
218
323
  ├── tests/
219
324
  │ ├── plugin.test.ts # Plugin registration and lifecycle tests
220
325
  │ ├── client.test.ts # Client middleware pipeline tests
221
326
  │ ├── lifecycle.test.ts # Lazy client/auth lifecycle tests (no-token → token → client-created)
222
327
  │ ├── metrics.test.ts # MetricsStore persistence & counter tests incl. concurrent serialization
223
328
  │ ├── plugin-init-timeout.test.ts # Init-time timeout cleanup tests (clear() called after validation)
329
+ │ ├── get-resource.test.ts # getResource orchestrator unit tests (dispatch, error handling, registry)
330
+ │ ├── get-resource-tool.test.ts # awx-get-resource tool integration tests (via plugin tool registration)
331
+ │ ├── map-template.test.ts # mapTemplate mapper unit tests
332
+ │ ├── map-project.test.ts # mapProject mapper unit tests
333
+ │ ├── map-inventory.test.ts # mapInventory mapper unit tests
224
334
  │ ├── contracts/
225
335
  │ │ ├── contract.test.ts # Contract compatibility tests
226
336
  │ │ └── __snapshots__/ # Canonical contract output (ground truth)
227
337
  │ └── fixtures/
228
338
  │ ├── awx_job_success.json
229
339
  │ ├── awx_job_partial.json
230
- └── awx_job_failure.json
340
+ ├── awx_job_failure.json
341
+ │ ├── raw_awx_template.json # Raw AWX API response fixture (template)
342
+ │ ├── raw_awx_project.json # Raw AWX API response fixture (project)
343
+ │ └── raw_awx_inventory.json # Raw AWX API response fixture (inventory)
231
344
  └── scripts/
232
345
  └── generate-snapshots.py # Python script to regenerate snapshots
233
346
  ```
package/dist/auth.d.ts CHANGED
@@ -26,8 +26,8 @@
26
26
  * Failed auth produces user-actionable error messages:
27
27
  * - No token configured: "AWX auth not configured. Set your Personal Access
28
28
  * Token in the plugin settings."
29
- * - Network failure: "Cannot reach AAP at <baseUrl>. Check your baseUrl in
30
- * opencode.jsonc and ensure the AAP instance is accessible."
29
+ * - Network failure: "Cannot reach AAP at <baseUrl>. Check AWX_BASE_URL
30
+ * and ensure the AAP instance is reachable."
31
31
  * - Invalid token (401): "AWX token is invalid or expired. Generate a new
32
32
  * Personal Access Token at <baseUrl>/api/v2/tokens/ or Profile → Tokens."
33
33
  * - Forbidden (403): "AWX token lacks sufficient permissions. Ensure the
package/dist/auth.js CHANGED
@@ -26,8 +26,8 @@
26
26
  * Failed auth produces user-actionable error messages:
27
27
  * - No token configured: "AWX auth not configured. Set your Personal Access
28
28
  * Token in the plugin settings."
29
- * - Network failure: "Cannot reach AAP at <baseUrl>. Check your baseUrl in
30
- * opencode.jsonc and ensure the AAP instance is accessible."
29
+ * - Network failure: "Cannot reach AAP at <baseUrl>. Check AWX_BASE_URL
30
+ * and ensure the AAP instance is reachable."
31
31
  * - Invalid token (401): "AWX token is invalid or expired. Generate a new
32
32
  * Personal Access Token at <baseUrl>/api/v2/tokens/ or Profile → Tokens."
33
33
  * - Forbidden (403): "AWX token lacks sufficient permissions. Ensure the
@@ -103,7 +103,7 @@ export async function validateToken(baseUrl, token, signal) {
103
103
  valid: false,
104
104
  error: [
105
105
  `Timeout connecting to AAP at ${baseUrl}.`,
106
- `Check your baseUrl in opencode.jsonc and ensure the AAP instance is reachable.`,
106
+ `Check AWX_BASE_URL and ensure the AAP instance is reachable.`,
107
107
  ].join(" "),
108
108
  status: null,
109
109
  };
@@ -114,7 +114,7 @@ export async function validateToken(baseUrl, token, signal) {
114
114
  valid: false,
115
115
  error: [
116
116
  `Cannot reach AAP at ${baseUrl}.`,
117
- `Check your baseUrl in opencode.jsonc and ensure the AAP instance is accessible.`,
117
+ `Check AWX_BASE_URL and ensure the AAP instance is reachable.`,
118
118
  `Details: ${message}`,
119
119
  ].join(" "),
120
120
  status: null,
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAkB5C;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAInD;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAoBf;AAID;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAU1F;AA2BD,+BAA+B;AAC/B,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uDAAuD;IACvD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB;;;;;;;OAOG;IACH,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,WAAW,EAClB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtB;AAID,4BAA4B;AAC5B,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE/D,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,gBAAgB,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC;;;OAGG;gBACS,aAAa,SAAI,EAAE,UAAU,SAAS;IAKlD;;;;;;;;;OASG;IACH,UAAU,IAAI,OAAO;IAYrB,kEAAkE;IAClE,aAAa,IAAI,IAAI;IAMrB;;;;;;;OAOG;IACH,aAAa,IAAI,IAAI;IAarB,+DAA+D;IAC/D,QAAQ,IAAI,YAAY;CAOzB;AAID;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,aAAa,GACnB,SAAS,CAgKX"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAkB5C;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAInD;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAoBf;AAID;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAU1F;AA2BD,+BAA+B;AAC/B,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uDAAuD;IACvD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB;;;;;;;OAOG;IACH,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,WAAW,EAClB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtB;AAID,4BAA4B;AAC5B,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE/D,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,gBAAgB,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC;;;OAGG;gBACS,aAAa,SAAI,EAAE,UAAU,SAAS;IAKlD;;;;;;;;;OASG;IACH,UAAU,IAAI,OAAO;IAYrB,kEAAkE;IAClE,aAAa,IAAI,IAAI;IAMrB;;;;;;;OAOG;IACH,aAAa,IAAI,IAAI;IAarB,+DAA+D;IAC/D,QAAQ,IAAI,YAAY;CAOzB;AAID;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,aAAa,GACnB,SAAS,CAiKX"}
package/dist/client.js CHANGED
@@ -201,7 +201,8 @@ export class CircuitBreaker {
201
201
  */
202
202
  export function createClient(baseUrl, token, opts) {
203
203
  const normalizedBase = baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
204
- const timeoutMs = opts?.timeoutMs ?? 30_000;
204
+ const rawTimeout = opts?.timeoutMs;
205
+ const timeoutMs = (typeof rawTimeout === "number" && !Number.isNaN(rawTimeout)) ? rawTimeout : 30_000;
205
206
  const maxRetries = opts?.maxRetries ?? DEFAULT_MAX_RETRIES;
206
207
  const breakerThreshold = opts?.circuitBreakerThreshold ?? 5;
207
208
  const breakerCooldownMs = opts?.circuitBreakerCooldownMs ?? 30_000;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,uEAAuE;AAEvE,yDAAyD;AACzD,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,yCAAyC;AACzC,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,uCAAuC;AACvC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,iDAAiD;AACjD,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,sEAAsE;AAEtE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,YAAY,CAAC;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,EAAU,EACV,MAAoB;IAEpB,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC,MAAM,IAAI,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,MAAO,CAAC,MAAM,IAAI,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sEAAsE;AAEtE;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC,EACpF,EAAE,CACH,CAAC;IACF,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;KACjC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,OAAsB;IAC5C,IAAI,OAAO,WAAW,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QAC1C,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;YAC7E,OAAO,UAAU,CAAC,MAAM,CAAC;QAC3B,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACpC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QAC/E,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC;AAqDD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,cAAc;IACjB,KAAK,GAAqB,QAAQ,CAAC;IACnC,YAAY,GAAG,CAAC,CAAC;IACjB,aAAa,GAAkB,IAAI,CAAC;IAC3B,aAAa,CAAS;IACtB,UAAU,CAAS;IAEpC;;;OAGG;IACH,YAAY,aAAa,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM;QAChD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;;;;;;;OASG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC7D,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;gBACzB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kEAAkE;IAClE,aAAa;QACX,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;;;;;;OAOG;IACH,aAAa;QACX,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;YACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QACpD,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACtC,qDAAqD;YACrD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;YACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QACpD,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,QAAQ;QACN,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;CACF;AAED,sEAAsE;AAEtE;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,KAAa,EACb,IAAoB;IAEpB,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;IACvE,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,mBAAmB,CAAC;IAC3D,MAAM,gBAAgB,GAAG,IAAI,EAAE,uBAAuB,IAAI,CAAC,CAAC;IAC5D,MAAM,iBAAiB,GAAG,IAAI,EAAE,wBAAwB,IAAI,MAAM,CAAC;IAEnE,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEnD,iDAAiD;IACjD,SAAS,UAAU,CAAC,QAAgB;QAClC,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,cAAc,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;YAClE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uEAAuE;IACvE,MAAM,OAAO,GAAG,IAAI,EAAE,YAAY,IAAI,IAAI,YAAY,EAAE,CAAC;IAEzD,gFAAgF;IAChF,SAAS,mBAAmB;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,IAAI,EAAE,cAAc;YACpB,OAAO,EACL,yEAAyE;YAC3E,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;YACxB,MAAM,EAAE,GAAG;YACX,UAAU,EAAE,sBAAsB;YAClC,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,IAAY,EACZ,IAAkB,EAClB,WAAyB;YAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEzB,iBAAiB;YACjB,MAAM,GAAG,GAAG,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAE9E,qDAAqD;YACrD,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACvF,MAAM,cAAc,GAAG,WAAW;gBAChC,CAAC,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;gBAC9C,CAAC,CAAC,aAAa,CAAC;YAElB,oEAAoE;YACpE,MAAM,OAAO,GAA2B;gBACtC,MAAM,EAAE,kBAAkB;gBAC1B,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC,CAAC;YAEF,2DAA2D;YAC3D,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;gBAClB,MAAM,aAAa,GACjB,IAAI,CAAC,OAAO,YAAY,OAAO;oBAC7B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBAC5C,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;wBAC3B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;wBAClC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBACrB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,SAAS,GAAgB;gBAC7B,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK;gBAC7B,OAAO;gBACP,IAAI,EAAE,IAAI,EAAE,IAAI;gBAChB,MAAM,EAAE,cAAc;aACvB,CAAC;YAEF,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YAErC,kCAAkC;YAClC,IAAI,aAAa,GAAG,KAAK,CAAC;YAE1B,4BAA4B;YAC5B,IAAI,CAAC;gBACH,8DAA8D;gBAC9D,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;oBACvD,4DAA4D;oBAC5D,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;wBAC1B,wCAAwC;wBACxC,aAAa,GAAG,IAAI,CAAC;wBACrB,OAAO,mBAAmB,EAAE,CAAC;oBAC/B,CAAC;oBAED,IAAI,CAAC;wBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;wBAE7C,mDAAmD;wBACnD,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;4BAChB,OAAO,CAAC,aAAa,EAAE,CAAC;4BACxB,OAAO,QAAQ,CAAC;wBAClB,CAAC;wBAED,uDAAuD;wBACvD,aAAa,GAAG,IAAI,CAAC;wBAErB,gEAAgE;wBAChE,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;4BACpD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gCAC5B,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;4BACtC,CAAC;4BACD,OAAO,QAAQ,CAAC;wBAClB,CAAC;wBAED,+DAA+D;wBAC/D,OAAO,CAAC,aAAa,EAAE,CAAC;wBAExB,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;4BACzB,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;4BACnC,MAAM,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;4BAC5C,SAAS;wBACX,CAAC;wBAED,mDAAmD;wBACnD,OAAO,QAAQ,CAAC;oBAClB,CAAC;oBAAC,OAAO,GAAY,EAAE,CAAC;wBACtB,mDAAmD;wBACnD,IAAI,GAAG,YAAY,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;4BAC7D,MAAM,GAAG,CAAC;wBACZ,CAAC;wBAED,sEAAsE;wBACtE,aAAa,GAAG,IAAI,CAAC;wBACrB,OAAO,CAAC,aAAa,EAAE,CAAC;wBAExB,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;4BACzB,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;4BACnC,MAAM,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;4BAC5C,SAAS;wBACX,CAAC;wBAED,0CAA0C;wBAC1C,MAAM,GAAG,CAAC;oBACZ,CAAC;gBACH,CAAC;gBAED,uDAAuD;gBACvD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;oBAAS,CAAC;gBACT,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBACpC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACvC,IAAI,aAAa,EAAE,CAAC;oBAClB,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;gBACD,aAAa,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * AWX Inventory Detail Output Contract — v1.0
3
+ *
4
+ * TypeScript interface defining the structured output for inventory
5
+ * detail requests. Used by `mapInventory()` to shape raw AWX API responses
6
+ * into the canonical format.
7
+ *
8
+ * ## Schema Fields
9
+ *
10
+ * - **schema_version**: Always "1.0"
11
+ * - **resource_type**: Always "inventory"
12
+ * - **id**: The numeric resource ID
13
+ * - **data**: Core inventory data with resolved related names
14
+ *
15
+ * ## Field Naming Convention
16
+ *
17
+ * - Related resource names are resolved from `summary_fields` (not raw IDs)
18
+ * - `kind` is the inventory type (e.g. "smart" for smart inventories, "" for normal)
19
+ * - `variables` is a raw JSON/YAML string, or empty if not set
20
+ */
21
+ export interface InventoryData {
22
+ id: number;
23
+ name: string;
24
+ description: string;
25
+ /** Inventory kind: "smart" for smart inventories, "" for normal */
26
+ kind: string;
27
+ /** Number of hosts in this inventory */
28
+ host_count: number;
29
+ /** Total groups in this inventory */
30
+ total_groups: number;
31
+ /** Whether this inventory has any inventory sources */
32
+ has_inventory_sources: boolean;
33
+ /** Total inventory sources (e.g., project SCM sources) */
34
+ total_inventory_sources: number;
35
+ /** Resolved from summary_fields.organization.name */
36
+ organization_name: string;
37
+ /** Raw variables string (JSON or YAML), empty string if not set */
38
+ variables: string;
39
+ }
40
+ export interface InventoryDetailOutput {
41
+ schema_version: "1.0";
42
+ resource_type: "inventory";
43
+ id: number;
44
+ data: InventoryData;
45
+ }
46
+ //# sourceMappingURL=inventory-detail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory-detail.d.ts","sourceRoot":"","sources":["../../src/contracts/inventory-detail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,qBAAqB,EAAE,OAAO,CAAC;IAC/B,0DAA0D;IAC1D,uBAAuB,EAAE,MAAM,CAAC;IAChC,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,KAAK,CAAC;IACtB,aAAa,EAAE,WAAW,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;CACrB"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * AWX Inventory Detail Output Contract — v1.0
3
+ *
4
+ * TypeScript interface defining the structured output for inventory
5
+ * detail requests. Used by `mapInventory()` to shape raw AWX API responses
6
+ * into the canonical format.
7
+ *
8
+ * ## Schema Fields
9
+ *
10
+ * - **schema_version**: Always "1.0"
11
+ * - **resource_type**: Always "inventory"
12
+ * - **id**: The numeric resource ID
13
+ * - **data**: Core inventory data with resolved related names
14
+ *
15
+ * ## Field Naming Convention
16
+ *
17
+ * - Related resource names are resolved from `summary_fields` (not raw IDs)
18
+ * - `kind` is the inventory type (e.g. "smart" for smart inventories, "" for normal)
19
+ * - `variables` is a raw JSON/YAML string, or empty if not set
20
+ */
21
+ export {};
22
+ //# sourceMappingURL=inventory-detail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory-detail.js","sourceRoot":"","sources":["../../src/contracts/inventory-detail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG"}
@@ -4,12 +4,6 @@
4
4
  * Canonical TypeScript representation of the `awx_job_detail.py` v1.0 output schema.
5
5
  * Every job-related tool MUST return output matching this contract.
6
6
  *
7
- * This file provides **both**:
8
- * - Zod schemas for runtime validation (e.g., API response parsing)
9
- * - Inferred TypeScript types for static type checking
10
- *
11
- * The contract has been verified against fixture snapshots in `tests/contracts/__snapshots__/`.
12
- *
13
7
  * ## Schema Fields
14
8
  *
15
9
  * - **schema_version**: Always "1.0"
@@ -27,115 +21,55 @@
27
21
  * - Use `derived` — NOT `extra_vars_summary`
28
22
  * - `related` fields are resolved names, not raw URLs
29
23
  * - `job.limit` is the AWX job limit (host pattern), not a pagination value
30
- *
31
- * ## Snapshot Testing
32
- *
33
- * Fixture JSON files in `tests/fixtures/` serve as contract snapshots.
34
- * When the Python `awx_job_detail.py` v1.0 output contract changes,
35
- * regenerate the fixtures (see README.md for instructions) and re-run
36
- * tests to verify schema compatibility.
37
- *
38
- * ## Regeneration
39
- *
40
- * To regenerate the contract snapshots after fixture changes:
41
- * ```bash
42
- * python3 scripts/generate-snapshots.py
43
- * ```
44
24
  */
45
- import { z } from "zod";
46
- export declare const JobCoreSchema: z.ZodObject<{
47
- id: z.ZodNumber;
48
- name: z.ZodString;
49
- status: z.ZodString;
50
- failed: z.ZodBoolean;
51
- job_type: z.ZodString;
52
- playbook: z.ZodString;
53
- created: z.ZodString;
54
- started: z.ZodNullable<z.ZodString>;
55
- finished: z.ZodNullable<z.ZodString>;
56
- elapsed: z.ZodNullable<z.ZodNumber>;
57
- execution_node: z.ZodString;
58
- controller_node: z.ZodString;
59
- scm_branch: z.ZodString;
60
- verbosity: z.ZodNumber;
61
- forks: z.ZodNullable<z.ZodNumber>;
62
- limit: z.ZodString;
63
- }, z.core.$strip>;
64
- export declare const RelatedSchema: z.ZodObject<{
65
- inventory_name: z.ZodString;
66
- project_name: z.ZodString;
67
- job_template_name: z.ZodString;
68
- instance_group_name: z.ZodString;
69
- created_by: z.ZodString;
70
- credential_names: z.ZodArray<z.ZodString>;
71
- label_names: z.ZodArray<z.ZodString>;
72
- }, z.core.$strip>;
73
- export declare const HostStatusCountsSchema: z.ZodObject<{
74
- ok: z.ZodNumber;
75
- failed: z.ZodNumber;
76
- skipped: z.ZodNumber;
77
- changed: z.ZodNumber;
78
- unreachable: z.ZodNumber;
79
- }, z.core.$strip>;
80
- export declare const DerivedSchema: z.ZodObject<{
81
- is_successful: z.ZodBoolean;
82
- is_failed: z.ZodBoolean;
83
- has_unreachable_hosts: z.ZodBoolean;
84
- }, z.core.$strip>;
85
- export declare const JobDetailOutputSchema: z.ZodObject<{
86
- schema_version: z.ZodLiteral<"1.0">;
87
- job: z.ZodObject<{
88
- id: z.ZodNumber;
89
- name: z.ZodString;
90
- status: z.ZodString;
91
- failed: z.ZodBoolean;
92
- job_type: z.ZodString;
93
- playbook: z.ZodString;
94
- created: z.ZodString;
95
- started: z.ZodNullable<z.ZodString>;
96
- finished: z.ZodNullable<z.ZodString>;
97
- elapsed: z.ZodNullable<z.ZodNumber>;
98
- execution_node: z.ZodString;
99
- controller_node: z.ZodString;
100
- scm_branch: z.ZodString;
101
- verbosity: z.ZodNumber;
102
- forks: z.ZodNullable<z.ZodNumber>;
103
- limit: z.ZodString;
104
- }, z.core.$strip>;
105
- related: z.ZodObject<{
106
- inventory_name: z.ZodString;
107
- project_name: z.ZodString;
108
- job_template_name: z.ZodString;
109
- instance_group_name: z.ZodString;
110
- created_by: z.ZodString;
111
- credential_names: z.ZodArray<z.ZodString>;
112
- label_names: z.ZodArray<z.ZodString>;
113
- }, z.core.$strip>;
114
- host_status_counts: z.ZodObject<{
115
- ok: z.ZodNumber;
116
- failed: z.ZodNumber;
117
- skipped: z.ZodNumber;
118
- changed: z.ZodNumber;
119
- unreachable: z.ZodNumber;
120
- }, z.core.$strip>;
121
- derived: z.ZodObject<{
122
- is_successful: z.ZodBoolean;
123
- is_failed: z.ZodBoolean;
124
- has_unreachable_hosts: z.ZodBoolean;
125
- }, z.core.$strip>;
126
- warnings: z.ZodArray<z.ZodString>;
127
- errors: z.ZodArray<z.ZodString>;
128
- stdout: z.ZodOptional<z.ZodString>;
129
- raw_events: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
130
- }, z.core.$strip>;
131
- /** Core job metadata fields */
132
- export type JobCore = z.infer<typeof JobCoreSchema>;
133
- /** Resolved names for related AWX resources */
134
- export type Related = z.infer<typeof RelatedSchema>;
135
- /** Count of hosts in each Ansible state */
136
- export type HostStatusCounts = z.infer<typeof HostStatusCountsSchema>;
137
- /** Computed boolean flags */
138
- export type Derived = z.infer<typeof DerivedSchema>;
139
- /** Top-level JobDetailOutput contract (v1.0) */
140
- export type JobDetailOutput = z.infer<typeof JobDetailOutputSchema>;
25
+ export interface JobCore {
26
+ id: number;
27
+ name: string;
28
+ status: string;
29
+ failed: boolean;
30
+ job_type: string;
31
+ playbook: string;
32
+ created: string;
33
+ started: string | null;
34
+ finished: string | null;
35
+ elapsed: number | null;
36
+ execution_node: string;
37
+ controller_node: string;
38
+ scm_branch: string;
39
+ verbosity: number;
40
+ forks: number | null;
41
+ limit: string;
42
+ }
43
+ export interface Related {
44
+ inventory_name: string;
45
+ project_name: string;
46
+ job_template_name: string;
47
+ instance_group_name: string;
48
+ created_by: string;
49
+ credential_names: string[];
50
+ label_names: string[];
51
+ }
52
+ export interface HostStatusCounts {
53
+ ok: number;
54
+ failed: number;
55
+ skipped: number;
56
+ changed: number;
57
+ unreachable: number;
58
+ }
59
+ export interface Derived {
60
+ is_successful: boolean;
61
+ is_failed: boolean;
62
+ has_unreachable_hosts: boolean;
63
+ }
64
+ export interface JobDetailOutput {
65
+ schema_version: "1.0";
66
+ job: JobCore;
67
+ related: Related;
68
+ host_status_counts: HostStatusCounts;
69
+ derived: Derived;
70
+ warnings: string[];
71
+ errors: string[];
72
+ stdout?: string;
73
+ raw_events?: unknown[];
74
+ }
141
75
  //# sourceMappingURL=job-detail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"job-detail.d.ts","sourceRoot":"","sources":["../../src/contracts/job-detail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;iBAiBxB,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;iBAQxB,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;iBAMjC,CAAC;AAEH,eAAO,MAAM,aAAa;;;;iBAIxB,CAAC;AAIH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUhC,CAAC;AAIH,+BAA+B;AAC/B,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,+CAA+C;AAC/C,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,2CAA2C;AAC3C,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,6BAA6B;AAC7B,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,gDAAgD;AAChD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"job-detail.d.ts","sourceRoot":"","sources":["../../src/contracts/job-detail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,MAAM,WAAW,OAAO;IACtB,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;CACf;AAED,MAAM,WAAW,OAAO;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAID,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,KAAK,CAAC;IACtB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;CACxB"}