zooid 0.7.1 → 0.7.2

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.
@@ -5,8 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
7
7
  <title>Zoon</title>
8
- <script type="module" crossorigin src="/assets/index-Cz5fEZBc.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-C2MAIew3.css">
8
+ <script type="module" crossorigin src="/assets/index-1pU3tgkr.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-C-ZtBp7U.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zooid",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "description": "Open-source tool for defining and running AI agents alongside you and your team. Any model, any CLI.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -37,13 +37,13 @@
37
37
  "marked": "^18.0.4",
38
38
  "sanitize-html": "^2.17.4",
39
39
  "yaml": "^2.5.0",
40
- "@zooid/acp-client": "^0.7.1",
41
- "@zooid/context-mcp": "^0.7.1",
42
- "@zooid/core": "^0.7.1",
43
- "@zooid/runtime-docker": "^0.7.1",
44
- "@zooid/runtime-local": "^0.7.1",
45
- "@zooid/transport-http": "^0.7.1",
46
- "@zooid/transport-matrix": "^0.7.1"
40
+ "@zooid/acp-client": "^0.7.2",
41
+ "@zooid/context-mcp": "^0.7.2",
42
+ "@zooid/runtime-docker": "^0.7.2",
43
+ "@zooid/core": "^0.7.2",
44
+ "@zooid/transport-http": "^0.7.2",
45
+ "@zooid/runtime-local": "^0.7.2",
46
+ "@zooid/transport-matrix": "^0.7.2"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@agentclientprotocol/sdk": "^0.21.0",
@@ -26,7 +26,7 @@ const matrixCfg: ZooidConfig = {
26
26
  matrix: {
27
27
  transport: 'mx',
28
28
  user_id: '@architect:hs',
29
- rooms: ['!r:hs'],
29
+ rooms: [{ alias: '!r:hs' }],
30
30
  trigger: 'mention',
31
31
  },
32
32
  },
@@ -28,7 +28,7 @@ function makeCfg(over: Partial<ZooidConfig> = {}): ZooidConfig {
28
28
  matrix: {
29
29
  transport: 'm1',
30
30
  user_id: '@alice:localhost',
31
- rooms: ['!r:localhost'],
31
+ rooms: [{ alias: '!r:localhost' }],
32
32
  trigger: 'mention',
33
33
  },
34
34
  container: { env: { LOG_LEVEL: 'info' } },
@@ -27,7 +27,7 @@ function mkCfg(over: Partial<ZooidConfig['agents']['alice']> = {}): ZooidConfig
27
27
  matrix: {
28
28
  transport: 'm1',
29
29
  user_id: '@alice:localhost',
30
- rooms: ['!r:localhost'],
30
+ rooms: [{ alias: '!r:localhost' }],
31
31
  trigger: 'mention',
32
32
  },
33
33
  ...over,
@@ -207,7 +207,7 @@ describe('buildAcpRegistry — image resolution (ZOD044)', () => {
207
207
  matrix: {
208
208
  transport: 'm1',
209
209
  user_id: '@bob:localhost',
210
- rooms: ['!r:localhost'],
210
+ rooms: [{ alias: '!r:localhost' }],
211
211
  trigger: 'mention',
212
212
  },
213
213
  },
@@ -18,6 +18,7 @@ import { createApp } from '@zooid/transport-http'
18
18
  import {
19
19
  MatrixClient,
20
20
  createMatrixTransport,
21
+ ensureDefaultChannel,
21
22
  ensureWorkforceSpace,
22
23
  startWorkforcePublisher,
23
24
  type AgentBinding,
@@ -174,7 +175,7 @@ export async function startDaemon(opts: StartDaemonOpts = {}): Promise<DaemonHan
174
175
  hsToken: matrix.transport.hs_token,
175
176
  adminUserId: opts.adminUserId,
176
177
  })
177
- const requestedPort = matrix.transport.port ?? 8080
178
+ const requestedPort = matrix.transport.port ?? 9000
178
179
  // Bind 0.0.0.0 explicitly — @hono/node-server defaults to IPv6-only on
179
180
  // macOS, which Docker's NAT bridge can't reach when Tuwunel pushes AS
180
181
  // events back to host.docker.internal:<port>.
@@ -189,6 +190,7 @@ export async function startDaemon(opts: StartDaemonOpts = {}): Promise<DaemonHan
189
190
  new URL(matrix.transport.homeserver).hostname
190
191
  const asUserId = `@${matrix.transport.sender_localpart}:${serverName}`
191
192
  const spaceLocalpart = matrix.transport.space ?? 'dev'
193
+ const adminUserIds = opts.adminUserId ? [opts.adminUserId] : []
192
194
  let spaceRoomId: string | undefined
193
195
  try {
194
196
  spaceRoomId = await ensureWorkforceSpace({
@@ -197,6 +199,7 @@ export async function startDaemon(opts: StartDaemonOpts = {}): Promise<DaemonHan
197
199
  serverName,
198
200
  spaceLocalpart,
199
201
  preset: 'public_chat',
202
+ admins: adminUserIds,
200
203
  })
201
204
  console.log(`[matrix] ensured workforce space #${spaceLocalpart}:${serverName} → ${spaceRoomId}`)
202
205
  } catch (err) {
@@ -209,9 +212,21 @@ export async function startDaemon(opts: StartDaemonOpts = {}): Promise<DaemonHan
209
212
  // those pushes don't hit a connection-refused. Bootstrap also runs
210
213
  // *after* the space exists so BotPool can attach each agent room as
211
214
  // m.space.child while joining it.
212
- await transport.bootstrap({ spaceRoomId, asUserId })
215
+ await transport.bootstrap({ spaceRoomId, asUserId, adminUserIds })
213
216
 
214
217
  if (spaceRoomId) {
218
+ try {
219
+ const generalRoomId = await ensureDefaultChannel({
220
+ client,
221
+ asUserId,
222
+ serverName,
223
+ spaceId: spaceRoomId,
224
+ admins: adminUserIds,
225
+ })
226
+ console.log(`[matrix] ensured default channel #general:${serverName} → ${generalRoomId}`)
227
+ } catch (err) {
228
+ console.warn('[matrix] default channel provisioning failed:', err)
229
+ }
215
230
  try {
216
231
  const publisher: PublisherHandle = await startWorkforcePublisher({
217
232
  client,