pi-daddy 0.46.0 → 0.47.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 (108) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +77 -11
  3. package/contracts/ledger-record/v1/governance-event.schema.json +67 -3
  4. package/dist/governance/approval-prompt.d.ts +8 -11
  5. package/dist/governance/approval-prompt.d.ts.map +1 -1
  6. package/dist/governance/approval-prompt.js +138 -24
  7. package/dist/governance/approval-prompt.js.map +1 -1
  8. package/dist/governance/auto-mode-policy.d.ts +11 -0
  9. package/dist/governance/auto-mode-policy.d.ts.map +1 -0
  10. package/dist/governance/auto-mode-policy.js +309 -0
  11. package/dist/governance/auto-mode-policy.js.map +1 -0
  12. package/dist/governance/execution-retention.d.ts +3 -0
  13. package/dist/governance/execution-retention.d.ts.map +1 -1
  14. package/dist/governance/execution-retention.js +30 -0
  15. package/dist/governance/execution-retention.js.map +1 -1
  16. package/dist/governance/ledger-events.d.ts +14 -1
  17. package/dist/governance/ledger-events.d.ts.map +1 -1
  18. package/dist/governance/ledger-events.js +13 -0
  19. package/dist/governance/ledger-events.js.map +1 -1
  20. package/dist/governance/ledger-report.d.ts.map +1 -1
  21. package/dist/governance/ledger-report.js +5 -3
  22. package/dist/governance/ledger-report.js.map +1 -1
  23. package/dist/governance/ledger-v3-validation.d.ts.map +1 -1
  24. package/dist/governance/ledger-v3-validation.js +18 -4
  25. package/dist/governance/ledger-v3-validation.js.map +1 -1
  26. package/dist/governance/ledger.d.ts +4 -5
  27. package/dist/governance/ledger.d.ts.map +1 -1
  28. package/dist/governance/ledger.js +2 -2
  29. package/dist/governance/ledger.js.map +1 -1
  30. package/dist/kernel/approval.d.ts +1 -1
  31. package/dist/kernel/approval.d.ts.map +1 -1
  32. package/dist/kernel/approval.js +1 -1
  33. package/dist/kernel/approval.js.map +1 -1
  34. package/dist/kernel/auto-mode.d.ts +35 -0
  35. package/dist/kernel/auto-mode.d.ts.map +1 -0
  36. package/dist/kernel/auto-mode.js +29 -0
  37. package/dist/kernel/auto-mode.js.map +1 -0
  38. package/dist/kernel/delegate-types.d.ts +2 -0
  39. package/dist/kernel/delegate-types.d.ts.map +1 -1
  40. package/dist/kernel/delegate-types.js.map +1 -1
  41. package/dist/kernel/delegate.d.ts.map +1 -1
  42. package/dist/kernel/delegate.js +2 -2
  43. package/dist/kernel/delegate.js.map +1 -1
  44. package/dist/kernel/env-names.d.ts +2 -0
  45. package/dist/kernel/env-names.d.ts.map +1 -1
  46. package/dist/kernel/env-names.js +4 -0
  47. package/dist/kernel/env-names.js.map +1 -1
  48. package/dist/kernel/propagation.d.ts +5 -1
  49. package/dist/kernel/propagation.d.ts.map +1 -1
  50. package/dist/kernel/propagation.js +8 -2
  51. package/dist/kernel/propagation.js.map +1 -1
  52. package/dist/products/dashboard-cli.d.ts +6 -0
  53. package/dist/products/dashboard-cli.d.ts.map +1 -1
  54. package/dist/products/dashboard-cli.js +248 -52
  55. package/dist/products/dashboard-cli.js.map +1 -1
  56. package/dist/products/dashboard-display-controls.d.ts +2 -1
  57. package/dist/products/dashboard-display-controls.d.ts.map +1 -1
  58. package/dist/products/dashboard-display-controls.js +61 -0
  59. package/dist/products/dashboard-display-controls.js.map +1 -1
  60. package/dist/products/dashboard-render.d.ts +2 -0
  61. package/dist/products/dashboard-render.d.ts.map +1 -1
  62. package/dist/products/dashboard-render.js +2 -2
  63. package/dist/products/dashboard-render.js.map +1 -1
  64. package/dist/products/dashboard-screen.d.ts +52 -0
  65. package/dist/products/dashboard-screen.d.ts.map +1 -0
  66. package/dist/products/dashboard-screen.js +262 -0
  67. package/dist/products/dashboard-screen.js.map +1 -0
  68. package/dist/products/dashboard-session-client.d.ts +34 -2
  69. package/dist/products/dashboard-session-client.d.ts.map +1 -1
  70. package/dist/products/dashboard-session-client.js +51 -0
  71. package/dist/products/dashboard-session-client.js.map +1 -1
  72. package/dist/products/ecosystem-versions.d.ts +19 -0
  73. package/dist/products/ecosystem-versions.d.ts.map +1 -0
  74. package/dist/products/ecosystem-versions.js +2 -0
  75. package/dist/products/ecosystem-versions.js.map +1 -0
  76. package/extensions/activity-timeline.ts +94 -31
  77. package/extensions/approvals.ts +3 -2
  78. package/extensions/dashboard-session-server.ts +32 -4
  79. package/extensions/delegate-chain.ts +2 -0
  80. package/extensions/delegation-ledger.ts +10 -6
  81. package/extensions/ecosystem-versions.ts +166 -0
  82. package/extensions/execution-controls.ts +42 -0
  83. package/extensions/grants-command.ts +37 -3
  84. package/extensions/grants.ts +29 -2
  85. package/extensions/reload-environment.ts +16 -1
  86. package/extensions/run-delegation.ts +49 -3
  87. package/extensions/session-auto-mode.ts +132 -0
  88. package/extensions/session.ts +47 -37
  89. package/package.json +2 -2
  90. package/src/governance/approval-prompt.ts +144 -29
  91. package/src/governance/auto-mode-policy.ts +297 -0
  92. package/src/governance/execution-retention.ts +24 -0
  93. package/src/governance/ledger-events.ts +22 -1
  94. package/src/governance/ledger-report.ts +5 -3
  95. package/src/governance/ledger-v3-validation.ts +18 -4
  96. package/src/governance/ledger.ts +4 -4
  97. package/src/kernel/approval.ts +1 -1
  98. package/src/kernel/auto-mode.ts +56 -0
  99. package/src/kernel/delegate-types.ts +2 -0
  100. package/src/kernel/delegate.ts +2 -1
  101. package/src/kernel/env-names.ts +4 -0
  102. package/src/kernel/propagation.ts +11 -2
  103. package/src/products/dashboard-cli.ts +255 -53
  104. package/src/products/dashboard-display-controls.ts +52 -0
  105. package/src/products/dashboard-render.ts +2 -2
  106. package/src/products/dashboard-screen.ts +339 -0
  107. package/src/products/dashboard-session-client.ts +60 -1
  108. package/src/products/ecosystem-versions.ts +18 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-screen.js","sourceRoot":"","sources":["../../src/products/dashboard-screen.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { EcosystemVersions } from "./ecosystem-versions.ts";
1
2
  export interface DashboardSessionSnapshot {
2
3
  rows: Array<{
3
4
  definition: string;
@@ -6,11 +7,42 @@ export interface DashboardSessionSnapshot {
6
7
  source: string;
7
8
  }>;
8
9
  cost: number | null;
10
+ activity?: {
11
+ rootId: string;
12
+ path: string;
13
+ taskId: string;
14
+ };
15
+ versions?: EcosystemVersions;
16
+ auto: {
17
+ enabled: boolean;
18
+ source: "default" | "environment" | "session";
19
+ };
20
+ pendingApprovals: Array<{
21
+ id: string;
22
+ subject: string;
23
+ capability: string;
24
+ }>;
9
25
  }
10
- export declare function dashboardSessionRequest(socketPath: string, token: string, request: {
26
+ export type DashboardSessionAction = {
11
27
  action: "get";
12
28
  } | {
13
29
  action: "set";
14
30
  edits: string;
15
- }): Promise<DashboardSessionSnapshot>;
31
+ } | {
32
+ action: "set-auto";
33
+ enabled: boolean;
34
+ };
35
+ export declare function dashboardSessionRequest(socketPath: string, token: string, request: DashboardSessionAction): Promise<DashboardSessionSnapshot>;
36
+ /** A slow status poll cannot overwrite a newer acknowledged mutation. Failed requests expose no guessed mode. */
37
+ export declare function createDashboardConnection(request?: (action: DashboardSessionAction) => Promise<DashboardSessionSnapshot>): {
38
+ state: {
39
+ snapshot?: DashboardSessionSnapshot;
40
+ pending: boolean;
41
+ error?: string;
42
+ };
43
+ refresh(): Promise<void>;
44
+ change(action: Exclude<DashboardSessionAction, {
45
+ action: "get";
46
+ }>): Promise<boolean>;
47
+ };
16
48
  //# sourceMappingURL=dashboard-session-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-session-client.d.ts","sourceRoot":"","sources":["../../src/products/dashboard-session-client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,MAAM,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5D,OAAO,CAAC,wBAAwB,CAAC,CAsBnC"}
1
+ {"version":3,"file":"dashboard-session-client.d.ts","sourceRoot":"","sources":["../../src/products/dashboard-session-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGjE,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,CAAA;KAAE,CAAC;IAC1E,gBAAgB,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9E;AAED,MAAM,MAAM,sBAAsB,GAChC;IAAE,MAAM,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAElG,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CA8BnC;AAED,iHAAiH;AACjH,wBAAgB,yBAAyB,CACvC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,wBAAwB,CAAC;;mBAErD,wBAAwB;iBAAW,OAAO;gBAAU,MAAM;;;mBAoB7D,OAAO,CAAC,sBAAsB,EAAE;QAAE,MAAM,EAAE,KAAK,CAAA;KAAE,CAAC;EAiB1E"}
@@ -16,6 +16,12 @@ export async function dashboardSessionRequest(socketPath, token, request) {
16
16
  const parsed = JSON.parse(output);
17
17
  if (!parsed.ok)
18
18
  throw new Error(parsed.error ?? "dashboard session request failed");
19
+ if (!parsed.auto ||
20
+ typeof parsed.auto.enabled !== "boolean" ||
21
+ !["default", "environment", "session"].includes(parsed.auto.source) ||
22
+ !Array.isArray(parsed.pendingApprovals) ||
23
+ !Array.isArray(parsed.rows))
24
+ throw new Error("dashboard owner does not provide compatible permission controls");
19
25
  resolve(parsed);
20
26
  }
21
27
  catch (error) {
@@ -25,4 +31,49 @@ export async function dashboardSessionRequest(socketPath, token, request) {
25
31
  socket.once("connect", () => socket.write(`${JSON.stringify({ ...request, token })}\n`));
26
32
  });
27
33
  }
34
+ /** A slow status poll cannot overwrite a newer acknowledged mutation. Failed requests expose no guessed mode. */
35
+ export function createDashboardConnection(request) {
36
+ const state = { pending: false };
37
+ let generation = 0;
38
+ return {
39
+ state,
40
+ async refresh() {
41
+ if (!request || state.pending)
42
+ return;
43
+ const observed = generation;
44
+ try {
45
+ const snapshot = await request({ action: "get" });
46
+ if (generation === observed) {
47
+ state.snapshot = snapshot;
48
+ state.error = undefined;
49
+ }
50
+ }
51
+ catch (error) {
52
+ if (generation === observed) {
53
+ state.snapshot = undefined;
54
+ state.error = `Controls unavailable: ${error instanceof Error ? error.message : String(error)}`;
55
+ }
56
+ }
57
+ },
58
+ async change(action) {
59
+ if (!request || !state.snapshot || state.pending)
60
+ return false;
61
+ generation++;
62
+ state.pending = true;
63
+ try {
64
+ state.snapshot = await request(action);
65
+ state.error = undefined;
66
+ return true;
67
+ }
68
+ catch (error) {
69
+ state.snapshot = undefined;
70
+ state.error = `Control change not confirmed: ${error instanceof Error ? error.message : String(error)}`;
71
+ return false;
72
+ }
73
+ finally {
74
+ state.pending = false;
75
+ }
76
+ },
77
+ };
78
+ }
28
79
  //# sourceMappingURL=dashboard-session-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-session-client.js","sourceRoot":"","sources":["../../src/products/dashboard-session-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAAkB,EAClB,KAAa,EACb,OAA6D;IAE7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC;QACjG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC;YAChB,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI;gBAAE,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;YACtB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAgE,CAAC;gBACjG,IAAI,CAAC,MAAM,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,kCAAkC,CAAC,CAAC;gBACpF,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"dashboard-session-client.js","sourceRoot":"","sources":["../../src/products/dashboard-session-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /** Operator version inventory. These observations do not qualify runtime compatibility. */
2
+ export type EcosystemPackageId = "pi" | "pi-daddy" | "principal-pi-skills" | "skill-harness";
3
+ export interface EcosystemVersionRow {
4
+ id: EcosystemPackageId;
5
+ label: string;
6
+ loadedVersion: string | null;
7
+ installedVersion: string | null;
8
+ source: string | null;
9
+ path: string | null;
10
+ state: "current" | "reload-required" | "not-reported" | "unavailable" | "multiple";
11
+ commands: string[];
12
+ note?: string;
13
+ }
14
+ export interface EcosystemVersions {
15
+ rows: EcosystemVersionRow[];
16
+ checkedAt: string;
17
+ note?: string;
18
+ }
19
+ //# sourceMappingURL=ecosystem-versions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecosystem-versions.d.ts","sourceRoot":"","sources":["../../src/products/ecosystem-versions.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,UAAU,GAAG,qBAAqB,GAAG,eAAe,CAAC;AAC7F,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,kBAAkB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,SAAS,GAAG,iBAAiB,GAAG,cAAc,GAAG,aAAa,GAAG,UAAU,CAAC;IACnF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ecosystem-versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecosystem-versions.js","sourceRoot":"","sources":["../../src/products/ecosystem-versions.ts"],"names":[],"mappings":""}
@@ -21,6 +21,13 @@ interface HookContext {
21
21
  cwd: string;
22
22
  model?: { id?: string };
23
23
  thinkingLevel?: string;
24
+ sessionManager?: {
25
+ getBranch(): Array<{
26
+ id: string;
27
+ type: string;
28
+ message?: { role?: string; content?: unknown; stopReason?: string };
29
+ }>;
30
+ };
24
31
  ui: { notify(message: string, level?: "info" | "warning" | "error"): void };
25
32
  }
26
33
  const digest = (text: string) => createHash("sha256").update(text).digest("hex");
@@ -32,7 +39,11 @@ const digest = (text: string) => createHash("sha256").update(text).digest("hex")
32
39
  export function registerActivityTimeline(pi: ExtensionAPI, session?: ActivitySessionState, lifecycleTool = true): void {
33
40
  let recorder: ActivityTimelineRecorder | undefined,
34
41
  pendingFinal: string | undefined,
35
- finalizedUser: string | undefined;
42
+ pendingStopReason: string | undefined,
43
+ observedUser: string | undefined,
44
+ pendingStart: { event: unknown; prompt: string; priorIds: Set<string> } | undefined;
45
+ let turnPriorIds = new Set<string>();
46
+ let activeRoot = false;
36
47
  let paths = new Map<string, string>(),
37
48
  available = new Map<string, ActivitySkill>();
38
49
  let reported = false;
@@ -77,6 +88,44 @@ export function registerActivityTimeline(pi: ExtensionAPI, session?: ActivitySes
77
88
  await target.skill("skill_available", fact);
78
89
  }
79
90
  };
91
+ const messageText = (content: unknown): string =>
92
+ typeof content === "string"
93
+ ? content
94
+ : Array.isArray(content)
95
+ ? content
96
+ .filter((part) => part?.type === "text")
97
+ .map((part) => part.text ?? "")
98
+ .join("")
99
+ : "";
100
+ // Pi emits before_agent_start before user message_end. Read the finalized branch only after
101
+ // every message transformer has run; never carry a prior turn's user into the next task.
102
+ const startPending = async (ctx: HookContext) => {
103
+ const pending = pendingStart;
104
+ if (!pending) return;
105
+ const user = ctx.sessionManager
106
+ ?.getBranch()
107
+ .find((entry) => !pending.priorIds.has(entry.id) && entry.type === "message" && entry.message?.role === "user");
108
+ const target = current(ctx);
109
+ const taskId = await target.start(
110
+ user ? messageText(user.message?.content) : (observedUser ?? pending.prompt),
111
+ ctx.model?.id,
112
+ ctx.thinkingLevel,
113
+ );
114
+ pendingStart = undefined;
115
+ observedUser = undefined;
116
+ if (session) session.activity = { rootId: target.rootId, path: target.path, ...(taskId ? { taskId } : {}) };
117
+ await skills(pending.event, target);
118
+ };
119
+ const resetTurn = () => {
120
+ activeRoot = false;
121
+ pendingStart = undefined;
122
+ observedUser = undefined;
123
+ pendingFinal = undefined;
124
+ pendingStopReason = undefined;
125
+ turnPriorIds = new Set();
126
+ paths.clear();
127
+ available.clear();
128
+ };
80
129
  if (lifecycleTool)
81
130
  pi.registerTool({
82
131
  name: "activity_lifecycle",
@@ -101,6 +150,8 @@ export function registerActivityTimeline(pi: ExtensionAPI, session?: ActivitySes
101
150
  },
102
151
  });
103
152
  pi.on("session_start", (_event, ctx: HookContext) => {
153
+ resetTurn();
154
+ recorder = undefined;
104
155
  try {
105
156
  recorder = current(ctx);
106
157
  // A leaf observer attaches to the parent-owned child event; a root gets a stable session identity.
@@ -122,42 +173,45 @@ export function registerActivityTimeline(pi: ExtensionAPI, session?: ActivitySes
122
173
  }
123
174
  return undefined;
124
175
  });
176
+ pi.on("session_shutdown", () => {
177
+ resetTurn();
178
+ recorder = undefined;
179
+ });
125
180
  pi.on("before_agent_start", async (event, ctx: HookContext) => {
126
181
  try {
182
+ resetTurn();
127
183
  const target = current(ctx);
128
- // An injected leaf observer must not fabricate a second child task; its parent-owned execution seam
129
- // already wrote task_started. Root turns always get a fresh task id under their stable root identity.
184
+ // Leaves attach to the parent-owned execution. Roots bind the current finalized user at
185
+ // the first context boundary, or at settlement if cancelled before the first model call.
130
186
  if (!process.env[ENV_ACTIVITY_TASK]) {
131
- const taskId = await target.start(
132
- finalizedUser ?? (event as { prompt?: string }).prompt ?? "",
133
- ctx.model?.id,
134
- ctx.thinkingLevel,
135
- );
136
- finalizedUser = undefined;
137
- if (session?.activity)
138
- session.activity = { rootId: target.rootId, path: target.path, ...(taskId ? { taskId } : {}) };
139
- }
140
- await skills(event, target);
187
+ activeRoot = true;
188
+ turnPriorIds = new Set(ctx.sessionManager?.getBranch().map((entry) => entry.id) ?? []);
189
+ pendingStart = { event, prompt: (event as { prompt?: string }).prompt ?? "", priorIds: turnPriorIds };
190
+ if (session) session.activity = { rootId: target.rootId, path: target.path };
191
+ } else await skills(event, target);
192
+ } catch (error) {
193
+ report(ctx, error);
194
+ }
195
+ return undefined;
196
+ });
197
+ pi.on("context", async (_event, ctx: HookContext) => {
198
+ try {
199
+ await startPending(ctx);
141
200
  } catch (error) {
142
201
  report(ctx, error);
143
202
  }
144
203
  return undefined;
145
204
  });
146
205
  pi.on("message_end", (event) => {
147
- const message = (
148
- event as { message?: { role?: string; content?: string | Array<{ type?: string; text?: string }> } }
149
- ).message;
150
- const text =
151
- typeof message?.content === "string"
152
- ? message.content
153
- : Array.isArray(message?.content)
154
- ? message!.content
155
- .filter((part) => part.type === "text")
156
- .map((part) => part.text ?? "")
157
- .join("")
158
- : "";
159
- if (message?.role === "user") finalizedUser = text;
160
- if (message?.role === "assistant") pendingFinal = text;
206
+ const message = (event as { message?: { role?: string; content?: unknown; stopReason?: string } }).message;
207
+ // This fallback is scoped to this pending start. Steering within an active turn cannot
208
+ // overwrite its initial prompt or seed the next root task.
209
+ if (message?.role === "user" && pendingStart && observedUser === undefined)
210
+ observedUser = messageText(message.content);
211
+ if (message?.role === "assistant") {
212
+ pendingFinal = messageText(message.content);
213
+ pendingStopReason = message.stopReason;
214
+ }
161
215
  return undefined;
162
216
  });
163
217
  pi.on("tool_execution_start", (event) => {
@@ -178,19 +232,28 @@ export function registerActivityTimeline(pi: ExtensionAPI, session?: ActivitySes
178
232
  return undefined;
179
233
  });
180
234
  pi.on("agent_settled", async (event, ctx: HookContext) => {
235
+ if (!activeRoot) return undefined;
181
236
  try {
237
+ await startPending(ctx);
238
+ const final = ctx.sessionManager
239
+ ?.getBranch()
240
+ .findLast(
241
+ (entry) => !turnPriorIds.has(entry.id) && entry.type === "message" && entry.message?.role === "assistant",
242
+ );
243
+ const stopReason = final?.message?.stopReason ?? pendingStopReason;
182
244
  if (recorder && !process.env[ENV_ACTIVITY_TASK])
183
245
  await recorder.finish(
184
- pendingFinal,
185
- (event as { cancelled?: boolean; error?: unknown }).cancelled
246
+ final ? messageText(final.message?.content) : pendingFinal,
247
+ (event as { aborted?: boolean }).aborted || stopReason === "aborted"
186
248
  ? "cancelled"
187
- : (event as { error?: unknown }).error
249
+ : stopReason === "error"
188
250
  ? "failed"
189
251
  : "completed",
190
252
  );
191
- pendingFinal = undefined;
192
253
  } catch (error) {
193
254
  report(ctx, error);
255
+ } finally {
256
+ resetTurn();
194
257
  }
195
258
  return undefined;
196
259
  });
@@ -236,6 +236,7 @@ export async function obtainApprovals(
236
236
  hasUI: ctx.hasUI,
237
237
  mode: ctx.mode,
238
238
  timeoutMs: () => timeoutMsFromEnv(process.env[ENV_APPROVAL_TIMEOUT]),
239
+ autoMode: session.autoMode,
239
240
  });
240
241
 
241
242
  const approved = [...pre.approved];
@@ -286,7 +287,7 @@ export async function obtainApprovals(
286
287
  // concurrent children under one *Allow for this session* used to write eight lines each claiming a
287
288
  // prompt. Same repair as R-46, one level up: stop asserting a human was asked on a path where they
288
289
  // were not.
289
- sources[capability] = outcome.joined ? "session" : "prompt";
290
+ sources[capability] = outcome.source === "auto" ? "auto" : outcome.joined ? "session" : "prompt";
290
291
  scopes[capability] = outcome.scope;
291
292
  recordedScopes[capability] = outcome.scope;
292
293
  if (expectedBinding) bindings[capability] = expectedBinding;
@@ -359,7 +360,7 @@ export async function obtainApprovals(
359
360
  delete expiresAt[capability];
360
361
  }
361
362
  }
362
- session.publishChildEnv(); // a new session approval widens what children may inherit — republish now
363
+ if (outcome.source !== "auto") session.publishChildEnv(); // Auto never publishes reusable authority.
363
364
  }
364
365
 
365
366
  return {
@@ -4,6 +4,7 @@ import { createServer, type Server } from "node:net";
4
4
  import { tmpdir } from "node:os";
5
5
  import { join } from "node:path";
6
6
  import type { GrantsSession } from "./session.ts";
7
+ import { getDashboardControlState, setAutoApproval } from "./session-auto-mode.ts";
7
8
  import { saveSessionModelEdits, sessionModelRows } from "./session-model-prompt.ts";
8
9
 
9
10
  export interface DashboardSessionEndpoint {
@@ -26,12 +27,20 @@ async function start(session: GrantsSession): Promise<DashboardSessionEndpoint>
26
27
  const socketPath = join(tmpdir(), `pi-daddy-${process.pid}-${randomBytes(8).toString("hex")}.sock`);
27
28
  const token = randomBytes(24).toString("hex");
28
29
  const server = createServer((socket) => {
29
- let input = "";
30
+ let input = "",
31
+ handled = false;
30
32
  socket.setEncoding("utf8");
33
+ socket.setTimeout(2_000, () => socket.destroy());
34
+ socket.on("error", () => socket.destroy());
31
35
  socket.on("data", (chunk) => {
36
+ if (handled) return;
32
37
  input += chunk;
33
- if (input.length > 16 * 1024) socket.destroy(new Error("dashboard request too large"));
38
+ if (input.length > 16 * 1024) {
39
+ socket.destroy();
40
+ return;
41
+ }
34
42
  if (!input.includes("\n")) return;
43
+ handled = true;
35
44
  const line = input.slice(0, input.indexOf("\n"));
36
45
  void respond(session, token, line)
37
46
  .then((value) => socket.end(`${JSON.stringify(value)}\n`))
@@ -60,9 +69,13 @@ async function start(session: GrantsSession): Promise<DashboardSessionEndpoint>
60
69
  }
61
70
 
62
71
  async function respond(session: GrantsSession, token: string, line: string): Promise<Record<string, unknown>> {
63
- const request = JSON.parse(line) as { token?: unknown; action?: unknown; edits?: unknown };
72
+ const request = JSON.parse(line) as { token?: unknown; action?: unknown; edits?: unknown; enabled?: unknown };
64
73
  if (request.token !== token) return { ok: false, error: "unauthorised dashboard request" };
65
- if (request.action === "set") {
74
+ if (request.action === "set-auto") {
75
+ if (typeof request.enabled !== "boolean") return { ok: false, error: "Auto mode requires an explicit boolean" };
76
+ await setAutoApproval(session, request.enabled, "dashboard");
77
+ } else if (request.action === "set") {
78
+ await getDashboardControlState(session);
66
79
  if (typeof request.edits !== "string") return { ok: false, error: "dashboard edits must be a string" };
67
80
  const invalid = await saveSessionModelEdits(
68
81
  session,
@@ -74,11 +87,26 @@ async function respond(session: GrantsSession, token: string, line: string): Pro
74
87
  } else if (request.action !== "get") return { ok: false, error: "unknown dashboard action" };
75
88
  return {
76
89
  ok: true,
90
+ ...(await getDashboardControlState(session)),
91
+ ...(session.activity ? { activity: { ...session.activity } } : {}),
77
92
  rows: sessionModelRows(session, [...session.definitions.keys()].sort()),
93
+ versions: versionSnapshot(session),
78
94
  cost: null, // Live complete episode cost is unavailable; retained usage remains in the episode report.
79
95
  };
80
96
  }
81
97
 
98
+ function versionSnapshot(session: GrantsSession) {
99
+ try {
100
+ return session.ecosystemVersions?.();
101
+ } catch {
102
+ return {
103
+ rows: [],
104
+ checkedAt: new Date().toISOString(),
105
+ note: "Version inventory unavailable; permission controls remain connected.",
106
+ };
107
+ }
108
+ }
109
+
82
110
  function close(server: Server, socketPath: string): void {
83
111
  server.close();
84
112
  void rm(socketPath, { force: true });
@@ -217,6 +217,8 @@ export function registerChainTool(pi: ExtensionAPI, session: GrantsSession): voi
217
217
  declined = { request, outcome };
218
218
  break;
219
219
  }
220
+ // Auto is provisional and belongs to an actual step admission, never the upfront union.
221
+ if (outcome.sources[request.capability] === "auto") continue;
220
222
  preApproved.push({
221
223
  capability: request.capability,
222
224
  subject: request.subject,
@@ -46,12 +46,16 @@ export async function recordDelegationDecision(input: {
46
46
  result: plan.result,
47
47
  blocked: !plan.ok,
48
48
  reason: plan.reason,
49
- approved: approval?.approved ?? approvalFacts?.approved,
50
- approvalSources: approval?.sources ?? approvalFacts?.sources,
51
- approvalScopes: approval?.recordedScopes ?? approvalFacts?.scopes,
52
- approvalExpiresAt: approval?.expiresAt ?? approvalFacts?.expiresAt,
53
- approvalUses: approval?.uses ?? approvalFacts?.uses,
54
- humanDenied: approval?.humanDenied ?? approvalFacts?.humanDenied,
49
+ // A step can spend an upfront manual once and acquire fresh Auto permission for another capability.
50
+ approved:
51
+ approval || approvalFacts
52
+ ? [...new Set([...(approvalFacts?.approved ?? []), ...(approval?.approved ?? [])])]
53
+ : undefined,
54
+ approvalSources: { ...approvalFacts?.sources, ...approval?.sources },
55
+ approvalScopes: { ...approvalFacts?.scopes, ...approval?.recordedScopes },
56
+ approvalExpiresAt: { ...approvalFacts?.expiresAt, ...approval?.expiresAt },
57
+ approvalUses: { ...approvalFacts?.uses, ...approval?.uses },
58
+ humanDenied: approval?.humanDenied || approvalFacts?.humanDenied,
55
59
  gateOutcome: approval?.gateOutcome,
56
60
  definitionDigest: plan.definitionDigest,
57
61
  definitionHash: plan.definitionHash,