harnery 0.9.0 → 0.10.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 (201) hide show
  1. package/README.md +1 -0
  2. package/dist/commander.d.ts.map +1 -1
  3. package/dist/commander.js +6 -0
  4. package/dist/commands/agents.d.ts +24 -0
  5. package/dist/commands/agents.d.ts.map +1 -1
  6. package/dist/commands/agents.js +244 -13
  7. package/dist/commands/backup.d.ts +5 -4
  8. package/dist/commands/backup.d.ts.map +1 -1
  9. package/dist/commands/backup.js +15 -14
  10. package/dist/commands/browse.d.ts.map +1 -1
  11. package/dist/commands/browse.js +27 -1
  12. package/dist/commands/claude-desktop.d.ts +19 -0
  13. package/dist/commands/claude-desktop.d.ts.map +1 -0
  14. package/dist/commands/claude-desktop.js +168 -0
  15. package/dist/commands/context.d.ts.map +1 -1
  16. package/dist/commands/context.js +149 -1
  17. package/dist/commands/doctor.d.ts.map +1 -1
  18. package/dist/commands/doctor.js +2 -3
  19. package/dist/commands/eml.d.ts +32 -0
  20. package/dist/commands/eml.d.ts.map +1 -1
  21. package/dist/commands/eml.js +16 -3
  22. package/dist/commands/harness.d.ts +11 -0
  23. package/dist/commands/harness.d.ts.map +1 -0
  24. package/dist/commands/harness.js +118 -0
  25. package/dist/commands/presence.d.ts +9 -4
  26. package/dist/commands/presence.d.ts.map +1 -1
  27. package/dist/commands/presence.js +88 -5
  28. package/dist/commands/relay.d.ts +9 -0
  29. package/dist/commands/relay.d.ts.map +1 -0
  30. package/dist/commands/relay.js +143 -0
  31. package/dist/commands/sync.d.ts.map +1 -1
  32. package/dist/commands/sync.js +5 -0
  33. package/dist/commands/workflow.d.ts.map +1 -1
  34. package/dist/commands/workflow.js +8 -15
  35. package/dist/core/agents/canonical-emit.d.ts +15 -0
  36. package/dist/core/agents/canonical-emit.d.ts.map +1 -1
  37. package/dist/core/agents/canonical-emit.js +41 -3
  38. package/dist/core/agents/cli.js +4 -2
  39. package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
  40. package/dist/core/agents/render/prompt-context.js +44 -3
  41. package/dist/core/agents/render/session-context.d.ts.map +1 -1
  42. package/dist/core/agents/render/session-context.js +26 -1
  43. package/dist/core/agents/rules/commit-conflict.d.ts.map +1 -1
  44. package/dist/core/agents/rules/commit-conflict.js +4 -37
  45. package/dist/core/agents/session-events.d.ts.map +1 -1
  46. package/dist/core/agents/session-events.js +16 -43
  47. package/dist/core/agents/state/heartbeat-projector.d.ts.map +1 -1
  48. package/dist/core/agents/state/heartbeat-projector.js +11 -2
  49. package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
  50. package/dist/core/agents/state/heartbeat-writer.js +3 -3
  51. package/dist/core/agents/state/names.d.ts +38 -3
  52. package/dist/core/agents/state/names.d.ts.map +1 -1
  53. package/dist/core/agents/state/names.js +46 -7
  54. package/dist/core/agents/state/pidmap.d.ts +5 -1
  55. package/dist/core/agents/state/pidmap.d.ts.map +1 -1
  56. package/dist/core/agents/state/pidmap.js +58 -2
  57. package/dist/core/agents/state/stale-sweep.d.ts +3 -2
  58. package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
  59. package/dist/core/agents/state/stale-sweep.js +6 -6
  60. package/dist/core/config.d.ts +68 -11
  61. package/dist/core/config.d.ts.map +1 -1
  62. package/dist/core/config.js +191 -25
  63. package/dist/core/context/index.d.ts +144 -0
  64. package/dist/core/context/index.d.ts.map +1 -0
  65. package/dist/core/context/index.js +380 -0
  66. package/dist/core/harnesses/bench.d.ts +29 -0
  67. package/dist/core/harnesses/bench.d.ts.map +1 -0
  68. package/dist/core/harnesses/bench.js +151 -0
  69. package/dist/core/harnesses/index.d.ts +9 -0
  70. package/dist/core/harnesses/index.d.ts.map +1 -0
  71. package/dist/core/harnesses/index.js +4 -0
  72. package/dist/core/harnesses/profiles.d.ts +62 -0
  73. package/dist/core/harnesses/profiles.d.ts.map +1 -0
  74. package/dist/core/harnesses/profiles.js +115 -0
  75. package/dist/core/harnesses/registry.d.ts +15 -0
  76. package/dist/core/harnesses/registry.d.ts.map +1 -0
  77. package/dist/core/harnesses/registry.js +113 -0
  78. package/dist/core/harnesses/types.d.ts +64 -0
  79. package/dist/core/harnesses/types.d.ts.map +1 -0
  80. package/dist/core/harnesses/types.js +20 -0
  81. package/dist/core/hooks/cli.js +280 -63
  82. package/dist/core/hooks/events/schema.d.ts +38 -1
  83. package/dist/core/hooks/events/schema.d.ts.map +1 -1
  84. package/dist/core/hooks/harness/events.d.ts.map +1 -1
  85. package/dist/core/hooks/harness/events.js +3 -0
  86. package/dist/core/hooks/harness/parse.d.ts +1 -1
  87. package/dist/core/hooks/harness/parse.d.ts.map +1 -1
  88. package/dist/core/hooks/harness/parse.js +4 -0
  89. package/dist/core/presence/blob.d.ts +40 -0
  90. package/dist/core/presence/blob.d.ts.map +1 -0
  91. package/dist/core/presence/blob.js +91 -0
  92. package/dist/core/presence/git.d.ts +68 -0
  93. package/dist/core/presence/git.d.ts.map +1 -0
  94. package/dist/core/presence/git.js +173 -0
  95. package/dist/core/presence/index.d.ts +74 -0
  96. package/dist/core/presence/index.d.ts.map +1 -0
  97. package/dist/core/presence/index.js +224 -0
  98. package/dist/core/presence/relay-client.d.ts +39 -0
  99. package/dist/core/presence/relay-client.d.ts.map +1 -0
  100. package/dist/core/presence/relay-client.js +295 -0
  101. package/dist/core/presence/relay-protocol.d.ts +94 -0
  102. package/dist/core/presence/relay-protocol.d.ts.map +1 -0
  103. package/dist/core/presence/relay-protocol.js +169 -0
  104. package/dist/core/workflow/billing.d.ts +1 -1
  105. package/dist/core/workflow/billing.d.ts.map +1 -1
  106. package/dist/core/workflow/billing.js +7 -1
  107. package/dist/core/workflow/engine.d.ts.map +1 -1
  108. package/dist/core/workflow/engine.js +11 -2
  109. package/dist/core/workflow/harnesses.d.ts +3 -3
  110. package/dist/core/workflow/harnesses.d.ts.map +1 -1
  111. package/dist/core/workflow/harnesses.js +8 -17
  112. package/dist/core/workflow/spawn-claude.d.ts +4 -1
  113. package/dist/core/workflow/spawn-claude.d.ts.map +1 -1
  114. package/dist/core/workflow/spawn-claude.js +39 -18
  115. package/dist/core/workflow/spawn-codex.d.ts +4 -1
  116. package/dist/core/workflow/spawn-codex.d.ts.map +1 -1
  117. package/dist/core/workflow/spawn-codex.js +44 -22
  118. package/dist/core/workflow/spawn-cursor.d.ts +4 -1
  119. package/dist/core/workflow/spawn-cursor.d.ts.map +1 -1
  120. package/dist/core/workflow/spawn-cursor.js +35 -16
  121. package/dist/core/workflow/types.d.ts +9 -2
  122. package/dist/core/workflow/types.d.ts.map +1 -1
  123. package/dist/lib/browser/client.d.ts +16 -0
  124. package/dist/lib/browser/client.d.ts.map +1 -1
  125. package/dist/lib/browser/client.js +22 -0
  126. package/dist/lib/browser/index.d.ts +1 -0
  127. package/dist/lib/browser/index.d.ts.map +1 -1
  128. package/dist/lib/browser/index.js +1 -0
  129. package/dist/lib/browser/launch-args.d.ts +21 -0
  130. package/dist/lib/browser/launch-args.d.ts.map +1 -0
  131. package/dist/lib/browser/launch-args.js +32 -0
  132. package/dist/lib/claude-desktop.d.ts +105 -0
  133. package/dist/lib/claude-desktop.d.ts.map +1 -0
  134. package/dist/lib/claude-desktop.js +217 -0
  135. package/dist/lib/docs-lint.d.ts.map +1 -1
  136. package/dist/lib/docs-lint.js +5 -2
  137. package/dist/lib/identities/assume.d.ts +51 -0
  138. package/dist/lib/identities/assume.d.ts.map +1 -0
  139. package/dist/lib/identities/assume.js +274 -0
  140. package/dist/lib/identities/index.d.ts +7 -7
  141. package/dist/lib/identities/index.d.ts.map +1 -1
  142. package/dist/lib/identities/index.js +24 -24
  143. package/dist/lib/instructions/templates.d.ts.map +1 -1
  144. package/dist/lib/instructions/templates.js +15 -2
  145. package/package.json +12 -1
  146. package/schemas/config.schema.json +88 -19
  147. package/src/commander.ts +6 -0
  148. package/src/commands/agents.ts +280 -14
  149. package/src/commands/backup.ts +17 -16
  150. package/src/commands/browse.ts +32 -0
  151. package/src/commands/claude-desktop.ts +215 -0
  152. package/src/commands/context.ts +174 -1
  153. package/src/commands/doctor.ts +2 -3
  154. package/src/commands/eml.ts +22 -4
  155. package/src/commands/harness.ts +147 -0
  156. package/src/commands/presence.ts +111 -5
  157. package/src/commands/relay.ts +160 -0
  158. package/src/commands/sync.ts +4 -0
  159. package/src/commands/workflow.ts +9 -18
  160. package/src/core/agents/canonical-emit.ts +41 -3
  161. package/src/core/agents/cli.ts +4 -2
  162. package/src/core/agents/render/prompt-context.ts +48 -3
  163. package/src/core/agents/render/session-context.ts +27 -1
  164. package/src/core/agents/rules/commit-conflict.ts +4 -33
  165. package/src/core/agents/session-events.ts +15 -39
  166. package/src/core/agents/state/heartbeat-projector.ts +10 -1
  167. package/src/core/agents/state/heartbeat-writer.ts +3 -2
  168. package/src/core/agents/state/names.ts +68 -9
  169. package/src/core/agents/state/pidmap.ts +59 -2
  170. package/src/core/agents/state/stale-sweep.ts +6 -11
  171. package/src/core/config.ts +248 -24
  172. package/src/core/context/index.ts +575 -0
  173. package/src/core/harnesses/bench.ts +214 -0
  174. package/src/core/harnesses/index.ts +31 -0
  175. package/src/core/harnesses/profiles.ts +141 -0
  176. package/src/core/harnesses/registry.ts +140 -0
  177. package/src/core/harnesses/types.ts +90 -0
  178. package/src/core/hooks/cli.ts +331 -62
  179. package/src/core/hooks/events/schema.ts +68 -0
  180. package/src/core/hooks/harness/events.ts +3 -0
  181. package/src/core/hooks/harness/parse.ts +7 -1
  182. package/src/core/presence/blob.ts +125 -0
  183. package/src/core/presence/git.ts +191 -0
  184. package/src/core/presence/index.ts +274 -0
  185. package/src/core/presence/relay-client.ts +322 -0
  186. package/src/core/presence/relay-protocol.ts +246 -0
  187. package/src/core/workflow/billing.ts +8 -2
  188. package/src/core/workflow/engine.ts +11 -2
  189. package/src/core/workflow/harnesses.ts +14 -19
  190. package/src/core/workflow/spawn-claude.ts +39 -20
  191. package/src/core/workflow/spawn-codex.ts +47 -28
  192. package/src/core/workflow/spawn-cursor.ts +37 -18
  193. package/src/core/workflow/types.ts +9 -2
  194. package/src/lib/browser/client.ts +37 -0
  195. package/src/lib/browser/index.ts +1 -0
  196. package/src/lib/browser/launch-args.ts +33 -0
  197. package/src/lib/claude-desktop.ts +293 -0
  198. package/src/lib/docs-lint.ts +5 -2
  199. package/src/lib/identities/assume.ts +363 -0
  200. package/src/lib/identities/index.ts +28 -24
  201. package/src/lib/instructions/templates.ts +16 -2
@@ -26,6 +26,8 @@ import { consumeSince, writeCursor } from "../agents/events/consume.js";
26
26
  import { evaluateStopHook } from "../agents/rules/stop-hook.js";
27
27
  import { projectHeartbeats } from "../agents/state/heartbeat-projector.js";
28
28
  import { shellMutationPaths } from "../agents/state/shell-mutation.js";
29
+ import { checkpointContext, completeContextRecovery, extractContextSample, markContextCompactionCompleted, prepareContextRecovery, readContextState, recordContextSample, } from "../context/index.js";
30
+ import { ensureRelayDaemon, fetchPresence, publishPresence } from "../presence/index.js";
29
31
  import { captureImages, detectPresence, imageJanitor, playSound, resetSoundCounters, runSessionSyncExtension, runTurnSummary, scratchArchive, scratchJanitor, scratchRecoveryCue, soundForEvent, } from "./effects/index.js";
30
32
  import { emit } from "./events/emit.js";
31
33
  import { canonicalize } from "./guard-path.js";
@@ -325,8 +327,40 @@ function buildEventData(eventType, ctx) {
325
327
  ...(summary.truncated ? { truncated: true } : {}),
326
328
  };
327
329
  }
330
+ case "context.compaction.started": {
331
+ const metadata = objectRecord(p?.raw.compact_metadata);
332
+ return {
333
+ trigger: stringField(p?.raw.trigger) ?? stringField(metadata?.trigger),
334
+ pre_tokens: numberField(p?.raw.pre_tokens) ??
335
+ numberField(metadata?.pre_tokens) ??
336
+ numberField(metadata?.pre_compact_tokens),
337
+ };
338
+ }
339
+ case "context.compaction.completed": {
340
+ const metadata = objectRecord(p?.raw.compact_metadata);
341
+ return {
342
+ trigger: stringField(p?.raw.trigger) ?? stringField(metadata?.trigger),
343
+ pre_tokens: numberField(p?.raw.pre_tokens) ??
344
+ numberField(metadata?.pre_tokens) ??
345
+ numberField(metadata?.pre_compact_tokens),
346
+ post_tokens: numberField(p?.raw.post_tokens) ??
347
+ numberField(metadata?.post_tokens) ??
348
+ numberField(metadata?.post_compact_tokens),
349
+ };
350
+ }
328
351
  }
329
352
  }
353
+ function objectRecord(value) {
354
+ return typeof value === "object" && value !== null && !Array.isArray(value)
355
+ ? value
356
+ : undefined;
357
+ }
358
+ function stringField(value) {
359
+ return typeof value === "string" && value.length > 0 ? value : undefined;
360
+ }
361
+ function numberField(value) {
362
+ return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined;
363
+ }
330
364
  async function main() {
331
365
  const { eventName, extra } = parseArgv(process.argv.slice(2));
332
366
  const harness = detectHarness(process.argv.slice(2));
@@ -418,6 +452,84 @@ async function main() {
418
452
  owner_source: owner.source,
419
453
  event_id: envelope.event_id,
420
454
  });
455
+ // Context telemetry is opportunistic and truthful: only persist a sample
456
+ // when the harness payload actually exposes usage/window data. Identical
457
+ // measurements are de-duplicated before they reach the canonical stream.
458
+ if (payload?.raw) {
459
+ try {
460
+ const sample = extractContextSample(payload.raw, {
461
+ sessionId,
462
+ harness,
463
+ model: payload.model,
464
+ source: "hook",
465
+ confidence: "reported",
466
+ });
467
+ if (sample) {
468
+ const recorded = recordContextSample(coordRoot, owner.instance_id, sample);
469
+ if (recorded.changed) {
470
+ emit(coordRoot, {
471
+ event_type: "context.sampled",
472
+ instance_id: owner.instance_id,
473
+ session_id: sessionId,
474
+ harness,
475
+ data: {
476
+ model: sample.model,
477
+ used_tokens: sample.used_tokens,
478
+ window_tokens: sample.window_tokens,
479
+ used_percent: sample.used_percent,
480
+ telemetry_source: sample.source,
481
+ confidence: sample.confidence,
482
+ },
483
+ });
484
+ }
485
+ }
486
+ }
487
+ catch (err) {
488
+ logError(coordRoot, err, { phase: "context-sample" });
489
+ }
490
+ }
491
+ // A native pre-compaction signal is the safest available point to capture
492
+ // external work state. The operation is idempotent until recovery, so a
493
+ // harness retry cannot create a storm of near-identical capsules.
494
+ if (norm.event_type === "context.compaction.started") {
495
+ try {
496
+ const checkpoint = checkpointContext(coordRoot, {
497
+ sessionId,
498
+ instanceId: owner.instance_id,
499
+ harness,
500
+ cwd: payload?.cwd ?? process.cwd(),
501
+ reason: "pre_compact",
502
+ model: payload?.model,
503
+ });
504
+ emit(coordRoot, {
505
+ event_type: "context.checkpoint.created",
506
+ instance_id: owner.instance_id,
507
+ session_id: sessionId,
508
+ harness,
509
+ data: {
510
+ capsule_id: checkpoint.capsule.capsule_id,
511
+ generation: checkpoint.capsule.generation,
512
+ path: checkpoint.state.latest_capsule ?? "",
513
+ reason: checkpoint.capsule.reason,
514
+ reused: checkpoint.reused,
515
+ },
516
+ });
517
+ }
518
+ catch (err) {
519
+ logError(coordRoot, err, { phase: "context-checkpoint" });
520
+ }
521
+ }
522
+ if (norm.event_type === "context.compaction.completed") {
523
+ try {
524
+ markContextCompactionCompleted(coordRoot, {
525
+ sessionId,
526
+ instanceId: owner.instance_id,
527
+ });
528
+ }
529
+ catch (err) {
530
+ logError(coordRoot, err, { phase: "context-compaction-completed" });
531
+ }
532
+ }
421
533
  // Phase 8: SessionStart post-emit: project the event so the heartbeat
422
534
  // lands synchronously, run stale-sweep, and emit the harness-shaped
423
535
  // systemMessage JSON (peer table + wiring check + council invites).
@@ -438,12 +550,50 @@ async function main() {
438
550
  catch (err) {
439
551
  logError(coordRoot, err, { phase: "session-start-image-janitor" });
440
552
  }
553
+ let recovery = null;
554
+ if (payload?.source === "compact") {
555
+ try {
556
+ emit(coordRoot, {
557
+ event_type: "context.compaction.completed",
558
+ instance_id: owner.instance_id,
559
+ session_id: sessionId,
560
+ harness,
561
+ data: { trigger: "auto" },
562
+ });
563
+ markContextCompactionCompleted(coordRoot, {
564
+ sessionId,
565
+ instanceId: owner.instance_id,
566
+ });
567
+ recovery = prepareContextRecovery(coordRoot, {
568
+ instanceId: owner.instance_id,
569
+ sessionId,
570
+ cwd: payload?.cwd ?? process.cwd(),
571
+ });
572
+ }
573
+ catch (err) {
574
+ logError(coordRoot, err, { phase: "context-recovery-session-start" });
575
+ }
576
+ }
441
577
  try {
442
- await emitSessionStartSystemMessage(coordRoot, owner.instance_id, sessionId, data, harness);
578
+ const injected = await emitSessionStartSystemMessage(coordRoot, owner.instance_id, sessionId, data, harness, recovery?.briefing ?? "");
579
+ if (injected && recovery) {
580
+ completeRecoveryInjection(coordRoot, owner.instance_id, sessionId, harness, recovery, "SessionStart");
581
+ }
443
582
  }
444
583
  catch (err) {
445
584
  logError(coordRoot, err, { phase: "session-start-systemMessage" });
446
585
  }
586
+ // Cross-machine presence (ADR 0016): announce this machine's sessions and
587
+ // pull peers'. Both are throttled + fail-silent; network runs detached.
588
+ // When a relay is configured, also make sure the live-socket daemon runs.
589
+ try {
590
+ publishPresence(coordRoot);
591
+ fetchPresence(coordRoot);
592
+ ensureRelayDaemon(coordRoot);
593
+ }
594
+ catch (err) {
595
+ logError(coordRoot, err, { phase: "session-start-presence" });
596
+ }
447
597
  }
448
598
  // Phase 8: SessionEnd cleanup: delete heartbeat + pid-map rows. Harness-
449
599
  // agnostic since v0.5.0.
@@ -460,6 +610,14 @@ async function main() {
460
610
  scratchArchive(coordRoot, owner.instance_id);
461
611
  runSessionSyncExtension(coordRoot, true);
462
612
  }
613
+ // Presence: publish the post-cleanup state so peers see this session gone
614
+ // promptly rather than waiting out the remote-stale window.
615
+ try {
616
+ publishPresence(coordRoot);
617
+ }
618
+ catch (err) {
619
+ logError(coordRoot, err, { phase: "session-end-presence" });
620
+ }
463
621
  }
464
622
  // Phase 8: SubagentStart: sync-project to create the subagent heartbeat,
465
623
  // log the lifecycle event, and emit a context message announcing the
@@ -515,8 +673,34 @@ async function main() {
515
673
  if (prompt)
516
674
  detectPresence(prompt);
517
675
  }
676
+ // Presence: throttled pull of peer machines' presence refs (default 60s
677
+ // interval; the systemMessage below reads whatever is locally known).
518
678
  try {
519
- await emitUserPromptSubmitSystemMessage(coordRoot, owner.instance_id, sessionId, harness);
679
+ fetchPresence(coordRoot);
680
+ }
681
+ catch (err) {
682
+ logError(coordRoot, err, { phase: "user-prompt-submit-presence" });
683
+ }
684
+ let recovery = null;
685
+ const continuityState = readContextState(coordRoot, sessionId);
686
+ if (continuityState?.phase === "checkpointed" &&
687
+ continuityState.compaction_completed_at !== undefined) {
688
+ try {
689
+ recovery = prepareContextRecovery(coordRoot, {
690
+ instanceId: owner.instance_id,
691
+ sessionId,
692
+ cwd: payload?.cwd ?? process.cwd(),
693
+ });
694
+ }
695
+ catch (err) {
696
+ logError(coordRoot, err, { phase: "context-recovery-user-prompt" });
697
+ }
698
+ }
699
+ try {
700
+ const injected = await emitUserPromptSubmitSystemMessage(coordRoot, owner.instance_id, sessionId, harness, recovery?.briefing ?? "");
701
+ if (injected && recovery) {
702
+ completeRecoveryInjection(coordRoot, owner.instance_id, sessionId, harness, recovery, "UserPromptSubmit");
703
+ }
520
704
  }
521
705
  catch (err) {
522
706
  logError(coordRoot, err, { phase: "user-prompt-submit-systemMessage" });
@@ -569,6 +753,17 @@ async function main() {
569
753
  catch (err) {
570
754
  logError(coordRoot, err, { phase: "stop-projection" });
571
755
  }
756
+ // Presence: publish AFTER the projection above so the blob carries this
757
+ // turn's fresh task/turn_summary/files. Change-batched + keepalive'd;
758
+ // the push itself runs detached. The relay daemon (when configured) is
759
+ // re-ensured here too — it self-exits on idle, and the next turn revives it.
760
+ try {
761
+ publishPresence(coordRoot);
762
+ ensureRelayDaemon(coordRoot);
763
+ }
764
+ catch (err) {
765
+ logError(coordRoot, err, { phase: "stop-presence" });
766
+ }
572
767
  // Stop verdict (status-box + set-task gate). Direct in-process call: the
573
768
  // rule lives in harnery. agent-hook already emitted this turn.stop (with
574
769
  // status_box_present) above, so the evidence is in the stream.
@@ -1023,39 +1218,43 @@ function cleanupSessionEnd(coordRoot, instanceId, reason) {
1023
1218
  spawnSync(agentCoordBin, ["log", `SESSION_END reason=${reason}`, "--instance", instanceId], { encoding: "utf8", timeout: 2000 });
1024
1219
  }
1025
1220
  }
1026
- async function emitUserPromptSubmitSystemMessage(coordRoot, instanceId, sessionId, harness) {
1221
+ async function emitUserPromptSubmitSystemMessage(coordRoot, instanceId, sessionId, harness, recoveryBriefing = "") {
1027
1222
  const agentCoordBin = join(coordRoot, "harnery", "bin", "agent-coord");
1028
- if (!existsSync(agentCoordBin))
1029
- return;
1030
- // Look up the agent's name from its heartbeat (for council pending rendering).
1031
- let agentName = "";
1032
- try {
1033
- const fs = require("node:fs");
1034
- const hbPath = join(coordRoot, ".harnery", "active", `${instanceId}.json`);
1035
- if (fs.existsSync(hbPath)) {
1036
- const hb = JSON.parse(fs.readFileSync(hbPath, "utf8"));
1037
- agentName = hb.name ?? "";
1223
+ let additionalContext = "";
1224
+ if (existsSync(agentCoordBin)) {
1225
+ // Look up the agent's name from its heartbeat (for council pending rendering).
1226
+ let agentName = "";
1227
+ try {
1228
+ const fs = require("node:fs");
1229
+ const hbPath = join(coordRoot, ".harnery", "active", `${instanceId}.json`);
1230
+ if (fs.existsSync(hbPath)) {
1231
+ const hb = JSON.parse(fs.readFileSync(hbPath, "utf8"));
1232
+ agentName = hb.name ?? "";
1233
+ }
1234
+ }
1235
+ catch {
1236
+ /* fall through with empty name; peer table still renders */
1038
1237
  }
1238
+ const args = ["prompt-context", "--instance", instanceId, "--session", sessionId];
1239
+ if (agentName)
1240
+ args.push("--name", agentName);
1241
+ // Cursor + Codex sessions get the set-task staleness nudge. CC enforces it
1242
+ // via the Stop-hook transcript scan; the nudge replaces that for harnesses
1243
+ // that don't reliably expose a transcript_path during stop.
1244
+ if (harness === "cursor" || harness === "codex")
1245
+ args.push("--task-nudge");
1246
+ const result = spawnSync(agentCoordBin, args, { encoding: "utf8", timeout: 3000 });
1247
+ if (result.status === 0 && result.stdout)
1248
+ additionalContext = result.stdout.trim();
1039
1249
  }
1040
- catch {
1041
- /* fall through with empty name; peer table still renders */
1250
+ if (recoveryBriefing) {
1251
+ additionalContext = [additionalContext, recoveryBriefing].filter(Boolean).join("\n\n");
1042
1252
  }
1043
- const args = ["prompt-context", "--instance", instanceId, "--session", sessionId];
1044
- if (agentName)
1045
- args.push("--name", agentName);
1046
- // Cursor + Codex sessions get the set-task staleness nudge. CC enforces it
1047
- // via the Stop-hook transcript scan; the nudge replaces that for harnesses
1048
- // that don't reliably expose a transcript_path during stop.
1049
- if (harness === "cursor" || harness === "codex")
1050
- args.push("--task-nudge");
1051
- const result = spawnSync(agentCoordBin, args, { encoding: "utf8", timeout: 3000 });
1052
- if (result.status !== 0 || !result.stdout)
1053
- return;
1054
- const additionalContext = result.stdout.trim();
1055
1253
  if (!additionalContext)
1056
- return;
1254
+ return false;
1057
1255
  const { emitContext } = await import("./harness/output.js");
1058
1256
  emitContext(harness, "UserPromptSubmit", additionalContext);
1257
+ return true;
1059
1258
  }
1060
1259
  function emitSubagentStartContext(coordRoot, instanceId, sessionId, data, harness) {
1061
1260
  // Look up the subagent's assigned name (just-written by agent-coord assignName
@@ -1089,42 +1288,40 @@ function harnessPlatform(harness) {
1089
1288
  return "claude_code";
1090
1289
  return harness;
1091
1290
  }
1092
- async function emitSessionStartSystemMessage(coordRoot, instanceId, sessionId, emittedData, harness) {
1291
+ async function emitSessionStartSystemMessage(coordRoot, instanceId, sessionId, emittedData, harness, recoveryBriefing = "") {
1093
1292
  const agentCoordBin = join(coordRoot, "harnery", "bin", "agent-coord");
1094
- if (!existsSync(agentCoordBin))
1095
- return;
1096
- // Sync-project so the heartbeat exists for downstream readers (peer table,
1097
- // wiring check, council invites).
1098
- spawnSync(agentCoordBin, ["project"], { encoding: "utf8", timeout: 3000 });
1099
- // Stale-sweep dead peers before rendering peer table.
1100
- spawnSync(agentCoordBin, ["stale-sweep"], { encoding: "utf8", timeout: 3000 });
1101
- // SESSION_START activity log line, fired across all harnesses.
1102
- const model = emittedData.model ?? "unknown";
1103
- const source = emittedData.source ?? "startup";
1104
- const platform = harnessPlatform(harness);
1105
- spawnSync(agentCoordBin, [
1106
- "log",
1107
- `SESSION_START model=${model} source=${source} platform=${platform}`,
1108
- "--instance",
1109
- instanceId,
1110
- ], { encoding: "utf8", timeout: 2000 });
1111
- // Render the systemMessage via agent-coord.
1112
- const agentName = emittedData.name ?? "";
1113
- const args = ["session-context", "--instance", instanceId, "--session", sessionId];
1114
- if (agentName)
1115
- args.push("--name", agentName);
1116
- // The "You are agent-X." prefix in session-context renders unqualified by
1117
- // default (claude-code-style). For cursor/codex the bash dispatchers add
1118
- // a "(Cursor)" / "(Codex)" suffix; pass it through as --platform-label.
1119
- if (harness !== "claude-code") {
1120
- args.push("--platform-label", platform === "cursor" ? "Cursor" : "Codex");
1293
+ let additionalContext = "";
1294
+ if (existsSync(agentCoordBin)) {
1295
+ // Sync-project so the heartbeat exists for downstream readers (peer table,
1296
+ // wiring check, council invites).
1297
+ spawnSync(agentCoordBin, ["project"], { encoding: "utf8", timeout: 3000 });
1298
+ // Stale-sweep dead peers before rendering peer table.
1299
+ spawnSync(agentCoordBin, ["stale-sweep"], { encoding: "utf8", timeout: 3000 });
1300
+ // SESSION_START activity log line, fired across all harnesses.
1301
+ const model = emittedData.model ?? "unknown";
1302
+ const source = emittedData.source ?? "startup";
1303
+ const platform = harnessPlatform(harness);
1304
+ spawnSync(agentCoordBin, [
1305
+ "log",
1306
+ `SESSION_START model=${model} source=${source} platform=${platform}`,
1307
+ "--instance",
1308
+ instanceId,
1309
+ ], { encoding: "utf8", timeout: 2000 });
1310
+ // Render the systemMessage via agent-coord.
1311
+ const agentName = emittedData.name ?? "";
1312
+ const args = ["session-context", "--instance", instanceId, "--session", sessionId];
1313
+ if (agentName)
1314
+ args.push("--name", agentName);
1315
+ // The "You are agent-X." prefix in session-context renders unqualified by
1316
+ // default (claude-code-style). For cursor/codex the bash dispatchers add
1317
+ // a "(Cursor)" / "(Codex)" suffix; pass it through as --platform-label.
1318
+ if (harness !== "claude-code") {
1319
+ args.push("--platform-label", platform === "cursor" ? "Cursor" : "Codex");
1320
+ }
1321
+ const result = spawnSync(agentCoordBin, args, { encoding: "utf8", timeout: 3000 });
1322
+ if (result.status === 0 && result.stdout)
1323
+ additionalContext = result.stdout.trim();
1121
1324
  }
1122
- const result = spawnSync(agentCoordBin, args, { encoding: "utf8", timeout: 3000 });
1123
- if (result.status !== 0 || !result.stdout)
1124
- return;
1125
- let additionalContext = result.stdout.trim();
1126
- if (!additionalContext)
1127
- return;
1128
1325
  // Effect (claude-code): merge the scratch recovery cue into the session-start
1129
1326
  // context. Was a standalone additionalContext emission from the previous
1130
1327
  // scratch-on-start adapter; now that agent-hook is the single SessionStart
@@ -1132,10 +1329,30 @@ async function emitSessionStartSystemMessage(coordRoot, instanceId, sessionId, e
1132
1329
  if (harness === "claude-code") {
1133
1330
  const cue = scratchRecoveryCue(coordRoot);
1134
1331
  if (cue)
1135
- additionalContext = `${additionalContext}\n\n${cue}`;
1332
+ additionalContext = [additionalContext, cue].filter(Boolean).join("\n\n");
1136
1333
  }
1334
+ if (recoveryBriefing) {
1335
+ additionalContext = [additionalContext, recoveryBriefing].filter(Boolean).join("\n\n");
1336
+ }
1337
+ if (!additionalContext)
1338
+ return false;
1137
1339
  const { emitContext } = await import("./harness/output.js");
1138
1340
  emitContext(harness, "SessionStart", additionalContext);
1341
+ return true;
1342
+ }
1343
+ function completeRecoveryInjection(coordRoot, instanceId, sessionId, harness, recovery, injectionEvent) {
1344
+ completeContextRecovery(coordRoot, { sessionId, instanceId });
1345
+ emit(coordRoot, {
1346
+ event_type: "context.recovery.injected",
1347
+ instance_id: instanceId,
1348
+ session_id: sessionId,
1349
+ harness,
1350
+ data: {
1351
+ capsule_id: recovery.capsule.capsule_id,
1352
+ generation: recovery.capsule.generation,
1353
+ injection_event: injectionEvent,
1354
+ },
1355
+ });
1139
1356
  }
1140
1357
  main()
1141
1358
  .then((code) => process.exit(code))
@@ -124,6 +124,35 @@ export type ImageCaptured = EventEnvelope<"image.captured", {
124
124
  intent?: string;
125
125
  command_head?: string;
126
126
  }>;
127
+ export type ContextSampled = EventEnvelope<"context.sampled", {
128
+ model?: string;
129
+ used_tokens?: number;
130
+ window_tokens?: number;
131
+ used_percent?: number;
132
+ telemetry_source: "hook" | "native_event" | "result" | "transcript" | "estimate";
133
+ confidence: "exact" | "reported" | "estimated";
134
+ }>;
135
+ export type ContextCheckpointCreated = EventEnvelope<"context.checkpoint.created", {
136
+ capsule_id: string;
137
+ generation: number;
138
+ path: string;
139
+ reason: "manual" | "pressure" | "pre_compact" | "session_end";
140
+ reused: boolean;
141
+ }>;
142
+ export type ContextCompactionStarted = EventEnvelope<"context.compaction.started", {
143
+ trigger?: string;
144
+ pre_tokens?: number;
145
+ }>;
146
+ export type ContextCompactionCompleted = EventEnvelope<"context.compaction.completed", {
147
+ trigger?: string;
148
+ pre_tokens?: number;
149
+ post_tokens?: number;
150
+ }>;
151
+ export type ContextRecoveryInjected = EventEnvelope<"context.recovery.injected", {
152
+ capsule_id: string;
153
+ generation: number;
154
+ injection_event: "SessionStart" | "UserPromptSubmit";
155
+ }>;
127
156
  export type ClaimAcquire = EventEnvelope<"claim.acquire", {
128
157
  path: string;
129
158
  mode: "read" | "write";
@@ -156,6 +185,14 @@ export type StatePresenceChange = EventEnvelope<"state.presence_change", {
156
185
  source: "hook" | "cli" | "user";
157
186
  }>;
158
187
  export type StateHeartbeat = EventEnvelope<"state.heartbeat", Record<string, never>>;
188
+ /** A live session adopted a durable persona/role. The event is authoritative
189
+ * for replay; `.name-history` carries the same binding for heartbeat healing. */
190
+ export type IdentityAssumed = EventEnvelope<"identity.assumed", {
191
+ name: string;
192
+ agent_id: string;
193
+ previous_name?: string;
194
+ previous_agent_id?: string;
195
+ }>;
159
196
  export type CouncilOpen = EventEnvelope<"council.open", {
160
197
  council_id: string;
161
198
  topic: string;
@@ -224,7 +261,7 @@ export type HealthVerdictFailure = EventEnvelope<"health.verdict_failure", {
224
261
  timeout_ms?: number;
225
262
  fallback: "allow";
226
263
  }>;
227
- export type Event = SessionStart | SessionEnd | SubagentStart | SubagentStop | UserPromptSubmit | TurnStop | CommandStart | CommandOutput | CommandEnd | Narration | ToolPreUse | ToolPostUse | ToolPostUseFailure | ToolOutputChunk | ImageCaptured | ClaimAcquire | ClaimRelease | ClaimConflict | StateTaskSet | StateStatusChecked | StateScratchAppend | StatePresenceChange | StateHeartbeat | CouncilOpen | CouncilRoundOpen | CouncilContribution | CouncilRoundClose | CouncilClose | CouncilArchive | DecisionBlock | DecisionWarn | DecisionAllow | HealthHeartbeatHeal | HealthPidmapHeal | HealthHeartbeatSwept | HealthVerdictFailure;
264
+ export type Event = SessionStart | SessionEnd | SubagentStart | SubagentStop | UserPromptSubmit | TurnStop | CommandStart | CommandOutput | CommandEnd | Narration | ToolPreUse | ToolPostUse | ToolPostUseFailure | ToolOutputChunk | ImageCaptured | ContextSampled | ContextCheckpointCreated | ContextCompactionStarted | ContextCompactionCompleted | ContextRecoveryInjected | ClaimAcquire | ClaimRelease | ClaimConflict | StateTaskSet | StateStatusChecked | StateScratchAppend | StatePresenceChange | StateHeartbeat | IdentityAssumed | CouncilOpen | CouncilRoundOpen | CouncilContribution | CouncilRoundClose | CouncilClose | CouncilArchive | DecisionBlock | DecisionWarn | DecisionAllow | HealthHeartbeatHeal | HealthPidmapHeal | HealthHeartbeatSwept | HealthVerdictFailure;
228
265
  export type EventType = Event["event_type"];
229
266
  /**
230
267
  * Redaction marker that may be attached to any `data` payload during emission.
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/events/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/events/schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/harness/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,SAAS;IACxB,6FAA6F;IAC7F,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,wDAAwD;IACxD,UAAU,EAAE,cAAc,CAAC;IAC3B,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAC3B,0FAA0F;IAC1F,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,EAAE,SAAS,EAWzC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,EAWpC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,YAAY,EAAE,SAAS,EAQnC,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,EAAE,SAAS,EAI1C,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,wBAAwB,UAWpC,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAqBxD,CAAC"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/harness/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,SAAS;IACxB,6FAA6F;IAC7F,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,wDAAwD;IACxD,UAAU,EAAE,cAAc,CAAC;IAC3B,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAC3B,0FAA0F;IAC1F,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,EAAE,SAAS,EAYzC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,EAWpC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,YAAY,EAAE,SAAS,EAUnC,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,EAAE,SAAS,EAI1C,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,wBAAwB,UAWpC,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAqBxD,CAAC"}
@@ -20,6 +20,7 @@ export const CLAUDE_CODE_EVENTS = [
20
20
  { settingsKey: "PreToolUse", subcommand: "pre-tool-use" },
21
21
  { settingsKey: "PostToolUse", subcommand: "post-tool-use" },
22
22
  { settingsKey: "PostToolUseFailure", subcommand: "post-tool-use-failure" },
23
+ { settingsKey: "PreCompact", subcommand: "pre-compact" },
23
24
  ];
24
25
  /**
25
26
  * Cursor: `.cursor/hooks.json`. camelCase event keys; flat `{ command }` entries;
@@ -45,6 +46,8 @@ export const CODEX_EVENTS = [
45
46
  { settingsKey: "UserPromptSubmit", subcommand: "user-prompt-submit" },
46
47
  { settingsKey: "SubagentStart", subcommand: "sub-agent-start" },
47
48
  { settingsKey: "SubagentStop", subcommand: "sub-agent-stop" },
49
+ { settingsKey: "PreCompact", subcommand: "pre-compact" },
50
+ { settingsKey: "PostCompact", subcommand: "post-compact" },
48
51
  { settingsKey: "Stop", subcommand: "stop" },
49
52
  ];
50
53
  /** Entries written by harnery before Codex adopted a strict native hook schema. */
@@ -63,5 +63,5 @@ export declare function normalizeEventName(eventName: string): {
63
63
  event_type: NormalizedEventType;
64
64
  intra_turn: boolean;
65
65
  } | null;
66
- export type NormalizedEventType = "session.start" | "session.end" | "user_prompt.submit" | "turn.stop" | "subagent.start" | "subagent.stop" | "tool.pre_use" | "tool.post_use" | "tool.post_use_failure";
66
+ export type NormalizedEventType = "session.start" | "session.end" | "user_prompt.submit" | "turn.stop" | "subagent.start" | "subagent.stop" | "tool.pre_use" | "tool.post_use" | "tool.post_use_failure" | "context.compaction.started" | "context.compaction.completed";
67
67
  //# sourceMappingURL=parse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/harness/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAkCjF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,OAAO,GACjB,MAAM,GAAG,SAAS,CASpB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAO7E;AAmBD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,GAChB;IAAE,UAAU,EAAE,mBAAmB,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA6BjE;AAED,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf,aAAa,GACb,oBAAoB,GACpB,WAAW,GACX,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,eAAe,GACf,uBAAuB,CAAC"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/harness/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAkCjF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,OAAO,GACjB,MAAM,GAAG,SAAS,CASpB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAO7E;AAmBD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,GAChB;IAAE,UAAU,EAAE,mBAAmB,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAiCjE;AAED,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf,aAAa,GACb,oBAAoB,GACpB,WAAW,GACX,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,eAAe,GACf,uBAAuB,GACvB,4BAA4B,GAC5B,8BAA8B,CAAC"}
@@ -126,6 +126,10 @@ export function normalizeEventName(eventName) {
126
126
  return { event_type: "tool.post_use", intra_turn: true };
127
127
  case "post-tool-use-failure":
128
128
  return { event_type: "tool.post_use_failure", intra_turn: true };
129
+ case "pre-compact":
130
+ return { event_type: "context.compaction.started", intra_turn: false };
131
+ case "post-compact":
132
+ return { event_type: "context.compaction.completed", intra_turn: false };
129
133
  default:
130
134
  return null;
131
135
  }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Presence blob: the per-machine payload published to
3
+ * `refs/harnery/presence/<machine>` (ADR 0016). One blob describes every live
4
+ * session on this machine; peers render it in their agents list / status box /
5
+ * peer table, labeled by machine.
6
+ */
7
+ export interface PresenceAgent {
8
+ instance_id: string;
9
+ name?: string;
10
+ kind?: string;
11
+ session_id?: string;
12
+ platform?: string;
13
+ task?: string;
14
+ turn_summary?: string;
15
+ files_touched?: string[];
16
+ last_tool?: string;
17
+ started_at?: string;
18
+ last_heartbeat?: string;
19
+ }
20
+ export interface PresenceBlob {
21
+ v: 1;
22
+ machine: string;
23
+ published_at: string;
24
+ agents: PresenceAgent[];
25
+ }
26
+ export interface BuiltBlob {
27
+ blob: PresenceBlob;
28
+ /** Stable hash of the semantically-relevant projection — the change
29
+ * detector that decides whether a publish is worth a push. */
30
+ basisHash: string;
31
+ json: string;
32
+ }
33
+ /**
34
+ * Build this machine's presence blob from `.harnery/active/` heartbeats.
35
+ * Includes live sessions + subagents; excludes kind=transient stubs (they are
36
+ * fold-artifacts of the local claim model, not sessions) and anything past the
37
+ * freshness window.
38
+ */
39
+ export declare function buildPresenceBlob(coordRoot: string, now?: Date): BuiltBlob;
40
+ //# sourceMappingURL=blob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../../../src/core/presence/blob.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,CAAC,CAAC;IACL,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,YAAY,CAAC;IACnB;kEAC8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,SAAS,CA6DtF"}