pi-daddy 0.40.0 → 0.41.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 (87) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/contracts/ledger-record/v1/fixtures/capability-decision.json +1 -0
  3. package/contracts/ledger-record/v1/fixtures/child-lifecycle.json +16 -0
  4. package/contracts/ledger-record/v1/fixtures/ledger-record.jsonl +3 -3
  5. package/contracts/ledger-record/v1/fixtures/workspace-lease.json +1 -0
  6. package/contracts/ledger-record/v1/governance-event.schema.json +100 -0
  7. package/dist/advisors/advisor.d.ts +19 -1
  8. package/dist/advisors/advisor.d.ts.map +1 -1
  9. package/dist/advisors/advisor.js +62 -2
  10. package/dist/advisors/advisor.js.map +1 -1
  11. package/dist/advisors/decider.d.ts +2 -4
  12. package/dist/advisors/decider.d.ts.map +1 -1
  13. package/dist/advisors/decider.js.map +1 -1
  14. package/dist/advisors/settings.d.ts +3 -1
  15. package/dist/advisors/settings.d.ts.map +1 -1
  16. package/dist/advisors/settings.js +4 -3
  17. package/dist/advisors/settings.js.map +1 -1
  18. package/dist/executors/activity-session.d.ts +7 -0
  19. package/dist/executors/activity-session.d.ts.map +1 -1
  20. package/dist/executors/activity-session.js +101 -3
  21. package/dist/executors/activity-session.js.map +1 -1
  22. package/dist/governance/ledger-events.d.ts +23 -0
  23. package/dist/governance/ledger-events.d.ts.map +1 -1
  24. package/dist/governance/ledger-events.js +7 -0
  25. package/dist/governance/ledger-events.js.map +1 -1
  26. package/dist/governance/ledger-v3-validation.d.ts.map +1 -1
  27. package/dist/governance/ledger-v3-validation.js +29 -0
  28. package/dist/governance/ledger-v3-validation.js.map +1 -1
  29. package/dist/governance/ledger.d.ts +5 -1
  30. package/dist/governance/ledger.d.ts.map +1 -1
  31. package/dist/governance/ledger.js +4 -0
  32. package/dist/governance/ledger.js.map +1 -1
  33. package/dist/kernel/delegate-types.d.ts +2 -0
  34. package/dist/kernel/delegate-types.d.ts.map +1 -1
  35. package/dist/kernel/delegate-types.js.map +1 -1
  36. package/dist/kernel/delegate.d.ts.map +1 -1
  37. package/dist/kernel/delegate.js +3 -1
  38. package/dist/kernel/delegate.js.map +1 -1
  39. package/dist/kernel/env-names.d.ts +3 -0
  40. package/dist/kernel/env-names.d.ts.map +1 -1
  41. package/dist/kernel/env-names.js +5 -0
  42. package/dist/kernel/env-names.js.map +1 -1
  43. package/dist/kernel/episode-id.d.ts +6 -0
  44. package/dist/kernel/episode-id.d.ts.map +1 -0
  45. package/dist/kernel/episode-id.js +13 -0
  46. package/dist/kernel/episode-id.js.map +1 -0
  47. package/dist/kernel/ledger-identifiers.d.ts.map +1 -1
  48. package/dist/kernel/ledger-identifiers.js +20 -1
  49. package/dist/kernel/ledger-identifiers.js.map +1 -1
  50. package/dist/kernel/propagation.d.ts +4 -2
  51. package/dist/kernel/propagation.d.ts.map +1 -1
  52. package/dist/kernel/propagation.js +6 -2
  53. package/dist/kernel/propagation.js.map +1 -1
  54. package/dist/products/activity-timeline.d.ts +3 -0
  55. package/dist/products/activity-timeline.d.ts.map +1 -1
  56. package/dist/products/activity-timeline.js +6 -0
  57. package/dist/products/activity-timeline.js.map +1 -1
  58. package/extensions/activity-timeline.ts +11 -5
  59. package/extensions/advisor-session.ts +3 -0
  60. package/extensions/chain-ledger.ts +1 -0
  61. package/extensions/delegation-ledger.ts +1 -0
  62. package/extensions/effort-advice.ts +6 -5
  63. package/extensions/execute-child.ts +16 -0
  64. package/extensions/grant-store-refusal.ts +1 -0
  65. package/extensions/grants-command.ts +4 -4
  66. package/extensions/grants.ts +4 -1
  67. package/extensions/pruning-advice.ts +37 -6
  68. package/extensions/reload-environment.ts +1 -0
  69. package/extensions/run-delegation.ts +10 -1
  70. package/extensions/session-environment.ts +9 -0
  71. package/extensions/session.ts +27 -4
  72. package/extensions/workspace-runtime.ts +5 -0
  73. package/package.json +1 -1
  74. package/src/advisors/advisor.ts +83 -3
  75. package/src/advisors/decider.ts +2 -4
  76. package/src/advisors/settings.ts +6 -4
  77. package/src/executors/activity-session.ts +105 -3
  78. package/src/governance/ledger-events.ts +35 -1
  79. package/src/governance/ledger-v3-validation.ts +44 -0
  80. package/src/governance/ledger.ts +8 -0
  81. package/src/kernel/delegate-types.ts +2 -0
  82. package/src/kernel/delegate.ts +2 -0
  83. package/src/kernel/env-names.ts +5 -0
  84. package/src/kernel/episode-id.ts +18 -0
  85. package/src/kernel/ledger-identifiers.ts +21 -1
  86. package/src/kernel/propagation.ts +8 -0
  87. package/src/products/activity-timeline.ts +8 -0
package/CHANGELOG.md CHANGED
@@ -12,6 +12,42 @@ 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.41.0 — episode identity, child usage, and explicit advisor task egress
16
+
17
+ - Enabling and keying an advisor now sends only a structural task digest by default. Raw task text additionally
18
+ requires `PI_DADDY_ADVISOR_TASK_EGRESS=raw`; each advice record names the mode, and raw mode warns once per process.
19
+ - Every new governance ledger event and activity-timeline event carries one stable `episodeId` minted by the root
20
+ session and propagated to descendants. The field is additive: retained records without it remain valid.
21
+ - Terminal child lifecycle records include aggregate token and cost usage read from the child's pi session file
22
+ before temporary session cleanup. Transcript content is not copied into the ledger.
23
+ - Advice records carry the governed child's `executionId`, so chosen effort and pruning advice join to the child
24
+ they affected. Advisor input state remains excluded from the ledger.
25
+
26
+ ## 0.40.1 — a `context:` capability could not be written to the ledger, so delegation was denied
27
+
28
+ **A session whose grant held any `context:` id could not delegate at all.** Reported from a live session:
29
+
30
+ ```
31
+ delegation refused: grants: ledger write failed, denying — TypeError: invalid ledger v3 event:
32
+ capability decision requested must contain capability identifiers
33
+ ```
34
+
35
+ `ledger-identifiers.ts` kept its OWN copy of the capability namespaces, and ADR-0078 added `context:` to the
36
+ kernel's list without it. Every capability-decision event validates six capability arrays with that predicate,
37
+ and a ledger write that throws denies the delegation — so the whole namespace took delegation down wherever it
38
+ appeared, and the message named neither the namespace nor the list.
39
+
40
+ 0.40.0 widened it rather than causing it: held-back definitions began contributing `context:` ids to the
41
+ generated grant, so far more sessions carry one. Anyone whose skills declare a handoff mode was affected from
42
+ 0.33.0 onward.
43
+
44
+ **The ledger now derives its namespaces from the kernel's list** instead of restating them, and a test asserts
45
+ every namespace the kernel defines is a valid ledger identifier. Adding a namespace without the ledger following
46
+ now fails.
47
+
48
+ This is the same shape this package has spent a session finding: one rule, two spellings, the guard on the
49
+ quieter one. A validator that restates what it validates is that shape with a ledger behind it.
50
+
15
51
  ## 0.40.0 — the file-writing tools are gated, and a held-back definition keeps its context modes
16
52
 
17
53
  **`tool:write`, `tool:edit` and `tool:edit-diff` join `tool:bash` and `context:fork` in `DEFAULT_GATED`**, by
@@ -4,6 +4,7 @@
4
4
  "executionId": "exec:00000000-0000-4000-8000-000000000001",
5
5
  "parentExecutionId": null,
6
6
  "ts": "2026-08-20T12:00:01.000Z",
7
+ "episodeId": "episode:00000000-0000-4000-8000-000000000099",
7
8
  "parentId": "d0",
8
9
  "childId": "d0.1",
9
10
  "depth": 1,
@@ -2,6 +2,7 @@
2
2
  "ledgerVersion": 3,
3
3
  "event": "child_lifecycle",
4
4
  "ts": "2026-08-20T12:00:03.000Z",
5
+ "episodeId": "episode:00000000-0000-4000-8000-000000000099",
5
6
  "executionId": "exec:00000000-0000-4000-8000-000000000001",
6
7
  "parentExecutionId": null,
7
8
  "childId": "d0.1",
@@ -13,6 +14,21 @@
13
14
  "signal": null,
14
15
  "aborted": true,
15
16
  "reason": "child did not start",
17
+ "usage": {
18
+ "input": 120,
19
+ "output": 30,
20
+ "cacheRead": 20,
21
+ "cacheWrite": 10,
22
+ "reasoning": 5,
23
+ "totalTokens": 185,
24
+ "cost": {
25
+ "input": 0.12,
26
+ "output": 0.06,
27
+ "cacheRead": 0.01,
28
+ "cacheWrite": 0.01,
29
+ "total": 0.2
30
+ }
31
+ },
16
32
  "correlation": {
17
33
  "schema_version": "1.0",
18
34
  "run_id": "run-contract-001",
@@ -1,3 +1,3 @@
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","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":"c87034a8583f4ab432220c768b75daab94f431cac2508f08554fa29601725bc9"}
2
- {"v":1,"seq":2,"prev":"918860db041d9b9512feaaed46f524c5796a5f6e7d3e2e644104234d95c3866a","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","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":"20cb8e08960c3db30e84092ad779c128e23fab20b998777ab05452293a434559"}
3
- {"v":1,"seq":3,"prev":"0290f57cb6d86a2163ecdcaba04f291afc20600958dd93412e838d2b19876079","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","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","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":"0d10a3887d052a1ec82d6e50cfb8de59971777fdfe29e5f9d0f20e1d514c3485"}
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"}
@@ -2,6 +2,7 @@
2
2
  "ledgerVersion": 3,
3
3
  "event": "workspace_lease",
4
4
  "ts": "2026-08-20T12:00:02.000Z",
5
+ "episodeId": "episode:00000000-0000-4000-8000-000000000099",
5
6
  "executionId": "exec:00000000-0000-4000-8000-000000000001",
6
7
  "parentExecutionId": null,
7
8
  "childId": "d0.1",
@@ -20,6 +20,10 @@
20
20
  "format": "date-time",
21
21
  "pattern": ":[0-5][0-9](?:\\.[0-9]+)?(?:[Zz]|[+-][0-9]{2}:[0-9]{2})$"
22
22
  },
23
+ "episodeId": {
24
+ "type": "string",
25
+ "pattern": "^episode:[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}$"
26
+ },
23
27
  "correlation": {
24
28
  "type": "object",
25
29
  "description": "Non-authoritative controller metadata under the pinned 1.0 contract. String and aggregate byte limits are additionally enforced by the runtime and cannot be represented exactly in JSON Schema.",
@@ -284,6 +288,9 @@
284
288
  "ts": {
285
289
  "$ref": "#/$defs/timestamp"
286
290
  },
291
+ "episodeId": {
292
+ "$ref": "#/$defs/episodeId"
293
+ },
287
294
  "parentId": {
288
295
  "$ref": "#/$defs/ledgerDisplayIdentifier"
289
296
  },
@@ -516,6 +523,9 @@
516
523
  "ts": {
517
524
  "$ref": "#/$defs/timestamp"
518
525
  },
526
+ "episodeId": {
527
+ "$ref": "#/$defs/episodeId"
528
+ },
519
529
  "childId": {
520
530
  "$ref": "#/$defs/ledgerDisplayIdentifier"
521
531
  },
@@ -606,6 +616,9 @@
606
616
  "ts": {
607
617
  "$ref": "#/$defs/timestamp"
608
618
  },
619
+ "episodeId": {
620
+ "$ref": "#/$defs/episodeId"
621
+ },
609
622
  "childId": {
610
623
  "$ref": "#/$defs/ledgerDisplayIdentifier"
611
624
  },
@@ -716,6 +729,16 @@
716
729
  "minimum": 1,
717
730
  "description": "the inactivity bound in milliseconds that governed this child beside the deadlineAt ceiling"
718
731
  },
732
+ "usage": {
733
+ "$ref": "#/$defs/childUsage"
734
+ },
735
+ "usageUnavailable": {
736
+ "enum": [
737
+ "session-missing",
738
+ "session-invalid",
739
+ "usage-missing"
740
+ ]
741
+ },
719
742
  "herdrPaneId": {
720
743
  "$ref": "#/$defs/ledgerDisplayIdentifier"
721
744
  },
@@ -734,6 +757,12 @@
734
757
  "executor"
735
758
  ],
736
759
  "additionalProperties": false,
760
+ "not": {
761
+ "required": [
762
+ "usage",
763
+ "usageUnavailable"
764
+ ]
765
+ },
737
766
  "allOf": [
738
767
  {
739
768
  "if": {
@@ -784,6 +813,77 @@
784
813
  }
785
814
  ]
786
815
  },
816
+ "childUsage": {
817
+ "type": "object",
818
+ "additionalProperties": false,
819
+ "required": [
820
+ "input",
821
+ "output",
822
+ "cacheRead",
823
+ "cacheWrite",
824
+ "totalTokens",
825
+ "cost"
826
+ ],
827
+ "properties": {
828
+ "input": {
829
+ "type": "number",
830
+ "minimum": 0
831
+ },
832
+ "output": {
833
+ "type": "number",
834
+ "minimum": 0
835
+ },
836
+ "cacheRead": {
837
+ "type": "number",
838
+ "minimum": 0
839
+ },
840
+ "cacheWrite": {
841
+ "type": "number",
842
+ "minimum": 0
843
+ },
844
+ "reasoning": {
845
+ "type": "number",
846
+ "minimum": 0
847
+ },
848
+ "totalTokens": {
849
+ "type": "number",
850
+ "minimum": 0
851
+ },
852
+ "cost": {
853
+ "type": "object",
854
+ "additionalProperties": false,
855
+ "required": [
856
+ "input",
857
+ "output",
858
+ "cacheRead",
859
+ "cacheWrite",
860
+ "total"
861
+ ],
862
+ "properties": {
863
+ "input": {
864
+ "type": "number",
865
+ "minimum": 0
866
+ },
867
+ "output": {
868
+ "type": "number",
869
+ "minimum": 0
870
+ },
871
+ "cacheRead": {
872
+ "type": "number",
873
+ "minimum": 0
874
+ },
875
+ "cacheWrite": {
876
+ "type": "number",
877
+ "minimum": 0
878
+ },
879
+ "total": {
880
+ "type": "number",
881
+ "minimum": 0
882
+ }
883
+ }
884
+ }
885
+ }
886
+ },
787
887
  "executionId": {
788
888
  "type": "string",
789
889
  "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}$"
@@ -14,7 +14,22 @@
14
14
  import type { Advice, AdviceRequest, Decider } from "./decider.ts";
15
15
  /** Two seconds. An advisor is on the path of a decision a human is waiting for; it is not worth more than that. */
16
16
  export declare const DEFAULT_ADVICE_TIMEOUT_MS = 2000;
17
+ export type TaskEgressMode = "digest" | "raw";
18
+ export interface TaskDigest {
19
+ length: number;
20
+ language: string;
21
+ referencedFiles: {
22
+ count: number;
23
+ extensions: string[];
24
+ };
25
+ }
17
26
  export interface AdviceRecord {
27
+ /** Stable root episode; absent on records written before episode identity shipped. */
28
+ episodeId?: string;
29
+ /** The governed child this advice applied to; absent on records written before attribution shipped. */
30
+ executionId?: string;
31
+ /** Which task representation was sent; absent on records written before the egress split shipped. */
32
+ taskEgress?: TaskEgressMode;
18
33
  /** Which decision this advice was for, from the caller's own closed list. */
19
34
  purpose: string;
20
35
  decider: string;
@@ -36,7 +51,8 @@ export interface AdviceRecord {
36
51
  outcome: "answered" | "disabled" | "timeout" | "error" | "declined" | "cancelled";
37
52
  }
38
53
  export interface Advisor {
39
- ask(purpose: string, request: AdviceRequest, signal?: AbortSignal): Promise<Advice | null>;
54
+ task(task: string): string | TaskDigest;
55
+ ask(purpose: string, request: AdviceRequest, signal?: AbortSignal, executionId?: string): Promise<Advice | null>;
40
56
  }
41
57
  export declare function createAdvisor(input: {
42
58
  decider: Decider;
@@ -45,5 +61,7 @@ export declare function createAdvisor(input: {
45
61
  timeoutMs?: number;
46
62
  /** Absent or false means the null decider is used whatever `decider` says. */
47
63
  enabled?: boolean;
64
+ episodeId?: string;
65
+ taskEgress?: TaskEgressMode;
48
66
  }): Advisor;
49
67
  //# sourceMappingURL=advisor.d.ts.map
@@ -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,WAAW,YAAY;IAC3B,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,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC5F;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;CACnB,GAAG,OAAO,CA+DV"}
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"}
@@ -2,10 +2,25 @@
2
2
  export const DEFAULT_ADVICE_TIMEOUT_MS = 2000;
3
3
  export function createAdvisor(input) {
4
4
  const timeoutMs = input.timeoutMs ?? DEFAULT_ADVICE_TIMEOUT_MS;
5
+ const taskEgress = input.taskEgress ?? "digest";
5
6
  return {
6
- async ask(purpose, request, signal) {
7
+ task(task) {
8
+ if (taskEgress === "raw") {
9
+ warnRawTaskEgress();
10
+ return task;
11
+ }
12
+ return digestTask(task);
13
+ },
14
+ async ask(purpose, request, signal, executionId) {
7
15
  const started = Date.now();
8
- const base = { purpose, decider: input.decider.name, questions: Object.keys(request.questions) };
16
+ const base = {
17
+ ...(input.episodeId ? { episodeId: input.episodeId } : {}),
18
+ ...(executionId ? { executionId } : {}),
19
+ taskEgress,
20
+ purpose,
21
+ decider: input.decider.name,
22
+ questions: Object.keys(request.questions),
23
+ };
9
24
  const write = async (entry) => {
10
25
  try {
11
26
  await input.record(entry);
@@ -65,6 +80,51 @@ export function createAdvisor(input) {
65
80
  },
66
81
  };
67
82
  }
83
+ let rawTaskEgressWarned = false;
84
+ function warnRawTaskEgress() {
85
+ if (rawTaskEgressWarned)
86
+ return;
87
+ rawTaskEgressWarned = true;
88
+ console.warn("pi-daddy: raw advisor task egress is enabled");
89
+ }
90
+ function digestTask(task) {
91
+ const files = [...task.matchAll(/\b(?:[\w.-]+\/)*[\w-]+\.[A-Za-z0-9]{1,10}\b/g)].map((match) => match[0]);
92
+ const extensions = [
93
+ ...new Set(files.map((file) => `.${file.slice(file.lastIndexOf(".") + 1).toLowerCase()}`)),
94
+ ].sort();
95
+ const languages = new Set(extensions.map(languageForExtension).filter((language) => language !== "unknown"));
96
+ return {
97
+ length: task.length,
98
+ language: languages.size === 0 ? "unknown" : languages.size === 1 ? [...languages][0] : "mixed",
99
+ referencedFiles: { count: files.length, extensions },
100
+ };
101
+ }
102
+ function languageForExtension(extension) {
103
+ const languages = {
104
+ ".c": "c",
105
+ ".cpp": "cpp",
106
+ ".css": "css",
107
+ ".go": "go",
108
+ ".html": "html",
109
+ ".java": "java",
110
+ ".js": "javascript",
111
+ ".jsx": "javascript",
112
+ ".json": "json",
113
+ ".md": "markdown",
114
+ ".php": "php",
115
+ ".py": "python",
116
+ ".rb": "ruby",
117
+ ".rs": "rust",
118
+ ".sh": "shell",
119
+ ".sql": "sql",
120
+ ".swift": "swift",
121
+ ".ts": "typescript",
122
+ ".tsx": "typescript",
123
+ ".yaml": "yaml",
124
+ ".yml": "yaml",
125
+ };
126
+ return languages[extension] ?? "unknown";
127
+ }
68
128
  /** The bound fired, the caller went away, or neither — three different facts a reviewer needs to tell apart. */
69
129
  function outcomeFor(timer, caller, otherwise) {
70
130
  if (timer.aborted && !caller?.aborted)
@@ -1 +1 @@
1
- {"version":3,"file":"advisor.js","sourceRoot":"","sources":["../../src/advisors/advisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"advisor.js","sourceRoot":"","sources":["../../src/advisors/advisor.ts"],"names":[],"mappings":"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"}
@@ -51,10 +51,8 @@ export interface AdviceRequest {
51
51
  * What the advisor is told about the situation, composed by the caller.
52
52
  *
53
53
  * **Sent, never recorded.** The task is never STORED (ADR-0021) and that still holds — `createAdvisor` writes the
54
- * question keys and the answers and never this object. But an advisor cannot judge a task it cannot see, so a
55
- * caller that needs one judged does send it, and the operator's consent for that is the advisor being off by
56
- * default. An earlier draft of this paragraph said the raw task "must not be shipped to a third party either",
57
- * which the first decision point then did; the rule that survived review is the narrower and true one.
54
+ * question keys and the answers and never this object. Raw task text crosses only when the independent egress
55
+ * switch permits it; otherwise callers send a structural digest. Neither representation is copied into the record.
58
56
  */
59
57
  state: Readonly<Record<string, unknown>>;
60
58
  questions: Readonly<Record<string, Question>>;
@@ -1 +1 @@
1
- {"version":3,"file":"decider.d.ts","sourceRoot":"","sources":["../../src/advisors/decider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,qEAAqE;AACrE,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAEvE,4GAA4G;AAC5G,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAEtD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,yGAAyG;IACzG,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC9E;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,OAGzB,CAAC"}
1
+ {"version":3,"file":"decider.d.ts","sourceRoot":"","sources":["../../src/advisors/decider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,qEAAqE;AACrE,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAEvE,4GAA4G;AAC5G,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAEtD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,yGAAyG;IACzG,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC9E;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,OAGzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"decider.js","sourceRoot":"","sources":["../../src/advisors/decider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAyCH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;CACzB,CAAC"}
1
+ {"version":3,"file":"decider.js","sourceRoot":"","sources":["../../src/advisors/decider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAuCH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;CACzB,CAAC"}
@@ -23,7 +23,8 @@
23
23
  * The key is never in the settings file either, because that file is committed and an API key must not be.
24
24
  */
25
25
  export { ENV_ADVISOR_KEY as ADVISOR_KEY_ENV } from "../kernel/env-names.ts";
26
- export { ENV_ADVISOR_MODEL } from "../kernel/env-names.ts";
26
+ import { type TaskEgressMode } from "./advisor.ts";
27
+ export { ENV_ADVISOR_MODEL, ENV_ADVISOR_TASK_EGRESS } from "../kernel/env-names.ts";
27
28
  export { ENV_ADVISOR } from "../kernel/env-names.ts";
28
29
  export interface AdvisorSettings {
29
30
  enabled: boolean;
@@ -32,6 +33,7 @@ export interface AdvisorSettings {
32
33
  /** Overrides the adapter's pinned model id; absent means the adapter's own default. */
33
34
  model?: string;
34
35
  timeoutMs?: number;
36
+ taskEgress: TaskEgressMode;
35
37
  /** Why an advisor is off when the settings asked for one on — reported, never silently applied. */
36
38
  refusal?: string;
37
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/advisors/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mGAAmG;IACnG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,WAAW,EAAE,eAAoE,CAAC;AAE/F;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,eAAe,CA4DvG"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/advisors/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,cAAc,CAAC;IAC3B,mGAAmG;IACnG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,WAAW,EAAE,eAA0F,CAAC;AAErH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,eAAe,CA6DvG"}
@@ -24,11 +24,11 @@
24
24
  */
25
25
  // Spelled once, in the kernel's table, so this layer cannot drift from the list `childEnv` refuses to write.
26
26
  export { ENV_ADVISOR_KEY as ADVISOR_KEY_ENV } from "../kernel/env-names.js";
27
- import { ENV_ADVISOR, ENV_ADVISOR_KEY, ENV_ADVISOR_MODEL } from "../kernel/env-names.js";
27
+ import { ENV_ADVISOR, ENV_ADVISOR_KEY, ENV_ADVISOR_MODEL, ENV_ADVISOR_TASK_EGRESS } from "../kernel/env-names.js";
28
28
  import { DEFAULT_ADVICE_TIMEOUT_MS } from "./advisor.js";
29
- export { ENV_ADVISOR_MODEL } from "../kernel/env-names.js";
29
+ export { ENV_ADVISOR_MODEL, ENV_ADVISOR_TASK_EGRESS } from "../kernel/env-names.js";
30
30
  export { ENV_ADVISOR } from "../kernel/env-names.js";
31
- export const ADVISOR_OFF = Object.freeze({ enabled: false, decider: "none" });
31
+ export const ADVISOR_OFF = Object.freeze({ enabled: false, decider: "none", taskEgress: "digest" });
32
32
  /**
33
33
  * Read the `advisor` block of a project settings file. Absent is off; malformed is off WITH a reason.
34
34
  *
@@ -87,6 +87,7 @@ export function advisorSettingsFrom(raw, env = process.env) {
87
87
  return {
88
88
  enabled: true,
89
89
  decider: "jev",
90
+ taskEgress: env[ENV_ADVISOR_TASK_EGRESS]?.trim() === "raw" ? "raw" : "digest",
90
91
  ...(model ? { model } : {}),
91
92
  // Clamped, never raised: a longer bound is not a narrowing either, and a child-writable 30s would be a stall on
92
93
  // every delegation.
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/advisors/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/advisors/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,6GAA6G;AAC7G,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAuB,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAcrD,MAAM,CAAC,MAAM,WAAW,GAAoB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;AAErH;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY,EAAE,MAAyB,OAAO,CAAC,GAAG;IACpF,8GAA8G;IAC9G,iHAAiH;IACjH,uDAAuD;IACvD,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC,SAAS;QAAE,OAAO,WAAW,CAAC;IACnC,IAAI,SAAS,KAAK,KAAK;QACrB,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,GAAG,WAAW,IAAI,SAAS,sCAAsC,EAAE,CAAC;IAExG,MAAM,KAAK,GAAG,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACnD,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,2DAA2D,EAAE,CAAC;IAClG,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,0GAA0G;IAC1G,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACrH,2GAA2G;IAC3G,iHAAiH;IACjH,+EAA+E;IAC/E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QACxB,OAAO;YACL,GAAG,WAAW;YACd,OAAO,EAAE,yCAAyC,WAAW;iBAC1D,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;iBACvD,IAAI,CAAC,IAAI,CAAC,EAAE;SAChB,CAAC;IACJ,gHAAgH;IAChH,8GAA8G;IAC9G,oEAAoE;IACpE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;QACzD,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,uDAAuD,EAAE,CAAC;IAC9F,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;QAC1D,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,+DAA+D,EAAE,CAAC;IACtG,kHAAkH;IAClH,8GAA8G;IAC9G,yGAAyG;IACzG,oFAAoF;IACpF,IAAK,MAAkC,CAAC,KAAK,KAAK,SAAS;QACzD,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,kDAAkD,iBAAiB,UAAU,EAAE,CAAC;IACpH,IACE,MAAM,CAAC,SAAS,KAAK,SAAS;QAC9B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAK,MAAM,CAAC,SAAoB,GAAG,CAAC,IAAK,MAAM,CAAC,SAAoB,GAAG,MAAM,CAAC;QAElH,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,mEAAmE,EAAE,CAAC;IAC1G,MAAM,KAAK,GAAG,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,GAAG;QACN,OAAO;YACL,GAAG,WAAW;YACd,OAAO,EAAE,mCAAmC,eAAe,oCAAoC;SAChG,CAAC;IACJ,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,GAAG,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;QAC7E,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,gHAAgH;QAChH,oBAAoB;QACpB,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;YAChC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAmB,EAAE,yBAAyB,CAAC,EAAE;YAChF,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC"}
@@ -1,3 +1,8 @@
1
+ import type { ChildUsageTotals } from "../governance/ledger-events.ts";
2
+ export interface ChildUsageObservation {
3
+ usage?: ChildUsageTotals;
4
+ unavailable?: "session-missing" | "session-invalid" | "usage-missing";
5
+ }
1
6
  export interface ActivitySession {
2
7
  /** The child argv, with `--session <file>` in place of `--no-session` when a file was allocated here. */
3
8
  readonly args: string[];
@@ -5,6 +10,8 @@ export interface ActivitySession {
5
10
  readonly path: string;
6
11
  /** A marker that changes whenever pi appended to the file; `undefined` until the file exists. */
7
12
  probe(): Promise<string | undefined>;
13
+ /** Aggregate only the current child turn's usage; no transcript content leaves this reader. */
14
+ usage(): Promise<ChildUsageObservation>;
8
15
  /** Remove the temporary file, if this run allocated one. Never removes a retention target. */
9
16
  dispose(): Promise<void>;
10
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"activity-session.d.ts","sourceRoot":"","sources":["../../src/executors/activity-session.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,eAAe;IAC9B,yGAAyG;IACzG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACxB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,KAAK,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACrC,8FAA8F;IAC9F,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAsBD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAoC1G"}
1
+ {"version":3,"file":"activity-session.d.ts","sourceRoot":"","sources":["../../src/executors/activity-session.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIvE,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,WAAW,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,eAAe,CAAC;CACvE;AAED,MAAM,WAAW,eAAe;IAC9B,yGAAyG;IACzG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACxB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,KAAK,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACrC,+FAA+F;IAC/F,KAAK,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxC,8FAA8F;IAC9F,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAsBD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAiD1G"}