@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,376 +0,0 @@
1
-
2
- > wacando-plugins@1.0.0 check
3
- > npm run build && npm run check:generated && npm test
4
-
5
-
6
- > wacando-plugins@1.0.0 build
7
- > node scripts/build.mjs
8
-
9
- Built self-contained codex plugin: wacando@1.0.0
10
- Built self-contained cursor plugin: wacando-cursor@1.0.0
11
- Built self-contained claude plugin: wacando-claude@1.0.0
12
-
13
- > wacando-plugins@1.0.0 check:generated
14
- > node scripts/check-generated.mjs
15
-
16
- Verified exact runtime: wacando
17
- Verified exact runtime: wacando-cursor
18
- Verified exact runtime: wacando-claude
19
-
20
- > wacando-plugins@1.0.0 test
21
- > node --test tests/*.test.mjs
22
-
23
- TAP version 13
24
- # Subtest: clean package builds remove deleted sources and preserve the old runtime on preparation failure
25
- ok 1 - clean package builds remove deleted sources and preserve the old runtime on preparation failure
26
- ---
27
- duration_ms: 2876.948694
28
- type: 'test'
29
- ...
30
- # Subtest: cursor checker requires an affirmative parsed payload even when the wrapper says success
31
- ok 2 - cursor checker requires an affirmative parsed payload even when the wrapper says success
32
- ---
33
- duration_ms: 2.023074
34
- type: 'test'
35
- ...
36
- # Subtest: cursor checker distinguishes clear revocation from a crash, lock error or false connection
37
- ok 3 - cursor checker distinguishes clear revocation from a crash, lock error or false connection
38
- ---
39
- duration_ms: 1.187868
40
- type: 'test'
41
- ...
42
- # Subtest: codex checker requires an affirmative parsed payload even when the wrapper says success
43
- ok 4 - codex checker requires an affirmative parsed payload even when the wrapper says success
44
- ---
45
- duration_ms: 0.321162
46
- type: 'test'
47
- ...
48
- # Subtest: codex checker distinguishes clear revocation from a crash, lock error or false connection
49
- ok 5 - codex checker distinguishes clear revocation from a crash, lock error or false connection
50
- ---
51
- duration_ms: 0.322433
52
- type: 'test'
53
- ...
54
- # Subtest: checker requires verified:true for installation readiness
55
- ok 6 - checker requires verified:true for installation readiness
56
- ---
57
- duration_ms: 0.375223
58
- type: 'test'
59
- ...
60
- # Subtest: malformed viewer request targets return 400 without losing MCP events
61
- ok 7 - malformed viewer request targets return 400 without losing MCP events
62
- ---
63
- duration_ms: 84.120392
64
- type: 'test'
65
- ...
66
- # Subtest: MCP shutdown on EOF closes SSE and unfinished HTTP headers
67
- ok 8 - MCP shutdown on EOF closes SSE and unfinished HTTP headers
68
- ---
69
- duration_ms: 339.73003
70
- type: 'test'
71
- ...
72
- # Subtest: MCP shutdown on SIGTERM closes SSE and unfinished HTTP headers
73
- ok 9 - MCP shutdown on SIGTERM closes SSE and unfinished HTTP headers
74
- ---
75
- duration_ms: 329.629378
76
- type: 'test'
77
- ...
78
- # Subtest: HTTP and SSE snapshots use bounded pages and preserve large Unicode events
79
- ok 10 - HTTP and SSE snapshots use bounded pages and preserve large Unicode events
80
- ---
81
- duration_ms: 67.807607
82
- type: 'test'
83
- ...
84
- # Subtest: SSE client and queue limits isolate slow readers
85
- ok 11 - SSE client and queue limits isolate slow readers
86
- ---
87
- duration_ms: 13.783017
88
- type: 'test'
89
- ...
90
- # Subtest: legacy negotiation requires valid initialization and the initialized notification
91
- ok 12 - legacy negotiation requires valid initialization and the initialized notification
92
- ---
93
- duration_ms: 97.457936
94
- type: 'test'
95
- ...
96
- # Subtest: JSON-RPC rejects invalid IDs and parameters without answering responses or notifications
97
- ok 13 - JSON-RPC rejects invalid IDs and parameters without answering responses or notifications
98
- ---
99
- duration_ms: 68.859524
100
- type: 'test'
101
- ...
102
- # Subtest: tools enforce schemas, preserve Unicode limits, and never claim observed visibility
103
- ok 14 - tools enforce schemas, preserve Unicode limits, and never claim observed visibility
104
- ---
105
- duration_ms: 101.768055
106
- type: 'test'
107
- ...
108
- # Subtest: event pages obey encoded byte limits and traverse without losing filtered records
109
- ok 15 - event pages obey encoded byte limits and traverse without losing filtered records
110
- ---
111
- duration_ms: 15.431858
112
- type: 'test'
113
- ...
114
- # Subtest: retention is bounded by bytes as well as event count and reports eviction
115
- ok 16 - retention is bounded by bytes as well as event count and reports eviction
116
- ---
117
- duration_ms: 2.999111
118
- type: 'test'
119
- ...
120
- # Subtest: stdio framing handles split UTF-8, CRLF and escaped newlines with strict byte bounds
121
- ok 17 - stdio framing handles split UTF-8, CRLF and escaped newlines with strict byte bounds
122
- ---
123
- duration_ms: 4.25906
124
- type: 'test'
125
- ...
126
- # Subtest: an oversized unfinished frame closes the MCP process promptly
127
- ok 18 - an oversized unfinished frame closes the MCP process promptly
128
- ---
129
- duration_ms: 69.221057
130
- type: 'test'
131
- ...
132
- # Subtest: SIGTERM exits within a deadline even when the host stops reading stdout
133
- ok 19 - SIGTERM exits within a deadline even when the host stops reading stdout
134
- ---
135
- duration_ms: 1132.750787
136
- type: 'test'
137
- ...
138
- # Subtest: stdio writes wait for readers and reject stalled or oversized output
139
- ok 20 - stdio writes wait for readers and reject stalled or oversized output
140
- ---
141
- duration_ms: 1004.471704
142
- type: 'test'
143
- ...
144
- # Subtest: rate limiting admits bursts, rejects excess calls and refills over time
145
- ok 21 - rate limiting admits bursts, rejects excess calls and refills over time
146
- ---
147
- duration_ms: 0.468634
148
- type: 'test'
149
- ...
150
- # Subtest: MCP tool floods receive actionable rate-limit errors
151
- ok 22 - MCP tool floods receive actionable rate-limit errors
152
- ---
153
- duration_ms: 61.424582
154
- type: 'test'
155
- ...
156
- # Subtest: live dev API: codex installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
157
- ok 23 - live dev API: codex installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
158
- ---
159
- duration_ms: 3784.80163
160
- type: 'test'
161
- ...
162
- # Subtest: live dev API: cursor installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
163
- ok 24 - live dev API: cursor installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
164
- ---
165
- duration_ms: 1586.976822
166
- type: 'test'
167
- ...
168
- # Subtest: live dev API: claude installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
169
- ok 25 - live dev API: claude installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
170
- ---
171
- duration_ms: 1548.809503
172
- type: 'test'
173
- ...
174
- # cursor: delayed shutdown released session lock; OMEMO snapshot unchanged
175
- # Subtest: cursor shutdown waits for session cleanup and releases its own lock without changing keys
176
- ok 26 - cursor shutdown waits for session cleanup and releases its own lock without changing keys
177
- ---
178
- duration_ms: 2153.758858
179
- type: 'test'
180
- ...
181
- # codex: delayed shutdown released session lock; OMEMO snapshot unchanged
182
- # Subtest: codex shutdown waits for session cleanup and releases its own lock without changing keys
183
- ok 27 - codex shutdown waits for session cleanup and releases its own lock without changing keys
184
- ---
185
- duration_ms: 2019.857877
186
- type: 'test'
187
- ...
188
- # Subtest: MCP shutdown finishes saving an in-flight verification response before exiting
189
- ok 28 - MCP shutdown finishes saving an in-flight verification response before exiting
190
- ---
191
- duration_ms: 1294.428754
192
- type: 'test'
193
- ...
194
- # Subtest: enrollment saves durable credential before XMPP, publishes before callback, and resumes without redemption
195
- ok 29 - enrollment saves durable credential before XMPP, publishes before callback, and resumes without redemption
196
- ---
197
- duration_ms: 373.662398
198
- type: 'test'
199
- ...
200
- # Subtest: origins, host identities and installations cannot be substituted
201
- ok 30 - origins, host identities and installations cannot be substituted
202
- ---
203
- duration_ms: 460.532748
204
- type: 'test'
205
- ...
206
- # Subtest: expiration, replay, wrong installation and revocation return safe actions
207
- ok 31 - expiration, replay, wrong installation and revocation return safe actions
208
- ---
209
- duration_ms: 498.788858
210
- type: 'test'
211
- ...
212
- # Subtest: background heartbeats preserve the stream and retry outages with bounded backoff and safe diagnostics
213
- ok 32 - background heartbeats preserve the stream and retry outages with bounded backoff and safe diagnostics
214
- ---
215
- duration_ms: 911.763132
216
- type: 'test'
217
- ...
218
- # Subtest: failed initial connection recovers in background without another redemption and close cancels retries
219
- ok 33 - failed initial connection recovers in background without another redemption and close cancels retries
220
- ---
221
- duration_ms: 682.402009
222
- type: 'test'
223
- ...
224
- # Subtest: failed XMPP ping closes only the broken stream and obtains a fresh grant on automatic retry
225
- ok 34 - failed XMPP ping closes only the broken stream and obtains a fresh grant on automatic retry
226
- ---
227
- duration_ms: 34.601413
228
- type: 'test'
229
- ...
230
- # Subtest: shutdown waits for a background grant request and prevents a new session after closing
231
- ok 35 - shutdown waits for a background grant request and prevents a new session after closing
232
- ---
233
- duration_ms: 23.135233
234
- type: 'test'
235
- ...
236
- # Subtest: failed OMEMO registration preserves credential, suppresses connected callback, and resumes
237
- ok 36 - failed OMEMO registration preserves credential, suppresses connected callback, and resumes
238
- ---
239
- duration_ms: 19.488027
240
- type: 'test'
241
- ...
242
- # Subtest: lost redemption and failed persistence never claim success
243
- ok 37 - lost redemption and failed persistence never claim success
244
- ---
245
- duration_ms: 16.773288
246
- type: 'test'
247
- ...
248
- # Subtest: unsafe permissions, symlinks and concurrent writes fail closed
249
- ok 38 - unsafe permissions, symlinks and concurrent writes fail closed
250
- ---
251
- duration_ms: 2.226706
252
- type: 'test'
253
- ...
254
- # Subtest: HTTP policy rejects non-loopback cleartext, URL credentials and redirects
255
- ok 39 - HTTP policy rejects non-loopback cleartext, URL credentials and redirects
256
- ---
257
- duration_ms: 17.253491
258
- type: 'test'
259
- ...
260
- # Subtest: existing Wacando OMEMO identity survives reload; corrupt state is never regenerated
261
- ok 40 - existing Wacando OMEMO identity survives reload; corrupt state is never regenerated
262
- ---
263
- duration_ms: 515.791078
264
- type: 'test'
265
- ...
266
- # Subtest: installed MCP tools verify via HTTP and never expose response credentials
267
- ok 41 - installed MCP tools verify via HTTP and never expose response credentials
268
- ---
269
- duration_ms: 77.224993
270
- type: 'test'
271
- ...
272
- # Subtest: cursor packaged MCP rejects a locally revoked identity without crashing or reporting connection
273
- ok 42 - cursor packaged MCP rejects a locally revoked identity without crashing or reporting connection
274
- ---
275
- duration_ms: 115.950595
276
- type: 'test'
277
- ...
278
- # Subtest: codex packaged MCP rejects a locally revoked identity without crashing or reporting connection
279
- ok 43 - codex packaged MCP rejects a locally revoked identity without crashing or reporting connection
280
- ---
281
- duration_ms: 86.042236
282
- type: 'test'
283
- ...
284
- # Subtest: release version matches all manifests
285
- ok 44 - release version matches all manifests
286
- ---
287
- duration_ms: 7.697715
288
- type: 'test'
289
- ...
290
- # Subtest: local npm tarball contains standalone hosts and installer preserves existing installations
291
- ok 45 - local npm tarball contains standalone hosts and installer preserves existing installations
292
- ---
293
- duration_ms: 2790.246184
294
- type: 'test'
295
- ...
296
- # Subtest: codex package runs relocated without the repository and records its own provider
297
- ok 46 - codex package runs relocated without the repository and records its own provider
298
- ---
299
- duration_ms: 513.441491
300
- type: 'test'
301
- ...
302
- # Subtest: cursor package runs relocated without the repository and records its own provider
303
- ok 47 - cursor package runs relocated without the repository and records its own provider
304
- ---
305
- duration_ms: 105.023188
306
- type: 'test'
307
- ...
308
- # Subtest: claude package runs relocated without the repository and records its own provider
309
- ok 48 - claude package runs relocated without the repository and records its own provider
310
- ---
311
- duration_ms: 572.99299
312
- type: 'test'
313
- ...
314
- # Subtest: Claude, Cursor and Codex MCP processes have independent stores and ports
315
- ok 49 - Claude, Cursor and Codex MCP processes have independent stores and ports
316
- ---
317
- duration_ms: 67.315774
318
- type: 'test'
319
- ...
320
- # Subtest: Cursor installer copies a real package and refuses to overwrite an existing install
321
- ok 50 - Cursor installer copies a real package and refuses to overwrite an existing install
322
- ---
323
- duration_ms: 1036.706251
324
- type: 'test'
325
- ...
326
- # Subtest: store validates messages, orders events and bounds retention
327
- ok 51 - store validates messages, orders events and bounds retention
328
- ---
329
- duration_ms: 2.420697
330
- type: 'test'
331
- ...
332
- # Subtest: loopback viewer serves assets and blocks cross-origin writes and traversal
333
- ok 52 - loopback viewer serves assets and blocks cross-origin writes and traversal
334
- ---
335
- duration_ms: 48.452361
336
- type: 'test'
337
- ...
338
- # Subtest: SSE delivers snapshot and live message, reconnect recovers snapshot
339
- ok 53 - SSE delivers snapshot and live message, reconnect recovers snapshot
340
- ---
341
- duration_ms: 261.803551
342
- type: 'test'
343
- ...
344
- # Subtest: MCP starts HTTP, records events and shuts down on stdin EOF
345
- ok 54 - MCP starts HTTP, records events and shuts down on stdin EOF
346
- ---
347
- duration_ms: 91.02007
348
- type: 'test'
349
- ...
350
- # Subtest: late history pages cannot duplicate live events, resurrect evictions or replace a new connection
351
- ok 55 - late history pages cannot duplicate live events, resurrect evictions or replace a new connection
352
- ---
353
- duration_ms: 1.647741
354
- type: 'test'
355
- ...
356
- # Subtest: history loading pins the snapshot sequence, follows cursors and respects cancellation
357
- ok 56 - history loading pins the snapshot sequence, follows cursors and respects cancellation
358
- ---
359
- duration_ms: 1.131738
360
- type: 'test'
361
- ...
362
- # Subtest: rate-limited history loading resumes from the same page instead of restarting the stream
363
- ok 57 - rate-limited history loading resumes from the same page instead of restarting the stream
364
- ---
365
- duration_ms: 1002.265869
366
- type: 'test'
367
- ...
368
- 1..57
369
- # tests 57
370
- # suites 0
371
- # pass 57
372
- # fail 0
373
- # cancelled 0
374
- # skipped 0
375
- # todo 0
376
- # duration_ms 6982.870563
@@ -1,3 +0,0 @@
1
- WARNING: proceeding, even though we could not create PATH aliases: Read-only file system (os error 30)
2
- Reading additional input from stdin...
3
- Error: failed to initialize in-process app-server client: Read-only file system (os error 30)
@@ -1,3 +0,0 @@
1
- WARNING: proceeding, even though we could not create PATH aliases: Read-only file system (os error 30)
2
- Reading additional input from stdin...
3
- Error: failed to initialize in-process app-server client: Read-only file system (os error 30)
@@ -1,2 +0,0 @@
1
- Host exit=1; protected state partition=a545539c9fb8afa4b2772b93fb81a69abd699b0eee9fa1afbfe0762caf20d1cc; locks=none
2
- Real codex host did not confirm wacando_verify_installation; exit=1, calls=0. Parsed tool diagnostic: {}. Raw host output suppressed.
@@ -1 +0,0 @@
1
- Error: EROFS: read-only file system, open '/home/kyle/.cursor/sandbox-policies/sandbox-policy-ab97f73e2a601171'
@@ -1,2 +0,0 @@
1
- Host exit=1; protected state partition=573dd65109883105b435723458109f7f8fa6eeff9982b6fac81153ba2410c5cc; locks=none
2
- Real cursor host did not confirm wacando_verify_installation; exit=1, calls=0. Parsed tool diagnostic: {}. Raw host output suppressed.
@@ -1,32 +0,0 @@
1
- Container wacando-agent2-web-1 Stopping
2
- Container wacando-agent2-web-1 Stopped
3
- Container wacando-agent2-web-1 Removing
4
- Container wacando-agent2-web-1 Removed
5
- Container wacando-agent2-api-1 Stopping
6
- Container wacando-agent2-api-1 Stopped
7
- Container wacando-agent2-api-1 Removing
8
- Container wacando-agent2-api-1 Removed
9
- Container wacando-agent2-policy-1 Stopping
10
- Container wacando-agent2-postgres-1 Stopping
11
- Container wacando-agent2-postgres-1 Stopped
12
- Container wacando-agent2-postgres-1 Removing
13
- Container wacando-agent2-policy-1 Stopped
14
- Container wacando-agent2-policy-1 Removing
15
- Container wacando-agent2-postgres-1 Removed
16
- Container wacando-agent2-policy-1 Removed
17
- Container wacando-agent2-ejabberd-1 Stopping
18
- Container wacando-agent2-ejabberd-1 Stopped
19
- Container wacando-agent2-ejabberd-1 Removing
20
- Container wacando-agent2-ejabberd-1 Removed
21
- Volume wacando-agent2_dev-ejabberd-data Removing
22
- Volume wacando-agent2_dev-ejabberd-logs Removing
23
- Volume wacando-agent2_dev-pgdata Removing
24
- Network wacando-agent2_wacando Removing
25
- Volume wacando-agent2_dev-ejabberd-data Removed
26
- Volume wacando-agent2_dev-ejabberd-logs Removed
27
- Volume wacando-agent2_dev-pgdata Removed
28
- Network wacando-agent2_wacando Removed
29
- NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
30
- DRIVER VOLUME NAME
31
- /wacando-issue10-postgres status=running started=2026-10-14T23:30:46.147696329Z restarts=0
32
- /wacando-issue10-ejabberd status=running started=2026-10-14T23:53:35.168365444Z restarts=0
@@ -1 +0,0 @@
1
- {"ok":true}Web onboarding HTTP 200
@@ -1,28 +0,0 @@
1
- TAP version 13
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
- ---
5
- duration_ms: 2077.400751
6
- type: 'test'
7
- ...
8
- # Subtest: live dev API: cursor installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
9
- ok 2 - live dev API: cursor installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
10
- ---
11
- duration_ms: 2120.705886
12
- type: 'test'
13
- ...
14
- # Subtest: live dev API: claude installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
15
- ok 3 - live dev API: claude installed runtime verifies, enrolls, publishes OMEMO, restarts and stops on revocation
16
- ---
17
- duration_ms: 2578.078336
18
- type: 'test'
19
- ...
20
- 1..3
21
- # tests 3
22
- # suites 0
23
- # pass 3
24
- # fail 0
25
- # cancelled 0
26
- # skipped 0
27
- # todo 0
28
- # duration_ms 6896.88793
@@ -1,26 +0,0 @@
1
- [ci-up] ejabberd container: 38c417189e555abbfa48361e6f630946e9709ae10297edef9aae70c0d42dfb7a (wacando-agent2-ejabberd-1)
2
- [ci-up] waiting for stock ejabberd node
3
- [ci-up] injecting /home/kyle/timon-projects/wacando/agent2-api/infra/ejabberd/ejabberd.ci.yml -> 38c417189e555abbfa48361e6f630946e9709ae10297edef9aae70c0d42dfb7a:/home/ejabberd/conf/ejabberd.yml
4
- [ci-up] restarting container to load the CI config
5
- The node ejabberd@localhost is started with status: started
6
- ejabberd 26.7.0 is running in that node
7
- [ci-up] ejabberd node is up with the CI config
8
- [ci-up] registered: admin@wacando.localhost
9
- [ci-up] registered: agt_a01@wacando.localhost
10
- [ci-up] registered: agt_b01@wacando.localhost
11
- [ci-up] registered: agt_c01@wacando.localhost
12
- [ci-up] registered: usr_a01@wacando.localhost
13
- [ci-up] registered: usr_b01@wacando.localhost
14
- [ci-up] registered users on wacando.localhost:
15
- admin
16
- agt_a01
17
- agt_b01
18
- agt_c01
19
- usr_a01
20
- usr_b01
21
- [ci-up] probing listeners
22
- [ci-up] admin account reachable via ctl
23
- [ci-up] 127.0.0.1:25222 open
24
- [ci-up] 127.0.0.1:25280 open
25
- [ci-up] 127.0.0.1:25347 open
26
- [ci-up] done. c2s=127.0.0.1:25222 ws+api=http://127.0.0.1:25280 component=127.0.0.1:25347
@@ -1,6 +0,0 @@
1
- NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
2
- wacando-agent2-api-1 wacando-agent2-api "/usr/local/bin/api-…" api 5 minutes ago Up 5 minutes (healthy) 127.0.0.1:23001->3001/tcp
3
- wacando-agent2-ejabberd-1 ejabberd/ecs:26.07 "/sbin/tini -- /home…" ejabberd 18 minutes ago Up 18 minutes (healthy) 1880/tcp, 1883/tcp, 4369-4399/tcp, 5210/tcp, 5269/tcp, 5443/tcp, 5478/tcp, 7777/tcp, 50000-50099/tcp, 127.0.0.1:25222->5222/tcp, 127.0.0.1:25280->5280/tcp, 127.0.0.1:25347->5347/tcp
4
- wacando-agent2-policy-1 wacando-agent2-policy "docker-entrypoint.s…" policy 2 minutes ago Up 2 minutes (healthy) 127.0.0.1:23002->3002/tcp
5
- wacando-agent2-postgres-1 postgres:17-alpine "docker-entrypoint.s…" postgres 18 minutes ago Up 18 minutes (healthy) 127.0.0.1:25432->5432/tcp
6
- wacando-agent2-web-1 wacando-agent2-web "docker-entrypoint.s…" web 29 seconds ago Up 19 seconds (healthy) 127.0.0.1:23000->3000/tcp
@@ -1,18 +0,0 @@
1
- Container wacando-agent2-ejabberd-1 Running
2
- Container wacando-agent2-policy-1 Running
3
- Container wacando-agent2-postgres-1 Running
4
- Container wacando-agent2-api-1 Running
5
- Container wacando-agent2-web-1 Creating
6
- Container wacando-agent2-web-1 Created
7
- Container wacando-agent2-ejabberd-1 Waiting
8
- Container wacando-agent2-ejabberd-1 Healthy
9
- Container wacando-agent2-policy-1 Waiting
10
- Container wacando-agent2-postgres-1 Waiting
11
- Container wacando-agent2-ejabberd-1 Waiting
12
- Container wacando-agent2-policy-1 Healthy
13
- Container wacando-agent2-postgres-1 Healthy
14
- Container wacando-agent2-ejabberd-1 Healthy
15
- Container wacando-agent2-api-1 Waiting
16
- Container wacando-agent2-api-1 Healthy
17
- Container wacando-agent2-web-1 Starting
18
- Container wacando-agent2-web-1 Started
@@ -1,67 +0,0 @@
1
- """Reproduce the isolated, ephemeral issue-2 dev target from Wacando main.
2
-
3
- Run with the absolute Wacando checkout as the sole argument. Inherited dev
4
- secrets stay in a mode-0600 /tmp file; do not attach that file as evidence.
5
- """
6
- import json
7
- from pathlib import Path
8
- import subprocess
9
- import sys
10
-
11
- repo = Path(sys.argv[1]).resolve(strict=True)
12
- config = json.loads(subprocess.check_output([
13
- "docker", "compose", "-f", str(repo / "docker-compose.dev.yml"),
14
- "config", "--format", "json",
15
- ], cwd=repo))
16
- config["name"] = "wacando-agent2"
17
- ports = {
18
- "postgres": {5432: 25432},
19
- "ejabberd": {5222: 25222, 5280: 25280, 5347: 25347},
20
- "policy": {3002: 23002},
21
- "api": {3001: 23001},
22
- "web": {3000: 23000},
23
- }
24
- for name, service in config["services"].items():
25
- service["restart"] = "no"
26
- for port in service.get("ports", []):
27
- port["published"] = str(ports[name][port["target"]])
28
- port["host_ip"] = "127.0.0.1"
29
- if "build" in service:
30
- service["build"]["context"] = str(repo)
31
- for volume in config["volumes"].values():
32
- volume.pop("name", None)
33
- for network in config["networks"].values():
34
- network.pop("name", None)
35
- config["services"]["api"]["environment"].update(
36
- BETTER_AUTH_URL="http://localhost:23001",
37
- WEB_ORIGIN="http://localhost:23000",
38
- WACANDO_PUBLIC_XMPP_SERVICE="ws://localhost:25280/ws",
39
- )
40
- web = config["services"]["web"]
41
- web["build"]["args"].update(
42
- NEXT_PUBLIC_API_URL="",
43
- NEXT_PUBLIC_XMPP_WS_URL="ws://localhost:25280/ws",
44
- NEXT_PUBLIC_XMPP_DOMAIN="wacando.localhost",
45
- )
46
- web["environment"] = {"API_PROXY_TARGET": "http://api:3001"}
47
- target = Path("/tmp/wacando-agent2.compose.json")
48
- target.write_text(json.dumps(config, indent=2))
49
- target.chmod(0o600)
50
-
51
- # Preserve the official config injection and dev seed, but select ONLY this
52
- # project's container. The upstream ancestor-image selector could pick issue 10.
53
- seed = (repo / "infra/ejabberd/ci-up.sh").read_text()
54
- seed = seed.replace(
55
- 'REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"',
56
- f'REPO_ROOT="{repo}"',
57
- ).replace(
58
- 'docker ps --filter "ancestor=$IMAGE" --format \'{{.ID}}\' | head -n1',
59
- "docker compose -p wacando-agent2 -f /tmp/wacando-agent2.compose.json ps -q ejabberd",
60
- ).replace(
61
- "for port in 5222 5280 5347", "for port in 25222 25280 25347",
62
- ).replace(
63
- "c2s=127.0.0.1:5222 ws+api=http://127.0.0.1:5280 component=127.0.0.1:5347",
64
- "c2s=127.0.0.1:25222 ws+api=http://127.0.0.1:25280 component=127.0.0.1:25347",
65
- )
66
- Path("/tmp/wacando-agent2-ci-up.sh").write_text(seed)
67
- print("Prepared wacando-agent2: loopback-only ports, isolated network and volumes.")
@@ -1,9 +0,0 @@
1
- PASS: PR #9 body PATCH/read-back exact; OPEN+DRAFT; independent follow-up review pending.
2
- PASS: issue #2 body PATCH/read-back exact; OPEN; three proven-runtime boxes checked, review/merge unchecked; OPEN/in-progress requirement explicit.
3
- PASS: Wacando #17 body PATCH/read-back exact; OPEN; blocker line and unchecked qualification boxes unchanged.
4
- PASS: native blocked_by unchanged: repos/lbframe/wacando-agent/issues/2/dependencies/blocked_by = []
5
- PASS: native blocked_by unchanged: repos/lbframe/wacando/issues/17/dependencies/blocked_by = [3, 4, 12, 16, 40, 37]
6
- PASS: native blocked_by unchanged: repos/lbframe/wacando/issues/42/dependencies/blocked_by = [40, 37]
7
- PASS: #42 record/body untouched; #17/#42 retirement references preserved in all edited bodies.
8
- PASS: immutable abd3e52 link target exists: docs/CURSOR_IDENTITY_RESUME.md
9
- PASS: immutable abd3e52 link target exists: docs/evidence/issue-2/DOCUMENTARY_FOLLOWUP.md