Add admin Users console page #4238
ci.yml
on: pull_request
Changed paths
8s
Format
41s
Lint
33s
Typecheck
1m 8s
Test
44s
E2E (stdio MCP)
Matrix: e2e
Annotations
22 errors and 34 warnings
|
src/platform-view.test.ts > platform view — admin.getSubject > joins connections in one call, and issues none for an absent subject:
packages/core/sdk/src/platform-view.test.ts#L746
AssertionError: expected undefined to be 'user_a' // Object.is equality
- Expected:
"user_a"
+ Received:
undefined
❯ Array.<anonymous> src/platform-view.test.ts:746:36
❯ next ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:991:15
|
|
src/platform-view.test.ts > platform view — admin.getSubject > reads one subject by external_id:
packages/core/sdk/src/platform-view.test.ts#L712
AssertionError: expected undefined to be 'user_b' // Object.is equality
- Expected:
"user_b"
+ Received:
undefined
❯ Array.<anonymous> src/platform-view.test.ts:712:37
❯ next ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:991:15
|
|
src/platform-view.test.ts > platform view — admin.listSubjectsWithConnections > works for a pure-org executor with no bound subject:
packages/core/sdk/src/platform-view.test.ts#L696
AssertionError: expected [] to deeply equal [ 'user_a', 'user_b' ]
- Expected
+ Received
- [
- "user_a",
- "user_b",
- ]
+ []
❯ Array.<anonymous> src/platform-view.test.ts:696:58
❯ next ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:991:15
|
|
src/platform-view.test.ts > platform view — admin.listSubjectsWithConnections > joins each subject to its own connections:
packages/core/sdk/src/platform-view.test.ts#L651
AssertionError: expected [] to deeply equal [ 'user_a', 'user_b' ]
- Expected
+ Received
- [
- "user_a",
- "user_b",
- ]
+ []
❯ Array.<anonymous> src/platform-view.test.ts:651:58
❯ next ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:991:15
|
|
src/platform-view.test.ts > platform view — read-only across every surface > refuses to delete the tenant's org rows:
packages/core/sdk/src/platform-view.test.ts#L477
AssertionError: expected [] to have a length of 2 but got +0
- Expected
+ Received
- 2
+ 0
❯ Array.<anonymous> src/platform-view.test.ts:477:45
❯ next ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
|
|
src/platform-view.test.ts > platform view — admin.listSubjects > floors a fractional limit and offset instead of failing the query:
packages/core/sdk/src/platform-view.test.ts#L346
AssertionError: expected [] to deeply equal [ undefined ]
- Expected
+ Received
- [
- undefined,
- ]
+ []
❯ Array.<anonymous> src/platform-view.test.ts:346:59
❯ next ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:991:15
|
|
src/platform-view.test.ts > platform view — admin.listSubjects > accepts an offset with no limit:
packages/core/sdk/src/platform-view.test.ts#L327
AssertionError: expected [] to deeply equal [ undefined ]
- Expected
+ Received
- [
- undefined,
- ]
+ []
❯ Array.<anonymous> src/platform-view.test.ts:327:58
❯ next ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
❯ resume ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:991:15
|
|
src/platform-view.test.ts > platform view — admin.listSubjects > pages with a stable order:
packages/core/sdk/src/platform-view.test.ts#L307
AssertionError: expected [] to have a length of 2 but got +0
- Expected
+ Received
- 2
+ 0
❯ Array.<anonymous> src/platform-view.test.ts:307:21
❯ next ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
|
|
src/platform-view.test.ts > platform view — admin.listSubjects > returns created_at and the bigint last_seen_at through the ORM:
packages/core/sdk/src/platform-view.test.ts#L287
AssertionError: expected undefined to be an instance of Date
❯ Array.<anonymous> src/platform-view.test.ts:287:34
❯ next ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1276:25
❯ Object.~effect/Effect/evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/core.ts:531:30
❯ FiberImpl.runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:633:39
❯ runLoop ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:593:22
❯ evaluate ../../../node_modules/.bun/effect@4.0.0-beta.59/node_modules/effect/src/internal/effect.ts:1030:14
|
|
Test
@executor-js/sdk#test: command (/home/runner/_work/executor/executor/packages/core/sdk) /home/runner/.bun/bin/bun run test exited (1)
|
|
E2E (cloud 4of4)
Process completed with exit code 1.
|
|
[cloud] cloud/admin-users.test.ts > Admin · the owner sees every member of the workspace and what each has connected:
e2e/cloud/support/session.ts#L57
Error: /api/account/members/invite failed (403): {"_tag":"AccountNoOrganization"}
❯ cloud/support/session.ts:57:13
|
|
[cloud] cloud/admin-users.test.ts > Admin · the owner sees every member of the workspace and what each has connected:
e2e/cloud/support/session.ts#L57
Error: /api/account/members/invite failed (403): {"_tag":"AccountNoOrganization"}
❯ cloud/support/session.ts:57:13
|
|
[cloud] cloud/admin-users.test.ts > Admin · the owner sees every member of the workspace and what each has connected:
e2e/cloud/support/session.ts#L57
Error: /api/account/members/invite failed (403): {"_tag":"AccountNoOrganization"}
❯ cloud/support/session.ts:57:13
|
|
E2E (cloud 2of4)
Process completed with exit code 1.
|
|
[cloud] cloud/connect-link-multi-org.test.ts > Connect · an org-scoped connect link lands a multi-org recipient in the SENDING org:
e2e/cloud/support/session.ts#L57
Error: /api/account/members/invite failed (403): {"_tag":"AccountNoOrganization"}
❯ cloud/support/session.ts:57:13
|
|
[cloud] cloud/connect-link-multi-org.test.ts > Connect · an org-scoped connect link lands a multi-org recipient in the SENDING org:
e2e/cloud/support/session.ts#L57
Error: /api/account/members/invite failed (403): {"_tag":"AccountNoOrganization"}
❯ cloud/support/session.ts:57:13
|
|
[cloud] cloud/connect-link-multi-org.test.ts > Connect · an org-scoped connect link lands a multi-org recipient in the SENDING org:
e2e/cloud/support/session.ts#L57
Error: /api/account/members/invite failed (403): {"_tag":"AccountNoOrganization"}
❯ cloud/support/session.ts:57:13
|
|
E2E (cloud 1of4)
Process completed with exit code 1.
|
|
[cloud] cloud/admin-users-console.test.ts > Admin · the Users page shows every member and what each has connected, and refuses a plain member:
e2e/cloud/support/session.ts#L57
Error: /api/account/members/invite failed (403): {"_tag":"AccountNoOrganization"}
❯ cloud/support/session.ts:57:13
|
|
[cloud] cloud/admin-users-console.test.ts > Admin · the Users page shows every member and what each has connected, and refuses a plain member:
e2e/cloud/support/session.ts#L57
Error: /api/account/members/invite failed (403): {"_tag":"AccountNoOrganization"}
❯ cloud/support/session.ts:57:13
|
|
[cloud] cloud/admin-users-console.test.ts > Admin · the Users page shows every member and what each has connected, and refuses a plain member:
e2e/cloud/support/session.ts#L57
Error: /api/account/members/invite failed (403): {"_tag":"AccountNoOrganization"}
❯ cloud/support/session.ts:57:13
|
|
Changed paths
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, dorny/paths-filter@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Lint
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Format
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Test
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Typecheck
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Typecheck
The `catch` callback in `Effect.try` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.try` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.try` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.try` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Typecheck
The `catch` callback in `Effect.try` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Desktop smoke build
The `catch` callback in `Effect.tryPromise` returns `unknown`, so the Effect error type stays untyped. A specific typed error preserves error-channel information, for example by narrowing the value or wrapping it in `Data.TaggedError`. effect(unknownInEffectCatch)
|
|
Self-host Docker image
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 4of4)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 2of4)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 3of4)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (cloud 1of4)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (selfhost)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
Artifacts
Produced during runtime
| Name | Size | Digest | |
|---|---|---|---|
|
e2e-runs-cloud-1of4
Expired
|
34.4 MB |
sha256:5517ad56e75445ed2785a143343562040ddfe34a0eb0b7e3e4ebed80e3b57824
|
|
|
e2e-runs-cloud-2of4
Expired
|
42.1 MB |
sha256:90cdc2620578b62209372347114bd4ddfa0f7876e4718b5692c4c1ad8fffba37
|
|
|
e2e-runs-cloud-4of4
Expired
|
59.3 MB |
sha256:4d8a90da8fcdd5eff4ab273779793bb85a01ca9bc849c0533455af49dd17b147
|
|