pi-daddy 0.49.2 → 0.49.3
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/CHANGELOG.md +4 -0
- package/README.md +2 -1
- package/extensions/grants-command.ts +13 -2
- package/extensions/grants.ts +7 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog — pi-daddy
|
|
2
2
|
|
|
3
|
+
## 0.49.3 — 2026-10-10
|
|
4
|
+
|
|
5
|
+
- Show approval-only grant previews as `AUTO` when session Auto is on instead of misleading `BLOCK` rows. The status reads the same observed Auto state as the header; unavailable policy and genuine refusals remain blocked. Preview never acquires permission, and actual delegation still rechecks live Auto and execution conditions.
|
|
6
|
+
|
|
3
7
|
## 0.49.2 — 2026-10-10
|
|
4
8
|
|
|
5
9
|
- Show the selected JEV provider/model, transport and shared local data root in dashboard Settings when the owning Harness reports them; older Harness versions remain compatible. Update both packages and restart Pi to see the selected route.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# pi-daddy
|
|
2
2
|
|
|
3
|
-
Source target: **0.
|
|
3
|
+
Source target: **0.49.3**. Before installation, verify that `npm view pi-daddy version` and Git tag `v0.49.3` both resolve to this release.
|
|
4
4
|
|
|
5
5
|
**Capability governance and coordination for [pi](https://github.com/badlogic/pi-mono)'s multi-level agent system.**
|
|
6
6
|
An orchestrator grants each sub-agent a deliberate subset of what it holds and withholds the rest. A sub-agent may
|
|
@@ -188,6 +188,7 @@ approvals` lists what is persisted; `/grants revoke <capability>@<definition>` o
|
|
|
188
188
|
in pi's agent directory, not in the workspace.
|
|
189
189
|
|
|
190
190
|
**Auto mode** lets the operator approve every Daddy permission request for the current session and its descendants.
|
|
191
|
+
`/grants` marks an approval-only gate as `AUTO` when Auto is on. This is a preview of the permission step; actual delegation still rechecks Auto and all other execution conditions. Genuine refusals remain `BLOCK`.
|
|
191
192
|
Start Pi with `PI_DADDY_AUTO_MODE=1` for Auto ON, or `PI_DADDY_AUTO_MODE=0` (the default when unset) for Auto OFF.
|
|
192
193
|
In the connected dashboard, press **a** to switch it on or off. `/grants auto on` and `/grants auto off` control the
|
|
193
194
|
same session setting; `/grants` shows the current state and source. Reload preserves the session choice; a new
|
|
@@ -14,6 +14,7 @@ import type { childExecutionLimits } from "./dashboard-settings.ts";
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
import { renderExecutionControls } from "./execution-controls.ts";
|
|
17
|
+
import { shouldSeekApproval } from "../src/kernel/approval.ts";
|
|
17
18
|
import type { Capability } from "../src/kernel/resolve.ts";
|
|
18
19
|
import type { ExecutorChoice } from "../src/executors/executor.ts";
|
|
19
20
|
import type { Catalog } from "../src/kernel/catalog.ts";
|
|
@@ -31,6 +32,8 @@ export interface GrantsCommandContext {
|
|
|
31
32
|
nativeSessionRoot?: string;
|
|
32
33
|
executionLimits?: ReturnType<typeof childExecutionLimits>;
|
|
33
34
|
autoModeStatus?: string;
|
|
35
|
+
/** Observed with the status line; presentation only, never an approval. */
|
|
36
|
+
autoModeEnabled?: boolean;
|
|
34
37
|
/** Explicit owner mutation; the command parser itself holds no permission authority. */
|
|
35
38
|
changeAutoMode?: (enabled: boolean) => Promise<string>;
|
|
36
39
|
ownGrant: Capability[];
|
|
@@ -513,9 +516,17 @@ export const grantsCommand = {
|
|
|
513
516
|
plan.ok && approval && approval.approved.length > 0
|
|
514
517
|
? ` (${approval.approved.map((c) => `${c} approved: ${approval.sources[c] ?? "?"}`).join("; ")})`
|
|
515
518
|
: "";
|
|
519
|
+
const awaitingAuto =
|
|
520
|
+
ctx.grants.autoModeEnabled === true &&
|
|
521
|
+
!plan.ok &&
|
|
522
|
+
plan.refusal?.code === "GATED_UNAPPROVED" &&
|
|
523
|
+
shouldSeekApproval(plan.result);
|
|
524
|
+
const reason = awaitingAuto
|
|
525
|
+
? `${plan.result!.gatedBlocked.join(", ")}: Auto supplies approval at dispatch; live state is rechecked`
|
|
526
|
+
: plan.reason;
|
|
516
527
|
lines.push(
|
|
517
|
-
` ${plan.ok ? "allow" : "BLOCK"} ${name} [${runtimeText}]` +
|
|
518
|
-
(plan.ok ? ` ${plan.effective.join(", ")}${because}` : ` — ${
|
|
528
|
+
` ${plan.ok ? "allow" : awaitingAuto ? "AUTO" : "BLOCK"} ${name} [${runtimeText}]` +
|
|
529
|
+
(plan.ok ? ` ${plan.effective.join(", ")}${because}` : ` — ${reason}`),
|
|
519
530
|
);
|
|
520
531
|
}
|
|
521
532
|
// R-48. The cap is fine; the SILENCE was not. An operator running `/grants` to answer "what can this
|
package/extensions/grants.ts
CHANGED
|
@@ -455,6 +455,12 @@ export default function (pi: ExtensionAPI, trustedSession?: GrantsSession) {
|
|
|
455
455
|
handler: async (args, ctx) => {
|
|
456
456
|
// Auto controls and emergency revoke-all need no definition acquisition; OFF must remain reachable.
|
|
457
457
|
if (args.trim() !== "revoke --all" && args.trim().split(/\s+/)[0] !== "auto") await session.ensureDefinitions?.();
|
|
458
|
+
const autoView = await getDashboardControlState(session)
|
|
459
|
+
.then(({ auto }) => ({
|
|
460
|
+
autoModeEnabled: auto.enabled,
|
|
461
|
+
autoModeStatus: `${auto.enabled ? "ON" : "OFF"} (${auto.source}; current session permissions)`,
|
|
462
|
+
}))
|
|
463
|
+
.catch((error) => ({ autoModeEnabled: false, autoModeStatus: `unavailable: ${String(error)}` }));
|
|
458
464
|
return grantsCommand.handler(args, {
|
|
459
465
|
...ctx,
|
|
460
466
|
grants: {
|
|
@@ -488,9 +494,7 @@ export default function (pi: ExtensionAPI, trustedSession?: GrantsSession) {
|
|
|
488
494
|
const { auto } = await setAutoApproval(session, enabled, "command");
|
|
489
495
|
return `${auto.enabled ? "ON" : "OFF"} (${auto.source}; current session permissions)`;
|
|
490
496
|
},
|
|
491
|
-
|
|
492
|
-
.then(({ auto }) => `${auto.enabled ? "ON" : "OFF"} (${auto.source}; current session permissions)`)
|
|
493
|
-
.catch((error) => `unavailable: ${String(error)}`),
|
|
497
|
+
...autoView,
|
|
494
498
|
catalog: session.catalog,
|
|
495
499
|
definitions: session.definitions,
|
|
496
500
|
sessionApprovals: session.sessionApprovals,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-daddy",
|
|
3
|
-
"version": "0.49.
|
|
3
|
+
"version": "0.49.3",
|
|
4
4
|
"description": "Capability governance for pi sub-agents: spawn Agent Skills (SKILL.md) definitions whose allowed-tools becomes a grant that can only narrow going down a delegation tree, enforced by pi's own --tools allowlist, with an append-only ledger.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|