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
@@ -5,6 +5,14 @@
5
5
  * Layout invariant: 260 entries (10 per starting letter A..Z). Counter N
6
6
  * picks COORD_NAMES[N % 260]; wraps to A at N=260.
7
7
  *
8
+ * Gender invariant: within each 26-name pass the names alternate female/male
9
+ * letter by letter, so every pass is 13 female and 13 male. Five passes start
10
+ * female at A (1, 3, 5, 7, 9) and five start male (2, 4, 6, 8, 10), which gives
11
+ * each letter exactly five names of each gender and the pool 130/130 overall.
12
+ * This exists so a fixed set of 13 female and 13 male portraits can dress one
13
+ * whole pass. Adding or reordering a name must preserve it; the expected
14
+ * pattern is pinned in tests/unit/names-pool.test.ts.
15
+ *
8
16
  * Durable persistence: `.harnery/.name-history` (JSONL, one row per assignment)
9
17
  * + `.harnery/.name-counter` (current counter, atomic temp+rename).
10
18
  *
@@ -22,274 +30,274 @@ import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "
22
30
  import { dirname, join } from "node:path";
23
31
  /** All 260 names. */
24
32
  export const COORD_NAMES = [
25
- // Pass 1
33
+ // Pass 1 — female-first (A=female), alternating to Z
26
34
  "Anna",
27
35
  "Bob",
28
- "Carlos",
29
- "Dalia",
36
+ "Carmen",
37
+ "Dorian",
30
38
  "Erika",
31
39
  "Fred",
32
40
  "Gemma",
33
41
  "Hank",
34
42
  "Imelda",
35
43
  "Jerry",
36
- "Kirk",
37
- "Lee",
38
- "Milton",
44
+ "Karen",
45
+ "Lorenzo",
46
+ "Mindy",
39
47
  "Nate",
40
- "Oscar",
41
- "Patty",
42
- "Quentin",
48
+ "Odette",
49
+ "Peter",
50
+ "Quinn",
43
51
  "Rafael",
44
52
  "Sara",
45
53
  "Tony",
46
- "Ulrik",
47
- "Valerie",
54
+ "Ursula",
55
+ "Vinson",
48
56
  "Whitney",
49
57
  "Xander",
50
58
  "Yara",
51
- "Zara",
52
- // Pass 2
53
- "Adelaide",
59
+ "Zane",
60
+ // Pass 2 — male-first (A=male), alternating to Z
61
+ "Alex",
54
62
  "Bertha",
55
- "Carmen",
56
- "Dorian",
57
- "Edna",
63
+ "Carlos",
64
+ "Dalia",
65
+ "Ernesto",
58
66
  "Francine",
59
- "Greta",
67
+ "Gordon",
60
68
  "Helene",
61
- "Ines",
69
+ "Isaias",
62
70
  "Joyce",
63
- "Karen",
64
- "Lorenzo",
65
- "Mindy",
71
+ "Kirk",
72
+ "Lucia",
73
+ "Milton",
66
74
  "Nadine",
67
- "Odette",
68
- "Paulette",
69
- "Quinn",
75
+ "Oscar",
76
+ "Patty",
77
+ "Quentin",
70
78
  "Rebekah",
71
79
  "Sean",
72
80
  "Tammy",
73
- "Ursula",
74
- "Vinson",
81
+ "Ulrik",
82
+ "Valerie",
75
83
  "Wallace",
76
84
  "Xanthe",
77
85
  "Yusuf",
78
- "Zoe",
79
- // Pass 3
80
- "Alex",
86
+ "Zara",
87
+ // Pass 3 — female-first (A=female), alternating to Z
88
+ "Adelaide",
89
+ "Bruno",
90
+ "Cora",
91
+ "Damon",
92
+ "Edna",
93
+ "Felix",
94
+ "Greta",
95
+ "Hugo",
96
+ "Ines",
97
+ "Jasper",
98
+ "Kaia",
99
+ "Larry",
100
+ "Maxine",
101
+ "Nicholas",
102
+ "Olive",
103
+ "Paxton",
104
+ "Querida",
105
+ "Roman",
106
+ "Stella",
107
+ "Tobias",
108
+ "Una",
109
+ "Virgil",
110
+ "Willow",
111
+ "Xavier",
112
+ "Yolanda",
113
+ "Zephyr",
114
+ // Pass 4 — male-first (A=male), alternating to Z
115
+ "Aaron",
81
116
  "Beatrice",
82
117
  "Cyrus",
83
118
  "Delia",
84
- "Ernesto",
119
+ "Elias",
85
120
  "Florence",
86
- "Gordon",
121
+ "Galileo",
87
122
  "Hester",
88
- "Isaias",
123
+ "Ian",
89
124
  "Jenna",
90
125
  "Klaus",
91
- "Larry",
92
- "Maxine",
93
- "Nicholas",
126
+ "Linda",
127
+ "Marco",
128
+ "Nora",
94
129
  "Otto",
95
- "Peter",
130
+ "Paulette",
96
131
  "Quill",
97
132
  "Renee",
98
- "Stella",
133
+ "Sebastian",
99
134
  "Theresa",
100
135
  "Umberto",
101
- "Virgil",
102
- "Willow",
103
- "Xavier",
104
- "Yolanda",
105
- "Zane",
106
- // Pass 4
136
+ "Vera",
137
+ "Walter",
138
+ "Xena",
139
+ "Yves",
140
+ "Zoe",
141
+ // Pass 5 — female-first (A=female), alternating to Z
107
142
  "Anita",
108
- "Bruno",
109
- "Cora",
110
- "Damon",
143
+ "Beau",
144
+ "Celeste",
145
+ "Dexter",
111
146
  "Edith",
112
- "Felix",
147
+ "Fitz",
113
148
  "Gloria",
114
- "Holly",
149
+ "Hadley",
115
150
  "Iris",
116
- "Jasper",
117
- "Kaia",
118
- "Linda",
119
- "Marco",
120
- "Nora",
121
- "Olive",
122
- "Petra",
123
- "Querida",
124
- "Roman",
125
- "Sebastian",
126
- "Tobias",
127
- "Una",
128
- "Vera",
129
- "Walter",
130
- "Xena",
131
- "Yusra",
132
- "Zelda",
133
- // Pass 5
134
- "Aaron",
135
- "Bonnie",
136
- "Caleb",
137
- "Daphne",
138
- "Elias",
139
- "Fiona",
140
- "Galileo",
141
- "Hugo",
142
- "Ian",
143
151
  "Jude",
144
- "Knox",
152
+ "Kira",
145
153
  "Leo",
146
154
  "Maya",
147
155
  "Nash",
148
- "Owen",
149
- "Paxton",
156
+ "Olga",
157
+ "Phillip",
150
158
  "Quetzal",
151
- "Rosa",
159
+ "Royce",
152
160
  "Sage",
153
- "Talia",
154
- "Uri",
161
+ "Trent",
162
+ "Uma",
155
163
  "Vincent",
156
- "Wesley",
157
- "Ximena",
164
+ "Wynne",
165
+ "Xerxes",
158
166
  "Yvette",
159
- "Zephyr",
160
- // Pass 6
161
- "Astrid",
162
- "Beau",
163
- "Celeste",
164
- "Dexter",
167
+ "Zoltan",
168
+ // Pass 6 — male-first (A=male), alternating to Z
169
+ "Andre",
170
+ "Bonnie",
171
+ "Caleb",
172
+ "Daphne",
165
173
  "Ezra",
166
- "Fitz",
167
- "Genevieve",
168
- "Hadley",
169
- "Imogen",
170
- "Joaquin",
171
- "Kira",
174
+ "Fiona",
175
+ "Gibson",
176
+ "Holly",
177
+ "Ivan",
178
+ "Juno",
179
+ "Knox",
172
180
  "Lila",
173
181
  "Mason",
174
182
  "Nila",
175
- "Olga",
176
- "Pearl",
183
+ "Owen",
184
+ "Petra",
177
185
  "Quincy",
178
- "Royce",
186
+ "Rosa",
179
187
  "Sterling",
180
- "Trent",
181
- "Ulysses",
188
+ "Talia",
189
+ "Uri",
182
190
  "Violet",
183
- "Wynne",
184
- "Xerxes",
185
- "Yael",
186
- "Zinnia",
187
- // Pass 7
188
- "Amelia",
189
- "Bianca",
190
- "Cody",
191
- "Dahlia",
191
+ "Wesley",
192
+ "Ximena",
193
+ "Yuri",
194
+ "Zelda",
195
+ // Pass 7 — female-first (A=female), alternating to Z
196
+ "Astrid",
197
+ "Boris",
198
+ "Cassidy",
199
+ "Davis",
192
200
  "Esme",
193
- "Fern",
194
- "Greer",
195
- "Harriet",
196
- "Ivan",
197
- "Juno",
198
- "Kendrick",
201
+ "Forrest",
202
+ "Genevieve",
203
+ "Henry",
204
+ "Imogen",
205
+ "Joaquin",
206
+ "Kestrel",
199
207
  "Luther",
200
208
  "Margot",
201
209
  "Nigel",
202
- "Orion",
203
- "Phillip",
210
+ "Ophelia",
211
+ "Percy",
204
212
  "Quenby",
205
213
  "Reagan",
206
214
  "Sienna",
207
- "Tessa",
208
- "Uma",
209
- "Vesper",
210
- "Watson",
211
- "Xiomara",
212
- "Yuri",
213
- "Zoltan",
214
- // Pass 8
215
- "Andre",
216
- "Boris",
217
- "Cassidy",
218
- "Davis",
215
+ "Truman",
216
+ "Undine",
217
+ "Voss",
218
+ "Wren",
219
+ "Xan",
220
+ "Yael",
221
+ "Zia",
222
+ // Pass 8 — male-first (A=male), alternating to Z
223
+ "Arthur",
224
+ "Bianca",
225
+ "Cody",
226
+ "Dahlia",
219
227
  "Evander",
220
- "Forrest",
221
- "Gibson",
222
- "Henry",
223
- "Irene",
224
- "Justus",
225
- "Kasper",
228
+ "Fern",
229
+ "Gustavo",
230
+ "Harriet",
231
+ "Ira",
232
+ "Josephine",
233
+ "Kendrick",
226
234
  "Lainey",
227
235
  "Miles",
228
236
  "Naomi",
229
- "Ophelia",
230
- "Phoebe",
237
+ "Orion",
238
+ "Pearl",
231
239
  "Quark",
232
240
  "Rylie",
233
241
  "Saul",
234
- "Truman",
235
- "Ulrich",
236
- "Voss",
237
- "Winifred",
238
- "Xuxa",
239
- "Yvonne",
240
- "Zia",
241
- // Pass 9
242
- "Aria",
243
- "Brenda",
244
- "Crispin",
245
- "Dolores",
242
+ "Tessa",
243
+ "Ulysses",
244
+ "Vesper",
245
+ "Wyatt",
246
+ "Xiomara",
247
+ "Yancy",
248
+ "Zinnia",
249
+ // Pass 9 — female-first (A=female), alternating to Z
250
+ "Amelia",
251
+ "Barnaby",
252
+ "Calliope",
253
+ "Drake",
246
254
  "Estelle",
247
- "Felicity",
248
- "Goldie",
249
- "Hazel",
250
- "Ira",
251
- "Jovi",
252
- "Kestrel",
253
- "Lyric",
255
+ "Foster",
256
+ "Greer",
257
+ "Hollis",
258
+ "Irene",
259
+ "Jericho",
260
+ "Klara",
261
+ "Logan",
254
262
  "Mavis",
255
263
  "Nico",
256
- "Otis",
257
- "Percy",
258
- "Querubin",
264
+ "Oakley",
265
+ "Pascal",
266
+ "Quito",
259
267
  "Rhett",
260
268
  "Scout",
261
- "Tatum",
269
+ "Theron",
262
270
  "Unity",
263
- "Vivian",
264
- "Wyatt",
265
- "Xan",
266
- "Yancy",
271
+ "Vance",
272
+ "Winifred",
273
+ "Xola",
274
+ "Yvonne",
267
275
  "Zev",
268
- // Pass 10
276
+ // Pass 10 — male-first (A=male), alternating to Z
269
277
  "Atticus",
270
- "Barnaby",
271
- "Calliope",
272
- "Drake",
278
+ "Brenda",
279
+ "Crispin",
280
+ "Dolores",
273
281
  "Eustace",
274
- "Foster",
282
+ "Felicity",
275
283
  "Granger",
276
- "Hollis",
277
- "Indira",
278
- "Jericho",
279
- "Kaleb",
280
- "Logan",
284
+ "Hazel",
285
+ "Idris",
286
+ "Jovi",
287
+ "Kasper",
288
+ "Lyric",
281
289
  "Magnus",
282
290
  "Noor",
283
- "Oakley",
284
- "Posy",
285
- "Quito",
291
+ "Otis",
292
+ "Phoebe",
293
+ "Querubin",
286
294
  "Rosalind",
287
- "Sloane",
288
- "Theron",
295
+ "Silas",
296
+ "Tatum",
289
297
  "Upton",
290
- "Vance",
298
+ "Vivian",
291
299
  "Wendell",
292
- "Xola",
300
+ "Xuxa",
293
301
  "Yann",
294
302
  "Zora",
295
303
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"stale-sweep.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/state/stale-sweep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAoDH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG;IAC7C,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CA6IA"}
1
+ {"version":3,"file":"stale-sweep.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/state/stale-sweep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuEH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG;IAC7C,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CA8IA"}
@@ -12,6 +12,7 @@
12
12
  import { existsSync, readdirSync, readFileSync, statSync, unlinkSync } from "node:fs";
13
13
  import { join } from "node:path";
14
14
  import { coordFreshnessSeconds } from "../../config.js";
15
+ import { writeProducerDiagnosticV3 } from "../../events/v3/producers/intake.js";
15
16
  import { recordLiveSweepObservationV3 } from "../live-lifecycle-v3.js";
16
17
  /** platform → adapter, for the swept-event envelope (mirrors heartbeat-writer's adapterOf). */
17
18
  function adapterFromPlatform(platform) {
@@ -21,7 +22,15 @@ function adapterFromPlatform(platform) {
21
22
  return "codex";
22
23
  return "claude-code";
23
24
  }
24
- /** Record the sweep before deleting authority state. V3 ambiguity fails closed. */
25
+ /**
26
+ * Record the sweep before deleting disposable cache state.
27
+ *
28
+ * A joinable generation owns the canonical provisional observation. Once that
29
+ * generation is terminal or unavailable, it must not be reopened merely to
30
+ * authorize cache housekeeping. Preserve the failed observation in the V3
31
+ * diagnostics spool instead. If neither durable record can be written, fail
32
+ * closed and keep the file.
33
+ */
25
34
  function emitSwept(coordRoot, instanceId, adapter, sessionId, reason, ageSecs) {
26
35
  try {
27
36
  recordLiveSweepObservationV3({
@@ -38,8 +47,16 @@ function emitSwept(coordRoot, instanceId, adapter, sessionId, reason, ageSecs) {
38
47
  });
39
48
  return true;
40
49
  }
41
- catch {
42
- return false;
50
+ catch (error) {
51
+ return Boolean(writeProducerDiagnosticV3(coordRoot, "heartbeat_sweep_unrecorded", {
52
+ adapter,
53
+ instance_id: instanceId,
54
+ signal: "lifecycle.sweep_observed",
55
+ reason: error instanceof Error ? error.message : String(error),
56
+ state: "cache_cleanup_pending",
57
+ observation: reason,
58
+ age_ms: Math.max(0, (ageSecs ?? 0) * 1_000),
59
+ }));
43
60
  }
44
61
  }
45
62
  /** File mtime in epoch-seconds, or +Infinity if it can't be read (treat as fresh → don't reap). */
@@ -70,8 +87,9 @@ export function staleSweep(coordRoot) {
70
87
  // a transient (mid-write / partial read), and deleting it would nuke a
71
88
  // LIVE agent's heartbeat, the worst possible outcome. So: never reap a
72
89
  // fresh file on a content failure.
73
- // Every deletion now emits health.heartbeat_swept so the lifecycle is
74
- // auditable (sweeps used to be silent; see the swept-event schema doc).
90
+ // Every deletion leaves durable audit evidence. A joinable generation gets
91
+ // lifecycle.sweep_observed; a terminal or unavailable generation gets a
92
+ // heartbeat_sweep_unrecorded producer diagnostic without being resurrected.
75
93
  const liveInstanceIds = new Set();
76
94
  const d = join(coordRoot, ".harnery", "active");
77
95
  if (existsSync(d)) {
@@ -0,0 +1,5 @@
1
+ /** Read-only artifact layout constants safe for browser-side server modules. */
2
+ export declare const ARTIFACTS_DIR = ".harnery/artifacts";
3
+ export declare const ARTIFACT_MANIFEST = ".harnery-artifact.json";
4
+ export declare const ARTIFACT_SCHEMA_VERSION: 1;
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/artifacts/constants.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,eAAO,MAAM,aAAa,uBAAuB,CAAC;AAClD,eAAO,MAAM,iBAAiB,2BAA2B,CAAC;AAC1D,eAAO,MAAM,uBAAuB,EAAG,CAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Read-only artifact layout constants safe for browser-side server modules. */
2
+ export const ARTIFACTS_DIR = ".harnery/artifacts";
3
+ export const ARTIFACT_MANIFEST = ".harnery-artifact.json";
4
+ export const ARTIFACT_SCHEMA_VERSION = 1;
@@ -7,9 +7,8 @@
7
7
  * managed unit with a small manifest. Cleanup fails closed: only a valid,
8
8
  * expired, inactive, untracked managed unit is deletable.
9
9
  */
10
- export declare const ARTIFACTS_DIR: string;
11
- export declare const ARTIFACT_MANIFEST = ".harnery-artifact.json";
12
- export declare const ARTIFACT_SCHEMA_VERSION: 1;
10
+ import { ARTIFACT_SCHEMA_VERSION } from "./constants.js";
11
+ export { ARTIFACT_MANIFEST, ARTIFACT_SCHEMA_VERSION, ARTIFACTS_DIR } from "./constants.js";
13
12
  export interface ArtifactActor {
14
13
  instance_id: string;
15
14
  session_id?: string;
@@ -42,6 +41,7 @@ export interface ArtifactInventoryEntry {
42
41
  artifact_id: string | null;
43
42
  slug: string | null;
44
43
  created_at: string | null;
44
+ last_modified_at: string | null;
45
45
  expires_at: string | null;
46
46
  owner_instance_id: string | null;
47
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/artifacts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/artifacts/index.ts"],"names":[],"mappings":"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"}