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.
- package/README.md +1 -0
- package/dist/commander.d.ts.map +1 -1
- package/dist/commander.js +6 -0
- package/dist/commands/agents.d.ts +24 -0
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +244 -13
- package/dist/commands/backup.d.ts +5 -4
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +15 -14
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +27 -1
- package/dist/commands/claude-desktop.d.ts +19 -0
- package/dist/commands/claude-desktop.d.ts.map +1 -0
- package/dist/commands/claude-desktop.js +168 -0
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +149 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +2 -3
- package/dist/commands/eml.d.ts +32 -0
- package/dist/commands/eml.d.ts.map +1 -1
- package/dist/commands/eml.js +16 -3
- package/dist/commands/harness.d.ts +11 -0
- package/dist/commands/harness.d.ts.map +1 -0
- package/dist/commands/harness.js +118 -0
- package/dist/commands/presence.d.ts +9 -4
- package/dist/commands/presence.d.ts.map +1 -1
- package/dist/commands/presence.js +88 -5
- package/dist/commands/relay.d.ts +9 -0
- package/dist/commands/relay.d.ts.map +1 -0
- package/dist/commands/relay.js +143 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +5 -0
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +8 -15
- package/dist/core/agents/canonical-emit.d.ts +15 -0
- package/dist/core/agents/canonical-emit.d.ts.map +1 -1
- package/dist/core/agents/canonical-emit.js +41 -3
- package/dist/core/agents/cli.js +4 -2
- package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
- package/dist/core/agents/render/prompt-context.js +44 -3
- package/dist/core/agents/render/session-context.d.ts.map +1 -1
- package/dist/core/agents/render/session-context.js +26 -1
- package/dist/core/agents/rules/commit-conflict.d.ts.map +1 -1
- package/dist/core/agents/rules/commit-conflict.js +4 -37
- package/dist/core/agents/session-events.d.ts.map +1 -1
- package/dist/core/agents/session-events.js +16 -43
- package/dist/core/agents/state/heartbeat-projector.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-projector.js +11 -2
- package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-writer.js +3 -3
- package/dist/core/agents/state/names.d.ts +38 -3
- package/dist/core/agents/state/names.d.ts.map +1 -1
- package/dist/core/agents/state/names.js +46 -7
- package/dist/core/agents/state/pidmap.d.ts +5 -1
- package/dist/core/agents/state/pidmap.d.ts.map +1 -1
- package/dist/core/agents/state/pidmap.js +58 -2
- package/dist/core/agents/state/stale-sweep.d.ts +3 -2
- package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
- package/dist/core/agents/state/stale-sweep.js +6 -6
- package/dist/core/config.d.ts +68 -11
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +191 -25
- package/dist/core/context/index.d.ts +144 -0
- package/dist/core/context/index.d.ts.map +1 -0
- package/dist/core/context/index.js +380 -0
- package/dist/core/harnesses/bench.d.ts +29 -0
- package/dist/core/harnesses/bench.d.ts.map +1 -0
- package/dist/core/harnesses/bench.js +151 -0
- package/dist/core/harnesses/index.d.ts +9 -0
- package/dist/core/harnesses/index.d.ts.map +1 -0
- package/dist/core/harnesses/index.js +4 -0
- package/dist/core/harnesses/profiles.d.ts +62 -0
- package/dist/core/harnesses/profiles.d.ts.map +1 -0
- package/dist/core/harnesses/profiles.js +115 -0
- package/dist/core/harnesses/registry.d.ts +15 -0
- package/dist/core/harnesses/registry.d.ts.map +1 -0
- package/dist/core/harnesses/registry.js +113 -0
- package/dist/core/harnesses/types.d.ts +64 -0
- package/dist/core/harnesses/types.d.ts.map +1 -0
- package/dist/core/harnesses/types.js +20 -0
- package/dist/core/hooks/cli.js +280 -63
- package/dist/core/hooks/events/schema.d.ts +38 -1
- package/dist/core/hooks/events/schema.d.ts.map +1 -1
- package/dist/core/hooks/harness/events.d.ts.map +1 -1
- package/dist/core/hooks/harness/events.js +3 -0
- package/dist/core/hooks/harness/parse.d.ts +1 -1
- package/dist/core/hooks/harness/parse.d.ts.map +1 -1
- package/dist/core/hooks/harness/parse.js +4 -0
- package/dist/core/presence/blob.d.ts +40 -0
- package/dist/core/presence/blob.d.ts.map +1 -0
- package/dist/core/presence/blob.js +91 -0
- package/dist/core/presence/git.d.ts +68 -0
- package/dist/core/presence/git.d.ts.map +1 -0
- package/dist/core/presence/git.js +173 -0
- package/dist/core/presence/index.d.ts +74 -0
- package/dist/core/presence/index.d.ts.map +1 -0
- package/dist/core/presence/index.js +224 -0
- package/dist/core/presence/relay-client.d.ts +39 -0
- package/dist/core/presence/relay-client.d.ts.map +1 -0
- package/dist/core/presence/relay-client.js +295 -0
- package/dist/core/presence/relay-protocol.d.ts +94 -0
- package/dist/core/presence/relay-protocol.d.ts.map +1 -0
- package/dist/core/presence/relay-protocol.js +169 -0
- package/dist/core/workflow/billing.d.ts +1 -1
- package/dist/core/workflow/billing.d.ts.map +1 -1
- package/dist/core/workflow/billing.js +7 -1
- package/dist/core/workflow/engine.d.ts.map +1 -1
- package/dist/core/workflow/engine.js +11 -2
- package/dist/core/workflow/harnesses.d.ts +3 -3
- package/dist/core/workflow/harnesses.d.ts.map +1 -1
- package/dist/core/workflow/harnesses.js +8 -17
- package/dist/core/workflow/spawn-claude.d.ts +4 -1
- package/dist/core/workflow/spawn-claude.d.ts.map +1 -1
- package/dist/core/workflow/spawn-claude.js +39 -18
- package/dist/core/workflow/spawn-codex.d.ts +4 -1
- package/dist/core/workflow/spawn-codex.d.ts.map +1 -1
- package/dist/core/workflow/spawn-codex.js +44 -22
- package/dist/core/workflow/spawn-cursor.d.ts +4 -1
- package/dist/core/workflow/spawn-cursor.d.ts.map +1 -1
- package/dist/core/workflow/spawn-cursor.js +35 -16
- package/dist/core/workflow/types.d.ts +9 -2
- package/dist/core/workflow/types.d.ts.map +1 -1
- package/dist/lib/browser/client.d.ts +16 -0
- package/dist/lib/browser/client.d.ts.map +1 -1
- package/dist/lib/browser/client.js +22 -0
- package/dist/lib/browser/index.d.ts +1 -0
- package/dist/lib/browser/index.d.ts.map +1 -1
- package/dist/lib/browser/index.js +1 -0
- package/dist/lib/browser/launch-args.d.ts +21 -0
- package/dist/lib/browser/launch-args.d.ts.map +1 -0
- package/dist/lib/browser/launch-args.js +32 -0
- package/dist/lib/claude-desktop.d.ts +105 -0
- package/dist/lib/claude-desktop.d.ts.map +1 -0
- package/dist/lib/claude-desktop.js +217 -0
- package/dist/lib/docs-lint.d.ts.map +1 -1
- package/dist/lib/docs-lint.js +5 -2
- package/dist/lib/identities/assume.d.ts +51 -0
- package/dist/lib/identities/assume.d.ts.map +1 -0
- package/dist/lib/identities/assume.js +274 -0
- package/dist/lib/identities/index.d.ts +7 -7
- package/dist/lib/identities/index.d.ts.map +1 -1
- package/dist/lib/identities/index.js +24 -24
- package/dist/lib/instructions/templates.d.ts.map +1 -1
- package/dist/lib/instructions/templates.js +15 -2
- package/package.json +12 -1
- package/schemas/config.schema.json +88 -19
- package/src/commander.ts +6 -0
- package/src/commands/agents.ts +280 -14
- package/src/commands/backup.ts +17 -16
- package/src/commands/browse.ts +32 -0
- package/src/commands/claude-desktop.ts +215 -0
- package/src/commands/context.ts +174 -1
- package/src/commands/doctor.ts +2 -3
- package/src/commands/eml.ts +22 -4
- package/src/commands/harness.ts +147 -0
- package/src/commands/presence.ts +111 -5
- package/src/commands/relay.ts +160 -0
- package/src/commands/sync.ts +4 -0
- package/src/commands/workflow.ts +9 -18
- package/src/core/agents/canonical-emit.ts +41 -3
- package/src/core/agents/cli.ts +4 -2
- package/src/core/agents/render/prompt-context.ts +48 -3
- package/src/core/agents/render/session-context.ts +27 -1
- package/src/core/agents/rules/commit-conflict.ts +4 -33
- package/src/core/agents/session-events.ts +15 -39
- package/src/core/agents/state/heartbeat-projector.ts +10 -1
- package/src/core/agents/state/heartbeat-writer.ts +3 -2
- package/src/core/agents/state/names.ts +68 -9
- package/src/core/agents/state/pidmap.ts +59 -2
- package/src/core/agents/state/stale-sweep.ts +6 -11
- package/src/core/config.ts +248 -24
- package/src/core/context/index.ts +575 -0
- package/src/core/harnesses/bench.ts +214 -0
- package/src/core/harnesses/index.ts +31 -0
- package/src/core/harnesses/profiles.ts +141 -0
- package/src/core/harnesses/registry.ts +140 -0
- package/src/core/harnesses/types.ts +90 -0
- package/src/core/hooks/cli.ts +331 -62
- package/src/core/hooks/events/schema.ts +68 -0
- package/src/core/hooks/harness/events.ts +3 -0
- package/src/core/hooks/harness/parse.ts +7 -1
- package/src/core/presence/blob.ts +125 -0
- package/src/core/presence/git.ts +191 -0
- package/src/core/presence/index.ts +274 -0
- package/src/core/presence/relay-client.ts +322 -0
- package/src/core/presence/relay-protocol.ts +246 -0
- package/src/core/workflow/billing.ts +8 -2
- package/src/core/workflow/engine.ts +11 -2
- package/src/core/workflow/harnesses.ts +14 -19
- package/src/core/workflow/spawn-claude.ts +39 -20
- package/src/core/workflow/spawn-codex.ts +47 -28
- package/src/core/workflow/spawn-cursor.ts +37 -18
- package/src/core/workflow/types.ts +9 -2
- package/src/lib/browser/client.ts +37 -0
- package/src/lib/browser/index.ts +1 -0
- package/src/lib/browser/launch-args.ts +33 -0
- package/src/lib/claude-desktop.ts +293 -0
- package/src/lib/docs-lint.ts +5 -2
- package/src/lib/identities/assume.ts +363 -0
- package/src/lib/identities/index.ts +28 -24
- package/src/lib/instructions/templates.ts +16 -2
package/dist/core/hooks/cli.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
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
|
-
|
|
1041
|
-
|
|
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
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
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 =
|
|
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,
|
|
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,
|
|
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"}
|