Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
8ea777a
fix(ocap-kernel): honor the run-queue length cache's invalid sentinel
FUDCo Aug 4, 2026
0ad9437
feat(ocap-kernel): anonymous kernel-hosted objects
FUDCo Aug 4, 2026
2a4173a
feat(ocap-kernel): IOListener with accept(), replacing single-client …
FUDCo Aug 4, 2026
43edc1a
feat(kernel-node-runtime): socket listener with per-connection channels
FUDCo Aug 4, 2026
e1eaefb
test(kernel-test): io-vat accepts connections; cover two concurrent p…
FUDCo Aug 4, 2026
4c338c6
feat(kernel-utils,service-discovery-types): interface variant for Jso…
FUDCo Aug 4, 2026
0b27067
docs: changelog entries for the IOListener and JsonSchema interface work
FUDCo Aug 4, 2026
1db4f5c
test(kernel-utils): cover the interface JsonSchema validator
FUDCo Aug 4, 2026
bb20f3b
Merge remote-tracking branch 'origin/main' into chip/kernel-io-listener
FUDCo Aug 5, 2026
9aaceba
fix(ocap-kernel,kernel-node-runtime): address review on IOListener li…
FUDCo Aug 5, 2026
2c72192
fix(kernel-node-runtime): report a holder-initiated close to the list…
FUDCo Aug 5, 2026
e236325
docs(ocap-kernel): the run-queue bug is not startup-only
FUDCo Aug 5, 2026
2467302
Merge remote-tracking branch 'origin/main' into chip/kernel-io-listener
FUDCo Aug 5, 2026
65474ed
fix(kernel-node-runtime): ignore socket data arriving after the chann…
FUDCo Aug 5, 2026
f9e6ef9
Merge remote-tracking branch 'origin/main' into chip/kernel-io-listener
FUDCo Aug 6, 2026
f18ca41
fix(ocap-kernel): sweep anonymous kernel objects abandoned by a previ…
FUDCo Aug 6, 2026
7747dce
fix(ocap-kernel): reject, don't throw, for an unregistered kernel ser…
FUDCo Aug 6, 2026
f7570df
chore: retrigger CI
FUDCo Aug 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/kernel-node-runtime/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- **BREAKING:** `makeIOChannelFactory` is now `makeIOListenerFactory`, and `makeSocketIOChannel` is now `makeSocketIOListener`. The Unix-socket server hands each connection to `accept()` as its own `IOChannel`, whose receive buffer, decoder, line queue, and reader queue are local to that connection, so any number of peers can be served concurrently. Connections arriving before `accept()` is called are queued rather than dropped. Gone with the single-client design: the shared `currentSocket`, the session-boundary latch, the merged line queue, and the `socket.destroy()` that rejected every second connection ([#1007](https://github.com/MetaMask/ocap-kernel/pull/1007))
- **BREAKING:** Drop `platformOptions.fetch` from `makeNodeJsVatSupervisor` ([#942](https://github.com/MetaMask/ocap-kernel/pull/942))
- `fetch` is now a vat endowment; stub `globalThis.fetch` directly if needed

Expand Down
2 changes: 1 addition & 1 deletion packages/kernel-node-runtime/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ export { NodejsPlatformServices } from './kernel/PlatformServices.ts';
export { makeKernel } from './kernel/make-kernel.ts';
export type { MakeKernelResult } from './kernel/make-kernel.ts';
export { makeNodeJsVatSupervisor } from './vat/make-supervisor.ts';
export { makeIOChannelFactory, makeSocketIOChannel } from './io/index.ts';
export { makeIOListenerFactory, makeSocketIOListener } from './io/index.ts';
18 changes: 9 additions & 9 deletions packages/kernel-node-runtime/src/io/index.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
import type { IOChannelFactory, IOConfig } from '@metamask/ocap-kernel';
import type { IOListenerFactory, IOConfig } from '@metamask/ocap-kernel';

import { makeSocketIOChannel } from './socket-channel.ts';
import { makeSocketIOListener } from './socket-listener.ts';

export { makeSocketIOChannel } from './socket-channel.ts';
export { makeSocketIOListener } from './socket-listener.ts';

/**
* Create an IOChannelFactory for the Node.js environment.
* Dispatches on `config.type` to the appropriate channel implementation.
* Create an IOListenerFactory for the Node.js environment.
* Dispatches on `config.type` to the appropriate listener implementation.
*
* @returns An IOChannelFactory.
* @returns An IOListenerFactory.
*/
export function makeIOChannelFactory(): IOChannelFactory {
export function makeIOListenerFactory(): IOListenerFactory {
return async (name: string, config: IOConfig) => {
switch (config.type) {
case 'socket':
return makeSocketIOChannel(name, config.path);
return makeSocketIOListener(name, config.path);
default:
throw new Error(
`Unsupported IO channel type "${config.type}" for channel "${name}"`,
`Unsupported IO listener type "${config.type}" for listener "${name}"`,
);
}
};
Expand Down
301 changes: 0 additions & 301 deletions packages/kernel-node-runtime/src/io/socket-channel.test.ts

This file was deleted.

Loading
Loading