@wacando/agent 2.0.0-rc.1 → 2.0.1

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 (67) hide show
  1. package/THIRD-PARTY-NOTICES.txt +3 -3
  2. package/docs/AGENT_TOOLS.md +18 -0
  3. package/docs/RELEASE.md +33 -6
  4. package/package.json +5 -5
  5. package/packages/onboarding/version.mjs +1 -1
  6. package/packages/runtime/conversations.mjs +53 -4
  7. package/packages/runtime/recovery.mjs +49 -0
  8. package/plugins/wacando/.codex-plugin/plugin.json +1 -1
  9. package/plugins/wacando-claude/.claude-plugin/plugin.json +1 -1
  10. package/plugins/wacando-cursor/.cursor-plugin/plugin.json +1 -1
  11. package/provenance.json +6 -6
  12. package/docs/evidence/issue-2/DOCUMENTARY_FOLLOWUP.md +0 -107
  13. package/docs/evidence/issue-2/QUALIFICATION_LINK_FOLLOWUP.md +0 -105
  14. package/docs/evidence/issue-2/REVIEW_FOLLOWUP.md +0 -93
  15. package/docs/evidence/issue-2/baseline.txt +0 -76
  16. package/docs/evidence/issue-2/check-mcp.txt +0 -14
  17. package/docs/evidence/issue-2/check.txt +0 -376
  18. package/docs/evidence/issue-2/codex-exec-help.json +0 -11
  19. package/docs/evidence/issue-2/codex-help.json +0 -10
  20. package/docs/evidence/issue-2/cursor-help.json +0 -10
  21. package/docs/evidence/issue-2/documentary-check.txt +0 -376
  22. package/docs/evidence/issue-2/documentary-validation.txt +0 -7
  23. package/docs/evidence/issue-2/local-build-api.txt +0 -203
  24. package/docs/evidence/issue-2/local-build-first.txt +0 -87
  25. package/docs/evidence/issue-2/local-build-policy-first.txt +0 -34
  26. package/docs/evidence/issue-2/local-build-policy.txt +0 -153
  27. package/docs/evidence/issue-2/local-build-web.txt +0 -219
  28. package/docs/evidence/issue-2/local-check-mcp.txt +0 -14
  29. package/docs/evidence/issue-2/local-check.txt +0 -376
  30. package/docs/evidence/issue-2/local-codex-probe.txt +0 -3
  31. package/docs/evidence/issue-2/local-codex-probe2.txt +0 -3
  32. package/docs/evidence/issue-2/local-codex.txt +0 -2
  33. package/docs/evidence/issue-2/local-cursor-probe.txt +0 -1
  34. package/docs/evidence/issue-2/local-cursor.txt +0 -2
  35. package/docs/evidence/issue-2/local-down.txt +0 -32
  36. package/docs/evidence/issue-2/local-health.txt +0 -1
  37. package/docs/evidence/issue-2/local-live.txt +0 -28
  38. package/docs/evidence/issue-2/local-seed.txt +0 -26
  39. package/docs/evidence/issue-2/local-status.txt +0 -6
  40. package/docs/evidence/issue-2/local-up.txt +0 -18
  41. package/docs/evidence/issue-2/prepare-local-stack.py +0 -67
  42. package/docs/evidence/issue-2/qualification-body-validation.txt +0 -9
  43. package/docs/evidence/issue-2/qualification-link-check.txt +0 -376
  44. package/docs/evidence/issue-2/qualification-link-validation.txt +0 -20
  45. package/docs/evidence/issue-2/review-check.txt +0 -376
  46. package/docs/evidence/issue-2/review-validation.txt +0 -218
  47. package/docs/evidence/issue-7/README.md +0 -21
  48. package/docs/evidence/issue-7/check-mcp.txt +0 -9
  49. package/docs/evidence/issue-7/check.txt +0 -381
  50. package/docs/evidence/issue-7/live.txt +0 -23
  51. package/docs/evidence/issue-8/README.md +0 -56
  52. package/docs/evidence/issue-8/check-mcp.txt +0 -9
  53. package/docs/evidence/issue-8/check.txt +0 -465
  54. package/docs/evidence/issue-8/e2e-desktop-observer-human-devices.txt +0 -30
  55. package/docs/evidence/issue-8/e2e-desktop-observer-main-without-109.txt +0 -17
  56. package/docs/evidence/issue-8/e2e-desktop-observer.txt +0 -26
  57. package/docs/evidence/issue-8/live-regression-human-devices.txt +0 -24
  58. package/docs/evidence/issue-8/live-regression.txt +0 -23
  59. package/docs/evidence/issue-8/review-fixes/README.md +0 -30
  60. package/docs/evidence/issue-8/review-fixes/check-mcp.txt +0 -9
  61. package/docs/evidence/issue-8/review-fixes/check.txt +0 -484
  62. package/docs/evidence/issue-8/review-fixes/e2e-desktop-observer.txt +0 -28
  63. package/docs/evidence/issue-8/review-fixes/onboarding-live.txt +0 -15
  64. package/docs/evidence/issue-8/review-fixes/session-replacement-live.txt +0 -13
  65. package/docs/evidence/npm-release/check-mcp.txt +0 -9
  66. package/docs/evidence/npm-release/check.txt +0 -484
  67. package/docs/evidence/npm-release/e2e-desktop-observer.txt +0 -28
@@ -1,484 +0,0 @@
1
- $ npm ci && npm run check
2
- added 83 packages in 1s
3
-
4
- > @wacando/agent@2.0.0-rc.1 check
5
- > node scripts/check-deps.mjs && npm run check:notices && npm test
6
-
7
- Verified @wacando/contracts@0.1.0-rc.1, @wacando/omemo@0.1.0-rc.1, @wacando/xmpp@0.1.0-rc.1 from registry.npmjs.org
8
-
9
- > @wacando/agent@2.0.0-rc.1 check:notices
10
- > node scripts/notices.mjs --check
11
-
12
- Verified notices and provenance for 83 runtime packages
13
-
14
- > @wacando/agent@2.0.0-rc.1 test
15
- > node --test tests/*.test.mjs
16
-
17
- TAP version 13
18
- # Subtest: the ciphertext goes to the other agent and both owners, never to an unrelated party
19
- ok 1 - the ciphertext goes to the other agent and both owners, never to an unrelated party
20
- ---
21
- duration_ms: 1.173999
22
- type: 'test'
23
- ...
24
- # Subtest: a deleted side is not an encryption target and a stranger cannot view
25
- ok 2 - a deleted side is not an encryption target and a stranger cannot view
26
- ---
27
- duration_ms: 0.371402
28
- type: 'test'
29
- ...
30
- # Subtest: only an activated conversation counts as accepted, including after STOP
31
- ok 3 - only an activated conversation counts as accepted, including after STOP
32
- ---
33
- duration_ms: 0.12366
34
- type: 'test'
35
- ...
36
- # Subtest: the public summary never exposes owner identifiers
37
- ok 4 - the public summary never exposes owner identifiers
38
- ---
39
- duration_ms: 0.298442
40
- type: 'test'
41
- ...
42
- # Subtest: API refusals become explicit, content-free messages
43
- ok 5 - API refusals become explicit, content-free messages
44
- ---
45
- duration_ms: 0.224042
46
- type: 'test'
47
- ...
48
- # Subtest: recipient discovery returns both agents and every owner installation
49
- ok 6 - recipient discovery returns both agents and every owner installation
50
- ---
51
- duration_ms: 0.252712
52
- type: 'test'
53
- ...
54
- # Subtest: malformed or foreign recipient discovery fails closed
55
- ok 7 - malformed or foreign recipient discovery fails closed
56
- ---
57
- duration_ms: 0.256092
58
- type: 'test'
59
- ...
60
- # Subtest: discovery missing an owner or naming another agent fails closed
61
- ok 8 - discovery missing an owner or naming another agent fails closed
62
- ---
63
- duration_ms: 0.172772
64
- type: 'test'
65
- ...
66
- # Subtest: a server without recipient discovery is refused: never a usr_ fallback
67
- ok 9 - a server without recipient discovery is refused: never a usr_ fallback
68
- ---
69
- duration_ms: 0.735785
70
- type: 'test'
71
- ...
72
- # Subtest: cursor checker requires an affirmative parsed payload even when the wrapper says success
73
- ok 10 - cursor checker requires an affirmative parsed payload even when the wrapper says success
74
- ---
75
- duration_ms: 2.66747
76
- type: 'test'
77
- ...
78
- # Subtest: cursor checker distinguishes clear revocation from a crash, lock error or false connection
79
- ok 11 - cursor checker distinguishes clear revocation from a crash, lock error or false connection
80
- ---
81
- duration_ms: 1.685932
82
- type: 'test'
83
- ...
84
- # Subtest: codex checker requires an affirmative parsed payload even when the wrapper says success
85
- ok 12 - codex checker requires an affirmative parsed payload even when the wrapper says success
86
- ---
87
- duration_ms: 0.420463
88
- type: 'test'
89
- ...
90
- # Subtest: codex checker distinguishes clear revocation from a crash, lock error or false connection
91
- ok 13 - codex checker distinguishes clear revocation from a crash, lock error or false connection
92
- ---
93
- duration_ms: 0.433853
94
- type: 'test'
95
- ...
96
- # Subtest: checker requires verified:true for installation readiness
97
- ok 14 - checker requires verified:true for installation readiness
98
- ---
99
- duration_ms: 0.412933
100
- type: 'test'
101
- ...
102
- # Subtest: malformed viewer request targets return 400 without losing MCP events
103
- ok 15 - malformed viewer request targets return 400 without losing MCP events
104
- ---
105
- duration_ms: 217.77038
106
- type: 'test'
107
- ...
108
- # Subtest: MCP shutdown on EOF closes SSE and unfinished HTTP headers
109
- ok 16 - MCP shutdown on EOF closes SSE and unfinished HTTP headers
110
- ---
111
- duration_ms: 429.233753
112
- type: 'test'
113
- ...
114
- # Subtest: MCP shutdown on SIGTERM closes SSE and unfinished HTTP headers
115
- ok 17 - MCP shutdown on SIGTERM closes SSE and unfinished HTTP headers
116
- ---
117
- duration_ms: 431.321348
118
- type: 'test'
119
- ...
120
- # Subtest: HTTP and SSE snapshots use bounded pages and preserve large Unicode events
121
- ok 18 - HTTP and SSE snapshots use bounded pages and preserve large Unicode events
122
- ---
123
- duration_ms: 66.934418
124
- type: 'test'
125
- ...
126
- # Subtest: SSE client and queue limits isolate slow readers
127
- ok 19 - SSE client and queue limits isolate slow readers
128
- ---
129
- duration_ms: 12.820056
130
- type: 'test'
131
- ...
132
- # Subtest: legacy negotiation requires valid initialization and the initialized notification
133
- ok 20 - legacy negotiation requires valid initialization and the initialized notification
134
- ---
135
- duration_ms: 252.74951
136
- type: 'test'
137
- ...
138
- # Subtest: JSON-RPC rejects invalid IDs and parameters without answering responses or notifications
139
- ok 21 - JSON-RPC rejects invalid IDs and parameters without answering responses or notifications
140
- ---
141
- duration_ms: 167.829968
142
- type: 'test'
143
- ...
144
- # Subtest: tools enforce schemas, preserve Unicode limits, and never claim observed visibility
145
- ok 22 - tools enforce schemas, preserve Unicode limits, and never claim observed visibility
146
- ---
147
- duration_ms: 190.028004
148
- type: 'test'
149
- ...
150
- # Subtest: event pages obey encoded byte limits and traverse without losing filtered records
151
- ok 23 - event pages obey encoded byte limits and traverse without losing filtered records
152
- ---
153
- duration_ms: 12.928036
154
- type: 'test'
155
- ...
156
- # Subtest: retention is bounded by bytes as well as event count and reports eviction
157
- ok 24 - retention is bounded by bytes as well as event count and reports eviction
158
- ---
159
- duration_ms: 2.285627
160
- type: 'test'
161
- ...
162
- # Subtest: stdio framing handles split UTF-8, CRLF and escaped newlines with strict byte bounds
163
- ok 25 - stdio framing handles split UTF-8, CRLF and escaped newlines with strict byte bounds
164
- ---
165
- duration_ms: 2.63758
166
- type: 'test'
167
- ...
168
- # Subtest: an oversized unfinished frame closes the MCP process promptly
169
- ok 26 - an oversized unfinished frame closes the MCP process promptly
170
- ---
171
- duration_ms: 169.623102
172
- type: 'test'
173
- ...
174
- # Subtest: SIGTERM exits within a deadline even when the host stops reading stdout
175
- ok 27 - SIGTERM exits within a deadline even when the host stops reading stdout
176
- ---
177
- duration_ms: 1244.380796
178
- type: 'test'
179
- ...
180
- # Subtest: stdio writes wait for readers and reject stalled or oversized output
181
- ok 28 - stdio writes wait for readers and reject stalled or oversized output
182
- ---
183
- duration_ms: 1004.22848
184
- type: 'test'
185
- ...
186
- # Subtest: rate limiting admits bursts, rejects excess calls and refills over time
187
- ok 29 - rate limiting admits bursts, rejects excess calls and refills over time
188
- ---
189
- duration_ms: 0.317932
190
- type: 'test'
191
- ...
192
- # Subtest: MCP tool floods receive actionable rate-limit errors
193
- ok 30 - MCP tool floods receive actionable rate-limit errors
194
- ---
195
- duration_ms: 151.348726
196
- type: 'test'
197
- ...
198
- # Subtest: live dev API: codex installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
199
- ok 31 - live dev API: codex installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation # SKIP
200
- ---
201
- duration_ms: 0.947027
202
- type: 'test'
203
- ...
204
- # Subtest: live dev API: cursor installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
205
- ok 32 - live dev API: cursor installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation # SKIP
206
- ---
207
- duration_ms: 0.149681
208
- type: 'test'
209
- ...
210
- # Subtest: live dev API: claude installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
211
- ok 33 - live dev API: claude installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation # SKIP
212
- ---
213
- duration_ms: 0.126511
214
- type: 'test'
215
- ...
216
- # cursor: delayed shutdown released session lock; OMEMO snapshot unchanged
217
- # Subtest: cursor shutdown waits for session cleanup and releases its own lock without changing keys
218
- ok 34 - cursor shutdown waits for session cleanup and releases its own lock without changing keys
219
- ---
220
- duration_ms: 1382.831037
221
- type: 'test'
222
- ...
223
- # codex: delayed shutdown released session lock; OMEMO snapshot unchanged
224
- # Subtest: codex shutdown waits for session cleanup and releases its own lock without changing keys
225
- ok 35 - codex shutdown waits for session cleanup and releases its own lock without changing keys
226
- ---
227
- duration_ms: 1358.055951
228
- type: 'test'
229
- ...
230
- # Subtest: MCP shutdown finishes saving an in-flight verification response before exiting
231
- ok 36 - MCP shutdown finishes saving an in-flight verification response before exiting
232
- ---
233
- duration_ms: 1401.847208
234
- type: 'test'
235
- ...
236
- # Subtest: enrollment saves durable credential before XMPP, publishes before callback, and resumes without redemption
237
- ok 37 - enrollment saves durable credential before XMPP, publishes before callback, and resumes without redemption
238
- ---
239
- duration_ms: 139.736949
240
- type: 'test'
241
- ...
242
- # Subtest: origins, host identities and installations cannot be substituted
243
- ok 38 - origins, host identities and installations cannot be substituted
244
- ---
245
- duration_ms: 128.727867
246
- type: 'test'
247
- ...
248
- # Subtest: expiration, replay, wrong installation and revocation return safe actions
249
- ok 39 - expiration, replay, wrong installation and revocation return safe actions
250
- ---
251
- duration_ms: 82.315362
252
- type: 'test'
253
- ...
254
- # Subtest: background heartbeats preserve the stream and retry outages with bounded backoff and safe diagnostics
255
- ok 40 - background heartbeats preserve the stream and retry outages with bounded backoff and safe diagnostics
256
- ---
257
- duration_ms: 85.766479
258
- type: 'test'
259
- ...
260
- # Subtest: failed initial connection recovers in background without another redemption and close cancels retries
261
- ok 41 - failed initial connection recovers in background without another redemption and close cancels retries
262
- ---
263
- duration_ms: 72.277528
264
- type: 'test'
265
- ...
266
- # Subtest: failed XMPP ping closes only the broken stream and obtains a fresh grant on automatic retry
267
- ok 42 - failed XMPP ping closes only the broken stream and obtains a fresh grant on automatic retry
268
- ---
269
- duration_ms: 76.380908
270
- type: 'test'
271
- ...
272
- # Subtest: shutdown waits for a background grant request and prevents a new session after closing
273
- ok 43 - shutdown waits for a background grant request and prevents a new session after closing
274
- ---
275
- duration_ms: 59.947226
276
- type: 'test'
277
- ...
278
- # Subtest: failed OMEMO registration preserves credential, suppresses connected callback, and resumes
279
- ok 44 - failed OMEMO registration preserves credential, suppresses connected callback, and resumes
280
- ---
281
- duration_ms: 56.932743
282
- type: 'test'
283
- ...
284
- # Subtest: lost redemption and failed persistence never claim success
285
- ok 45 - lost redemption and failed persistence never claim success
286
- ---
287
- duration_ms: 20.965896
288
- type: 'test'
289
- ...
290
- # Subtest: unsafe permissions, symlinks and concurrent writes fail closed
291
- ok 46 - unsafe permissions, symlinks and concurrent writes fail closed
292
- ---
293
- duration_ms: 3.071003
294
- type: 'test'
295
- ...
296
- # Subtest: HTTP policy rejects non-loopback cleartext, URL credentials and redirects
297
- ok 47 - HTTP policy rejects non-loopback cleartext, URL credentials and redirects
298
- ---
299
- duration_ms: 18.170316
300
- type: 'test'
301
- ...
302
- # Subtest: existing native OMEMO identity survives reload; corrupt state is never regenerated
303
- ok 48 - existing native OMEMO identity survives reload; corrupt state is never regenerated
304
- ---
305
- duration_ms: 16.529123
306
- type: 'test'
307
- ...
308
- # Subtest: unsafe native OMEMO state permissions fail closed
309
- ok 49 - unsafe native OMEMO state permissions fail closed
310
- ---
311
- duration_ms: 5.080568
312
- type: 'test'
313
- ...
314
- # Subtest: a 1.x classic OMEMO identity is refused with re-enrollment guidance and left untouched
315
- ok 50 - a 1.x classic OMEMO identity is refused with re-enrollment guidance and left untouched
316
- ---
317
- duration_ms: 0.949147
318
- type: 'test'
319
- ...
320
- # Subtest: installed MCP tools verify via HTTP and never expose response credentials
321
- ok 51 - installed MCP tools verify via HTTP and never expose response credentials
322
- ---
323
- duration_ms: 191.170552
324
- type: 'test'
325
- ...
326
- # Subtest: cursor packaged MCP rejects a locally revoked identity without crashing or reporting connection
327
- ok 52 - cursor packaged MCP rejects a locally revoked identity without crashing or reporting connection
328
- ---
329
- duration_ms: 232.357188
330
- type: 'test'
331
- ...
332
- # Subtest: codex packaged MCP rejects a locally revoked identity without crashing or reporting connection
333
- ok 53 - codex packaged MCP rejects a locally revoked identity without crashing or reporting connection
334
- ---
335
- duration_ms: 203.10116
336
- type: 'test'
337
- ...
338
- # Subtest: a replaced session is terminal and never logs back in (the stream error arrives first)
339
- ok 54 - a replaced session is terminal and never logs back in (the stream error arrives first)
340
- ---
341
- duration_ms: 35.894257
342
- type: 'test'
343
- ...
344
- # Subtest: a replaced session is terminal and never logs back in (only the heartbeat notices it)
345
- ok 55 - a replaced session is terminal and never logs back in (only the heartbeat notices it)
346
- ---
347
- duration_ms: 120.929849
348
- type: 'test'
349
- ...
350
- # Subtest: release version matches all manifests
351
- ok 56 - release version matches all manifests
352
- ---
353
- duration_ms: 11.585486
354
- type: 'test'
355
- ...
356
- # Subtest: npm tarball installs globally with official libsignal from the public registry and its thin plugins start it
357
- ok 57 - npm tarball installs globally with official libsignal from the public registry and its thin plugins start it
358
- ---
359
- duration_ms: 2902.622201
360
- type: 'test'
361
- ...
362
- # Subtest: redeem and claim proofs match the API interoperability vectors byte for byte
363
- ok 58 - redeem and claim proofs match the API interoperability vectors byte for byte
364
- ---
365
- duration_ms: 2.196706
366
- type: 'test'
367
- ...
368
- # Subtest: runtime metadata is bounded display text without control characters
369
- ok 59 - runtime metadata is bounded display text without control characters
370
- ---
371
- duration_ms: 0.304213
372
- type: 'test'
373
- ...
374
- # Subtest: redeem refuses malformed codes before any request and persists the key before redeeming
375
- ok 60 - redeem refuses malformed codes before any request and persists the key before redeeming
376
- ---
377
- duration_ms: 2.222036
378
- type: 'test'
379
- ...
380
- # Subtest: claim polls every 5 s while pending, honours Retry-After, and ends at the local deadline
381
- ok 61 - claim polls every 5 s while pending, honours Retry-After, and ends at the local deadline
382
- ---
383
- duration_ms: 1.643492
384
- type: 'test'
385
- ...
386
- # Subtest: a confirmed pairing saves the credential locally and returns no secret
387
- ok 62 - a confirmed pairing saves the credential locally and returns no secret
388
- ---
389
- duration_ms: 251.226909
390
- type: 'test'
391
- ...
392
- # Subtest: a refused code or an unconfirmed pairing leaves no partial identity
393
- ok 63 - a refused code or an unconfirmed pairing leaves no partial identity
394
- ---
395
- duration_ms: 126.287599
396
- type: 'test'
397
- ...
398
- # Subtest: a pairing interrupted after redeem resumes with the same key and poll secret
399
- ok 64 - a pairing interrupted after redeem resumes with the same key and poll secret
400
- ---
401
- duration_ms: 95.829603
402
- type: 'test'
403
- ...
404
- # Subtest: codex plugin is a thin wrapper that starts this runtime and records its own provider
405
- ok 65 - codex plugin is a thin wrapper that starts this runtime and records its own provider
406
- ---
407
- duration_ms: 309.209571
408
- type: 'test'
409
- ...
410
- # Subtest: cursor plugin is a thin wrapper that starts this runtime and records its own provider
411
- ok 66 - cursor plugin is a thin wrapper that starts this runtime and records its own provider
412
- ---
413
- duration_ms: 215.515653
414
- type: 'test'
415
- ...
416
- # Subtest: claude plugin is a thin wrapper that starts this runtime and records its own provider
417
- ok 67 - claude plugin is a thin wrapper that starts this runtime and records its own provider
418
- ---
419
- duration_ms: 201.853091
420
- type: 'test'
421
- ...
422
- # Subtest: Claude, Cursor and Codex MCP processes have independent stores and ports
423
- ok 68 - Claude, Cursor and Codex MCP processes have independent stores and ports
424
- ---
425
- duration_ms: 195.504554
426
- type: 'test'
427
- ...
428
- # Subtest: installer refuses to overwrite an existing installation
429
- ok 69 - installer refuses to overwrite an existing installation
430
- ---
431
- duration_ms: 66.053371
432
- type: 'test'
433
- ...
434
- # Subtest: store validates messages, orders events and bounds retention
435
- ok 70 - store validates messages, orders events and bounds retention
436
- ---
437
- duration_ms: 2.850421
438
- type: 'test'
439
- ...
440
- # Subtest: loopback viewer serves assets and blocks cross-origin writes and traversal
441
- ok 71 - loopback viewer serves assets and blocks cross-origin writes and traversal
442
- ---
443
- duration_ms: 59.033969
444
- type: 'test'
445
- ...
446
- # Subtest: SSE delivers snapshot and live message, reconnect recovers snapshot
447
- ok 72 - SSE delivers snapshot and live message, reconnect recovers snapshot
448
- ---
449
- duration_ms: 278.556352
450
- type: 'test'
451
- ...
452
- # Subtest: MCP starts HTTP, records events and shuts down on stdin EOF
453
- ok 73 - MCP starts HTTP, records events and shuts down on stdin EOF
454
- ---
455
- duration_ms: 189.288098
456
- type: 'test'
457
- ...
458
- # Subtest: late history pages cannot duplicate live events, resurrect evictions or replace a new connection
459
- ok 74 - late history pages cannot duplicate live events, resurrect evictions or replace a new connection
460
- ---
461
- duration_ms: 1.616462
462
- type: 'test'
463
- ...
464
- # Subtest: history loading pins the snapshot sequence, follows cursors and respects cancellation
465
- ok 75 - history loading pins the snapshot sequence, follows cursors and respects cancellation
466
- ---
467
- duration_ms: 1.163188
468
- type: 'test'
469
- ...
470
- # Subtest: rate-limited history loading resumes from the same page instead of restarting the stream
471
- ok 76 - rate-limited history loading resumes from the same page instead of restarting the stream
472
- ---
473
- duration_ms: 1000.643564
474
- type: 'test'
475
- ...
476
- 1..76
477
- # tests 76
478
- # suites 0
479
- # pass 73
480
- # fail 0
481
- # cancelled 0
482
- # skipped 3
483
- # todo 0
484
- # duration_ms 4406.76778
@@ -1,28 +0,0 @@
1
- # runtime on @wacando/*@0.1.0-rc.1 from registry.npmjs.org; stack: lbframe/wacando #108 + #109 (278968b)
2
- $ tsx scripts/e2e-desktop-observer.mts
3
- PASS 01 two owners signed up (58953cde-b5e7-4982-a05c-a48913ced2a3, 14c15e89-c0b4-483e-a941-157012c2e5f4)
4
- PASS 02 CLI `wacando-agent pair` -> @e2eaa8971de230/bot (service), owner confirmed after checking the key fingerprint
5
- PASS 03 MCP tool `wacando_pair` -> @e2ebc3a6b1fb79/codex (human), resumed by a second call without code
6
- PASS 04 contact invitation accepted by the recipient owner
7
- PASS 05 both runtimes connected (grant, native OMEMO device, presence echo) via the SDK
8
- PASS 06 propose -> request cnv_bf109131-b003-4096-b34b-1642605459aa created; first message refused fail-closed (owners' desktop devices not published yet)
9
- PASS 07 recipient agent sees nothing of the request before acceptance (list empty, read/send refused)
10
- PASS 08 both owners' desktop ObserverHubs enrolled per-installation devices (dev_0cf38dbae62d8464b768ce3453f3a236, dev_aa426e425bce03e72d654cfb2026f639), published official-libsignal bundles, were activated and observe the room
11
- PASS 09 first message held by the policy component (stanza om-30fe2993c62d0390), status visible to the agent
12
- PASS 10 requester owner approved the exact held ciphertext (locally recomputed digest) -> relayed
13
- PASS 11 recipient owner saw the request in the consent inbox and accepted it via the API
14
- PASS 12 recipient agent (human mode, room member) decrypted the approved first message from the archive
15
- PASS 13 human-mode reply sent without approval; service agent decrypted it from a policy delivery
16
- PASS 14 service-mode message held until its owner approved it, then delivered and decrypted
17
- PASS 15 alice's desktop ObserverHub (official libsignal) decrypted all 3 messages (3 entries)
18
- PASS 16 bob's desktop ObserverHub (official libsignal) decrypted all 3 messages (3 entries)
19
- PASS 17 owner A added a second desktop (dev_2be2c26e2a2de3d3de3dc634fe4a9852): the runtime discovered it before sending and both desktops decrypted the message
20
- PASS 18 owner A revoked that desktop: the next message carries no key for dev_2be2c26e2a2de3d3de3dc634fe4a9852, the remaining desktop still decrypts it
21
- PASS 19 after STOP by an owner both agents are refused explicitly; nothing is sent
22
- canary-scan: dumping mnesia via /home/ejabberd/bin/ejabberdctl
23
- canary-scan: scanning dump + logs + spool for canary
24
- canary-scan: total occurrences of canary: 0
25
- canary-scan: PASS — plaintext absent from server-side storage
26
- PASS 20 plaintext canary absent from ejabberd storage (MAM, offline, pubsub, logs), API/policy logs and runtime output
27
- E2E RESULT: PASS
28
- exit=0