pi-daddy 0.41.1 → 0.43.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 (133) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/contracts/ledger-record/v1/fixtures/capability-decision.json +3 -1
  3. package/contracts/ledger-record/v1/fixtures/child-lifecycle.json +25 -0
  4. package/contracts/ledger-record/v1/fixtures/episode-cost-gate.json +14 -0
  5. package/contracts/ledger-record/v1/fixtures/episode-outcome.json +12 -0
  6. package/contracts/ledger-record/v1/fixtures/ledger-record.jsonl +6 -3
  7. package/contracts/ledger-record/v1/fixtures/session-config.json +14 -0
  8. package/contracts/ledger-record/v1/governance-event.schema.json +356 -0
  9. package/dist/advisors/advisor.d.ts +24 -1
  10. package/dist/advisors/advisor.d.ts.map +1 -1
  11. package/dist/advisors/advisor.js +19 -1
  12. package/dist/advisors/advisor.js.map +1 -1
  13. package/dist/advisors/decider.d.ts +11 -0
  14. package/dist/advisors/decider.d.ts.map +1 -1
  15. package/dist/advisors/decider.js.map +1 -1
  16. package/dist/advisors/jev.d.ts.map +1 -1
  17. package/dist/advisors/jev.js +32 -1
  18. package/dist/advisors/jev.js.map +1 -1
  19. package/dist/cli.d.ts +7 -1
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +87 -1
  22. package/dist/cli.js.map +1 -1
  23. package/dist/executors/activity-session.d.ts +13 -0
  24. package/dist/executors/activity-session.d.ts.map +1 -1
  25. package/dist/executors/activity-session.js +44 -2
  26. package/dist/executors/activity-session.js.map +1 -1
  27. package/dist/governance/episode-cost-gate.d.ts +31 -0
  28. package/dist/governance/episode-cost-gate.d.ts.map +1 -0
  29. package/dist/governance/episode-cost-gate.js +112 -0
  30. package/dist/governance/episode-cost-gate.js.map +1 -0
  31. package/dist/governance/ledger-events.d.ts +108 -1
  32. package/dist/governance/ledger-events.d.ts.map +1 -1
  33. package/dist/governance/ledger-events.js +64 -0
  34. package/dist/governance/ledger-events.js.map +1 -1
  35. package/dist/governance/ledger-v3-validation.d.ts.map +1 -1
  36. package/dist/governance/ledger-v3-validation.js +124 -0
  37. package/dist/governance/ledger-v3-validation.js.map +1 -1
  38. package/dist/governance/ledger.d.ts +8 -2
  39. package/dist/governance/ledger.d.ts.map +1 -1
  40. package/dist/governance/ledger.js +18 -2
  41. package/dist/governance/ledger.js.map +1 -1
  42. package/dist/kernel/definitions.d.ts +5 -0
  43. package/dist/kernel/definitions.d.ts.map +1 -1
  44. package/dist/kernel/definitions.js +30 -1
  45. package/dist/kernel/definitions.js.map +1 -1
  46. package/dist/kernel/delegate-types.d.ts +4 -0
  47. package/dist/kernel/delegate-types.d.ts.map +1 -1
  48. package/dist/kernel/delegate-types.js.map +1 -1
  49. package/dist/kernel/delegate.d.ts.map +1 -1
  50. package/dist/kernel/delegate.js +20 -5
  51. package/dist/kernel/delegate.js.map +1 -1
  52. package/dist/kernel/env-names.d.ts +5 -0
  53. package/dist/kernel/env-names.d.ts.map +1 -1
  54. package/dist/kernel/env-names.js +9 -0
  55. package/dist/kernel/env-names.js.map +1 -1
  56. package/dist/kernel/grant-env.d.ts +2 -0
  57. package/dist/kernel/grant-env.d.ts.map +1 -1
  58. package/dist/kernel/grant-env.js +1 -0
  59. package/dist/kernel/grant-env.js.map +1 -1
  60. package/dist/kernel/propagation.d.ts +2 -2
  61. package/dist/kernel/propagation.d.ts.map +1 -1
  62. package/dist/kernel/propagation.js +7 -2
  63. package/dist/kernel/propagation.js.map +1 -1
  64. package/dist/products/dashboard-cli.d.ts +4 -0
  65. package/dist/products/dashboard-cli.d.ts.map +1 -1
  66. package/dist/products/dashboard-cli.js +32 -4
  67. package/dist/products/dashboard-cli.js.map +1 -1
  68. package/dist/products/dashboard-handshake.d.ts +8 -0
  69. package/dist/products/dashboard-handshake.d.ts.map +1 -1
  70. package/dist/products/dashboard-handshake.js +3 -0
  71. package/dist/products/dashboard-handshake.js.map +1 -1
  72. package/dist/products/dashboard-herdr.d.ts +4 -0
  73. package/dist/products/dashboard-herdr.d.ts.map +1 -1
  74. package/dist/products/dashboard-herdr.js +10 -2
  75. package/dist/products/dashboard-herdr.js.map +1 -1
  76. package/dist/products/dashboard-projection.d.ts.map +1 -1
  77. package/dist/products/dashboard-projection.js +13 -6
  78. package/dist/products/dashboard-projection.js.map +1 -1
  79. package/dist/products/dashboard-render.d.ts +10 -0
  80. package/dist/products/dashboard-render.d.ts.map +1 -1
  81. package/dist/products/dashboard-render.js +9 -0
  82. package/dist/products/dashboard-render.js.map +1 -1
  83. package/dist/products/dashboard-session-client.d.ts +17 -0
  84. package/dist/products/dashboard-session-client.d.ts.map +1 -0
  85. package/dist/products/dashboard-session-client.js +28 -0
  86. package/dist/products/dashboard-session-client.js.map +1 -0
  87. package/dist/products/episode-outcomes.d.ts +32 -0
  88. package/dist/products/episode-outcomes.d.ts.map +1 -0
  89. package/dist/products/episode-outcomes.js +280 -0
  90. package/dist/products/episode-outcomes.js.map +1 -0
  91. package/dist/products/episode-report.d.ts +59 -0
  92. package/dist/products/episode-report.d.ts.map +1 -0
  93. package/dist/products/episode-report.js +311 -0
  94. package/dist/products/episode-report.js.map +1 -0
  95. package/extensions/chain-ledger.ts +2 -0
  96. package/extensions/chain-plan.ts +4 -2
  97. package/extensions/dashboard-session-server.ts +86 -0
  98. package/extensions/definition-runtime.ts +93 -0
  99. package/extensions/delegate-chain.ts +31 -2
  100. package/extensions/delegation-ledger.ts +2 -0
  101. package/extensions/delegation.ts +24 -0
  102. package/extensions/effort-advice.ts +12 -0
  103. package/extensions/execute-child.ts +148 -9
  104. package/extensions/grants-command.ts +32 -2
  105. package/extensions/grants.ts +23 -1
  106. package/extensions/pruning-advice.ts +3 -1
  107. package/extensions/run-delegation.ts +54 -6
  108. package/extensions/session-model-prompt.ts +179 -0
  109. package/extensions/session.ts +104 -3
  110. package/package.json +1 -1
  111. package/src/advisors/advisor.ts +45 -2
  112. package/src/advisors/decider.ts +8 -0
  113. package/src/advisors/jev.ts +34 -1
  114. package/src/cli.ts +90 -2
  115. package/src/executors/activity-session.ts +56 -2
  116. package/src/governance/episode-cost-gate.ts +128 -0
  117. package/src/governance/ledger-events.ts +173 -1
  118. package/src/governance/ledger-v3-validation.ts +146 -0
  119. package/src/governance/ledger.ts +29 -1
  120. package/src/kernel/definitions.ts +32 -1
  121. package/src/kernel/delegate-types.ts +4 -0
  122. package/src/kernel/delegate.ts +22 -5
  123. package/src/kernel/env-names.ts +10 -0
  124. package/src/kernel/grant-env.ts +3 -0
  125. package/src/kernel/propagation.ts +7 -0
  126. package/src/products/dashboard-cli.ts +32 -4
  127. package/src/products/dashboard-handshake.ts +5 -0
  128. package/src/products/dashboard-herdr.ts +15 -1
  129. package/src/products/dashboard-projection.ts +13 -6
  130. package/src/products/dashboard-render.ts +11 -0
  131. package/src/products/dashboard-session-client.ts +35 -0
  132. package/src/products/episode-outcomes.ts +317 -0
  133. package/src/products/episode-report.ts +372 -0
package/CHANGELOG.md CHANGED
@@ -12,6 +12,37 @@ the record of how the package got here and are worth keeping; they are not worth
12
12
  > the record of how the package arrived at what it does, and because the reasoning behind each one is
13
13
  > usually the clearest statement of why the current behaviour is what it is.
14
14
 
15
+ ## 0.43.0 — episode outcome labeling (2026-09-29)
16
+
17
+ - PR #85 adds `pi-daddy outcomes`, which reads Git history for `Pi-Episode` trailers and appends `episode_outcome`
18
+ ledger records covering survival on the default branch, reverts by name or inverse diff, CI state via `gh`,
19
+ amendments, and operator corrections.
20
+ - `pi-daddy report` now fills its outcome column from those records.
21
+ - Ledger readers now validate every known record kind before skipping kinds they do not render, and skip unknown
22
+ future kinds instead of throwing. No default changed.
23
+
24
+ ## 0.42.0 — model-attributed usage records (2026-09-29)
25
+
26
+ - The first delegation now prompts once to keep or change child model and thinking defaults for the session;
27
+ `sessionModelPrompt: never` skips the prompt.
28
+ - The dashboard now shows the `/grants models` table and read-only episode cost/ceiling; model and thinking edits use
29
+ the owning session's in-memory override path and produce the same `session_config` ledger event.
30
+ - Definitions and global defaults in `.pi/pi-daddy/settings.json` may select child model and thinking, with explicit,
31
+ session, definition, global, and pi fallback provenance recorded and shown by `/grants` and `pi-daddy report`.
32
+ - Episodes now warn at half of their provider-reported USD cost ceiling and gate at the ceiling (default `$5`,
33
+ configurable as `episodeCostCeiling`); direct children pause for one operator decision, while Herdr stops.
34
+ - `pi-daddy report` now joins the project grant and activity ledgers into episode-level Markdown or JSON, with
35
+ date/definition/model filters, grouped usage, range totals, and `Pi-Episode` commit attribution.
36
+ - Capability and lifecycle records now stamp the complete definition `SKILL.md` hash and, when exposed by an
37
+ installed package, its version, so measurements identify the definition version they ran under.
38
+ - Governed children now receive `PI_DADDY_EPISODE`, `PI_DADDY_DEFINITION`, and `PI_DADDY_EXECUTION`; lifecycle
39
+ records name the exported variables so work produced outside pi-daddy can be joined back to its execution.
40
+ - Child lifecycle records now include the resolved provider/model, effective thinking level and its source, nullable
41
+ provider-reported token dimensions, and the current turn's compaction count when the session file is readable.
42
+ - Advice records now include the resolved advisor provider/model and nullable token dimensions reported by the
43
+ Decisions endpoint. The endpoint does not expose an effective thinking level, so that field is recorded as null.
44
+ - The ledger-record v1 governance schema accepts the new lifecycle fields additively; retained records remain valid.
45
+
15
46
  ## 0.41.1 — context handoff bounds in delegate schemas
16
47
 
17
48
  - The `delegate`, `delegate_all`, and `delegate_chain` schemas now tell models that context handoffs accept at most
@@ -94,5 +94,7 @@
94
94
  "name": "build",
95
95
  "source": "/operator/skills/build/SKILL.md",
96
96
  "sha256": "8888888888888888888888888888888888888888888888888888888888888888"
97
- }
97
+ },
98
+ "definitionHash": "7777777777777777777777777777777777777777777777777777777777777777",
99
+ "definitionPackageVersion": "2.3.1"
98
100
  }
@@ -14,6 +14,23 @@
14
14
  "signal": null,
15
15
  "aborted": true,
16
16
  "reason": "child did not start",
17
+ "resolvedModel": {
18
+ "provider": "openai-codex",
19
+ "modelId": "gpt-5.3-codex"
20
+ },
21
+ "modelSource": "definition",
22
+ "thinkingLevel": {
23
+ "level": "high",
24
+ "source": "advisor"
25
+ },
26
+ "thinkingSource": "advisor",
27
+ "tokenDetail": {
28
+ "inputTokens": 120,
29
+ "outputTokens": 30,
30
+ "cacheReadTokens": 20,
31
+ "cacheWriteTokens": 10,
32
+ "reasoningTokens": 5
33
+ },
17
34
  "usage": {
18
35
  "input": 120,
19
36
  "output": 30,
@@ -29,6 +46,14 @@
29
46
  "total": 0.2
30
47
  }
31
48
  },
49
+ "compactionCount": 1,
50
+ "exportedEnvironment": [
51
+ "PI_DADDY_EPISODE",
52
+ "PI_DADDY_DEFINITION",
53
+ "PI_DADDY_EXECUTION"
54
+ ],
55
+ "definitionHash": "7777777777777777777777777777777777777777777777777777777777777777",
56
+ "definitionPackageVersion": "2.3.1",
32
57
  "correlation": {
33
58
  "schema_version": "1.0",
34
59
  "run_id": "run-contract-001",
@@ -0,0 +1,14 @@
1
+ {
2
+ "ledgerVersion": 3,
3
+ "event": "cost_gate",
4
+ "ts": "2026-08-20T12:00:02.500Z",
5
+ "episodeId": "episode:00000000-0000-4000-8000-000000000099",
6
+ "executionId": "exec:00000000-0000-4000-8000-000000000001",
7
+ "parentExecutionId": null,
8
+ "childId": "d0.1",
9
+ "gate": "episode_cost",
10
+ "cost": 5.2,
11
+ "ceiling": 5,
12
+ "outcome": "continued",
13
+ "newCeiling": 10
14
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "ledgerVersion": 3,
3
+ "event": "episode_outcome",
4
+ "ts": "2026-08-20T12:00:02.750Z",
5
+ "episodeId": "episode:00000000-0000-4000-8000-000000000099",
6
+ "commit": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
7
+ "survived": true,
8
+ "ci": "green",
9
+ "amended": false,
10
+ "corrected": false,
11
+ "label": "positive"
12
+ }
@@ -1,3 +1,6 @@
1
- {"v":1,"seq":1,"prev":null,"at":"2026-09-21T00:00:00.000Z","kind":"capability","id":"fixture-capability-decision","body":{"ledgerVersion":3,"event":"capability_decision","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"ts":"2026-08-20T12:00:01.000Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","parentId":"d0","childId":"d0.1","depth":1,"agentType":"build","executor":"process","taskFrom":"d0.0","taskFromExecutionId":"exec:00000000-0000-4000-8000-000000000000","taskDigest":"9999999999999999999999999999999999999999999999999999999999999999","correlation":{"schema_version":"1.0","run_id":"run-contract-001","task_id":"task-contract-001","workspace_id":"workspace-contract","context_id":"context-contract","phase":"verify","assurance":"critical","assurance_effective":"critical","policy_label":"policy-contract","assurance_source":"policy","assurance_scope":{"type":"selectors","selectors":["src/**"]},"activated_at":"2026-08-20T12:00:00.000Z","plan_digest":"1111111111111111111111111111111111111111111111111111111111111111","definition_digest":"2222222222222222222222222222222222222222222222222222222222222222","task_digest":"3333333333333333333333333333333333333333333333333333333333333333","base_sha":"4444444444444444444444444444444444444444","head_sha":"5555555555555555555555555555555555555555","tree_sha":"6666666666666666666666666666666666666666","event_seq":21,"last_change_seq":18,"last_authority_seq":20,"check_receipt_id":"7777777777777777777777777777777777777777777777777777777777777777"},"refusal":{"code":"WORKSPACE_WRITE_CONFLICT","message":"workspace-contract already has a governed writer","details":{"workspace_id":"workspace-contract","retryable":true,"holder_depth":1}},"requested":["tool:bash","tool:read"],"parentGrant":["agent:build","tool:bash","tool:read"],"effective":["tool:bash","tool:read"],"denied":[],"clipped":[],"gatedBlocked":[],"blocked":true,"reason":"workspace-contract already has a governed writer","approved":["tool:bash","tool:read"],"approvalSources":{"tool:bash":"persisted","tool:read":"prompt"},"approvalScopes":{"tool:bash":"always","tool:read":"once"},"approvalExpiresAt":{"tool:bash":"2026-09-19T12:00:00.000Z"},"approvalUses":{"tool:read":{"max":1,"remaining":0}},"definitionDigest":{"name":"build","source":"/operator/skills/build/SKILL.md","sha256":"8888888888888888888888888888888888888888888888888888888888888888"}},"digest":"969b6d0deed5685eb1c7c8841ac11340345ef5cac842b08b9b9529c42f7ea9fe"}
2
- {"v":1,"seq":2,"prev":"85a7be60d4eacf737d7b6df196f3940c0e273dacecd69a653f521c9da4de2d7a","at":"2026-09-21T00:00:00.000Z","kind":"lease","id":"fixture-workspace-lease","body":{"ledgerVersion":3,"event":"workspace_lease","ts":"2026-08-20T12:00:02.000Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"childId":"d0.1","workspaceId":"workspace-contract","root":"/worktrees/contract","access":"write","outcome":"acquired","recovered":"unknown","correlation":{"schema_version":"1.0","run_id":"run-contract-001","task_id":"task-contract-001","workspace_id":"workspace-contract","context_id":"context-contract","phase":"verify","assurance":"critical","assurance_effective":"critical","policy_label":"policy-contract","assurance_source":"policy","assurance_scope":{"type":"selectors","selectors":["src/**"]},"activated_at":"2026-08-20T12:00:00.000Z","plan_digest":"1111111111111111111111111111111111111111111111111111111111111111","definition_digest":"2222222222222222222222222222222222222222222222222222222222222222","task_digest":"3333333333333333333333333333333333333333333333333333333333333333","base_sha":"4444444444444444444444444444444444444444","head_sha":"5555555555555555555555555555555555555555","tree_sha":"6666666666666666666666666666666666666666","event_seq":21,"last_change_seq":18,"last_authority_seq":20,"check_receipt_id":"7777777777777777777777777777777777777777777777777777777777777777"}},"digest":"d1c9f4a6c66858513564d00a77cff75d684f71624da63637ba2b53ba414fc476"}
3
- {"v":1,"seq":3,"prev":"998a929cc0d910e5b6246802deccf990d7fd7db50a4094428b46e64997554ebf","at":"2026-09-21T00:00:00.000Z","kind":"lifecycle","id":"fixture-child-lifecycle","body":{"ledgerVersion":3,"event":"child_lifecycle","ts":"2026-08-20T12:00:03.000Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"childId":"d0.1","state":"failed","executor":"process","deadlineAt":"2026-08-20T12:10:00.000Z","idleTimeoutMs":900000,"exitCode":null,"signal":null,"aborted":true,"reason":"child did not start","usage":{"input":120,"output":30,"cacheRead":20,"cacheWrite":10,"reasoning":5,"totalTokens":185,"cost":{"input":0.12,"output":0.06,"cacheRead":0.01,"cacheWrite":0.01,"total":0.2}},"correlation":{"schema_version":"1.0","run_id":"run-contract-001","task_id":"task-contract-001","workspace_id":"workspace-contract","context_id":"context-contract","phase":"verify","assurance":"critical","assurance_effective":"critical","policy_label":"policy-contract","assurance_source":"policy","assurance_scope":{"type":"selectors","selectors":["src/**"]},"activated_at":"2026-08-20T12:00:00.000Z","plan_digest":"1111111111111111111111111111111111111111111111111111111111111111","definition_digest":"2222222222222222222222222222222222222222222222222222222222222222","task_digest":"3333333333333333333333333333333333333333333333333333333333333333","base_sha":"4444444444444444444444444444444444444444","head_sha":"5555555555555555555555555555555555555555","tree_sha":"6666666666666666666666666666666666666666","event_seq":21,"last_change_seq":18,"last_authority_seq":20,"check_receipt_id":"7777777777777777777777777777777777777777777777777777777777777777"}},"digest":"05817b67c4549fefaa753a03a80b67e55ebbc276e5cc9985216d8aa42552c579"}
1
+ {"v":1,"seq":1,"prev":null,"at":"2026-09-21T00:00:00.000Z","kind":"capability","id":"fixture-capability-decision","body":{"ledgerVersion":3,"event":"capability_decision","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"ts":"2026-08-20T12:00:01.000Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","parentId":"d0","childId":"d0.1","depth":1,"agentType":"build","executor":"process","taskFrom":"d0.0","taskFromExecutionId":"exec:00000000-0000-4000-8000-000000000000","taskDigest":"9999999999999999999999999999999999999999999999999999999999999999","correlation":{"schema_version":"1.0","run_id":"run-contract-001","task_id":"task-contract-001","workspace_id":"workspace-contract","context_id":"context-contract","phase":"verify","assurance":"critical","assurance_effective":"critical","policy_label":"policy-contract","assurance_source":"policy","assurance_scope":{"type":"selectors","selectors":["src/**"]},"activated_at":"2026-08-20T12:00:00.000Z","plan_digest":"1111111111111111111111111111111111111111111111111111111111111111","definition_digest":"2222222222222222222222222222222222222222222222222222222222222222","task_digest":"3333333333333333333333333333333333333333333333333333333333333333","base_sha":"4444444444444444444444444444444444444444","head_sha":"5555555555555555555555555555555555555555","tree_sha":"6666666666666666666666666666666666666666","event_seq":21,"last_change_seq":18,"last_authority_seq":20,"check_receipt_id":"7777777777777777777777777777777777777777777777777777777777777777"},"refusal":{"code":"WORKSPACE_WRITE_CONFLICT","message":"workspace-contract already has a governed writer","details":{"workspace_id":"workspace-contract","retryable":true,"holder_depth":1}},"requested":["tool:bash","tool:read"],"parentGrant":["agent:build","tool:bash","tool:read"],"effective":["tool:bash","tool:read"],"denied":[],"clipped":[],"gatedBlocked":[],"blocked":true,"reason":"workspace-contract already has a governed writer","approved":["tool:bash","tool:read"],"approvalSources":{"tool:bash":"persisted","tool:read":"prompt"},"approvalScopes":{"tool:bash":"always","tool:read":"once"},"approvalExpiresAt":{"tool:bash":"2026-09-19T12:00:00.000Z"},"approvalUses":{"tool:read":{"max":1,"remaining":0}},"definitionDigest":{"name":"build","source":"/operator/skills/build/SKILL.md","sha256":"8888888888888888888888888888888888888888888888888888888888888888"},"definitionHash":"7777777777777777777777777777777777777777777777777777777777777777","definitionPackageVersion":"2.3.1"},"digest":"4a36018bd75320d5f278ac3f31ebd676a0a24e40a779821ac1fcd67b520f8d9c"}
2
+ {"v":1,"seq":2,"prev":"02bdcfc121a09e09df55d592196009d85c4857cdafc6d10ffae52df9ef790cf9","at":"2026-09-21T00:00:00.000Z","kind":"lease","id":"fixture-workspace-lease","body":{"ledgerVersion":3,"event":"workspace_lease","ts":"2026-08-20T12:00:02.000Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"childId":"d0.1","workspaceId":"workspace-contract","root":"/worktrees/contract","access":"write","outcome":"acquired","recovered":"unknown","correlation":{"schema_version":"1.0","run_id":"run-contract-001","task_id":"task-contract-001","workspace_id":"workspace-contract","context_id":"context-contract","phase":"verify","assurance":"critical","assurance_effective":"critical","policy_label":"policy-contract","assurance_source":"policy","assurance_scope":{"type":"selectors","selectors":["src/**"]},"activated_at":"2026-08-20T12:00:00.000Z","plan_digest":"1111111111111111111111111111111111111111111111111111111111111111","definition_digest":"2222222222222222222222222222222222222222222222222222222222222222","task_digest":"3333333333333333333333333333333333333333333333333333333333333333","base_sha":"4444444444444444444444444444444444444444","head_sha":"5555555555555555555555555555555555555555","tree_sha":"6666666666666666666666666666666666666666","event_seq":21,"last_change_seq":18,"last_authority_seq":20,"check_receipt_id":"7777777777777777777777777777777777777777777777777777777777777777"}},"digest":"846254fb313861742c04f576f6afca484f1e9954461bd55a28d2e46c10c3143a"}
3
+ {"v":1,"seq":3,"prev":"5171a9ea3de47b21d07d72606d69f1529d9b26ded8d0a9e66f249ba0782a6bf4","at":"2026-09-21T00:00:00.000Z","kind":"fact","id":"fixture-episode-cost-gate","body":{"ledgerVersion":3,"event":"cost_gate","ts":"2026-08-20T12:00:02.500Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"childId":"d0.1","gate":"episode_cost","cost":5.2,"ceiling":5,"outcome":"continued","newCeiling":10},"digest":"144512eeb39ca539e5f27a7113afa5139b1ce507028d81c9fbae45b092149e13"}
4
+ {"v":1,"seq":4,"prev":"b2968d627c54e65c0e98a297c521ad6229367c75df4c68db2a18586eb4729a24","at":"2026-09-21T00:00:00.000Z","kind":"fact","id":"fixture-session-config","body":{"ledgerVersion":3,"event":"session_config","ts":"2026-08-20T12:00:02.750Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","outcome":"changed","trigger":"first-delegation","overrides":{"review":{"model":"anthropic/claude-opus-4-6","thinking":"high"}}},"digest":"a363414f30242ae9a74db705691f5f8768070169e2676d1d7a3143adc6e46800"}
5
+ {"v":1,"seq":5,"prev":"0e3fd664c2dca1fc47d2009379607904458aa3a93dfe6e13a3ea485489398a4d","at":"2026-09-21T00:00:00.000Z","kind":"fact","id":"fixture-episode-outcome","body":{"ledgerVersion":3,"event":"episode_outcome","ts":"2026-08-20T12:00:02.750Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","commit":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","survived":true,"ci":"green","amended":false,"corrected":false,"label":"positive"},"digest":"7617dfb4e545c6a0d54c2daf0d7598a2e191e333d67bb79189c618ea30752772"}
6
+ {"v":1,"seq":6,"prev":"e537315b2ab8675356be15e9b77ce51caceac65e7abc965d2ff3253e1e90bf0e","at":"2026-09-21T00:00:00.000Z","kind":"lifecycle","id":"fixture-child-lifecycle","body":{"ledgerVersion":3,"event":"child_lifecycle","ts":"2026-08-20T12:00:03.000Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"childId":"d0.1","state":"failed","executor":"process","deadlineAt":"2026-08-20T12:10:00.000Z","idleTimeoutMs":900000,"exitCode":null,"signal":null,"aborted":true,"reason":"child did not start","resolvedModel":{"provider":"openai-codex","modelId":"gpt-5.3-codex"},"modelSource":"definition","thinkingLevel":{"level":"high","source":"advisor"},"thinkingSource":"advisor","tokenDetail":{"inputTokens":120,"outputTokens":30,"cacheReadTokens":20,"cacheWriteTokens":10,"reasoningTokens":5},"usage":{"input":120,"output":30,"cacheRead":20,"cacheWrite":10,"reasoning":5,"totalTokens":185,"cost":{"input":0.12,"output":0.06,"cacheRead":0.01,"cacheWrite":0.01,"total":0.2}},"compactionCount":1,"exportedEnvironment":["PI_DADDY_EPISODE","PI_DADDY_DEFINITION","PI_DADDY_EXECUTION"],"definitionHash":"7777777777777777777777777777777777777777777777777777777777777777","definitionPackageVersion":"2.3.1","correlation":{"schema_version":"1.0","run_id":"run-contract-001","task_id":"task-contract-001","workspace_id":"workspace-contract","context_id":"context-contract","phase":"verify","assurance":"critical","assurance_effective":"critical","policy_label":"policy-contract","assurance_source":"policy","assurance_scope":{"type":"selectors","selectors":["src/**"]},"activated_at":"2026-08-20T12:00:00.000Z","plan_digest":"1111111111111111111111111111111111111111111111111111111111111111","definition_digest":"2222222222222222222222222222222222222222222222222222222222222222","task_digest":"3333333333333333333333333333333333333333333333333333333333333333","base_sha":"4444444444444444444444444444444444444444","head_sha":"5555555555555555555555555555555555555555","tree_sha":"6666666666666666666666666666666666666666","event_seq":21,"last_change_seq":18,"last_authority_seq":20,"check_receipt_id":"7777777777777777777777777777777777777777777777777777777777777777"}},"digest":"c13fc25e8a93c853be54ecebcaf4e9a2d6137bd1c37cc5655d33c71da3877cad"}
@@ -0,0 +1,14 @@
1
+ {
2
+ "ledgerVersion": 3,
3
+ "event": "session_config",
4
+ "ts": "2026-08-20T12:00:02.750Z",
5
+ "episodeId": "episode:00000000-0000-4000-8000-000000000099",
6
+ "outcome": "changed",
7
+ "trigger": "first-delegation",
8
+ "overrides": {
9
+ "review": {
10
+ "model": "anthropic/claude-opus-4-6",
11
+ "thinking": "high"
12
+ }
13
+ }
14
+ }
@@ -12,6 +12,15 @@
12
12
  },
13
13
  {
14
14
  "$ref": "#/$defs/childLifecycle"
15
+ },
16
+ {
17
+ "$ref": "#/$defs/costGate"
18
+ },
19
+ {
20
+ "$ref": "#/$defs/sessionConfig"
21
+ },
22
+ {
23
+ "$ref": "#/$defs/episodeOutcome"
15
24
  }
16
25
  ],
17
26
  "$defs": {
@@ -409,6 +418,14 @@
409
418
  "definitionDigest": {
410
419
  "$ref": "#/$defs/definitionDigest"
411
420
  },
421
+ "definitionHash": {
422
+ "type": "string",
423
+ "pattern": "^[a-f0-9]{64}$"
424
+ },
425
+ "definitionPackageVersion": {
426
+ "type": "string",
427
+ "pattern": "^[0-9A-Za-z][0-9A-Za-z.+_-]{0,127}$"
428
+ },
412
429
  "handoff": {
413
430
  "type": "object",
414
431
  "description": "the context handoff this child received (ADR-0078); absent means nothing crossed",
@@ -729,9 +746,42 @@
729
746
  "minimum": 1,
730
747
  "description": "the inactivity bound in milliseconds that governed this child beside the deadlineAt ceiling"
731
748
  },
749
+ "resolvedModel": {
750
+ "oneOf": [
751
+ {
752
+ "$ref": "#/$defs/resolvedModel"
753
+ },
754
+ {
755
+ "type": "null"
756
+ }
757
+ ]
758
+ },
759
+ "modelSource": {
760
+ "$ref": "#/$defs/modelSource"
761
+ },
762
+ "thinkingLevel": {
763
+ "oneOf": [
764
+ {
765
+ "$ref": "#/$defs/thinkingLevel"
766
+ },
767
+ {
768
+ "type": "null"
769
+ }
770
+ ]
771
+ },
772
+ "thinkingSource": {
773
+ "$ref": "#/$defs/thinkingSource"
774
+ },
775
+ "tokenDetail": {
776
+ "$ref": "#/$defs/tokenDetail"
777
+ },
732
778
  "usage": {
733
779
  "$ref": "#/$defs/childUsage"
734
780
  },
781
+ "compactionCount": {
782
+ "type": "integer",
783
+ "minimum": 0
784
+ },
735
785
  "usageUnavailable": {
736
786
  "enum": [
737
787
  "session-missing",
@@ -739,6 +789,27 @@
739
789
  "usage-missing"
740
790
  ]
741
791
  },
792
+ "exportedEnvironment": {
793
+ "type": "array",
794
+ "minItems": 3,
795
+ "maxItems": 3,
796
+ "uniqueItems": true,
797
+ "items": {
798
+ "enum": [
799
+ "PI_DADDY_EPISODE",
800
+ "PI_DADDY_DEFINITION",
801
+ "PI_DADDY_EXECUTION"
802
+ ]
803
+ }
804
+ },
805
+ "definitionHash": {
806
+ "type": "string",
807
+ "pattern": "^[a-f0-9]{64}$"
808
+ },
809
+ "definitionPackageVersion": {
810
+ "type": "string",
811
+ "pattern": "^[0-9A-Za-z][0-9A-Za-z.+_-]{0,127}$"
812
+ },
742
813
  "herdrPaneId": {
743
814
  "$ref": "#/$defs/ledgerDisplayIdentifier"
744
815
  },
@@ -813,6 +884,106 @@
813
884
  }
814
885
  ]
815
886
  },
887
+ "resolvedModel": {
888
+ "type": "object",
889
+ "additionalProperties": false,
890
+ "required": [
891
+ "provider",
892
+ "modelId"
893
+ ],
894
+ "properties": {
895
+ "provider": {
896
+ "type": "string",
897
+ "minLength": 1
898
+ },
899
+ "modelId": {
900
+ "type": "string",
901
+ "minLength": 1
902
+ }
903
+ }
904
+ },
905
+ "thinkingLevel": {
906
+ "type": "object",
907
+ "additionalProperties": false,
908
+ "required": [
909
+ "level",
910
+ "source"
911
+ ],
912
+ "properties": {
913
+ "level": {
914
+ "type": "string",
915
+ "minLength": 1
916
+ },
917
+ "source": {
918
+ "enum": [
919
+ "explicit",
920
+ "session",
921
+ "advisor",
922
+ "definition",
923
+ "global",
924
+ "pi"
925
+ ]
926
+ }
927
+ }
928
+ },
929
+ "modelSource": {
930
+ "enum": [
931
+ "explicit",
932
+ "session",
933
+ "definition",
934
+ "global",
935
+ "pi"
936
+ ]
937
+ },
938
+ "thinkingSource": {
939
+ "enum": [
940
+ "explicit",
941
+ "session",
942
+ "advisor",
943
+ "definition",
944
+ "global",
945
+ "pi"
946
+ ]
947
+ },
948
+ "tokenDetail": {
949
+ "type": "object",
950
+ "additionalProperties": false,
951
+ "required": [
952
+ "inputTokens",
953
+ "outputTokens",
954
+ "cacheReadTokens",
955
+ "cacheWriteTokens",
956
+ "reasoningTokens"
957
+ ],
958
+ "properties": {
959
+ "inputTokens": {
960
+ "$ref": "#/$defs/reportedTokenCount"
961
+ },
962
+ "outputTokens": {
963
+ "$ref": "#/$defs/reportedTokenCount"
964
+ },
965
+ "cacheReadTokens": {
966
+ "$ref": "#/$defs/reportedTokenCount"
967
+ },
968
+ "cacheWriteTokens": {
969
+ "$ref": "#/$defs/reportedTokenCount"
970
+ },
971
+ "reasoningTokens": {
972
+ "$ref": "#/$defs/reportedTokenCount"
973
+ }
974
+ }
975
+ },
976
+ "reportedTokenCount": {
977
+ "oneOf": [
978
+ {
979
+ "type": "number",
980
+ "exclusiveMinimum": 0
981
+ },
982
+ {
983
+ "type": "null"
984
+ }
985
+ ]
986
+ },
816
987
  "childUsage": {
817
988
  "type": "object",
818
989
  "additionalProperties": false,
@@ -887,6 +1058,191 @@
887
1058
  "executionId": {
888
1059
  "type": "string",
889
1060
  "pattern": "^exec:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
1061
+ },
1062
+ "costGate": {
1063
+ "type": "object",
1064
+ "properties": {
1065
+ "ledgerVersion": {
1066
+ "const": 3
1067
+ },
1068
+ "event": {
1069
+ "const": "cost_gate"
1070
+ },
1071
+ "ts": {
1072
+ "$ref": "#/$defs/timestamp"
1073
+ },
1074
+ "episodeId": {
1075
+ "$ref": "#/$defs/episodeId"
1076
+ },
1077
+ "executionId": {
1078
+ "$ref": "#/$defs/executionId"
1079
+ },
1080
+ "parentExecutionId": {
1081
+ "oneOf": [
1082
+ {
1083
+ "$ref": "#/$defs/executionId"
1084
+ },
1085
+ {
1086
+ "type": "null"
1087
+ }
1088
+ ]
1089
+ },
1090
+ "childId": {
1091
+ "$ref": "#/$defs/ledgerDisplayIdentifier"
1092
+ },
1093
+ "gate": {
1094
+ "const": "episode_cost"
1095
+ },
1096
+ "cost": {
1097
+ "type": "number",
1098
+ "minimum": 0
1099
+ },
1100
+ "ceiling": {
1101
+ "type": "number",
1102
+ "exclusiveMinimum": 0
1103
+ },
1104
+ "outcome": {
1105
+ "enum": [
1106
+ "continued",
1107
+ "stopped"
1108
+ ]
1109
+ },
1110
+ "newCeiling": {
1111
+ "type": "number",
1112
+ "exclusiveMinimum": 0
1113
+ }
1114
+ },
1115
+ "required": [
1116
+ "ledgerVersion",
1117
+ "event",
1118
+ "ts",
1119
+ "episodeId",
1120
+ "executionId",
1121
+ "parentExecutionId",
1122
+ "childId",
1123
+ "gate",
1124
+ "cost",
1125
+ "ceiling",
1126
+ "outcome"
1127
+ ],
1128
+ "additionalProperties": false
1129
+ },
1130
+ "sessionConfig": {
1131
+ "type": "object",
1132
+ "properties": {
1133
+ "ledgerVersion": {
1134
+ "const": 3
1135
+ },
1136
+ "event": {
1137
+ "const": "session_config"
1138
+ },
1139
+ "ts": {
1140
+ "$ref": "#/$defs/timestamp"
1141
+ },
1142
+ "episodeId": {
1143
+ "$ref": "#/$defs/episodeId"
1144
+ },
1145
+ "outcome": {
1146
+ "enum": [
1147
+ "kept",
1148
+ "changed"
1149
+ ]
1150
+ },
1151
+ "trigger": {
1152
+ "enum": [
1153
+ "first-delegation",
1154
+ "grants-models"
1155
+ ]
1156
+ },
1157
+ "overrides": {
1158
+ "type": "object",
1159
+ "additionalProperties": {
1160
+ "type": "object",
1161
+ "properties": {
1162
+ "model": {
1163
+ "type": "string",
1164
+ "minLength": 1
1165
+ },
1166
+ "thinking": {
1167
+ "type": "string",
1168
+ "minLength": 1
1169
+ }
1170
+ },
1171
+ "required": [
1172
+ "model",
1173
+ "thinking"
1174
+ ],
1175
+ "additionalProperties": false
1176
+ }
1177
+ }
1178
+ },
1179
+ "required": [
1180
+ "ledgerVersion",
1181
+ "event",
1182
+ "ts",
1183
+ "episodeId",
1184
+ "outcome",
1185
+ "trigger",
1186
+ "overrides"
1187
+ ],
1188
+ "additionalProperties": false
1189
+ },
1190
+ "episodeOutcome": {
1191
+ "type": "object",
1192
+ "properties": {
1193
+ "ledgerVersion": {
1194
+ "const": 3
1195
+ },
1196
+ "event": {
1197
+ "const": "episode_outcome"
1198
+ },
1199
+ "ts": {
1200
+ "$ref": "#/$defs/timestamp"
1201
+ },
1202
+ "episodeId": {
1203
+ "$ref": "#/$defs/episodeId"
1204
+ },
1205
+ "commit": {
1206
+ "type": "string",
1207
+ "pattern": "^[0-9a-f]{40}$"
1208
+ },
1209
+ "survived": {
1210
+ "type": "boolean"
1211
+ },
1212
+ "ci": {
1213
+ "enum": [
1214
+ "green",
1215
+ "red",
1216
+ "none"
1217
+ ]
1218
+ },
1219
+ "amended": {
1220
+ "type": "boolean"
1221
+ },
1222
+ "corrected": {
1223
+ "type": "boolean"
1224
+ },
1225
+ "label": {
1226
+ "enum": [
1227
+ "positive",
1228
+ "negative",
1229
+ "unknown"
1230
+ ]
1231
+ }
1232
+ },
1233
+ "required": [
1234
+ "ledgerVersion",
1235
+ "event",
1236
+ "ts",
1237
+ "episodeId",
1238
+ "commit",
1239
+ "survived",
1240
+ "ci",
1241
+ "amended",
1242
+ "corrected",
1243
+ "label"
1244
+ ],
1245
+ "additionalProperties": false
890
1246
  }
891
1247
  }
892
1248
  }
@@ -43,6 +43,20 @@ export interface AdviceRecord {
43
43
  confidence?: number;
44
44
  }>>;
45
45
  model?: string;
46
+ resolvedModel: {
47
+ provider: string;
48
+ modelId: string;
49
+ } | null;
50
+ modelSource: "explicit" | "session" | "definition" | "global" | "pi";
51
+ thinkingLevel: string | null;
52
+ thinkingSource: "explicit" | "session" | "advisor" | "definition" | "global" | "pi";
53
+ tokenDetail: {
54
+ inputTokens: number | null;
55
+ outputTokens: number | null;
56
+ cacheReadTokens: number | null;
57
+ cacheWriteTokens: number | null;
58
+ reasoningTokens: number | null;
59
+ };
46
60
  /**
47
61
  * Why there is no advice. `declined` means the advisor answered with nothing; `error` means it could not be
48
62
  * reached or its response was unrecognised; `cancelled` means the CALLER went away, which is not the advisor's
@@ -50,9 +64,18 @@ export interface AdviceRecord {
50
64
  */
51
65
  outcome: "answered" | "disabled" | "timeout" | "error" | "declined" | "cancelled";
52
66
  }
67
+ export interface AdviceAttribution {
68
+ resolvedModel: {
69
+ provider: string;
70
+ modelId: string;
71
+ } | null;
72
+ modelSource: AdviceRecord["modelSource"];
73
+ thinkingLevel: string | null;
74
+ thinkingSource: AdviceRecord["thinkingSource"];
75
+ }
53
76
  export interface Advisor {
54
77
  task(task: string): string | TaskDigest;
55
- ask(purpose: string, request: AdviceRequest, signal?: AbortSignal, executionId?: string): Promise<Advice | null>;
78
+ ask(purpose: string, request: AdviceRequest, signal?: AbortSignal, executionId?: string, attribution?: AdviceAttribution | ((advice: Advice | null) => AdviceAttribution)): Promise<Advice | null>;
56
79
  }
57
80
  export declare function createAdvisor(input: {
58
81
  decider: Decider;
@@ -1 +1 @@
1
- {"version":3,"file":"advisor.d.ts","sourceRoot":"","sources":["../../src/advisors/advisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEnE,mHAAmH;AACnH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC1D;AAED,MAAM,WAAW,YAAY;IAC3B,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uGAAuG;IACvG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qGAAqG;IACrG,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;CACnF;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACxC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAClH;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,mGAAmG;IACnG,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,GAAG,OAAO,CA8EV"}
1
+ {"version":3,"file":"advisor.d.ts","sourceRoot":"","sources":["../../src/advisors/advisor.ts"],"names":[],"mappings":"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"}