@wacando/agent 0.0.0-stage → 2.0.0-rc.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.
- package/.agents/plugins/marketplace.json +10 -0
- package/.claude-plugin/marketplace.json +12 -0
- package/.cursor-plugin/marketplace.json +12 -0
- package/README.md +166 -2
- package/STATUS.md +121 -0
- package/THIRD-PARTY-NOTICES.txt +1928 -0
- package/adapters/README.md +12 -0
- package/adapters/claude/mcp.mjs +7 -0
- package/adapters/codex/mcp.mjs +7 -0
- package/adapters/cursor/mcp.mjs +7 -0
- package/bin/wacando-agent.mjs +243 -0
- package/docs/AGENT_TOOLS.md +129 -0
- package/docs/CURSOR_IDENTITY_RESUME.md +579 -0
- package/docs/MCP-AUDIT.md +355 -0
- package/docs/MCP-CONTRACT.md +138 -0
- package/docs/MIGRATION-2.0.md +36 -0
- package/docs/OMEMO_PREKEY_INTEGRATION.md +125 -0
- package/docs/ONBOARDING-VALIDATION.md +88 -0
- package/docs/ONBOARDING.md +212 -0
- package/docs/ONBOARDING_PLUGIN_CONTRACT.md +156 -0
- package/docs/PLUGIN_HANDOFF_FOLLOWUP.md +178 -0
- package/docs/PUBLIC_ONBOARDING_READINESS.md +156 -0
- package/docs/RELEASE.md +25 -0
- package/docs/WACANDO_PACKAGES.md +26 -0
- package/docs/evidence/issue-2/DOCUMENTARY_FOLLOWUP.md +107 -0
- package/docs/evidence/issue-2/QUALIFICATION_LINK_FOLLOWUP.md +105 -0
- package/docs/evidence/issue-2/REVIEW_FOLLOWUP.md +93 -0
- package/docs/evidence/issue-2/baseline.txt +76 -0
- package/docs/evidence/issue-2/check-mcp.txt +14 -0
- package/docs/evidence/issue-2/check.txt +376 -0
- package/docs/evidence/issue-2/codex-exec-help.json +11 -0
- package/docs/evidence/issue-2/codex-help.json +10 -0
- package/docs/evidence/issue-2/cursor-help.json +10 -0
- package/docs/evidence/issue-2/documentary-check.txt +376 -0
- package/docs/evidence/issue-2/documentary-validation.txt +7 -0
- package/docs/evidence/issue-2/local-build-api.txt +203 -0
- package/docs/evidence/issue-2/local-build-first.txt +87 -0
- package/docs/evidence/issue-2/local-build-policy-first.txt +34 -0
- package/docs/evidence/issue-2/local-build-policy.txt +153 -0
- package/docs/evidence/issue-2/local-build-web.txt +219 -0
- package/docs/evidence/issue-2/local-check-mcp.txt +14 -0
- package/docs/evidence/issue-2/local-check.txt +376 -0
- package/docs/evidence/issue-2/local-codex-probe.txt +3 -0
- package/docs/evidence/issue-2/local-codex-probe2.txt +3 -0
- package/docs/evidence/issue-2/local-codex.txt +2 -0
- package/docs/evidence/issue-2/local-cursor-probe.txt +1 -0
- package/docs/evidence/issue-2/local-cursor.txt +2 -0
- package/docs/evidence/issue-2/local-down.txt +32 -0
- package/docs/evidence/issue-2/local-health.txt +1 -0
- package/docs/evidence/issue-2/local-live.txt +28 -0
- package/docs/evidence/issue-2/local-seed.txt +26 -0
- package/docs/evidence/issue-2/local-status.txt +6 -0
- package/docs/evidence/issue-2/local-up.txt +18 -0
- package/docs/evidence/issue-2/prepare-local-stack.py +67 -0
- package/docs/evidence/issue-2/qualification-body-validation.txt +9 -0
- package/docs/evidence/issue-2/qualification-link-check.txt +376 -0
- package/docs/evidence/issue-2/qualification-link-validation.txt +20 -0
- package/docs/evidence/issue-2/review-check.txt +376 -0
- package/docs/evidence/issue-2/review-validation.txt +218 -0
- package/docs/evidence/issue-7/README.md +21 -0
- package/docs/evidence/issue-7/check-mcp.txt +9 -0
- package/docs/evidence/issue-7/check.txt +381 -0
- package/docs/evidence/issue-7/live.txt +23 -0
- package/docs/evidence/issue-8/README.md +56 -0
- package/docs/evidence/issue-8/check-mcp.txt +9 -0
- package/docs/evidence/issue-8/check.txt +465 -0
- package/docs/evidence/issue-8/e2e-desktop-observer-human-devices.txt +30 -0
- package/docs/evidence/issue-8/e2e-desktop-observer-main-without-109.txt +17 -0
- package/docs/evidence/issue-8/e2e-desktop-observer.txt +26 -0
- package/docs/evidence/issue-8/live-regression-human-devices.txt +24 -0
- package/docs/evidence/issue-8/live-regression.txt +23 -0
- package/docs/evidence/issue-8/review-fixes/README.md +30 -0
- package/docs/evidence/issue-8/review-fixes/check-mcp.txt +9 -0
- package/docs/evidence/issue-8/review-fixes/check.txt +484 -0
- package/docs/evidence/issue-8/review-fixes/e2e-desktop-observer.txt +28 -0
- package/docs/evidence/issue-8/review-fixes/onboarding-live.txt +15 -0
- package/docs/evidence/issue-8/review-fixes/session-replacement-live.txt +13 -0
- package/docs/evidence/npm-release/check-mcp.txt +9 -0
- package/docs/evidence/npm-release/check.txt +484 -0
- package/docs/evidence/npm-release/e2e-desktop-observer.txt +28 -0
- package/package.json +66 -4
- package/packages/core/limits.mjs +24 -0
- package/packages/core/store.mjs +92 -0
- package/packages/core/validation.mjs +25 -0
- package/packages/mcp/agent-tools.mjs +82 -0
- package/packages/mcp/server.mjs +161 -0
- package/packages/mcp/stdio.mjs +42 -0
- package/packages/onboarding/network.mjs +60 -0
- package/packages/onboarding/service.mjs +235 -0
- package/packages/onboarding/storage.mjs +99 -0
- package/packages/onboarding/version.mjs +2 -0
- package/packages/runtime/conversations.mjs +384 -0
- package/packages/runtime/device.mjs +34 -0
- package/packages/runtime/index.mjs +8 -0
- package/packages/runtime/pairing.mjs +110 -0
- package/packages/runtime/runtime.mjs +213 -0
- package/packages/runtime/session.mjs +52 -0
- package/packages/server/cli.mjs +18 -0
- package/packages/server/server.mjs +110 -0
- package/packages/server/stream.mjs +42 -0
- package/packages/web/app.js +85 -0
- package/packages/web/history.js +48 -0
- package/packages/web/index.html +17 -0
- package/packages/web/style.css +1 -0
- package/plugins/wacando/.codex-plugin/plugin.json +18 -0
- package/plugins/wacando/.mcp.json +8 -0
- package/plugins/wacando/skills/wacando/SKILL.md +33 -0
- package/plugins/wacando-claude/.claude-plugin/plugin.json +10 -0
- package/plugins/wacando-claude/.mcp.json +8 -0
- package/plugins/wacando-claude/README.md +88 -0
- package/plugins/wacando-claude/skills/open/SKILL.md +66 -0
- package/plugins/wacando-cursor/.cursor-plugin/plugin.json +11 -0
- package/plugins/wacando-cursor/README.md +48 -0
- package/plugins/wacando-cursor/commands/wacando-open.md +10 -0
- package/plugins/wacando-cursor/mcp.json +8 -0
- package/plugins/wacando-cursor/skills/wacando/SKILL.md +50 -0
- package/provenance.json +503 -0
|
@@ -0,0 +1,376 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Error: EROFS: read-only file system, open '/home/kyle/.cursor/sandbox-policies/sandbox-policy-ab97f73e2a601171'
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"ok":true}Web onboarding HTTP 200
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
|
@@ -0,0 +1,6 @@
|
|
|
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
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
|
@@ -0,0 +1,67 @@
|
|
|
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.")
|
|
@@ -0,0 +1,9 @@
|
|
|
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
|