psadt-deploy-skill 0.32.0 → 0.34.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 +43 -34
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ Twelve phases, each owned by a script rather than by prose, so a step either pas
|
|
|
52
52
|
| Phase | What happens | Owner |
|
|
53
53
|
|---|---|---|
|
|
54
54
|
| **0** Setup | 13 prerequisite checks, GREEN/YELLOW/RED, `-Fix` provisions | `Initialize-PsadtSkill.ps1` |
|
|
55
|
-
| **1–2** Intake + research | blocker questions as clickable options;
|
|
55
|
+
| **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) |
|
|
56
56
|
| **3** Scaffold | a generator writes launcher + detection + per-run log name + manifest; `New-ADTTemplate` only when none fits | `New-MsiPackage` · `New-BrowserExtensionPackage` · `New-WindowsFeaturePackage` · `New-DriverPackage` |
|
|
57
57
|
| **4** Customize | all three hooks filled from the research, helpers in the Extensions module | agent |
|
|
58
58
|
| **5** Pre-flight | 10 checks (encoding, AST parse, v3 cmdlets, structure, detection contract, manifest, log name, driver trust …) → GREEN/RED | `Invoke-PsadtPreflight.ps1` |
|
|
@@ -196,7 +196,7 @@ The app's **native installer is always the default**. Everything else is opt-in
|
|
|
196
196
|
matrix and the manual portal route: `references/app-registration.md`.
|
|
197
197
|
- For **Pester tests**: Pester 5+ (`Install-Module Pester -MinimumVersion 5.0 -Scope CurrentUser`)
|
|
198
198
|
- **Optional (recommended): the [superpowers](https://github.com/obra/superpowers) plugin** — if installed,
|
|
199
|
-
the research fan-out and the reviewer gate use it. Not required: without it the skill falls back to the
|
|
199
|
+
the gated research fan-out and the reviewer gate use it. Not required: without it the skill falls back to the
|
|
200
200
|
native Agent tool and `/code-review`, and nothing in the workflow depends on the plugin.
|
|
201
201
|
|
|
202
202
|
## Installation
|
|
@@ -434,35 +434,44 @@ The two most recent releases are below. **[CHANGELOG.md](CHANGELOG.md)** carries
|
|
|
434
434
|
every release since 0.1.0, and nothing is ever removed from it - this section is a window onto it, not a
|
|
435
435
|
second copy to keep in sync.
|
|
436
436
|
|
|
437
|
-
### 0.
|
|
438
|
-
- **
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
and
|
|
447
|
-
the
|
|
448
|
-
- **
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
437
|
+
### 0.34.0 - 2026-09-16
|
|
438
|
+
- **Added: `-TrustedPublisherCert` on `Invoke-PsadtSandboxTest.ps1`.** An installer that stages a
|
|
439
|
+
third-party driver raises the Windows "install device software?" prompt unless the signer is already in
|
|
440
|
+
`TrustedPublisher` - and in the guest that prompt is **invisible**, because every action runs as SYSTEM
|
|
441
|
+
through a scheduled task and draws nothing on the desktop. The installer waits for an answer nobody can
|
|
442
|
+
give and the phase burns its whole timeout, looking exactly like a slow installer. Pass the `.cer` and
|
|
443
|
+
the harness imports it during GuestPrepare, the same thing an Intune `RootCATrustedCertificates` profile
|
|
444
|
+
does on the fleet. Measured on Time-Access 3010 / EDIsecure: **25 minutes of timeout versus 43 seconds**.
|
|
445
|
+
The import uses `certutil` (`Import-Certificate` returns `E_ACCESSDENIED` in the guest even when
|
|
446
|
+
elevated) and is **verified by reading the store back** - a failed import is indistinguishable from a
|
|
447
|
+
successful one when only the return value is logged, and that cost a full run.
|
|
448
|
+
- **Fixed: the elapsed timer in the guest window stopped counting.** It rendered `progress.json` verbatim,
|
|
449
|
+
but `Update-Ui` returns early when that file has not changed - right for the phase list, fatal for a
|
|
450
|
+
clock, and phases that are not an action wait loop never rewrite the file at all (GuestPrepare alone can
|
|
451
|
+
sit there for 90 seconds). The one element whose job is to prove the run is alive was frozen exactly
|
|
452
|
+
when that gets asked. It now ticks on the window's own 1s timer and re-syncs on every file value.
|
|
453
|
+
- **Fixed: the heartbeat was up to 20 seconds stale** - the guest wrote every 10s and the host read every
|
|
454
|
+
10s, and the two stacked. Both are 1s now; the console line and transcript keep the coarser beat so
|
|
455
|
+
phase boundaries stay legible.
|
|
456
|
+
- Phase 6.1 now documents cancelling with `STOP.txt` (killing the process orphans `vmmemWindowsSandbox`
|
|
457
|
+
and blocks every further run) and scoping with `-Scenarios` while iterating. Suite 624, unchanged by this release - the new behaviour is guarded by the existing sandbox-harness and progress-UI tests.
|
|
458
|
+
### 0.33.0 - 2026-09-16
|
|
459
|
+
- **Fixed: the Phase 2 research fan-out is gated.** `SKILL.md` ordered it in the imperative - *"Dispatch
|
|
460
|
+
the three Researcher roles concurrently"* - one line above the two probe sentences, and rule 1 routed
|
|
461
|
+
every unknown into it because asking is forbidden. Three agents ran whether or not anyone needed them;
|
|
462
|
+
on an app already installed on the packaging machine, one such run cost 400k tokens to rediscover a
|
|
463
|
+
`QuietUninstallString` the Uninstall registry had been holding all along.
|
|
464
|
+
- **Added: `scripts/Get-PsadtLocalEvidence.ps1`**, the ladder that decides whether an agent is warranted.
|
|
465
|
+
Four rungs, deterministic and offline: the installed PSADT module's manifest (retiring the
|
|
466
|
+
version/command-drift research topic outright), the Uninstall registry, the existing MSI and
|
|
467
|
+
switch-candidate probes composed rather than reimplemented, and this skill's own corpus plus a vendor
|
|
468
|
+
doc URL it **names but never fetches**. It reports `OpenQuestions[]` and `AgentBudget`, and that number
|
|
469
|
+
is the dispatch cap: zero open questions, zero sub-agents.
|
|
470
|
+
- **Capped by family, so the cap is structural.** Questions one vendor deployment page answers fold into
|
|
471
|
+
a single agent. Three families can ever dispatch, so the budget cannot exceed three however the
|
|
472
|
+
question set grows - measured at **2 for an MSI or an app installed locally, 3 at worst**.
|
|
473
|
+
- **Honest about its limits.** The external runtime prerequisite and known Intune pitfalls are marked
|
|
474
|
+
`CanCloseLocally = $false` - a statement about other people's fleets does not follow from this machine -
|
|
475
|
+
so the realistic floor is two agents, not zero. Everything open but not worth an agent lands in
|
|
476
|
+
`Deferred[]` with a reason, and `repair-strategy` is now a first-class question because
|
|
477
|
+
`rule:all-three-deployment-types` makes Repair a deliverable.
|