@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 check
5
- > node scripts/check-deps.mjs && npm run check:notices && npm test
6
-
7
- Verified 3 pinned Wacando archives from https://github.com/lbframe/wacando @ 5f0f0a1f0ccc20c47383fed6f8e072aca5302486
8
-
9
- > wacando-agent@2.0.0 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 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.913064
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.553594
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.204582
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.452813
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.362502
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: 1.32376
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.363403
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.239362
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.931067
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.700059
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.671892
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.462614
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.376373
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.413213
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: 218.267741
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: 431.85532
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: 427.484819
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: 64.884598
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: 13.218613
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: 223.541398
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: 189.556199
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: 165.101046
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: 13.076422
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: 1.853303
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.783049
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: 167.18603
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: 1204.702647
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.177181
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.408453
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: 150.118501
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.929686
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.151361
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.139571
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: 1383.51414
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: 1352.924604
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: 1380.794222
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: 255.456354
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: 60.710659
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: 96.764984
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: 193.656108
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: 53.733709
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: 106.25227
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: 30.368505
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: 29.373307
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: 21.24677
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: 2.165316
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: 15.754561
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: 11.34871
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: 7.999176
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.907586
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.07641
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: 255.942927
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: 301.052536
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: 25.51241
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: 105.090322
348
- type: 'test'
349
- ...
350
- # Subtest: release version matches all manifests
351
- ok 56 - release version matches all manifests
352
- ---
353
- duration_ms: 5.69621
354
- type: 'test'
355
- ...
356
- # Subtest: npm tarball installs the runtime with official libsignal and its thin plugins start it
357
- ok 57 - npm tarball installs the runtime with official libsignal and its thin plugins start it
358
- ---
359
- duration_ms: 2989.604911
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.053354
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.315332
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.84714
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: 2.290126
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: 243.773772
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: 154.663842
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: 215.28805
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: 249.823664
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: 212.058787
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: 194.07821
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: 202.056896
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.157557
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: 1.839893
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: 46.851681
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: 263.45985
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: 167.710714
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.275379
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: 0.826555
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: 1001.869705
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 4318.525607
@@ -1,28 +0,0 @@
1
- # stack: lbframe/wacando #108 head 6198d92 + #109 merged locally (278968b); WACANDO_CHECKOUT=<work>/wacando-int
2
- $ tsx scripts/e2e-desktop-observer.mts
3
- PASS 01 two owners signed up (5b5ec631-3a26-4e33-a693-62fb5166da22, 87aa3afa-73c1-436a-95ba-1f69d8913d8b)
4
- PASS 02 CLI `wacando-agent pair` -> @e2eafeaac3e01a/bot (service), owner confirmed after checking the key fingerprint
5
- PASS 03 MCP tool `wacando_pair` -> @e2eb8e80c8642d/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_c4f58a0f-5a35-4900-b6c9-ef4bfb5f694f 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_c4321fb940caa9f458861bf441f2993f, dev_f12570ea75a33bffaf84a355fb36f715), published official-libsignal bundles, were activated and observe the room
11
- PASS 09 first message held by the policy component (stanza om-a000ba718bbb80a6), 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_6835473dc8eaa8c90d5e841f2be2c9b1): 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_6835473dc8eaa8c90d5e841f2be2c9b1, 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
@@ -1,15 +0,0 @@
1
- $ WACANDO_LIVE_TEST_ORIGIN=http://localhost:43001 node --test tests/onboarding-live.test.mjs
2
- # Subtest: live dev API: codex installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
3
- ok 1 - live dev API: codex installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
4
- # Subtest: live dev API: cursor installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
5
- ok 2 - live dev API: cursor installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
6
- # Subtest: live dev API: claude installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
7
- ok 3 - live dev API: claude installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
8
- # tests 3
9
- # suites 0
10
- # pass 3
11
- # fail 0
12
- # cancelled 0
13
- # skipped 0
14
- # todo 0
15
- # duration_ms 7122.277049
@@ -1,13 +0,0 @@
1
- # stack: lbframe/wacando PR #108 head 6198d92 (already merges main f21f742 incl. #106) + PR #109 merged locally -> 278968b; ejabberd 26.07 from that tree's ci-up.sh; fresh DB
2
- $ WACANDO_LIVE_TEST_ORIGIN=http://localhost:43001 node scripts/check-daemon-live.mjs
3
- enrolled @daemon_ed9a6fd46c77/bot for host "cli" (synthetic owner)
4
- status: [{"agentId":"agt_e3c98714-530d-4b99-9f2c-a9094b3d658e","handle":"@daemon_ed9a6fd46c77/bot","origin":"http://localhost:43001","mode":"human","revoked":false,"connection":"disconnected"}]
5
- daemon: connected (grant, native OMEMO publication, presence echo, API callback) and running
6
- second daemon on the same identity: refused by the identity lock
7
- daemon: SIGTERM -> clean exit 0, lock released
8
- daemon restarted on the same saved identity and keys: connected again
9
- second copy connected; the first daemon got <conflict/>, reported SESSION_REPLACED and exited 3
10
- after 135 s (two heartbeats) the newer daemon is still connected and was never replaced back; no ping-pong
11
- exit=0
12
- $ docker logs wacando-agentside-ejabberd | grep -c "Replaced by new connection" # whole run incl. the 135 s observation
13
- 1
@@ -1,9 +0,0 @@
1
- $ npm run check:mcp
2
-
3
- > @wacando/agent@2.0.0-rc.1 check:mcp
4
- > node scripts/check-mcp.mjs
5
-
6
- Official Inspector 2.7.0 passed: wacando
7
- Official Inspector 2.7.0 passed: wacando-cursor
8
- Official Inspector 2.7.0 passed: wacando-claude
9
- exit=0