harnery 0.34.1 → 0.35.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 (212) hide show
  1. package/dist/commander.d.ts.map +1 -1
  2. package/dist/commander.js +2 -0
  3. package/dist/commands/agents.d.ts +15 -4
  4. package/dist/commands/agents.d.ts.map +1 -1
  5. package/dist/commands/agents.js +89 -175
  6. package/dist/commands/browse.d.ts.map +1 -1
  7. package/dist/commands/browse.js +26 -2
  8. package/dist/commands/decision.d.ts.map +1 -1
  9. package/dist/commands/decision.js +2 -2
  10. package/dist/commands/events.d.ts.map +1 -1
  11. package/dist/commands/events.js +18 -1
  12. package/dist/commands/presence.d.ts.map +1 -1
  13. package/dist/commands/presence.js +2 -2
  14. package/dist/commands/semantic.d.ts +4 -0
  15. package/dist/commands/semantic.d.ts.map +1 -0
  16. package/dist/commands/semantic.js +147 -0
  17. package/dist/commands/web.d.ts.map +1 -1
  18. package/dist/commands/web.js +17 -0
  19. package/dist/core/agents/canonical-emit.d.ts +3 -0
  20. package/dist/core/agents/canonical-emit.d.ts.map +1 -1
  21. package/dist/core/agents/canonical-emit.js +12 -0
  22. package/dist/core/agents/claim-path.d.ts +11 -0
  23. package/dist/core/agents/claim-path.d.ts.map +1 -0
  24. package/dist/core/agents/claim-path.js +22 -0
  25. package/dist/core/agents/coord-client.d.ts +29 -3
  26. package/dist/core/agents/coord-client.d.ts.map +1 -1
  27. package/dist/core/agents/coord-client.js +88 -9
  28. package/dist/core/agents/live-authority-v3.d.ts.map +1 -1
  29. package/dist/core/agents/live-authority-v3.js +1 -3
  30. package/dist/core/agents/live-lifecycle-v3.js +3 -3
  31. package/dist/core/agents/live-observation-v3.d.ts.map +1 -1
  32. package/dist/core/agents/live-observation-v3.js +2 -2
  33. package/dist/core/agents/render/prompt-context.js +12 -10
  34. package/dist/core/agents/rules/stop-hook.d.ts.map +1 -1
  35. package/dist/core/agents/rules/stop-hook.js +23 -11
  36. package/dist/core/agents/session-name-display.d.ts +1 -0
  37. package/dist/core/agents/session-name-display.d.ts.map +1 -1
  38. package/dist/core/agents/session-name-display.js +8 -1
  39. package/dist/core/agents/state/heartbeat-reader.d.ts +46 -0
  40. package/dist/core/agents/state/heartbeat-reader.d.ts.map +1 -0
  41. package/dist/core/agents/state/heartbeat-reader.js +25 -0
  42. package/dist/core/agents/state/heartbeat-writer.d.ts +3 -48
  43. package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
  44. package/dist/core/agents/state/heartbeat-writer.js +16 -34
  45. package/dist/core/agents/state/live-coordination-view.d.ts +1 -1
  46. package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -1
  47. package/dist/core/agents/state/live-coordination-view.js +25 -1
  48. package/dist/core/agents/state/names.d.ts +9 -1
  49. package/dist/core/agents/state/names.d.ts.map +1 -1
  50. package/dist/core/agents/state/names.js +190 -182
  51. package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
  52. package/dist/core/agents/state/stale-sweep.js +23 -5
  53. package/dist/core/artifacts/constants.d.ts +5 -0
  54. package/dist/core/artifacts/constants.d.ts.map +1 -0
  55. package/dist/core/artifacts/constants.js +4 -0
  56. package/dist/core/artifacts/index.d.ts +3 -3
  57. package/dist/core/artifacts/index.d.ts.map +1 -1
  58. package/dist/core/artifacts/index.js +50 -7
  59. package/dist/core/events/v3/base-contract.d.ts +795 -0
  60. package/dist/core/events/v3/base-contract.d.ts.map +1 -1
  61. package/dist/core/events/v3/base-contract.js +33 -0
  62. package/dist/core/events/v3/capabilities.d.ts +11 -0
  63. package/dist/core/events/v3/capabilities.d.ts.map +1 -1
  64. package/dist/core/events/v3/capabilities.js +23 -0
  65. package/dist/core/events/v3/generated.d.ts +1 -1
  66. package/dist/core/events/v3/generated.js +1 -1
  67. package/dist/core/events/v3/index.d.ts +4 -3
  68. package/dist/core/events/v3/index.d.ts.map +1 -1
  69. package/dist/core/events/v3/index.js +4 -3
  70. package/dist/core/events/v3/latency.d.ts +31 -1
  71. package/dist/core/events/v3/latency.d.ts.map +1 -1
  72. package/dist/core/events/v3/latency.js +127 -3
  73. package/dist/core/events/v3/live-routing.d.ts +30 -0
  74. package/dist/core/events/v3/live-routing.d.ts.map +1 -1
  75. package/dist/core/events/v3/live-routing.js +109 -1
  76. package/dist/core/events/v3/producers/command-recorder.d.ts.map +1 -1
  77. package/dist/core/events/v3/producers/command-recorder.js +10 -1
  78. package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -1
  79. package/dist/core/events/v3/producers/coordination-recorder.js +14 -3
  80. package/dist/core/events/v3/producers/hook-base.d.ts +17 -1
  81. package/dist/core/events/v3/producers/hook-base.d.ts.map +1 -1
  82. package/dist/core/events/v3/producers/hook-base.js +82 -1
  83. package/dist/core/events/v3/producers/intake.d.ts +6 -0
  84. package/dist/core/events/v3/producers/intake.d.ts.map +1 -1
  85. package/dist/core/events/v3/producers/intake.js +11 -0
  86. package/dist/core/events/v3/producers/recorder.d.ts +62 -0
  87. package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
  88. package/dist/core/events/v3/producers/recorder.js +654 -18
  89. package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts +51 -0
  90. package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts.map +1 -0
  91. package/dist/core/events/v3/runtime-telemetry-capabilities.js +54 -0
  92. package/dist/core/events/v3/turn-telemetry.d.ts +9 -0
  93. package/dist/core/events/v3/turn-telemetry.d.ts.map +1 -1
  94. package/dist/core/hooks/adapter/parse.d.ts +3 -0
  95. package/dist/core/hooks/adapter/parse.d.ts.map +1 -1
  96. package/dist/core/hooks/adapter/parse.js +14 -0
  97. package/dist/core/hooks/adapter/runtime-telemetry.d.ts +119 -0
  98. package/dist/core/hooks/adapter/runtime-telemetry.d.ts.map +1 -0
  99. package/dist/core/hooks/adapter/runtime-telemetry.js +568 -0
  100. package/dist/core/hooks/cli.js +111 -36
  101. package/dist/core/hooks/remediation-cap.d.ts +34 -0
  102. package/dist/core/hooks/remediation-cap.d.ts.map +1 -0
  103. package/dist/core/hooks/remediation-cap.js +71 -0
  104. package/dist/core/hooks/resolve/transcript.d.ts +25 -9
  105. package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
  106. package/dist/core/hooks/resolve/transcript.js +22 -10
  107. package/dist/core/semantic/adapters.d.ts +34 -0
  108. package/dist/core/semantic/adapters.d.ts.map +1 -0
  109. package/dist/core/semantic/adapters.js +222 -0
  110. package/dist/core/semantic/contract.d.ts +588 -0
  111. package/dist/core/semantic/contract.d.ts.map +1 -0
  112. package/dist/core/semantic/contract.js +230 -0
  113. package/dist/core/semantic/evidence.d.ts +11 -0
  114. package/dist/core/semantic/evidence.d.ts.map +1 -0
  115. package/dist/core/semantic/evidence.js +262 -0
  116. package/dist/core/semantic/index.d.ts +10 -0
  117. package/dist/core/semantic/index.d.ts.map +1 -0
  118. package/dist/core/semantic/index.js +9 -0
  119. package/dist/core/semantic/once.d.ts +33 -0
  120. package/dist/core/semantic/once.d.ts.map +1 -0
  121. package/dist/core/semantic/once.js +293 -0
  122. package/dist/core/semantic/prompt.d.ts +12 -0
  123. package/dist/core/semantic/prompt.d.ts.map +1 -0
  124. package/dist/core/semantic/prompt.js +70 -0
  125. package/dist/core/semantic/scheduler.d.ts +16 -0
  126. package/dist/core/semantic/scheduler.d.ts.map +1 -0
  127. package/dist/core/semantic/scheduler.js +67 -0
  128. package/dist/core/semantic/service-status.d.ts +31 -0
  129. package/dist/core/semantic/service-status.d.ts.map +1 -0
  130. package/dist/core/semantic/service-status.js +84 -0
  131. package/dist/core/semantic/service.d.ts +51 -0
  132. package/dist/core/semantic/service.d.ts.map +1 -0
  133. package/dist/core/semantic/service.js +470 -0
  134. package/dist/core/semantic/storage.d.ts +71 -0
  135. package/dist/core/semantic/storage.d.ts.map +1 -0
  136. package/dist/core/semantic/storage.js +179 -0
  137. package/dist/core/semantic/validate.d.ts +16 -0
  138. package/dist/core/semantic/validate.d.ts.map +1 -0
  139. package/dist/core/semantic/validate.js +174 -0
  140. package/dist/lib/browser/client.d.ts +11 -0
  141. package/dist/lib/browser/client.d.ts.map +1 -1
  142. package/dist/lib/browser/client.js +13 -0
  143. package/dist/lib/browser/index.d.ts +1 -0
  144. package/dist/lib/browser/index.d.ts.map +1 -1
  145. package/dist/lib/browser/standalone-html.d.ts +25 -0
  146. package/dist/lib/browser/standalone-html.d.ts.map +1 -0
  147. package/dist/lib/browser/standalone-html.js +284 -0
  148. package/dist/lib/instructions/apply.d.ts.map +1 -1
  149. package/dist/lib/instructions/apply.js +1 -0
  150. package/dist/lib/instructions/templates.d.ts +2 -0
  151. package/dist/lib/instructions/templates.d.ts.map +1 -1
  152. package/dist/lib/instructions/templates.js +144 -4
  153. package/package.json +6 -1
  154. package/schemas/event-v3.schema.json +2758 -478
  155. package/src/commander.ts +2 -0
  156. package/src/commands/agents.ts +102 -167
  157. package/src/commands/browse.ts +25 -2
  158. package/src/commands/decision.ts +8 -2
  159. package/src/commands/events.ts +21 -1
  160. package/src/commands/presence.ts +7 -2
  161. package/src/commands/semantic.ts +179 -0
  162. package/src/commands/web.ts +15 -0
  163. package/src/core/agents/canonical-emit.ts +15 -0
  164. package/src/core/agents/claim-path.ts +23 -0
  165. package/src/core/agents/coord-client.ts +92 -8
  166. package/src/core/agents/live-authority-v3.ts +1 -4
  167. package/src/core/agents/live-lifecycle-v3.ts +8 -3
  168. package/src/core/agents/live-observation-v3.ts +7 -2
  169. package/src/core/agents/render/prompt-context.ts +13 -10
  170. package/src/core/agents/rules/stop-hook.ts +24 -11
  171. package/src/core/agents/session-name-display.ts +9 -1
  172. package/src/core/agents/state/heartbeat-reader.ts +69 -0
  173. package/src/core/agents/state/heartbeat-writer.ts +20 -84
  174. package/src/core/agents/state/live-coordination-view.ts +26 -1
  175. package/src/core/agents/state/names.ts +190 -182
  176. package/src/core/agents/state/stale-sweep.ts +25 -5
  177. package/src/core/artifacts/constants.ts +4 -0
  178. package/src/core/artifacts/index.ts +49 -7
  179. package/src/core/events/v3/base-contract.ts +39 -0
  180. package/src/core/events/v3/capabilities.ts +34 -0
  181. package/src/core/events/v3/generated.ts +1 -1
  182. package/src/core/events/v3/index.ts +21 -0
  183. package/src/core/events/v3/latency.ts +213 -2
  184. package/src/core/events/v3/live-routing.ts +120 -1
  185. package/src/core/events/v3/producers/command-recorder.ts +10 -1
  186. package/src/core/events/v3/producers/coordination-recorder.ts +17 -5
  187. package/src/core/events/v3/producers/hook-base.ts +115 -1
  188. package/src/core/events/v3/producers/intake.ts +18 -0
  189. package/src/core/events/v3/producers/recorder.ts +856 -21
  190. package/src/core/events/v3/runtime-telemetry-capabilities.ts +137 -0
  191. package/src/core/events/v3/turn-telemetry.ts +10 -0
  192. package/src/core/hooks/adapter/parse.ts +16 -0
  193. package/src/core/hooks/adapter/runtime-telemetry.ts +805 -0
  194. package/src/core/hooks/cli.ts +123 -39
  195. package/src/core/hooks/remediation-cap.ts +77 -0
  196. package/src/core/hooks/resolve/transcript.ts +37 -11
  197. package/src/core/semantic/adapters.ts +293 -0
  198. package/src/core/semantic/contract.ts +298 -0
  199. package/src/core/semantic/evidence.ts +336 -0
  200. package/src/core/semantic/index.ts +127 -0
  201. package/src/core/semantic/once.ts +410 -0
  202. package/src/core/semantic/prompt.ts +84 -0
  203. package/src/core/semantic/scheduler.ts +107 -0
  204. package/src/core/semantic/service-status.ts +118 -0
  205. package/src/core/semantic/service.ts +580 -0
  206. package/src/core/semantic/storage.ts +286 -0
  207. package/src/core/semantic/validate.ts +212 -0
  208. package/src/lib/browser/client.ts +21 -0
  209. package/src/lib/browser/index.ts +4 -0
  210. package/src/lib/browser/standalone-html.ts +312 -0
  211. package/src/lib/instructions/apply.ts +1 -0
  212. package/src/lib/instructions/templates.ts +149 -4
@@ -0,0 +1,137 @@
1
+ import type { Adapter } from "../../adapter.ts";
2
+ import {
3
+ adapterSignalSupportV3,
4
+ type CapabilitySupportV3,
5
+ type CursorExecutionModeV3,
6
+ } from "./capabilities.ts";
7
+
8
+ export type RuntimeTelemetryChannelV3 =
9
+ | "context_usage"
10
+ | "wait_spans"
11
+ | "wait_completeness"
12
+ | "response_latency"
13
+ | "inference_timing";
14
+
15
+ export type RuntimeTelemetryCompletenessV3 = "exact" | "lower_bound" | "unknown";
16
+
17
+ export interface RuntimeTelemetryCapabilityValueV3 {
18
+ support: Exclude<CapabilitySupportV3, "unsupported">;
19
+ source: string;
20
+ completeness: RuntimeTelemetryCompletenessV3;
21
+ }
22
+
23
+ export type RuntimeTelemetryCapabilityObservationV3 =
24
+ | {
25
+ state: "observed";
26
+ value: RuntimeTelemetryCapabilityValueV3;
27
+ attestation: "native" | "derived";
28
+ confidence: "exact" | "high";
29
+ }
30
+ | { state: "expected_but_missing"; capability: string; reason: string }
31
+ | { state: "unsupported"; capability: string };
32
+
33
+ export type RuntimeContextCapabilityEvidenceV3 =
34
+ | {
35
+ state: "observed";
36
+ source: string;
37
+ attestation: "native" | "derived";
38
+ confidence: "exact" | "high";
39
+ }
40
+ | { state: "partial"; reason: string }
41
+ | { state: "unsupported" };
42
+
43
+ export interface RuntimeTelemetryCapabilityEvidenceV3 {
44
+ adapter: Adapter;
45
+ cursor_mode?: CursorExecutionModeV3;
46
+ context: RuntimeContextCapabilityEvidenceV3;
47
+ canonical_turn_boundaries: boolean;
48
+ independent_wait_completeness?: boolean;
49
+ }
50
+
51
+ export type RuntimeTelemetryCapabilitiesV3 = Record<
52
+ RuntimeTelemetryChannelV3,
53
+ RuntimeTelemetryCapabilityObservationV3
54
+ >;
55
+
56
+ /**
57
+ * Resolve the telemetry support that one runtime session can actually prove.
58
+ *
59
+ * This is deliberately separate from AdapterCapabilityProfileV3. The static
60
+ * profile gates the event contract; this projection describes effective
61
+ * session evidence without moving a genesis-approved digest when a local
62
+ * source is missing, late, or unreadable.
63
+ */
64
+ export function effectiveRuntimeTelemetryCapabilitiesV3(
65
+ evidence: RuntimeTelemetryCapabilityEvidenceV3,
66
+ ): RuntimeTelemetryCapabilitiesV3 {
67
+ return {
68
+ context_usage: contextCapability(evidence.context),
69
+ wait_spans: waitSpanCapability(evidence.adapter, evidence.cursor_mode),
70
+ wait_completeness: evidence.independent_wait_completeness
71
+ ? observed("native", "runtime.wait_aggregate", "exact", "native", "exact")
72
+ : unsupported("wait_turn_completeness"),
73
+ response_latency: evidence.canonical_turn_boundaries
74
+ ? observed("derived", "canonical.event_clocks", "exact", "derived", "exact")
75
+ : missing("response_latency", "turn_boundaries_not_delivered"),
76
+ inference_timing: unsupported("provider_inference_timing"),
77
+ };
78
+ }
79
+
80
+ function contextCapability(
81
+ evidence: RuntimeContextCapabilityEvidenceV3,
82
+ ): RuntimeTelemetryCapabilityObservationV3 {
83
+ if (evidence.state === "observed") {
84
+ return observed(
85
+ evidence.attestation === "native" ? "native" : "derived",
86
+ evidence.source,
87
+ "exact",
88
+ evidence.attestation,
89
+ evidence.confidence,
90
+ );
91
+ }
92
+ if (evidence.state === "partial") {
93
+ return missing("context_usage", evidence.reason);
94
+ }
95
+ return unsupported("context_usage");
96
+ }
97
+
98
+ function waitSpanCapability(
99
+ adapter: Adapter,
100
+ cursorMode: CursorExecutionModeV3 | undefined,
101
+ ): RuntimeTelemetryCapabilityObservationV3 {
102
+ if (adapter === "cursor" && cursorMode === "cloud") {
103
+ return unsupported("wait_span_delivery");
104
+ }
105
+ const support = adapterSignalSupportV3(adapter, "permission");
106
+ if (support === "unsupported") return unsupported("wait_span_delivery");
107
+ return observed(
108
+ support,
109
+ adapter === "cursor" ? "cursor.permission_hooks" : `${adapter}.permission_hooks`,
110
+ "lower_bound",
111
+ support === "native" ? "native" : "derived",
112
+ support === "native" ? "exact" : "high",
113
+ );
114
+ }
115
+
116
+ function observed(
117
+ support: Exclude<CapabilitySupportV3, "unsupported">,
118
+ source: string,
119
+ completeness: RuntimeTelemetryCompletenessV3,
120
+ attestation: "native" | "derived",
121
+ confidence: "exact" | "high",
122
+ ): RuntimeTelemetryCapabilityObservationV3 {
123
+ return {
124
+ state: "observed",
125
+ value: { support, source, completeness },
126
+ attestation,
127
+ confidence,
128
+ };
129
+ }
130
+
131
+ function missing(capability: string, reason: string): RuntimeTelemetryCapabilityObservationV3 {
132
+ return { state: "expected_but_missing", capability, reason };
133
+ }
134
+
135
+ function unsupported(capability: string): RuntimeTelemetryCapabilityObservationV3 {
136
+ return { state: "unsupported", capability };
137
+ }
@@ -23,6 +23,16 @@ export interface TurnTelemetryV3 {
23
23
  usage: TelemetryObservationV3<TurnUsageV3>;
24
24
  inference: TelemetryObservationV3<TurnInferenceV3>;
25
25
  context: TelemetryObservationV3<ContextMeasurementV3>;
26
+ /** Private producer metadata; the context event persists only its safe fields. */
27
+ context_provenance?: ContextTelemetryProvenanceV3;
28
+ }
29
+
30
+ export interface ContextTelemetryProvenanceV3 {
31
+ source_event: string;
32
+ source_witness?: string;
33
+ runtime_version?: string;
34
+ attestation: "native" | "derived";
35
+ confidence: "exact" | "high";
26
36
  }
27
37
 
28
38
  export type TurnTelemetryCapabilitySupportV3 = Partial<
@@ -25,6 +25,9 @@ export interface ParsedPayload {
25
25
  cwd?: string;
26
26
  pid?: number;
27
27
  model?: string;
28
+ /** CC stamps the effective effort level ({level}) on tool hooks and Stop;
29
+ * absent on SessionStart/UserPromptSubmit and on models with no dial. */
30
+ effort?: string;
28
31
  source?: string; // SessionStart: "startup" | "resume" | …
29
32
  prompt?: string; // UserPromptSubmit / beforeSubmitPrompt
30
33
  agent_message?: string; // Cursor PreToolUse: user-visible assistant text before the tool
@@ -92,6 +95,7 @@ export function parsePayload(raw: string, adapter: Adapter): ParsedPayload | nul
92
95
  cwd: pickStr(json, "cwd"),
93
96
  pid: pickNum(json, "pid"),
94
97
  model: pickStr(json, "model"),
98
+ effort: pickEffortLevel(json),
95
99
  source: pickStr(json, "source"),
96
100
  prompt: pickStr(json, "prompt"),
97
101
  agent_message: pickStr(json, "agent_message"),
@@ -108,6 +112,18 @@ export function parsePayload(raw: string, adapter: Adapter): ParsedPayload | nul
108
112
  };
109
113
  }
110
114
 
115
+ /** CC sends `effort` as an object ({"level":"high"}); tolerate a bare string
116
+ * in case an adapter flattens it. */
117
+ function pickEffortLevel(json: Record<string, unknown>): string | undefined {
118
+ const effort = json.effort;
119
+ if (typeof effort === "string" && effort.length > 0) return effort;
120
+ if (typeof effort === "object" && effort !== null && !Array.isArray(effort)) {
121
+ const level = (effort as Record<string, unknown>).level;
122
+ if (typeof level === "string" && level.length > 0) return level;
123
+ }
124
+ return undefined;
125
+ }
126
+
111
127
  /**
112
128
  * Cursor prefixes cloud/private-worker conversations with `bc-`. Current
113
129
  * sessionStart payloads also expose `is_background_agent`; either native