psadt-deploy-skill 0.43.0 → 0.46.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/README.md +11 -13
- package/bin/install.mjs +8 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<h1 align="center">PSADT v4 → Intune Deployment Skill</h1>
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<em>A Claude Code skill that drives the full lifecycle of a PowerShell App Deployment Toolkit (PSADT) v4.x Intune Win32 package - from first conversation to a tested, upload-ready <code>.intunewin</code>.</em>
|
|
@@ -73,7 +73,7 @@ Thirteen phases, each owned by a script rather than by prose, so a step either p
|
|
|
73
73
|
| **1-2** Intake + research | blocker questions as clickable options; a local-evidence ladder (installed here? binary here? already written down?) answers what it can, and a research agent is dispatched only per question it leaves open | agent (gates 1-2) |
|
|
74
74
|
| **3** Scaffold | a generator writes launcher + detection + per-run log name + manifest | `New-MsiPackage` · `New-ExePackage` · `New-BrowserExtensionPackage` · `New-WindowsFeaturePackage` · `New-DriverPackage` |
|
|
75
75
|
| **4** Customize | all three hooks filled from the research, helpers in the Extensions module | agent |
|
|
76
|
-
| **5** Pre-flight |
|
|
76
|
+
| **5** Pre-flight | 14 checks (encoding, AST parse, v3 cmdlets, structure, detection contract, manifest, log name, driver trust …) → GREEN/RED | `Invoke-PsadtPreflight.ps1` |
|
|
77
77
|
| **6** SYSTEM test | the whole loop in a throwaway Windows Sandbox, every action as **SYSTEM** like the IME does - no elevation, host untouched. **Binding before any upload** | `Invoke-PsadtSandboxTest.ps1` |
|
|
78
78
|
| **7** Package | one command → verified `.intunewin`, named after the app | `Invoke-PsadtPackage.ps1` |
|
|
79
79
|
| **8** Dossier | always, uploaded or not: bilingual self-contained HTML | `New-PsadtReport.ps1` |
|
|
@@ -103,7 +103,7 @@ the same app from disagreeing about their own version.
|
|
|
103
103
|
- **A dossier is produced every time**, uploaded or not: one self-contained bilingual HTML file with the
|
|
104
104
|
return-code map, the detection rule, the hooks, the test results - and a ready-to-paste Company-Portal
|
|
105
105
|
description.
|
|
106
|
-
- **
|
|
106
|
+
- **859 Pester tests**, including drift guards that fail when the documentation and the code disagree -
|
|
107
107
|
one of them reads the published landing page and compares its figures against this repository.
|
|
108
108
|
|
|
109
109
|
## Go deeper
|
|
@@ -121,7 +121,7 @@ the same app from disagreeing about their own version.
|
|
|
121
121
|
## Status
|
|
122
122
|
|
|
123
123
|
In active use for the full build → package → test → dossier workflow, with the direct Graph upload
|
|
124
|
-
verified against a live tenant. The helper scripts are covered by
|
|
124
|
+
verified against a live tenant. The helper scripts are covered by 859 Pester tests.
|
|
125
125
|
|
|
126
126
|
One open point, honestly: **the driver `pnputil` exit-code semantics are documented, not verified here.**
|
|
127
127
|
`0` / `259` / `3010` and the two `0xE...` failures come from Microsoft's documentation; confirming them
|
|
@@ -170,12 +170,10 @@ installed.
|
|
|
170
170
|
**[CHANGELOG.md](CHANGELOG.md)** carries the complete history, every release since 0.1.0, and nothing is
|
|
171
171
|
ever removed from it.
|
|
172
172
|
|
|
173
|
-
Latest: **0.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
written to, so the secret cannot be created inside the skill folder. The dossier template no longer names a
|
|
181
|
-
customer.
|
|
173
|
+
Latest: **0.46.0 - Sixteen findings, and the two the live run had already proved.** The last sixteen
|
|
174
|
+
findings from the deep analysis. A full run on 0.45.0 had shown two of them for real: the dossier
|
|
175
|
+
existed on disk while the manifest said nothing about it, and the package finished with no logo and no
|
|
176
|
+
warning. The manifest now records what was produced, the three JSON stores are replaced atomically, the
|
|
177
|
+
packaging tool and the four MSAL packages are verified before anything executes, the host re-checks the
|
|
178
|
+
verdict the sandbox hands it, a generator no longer discards a hand-filled package without -Force, and
|
|
179
|
+
an ampersand in a path no longer produces a sandbox that silently starts without its mapped folders.
|
package/bin/install.mjs
CHANGED
|
@@ -222,8 +222,12 @@ async function main() {
|
|
|
222
222
|
// The ref is recorded next to the sha because Update-PsadtSkill.ps1 cannot otherwise tell a
|
|
223
223
|
// release-pinned installation from one tracking main, and would report a pinned machine as
|
|
224
224
|
// permanently "behind" every time main moved.
|
|
225
|
-
// -Command, not -File: -File
|
|
226
|
-
|
|
225
|
+
// -Command, not -File: -File stringifies every argument and -Updates wants a hashtable. The
|
|
226
|
+
// VALUES travel as environment variables, never interpolated into the source: a ref or a home
|
|
227
|
+
// directory containing an apostrophe would otherwise close the literal and run what follows.
|
|
228
|
+
run(psExe, [...psBase, '-Command',
|
|
229
|
+
"& $env:PSADT_SETCFG -Updates @{'tooling.skillCommit'=$env:PSADT_SHA; 'tooling.skillRef'=$env:PSADT_REF}"],
|
|
230
|
+
{ env: { ...process.env, PSADT_SETCFG: setCfg, PSADT_SHA: sha, PSADT_REF: ref } });
|
|
227
231
|
console.log(` OK recorded commit ${sha.slice(0, 7)} at ref ${ref}`);
|
|
228
232
|
}
|
|
229
233
|
} else if (res.status === 404) {
|
|
@@ -254,7 +258,8 @@ async function main() {
|
|
|
254
258
|
// -Command with Out-Null rather than -File: the doctor also RETURNS its result object, and with inherited
|
|
255
259
|
// stdout that object gets dumped underneath its own table. Out-Null drops the object; Write-Host output
|
|
256
260
|
// (the table) is unaffected.
|
|
257
|
-
const d = run(psExe, [...psBase, '-Command',
|
|
261
|
+
const d = run(psExe, [...psBase, '-Command', '& $env:PSADT_DOCTOR -Fix -JsonPath $env:PSADT_JSON | Out-Null'],
|
|
262
|
+
{ env: { ...process.env, PSADT_DOCTOR: doctor, PSADT_JSON: jsonPath } });
|
|
258
263
|
|
|
259
264
|
let verdict = null;
|
|
260
265
|
try {
|